diff options
-rw-r--r-- | Docs/manual.texi | 43 | ||||
-rw-r--r-- | myisam/myisamchk.c | 2 | ||||
-rw-r--r-- | mysql-test/r/merge.result | 6 | ||||
-rw-r--r-- | scripts/safe_mysqld.sh | 4 | ||||
-rw-r--r-- | sql/ha_myisammrg.cc | 17 | ||||
-rw-r--r-- | sql/ha_myisammrg.h | 1 | ||||
-rw-r--r-- | sql/sql_update.cc | 1 |
7 files changed, 67 insertions, 7 deletions
diff --git a/Docs/manual.texi b/Docs/manual.texi index 94b87588dae..c8d959ea729 100644 --- a/Docs/manual.texi +++ b/Docs/manual.texi @@ -22747,6 +22747,10 @@ that can be used as one. You can only @code{SELECT}, @code{DELETE}, and @code{MERGE} table, you are only dropping the @code{MERGE} specification. +Note that @code{DELETE FROM merge_table} used without a @code{WHERE} +will only clear the mapping for the table, not delete everything in the +mapped tables. (We plan to fix this in 4.0). + With identical tables we mean that all tables are created with identical column information. You can't put a MERGE over tables where the columns are packed differently or doesn't have exactly the same columns. @@ -35114,6 +35118,17 @@ to the log file (by default named 'hostname.log'). This log can be very useful when you suspect an error in a client and want to know exactly what @code{mysqld} thought the client send to it. +By default, the @code{mysql.server} script starts the @strong{MySQL} +server with the @code{-l} option. If you need better performance when +you start using @strong{MySQL} in a production environment, you can +remove the @code{-l} option from @code{mysql.server} or change it to +@code{--log-binary}. + +The entries in this log are written as @code{mysqld} receives the questions. +This may be different than the order in which the statements is executed. +This is in contrast to the update log and the binary log which is written +after the query is executed, but before any locks are released. + @cindex update log @cindex files, update log @node Update log, Binary log, Query log, Log files @@ -35149,17 +35164,15 @@ cp hostname-old.log to-backup-directory rm hostname-old.log @end example -By default, the @code{mysql.server} script starts the @strong{MySQL} -server with the @code{-l} option. If you need better performance when -you start using @strong{MySQL} in a production environment, you can -remove the @code{-l} option from @code{mysql.server} or change it to -@code{--log-update}. - Update logging is smart because it logs only statements that really update data. So an @code{UPDATE} or a @code{DELETE} with a @code{WHERE} that finds no rows is not written to the log. It even skips @code{UPDATE} statements that set a column to the value it already has. +The update logging is done immediately after a query completes but before +any locks are released or any commit is done. This ensures that the log +will be logged in the execution order. + If you want to update a database from update log files, you could do the following (assuming your update logs have names of the form @file{file_name.###}): @@ -35229,6 +35242,10 @@ this program! If you are using @code{BEGIN} or @code{SET AUTO_COMMIT=0}, you must use the @strong{MySQL} binary log for backups instead of the old update log. +The binary logging is done immediately after a query completes but before +any locks are released or any commit is done. This ensures that the log +will be logged in the execution order. + All updates (@code{UPDATE}, @code{DELETE} or @code{INSERT}) that changes a transactional table (like BDB tables) is cached until a @code{COMMIT}. Any updates to a not transactional table is stored in the binary log at @@ -35250,6 +35267,10 @@ When started with the @code{--log-slow-queries[=file_name]} option, more than @code{long_query_time} to execute. The time to get the initial table locks are not counted as execution time. +The slow query log is logged after the query is executed and after all +locks has been released. This may be different than the order in which +the statements is executed. + If no file name is given, it defaults to the name of the host machine suffixed with @code{-slow.log}. If a filename is given, but doesn't contain a path, the file is written in the data directory. @@ -41421,6 +41442,12 @@ not yet 100 % confident in this code. @appendixsubsec Changes in release 3.23.34 @itemize @bullet @item +@code{SHOW CREATE TABLE} now dumps the @code{UNION()} for @code{MERGE} tables. +@item +Fixed bug when replicating timestamps. +@item +Fixed bug in bi-directonal replication. +@item Added the @code{INNOBASE} table handler and the @code{BDB} table handler to the @strong{MySQL} source distribution. @item @@ -46205,6 +46232,10 @@ For the moment @code{MATCH} only works with @code{SELECT} statements. When using @code{SET CHARACTER SET}, one can't use translated characters in database, table and column names. @item +@code{DELETE FROM merge_table} used without a @code{WHERE} +will only clear the mapping for the table, not delete everything in the +mapped tables +@item You cannot build in another directory when using MIT-pthreads. Because this requires changes to MIT-pthreads, we are not likely to fix this. diff --git a/myisam/myisamchk.c b/myisam/myisamchk.c index 0e57c793dae..66a059c0f20 100644 --- a/myisam/myisamchk.c +++ b/myisam/myisamchk.c @@ -860,7 +860,7 @@ end2: filename)); if (check_param.testflag & (T_REP_BY_SORT | T_REP)) VOID(fprintf(stderr, - "Try fixing it by using the --safe-recover (-o) option\n")); + "Try fixing it by using the --safe-recover (-o) or the --force (-f) option\n")); } else if (!(param->error_printed & 2) && !(param->testflag & T_FORCE_CREATE)) diff --git a/mysql-test/r/merge.result b/mysql-test/r/merge.result index aa9ea098e0a..e741a309c9f 100644 --- a/mysql-test/r/merge.result +++ b/mysql-test/r/merge.result @@ -81,6 +81,12 @@ a 412 412 411 +Table Create Table +t3 CREATE TABLE `t3` ( + `a` int(11) NOT NULL default '0', + `b` char(20) default NULL, + KEY `a` (`a`) +) TYPE=MRG_MyISAM UNION=(t1,t2) c test1 test1 diff --git a/scripts/safe_mysqld.sh b/scripts/safe_mysqld.sh index 7120587f1de..6d215ec3d16 100644 --- a/scripts/safe_mysqld.sh +++ b/scripts/safe_mysqld.sh @@ -72,6 +72,10 @@ then MY_BASEDIR_VERSION=$MY_PWD # Where bin, share and data are ledir=$MY_BASEDIR_VERSION/bin # Where mysqld is DATADIR=$MY_BASEDIR_VERSION/data + if test -z "defaults" + then + defaults="--defaults-extra-file=$MY_BASEDIR_VERSION/data/my.cnf" + fi # Check if this is a 'moved install directory' elif test -f ./var/mysql/db.frm -a -f ./share/mysql/english/errmsg.sys -a \ -x ./libexec/mysqld diff --git a/sql/ha_myisammrg.cc b/sql/ha_myisammrg.cc index 4c562282090..181ae724cd8 100644 --- a/sql/ha_myisammrg.cc +++ b/sql/ha_myisammrg.cc @@ -238,3 +238,20 @@ int ha_myisammrg::create(const char *name, register TABLE *form, DBUG_RETURN(myrg_create(fn_format(buff,name,"","",2+4+16), (const char **) table_names, (my_bool) 0)); } + +void ha_myisammrg::append_create_info(String *packet) +{ + char buff[FN_REFLEN]; + packet->append(" UNION=(",8); + MYRG_TABLE *table,*first; + + for (first=table=file->open_tables ; table != file->end_table ; table++) + { + char *name=table->table->s->filename; + fn_format(buff,name,"","",3); + if (table != first) + packet->append(','); + packet->append(buff,(uint) strlen(buff)); + } + packet->append(')'); +} diff --git a/sql/ha_myisammrg.h b/sql/ha_myisammrg.h index f8383ce7c10..4b43ea0eab3 100644 --- a/sql/ha_myisammrg.h +++ b/sql/ha_myisammrg.h @@ -72,4 +72,5 @@ class ha_myisammrg: public handler int create(const char *name, TABLE *form, HA_CREATE_INFO *create_info); THR_LOCK_DATA **store_lock(THD *thd, THR_LOCK_DATA **to, enum thr_lock_type lock_type); + void append_create_info(String *packet); }; diff --git a/sql/sql_update.cc b/sql/sql_update.cc index d17b5768440..9a08fec5a3d 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -59,6 +59,7 @@ int mysql_update(THD *thd,TABLE_LIST *table_list,List<Item> &fields, READ_RECORD info; DBUG_ENTER("mysql_update"); LINT_INIT(used_index); + LINT_INIT(timestamp_query_id); if (!(table = open_ltable(thd,table_list,lock_type))) DBUG_RETURN(-1); |