From b3a974963dee53187668e9f467310069b4a67fcc Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 29 Oct 2001 10:49:35 +0200 Subject: [PATCH 1/2] Fixed error message when opening a not-MyISAM file. Extended MODIFY and CHANGE in ALTER TABLE to accept the AFTER keyword. Extended MyISAM to handle records > 16M. Docs/manual.texi: Updated state of different modules. Rewrote description of 'perror' and 'Packet too large'. myisam/mi_dynrec.c: Extended MyISAM to handle records > 16M myisam/mi_open.c: Fix error message when opening a not-MyISAM file. myisam/myisamdef.h: Extended MyISAM to handle records > 16M mysql-test/r/alter_table.result: Added test for CHANGE col ... AFTER mysql-test/t/alter_table.test: Added test for CHANGE col ... AFTER sql/sql_table.cc: Extended MODIFY and CHANGE in ALTER TABLE to accept the AFTER keyword. sql/sql_yacc.yy: Extended MODIFY and CHANGE in ALTER TABLE to accept the AFTER keyword. BitKeeper/etc/logging_ok: Logging to logging@openlogging.org accepted --- BitKeeper/etc/logging_ok | 1 + Docs/manual.texi | 214 +++++++++++++------------------- myisam/mi_dynrec.c | 41 ++++-- myisam/mi_open.c | 2 +- myisam/myisamdef.h | 3 +- mysql-test/r/alter_table.result | 10 +- mysql-test/t/alter_table.test | 8 +- sql/sql_table.cc | 9 +- sql/sql_yacc.yy | 5 +- 9 files changed, 143 insertions(+), 150 deletions(-) diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok index b572006d796..9ba3f55a597 100644 --- a/BitKeeper/etc/logging_ok +++ b/BitKeeper/etc/logging_ok @@ -33,3 +33,4 @@ tonu@x153.internalnet tonu@x3.internalnet Administrator@co3064164-a. Administrator@co3064164-a.rochd1.qld.optushome.com.au +monty@tramp.mysql.fi diff --git a/Docs/manual.texi b/Docs/manual.texi index 12d5683a63c..29facaaa4b2 100644 --- a/Docs/manual.texi +++ b/Docs/manual.texi @@ -880,52 +880,12 @@ version, with the exception of the bugs listed in the bugs section, which are things that are design-related. @xref{Bugs}. MySQL is written in multiple layers and different independent -modules. These modules are listed below with an indication of how +modules. Some of the new modules are listed below with an indication of how well-tested each of them is: @cindex modules, list of @table @strong -@item The ISAM table handler --- Stable -This manages storage and retrieval of all data in MySQL Version 3.22 -and earlier. In all MySQL releases there hasn't been a single -(reported) bug in this code. The only known way to get a corrupted table -is to kill the server in the middle of an update. Even that is unlikely -to destroy any data beyond rescue, because all data are flushed to disk -between each query. There hasn't been a single bug report about lost data -because of bugs in MySQL. - -@cindex ISAM table handler -@cindex storing, data -@cindex retrieving, data -@cindex data, ISAM table handler - -@item The MyISAM table handler --- Stable -This is new in MySQL Version 3.23. It's largely based on the ISAM -table code but has a lot of new and very useful features. - -@item The parser and lexical analyser --- Stable -There hasn't been a single reported bug in this system for a long time. - -@item The C client code --- Stable -No known problems. In early Version 3.20 releases, there were some limitations -in the send/receive buffer size. As of Version 3.21, the buffer size is now -dynamic up to a default of 16M. - -@item Standard client programs --- Stable -These include @code{mysql}, @code{mysqladmin}, @code{mysqlshow}, -@code{mysqldump}, and @code{mysqlimport}. - -@item Basic SQL --- Stable -The basic SQL function system and string classes and dynamic memory -handling. Not a single reported bug in this system. - -@item Query optimizer --- Stable - -@item Range optimizer --- Stable - -@item Join optimizer --- Stable - @item Locking --- Gamma This is very system-dependent. On some systems there are big problems using standard OS locking (@code{fcntl()}). In these cases, you should run the @@ -933,79 +893,33 @@ MySQL daemon with the @code{--skip-locking} flag. Problems are known to occur on some Linux systems, and on SunOS when using NFS-mounted file systems. -@item Linux threads --- Stable -The major problem found has been with the @code{fcntl()} call, which is -fixed by using the @w{@code{--skip-locking}} option to -@code{mysqld}. Some people have reported lockup problems with Version 0.5. -LinuxThreads will need to be recompiled if you plan to use -1000+ concurrent connections. Although it is possible to run that many -connections with the default LinuxThreads (however, you will never go -above 1021), the default stack spacing of 2 MB makes the application -unstable, and we have been able to reproduce a coredump after creating -1021 idle connections. @xref{Linux}. - -@item Solaris 2.5+ pthreads --- Stable -We use this for all our production work. - -@item MIT-pthreads (Other systems) --- Stable -There have been no reported bugs since Version 3.20.15 and no known bugs since -Version 3.20.16. On some systems, there is a ``misfeature'' where some -operations are quite slow (a 1/20 second sleep is done between each query). -Of course, MIT-pthreads may slow down everything a bit, but index-based -@code{SELECT} statements are usually done in one time frame so there shouldn't -be a mutex locking/thread juggling. - -@item Other thread implementions --- Beta - Gamma -The ports to other systems are still very new and may have bugs, possibly -in MySQL, but most often in the thread implementation itself. - -@item @code{LOAD DATA ...}, @code{INSERT ... SELECT} --- Stable -Some people thought they had found bugs here, but these usually have -turned out to be misunderstandings. Please check the manual before reporting -problems! - -@item @code{ALTER TABLE} --- Stable -Small changes in Version 3.22.12. - -@item DBD --- Stable -Now maintained by Jochen Wiedmann -(@email{wiedmann@@neckar-alb.de}). Thanks! - -@item @code{mysqlaccess} --- Stable -Written and maintained by Yves Carlier -(@email{Yves.Carlier@@rug.ac.be}). Thanks! - -@item @code{GRANT} --- Stable -Big changes made in MySQL Version 3.22.12. - -@item @strong{MyODBC} (uses ODBC SDK 2.5) --- Gamma +@item @strong{MyODBC 2.50} (uses ODBC SDK 2.5) --- Gamma It seems to work well with some programs. -@item Replication -- Beta / Gamma +@item Replication -- Gamma We are still working on replication, so don't expect this to be rock solid yet. On the other hand, some MySQL users are already using this with good results. -@item BDB Tables -- Beta +@item BDB Tables -- Gamma The Berkeley DB code is very stable, but we are still improving the interface between MySQL and BDB tables, so it will take some time before this is tested as well as the other table types. -@item InnoDB Tables -- Beta +@item InnoDB Tables -- Gamma This is a recent addition to @code{MySQL}. They appear to work well and can be used after some initial testing. -@item Automatic recovery of MyISAM tables - Beta +@item Automatic recovery of MyISAM tables - Gamma This only affects the new code that checks if the table was closed properly on open and executes an automatic check/repair of the table if it wasn't. -@item MERGE tables -- Beta / Gamma -The usage of keys on @code{MERGE} tables is still not well tested. The -other parts of the @code{MERGE} code are quite well tested. - @item FULLTEXT -- Beta Text search seems to work, but is still not widely used. +@item Bulk-insert - Alpha +New feature in MyISAM in MySQL 4.0 for faster insert of many rows. + @end table MySQL AB provides high-quality support for paying customers, but the @@ -9505,6 +9419,13 @@ or shell> mysqladmin -h 'your-host-name' variables @end example +If you get @code{Errcode 13}, which means @code{Permission denied}, when +starting @code{mysqld} this means that you didn't have the right to +read/create files in the MySQL database or log directory. In this case +you should either start @code{mysqld} as the root user or change the +permissions for the involved files and directories so that you have the +right to use them. + If @code{safe_mysqld} starts the server but you can't connect to it, you should make sure you have an entry in @file{/etc/hosts} that looks like this: @@ -20984,11 +20905,12 @@ names will be case-insensitive. @item @code{max_allowed_packet} The maximum size of one packet. The message buffer is initialized to -@code{net_buffer_length} bytes, but can grow up to @code{max_allowed_packet} -bytes when needed. This value by default is small, to catch big (possibly -wrong) packets. You must increase this value if you are using big -@code{BLOB} columns. It should be as big as the biggest @code{BLOB} you want -to use. The current protocol limits @code{max_allowed_packet} to 16M. +@code{net_buffer_length} bytes, but can grow up to +@code{max_allowed_packet} bytes when needed. This value by default is +small, to catch big (possibly wrong) packets. You must increase this +value if you are using big @code{BLOB} columns. It should be as big as +the biggest @code{BLOB} you want to use. The protocol limiits for +@code{max_allowed_packet} is 16M in MySQL 3.23 and 4G in MySQL 4.0. @item @code{max_binlog_cache_size} If a multi-statement transaction requires more than this amount of memory, @@ -23869,22 +23791,32 @@ argument). @cindex error messages, displaying @cindex perror -@code{perror} can be used to print error message(s). @code{perror} can -be invoked like this: +@cindex errno +@cindex Errcode + +For most system errors MySQL will, in addition to a internal text message, +also print the system error code in one of the following styles: +@code{message ... (errno: #)} or @code{message ... (Errcode: #)}. + +You can find out what the error code means by either examining the +documentation for your system or use the @code{perror} utility. + +@code{perror} prints a description for a system error code, or an MyISAM/ISAM +table handler error code. + +@code{perror} is invoked like this: @example shell> perror [OPTIONS] [ERRORCODE [ERRORCODE...]] -For example: +Example: -shell> perror 64 79 +shell> perror 13 64 +Error code 13: Permission decided Error code 64: Machine is not on the network -Error code 79: Can not access a needed shared library @end example -@code{perror} can be used to display a description for a system error -code, or an MyISAM/ISAM table handler error code. The error messages -are mostly system dependent. +Note that the error messages are mostly system dependent! @node Batch Commands, , perror, Client-Side Scripts @@ -26179,8 +26111,8 @@ Constant condition removal (needed because of constant folding): Constant expressions used by indexes are evaluated only once. @item @code{COUNT(*)} on a single table without a @code{WHERE} is retrieved -directly from the table information. This is also done for any @code{NOT NULL} -expression when used with only one table. +directly from the table information for MyISAM and HEAP tables. This is +also done for any @code{NOT NULL} expression when used with only one table. @item Early detection of invalid constant expressions. MySQL quickly detects that some @code{SELECT} statements are impossible and returns no rows. @@ -26389,7 +26321,7 @@ key value changes. In this case @code{LIMIT #} will not calculate any unnecessary @code{GROUP BY}'s. @item As soon as MySQL has sent the first @code{#} rows to the client, it -will abort the query. +will abort the query (If you are not using @code{SQL_CALC_FOUND_ROWS}). @item @code{LIMIT 0} will always quickly return an empty set. This is useful to check the query and to get the column types of the result columns. @@ -26445,7 +26377,7 @@ If you are inserting a lot of rows from different clients, you can get higher speed by using the @code{INSERT DELAYED} statement. @xref{INSERT, , @code{INSERT}}. @item -Note that with @code{MyISAM} you can insert rows at the same time +Note that with @code{MyISAM} tables you can insert rows at the same time @code{SELECT}s are running if there are no deleted rows in the tables. @item When loading a table from a text file, use @code{LOAD DATA INFILE}. This @@ -26487,8 +26419,11 @@ Execute a @code{FLUSH TABLES} statement or the shell command @code{mysqladmin flush-tables}. @end enumerate -This procedure will be built into @code{LOAD DATA INFILE} in some future -version of MySQL. +Note that @code{LOAD DATA INFILE} also does the above optimization if +you insert into an empty table; The main difference with the above +procedure is that you can let myisamchk allocate much more temporary +memory for the index creation that you may want MySQL to allocate for +every index recreation. Since @strong{MySQL 4.0} you can also use @code{ALTER TABLE tbl_name DISABLE KEYS} instead of @@ -26497,7 +26432,8 @@ Since @strong{MySQL 4.0} you can also use @code{myisamchk -r -q /path/to/db/tbl_name}. This way you can also skip @code{FLUSH TABLES} steps. @item -You can speed up insertions by locking your tables: +You can speed up insertions that is done over multiple statements by +locking your tables: @example mysql> LOCK TABLES a WRITE; @@ -26512,6 +26448,9 @@ be as many index buffer flushes as there are different @code{INSERT} statements. Locking is not needed if you can insert all rows with a single statement. +For transactional tables, you should use @code{BEGIN/COMMIT} instead of +@code{LOCK TABLES} to get a speedup. + Locking will also lower the total time of multi-connection tests, but the maximum wait time for some threads will go up (because they wait for locks). For example: @@ -26589,7 +26528,7 @@ Always check that all your queries really use the indexes you have created in the tables. In MySQL you can do this with the @code{EXPLAIN} command. @xref{EXPLAIN, Explain, Explain, manual}. @item -Try to avoid complex @code{SELECT} queries on tables that are updated a +Try to avoid complex @code{SELECT} queries on MyISAM tables that are updated a lot. This is to avoid problems with table locking. @item The new @code{MyISAM} tables can insert rows in a table without deleted @@ -35518,7 +35457,7 @@ using @code{myisampack}. @xref{Compressed format}. ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...] alter_specification: - ADD [COLUMN] create_definition [FIRST | AFTER column_name ] + ADD [COLUMN] create_definition [FIRST | AFTER column_name] or ADD [COLUMN] (create_definition, create_definition,...) or ADD INDEX [index_name] (index_col_name,...) or ADD PRIMARY KEY (index_col_name,...) @@ -35527,8 +35466,8 @@ alter_specification: or ADD [CONSTRAINT symbol] FOREIGN KEY index_name (index_col_name,...) [reference_definition] or ALTER [COLUMN] col_name @{SET DEFAULT literal | DROP DEFAULT@} - or CHANGE [COLUMN] old_col_name create_definition - or MODIFY [COLUMN] create_definition + or CHANGE [COLUMN] old_col_name create_definition [FIRST | AFTER column_name] + or MODIFY [COLUMN] create_definition [FIRST | AFTER column_name] or DROP [COLUMN] col_name or DROP PRIMARY KEY or DROP INDEX index_name @@ -45552,20 +45491,31 @@ more on the server). @node Packet too large, Communication errors, Out of memory, Common errors @appendixsubsec @code{Packet too large} Error +A communication packet is a single SQL statement sent to the MySQL server +or a single row that is sent to the client. + When a MySQL client or the @code{mysqld} server gets a packet bigger -than @code{max_allowed_packet} bytes, it issues a @code{Packet too large} -error and closes the connection. +than @code{max_allowed_packet} bytes, it issues a @code{Packet too +large} error and closes the connection. With some clients, you may also +get @code{Lost connection to MySQL server during query} error if the +communication packet is too big. -If you are using the @code{mysql} client, you may specify a bigger buffer by -starting the client with @code{mysql --set-variable=max_allowed_packet=8M}. +Note that both the client and the server has it's own +@code{max_allowed_packet} variable. If you want to handle big packets, +you have to increase this variable both in the client and in the server. -If you are using other clients that do not allow you to specify the maximum -packet size (such as @code{DBI}), you need to set the packet size when you -start the server. You cau use a command-line option to @code{mysqld} to set -@code{max_allowed_packet} to a larger size. For example, if you are -expecting to store the full length of a @code{BLOB} into a table, you'll need -to start the server with the @code{--set-variable=max_allowed_packet=16M} -option. +It's safe to increase this variable as memory is only allocated when +needed; This variable is more a precaution to catch wrong packets +between the client/server and also to ensure that you don't accidently +use big packets so that you run out of memory. + +If you are using the @code{mysql} client, you may specify a bigger +buffer by starting the client with @code{mysql --set-variable=max_allowed_packet=8M}. Other clients have different methods to set this variable. + +You can use the option file to set @code{max_allowed_packet} to a larger +size in @code{mysqld}. For example, if you are expecting to store the +full length of a @code{MEDIUMBLOB} into a table, you'll need to start +the server with the @code{set-variable=max_allowed_packet=16M} option. You can also get strange problems with large packets if you are using big blobs, but you haven't given @code{mysqld} access to enough memory @@ -45573,6 +45523,7 @@ to handle the query. If you suspect this is the case, try adding @code{ulimit -d 256000} to the beginning of the @code{safe_mysqld} script and restart @code{mysqld}. + @node Communication errors, Full table, Packet too large, Common errors @appendixsubsec Communication Errors / Aborted Connection @@ -48706,6 +48657,9 @@ Our TODO section contains what we plan to have in 4.0. @xref{TODO MySQL 4.0}. @itemize @bullet @item Added boolean fulltext search code. It should be considered early alpha. +@item +Extended @code{MODIFY} and @code{CHANGE} in @code{ALTER TABLE} to accept +the @code{AFTER} keyword. @end itemize @node News-4.0.0, , News-4.0.1, News-4.0.x diff --git a/myisam/mi_dynrec.c b/myisam/mi_dynrec.c index c07fa5aa080..4facda91626 100644 --- a/myisam/mi_dynrec.c +++ b/myisam/mi_dynrec.c @@ -190,6 +190,8 @@ static int _mi_find_writepos(MI_INFO *info, my_errno=HA_ERR_RECORD_FILE_FULL; DBUG_RETURN(-1); } + if (*length > MI_MAX_BLOCK_LENGTH) + *length=MI_MAX_BLOCK_LENGTH; info->state->data_file_length+= *length; info->s->state.split++; info->update|=HA_STATE_WRITE_AT_END; @@ -370,19 +372,30 @@ int _mi_write_part_record(MI_INFO *info, info->s->state.dellink : info->state->data_file_length; if (*flag == 0) /* First block */ { - head_length=5+8+long_block*2; - temp[0]=5+(uchar) long_block; - if (long_block) + if (*reclength > MI_MAX_BLOCK_LENGTH) { - mi_int3store(temp+1,*reclength); + head_length= 16; + temp[0]=13; + mi_int4store(temp+1,*reclength); mi_int3store(temp+4,length-head_length); - mi_sizestore((byte*) temp+7,next_filepos); + mi_sizestore((byte*) temp+8,next_filepos); } else { - mi_int2store(temp+1,*reclength); - mi_int2store(temp+3,length-head_length); - mi_sizestore((byte*) temp+5,next_filepos); + head_length=5+8+long_block*2; + temp[0]=5+(uchar) long_block; + if (long_block) + { + mi_int3store(temp+1,*reclength); + mi_int3store(temp+4,length-head_length); + mi_sizestore((byte*) temp+7,next_filepos); + } + else + { + mi_int2store(temp+1,*reclength); + mi_int2store(temp+3,length-head_length); + mi_sizestore((byte*) temp+5,next_filepos); + } } } else @@ -1433,10 +1446,10 @@ uint _mi_get_block_info(MI_BLOCK_INFO *info, File file, my_off_t filepos) } else { - if (info->header[0] > 6) + if (info->header[0] > 6 && info->header[0] != 13) return_val=BLOCK_SYNC_ERROR; } - info->next_filepos= HA_OFFSET_ERROR; /* Dummy ifall no next block */ + info->next_filepos= HA_OFFSET_ERROR; /* Dummy if no next block */ switch (info->header[0]) { case 0: @@ -1470,6 +1483,14 @@ uint _mi_get_block_info(MI_BLOCK_INFO *info, File file, my_off_t filepos) info->filepos=filepos+4; return return_val | BLOCK_FIRST | BLOCK_LAST; + case 13: + info->rec_len=mi_uint4korr(header+1); + info->block_len=info->data_len=mi_uint3korr(header+5); + info->next_filepos=mi_sizekorr(header+8); + info->second_read=1; + info->filepos=filepos+16; + return return_val | BLOCK_FIRST; + case 3: info->rec_len=info->data_len=mi_uint2korr(header+1); info->block_len=info->rec_len+ (uint) header[3]; diff --git a/myisam/mi_open.c b/myisam/mi_open.c index 675dac38d41..6da1dc926c5 100644 --- a/myisam/mi_open.c +++ b/myisam/mi_open.c @@ -115,7 +115,7 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags) DBUG_PRINT("error",("Wrong header in %s",name_buff)); DBUG_DUMP("error_dump",(char*) share->state.header.file_version, head_length); - my_errno=HA_ERR_CRASHED; + my_errno=HA_ERR_WRONG_TABLE_DEF; goto err; } share->options= mi_uint2korr(share->state.header.options); diff --git a/myisam/myisamdef.h b/myisam/myisamdef.h index 33837dfda00..ea77d700234 100644 --- a/myisam/myisamdef.h +++ b/myisam/myisamdef.h @@ -356,7 +356,8 @@ struct st_myisam_info { #define MI_DYN_MAX_BLOCK_LENGTH ((1L << 24)-4L) #define MI_DYN_MAX_ROW_LENGTH (MI_DYN_MAX_BLOCK_LENGTH - MI_SPLIT_LENGTH) #define MI_DYN_ALIGN_SIZE 4 /* Align blocks on this */ -#define MI_MAX_DYN_HEADER_BYTE 12 /* max header byte for dynamic rows */ +#define MI_MAX_DYN_HEADER_BYTE 13 /* max header byte for dynamic rows */ +#define MI_MAX_BLOCK_LENGTH (((ulong) 1 << 24)-1) #define MEMMAP_EXTRA_MARGIN 7 /* Write this as a suffix for file */ diff --git a/mysql-test/r/alter_table.result b/mysql-test/r/alter_table.result index d2975c33a47..4d6ef5ada98 100644 --- a/mysql-test/r/alter_table.result +++ b/mysql-test/r/alter_table.result @@ -6,10 +6,16 @@ col3 varchar (20) not null, col4 varchar(4) not null, col5 enum('PENDING', 'ACTIVE', 'DISABLED') not null, col6 int not null, to_be_deleted int); +insert into t1 values (2,4,3,5,"PENDING",1,7); alter table t1 add column col4_5 varchar(20) not null after col4, -add column col7 varchar(30) not null after col6, -add column col8 datetime not null, drop column to_be_deleted; +add column col7 varchar(30) not null after col5, +add column col8 datetime not null, drop column to_be_deleted, +change column col2 fourth varchar(30) not null after col3, +modify column col6 int not null first; +select * from t1; +col6 col1 col3 fourth col4 col4_5 col5 col7 col8 +1 2 3 4 5 PENDING 0000-00-00 00:00:00 drop table t1; create table t1 (bandID MEDIUMINT UNSIGNED NOT NULL PRIMARY KEY, payoutID SMALLINT UNSIGNED NOT NULL); insert into t1 (bandID,payoutID) VALUES (1,6),(2,6),(3,4),(4,9),(5,10),(6,1),(7,12),(8,12); diff --git a/mysql-test/t/alter_table.test b/mysql-test/t/alter_table.test index 681e3d36cca..22af6663e0a 100644 --- a/mysql-test/t/alter_table.test +++ b/mysql-test/t/alter_table.test @@ -10,10 +10,14 @@ col3 varchar (20) not null, col4 varchar(4) not null, col5 enum('PENDING', 'ACTIVE', 'DISABLED') not null, col6 int not null, to_be_deleted int); +insert into t1 values (2,4,3,5,"PENDING",1,7); alter table t1 add column col4_5 varchar(20) not null after col4, -add column col7 varchar(30) not null after col6, -add column col8 datetime not null, drop column to_be_deleted; +add column col7 varchar(30) not null after col5, +add column col8 datetime not null, drop column to_be_deleted, +change column col2 fourth varchar(30) not null after col3, +modify column col6 int not null first; +select * from t1; drop table t1; create table t1 (bandID MEDIUMINT UNSIGNED NOT NULL PRIMARY KEY, payoutID SMALLINT UNSIGNED NOT NULL); diff --git a/sql/sql_table.cc b/sql/sql_table.cc index d76c6bbd627..2a1be2e525c 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -1273,8 +1273,11 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name, def->field=field; if (def->sql_type == FIELD_TYPE_TIMESTAMP) use_timestamp=1; - create_list.push_back(def); - def_it.remove(); + if (!def->after) + { + create_list.push_back(def); + def_it.remove(); + } } else { // Use old field value @@ -1305,7 +1308,7 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name, List_iterator find_it(create_list); while ((def=def_it++)) // Add new columns { - if (def->change) + if (def->change && ! def->field) { my_error(ER_BAD_FIELD_ERROR,MYF(0),def->change,table_name); DBUG_RETURN(-1); diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 5096a737b8e..ff405626fad 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -1138,7 +1138,7 @@ alter_list_item: LEX *lex=Lex; lex->change= $3.str; lex->simple_alter=0; } - field_spec + field_spec opt_place | MODIFY_SYM opt_column field_ident { LEX *lex=Lex; @@ -1157,6 +1157,7 @@ alter_list_item: YYABORT; lex->simple_alter=0; } + opt_place | DROP opt_column field_ident opt_restrict { LEX *lex=Lex; @@ -2831,6 +2832,7 @@ keyword: | BACKUP_SYM {} | BEGIN_SYM {} | BERKELEY_DB_SYM {} + | BINLOG_SYM {} | BIT_SYM {} | BOOL_SYM {} | BOOLEAN_SYM {} @@ -2857,6 +2859,7 @@ keyword: | END {} | ENUM {} | ESCAPE_SYM {} + | EVENTS_SYM {} | EXTENDED_SYM {} | FAST_SYM {} | FULL {} From 8b91ed2c39add003ebc56d520c902fd092f1f741 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 3 Nov 2001 21:33:11 +0200 Subject: [PATCH 2/2] Added STDCALL to mysql_sever and mysql_thread variables Merged error messages with 3.23.44 Fixed bug with DATA DIRECTORY on windows Docs/internals.texi: Update coding policies Docs/manual.texi: Minor general corrections acinclude.m4: Fixed wrong cpu-test configure.in: Remove CPU test, because this makes unportable binaries. include/mysql.h: Added STDCALL to mysql_sever and mysql_thread variables include/mysqld_error.h: Merged error messages with 3.23.44 libmysql/libmysql.c: Added STDCALL to mysql_sever and mysql_thread variables libmysqld/lib_sql.cc: Added STDCALL to mysql_sever and mysql_thread variables sql-bench/limits/db2.cfg: New limits file sql-bench/test-select.sh: Fixed bug in cache test sql/share/czech/errmsg.txt: Merged error messages with 3.23.44 sql/share/danish/errmsg.txt: Merged error messages with 3.23.44 sql/share/dutch/errmsg.txt: Merged error messages with 3.23.44 sql/share/english/errmsg.txt: Merged error messages with 3.23.44 sql/share/estonian/errmsg.txt: Merged error messages with 3.23.44 sql/share/french/errmsg.txt: Merged error messages with 3.23.44 sql/share/german/errmsg.txt: Merged error messages with 3.23.44 sql/share/greek/errmsg.txt: Merged error messages with 3.23.44 sql/share/hungarian/errmsg.txt: Merged error messages with 3.23.44 sql/share/italian/errmsg.txt: Merged error messages with 3.23.44 sql/share/japanese/errmsg.txt: Merged error messages with 3.23.44 sql/share/korean/errmsg.txt: Merged error messages with 3.23.44 sql/share/norwegian-ny/errmsg.txt: Merged error messages with 3.23.44 sql/share/norwegian/errmsg.txt: Merged error messages with 3.23.44 sql/share/polish/errmsg.txt: Merged error messages with 3.23.44 sql/share/portuguese/errmsg.txt: Merged error messages with 3.23.44 sql/share/romanian/errmsg.txt: Merged error messages with 3.23.44 sql/share/russian/errmsg.txt: Merged error messages with 3.23.44 sql/share/slovak/errmsg.txt: Merged error messages with 3.23.44 sql/share/spanish/errmsg.txt: Merged error messages with 3.23.44 sql/share/swedish/errmsg.txt: Merged error messages with 3.23.44 sql/share/ukrainian/errmsg.txt: Merged error messages with 3.23.44 sql/sql_parse.cc: Fix bug with DATA DIRECTORY on windows. sql/sql_select.cc: Cleanup --- Docs/internals.texi | 38 ++--- Docs/manual.texi | 47 ++++-- acinclude.m4 | 4 +- configure.in | 2 +- include/mysql.h | 10 +- include/mysqld_error.h | 22 ++- libmysql/libmysql.c | 12 +- libmysqld/lib_sql.cc | 8 +- sql-bench/limits/db2.cfg | 270 ++++++++++++++++++++---------- sql-bench/test-select.sh | 2 +- sql/share/czech/errmsg.txt | 4 + sql/share/danish/errmsg.txt | 4 + sql/share/dutch/errmsg.txt | 4 + sql/share/english/errmsg.txt | 4 + sql/share/estonian/errmsg.txt | 4 + sql/share/french/errmsg.txt | 4 + sql/share/german/errmsg.txt | 4 + sql/share/greek/errmsg.txt | 4 + sql/share/hungarian/errmsg.txt | 4 + sql/share/italian/errmsg.txt | 4 + sql/share/japanese/errmsg.txt | 4 + sql/share/korean/errmsg.txt | 4 + sql/share/norwegian-ny/errmsg.txt | 4 + sql/share/norwegian/errmsg.txt | 4 + sql/share/polish/errmsg.txt | 4 + sql/share/portuguese/errmsg.txt | 4 + sql/share/romanian/errmsg.txt | 4 + sql/share/russian/errmsg.txt | 42 ++--- sql/share/slovak/errmsg.txt | 4 + sql/share/spanish/errmsg.txt | 4 + sql/share/swedish/errmsg.txt | 4 + sql/share/ukrainian/errmsg.txt | 4 + sql/sql_parse.cc | 4 + sql/sql_select.cc | 2 +- 34 files changed, 376 insertions(+), 171 deletions(-) diff --git a/Docs/internals.texi b/Docs/internals.texi index f255a7ab6a6..72724a22ec0 100644 --- a/Docs/internals.texi +++ b/Docs/internals.texi @@ -183,23 +183,27 @@ and then we read the rows in the sorted order into a row buffer We are using @uref{http://www.bitkeeper.com/, BitKeeper} for source management. @item -You should use the @strong{MySQL} 3.23 or 4.0 source for all developments. +You should use the @strong{MySQL} 4.0 source for all developments. @item If you have any questions about the @strong{MySQL} source, you can post these -to @email{developers@@mysql.com} and we will answer them. -Note that we will shortly change the name of this list to -@email{internals@@mysql.com}, to more accurately reflect what should be -posted to this list. +to @email{dev-public@@mysql.com} and we will answer them. Please +remember to not use this internal email list in public! @item -Try to write code in a lot of black boxes that can be reused or at -least have a clean interface. +Try to write code in a lot of black boxes that can be reused or use at +least a clean, easy to change interface. @item Reuse code; There is already a lot of algorithms in MySQL for list handling, queues, dynamic and hashed arrays, sorting, etc. that can be reused. +@item +Use the @code{my_*} functions like @code{my_read()}/@code{my_write()}/ +@code{my_malloc()} that you can find in the @code{mysys} library instead +of the direct system calls; This will make your code easier to debug and +more portable. + @item Try to always write optimized code, so that you don't have to go back and rewrite it a couple of months later. It's better to @@ -222,7 +226,11 @@ Do not check the same pointer for @code{NULL} more than once. @item Use long function and variable names in English; This makes your code -easier to read. Use the 'varible_name' style instead of 'VariableName'. +easier to read. + +@item +Use my_var as opposed to myVar or MyVar (@samp{_} rather than dancing SHIFT +to seperate words in identifiers). @item Think assembly - make it easier for the compiler to optimize your code. @@ -232,14 +240,8 @@ Comment your code when you do something that someone else may think is not ''trivial''. @item -Use the @code{my_*} functions like @code{my_read()}/@code{my_write()}/ -@code{my_malloc()} that you can find in the @code{mysys} library instead -of the direct system calls; This will make your code easier to debug and -more portable. - -@item -Use @code{libstring} functions instead of standard libc string functions -whenever possible. +Use @code{libstring} functions (in the strings directory) +instead of standard libc string functions whenever possible. @item Avoid using @code{malloc()} (its REAL slow); For memory allocations @@ -253,10 +255,6 @@ it. This way we can easily provide you with feedback and also easily discuss it thoroughly if some other developer thinks there is better way to do the same thing! -@item -Use my_var as opposed to myVar or MyVar (@samp{_} rather than dancing SHIFT -to seperate words in identifiers). - @item Class names start with a capital letter. diff --git a/Docs/manual.texi b/Docs/manual.texi index 29facaaa4b2..6064cbc636c 100644 --- a/Docs/manual.texi +++ b/Docs/manual.texi @@ -9592,8 +9592,8 @@ version 4.0; @item The old C API functions @code{mysql_drop_db}, @code{mysql_create_db} and @code{mysql_connect} are not supported anymore, unless one compiles -MySQL with @code{USE_OLD_FUNCTIONS}. Instead of doing this, one should -change the client to use the new 4.0 API. +MySQL with @code{CFLAGS=-DUSE_OLD_FUNCTIONS}. Instead of doing this, +one should change the client to use the new 4.0 API. @item In the @code{MYSQL_FIELD} structure, @code{length} and @code{max_length} has changed from @code{unsigned int} to @code{unsigned long}. This should not @@ -9616,6 +9616,10 @@ Format of @code{SHOW OPEN TABLE} has changed. @item Multithreaded clients should use @code{mysql_thread_init()} and @code{mysql_thread_end()}. @xref{Threaded clients}. +@item +If you want to recompile the perl DBD-MySQL module, you must get +Msql-Mysql-modules version 1.2218 or newer, because the older DBD modules +used the deprecated @code{drop_db()} call. @end itemize @node Upgrading-from-3.22, Upgrading-from-3.21, Upgrading-from-3.23, Upgrade @@ -9660,6 +9664,10 @@ option @code{--no-named-commands (-g)}. This option can be disabled with some cases, for example in SQL scripts that use named commands without a semicolon! Long format commands still work from the first line. +@item +Date functions that work on part of dates (like @code{MONTH()}) will now +return 0 for @code{0000-00-00} dates. (MySQL 3.22 returned @code{NULL}). + @item If you are using the @code{german} character sort order, you must repair all your tables with @code{isamchk -r}, as we have made some changes in @@ -10368,6 +10376,8 @@ You can avoid using @file{libg++.a} by running @code{configure} like this: shell> CXX=gcc ./configure @end example +If you are running gcc 3.0 and above, you can't use the above trick with +CXX=gcc, but you have to install libstd++. @node Linux-SPARC, Linux-Alpha, Linux-x86, Linux @subsubsection Linux SPARC Notes @@ -10950,6 +10960,10 @@ Because Windows doesn't allow you to drop files that are open, you first must flush all @code{MERGE} tables (with @code{FLUSH TABLES}) or drop the @code{MERGE} table before dropping the table. We will fix this at the same time we introduce @code{VIEW}s. +@item +@code{DATA DIRECTORY} and @code{INDEX DIRECTORY} directives in +@code{CREATE TABLE} is ignored on windows, because windows doesn't support +symbolic links. @end table Here are some open issues for anyone who might want to help us with the Windows @@ -11184,7 +11198,7 @@ When using the @code{--with-libwrap} configure option, you must also include the libraries that @file{libwrap.a} needs: @example ---with-libwrap="/opt/NUtcpwrapper-7.6/lib/libwrap.a -lnsl -lsocket +--with-libwrap="/opt/NUtcpwrapper-7.6/ -lnsl -lsocket @end example If you have problems with configure trying to link with @code{-lz} and @@ -35648,15 +35662,6 @@ If you use @code{ALTER TABLE} on a @code{MyISAM} table, all non-unique indexes are created in a separate batch (like in @code{REPAIR}). This should make @code{ALTER TABLE} much faster when you have many indexes. -@item -Since @strong{MySQL 4.0} this can be activated explicitly. -@code{ALTER TABLE ... DISABLE KEYS} makes MySQL to stop updating -non-unique indexes for @code{MyISAM} table. -@code{ALTER TABLE ... ENABLE KEYS} then should be used to recreate missing -indexes. As MySQL does it with special algorithm which is much -faster then inserting keys one by one, disabling keys could give a -considerable speedup on bulk inserts. - @item @findex mysql_info() With the C API function @code{mysql_info()}, you can find out how many @@ -39091,7 +39096,14 @@ they roll back the corresponding SQL statement. @itemize @bullet -@item @code{SHOW TABLE STATUS} does not give accurate statistics +@item +@strong{WARNING:} Do @strong{NOT} convert MySQL system tables from +MyISAM TO InnoDB tables! This is not supported; If you do this MySQL +will not restart until you restore the old system tables from a backup +or re-generate them with the mysql_install_db script. + +@item +@code{SHOW TABLE STATUS} does not give accurate statistics on InnoDB tables, except for the physical size reserved by the table. The row count is only a rough estimate used in SQL optimization. @@ -47349,7 +47361,7 @@ chapter or for the proper operation of the programs listed herein. Perl @code{Data-Dumper} module. Useful with @code{DBI}/@code{DBD} support for older Perl installations. -@item @uref{http://www.mysql.com/Downloads/Contrib/DBI-1.15.tar.gz, DBI-1.15.tar.gz} +@item @uref{http://www.mysql.com/Downloads/Contrib/DBI-1.18.tar.gz, DBI-1.18.tar.gz} Perl @code{DBI} module. @item @uref{http://www.mysql.com/Downloads/Contrib/KAMXbase1.2.tar.gz,KAMXbase1.2.tar.gz} @@ -47358,7 +47370,7 @@ module written by Pratap Pereira @email{pereira@@ee.eng.ohio-state.edu}, extended by Kevin A. McGrail @email{kmcgrail@@digital1.peregrinehw.com}. This converter can handle MEMO fields. -@item @uref{http://www.mysql.com/Downloads/Contrib/Msql-Mysql-modules-1.2216.tar.gz, Msql-Mysql-modules-1.2216.tar.gz} +@item @uref{http://www.mysql.com/Downloads/Contrib/Msql-Mysql-modules-1.2218.tar.gz, Msql-Mysql-modules-1.2218.tar.gz} Perl @code{DBD} module to access mSQL and MySQL databases. @item @uref{http://www.mysql.com/Downloads/Contrib/Data-ShowTable-3.3.tar.gz, Data-ShowTable-3.3.tar.gz} @@ -47440,9 +47452,6 @@ A C++ database independent library that supports MySQL. @cindex Delphi @item Delphi @itemize @bullet -@item @uref{http://www.mysql.com/Downloads/Contrib/delphi-interface.gz, delphi-interface.gz} -Delphi interface to @code{libmysql.dll}, by Blestan Tabakov, -@email{root@@tdg.bis.bg}. @item @uref{http://www.mysql.com/Downloads/Contrib/DelphiMySQL2.zip, DelphiMySQL2.zip} Delphi interface to @code{libmysql.dll}, by @email{bsilva@@umesd.k12.or.us}. @@ -48656,6 +48665,8 @@ Our TODO section contains what we plan to have in 4.0. @xref{TODO MySQL 4.0}. @itemize @bullet @item +Ignore @code{DATA DIRECTORY} and @code{INDEX DIRECTORY} directives on windows. +@item Added boolean fulltext search code. It should be considered early alpha. @item Extended @code{MODIFY} and @code{CHANGE} in @code{ALTER TABLE} to accept diff --git a/acinclude.m4 b/acinclude.m4 index 0b1216dbf5a..8048e25ee6d 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -652,7 +652,7 @@ if test -r /proc/cpuinfo ; then cpu_vendor=`$cpuinfo | grep 'vendor_id' | cut -d ':' -f 2 | cut -d ' ' -f 2 | head -1` fi if test "$cpu_vendor" = "AuthenticAMD"; then - if test $cpu_family>=6; then + if test $cpu_family -ge 6; then cpu_set="athlon pentiumpro k5 pentium i486 i386"; elif test $cpu_family=5; then cpu_set="k5 pentium i486 i386"; @@ -662,7 +662,7 @@ if test "$cpu_vendor" = "AuthenticAMD"; then cpu_set="i386" fi elif test "$cpu_vendor" = "GenuineIntel"; then - if test $cpu_family>=6; then + if test $cpu_family -ge 6; then cpu_set="pentiumpro pentium i486 i386"; elif test $cpu_family=5; then cpu_set="pentium i486 i386"; diff --git a/configure.in b/configure.in index 4e22e4db664..b3927ac6961 100644 --- a/configure.in +++ b/configure.in @@ -1769,7 +1769,7 @@ then fi AC_SUBST(tools_dirs) -MYSQL_CHECK_CPU +#MYSQL_CHECK_CPU MYSQL_CHECK_MYSQLFS MYSQL_CHECK_VIO MYSQL_CHECK_OPENSSL diff --git a/include/mysql.h b/include/mysql.h index 5158fef6045..34b73bd5a7c 100644 --- a/include/mysql.h +++ b/include/mysql.h @@ -253,15 +253,15 @@ typedef struct st_mysql_manager /* Set up and bring down the server; to ensure that applications will * work when linked against either the standard client library or the * embedded server library, these functions should be called. */ -int mysql_server_init(int argc, char **argv, char **groups); -void mysql_server_end(void); +int STDCALL mysql_server_init(int argc, char **argv, char **groups); +void STDCALL mysql_server_end(void); /* Set up and bring down a thread; these function should be called * for each thread in an application which opens at least one MySQL * connection. All uses of the connection(s) should be between these * function calls. */ -my_bool mysql_thread_init(void); -void mysql_thread_end(void); +my_bool STDCALL mysql_thread_init(void); +void STDCALL mysql_thread_end(void); /* Functions to get information from the MYSQL and MYSQL_RES structures */ /* Should definitely be used if one uses shared libraries */ @@ -414,8 +414,8 @@ MYSQL * STDCALL mysql_connect(MYSQL *mysql, const char *host, int STDCALL mysql_create_db(MYSQL *mysql, const char *DB); int STDCALL mysql_drop_db(MYSQL *mysql, const char *DB); #define mysql_reload(mysql) mysql_refresh((mysql),REFRESH_GRANT) -#define HAVE_MYSQL_REAL_CONNECT #endif +#define HAVE_MYSQL_REAL_CONNECT /* The following functions are mainly exported because of mysqlbinlog; diff --git a/include/mysqld_error.h b/include/mysqld_error.h index a4e7066d483..5fe8d6f5642 100644 --- a/include/mysqld_error.h +++ b/include/mysqld_error.h @@ -214,12 +214,16 @@ #define ER_NO_PERMISSION_TO_CREATE_USER 1211 #define ER_UNION_TABLES_IN_DIFFERENT_DIR 1212 #define ER_LOCK_DEADLOCK 1213 -#define ER_CONNECT_TO_MASTER 1214 -#define ER_QUERY_ON_MASTER 1215 -#define ER_ERROR_WHEN_EXECUTING_COMMAND 1216 -#define ER_WRONG_USAGE 1217 -#define ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT 1218 -#define ER_CANT_UPDATE_WITH_READLOCK 1219 -#define ER_MIXING_NOT_ALLOWED 1220 -#define ER_DUP_ARGUMENT 1221 -#define ER_ERROR_MESSAGES 222 +#define ER_TABLE_CANT_HANDLE_FULLTEXT 1214 +#define ER_CANNOT_ADD_FOREIGN 1215 +#define ER_NO_REFERENCED_ROW 1216 +#define ER_ROW_IS_REFERENCED 1217 +#define ER_CONNECT_TO_MASTER 1218 +#define ER_QUERY_ON_MASTER 1219 +#define ER_ERROR_WHEN_EXECUTING_COMMAND 1220 +#define ER_WRONG_USAGE 1221 +#define ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT 1222 +#define ER_CANT_UPDATE_WITH_READLOCK 1223 +#define ER_MIXING_NOT_ALLOWED 1224 +#define ER_DUP_ARGUMENT 1225 +#define ER_ERROR_MESSAGES 226 diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c index 2255dcb83bd..4f02ed866e4 100644 --- a/libmysql/libmysql.c +++ b/libmysql/libmysql.c @@ -91,17 +91,17 @@ static sig_handler pipe_sig_handler(int sig); static ulong mysql_sub_escape_string(CHARSET_INFO *charset_info, char *to, const char *from, ulong length); -int mysql_server_init(int argc __attribute__((unused)), - char **argv __attribute__((unused)), - char **groups __attribute__((unused))) +int STDCALL mysql_server_init(int argc __attribute__((unused)), + char **argv __attribute__((unused)), + char **groups __attribute__((unused))) { return 0; } -void mysql_server_end() +void STDCALL mysql_server_end() {} -my_bool mysql_thread_init() +my_bool STDCALL mysql_thread_init() { #ifdef THREAD return my_thread_init(); @@ -110,7 +110,7 @@ my_bool mysql_thread_init() #endif } -void mysql_thread_end() +void STDCALL mysql_thread_end() { #ifdef THREAD my_thread_end(); diff --git a/libmysqld/lib_sql.cc b/libmysqld/lib_sql.cc index 139f9b9c0c7..d241ceaada0 100644 --- a/libmysqld/lib_sql.cc +++ b/libmysqld/lib_sql.cc @@ -296,7 +296,7 @@ extern "C" static my_bool inited, org_my_init_done; -int mysql_server_init(int argc, char **argv, char **groups) +int STDCALL mysql_server_init(int argc, char **argv, char **groups) { char glob_hostname[FN_REFLEN]; @@ -561,7 +561,7 @@ int mysql_server_init(int argc, char **argv, char **groups) } -void mysql_server_end() +void STDCALL mysql_server_end() { clean_up(0); #ifdef THREAD @@ -571,7 +571,7 @@ void mysql_server_end() #endif } -my_bool mysql_thread_init() +my_bool STDCALL mysql_thread_init() { #ifdef THREAD return my_thread_init(); @@ -580,7 +580,7 @@ my_bool mysql_thread_init() #endif } -void mysql_thread_end() +void STDCALL mysql_thread_end() { #ifdef THREAD my_thread_end(); diff --git a/sql-bench/limits/db2.cfg b/sql-bench/limits/db2.cfg index 31280fbe643..5b2c0e172e7 100644 --- a/sql-bench/limits/db2.cfg +++ b/sql-bench/limits/db2.cfg @@ -1,34 +1,68 @@ -#This file is automaticly generated by crash-me 1.19a +#This file is automaticly generated by crash-me 1.57 NEG=yes # update of column= -column +Need_cast_for_null=no # Need to cast NULL for arithmetic alter_add_col=yes # Alter table add column +alter_add_constraint=yes # Alter table add constraint +alter_add_foreign_key=yes # Alter table add foreign key +alter_add_multi_col=no # Alter table add many columns +alter_add_primary_key=with constraint # Alter table add primary key +alter_add_unique=no # Alter table add unique +alter_alter_col=no # Alter table alter column default alter_change_col=no # Alter table change column alter_drop_col=no # Alter table drop column +alter_drop_constraint=yes # Alter table drop constraint +alter_drop_foreign_key=with drop constraint # Alter table drop foreign key +alter_drop_primary_key=drop primary key # Alter table drop primary key +alter_drop_unique=no # Alter table drop unique alter_modify_col=no # Alter table modify column alter_rename_table=no # Alter table rename table atomic_updates=yes # atomic updates atomic_updates_with_rollback=yes # atomic_updates_with_rollback -binary_items=no # binary items (0x41) -case_insensitive_strings=no # case insensitive compare -char_is_space_filled=no # char are space filled +automatic_rowid=no # Automatic row id +binary_numbers=no # binary numbers (0b1001) +binary_strings=no # binary strings (b'0110') +case_insensitive_strings=no # Case insensitive compare +char_is_space_filled=yes # char are space filled column_alias=yes # Column alias +columns_in_group_by=+64 # number of columns in group by +columns_in_order_by=+64 # number of columns in order by comment_#=no # # as comment -comment_--=yes # -- as comment +comment_--=yes # -- as comment (ANSI) comment_/**/=no # /* */ as comment +comment_//=no # // as comment compute=no # Compute -connections=125 # Simultaneous connections +connections=40 # Simultaneous connections (installation default) +constraint_check=yes # Column constraints +constraint_check_table=yes # Table constraints +constraint_null=no # NULL constraint (SyBase style) crash_me_safe=no # crash me safe -crash_me_version=1.19a # crash me version +crash_me_version=1.57 # crash me version create_default=yes # default value for column +create_default_func=no # default value function for column +create_if_not_exists=no # create table if not exists create_index=yes # create index +create_schema=no # Create SCHEMA +create_table_select=no # create table from select cross_join=no # cross join (same as from a,b) date_as_string=no # String functions on date columns +date_infinity=no # Supports 'infinity dates +date_last=no # Supports 9999-12-31 dates +date_one=no # Supports 0001-01-01 dates date_with_YY=no # Supports YY-MM-DD dates date_zero=no # Supports 0000-00-00 dates +domains=no # Domains (ANSI SQL) +dont_require_cast_to_float=yes # No need to cast from integer to float double_quotes=yes # Double '' as ' in strings +drop_if_exists=no # drop table if exists drop_index=yes # drop index +drop_requires_cascade=no # drop table require cascade/restrict +drop_restrict=no # drop table with cascade/restrict +end_colon=yes # allows end ';' except=yes # except except_all=yes # except all +except_all_incompat=no # except all (incompatible lists) +except_incompat=no # except (incompatible lists) float_int_expr=yes # mixing of integer and float in expression foreign_key=yes # foreign keys foreign_key_syntax=yes # foreign key syntax @@ -41,6 +75,8 @@ func_extra_<>=no # Function <> in SELECT func_extra_==no # Function = func_extra_add_months=no # Function ADD_MONTHS func_extra_and_or=no # Function AND and OR in SELECT +func_extra_ascii_char=no # Function ASCII_CHAR +func_extra_ascii_code=no # Function ASCII_CODE func_extra_atn2=no # Function ATN2 func_extra_auto_num2string=no # Function automatic num->string convert func_extra_auto_string2num=no # Function automatic string->num convert @@ -72,6 +108,7 @@ func_extra_in_num=no # Function IN on numbers in SELECT func_extra_in_str=no # Function IN on strings in SELECT func_extra_initcap=no # Function INITCAP func_extra_instr=no # Function LOCATE as INSTR +func_extra_instr_oracle=no # Function INSTR (Oracle syntax) func_extra_instrb=no # Function INSTRB func_extra_interval=no # Function INTERVAL func_extra_last_day=no # Function LAST_DAY @@ -84,16 +121,15 @@ func_extra_ln=yes # Function LN func_extra_log(m_n)=no # Function LOG(m,n) func_extra_logn=no # Function LOGN func_extra_lpad=no # Function LPAD -func_extra_max_num=no # Function MAX on numbers func_extra_mdy=no # Function MDY func_extra_mid=no # Function SUBSTRING as MID -func_extra_min_num=no # Function MIN on numbers func_extra_months_between=no # Function MONTHS_BETWEEN func_extra_not=no # Function NOT in SELECT func_extra_not_between=no # Function NOT BETWEEN in SELECT func_extra_not_like=no # Function NOT LIKE in SELECT func_extra_odbc_convert=no # Function ODBC CONVERT func_extra_password=no # Function PASSWORD +func_extra_paste=no # Function PASTE func_extra_patindex=no # Function PATINDEX func_extra_period_add=no # Function PERIOD_ADD func_extra_period_diff=no # Function PERIOD_DIFF @@ -112,6 +148,8 @@ func_extra_strcmp=no # Function STRCMP func_extra_stuff=no # Function STUFF func_extra_substrb=no # Function SUBSTRB func_extra_substring_index=no # Function SUBSTRING_INDEX +func_extra_sysdate=no # Function SYSDATE +func_extra_tail=no # Function TAIL func_extra_tanh=no # Function TANH func_extra_time_to_sec=no # Function TIME_TO_SEC func_extra_to_days=no # Function TO_DAYS @@ -126,6 +164,7 @@ func_extra_version=no # Function VERSION func_extra_weekday=no # Function WEEKDAY func_extra_|=no # Function | (bitwise or) func_extra_||=no # Function OR as '||' +func_extra_~*=no # Function ~* (case insensitive compare) func_odbc_abs=yes # Function ABS func_odbc_acos=yes # Function ACOS func_odbc_ascii=yes # Function ASCII @@ -133,31 +172,30 @@ func_odbc_asin=yes # Function ASIN func_odbc_atan=yes # Function ATAN func_odbc_atan2=error # Function ATAN2 func_odbc_ceiling=yes # Function CEILING -func_odbc_char=error # Function CHAR +func_odbc_char=yes # Function CHAR func_odbc_concat=yes # Function CONCAT(2 arg) func_odbc_cos=yes # Function COS func_odbc_cot=yes # Function COT -func_odbc_curdate=no # Function CURDATE -func_odbc_curtime=no # Function CURTIME -func_odbc_database=no # Function DATABASE -func_odbc_dayname=no # Function DAYNAME -func_odbc_dayofmonth=no # Function DAYOFMONTH -func_odbc_dayofweek=no # Function DAYOFWEEK -func_odbc_dayofyear=no # Function DAYOFYEAR +func_odbc_curdate=yes # Function CURDATE +func_odbc_curtime=yes # Function CURTIME +func_odbc_database=yes # Function DATABASE +func_odbc_dayname=yes # Function DAYNAME +func_odbc_dayofmonth=yes # Function DAYOFMONTH +func_odbc_dayofweek=yes # Function DAYOFWEEK +func_odbc_dayofyear=yes # Function DAYOFYEAR func_odbc_degrees=yes # Function DEGREES func_odbc_difference=yes # Function DIFFERENCE() func_odbc_exp=yes # Function EXP -func_odbc_extract=no # Function EXTRACT func_odbc_floor=yes # Function FLOOR func_odbc_fn_left=yes # Function ODBC syntax LEFT & RIGHT func_odbc_hour=yes # Function HOUR -func_odbc_hour_time=no # Function ANSI HOUR -func_odbc_ifnull=no # Function IFNULL +func_odbc_hour_time=yes # Function ANSI HOUR +func_odbc_ifnull=yes # Function IFNULL func_odbc_insert=yes # Function INSERT func_odbc_lcase=yes # Function LCASE func_odbc_left=yes # Function LEFT func_odbc_length=yes # Function REAL LENGTH -func_odbc_length_without_space=error # Function ODBC LENGTH +func_odbc_length_without_space=yes # Function ODBC LENGTH func_odbc_locate_2=yes # Function LOCATE(2 arg) func_odbc_locate_3=yes # Function LOCATE(3 arg) func_odbc_log=yes # Function LOG @@ -165,12 +203,12 @@ func_odbc_log10=yes # Function LOG10 func_odbc_ltrim=yes # Function LTRIM func_odbc_minute=yes # Function MINUTE func_odbc_mod=yes # Function MOD -func_odbc_month=no # Function MONTH -func_odbc_monthname=no # Function MONTHNAME -func_odbc_now=no # Function NOW -func_odbc_pi=no # Function PI +func_odbc_month=yes # Function MONTH +func_odbc_monthname=yes # Function MONTHNAME +func_odbc_now=yes # Function NOW +func_odbc_pi=yes # Function PI func_odbc_power=yes # Function POWER -func_odbc_quarter=no # Function QUARTER +func_odbc_quarter=yes # Function QUARTER func_odbc_radians=yes # Function RADIANS func_odbc_rand=yes # Function RAND func_odbc_repeat=yes # Function REPEAT @@ -184,38 +222,43 @@ func_odbc_sin=yes # Function SIN func_odbc_soundex=yes # Function SOUNDEX func_odbc_space=yes # Function SPACE func_odbc_sqrt=yes # Function SQRT -func_odbc_substring=no # Function ODBC SUBSTRING +func_odbc_substring=yes # Function ODBC SUBSTRING func_odbc_tan=yes # Function TAN func_odbc_timestampadd=no # Function TIMESTAMPADD func_odbc_timestampdiff=no # Function TIMESTAMPDIFF func_odbc_truncate=yes # Function TRUNCATE -func_odbc_ucase=no # Function UCASE -func_odbc_user=yes # Function USER -func_odbc_user()=no # Function USER() -func_odbc_week=no # Function WEEK -func_odbc_year=no # Function YEAR +func_odbc_ucase=yes # Function UCASE +func_odbc_user()=yes # Function USER() +func_odbc_week=yes # Function WEEK +func_odbc_year=yes # Function YEAR func_sql_+=yes # Function +, -, * and / func_sql_bit_length=no # Function BIT_LENGTH -func_sql_case=yes # Function CASE func_sql_cast=yes # Function CAST func_sql_char_length=no # Function CHAR_LENGTH +func_sql_char_length(constant)=no # Function CHAR_LENGTH(constant) func_sql_character_length=no # Function CHARACTER_LENGTH +func_sql_coalesce=no # Function COALESCE func_sql_concat_as_||=yes # Function concatenation with || func_sql_current_date=no # Function CURRENT_DATE -func_sql_current_date()=no # Function CURRENT_DATE() func_sql_current_time=no # Function CURRENT_TIME -func_sql_current_time()=no # Function CURRENT_TIME() func_sql_current_timestamp=no # Function CURRENT_TIMESTAMP -func_sql_current_timestamp()=no # Function CURRENT_TIMESTAMP() -func_sql_lower=no # Function LOWER +func_sql_current_user=no # Function CURRENT_USER +func_sql_extract_sql=no # Function EXTRACT +func_sql_localtime=no # Function LOCALTIME +func_sql_localtimestamp=no # Function LOCALTIMESTAMP +func_sql_lower=yes # Function LOWER +func_sql_nullif_num=yes # Function NULLIF with numbers +func_sql_nullif_string=yes # Function NULLIF with strings func_sql_octet_length=no # Function OCTET_LENGTH func_sql_position=no # Function POSITION +func_sql_searched_case=yes # Function searched CASE func_sql_session_user=no # Function SESSION_USER +func_sql_simple_case=yes # Function simple CASE func_sql_substring=no # Function ANSI SQL SUBSTRING -func_extra_sysdate=no # Function SYSDATE func_sql_system_user=no # Function SYSTEM_USER func_sql_trim=no # Function TRIM -func_sql_upper=no # Function UPPER +func_sql_upper=yes # Function UPPER +func_sql_user=yes # Function USER func_where_between=yes # Function BETWEEN func_where_eq_all=yes # Function = ALL func_where_eq_any=yes # Function = ANY @@ -235,36 +278,49 @@ func_where_unique=no # Function UNIQUE functions=yes # Functions group_by=yes # Group by group_by_alias=no # Group by alias -group_by_null=yes # Test nulls in group by +group_by_null=yes # Group on column with null values group_by_position=no # Group by position group_distinct_functions=yes # Group functions with distinct group_func_extra_bit_and=no # Group function BIT_AND group_func_extra_bit_or=no # Group function BIT_OR +group_func_extra_count_distinct_list=no # Group function COUNT(DISTINCT expr,expr,...) group_func_extra_std=no # Group function STD group_func_extra_stddev=yes # Group function STDDEV group_func_extra_variance=yes # Group function VARIANCE +group_func_sql_any=no # Group function ANY group_func_sql_avg=yes # Group function AVG group_func_sql_count_*=yes # Group function COUNT (*) group_func_sql_count_column=yes # Group function COUNT column name -group_func_sql_count_distinct=yes # Group function COUNT DISTINCT column name +group_func_sql_count_distinct=yes # Group function COUNT(DISTINCT expr) +group_func_sql_every=no # Group function EVERY group_func_sql_max=yes # Group function MAX on numbers group_func_sql_max_str=yes # Group function MAX on strings group_func_sql_min=yes # Group function MIN on numbers group_func_sql_min_str=yes # Group function MIN on strings +group_func_sql_some=no # Group function SOME group_func_sql_sum=yes # Group function SUM group_functions=yes # Group functions +group_on_unused=yes # Group on unused column +has_true_false=no # TRUE and FALSE having=yes # Having having_with_alias=no # Having on alias having_with_group=yes # Having with group function -ignore_end_space=yes # ignore end space in compare +hex_numbers=no # hex numbers (0x41) +hex_strings=yes # hex strings (x'1ace') +ignore_end_space=yes # Ignore end space in compare index_in_create=no # index in create table index_namespace=no # different namespace for index index_parts=no # index on column part (extension) +inner_join=yes # inner join insert_empty_string=yes # insert empty string +insert_multi_value=yes # INSERT with Value lists insert_select=yes # insert INTO ... SELECT ... +insert_with_set=no # INSERT with set syntax intersect=yes # intersect intersect_all=yes # intersect all -join_tables=+64 # tables in join +intersect_all_incompat=no # intersect all (incompatible lists) +intersect_incompat=no # intersect (incompatible lists) +join_tables=10 # tables in join left_outer_join=yes # left outer join left_outer_join_using=no # left outer join using like_with_column=no # column LIKE column @@ -273,150 +329,194 @@ lock_tables=yes # lock table logical_value=not supported # Value of logical operation (1=1) max_big_expressions=1 # big expressions max_char_size=254 # max char() size -max_column_name=18 # column name length +max_column_name=30 # column name length max_columns=500 # Columns in table -max_conditions=418 # OR and AND in WHERE -max_expressions=9820 # simple expressions +max_conditions=2082 # OR and AND in WHERE +max_expressions=9543 # simple expressions max_index=+64 # max index -max_index_length=255 # index length +max_index_length=1024 # index length max_index_name=18 # index name length max_index_part_length=254 # max index part length -max_index_parts=15 # index parts -max_index_varchar_part_length=251 # index varchar part length +max_index_parts=16 # index parts +max_index_varchar_part_length=255 # index varchar part length max_row_length=4005 # max table row length (without blobs) max_row_length_with_null=3989 # table row length with nulls (without blobs) -max_select_alias_name=18 # select alias name length +max_select_alias_name=30 # select alias name length max_stack_expression=1363 # stacked expressions -max_table_alias_name=18 # table alias name length -max_table_name=18 # table name length +max_table_alias_name=128 # table alias name length +max_table_name=128 # table name length max_unique_index=+64 # unique indexes max_varchar_size=4000 # max varchar() size minus=no # minus +minus_incompat=no # minus (incompatible lists) minus_neg=no # Calculate 1--1 multi_drop=no # many tables to drop table multi_strings=no # Multiple line strings multi_table_delete=no # DELETE FROM table1,table2... multi_table_update=no # Update with many tables natural_join=no # natural join +natural_join_incompat=no # natural join (incompatible lists) natural_left_outer_join=no # natural left outer join no_primary_key=yes # Tables without primary key null_concat_expr=no # Is 'a' || NULL = NULL null_in_index=yes # null in index -null_in_unique=no # null in unique +null_in_unique=no # null in unique index null_num_expr=no # Is 1+NULL = NULL +nulls_in_unique=no # null combination in unique index odbc_left_outer_join=yes # left outer join odbc style -operating_system=Windows NT Version 4.0 # crash-me tested on +operating_system=Linux 2.4.4-64GB-SMP i686 # crash-me tested on order_by=yes # Order by order_by_alias=yes # Order by alias +order_by_function=yes # Order by function order_by_position=yes # Order by position +order_by_remember_desc=no # Order by DESC is remembered +order_on_unused=yes # Order by on unused column primary_key_in_create=yes # primary key in create table -query_size=19662 # query size +psm_functions=no # PSM functions (ANSI SQL) +psm_modules=no # PSM modules (ANSI SQL) +psm_procedures=no # PSM procedures (ANSI SQL) +psm_trigger=no # Triggers (ANSI SQL) +query_size=65535 # query size +quote_ident_with_"=yes # " as identifier quote (ANSI SQL) +quote_ident_with_[=no # [] as identifier quote +quote_ident_with_`=no # ` as identifier quote quote_with_"=no # Allows ' and " as string markers -recursive_subqueries=22 # recursive subqueries +recursive_subqueries=8 # recursive subqueries remember_end_space=no # Remembers end space in char() remember_end_space_varchar=yes # Remembers end space in varchar() +rename_table=yes # rename table repeat_string_size=4000 # return string size from function right_outer_join=yes # right outer join +rowid=no # Type for row id select_constants=yes # Select constants -select_string_size=4000 # constant string size in SELECT +select_limit=no # LIMIT number of rows +select_limit2=no # SELECT with LIMIT #,# +select_string_size=32672 # constant string size in SELECT select_table_update=yes # Update with sub select select_without_from=no # SELECT without FROM -server_version=IBM DB2 5 # server version +server_version=IBM DB2 7.2 # server version simple_joins=yes # ANSI SQL simple joins +storage_of_float=truncate # Storage of float values subqueries=yes # subqueries table_alias=yes # Table alias +table_name_case=yes # case independent table names table_wildcard=yes # Select table_name.* -transactions=yes # transactions +temporary_table=no # temporary tables +transactions=yes # constant string size in where +truncate_table=no # truncate type_extra_abstime=no # Type abstime type_extra_bfile=no # Type bfile type_extra_blob=no # Type blob type_extra_bool=no # Type bool type_extra_box=no # Type box type_extra_byte=no # Type byte -type_extra_char(1_arg)_binary=no # Type char(1 arg) binary -type_extra_char16=no # Type char16 -type_extra_char2=no # Type char2 -type_extra_char4=no # Type char4 -type_extra_char8=no # Type char8 +type_extra_char(1_arg)_binary=no # Type char(1 arg) binary +type_extra_cidr=no # Type cidr type_extra_circle=no # Type circle type_extra_clob=no # Type clob type_extra_datetime=no # Type datetime -type_extra_enum(1_arg)=no # Type enum(1 arg) -type_sql_float(1_arg)=yes # Type float(1 arg) +type_extra_double=yes # Type double +type_extra_enum(1_arg)=no # Type enum(1 arg) +type_extra_float(2_arg)=no # Type float(2 arg) type_extra_float4=no # Type float4 type_extra_float8=no # Type float8 type_extra_image=no # Type image -type_extra_int(1_arg)_zerofill=no # Type int(1 arg) zerofill +type_extra_inet=no # Type inet +type_extra_int(1_arg)_zerofill=no # Type int(1 arg) zerofill type_extra_int1=no # Type int1 type_extra_int2=no # Type int2 type_extra_int3=no # Type int3 type_extra_int4=no # Type int4 type_extra_int8=no # Type int8 type_extra_int_auto_increment=no # Type int not null auto_increment +type_extra_int_identity=no # Type int not null identity +type_extra_int_unsigned=no # Type int unsigned +type_extra_interval=no # Type interval type_extra_line=no # Type line type_extra_long=no # Type long type_extra_long_raw=no # Type long raw type_extra_long_varbinary=no # Type long varbinary -type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg) +type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg) type_extra_lseg=no # Type lseg +type_extra_macaddr=no # Type macaddr type_extra_mediumint=no # Type mediumint type_extra_mediumtext=no # Type mediumtext type_extra_middleint=no # Type middleint type_extra_mlslabel=no # Type mlslabel type_extra_money=no # Type money -type_sql_nchar(1_arg)=no # Type nchar(1 arg) type_extra_nclob=no # Type nclob type_extra_number=no # Type number -type_extra_number(1_arg)=no # Type number(1 arg) -type_extra_nvarchar(2_arg)=no # Type nvarchar(2 arg) +type_extra_number(1_arg)=no # Type number(1 arg) +type_extra_number(2_arg)=no # Type number(2 arg) type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg) type_extra_path=no # Type path type_extra_point=no # Type point type_extra_polygon=no # Type polygon -type_extra_raw(1_arg)=no # Type raw(1 arg) +type_extra_raw(1_arg)=no # Type raw(1 arg) type_extra_reltime=no # Type reltime type_extra_rowid=no # Type rowid type_extra_serial=no # Type serial -type_extra_set(1_arg)=no # Type set(1 arg) +type_extra_set(1_arg)=no # Type set(1 arg) type_extra_smalldatetime=no # Type smalldatetime type_extra_smallfloat=no # Type smallfloat type_extra_smallmoney=no # Type smallmoney type_extra_text=no # Type text -type_extra_text(1_arg)=no # Type text(1 arg) +type_extra_text(1_arg)=no # Type text(1 arg) type_extra_timespan=no # Type timespan +type_extra_uint=no # Type uint type_extra_varchar2(1_arg)=no # Type varchar2(1 arg) type_extra_year=no # Type year -type_odbc_bigint=no # Type bigint -type_odbc_binary(1_arg)=no # Type binary(1 arg) +type_odbc_bigint=yes # Type bigint +type_odbc_binary(1_arg)=no # Type binary(1 arg) type_odbc_datetime=no # Type datetime -type_sql_smallint=yes # Type smallint type_odbc_tinyint=no # Type tinyint type_odbc_varbinary(1_arg)=no # Type varbinary(1 arg) type_sql_bit=no # Type bit type_sql_bit(1_arg)=no # Type bit(1 arg) type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg) -type_sql_char(1_arg)=yes # Type char(1 arg) -type_sql_char_varying(1_arg)=yes # Type char varying(1 arg) +type_sql_boolean=no # Type boolean +type_sql_char(1_arg)=yes # Type char(1 arg) +type_sql_char_varying(1_arg)=yes # Type char varying(1 arg) type_sql_character(1_arg)=yes # Type character(1 arg) type_sql_character_varying(1_arg)=yes # Type character varying(1 arg) type_sql_date=yes # Type date type_sql_dec(2_arg)=yes # Type dec(2 arg) -type_sql_decimal(2_arg)=yes # Type decimal(2 arg) -type_extra_double=yes # Type double +type_sql_decimal(2_arg)=yes # Type decimal(2 arg) type_sql_double_precision=yes # Type double precision type_sql_float=yes # Type float -type_extra_float(2_arg)=no # Type float(1 arg) +type_sql_float(1_arg)=yes # Type float(1 arg) type_sql_int=yes # Type int type_sql_integer=yes # Type integer +type_sql_interval_day=no # Type interval day +type_sql_interval_day_to_hour=no # Type interval day to hour +type_sql_interval_day_to_minute=no # Type interval day to minute +type_sql_interval_day_to_second=no # Type interval day to second +type_sql_interval_hour=no # Type interval hour +type_sql_interval_hour_to_minute=no # Type interval hour to minute +type_sql_interval_hour_to_second=no # Type interval hour to second +type_sql_interval_minute=no # Type interval minute +type_sql_interval_minute_to_second=no # Type interval minute to second +type_sql_interval_month=no # Type interval month +type_sql_interval_second=no # Type interval second type_sql_interval_year=no # Type interval year -type_sql_numeric(2_arg)=yes # Type numeric(2 arg) +type_sql_interval_year_to_month=no # Type interval year to month +type_sql_national_char_varying(1_arg)=no # Type national char varying(1 arg) +type_sql_national_character(1_arg)=no # Type national character(1 arg) +type_sql_national_character_varying(1_arg)=no # Type national character varying(1 arg) +type_sql_nchar(1_arg)=no # Type nchar(1 arg) +type_sql_nchar_varying(1_arg)=no # Type nchar varying(1 arg) +type_sql_numeric(2_arg)=yes # Type numeric(2 arg) type_sql_real=yes # Type real +type_sql_smallint=yes # Type smallint type_sql_time=yes # Type time type_sql_timestamp=yes # Type timestamp -type_sql_varchar(1_arg)=yes # Type varchar(1 arg) +type_sql_timestamp_with_time_zone=no # Type timestamp with time zone +type_sql_varchar(1_arg)=yes # Type varchar(1 arg) union=yes # union union_all=yes # union all +union_all_incompat=yes # union all (incompatible lists) +union_incompat=yes # union (incompatible lists) unique_in_create=yes # unique in create table unique_null_in_create=no # unique null in create views=yes # views -where_string_size=4000 # constant string size in where +where_string_size=32672 # constant string size in where diff --git a/sql-bench/test-select.sh b/sql-bench/test-select.sh index 1ecad5804c5..eba2a7085d8 100644 --- a/sql-bench/test-select.sh +++ b/sql-bench/test-select.sh @@ -141,7 +141,7 @@ if ($limits->{'group_functions'}) $loop_time=new Benchmark; for ($tests=0 ; $tests < $opt_loop_count ; $tests++) { - fetch_all_rows($dbh,"select sum(idn+$tests),sum(rev_idn-$tests) from bench1"); + fetch_all_rows($dbh,"select sum(idn+100),sum(rev_idn-100) from bench1"); } $end_time=new Benchmark; print "Time for select_query_cache ($opt_loop_count): " . diff --git a/sql/share/czech/errmsg.txt b/sql/share/czech/errmsg.txt index 8d9fda437a5..c78da67f3de 100644 --- a/sql/share/czech/errmsg.txt +++ b/sql/share/czech/errmsg.txt @@ -224,6 +224,10 @@ "%-.32s@%-.64s is not allowed to create new users", "Incorrect table definition; All MERGE tables must be in the same database", "Deadlock found when trying to get lock; Try restarting transaction", +"The used table type doesn't support FULLTEXT indexes", +"Cannot add foreign key constraint", +"Cannot add a child row: a foreign key constraint fails", +"Cannot delete a parent row: a foreign key constraint fails", "Error connecting to master: %-.128s", "Error running query on master: %-.128s", "Error when executing command %s: %-.128s", diff --git a/sql/share/danish/errmsg.txt b/sql/share/danish/errmsg.txt index 81d44de6a87..9a7dffb4ae2 100644 --- a/sql/share/danish/errmsg.txt +++ b/sql/share/danish/errmsg.txt @@ -218,6 +218,10 @@ "%-.32s@%-.64s is not allowed to create new users", "Incorrect table definition; All MERGE tables must be in the same database", "Deadlock found when trying to get lock; Try restarting transaction", +"The used table type doesn't support FULLTEXT indexes", +"Cannot add foreign key constraint", +"Cannot add a child row: a foreign key constraint fails", +"Cannot delete a parent row: a foreign key constraint fails", "Error connecting to master: %-.128s", "Error running query on master: %-.128s", "Error when executing command %s: %-.128s", diff --git a/sql/share/dutch/errmsg.txt b/sql/share/dutch/errmsg.txt index 68e20deb257..5a873c0ebf4 100644 --- a/sql/share/dutch/errmsg.txt +++ b/sql/share/dutch/errmsg.txt @@ -221,6 +221,10 @@ "%-.32s@%-.64s is not allowed to create new users", "Incorrect table definition; All MERGE tables must be in the same database", "Deadlock found when trying to get lock; Try restarting transaction", +"The used table type doesn't support FULLTEXT indexes", +"Cannot add foreign key constraint", +"Cannot add a child row: a foreign key constraint fails", +"Cannot delete a parent row: a foreign key constraint fails", "Error connecting to master: %-.128s", "Error running query on master: %-.128s", "Error when executing command %s: %-.128s", diff --git a/sql/share/english/errmsg.txt b/sql/share/english/errmsg.txt index 5d057c30a0e..50cc4095038 100644 --- a/sql/share/english/errmsg.txt +++ b/sql/share/english/errmsg.txt @@ -215,6 +215,10 @@ "%-.32s@%-.64s is not allowed to create new users", "Incorrect table definition; All MERGE tables must be in the same database", "Deadlock found when trying to get lock; Try restarting transaction", +"The used table type doesn't support FULLTEXT indexes", +"Cannot add foreign key constraint", +"Cannot add a child row: a foreign key constraint fails", +"Cannot delete a parent row: a foreign key constraint fails", "Error connecting to master: %-.128s", "Error running query on master: %-.128s", "Error when executing command %s: %-.128s", diff --git a/sql/share/estonian/errmsg.txt b/sql/share/estonian/errmsg.txt index 3f9d15c2e4d..b4cd2d34392 100644 --- a/sql/share/estonian/errmsg.txt +++ b/sql/share/estonian/errmsg.txt @@ -219,6 +219,10 @@ "%-.32s@%-.64s is not allowed to create new users", "Incorrect table definition; All MERGE tables must be in the same database", "Deadlock found when trying to get lock; Try restarting transaction", +"The used table type doesn't support FULLTEXT indexes", +"Cannot add foreign key constraint", +"Cannot add a child row: a foreign key constraint fails", +"Cannot delete a parent row: a foreign key constraint fails", "Error connecting to master: %-.128s", "Error running query on master: %-.128s", "Error when executing command %s: %-.128s", diff --git a/sql/share/french/errmsg.txt b/sql/share/french/errmsg.txt index 7d9c6202c5f..11f70c7a997 100644 --- a/sql/share/french/errmsg.txt +++ b/sql/share/french/errmsg.txt @@ -215,6 +215,10 @@ "%-.32s@%-.64s is not allowed to create new users", "Incorrect table definition; All MERGE tables must be in the same database", "Deadlock found when trying to get lock; Try restarting transaction", +"The used table type doesn't support FULLTEXT indexes", +"Cannot add foreign key constraint", +"Cannot add a child row: a foreign key constraint fails", +"Cannot delete a parent row: a foreign key constraint fails", "Error connecting to master: %-.128s", "Error running query on master: %-.128s", "Error when executing command %s: %-.128s", diff --git a/sql/share/german/errmsg.txt b/sql/share/german/errmsg.txt index 14bd0f8a042..f277a4f08e8 100644 --- a/sql/share/german/errmsg.txt +++ b/sql/share/german/errmsg.txt @@ -218,6 +218,10 @@ "%-.32s@%-.64s is not allowed to create new users", "Incorrect table definition; All MERGE tables must be in the same database", "Deadlock found when trying to get lock; Try restarting transaction", +"The used table type doesn't support FULLTEXT indexes", +"Cannot add foreign key constraint", +"Cannot add a child row: a foreign key constraint fails", +"Cannot delete a parent row: a foreign key constraint fails", "Error connecting to master: %-.128s", "Error running query on master: %-.128s", "Error when executing command %s: %-.128s", diff --git a/sql/share/greek/errmsg.txt b/sql/share/greek/errmsg.txt index ab1103a56b4..f36f2db98cf 100644 --- a/sql/share/greek/errmsg.txt +++ b/sql/share/greek/errmsg.txt @@ -215,6 +215,10 @@ "%-.32s@%-.64s is not allowed to create new users", "Incorrect table definition; All MERGE tables must be in the same database", "Deadlock found when trying to get lock; Try restarting transaction", +"The used table type doesn't support FULLTEXT indexes", +"Cannot add foreign key constraint", +"Cannot add a child row: a foreign key constraint fails", +"Cannot delete a parent row: a foreign key constraint fails", "Error connecting to master: %-.128s", "Error running query on master: %-.128s", "Error when executing command %s: %-.128s", diff --git a/sql/share/hungarian/errmsg.txt b/sql/share/hungarian/errmsg.txt index 33d51cb0e60..2609e33a419 100644 --- a/sql/share/hungarian/errmsg.txt +++ b/sql/share/hungarian/errmsg.txt @@ -217,6 +217,10 @@ "%-.32s@%-.64s is not allowed to create new users", "Incorrect table definition; All MERGE tables must be in the same database", "Deadlock found when trying to get lock; Try restarting transaction", +"The used table type doesn't support FULLTEXT indexes", +"Cannot add foreign key constraint", +"Cannot add a child row: a foreign key constraint fails", +"Cannot delete a parent row: a foreign key constraint fails", "Error connecting to master: %-.128s", "Error running query on master: %-.128s", "Error when executing command %s: %-.128s", diff --git a/sql/share/italian/errmsg.txt b/sql/share/italian/errmsg.txt index 127a33bbb28..df091f9549e 100644 --- a/sql/share/italian/errmsg.txt +++ b/sql/share/italian/errmsg.txt @@ -215,6 +215,10 @@ "%-.32s@%-.64s is not allowed to create new users", "Incorrect table definition; All MERGE tables must be in the same database", "Deadlock found when trying to get lock; Try restarting transaction", +"The used table type doesn't support FULLTEXT indexes", +"Cannot add foreign key constraint", +"Cannot add a child row: a foreign key constraint fails", +"Cannot delete a parent row: a foreign key constraint fails", "Error connecting to master: %-.128s", "Error running query on master: %-.128s", "Error when executing command %s: %-.128s", diff --git a/sql/share/japanese/errmsg.txt b/sql/share/japanese/errmsg.txt index e345f462f2a..f4d0e6069e4 100644 --- a/sql/share/japanese/errmsg.txt +++ b/sql/share/japanese/errmsg.txt @@ -217,6 +217,10 @@ "%-.32s@%-.64s is not allowed to create new users", "Incorrect table definition; All MERGE tables must be in the same database", "Deadlock found when trying to get lock; Try restarting transaction", +"The used table type doesn't support FULLTEXT indexes", +"Cannot add foreign key constraint", +"Cannot add a child row: a foreign key constraint fails", +"Cannot delete a parent row: a foreign key constraint fails", "Error connecting to master: %-.128s", "Error running query on master: %-.128s", "Error when executing command %s: %-.128s", diff --git a/sql/share/korean/errmsg.txt b/sql/share/korean/errmsg.txt index dd1d92adf64..d58c3db406e 100644 --- a/sql/share/korean/errmsg.txt +++ b/sql/share/korean/errmsg.txt @@ -215,6 +215,10 @@ "%-.32s@%-.64s is not allowed to create new users", "Incorrect table definition; All MERGE tables must be in the same database", "Deadlock found when trying to get lock; Try restarting transaction", +"The used table type doesn't support FULLTEXT indexes", +"Cannot add foreign key constraint", +"Cannot add a child row: a foreign key constraint fails", +"Cannot delete a parent row: a foreign key constraint fails", "Error connecting to master: %-.128s", "Error running query on master: %-.128s", "Error when executing command %s: %-.128s", diff --git a/sql/share/norwegian-ny/errmsg.txt b/sql/share/norwegian-ny/errmsg.txt index bbdf23e4056..b96e9a53e10 100644 --- a/sql/share/norwegian-ny/errmsg.txt +++ b/sql/share/norwegian-ny/errmsg.txt @@ -217,6 +217,10 @@ "%-.32s@%-.64s is not allowed to create new users", "Incorrect table definition; All MERGE tables must be in the same database", "Deadlock found when trying to get lock; Try restarting transaction", +"The used table type doesn't support FULLTEXT indexes", +"Cannot add foreign key constraint", +"Cannot add a child row: a foreign key constraint fails", +"Cannot delete a parent row: a foreign key constraint fails", "Error connecting to master: %-.128s", "Error running query on master: %-.128s", "Error when executing command %s: %-.128s", diff --git a/sql/share/norwegian/errmsg.txt b/sql/share/norwegian/errmsg.txt index 6139b1bb700..bf2afdb1c9b 100644 --- a/sql/share/norwegian/errmsg.txt +++ b/sql/share/norwegian/errmsg.txt @@ -217,6 +217,10 @@ "%-.32s@%-.64s is not allowed to create new users", "Incorrect table definition; All MERGE tables must be in the same database", "Deadlock found when trying to get lock; Try restarting transaction", +"The used table type doesn't support FULLTEXT indexes", +"Cannot add foreign key constraint", +"Cannot add a child row: a foreign key constraint fails", +"Cannot delete a parent row: a foreign key constraint fails", "Error connecting to master: %-.128s", "Error running query on master: %-.128s", "Error when executing command %s: %-.128s", diff --git a/sql/share/polish/errmsg.txt b/sql/share/polish/errmsg.txt index 39ff72acba1..69a619045e5 100644 --- a/sql/share/polish/errmsg.txt +++ b/sql/share/polish/errmsg.txt @@ -219,6 +219,10 @@ "%-.32s@%-.64s is not allowed to create new users", "Incorrect table definition; All MERGE tables must be in the same database", "Deadlock found when trying to get lock; Try restarting transaction", +"The used table type doesn't support FULLTEXT indexes", +"Cannot add foreign key constraint", +"Cannot add a child row: a foreign key constraint fails", +"Cannot delete a parent row: a foreign key constraint fails", "Error connecting to master: %-.128s", "Error running query on master: %-.128s", "Error when executing command %s: %-.128s", diff --git a/sql/share/portuguese/errmsg.txt b/sql/share/portuguese/errmsg.txt index a522e792750..964c399628f 100644 --- a/sql/share/portuguese/errmsg.txt +++ b/sql/share/portuguese/errmsg.txt @@ -215,6 +215,10 @@ "NЦo И permitido a %-.32s@%-.64s criar novos usuАrios", "Incorrect table definition; All MERGE tables must be in the same database", "Deadlock found when trying to get lock; Try restarting transaction", +"The used table type doesn't support FULLTEXT indexes", +"Cannot add foreign key constraint", +"Cannot add a child row: a foreign key constraint fails", +"Cannot delete a parent row: a foreign key constraint fails", "Error connecting to master: %-.128s", "Error running query on master: %-.128s", "Error when executing command %s: %-.128s", diff --git a/sql/share/romanian/errmsg.txt b/sql/share/romanian/errmsg.txt index 0177ff942a0..9fa6ceebaa4 100644 --- a/sql/share/romanian/errmsg.txt +++ b/sql/share/romanian/errmsg.txt @@ -219,6 +219,10 @@ "%-.32s@%-.64s is not allowed to create new users", "Incorrect table definition; All MERGE tables must be in the same database", "Deadlock found when trying to get lock; Try restarting transaction", +"The used table type doesn't support FULLTEXT indexes", +"Cannot add foreign key constraint", +"Cannot add a child row: a foreign key constraint fails", +"Cannot delete a parent row: a foreign key constraint fails", "Error connecting to master: %-.128s", "Error running query on master: %-.128s", "Error when executing command %s: %-.128s", diff --git a/sql/share/russian/errmsg.txt b/sql/share/russian/errmsg.txt index c6b5c324cad..cde0afca01f 100644 --- a/sql/share/russian/errmsg.txt +++ b/sql/share/russian/errmsg.txt @@ -207,22 +207,26 @@ "Этот сервер не slave, исправьте в конфигурационном файле или коммандой CHANGE MASTER TO", "Не получилось инициализировать структуру master info, проверте persmissions на файле master.info", "Не могу создать процесс SLAVE, проверьте системные ресурсы", -"User %-.64s has already more than 'max_user_connections' active connections", -"You may only use constant expressions with SET", -"Lock wait timeout exceeded", -"The total number of locks exceeds the lock table size", -"Update locks cannot be acquired during a READ UNCOMMITTED transaction", -"DROP DATABASE not allowed while thread is holding global read lock", -"CREATE DATABASE not allowed while thread is holding global read lock", -"Wrong arguments to %s", -"%-.32s@%-.64s is not allowed to create new users", -"Incorrect table definition; All MERGE tables must be in the same database", -"Deadlock found when trying to get lock; Try restarting transaction", -"Error connecting to master: %-.128s", -"Error running query on master: %-.128s", -"Error when executing command %s: %-.128s", -"Wrong usage of %s and %s", -"The used SELECT statements have a different number of columns", -"Can't execute the query because you have a conflicting read lock", -"Mixing of transactional and non-transactional tables is disabled", -"Option '%s' used twice in statement", +"У пользователя %-.64s уже больше чем 'max_user_connections' активных соединений", +"Можно использовать только выражение-константу совместно с SET", +"Таймаут ожидания блокировки", +"Общее количество блокировок превысило размер таблицы блокировок", +"Блокировка изменения не может быть получена во время READ UNCOMMITTED транзакции", +"DROP DATABASE запрещен во время глобальной блокировки чтения", +"CREATE DATABASE запрещен во время глобальной блокировки чтения", +"Неправильные аргуметны у %s", +"%-.32s@%-.64s не имеет привилегий создавать новых пользователей", +"Неверное определение таблицы; Все MERGE-таблицы должны быть в одной базе данных", +"Обнаружен deadlock во время получения блокировки; Попробуйте перезапустить транзакцию", +"Таблица данного типа не может иметь FULLTEXT индекса", +"Cannot add foreign key constraint", +"Cannot add a child row: a foreign key constraint fails", +"Cannot delete a parent row: a foreign key constraint fails", +"Ошибка соединения с master: %-.128s", +"Ошибка выволнения запроса на master: %-.128s", +"Ошибка выполнения команды %s: %-.128s", +"Неправильное использование %s и %s", +"Используемые SELECT-выражения имеют разные количества столбцов", +"Невозможно выполнить запрос из-за конфликтной блокировки чтения", +"Одновременное использование transactional и non-transactional таблиц отключено", +"Опция '%s' использована дважды", diff --git a/sql/share/slovak/errmsg.txt b/sql/share/slovak/errmsg.txt index 26ca2881212..6814a34ef2f 100644 --- a/sql/share/slovak/errmsg.txt +++ b/sql/share/slovak/errmsg.txt @@ -223,6 +223,10 @@ "%-.32s@%-.64s is not allowed to create new users", "Incorrect table definition; All MERGE tables must be in the same database", "Deadlock found when trying to get lock; Try restarting transaction", +"The used table type doesn't support FULLTEXT indexes", +"Cannot add foreign key constraint", +"Cannot add a child row: a foreign key constraint fails", +"Cannot delete a parent row: a foreign key constraint fails", "Error connecting to master: %-.128s", "Error running query on master: %-.128s", "Error when executing command %s: %-.128s", diff --git a/sql/share/spanish/errmsg.txt b/sql/share/spanish/errmsg.txt index 8bbf04c9a3d..0f2b963b902 100644 --- a/sql/share/spanish/errmsg.txt +++ b/sql/share/spanish/errmsg.txt @@ -216,6 +216,10 @@ "%-.32s@%-.64s is not allowed to create new users", "Incorrect table definition; All MERGE tables must be in the same database", "Deadlock found when trying to get lock; Try restarting transaction", +"The used table type doesn't support FULLTEXT indexes", +"Cannot add foreign key constraint", +"Cannot add a child row: a foreign key constraint fails", +"Cannot delete a parent row: a foreign key constraint fails", "Error de coneccion a master: %-128s", "Error executando el query en master: %-128%", "Error de %s: %-128%", diff --git a/sql/share/swedish/errmsg.txt b/sql/share/swedish/errmsg.txt index b4303de8619..53ab39f1544 100644 --- a/sql/share/swedish/errmsg.txt +++ b/sql/share/swedish/errmsg.txt @@ -215,6 +215,10 @@ "%-.32s@%-.64s har inte rДttighet att skapa nya anvДndare", "Felaktig tabell definition: Alla tabeller i en MERGE tabell mЕste vara i samma databas", "Fick 'DEADLOCK' vid lЕsfЖrsЖk av block/rad; FЖrsЖk att starta om transaktionen", +"Tabelltypen har inte hantering av FULLTEXT index", +"Kan inte lДgga till 'FOREIGN KEY constraint'", +"FOREIGN KEY konflikt: Kan inte skriva barn", +"FOREIGN KEY konflikt: Kan inte radera fader", "Fick fel vid anslutning till master: %-.128s", "Fick fel vid utfЖrande av command pЕ mastern: %-.128s", "Fick fel vid utfЖrande av %s: %-.128s", diff --git a/sql/share/ukrainian/errmsg.txt b/sql/share/ukrainian/errmsg.txt index 80c2bcc06fb..5675ba09cff 100644 --- a/sql/share/ukrainian/errmsg.txt +++ b/sql/share/ukrainian/errmsg.txt @@ -220,6 +220,10 @@ "Користувачу %-.32s@%-.64s не дозволено створювати нових користувач╕в", "Incorrect table definition; All MERGE tables must be in the same database", "Deadlock found when trying to get lock; Try restarting transaction", +"The used table type doesn't support FULLTEXT indexes", +"Cannot add foreign key constraint", +"Cannot add a child row: a foreign key constraint fails", +"Cannot delete a parent row: a foreign key constraint fails", "Error connecting to master: %-.128s", "Error running query on master: %-.128s", "Error when executing command %s: %-.128s", diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index e10214bc895..500af70a18d 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -1294,6 +1294,9 @@ mysql_execute_command(void) res=0; break; } +#ifndef HAVE_READLINK + lex->create_info.data_file_name=lex->create_info.index_file_name=0; +#else /* Fix names if symlinked tables */ if (append_file_to_dir(&lex->create_info.data_file_name, tables->name) || append_file_to_dir(&lex->create_info.index_file_name, tables->name)) @@ -1301,6 +1304,7 @@ mysql_execute_command(void) res=-1; break; } +#endif if (select_lex->item_list.elements) // With select { select_result *result; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 251ccae0299..f2c25e89bd8 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -3213,7 +3213,7 @@ remove_eq_conds(COND *cond,Item::cond_result *cond_value) } } *cond_value=Item::COND_OK; - return cond; /* Point at next and level */ + return cond; // Point at next and level } /*