mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-4.1
into gw.mysql.r18.ru:/usr/home/ram/work/4.1.b6551
This commit is contained in:
commit
4374aaa5d8
12 changed files with 72 additions and 66 deletions
|
@ -150,6 +150,9 @@ static struct my_option my_long_options[] =
|
|||
{"character-sets-dir", OPT_CHARSETS_DIR,
|
||||
"Directory where character sets are.", (gptr*) &charsets_dir,
|
||||
(gptr*) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"comments", 'i', "Write additional information.",
|
||||
(gptr*) &opt_comments, (gptr*) &opt_comments, 0, GET_BOOL, NO_ARG,
|
||||
1, 0, 0, 0, 0, 0},
|
||||
{"compatible", OPT_COMPATIBLE,
|
||||
"Change the dump to be compatible with a given mode. By default tables are dumped in a format optimized for MySQL. Legal modes are: ansi, mysql323, mysql40, postgresql, oracle, mssql, db2, maxdb, no_key_options, no_table_options, no_field_options. One can use several modes separated by commas. Note: Requires MySQL server version 4.1.0 or higher. This option is ignored with earlier server versions.",
|
||||
(gptr*) &opt_compatible_mode_str, (gptr*) &opt_compatible_mode_str, 0,
|
||||
|
@ -225,6 +228,9 @@ static struct my_option my_long_options[] =
|
|||
0, 0, 0, 0, 0, 0},
|
||||
{"help", '?', "Display this help message and exit.", 0, 0, 0, GET_NO_ARG,
|
||||
NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"hex-blob", OPT_HEXBLOB, "Dump binary strings (BINARY, "
|
||||
"VARBINARY, BLOB) in hexadecimal format.",
|
||||
(gptr*) &opt_hex_blob, (gptr*) &opt_hex_blob, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"host", 'h', "Connect to host.", (gptr*) ¤t_host,
|
||||
(gptr*) ¤t_host, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"lines-terminated-by", OPT_LTB, "Lines in the i.file are terminated by ...",
|
||||
|
@ -344,13 +350,7 @@ static struct my_option my_long_options[] =
|
|||
{"net_buffer_length", OPT_NET_BUFFER_LENGTH, "",
|
||||
(gptr*) &opt_net_buffer_length, (gptr*) &opt_net_buffer_length, 0,
|
||||
GET_ULONG, REQUIRED_ARG, 1024*1024L-1025, 4096, 16*1024L*1024L,
|
||||
MALLOC_OVERHEAD-1024, 1024, 0},
|
||||
{"comments", 'i', "Write additional information.",
|
||||
(gptr*) &opt_comments, (gptr*) &opt_comments, 0, GET_BOOL, NO_ARG,
|
||||
1, 0, 0, 0, 0, 0},
|
||||
{"hex-blob", OPT_HEXBLOB, "Dump BLOBs in HEX.",
|
||||
(gptr*) &opt_hex_blob, (gptr*) &opt_hex_blob, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
|
||||
MALLOC_OVERHEAD-1024, 1024, 0}
|
||||
};
|
||||
|
||||
static const char *load_default_groups[]= { "mysqldump","client",0 };
|
||||
|
|
|
@ -1069,30 +1069,6 @@ trx_purge(void)
|
|||
}
|
||||
}
|
||||
|
||||
/* Determine how much data manipulation language (DML) statements
|
||||
need to be delayed in order to reduce the lagging of the purge
|
||||
thread. */
|
||||
srv_dml_needed_delay = 0; /* in microseconds; default: no delay */
|
||||
|
||||
/* If we cannot advance the 'purge view' because of an old
|
||||
'consistent read view', then the DML statements cannot be delayed.
|
||||
Also, srv_max_purge_lag <= 0 means 'infinity'. */
|
||||
if (srv_max_purge_lag > 0
|
||||
&& !UT_LIST_GET_LAST(trx_sys->view_list)) {
|
||||
float ratio = (float) trx_sys->rseg_history_len
|
||||
/ srv_max_purge_lag;
|
||||
if (ratio > ULINT_MAX / 10000) {
|
||||
/* Avoid overflow: maximum delay is 4295 seconds */
|
||||
srv_dml_needed_delay = ULINT_MAX;
|
||||
} else if (ratio > 1) {
|
||||
/* If the history list length exceeds the
|
||||
innodb_max_purge_lag, the
|
||||
data manipulation statements are delayed
|
||||
by at least 5000 microseconds. */
|
||||
srv_dml_needed_delay = (ulint) ((ratio - .5) * 10000);
|
||||
}
|
||||
}
|
||||
|
||||
purge_sys->view = read_view_oldest_copy_or_open_new(NULL,
|
||||
purge_sys->heap);
|
||||
mutex_exit(&kernel_mutex);
|
||||
|
|
|
@ -656,6 +656,14 @@ static int chk_index(MI_CHECK *param, MI_INFO *info, MI_KEYDEF *keyinfo,
|
|||
if (chk_index_down(param,info,&info->s->ft2_keyinfo,record,
|
||||
temp_buff,&tmp_keys,key_checksum,1))
|
||||
goto err;
|
||||
if (tmp_keys + subkeys)
|
||||
{
|
||||
mi_check_print_error(param,"Number of words in the 2nd level tree "
|
||||
"does not match the number in the header. "
|
||||
"Parent word in on the page %s, offset %d",
|
||||
llstr(page,llbuff), old_keypos-buff);
|
||||
goto err;
|
||||
}
|
||||
(*keys)+=tmp_keys-1;
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -372,6 +372,7 @@ static int w_search(register MI_INFO *info, register MI_KEYDEF *keyinfo,
|
|||
/* popular word. two-level tree. going down */
|
||||
my_off_t root=info->dupp_key_pos;
|
||||
keyinfo=&info->s->ft2_keyinfo;
|
||||
get_key_full_length_rdonly(off, key);
|
||||
key+=off;
|
||||
keypos-=keyinfo->keylength+nod_flag; /* we'll modify key entry 'in vivo' */
|
||||
error=_mi_ck_real_write_btree(info, keyinfo, key, 0,
|
||||
|
|
|
@ -227,7 +227,7 @@ DO_CLIENT_GDB=""
|
|||
SLEEP_TIME_AFTER_RESTART=1
|
||||
SLEEP_TIME_FOR_DELETE=10
|
||||
SLEEP_TIME_FOR_FIRST_MASTER=400 # Enough time to create innodb tables
|
||||
SLEEP_TIME_FOR_SECOND_MASTER=30
|
||||
SLEEP_TIME_FOR_SECOND_MASTER=400
|
||||
SLEEP_TIME_FOR_FIRST_SLAVE=400
|
||||
SLEEP_TIME_FOR_SECOND_SLAVE=30
|
||||
CHARACTER_SET=latin1
|
||||
|
|
|
@ -36,7 +36,7 @@ else
|
|||
exec_mgmtsrvr=$BASEDIR/bin/ndb_mgmd
|
||||
fi
|
||||
exec_waiter=$BASEDIR/bin/ndb_waiter
|
||||
exec_waiter=$BASEDIR/bin/ndb_test_platform
|
||||
exec_test=$BASEDIR/bin/ndb_test_platform
|
||||
exec_mgmtclient=$BASEDIR/bin/ndb_mgm
|
||||
fi
|
||||
|
||||
|
|
|
@ -20,6 +20,10 @@
|
|||
#include <basestring_vsnprintf.h>
|
||||
#include <my_config.h>
|
||||
|
||||
|
||||
/*
|
||||
#define SNPRINTF_RETURN_TRUNC
|
||||
*/
|
||||
int
|
||||
basestring_snprintf(char *str, size_t size, const char *format, ...)
|
||||
{
|
||||
|
@ -47,13 +51,27 @@ static char basestring_vsnprintf_buf[16*1024];
|
|||
int
|
||||
basestring_vsnprintf(char *str, size_t size, const char *format, va_list ap)
|
||||
{
|
||||
int ret= BASESTRING_VSNPRINTF_FUNC(str, size, format, ap);
|
||||
if (size == 0)
|
||||
{
|
||||
#ifdef SNPRINTF_RETURN_TRUNC
|
||||
if (ret == size-1 || ret == -1) {
|
||||
ret= BASESTRING_VSNPRINTF_FUNC(basestring_vsnprintf_buf,
|
||||
sizeof(basestring_vsnprintf_buf),
|
||||
format, ap);
|
||||
}
|
||||
return BASESTRING_VSNPRINTF_FUNC(basestring_vsnprintf_buf,
|
||||
sizeof(basestring_vsnprintf_buf),
|
||||
format, ap);
|
||||
#else
|
||||
char buf[1];
|
||||
return BASESTRING_VSNPRINTF_FUNC(buf, 1, format, ap);
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
{
|
||||
int ret= BASESTRING_VSNPRINTF_FUNC(str, size, format, ap);
|
||||
#ifdef SNPRINTF_RETURN_TRUNC
|
||||
if (ret == size-1 || ret == -1)
|
||||
{
|
||||
ret= BASESTRING_VSNPRINTF_FUNC(basestring_vsnprintf_buf,
|
||||
sizeof(basestring_vsnprintf_buf),
|
||||
format, ap);
|
||||
}
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -200,6 +200,7 @@ extern "C" {
|
|||
int ndb_mgmclient_handle_destroy(Ndb_mgmclient_handle h)
|
||||
{
|
||||
delete (Ndb_mgmclient*)h;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
/*
|
||||
|
|
|
@ -124,7 +124,8 @@ ErrorBundle ErrorCodes[] = {
|
|||
{ 217, TR, "217" },
|
||||
{ 218, TR, "218" },
|
||||
{ 219, TR, "219" },
|
||||
{ 233, TR, "Out of operation records in transaction coordinator" },
|
||||
{ 233, TR,
|
||||
"Out of operation records in transaction coordinator (increase MaxNoOfConcurrentOperations)" },
|
||||
{ 275, TR, "275" },
|
||||
{ 279, TR, "Out of transaction markers in transaction coordinator" },
|
||||
{ 414, TR, "414" },
|
||||
|
@ -137,7 +138,7 @@ ErrorBundle ErrorCodes[] = {
|
|||
{ 830, TR, "Out of add fragment operation records" },
|
||||
{ 873, TR, "Out of attrinfo records for scan in tuple manager" },
|
||||
{ 1217, TR, "1217" },
|
||||
{ 1219, TR, "Out of operation records in local data manager" },
|
||||
{ 1219, TR, "Out of operation records in local data manager (increase MaxNoOfLocalOperations)" },
|
||||
{ 1220, TR, "1220" },
|
||||
{ 1222, TR, "Out of transaction markers in LQH" },
|
||||
{ 4021, TR, "Out of Send Buffer space in NDB API" },
|
||||
|
@ -149,9 +150,10 @@ ErrorBundle ErrorCodes[] = {
|
|||
*/
|
||||
{ 623, IS, "623" },
|
||||
{ 624, IS, "624" },
|
||||
{ 625, IS, "Out of memory in Ndb Kernel, index part" },
|
||||
{ 826, IS, "Too many tables and attributes (increase MaxNoOfAttributes)" },
|
||||
{ 827, IS, "Out of memory in Ndb Kernel, data part" },
|
||||
{ 625, IS, "Out of memory in Ndb Kernel, index part (increase IndexMemory)" },
|
||||
{ 800, IS, "Too many ordered indexes (increase MaxNoOfOrderedIndexes)" },
|
||||
{ 826, IS, "Too many tables and attributes (increase MaxNoOfAttributes or MaxNoOfTables)" },
|
||||
{ 827, IS, "Out of memory in Ndb Kernel, data part (increase DataMemory)" },
|
||||
{ 832, IS, "832" },
|
||||
|
||||
/**
|
||||
|
@ -168,10 +170,10 @@ ErrorBundle ErrorCodes[] = {
|
|||
* OverloadError
|
||||
*/
|
||||
{ 410, OL, "Out of log file space temporarily" },
|
||||
{ 677, OL, "Index UNDO buffers overloaded" },
|
||||
{ 891, OL, "Data UNDO buffers overloaded" },
|
||||
{ 1221, OL, "REDO log buffers overloaded" },
|
||||
{ 4006, OL, "Connect failure - out of connection objects" },
|
||||
{ 677, OL, "Index UNDO buffers overloaded (increase UndoIndexBuffer)" },
|
||||
{ 891, OL, "Data UNDO buffers overloaded (increase UndoDataBuffer)" },
|
||||
{ 1221, OL, "REDO log buffers overloaded (increase RedoBuffer)" },
|
||||
{ 4006, OL, "Connect failure - out of connection objects (increase MaxNoOfConcurrentTransactions)" },
|
||||
|
||||
|
||||
|
||||
|
@ -241,9 +243,9 @@ ErrorBundle ErrorCodes[] = {
|
|||
{ 884, AE, "Stack overflow in interpreter" },
|
||||
{ 885, AE, "Stack underflow in interpreter" },
|
||||
{ 886, AE, "More than 65535 instructions executed in interpreter" },
|
||||
{ 4256, AE, "Must call Ndb::init() before this function" },
|
||||
{ 4256, AE, "Must call Ndb::init() before this function" },
|
||||
{ 880, AE, "Tried to read too much - too many getValue calls" },
|
||||
{ 4257, AE, "Tried to read too much - too many getValue calls" },
|
||||
{ 4257, AE, "Tried to read too much - too many getValue calls" },
|
||||
|
||||
/**
|
||||
* Scan application errors
|
||||
|
@ -288,7 +290,7 @@ ErrorBundle ErrorCodes[] = {
|
|||
{ 283, SE, "Table is being dropped" },
|
||||
{ 284, SE, "Table not defined in transaction coordinator" },
|
||||
{ 285, SE, "Unknown table error in transaction coordinator" },
|
||||
{ 881, SE, "Unable to create table, out of data pages" },
|
||||
{ 881, SE, "Unable to create table, out of data pages (increase DataMemory) " },
|
||||
{ 1225, SE, "Table not defined in local query handler" },
|
||||
{ 1226, SE, "Table is being dropped" },
|
||||
{ 1228, SE, "Cannot use drop table for drop index" },
|
||||
|
@ -344,17 +346,11 @@ ErrorBundle ErrorCodes[] = {
|
|||
{ 4327, AE, "Distribution Group with 1 byte attribute is not allowed" },
|
||||
{ 4328, AE, "Disk memory attributes not yet supported" },
|
||||
{ 4329, AE, "Variable stored attributes not yet supported" },
|
||||
{ 4330, AE, "Table names limited to 127 bytes" },
|
||||
{ 4331, AE, "Attribute names limited to 31 bytes" },
|
||||
{ 4332, AE, "Maximum 2000 attributes in a table" },
|
||||
{ 4333, AE, "Maximum 4092 bytes long keys allowed" },
|
||||
{ 4334, AE, "Attribute properties length limited to 127 bytes" },
|
||||
|
||||
{ 4400, AE, "Status Error in NdbSchemaCon" },
|
||||
{ 4401, AE, "Only one schema operation per schema transaction" },
|
||||
{ 4402, AE, "No schema operation defined before calling execute" },
|
||||
|
||||
{ 4500, AE, "Cannot handle more than 2048 tables in NdbApi" },
|
||||
{ 4501, AE, "Insert in hash table failed when getting table information from Ndb" },
|
||||
{ 4502, AE, "GetValue not allowed in Update operation" },
|
||||
{ 4503, AE, "GetValue not allowed in Insert operation" },
|
||||
|
|
|
@ -32,19 +32,21 @@ int test_snprintf(const char * fmt, int buf_sz, int result)
|
|||
|
||||
if(ret < 0)
|
||||
{
|
||||
printf("BaseString::snprint returns %d\n", ret);
|
||||
printf("BaseString::snprint returns %d with size=%d and strlen(fmt)=%d\n",
|
||||
ret, buf_sz, strlen(fmt));
|
||||
return -1;
|
||||
}
|
||||
|
||||
if(ret+1 == buf_sz)
|
||||
{
|
||||
printf("BaseString::snprint truncates\n");
|
||||
printf("BaseString::snprint truncates returns %d with size=%d and strlen(fmt)=%d\n",
|
||||
ret, buf_sz, strlen(fmt));
|
||||
return -1;
|
||||
}
|
||||
|
||||
if(ret != result)
|
||||
{
|
||||
printf("BaseString::snprint returns incorrect value: %d != %d\n",
|
||||
printf("BaseString::snprint returns incorrect value: returned=%d != expected=%d\n",
|
||||
ret, result);
|
||||
return -1;
|
||||
}
|
||||
|
@ -54,7 +56,7 @@ int test_snprintf(const char * fmt, int buf_sz, int result)
|
|||
if(buf[ret] != fmt[ret])
|
||||
{
|
||||
printf("BaseString::snprint Incorrect value in output buffer: "
|
||||
"%d %d %d %d %d\n",
|
||||
"size=%d returned=expected=%d at pos=%d result=%d != expected=%d\n",
|
||||
buf_sz, result, ret, buf[ret], fmt[ret]);
|
||||
return -1;
|
||||
}
|
||||
|
|
|
@ -86,7 +86,7 @@ int main(int argc, char** argv){
|
|||
|
||||
if (_hostName == NULL){
|
||||
LocalConfig lcfg;
|
||||
if(!lcfg.init())
|
||||
if(!lcfg.init(opt_connect_str, 0))
|
||||
{
|
||||
lcfg.printError();
|
||||
lcfg.printUsage();
|
||||
|
|
|
@ -5628,7 +5628,7 @@ revoke_command:
|
|||
grant_privileges ON opt_table FROM user_list
|
||||
{}
|
||||
|
|
||||
ALL PRIVILEGES ',' GRANT OPTION FROM user_list
|
||||
ALL opt_privileges ',' GRANT OPTION FROM user_list
|
||||
{
|
||||
Lex->sql_command = SQLCOM_REVOKE_ALL;
|
||||
}
|
||||
|
@ -5654,10 +5654,14 @@ grant:
|
|||
|
||||
grant_privileges:
|
||||
grant_privilege_list {}
|
||||
| ALL PRIVILEGES { Lex->grant = GLOBAL_ACLS;}
|
||||
| ALL { Lex->grant = GLOBAL_ACLS;}
|
||||
| ALL opt_privileges { Lex->grant = GLOBAL_ACLS;}
|
||||
;
|
||||
|
||||
opt_privileges:
|
||||
/* empty */
|
||||
| PRIVILEGES
|
||||
;
|
||||
|
||||
grant_privilege_list:
|
||||
grant_privilege
|
||||
| grant_privilege_list ',' grant_privilege;
|
||||
|
|
Loading…
Reference in a new issue