mirror of
https://github.com/MariaDB/server.git
synced 2025-08-05 13:16:09 +03:00
Added test for PTHREAD_YIELD
Removed test of default master parameter Don't lock locked tables in REPAIR Changed optimzation for SELECT * from table,table ORDER BY keypart LIMIT BitKeeper/deleted/.del-have_default_master.inc~a54c86e65a6c4af: Delete: mysql-test/include/have_default_master.inc BitKeeper/deleted/.del-have_default_master.require~1465255ffdaf82f: Delete: mysql-test/r/have_default_master.require Docs/manual.texi: Changelog for 3.23.38 acconfig.h: Added test for PTHREAD_YIELD acinclude.m4: Added test for PTHREAD_YIELD configure.in: Added test for PTHREAD_YIELD innobase/os/os0thread.c: Added test for PTHREAD_YIELD mysql-test/r/lock.result: Added test of lock bug mysql-test/t/lock.test: Added test of lock bug mysql-test/t/rpl000014.test: Removed test of default master parameter mysql-test/t/rpl000015.test: Removed test of default master parameter mysql-test/t/rpl000016.test: Removed test of default master parameter sql/ha_myisam.cc: Don't lock locked tables in REPAIR sql/sql_select.cc: Changed optimzation for SELECT * from table,table ORDER BY keypart LIMIT
This commit is contained in:
@@ -531,10 +531,20 @@ GEMINI Tables
|
|||||||
|
|
||||||
InnoDB Tables
|
InnoDB Tables
|
||||||
|
|
||||||
* InnoDB overview::
|
* InnoDB overview:: InnoDB tables overview
|
||||||
* InnoDB start:: InnoDB startup options
|
* InnoDB start:: InnoDB startup options
|
||||||
* Using InnoDB tables:: Using InnoDB tables
|
* Creating an InnoDB database:: Creating an InnoDB database. Creating an InnoDB database
|
||||||
* InnoDB restrictions:: Some restrictions on @code{InnoDB} tables:
|
* Using InnoDB tables:: Creating InnoDB tables
|
||||||
|
* Adding and removing:: Adding and removing InnoDB data and log files
|
||||||
|
* Backing up:: Backing up and recovering an InnoDB database
|
||||||
|
* Moving:: Moving an InnoDB database to another machine
|
||||||
|
* InnoDB transaction model:: InnoDB transaction model. InnoDB transaction model
|
||||||
|
* Implementation:: Implementation of multiversioning
|
||||||
|
* Table and index:: Table and index structures
|
||||||
|
* File space management:: File space management and disk i/o
|
||||||
|
* Error handling:: Error handling
|
||||||
|
* InnoDB restrictions:: Some restrictions on InnoDB tables
|
||||||
|
* InnoDB contact information:: InnoDB contact information. InnoDB contact information
|
||||||
|
|
||||||
MySQL Tutorial
|
MySQL Tutorial
|
||||||
|
|
||||||
@@ -606,7 +616,6 @@ Replication in MySQL
|
|||||||
|
|
||||||
MySQL Full-text Search
|
MySQL Full-text Search
|
||||||
|
|
||||||
* Fulltext Search::
|
|
||||||
* Fulltext Fine-tuning::
|
* Fulltext Fine-tuning::
|
||||||
* Fulltext Features to Appear in MySQL 4.0::
|
* Fulltext Features to Appear in MySQL 4.0::
|
||||||
* Fulltext TODO::
|
* Fulltext TODO::
|
||||||
@@ -917,6 +926,7 @@ Changes in release 4.0.x (Development; Alpha)
|
|||||||
|
|
||||||
Changes in release 3.23.x (Stable)
|
Changes in release 3.23.x (Stable)
|
||||||
|
|
||||||
|
* News-3.23.38::
|
||||||
* News-3.23.37:: Changes in release 3.23.37
|
* News-3.23.37:: Changes in release 3.23.37
|
||||||
* News-3.23.36:: Changes in release 3.23.36
|
* News-3.23.36:: Changes in release 3.23.36
|
||||||
* News-3.23.35:: Changes in release 3.23.35
|
* News-3.23.35:: Changes in release 3.23.35
|
||||||
@@ -24360,18 +24370,18 @@ NuSphere is working on removing these limitations.
|
|||||||
@menu
|
@menu
|
||||||
* InnoDB overview:: InnoDB tables overview
|
* InnoDB overview:: InnoDB tables overview
|
||||||
* InnoDB start:: InnoDB startup options
|
* InnoDB start:: InnoDB startup options
|
||||||
* Creating an InnoDB database:: Creating an InnoDB database
|
* Creating an InnoDB database:: Creating an InnoDB database. Creating an InnoDB database
|
||||||
* Using InnoDB tables:: Creating InnoDB tables
|
* Using InnoDB tables:: Creating InnoDB tables
|
||||||
* Adding and removing:: Adding and removing InnoDB data and log files
|
* Adding and removing:: Adding and removing InnoDB data and log files
|
||||||
* Backing up:: Backing up and recovering an InnoDB database
|
* Backing up:: Backing up and recovering an InnoDB database
|
||||||
* Moving:: Moving an InnoDB database to another machine
|
* Moving:: Moving an InnoDB database to another machine
|
||||||
* InnoDB transaction model:: InnoDB transaction model
|
* InnoDB transaction model:: InnoDB transaction model. InnoDB transaction model
|
||||||
* Implementation:: Implementation of multiversioning
|
* Implementation:: Implementation of multiversioning
|
||||||
* Table and index:: Table and index structures
|
* Table and index:: Table and index structures
|
||||||
* File space management:: File space management and disk i/o
|
* File space management:: File space management and disk i/o
|
||||||
* Error handling:: Error handling
|
* Error handling:: Error handling
|
||||||
* InnoDB restrictions:: Some restrictions on InnoDB tables
|
* InnoDB restrictions:: Some restrictions on InnoDB tables
|
||||||
* InnoDB contact information:: InnoDB contact information
|
* InnoDB contact information:: InnoDB contact information. InnoDB contact information
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@node InnoDB overview, InnoDB start, InnoDB, InnoDB
|
@node InnoDB overview, InnoDB start, InnoDB, InnoDB
|
||||||
@@ -24413,7 +24423,7 @@ may consist of several files. This is different from, for example,
|
|||||||
InnoDB is distributed under the GNU GPL License Version 2 (of June 1991).
|
InnoDB is distributed under the GNU GPL License Version 2 (of June 1991).
|
||||||
In the source distribution of MySQL, InnoDB appears as a subdirectory.
|
In the source distribution of MySQL, InnoDB appears as a subdirectory.
|
||||||
|
|
||||||
@node InnoDB start
|
@node InnoDB start, Creating an InnoDB database, InnoDB overview, InnoDB
|
||||||
@subsection InnoDB startup options
|
@subsection InnoDB startup options
|
||||||
|
|
||||||
Beginning from MySQL-3.23.37 the prefix of the options is changed
|
Beginning from MySQL-3.23.37 the prefix of the options is changed
|
||||||
@@ -24551,7 +24561,7 @@ InnoDB cannot notice. In cases like this the timeout is useful to
|
|||||||
resolve the situation.
|
resolve the situation.
|
||||||
@end multitable
|
@end multitable
|
||||||
|
|
||||||
@node Creating an InnoDB database
|
@node Creating an InnoDB database, Using InnoDB tables, InnoDB start, InnoDB
|
||||||
@subsection Creating an InnoDB database
|
@subsection Creating an InnoDB database
|
||||||
|
|
||||||
Suppose you have installed MySQL and have edited @file{my.cnf} so that
|
Suppose you have installed MySQL and have edited @file{my.cnf} so that
|
||||||
@@ -24621,7 +24631,7 @@ some InnoDB tables, delete also the corresponding @file{.frm}
|
|||||||
files for these tables from the MySQL database directories. Then you can
|
files for these tables from the MySQL database directories. Then you can
|
||||||
try the InnoDB database creation again.
|
try the InnoDB database creation again.
|
||||||
|
|
||||||
@node Using InnoDB tables
|
@node Using InnoDB tables, Adding and removing, Creating an InnoDB database, InnoDB
|
||||||
@subsection Creating InnoDB tables
|
@subsection Creating InnoDB tables
|
||||||
|
|
||||||
Suppose you have started the MySQL client with the command
|
Suppose you have started the MySQL client with the command
|
||||||
@@ -24664,7 +24674,7 @@ InnoDB has its own internal data dictionary, and you will get problems
|
|||||||
if the MySQL @file{.frm} files are out of 'sync' with the InnoDB
|
if the MySQL @file{.frm} files are out of 'sync' with the InnoDB
|
||||||
internal data dictionary.
|
internal data dictionary.
|
||||||
|
|
||||||
@node Adding and removing
|
@node Adding and removing, Backing up, Using InnoDB tables, InnoDB
|
||||||
@subsection Adding and removing InnoDB data and log files
|
@subsection Adding and removing InnoDB data and log files
|
||||||
|
|
||||||
You cannot increase the size of an InnoDB data file. To add more into
|
You cannot increase the size of an InnoDB data file. To add more into
|
||||||
@@ -24686,7 +24696,7 @@ database. Delete then the old log files from the log file directory,
|
|||||||
edit @file{my.cnf}, and start MySQL again. InnoDB will tell
|
edit @file{my.cnf}, and start MySQL again. InnoDB will tell
|
||||||
you at the startup that it is creating new log files.
|
you at the startup that it is creating new log files.
|
||||||
|
|
||||||
@node Backing up
|
@node Backing up, Moving, Adding and removing, InnoDB
|
||||||
@subsection Backing up and recovering an InnoDB database
|
@subsection Backing up and recovering an InnoDB database
|
||||||
|
|
||||||
The key to safe database management is taking regular backups.
|
The key to safe database management is taking regular backups.
|
||||||
@@ -24798,7 +24808,7 @@ the total size of the log files as big as the buffer pool or even bigger.
|
|||||||
The drawback in big log files is that crash recovery can last longer
|
The drawback in big log files is that crash recovery can last longer
|
||||||
because there will be more log to apply to the database.
|
because there will be more log to apply to the database.
|
||||||
|
|
||||||
@node Moving
|
@node Moving, InnoDB transaction model, Backing up, InnoDB
|
||||||
@subsection Moving an InnoDB database to another machine
|
@subsection Moving an InnoDB database to another machine
|
||||||
|
|
||||||
InnoDB data and log files are binary-compatible on all platforms
|
InnoDB data and log files are binary-compatible on all platforms
|
||||||
@@ -24818,7 +24828,7 @@ the big rollback segment the big import transaction will generate.
|
|||||||
Do the commit only after importing a whole table or a segment of
|
Do the commit only after importing a whole table or a segment of
|
||||||
a table.
|
a table.
|
||||||
|
|
||||||
@node InnoDB transaction model
|
@node InnoDB transaction model, Implementation, Moving, InnoDB
|
||||||
@subsection InnoDB transaction model
|
@subsection InnoDB transaction model
|
||||||
|
|
||||||
In the InnoDB transaction model the goal has been to combine the best
|
In the InnoDB transaction model the goal has been to combine the best
|
||||||
@@ -25046,7 +25056,7 @@ set by the SQL statement may be preserved. This is because InnoDB
|
|||||||
stores row locks in a format where it cannot afterwards know which was
|
stores row locks in a format where it cannot afterwards know which was
|
||||||
set by which SQL statement.
|
set by which SQL statement.
|
||||||
|
|
||||||
@node Implementation
|
@node Implementation, Table and index, InnoDB transaction model, InnoDB
|
||||||
@subsection Implementation of multiversioning
|
@subsection Implementation of multiversioning
|
||||||
|
|
||||||
Since InnoDB is a multiversioned database, it must keep information
|
Since InnoDB is a multiversioned database, it must keep information
|
||||||
@@ -25095,7 +25105,7 @@ its index records from the database. This removal operation is
|
|||||||
called a purge, and it is quite fast, usually taking the same order of
|
called a purge, and it is quite fast, usually taking the same order of
|
||||||
time as the SQL statement which did the deletion.
|
time as the SQL statement which did the deletion.
|
||||||
|
|
||||||
@node Table and index
|
@node Table and index, File space management, Implementation, InnoDB
|
||||||
@subsection Table and index structures
|
@subsection Table and index structures
|
||||||
|
|
||||||
Every InnoDB table has a special index called the clustered index
|
Every InnoDB table has a special index called the clustered index
|
||||||
@@ -25208,7 +25218,7 @@ If the total length of the fields in a record is < 256 bytes, then
|
|||||||
the pointer is 1 byte, else 2 bytes.
|
the pointer is 1 byte, else 2 bytes.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@node File space management
|
@node File space management, Error handling, Table and index, InnoDB
|
||||||
@subsection File space management and disk i/o
|
@subsection File space management and disk i/o
|
||||||
|
|
||||||
@subsubsection Disk i/o
|
@subsubsection Disk i/o
|
||||||
@@ -25287,7 +25297,7 @@ but remember that deleted rows can be physically removed only in a
|
|||||||
purge operation after they are no longer needed in transaction rollback or
|
purge operation after they are no longer needed in transaction rollback or
|
||||||
consistent read.
|
consistent read.
|
||||||
|
|
||||||
@node Error handling
|
@node Error handling, InnoDB restrictions, File space management, InnoDB
|
||||||
@subsection Error handling
|
@subsection Error handling
|
||||||
|
|
||||||
The error handling in InnoDB is not always the same as
|
The error handling in InnoDB is not always the same as
|
||||||
@@ -29202,7 +29212,7 @@ have been assigned a low semantical value in @strong{a particular dataset}.
|
|||||||
* Fulltext TODO::
|
* Fulltext TODO::
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@node Fulltext Fine-tuning, Fulltext Features to Appear in MySQL 4.0, , Fulltext Search
|
@node Fulltext Fine-tuning, Fulltext Features to Appear in MySQL 4.0, Fulltext Search, Fulltext Search
|
||||||
@section Fine-tuning MySQL Full-text Search
|
@section Fine-tuning MySQL Full-text Search
|
||||||
|
|
||||||
Unfortunately, full-text search has no user-tunable parameters yet,
|
Unfortunately, full-text search has no user-tunable parameters yet,
|
||||||
@@ -31584,7 +31594,7 @@ the following configure options:
|
|||||||
|
|
||||||
@multitable @columnfractions .3 .7
|
@multitable @columnfractions .3 .7
|
||||||
@item @strong{Option} @tab @strong{Comment}
|
@item @strong{Option} @tab @strong{Comment}
|
||||||
@item --with-server-suffix=-max @tab Add a suffix to the @code{mysqld} version string.
|
@item --with-server-suffix=-Max @tab Add a suffix to the @code{mysqld} version string.
|
||||||
@item --with-bdb @tab Support for Berkeley DB (BDB) tables
|
@item --with-bdb @tab Support for Berkeley DB (BDB) tables
|
||||||
@item --with-innodb @tab Support for InnoDB tables.
|
@item --with-innodb @tab Support for InnoDB tables.
|
||||||
@item CFLAGS=-DUSE_SYMDIR @tab Symbolic links support for Windows.
|
@item CFLAGS=-DUSE_SYMDIR @tab Symbolic links support for Windows.
|
||||||
@@ -31597,9 +31607,10 @@ run @code{configure} with the options you want and then install the
|
|||||||
new @code{mysqld} binary as @code{mysqld-max} in the same directory
|
new @code{mysqld} binary as @code{mysqld-max} in the same directory
|
||||||
where your old @code{mysqld} binary is. @xref{safe_mysqld}.
|
where your old @code{mysqld} binary is. @xref{safe_mysqld}.
|
||||||
|
|
||||||
The @code{mysqld-max} RPM uses this @code{safe_mysqld} feature. It just
|
The @code{mysqld-max} RPM uses the above mentioned @code{safe_mysqld}
|
||||||
installs the @code{mysqld-max} executable and @code{safe_mysqld} will
|
feature. It just installs the @code{mysqld-max} executable and
|
||||||
automaticly use this when @code{mysqld} is restarted.
|
@code{safe_mysqld} will automaticly use this executable when
|
||||||
|
@code{safe_mysqld} is restarted.
|
||||||
|
|
||||||
@cindex tools, safe_mysqld
|
@cindex tools, safe_mysqld
|
||||||
@cindex scripts
|
@cindex scripts
|
||||||
@@ -41799,7 +41810,7 @@ This is a relatively low traffic list, in comparison with
|
|||||||
* MySQL test suite:: MySQL test suite
|
* MySQL test suite:: MySQL test suite
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@node MySQL threads, MySQL test suite, , MySQL internals
|
@node MySQL threads, MySQL test suite, MySQL internals, MySQL internals
|
||||||
@section MySQL Threads
|
@section MySQL Threads
|
||||||
|
|
||||||
The @strong{MySQL} server creates the following threads:
|
The @strong{MySQL} server creates the following threads:
|
||||||
@@ -43855,6 +43866,7 @@ users uses this code as the rest of the code and because of this we are
|
|||||||
not yet 100% confident in this code.
|
not yet 100% confident in this code.
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
|
* News-3.23.38::
|
||||||
* News-3.23.37:: Changes in release 3.23.37
|
* News-3.23.37:: Changes in release 3.23.37
|
||||||
* News-3.23.36:: Changes in release 3.23.36
|
* News-3.23.36:: Changes in release 3.23.36
|
||||||
* News-3.23.35:: Changes in release 3.23.35
|
* News-3.23.35:: Changes in release 3.23.35
|
||||||
@@ -43896,7 +43908,20 @@ not yet 100% confident in this code.
|
|||||||
* News-3.23.0:: Changes in release 3.23.0
|
* News-3.23.0:: Changes in release 3.23.0
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@node News-3.23.37, News-3.23.36, News-3.23.x, News-3.23.x
|
@node News-3.23.38, News-3.23.37, News-3.23.x, News-3.23.x
|
||||||
|
@appendixsubsec Changes in release 3.23.38
|
||||||
|
@itemize @bullet
|
||||||
|
@item
|
||||||
|
Changed optimizer so that queries like
|
||||||
|
@code{SELECT * FROM table_name,table_name2 ... ORDER BY key_part1 LIMIT #}
|
||||||
|
will use index on @code{key_part1} instead of @code{filesort}.
|
||||||
|
@item
|
||||||
|
Fixed bug when doing
|
||||||
|
@code{LOCK TABLE to_table WRITE,...; INSERT INTO to_table... SELECT ...}
|
||||||
|
when to_table was empty.
|
||||||
|
@end itemize
|
||||||
|
|
||||||
|
@node News-3.23.37, News-3.23.36, News-3.23.38, News-3.23.x
|
||||||
@appendixsubsec Changes in release 3.23.37
|
@appendixsubsec Changes in release 3.23.37
|
||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
|
@@ -114,6 +114,12 @@
|
|||||||
/* pthread_attr_setscope */
|
/* pthread_attr_setscope */
|
||||||
#undef HAVE_PTHREAD_ATTR_SETSCOPE
|
#undef HAVE_PTHREAD_ATTR_SETSCOPE
|
||||||
|
|
||||||
|
/* pthread_yield that doesn't take any arguments */
|
||||||
|
#undef HAVE_PTHREAD_YIELD_ZERO_ARG
|
||||||
|
|
||||||
|
/* pthread_yield function with one argument */
|
||||||
|
#undef HAVE_PTHREAD_YIELD_ONE_ARG
|
||||||
|
|
||||||
/* POSIX readdir_r */
|
/* POSIX readdir_r */
|
||||||
#undef HAVE_READDIR_R
|
#undef HAVE_READDIR_R
|
||||||
|
|
||||||
|
36
acinclude.m4
36
acinclude.m4
@@ -196,6 +196,42 @@ then
|
|||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
|
AC_DEFUN(MYSQL_PTHREAD_YIELD,
|
||||||
|
[AC_CACHE_CHECK([if pthread_yield takes zero arguments], ac_cv_pthread_yield_zero_arg,
|
||||||
|
[AC_TRY_COMPILE([#define _GNU_SOURCE
|
||||||
|
#include <pthread.h>
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C"
|
||||||
|
#endif
|
||||||
|
],
|
||||||
|
[
|
||||||
|
pthread_yield();
|
||||||
|
], ac_cv_pthread_yield_zero_arg=yes, ac_cv_pthread_yield_zero_arg=yeso)])
|
||||||
|
if test "$ac_cv_pthread_yield_zero_arg" = "yes"
|
||||||
|
then
|
||||||
|
AC_DEFINE(HAVE_PTHREAD_YIELD_ZERO_ARG)
|
||||||
|
fi
|
||||||
|
]
|
||||||
|
[AC_CACHE_CHECK([if pthread_yield takes 1 argument], ac_cv_pthread_yield_one_arg,
|
||||||
|
[AC_TRY_COMPILE([#define _GNU_SOURCE
|
||||||
|
#include <pthread.h>
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C"
|
||||||
|
#endif
|
||||||
|
],
|
||||||
|
[
|
||||||
|
pthread_yield(0);
|
||||||
|
], ac_cv_pthread_yield_one_arg=yes, ac_cv_pthread_yield_one_arg=no)])
|
||||||
|
if test "$ac_cv_pthread_yield_one_arg" = "yes"
|
||||||
|
then
|
||||||
|
AC_DEFINE(HAVE_PTHREAD_YIELD_ONE_ARG)
|
||||||
|
fi
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#---END:
|
#---END:
|
||||||
|
|
||||||
AC_DEFUN(MYSQL_CHECK_FP_EXCEPT,
|
AC_DEFUN(MYSQL_CHECK_FP_EXCEPT,
|
||||||
|
@@ -1293,10 +1293,11 @@ MYSQL_CXX_BOOL
|
|||||||
MYSQL_CHECK_LONGLONG_TO_FLOAT
|
MYSQL_CHECK_LONGLONG_TO_FLOAT
|
||||||
if test "$ac_cv_conv_longlong_to_float" != "yes"
|
if test "$ac_cv_conv_longlong_to_float" != "yes"
|
||||||
then
|
then
|
||||||
AC_MSG_ERROR([Your compiler can't convert a longlong value to a float!
|
AC_MSG_ERROR([Your compiler cannot convert a longlong value to a float!
|
||||||
If you are using gcc 2.8.# you should upgrade to egcs 1.0.3 or newer and try
|
If you are using gcc 2.8.# you should upgrade to egcs 1.0.3 or newer and try
|
||||||
again]);
|
again]);
|
||||||
fi
|
fi
|
||||||
|
MYSQL_PTHREAD_YIELD
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
# For readline-4.0 (We simply move the mimimum amount of stuff from
|
# For readline-4.0 (We simply move the mimimum amount of stuff from
|
||||||
@@ -1353,7 +1354,7 @@ AC_CHECK_FUNCS(alarm bmove \
|
|||||||
sigset sigthreadmask pthread_sigmask pthread_setprio pthread_setprio_np \
|
sigset sigthreadmask pthread_sigmask pthread_setprio pthread_setprio_np \
|
||||||
pthread_setschedparam pthread_attr_setprio pthread_attr_setschedparam \
|
pthread_setschedparam pthread_attr_setprio pthread_attr_setschedparam \
|
||||||
pthread_attr_create pthread_getsequence_np pthread_attr_setstacksize \
|
pthread_attr_create pthread_getsequence_np pthread_attr_setstacksize \
|
||||||
pthread_condattr_create rwlock_init pthread_rwlock_rdlock pthread_yield\
|
pthread_condattr_create rwlock_init pthread_rwlock_rdlock \
|
||||||
fchmod getpass getpassphrase initgroups mlockall)
|
fchmod getpass getpassphrase initgroups mlockall)
|
||||||
|
|
||||||
# Sanity check: We chould not have any fseeko symbol unless
|
# Sanity check: We chould not have any fseeko symbol unless
|
||||||
|
@@ -137,8 +137,10 @@ os_thread_yield(void)
|
|||||||
{
|
{
|
||||||
#if defined(__WIN__)
|
#if defined(__WIN__)
|
||||||
Sleep(0);
|
Sleep(0);
|
||||||
#elif defined(HAVE_PTHREAD_YIELD)
|
#elif defined(HAVE_PTHREAD_YIELD_ZERO_ARG)
|
||||||
pthread_yield();
|
pthread_yield();
|
||||||
|
#elif defined(HAVE_PTHREAD_YIELD_ONE_ARG)
|
||||||
|
pthread_yield(0);
|
||||||
#else
|
#else
|
||||||
os_thread_sleep(0);
|
os_thread_sleep(0);
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,3 +0,0 @@
|
|||||||
-- require r/have_default_master.require
|
|
||||||
connection master;
|
|
||||||
show variables like "port";
|
|
@@ -1,2 +0,0 @@
|
|||||||
Variable_name Value
|
|
||||||
port 9306
|
|
@@ -1,2 +1,6 @@
|
|||||||
dummy1 count(distinct id)
|
dummy1 count(distinct id)
|
||||||
NULL 1
|
NULL 1
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 check status OK
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t2 check error Table 't2' was not locked with LOCK TABLES
|
||||||
|
@@ -21,3 +21,35 @@ LOCK TABLE t1 WRITE,t2 write;
|
|||||||
insert into t2 SELECT * from t1;
|
insert into t2 SELECT * from t1;
|
||||||
update t1 set id=1 where id=-1;
|
update t1 set id=1 where id=-1;
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Check bug with INSERT ... SELECT with lock tables
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
index1 smallint(6) default NULL,
|
||||||
|
nr smallint(6) default NULL,
|
||||||
|
KEY index1(index1)
|
||||||
|
) TYPE=MyISAM;
|
||||||
|
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
nr smallint(6) default NULL,
|
||||||
|
name varchar(20) default NULL
|
||||||
|
) TYPE=MyISAM;
|
||||||
|
|
||||||
|
INSERT INTO t2 VALUES (1,'item1');
|
||||||
|
INSERT INTO t2 VALUES (2,'item2');
|
||||||
|
|
||||||
|
# problem begins here!
|
||||||
|
lock tables t1 write, t2 read;
|
||||||
|
insert into t1 select 1,nr from t2 where name='item1';
|
||||||
|
insert into t1 select 2,nr from t2 where name='item2';
|
||||||
|
unlock tables;
|
||||||
|
check table t1;
|
||||||
|
|
||||||
|
# Check error message
|
||||||
|
lock tables t1 write;
|
||||||
|
check table t2;
|
||||||
|
unlock tables;
|
||||||
|
drop table t1,t2;
|
||||||
|
@@ -1,5 +1,4 @@
|
|||||||
source include/master-slave.inc;
|
source include/master-slave.inc;
|
||||||
source include/have_default_master.inc;
|
|
||||||
connection master;
|
connection master;
|
||||||
show master status;
|
show master status;
|
||||||
save_master_pos;
|
save_master_pos;
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
connect (master,localhost,root,,test,0,mysql-master.sock);
|
connect (master,localhost,root,,test,0,mysql-master.sock);
|
||||||
connect (slave,localhost,root,,test,0, mysql-slave.sock);
|
connect (slave,localhost,root,,test,0, mysql-slave.sock);
|
||||||
source include/have_default_master.inc;
|
|
||||||
connection master;
|
connection master;
|
||||||
reset master;
|
reset master;
|
||||||
show master status;
|
show master status;
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
connect (master,localhost,root,,test,0,mysql-master.sock);
|
connect (master,localhost,root,,test,0,mysql-master.sock);
|
||||||
connect (slave,localhost,root,,test,0,mysql-slave.sock);
|
connect (slave,localhost,root,,test,0,mysql-slave.sock);
|
||||||
source include/have_default_master.inc;
|
|
||||||
system cat /dev/null > var/slave-data/master.info;
|
system cat /dev/null > var/slave-data/master.info;
|
||||||
system chmod 000 var/slave-data/master.info;
|
system chmod 000 var/slave-data/master.info;
|
||||||
connection slave;
|
connection slave;
|
||||||
|
@@ -533,7 +533,8 @@ int ha_myisam::repair(THD *thd, MI_CHECK ¶m, bool optimize)
|
|||||||
VOID(fn_format(fixed_name,file->filename,"",MI_NAME_IEXT,
|
VOID(fn_format(fixed_name,file->filename,"",MI_NAME_IEXT,
|
||||||
4+ (param.opt_follow_links ? 16 : 0)));
|
4+ (param.opt_follow_links ? 16 : 0)));
|
||||||
|
|
||||||
if (mi_lock_database(file,F_WRLCK))
|
// Don't lock tables if we have used LOCK TABLE
|
||||||
|
if (!thd->locked_tables && mi_lock_database(file,F_WRLCK))
|
||||||
{
|
{
|
||||||
mi_check_print_error(¶m,ER(ER_CANT_LOCK),my_errno);
|
mi_check_print_error(¶m,ER(ER_CANT_LOCK),my_errno);
|
||||||
DBUG_RETURN(HA_ADMIN_FAILED);
|
DBUG_RETURN(HA_ADMIN_FAILED);
|
||||||
@@ -615,6 +616,7 @@ int ha_myisam::repair(THD *thd, MI_CHECK ¶m, bool optimize)
|
|||||||
update_state_info(¶m, file, 0);
|
update_state_info(¶m, file, 0);
|
||||||
}
|
}
|
||||||
thd->proc_info=old_proc_info;
|
thd->proc_info=old_proc_info;
|
||||||
|
if (!thd->locked_tables)
|
||||||
mi_lock_database(file,F_UNLCK);
|
mi_lock_database(file,F_UNLCK);
|
||||||
DBUG_RETURN(error ? HA_ADMIN_FAILED :
|
DBUG_RETURN(error ? HA_ADMIN_FAILED :
|
||||||
!optimize_done ? HA_ADMIN_ALREADY_DONE : HA_ADMIN_OK);
|
!optimize_done ? HA_ADMIN_ALREADY_DONE : HA_ADMIN_OK);
|
||||||
|
@@ -528,9 +528,7 @@ mysql_select(THD *thd,TABLE_LIST *tables,List<Item> &fields,COND *conds,
|
|||||||
if (order &&
|
if (order &&
|
||||||
(join.const_tables == join.tables ||
|
(join.const_tables == join.tables ||
|
||||||
test_if_skip_sort_order(&join.join_tab[join.const_tables], order,
|
test_if_skip_sort_order(&join.join_tab[join.const_tables], order,
|
||||||
(having || group ||
|
(group ? HA_POS_ERROR : thd->select_limit))))
|
||||||
join.const_tables != join.tables - 1) ?
|
|
||||||
HA_POS_ERROR : thd->select_limit)))
|
|
||||||
order=0;
|
order=0;
|
||||||
select_describe(&join,need_tmp,
|
select_describe(&join,need_tmp,
|
||||||
(order != 0 &&
|
(order != 0 &&
|
||||||
|
Reference in New Issue
Block a user