mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01: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:
parent
dc72a9d59a
commit
9d36f27bb0
14 changed files with 152 additions and 54 deletions
101
Docs/manual.texi
101
Docs/manual.texi
|
@ -531,10 +531,20 @@ GEMINI Tables
|
|||
|
||||
InnoDB Tables
|
||||
|
||||
* InnoDB overview::
|
||||
* InnoDB overview:: InnoDB tables overview
|
||||
* InnoDB start:: InnoDB startup options
|
||||
* Using InnoDB tables:: Using InnoDB tables
|
||||
* InnoDB restrictions:: Some restrictions on @code{InnoDB} tables:
|
||||
* Creating an InnoDB database:: Creating an InnoDB database. Creating an InnoDB database
|
||||
* 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
|
||||
|
||||
|
@ -606,7 +616,6 @@ Replication in MySQL
|
|||
|
||||
MySQL Full-text Search
|
||||
|
||||
* Fulltext Search::
|
||||
* Fulltext Fine-tuning::
|
||||
* Fulltext Features to Appear in MySQL 4.0::
|
||||
* Fulltext TODO::
|
||||
|
@ -917,6 +926,7 @@ Changes in release 4.0.x (Development; Alpha)
|
|||
|
||||
Changes in release 3.23.x (Stable)
|
||||
|
||||
* News-3.23.38::
|
||||
* News-3.23.37:: Changes in release 3.23.37
|
||||
* News-3.23.36:: Changes in release 3.23.36
|
||||
* News-3.23.35:: Changes in release 3.23.35
|
||||
|
@ -24354,24 +24364,24 @@ limited by @code{gemini_connection_limit}. The default is 100 users.
|
|||
|
||||
NuSphere is working on removing these limitations.
|
||||
|
||||
@node InnoDB, , GEMINI, Table types
|
||||
@node InnoDB, , GEMINI, Table types
|
||||
@section InnoDB Tables
|
||||
|
||||
@menu
|
||||
* InnoDB overview:: InnoDB tables overview
|
||||
* InnoDB start:: InnoDB startup options
|
||||
* Creating an InnoDB database:: Creating an InnoDB database
|
||||
* 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
|
||||
* 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 overview:: InnoDB tables overview
|
||||
* InnoDB start:: InnoDB startup options
|
||||
* Creating an InnoDB database:: Creating an InnoDB database. Creating an InnoDB database
|
||||
* 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
|
||||
@end menu
|
||||
|
||||
@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).
|
||||
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
|
||||
|
||||
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.
|
||||
@end multitable
|
||||
|
||||
@node Creating an InnoDB database
|
||||
@node Creating an InnoDB database, Using InnoDB tables, InnoDB start, InnoDB
|
||||
@subsection Creating an InnoDB database
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
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
|
||||
a table.
|
||||
|
||||
@node InnoDB transaction model
|
||||
@node InnoDB transaction model, Implementation, Moving, InnoDB
|
||||
@subsection InnoDB transaction model
|
||||
|
||||
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
|
||||
set by which SQL statement.
|
||||
|
||||
@node Implementation
|
||||
@node Implementation, Table and index, InnoDB transaction model, InnoDB
|
||||
@subsection Implementation of multiversioning
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
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.
|
||||
@end itemize
|
||||
|
||||
@node File space management
|
||||
@node File space management, Error handling, Table and index, InnoDB
|
||||
@subsection File space management and 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
|
||||
consistent read.
|
||||
|
||||
@node Error handling
|
||||
@node Error handling, InnoDB restrictions, File space management, InnoDB
|
||||
@subsection Error handling
|
||||
|
||||
The error handling in InnoDB is not always the same as
|
||||
|
@ -25373,7 +25383,7 @@ The maximum tablespace size is 4 billion database pages. This is also
|
|||
the maximum size for a table.
|
||||
@end itemize
|
||||
|
||||
@node InnoDB contact information, , InnoDB restrictions, InnoDB
|
||||
@node InnoDB contact information, , InnoDB restrictions, InnoDB
|
||||
@subsection InnoDB contact information
|
||||
|
||||
Contact information of Innobase Oy, producer of the InnoDB engine:
|
||||
|
@ -29202,7 +29212,7 @@ have been assigned a low semantical value in @strong{a particular dataset}.
|
|||
* Fulltext TODO::
|
||||
@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
|
||||
|
||||
Unfortunately, full-text search has no user-tunable parameters yet,
|
||||
|
@ -31584,7 +31594,7 @@ the following configure options:
|
|||
|
||||
@multitable @columnfractions .3 .7
|
||||
@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-innodb @tab Support for InnoDB tables.
|
||||
@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
|
||||
where your old @code{mysqld} binary is. @xref{safe_mysqld}.
|
||||
|
||||
The @code{mysqld-max} RPM uses this @code{safe_mysqld} feature. It just
|
||||
installs the @code{mysqld-max} executable and @code{safe_mysqld} will
|
||||
automaticly use this when @code{mysqld} is restarted.
|
||||
The @code{mysqld-max} RPM uses the above mentioned @code{safe_mysqld}
|
||||
feature. It just installs the @code{mysqld-max} executable and
|
||||
@code{safe_mysqld} will automaticly use this executable when
|
||||
@code{safe_mysqld} is restarted.
|
||||
|
||||
@cindex tools, safe_mysqld
|
||||
@cindex scripts
|
||||
|
@ -41799,7 +41810,7 @@ This is a relatively low traffic list, in comparison with
|
|||
* MySQL test suite:: MySQL test suite
|
||||
@end menu
|
||||
|
||||
@node MySQL threads, MySQL test suite, , MySQL internals
|
||||
@node MySQL threads, MySQL test suite, MySQL internals, MySQL internals
|
||||
@section MySQL 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.
|
||||
|
||||
@menu
|
||||
* News-3.23.38::
|
||||
* News-3.23.37:: Changes in release 3.23.37
|
||||
* News-3.23.36:: Changes in release 3.23.36
|
||||
* 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
|
||||
@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
|
||||
@itemize @bullet
|
||||
@item
|
||||
|
|
|
@ -114,6 +114,12 @@
|
|||
/* 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 */
|
||||
#undef HAVE_READDIR_R
|
||||
|
||||
|
|
36
acinclude.m4
36
acinclude.m4
|
@ -196,6 +196,42 @@ then
|
|||
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:
|
||||
|
||||
AC_DEFUN(MYSQL_CHECK_FP_EXCEPT,
|
||||
|
|
|
@ -1293,10 +1293,11 @@ MYSQL_CXX_BOOL
|
|||
MYSQL_CHECK_LONGLONG_TO_FLOAT
|
||||
if test "$ac_cv_conv_longlong_to_float" != "yes"
|
||||
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
|
||||
again]);
|
||||
fi
|
||||
MYSQL_PTHREAD_YIELD
|
||||
|
||||
######################################################################
|
||||
# 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 \
|
||||
pthread_setschedparam pthread_attr_setprio pthread_attr_setschedparam \
|
||||
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)
|
||||
|
||||
# Sanity check: We chould not have any fseeko symbol unless
|
||||
|
|
|
@ -137,8 +137,10 @@ os_thread_yield(void)
|
|||
{
|
||||
#if defined(__WIN__)
|
||||
Sleep(0);
|
||||
#elif defined(HAVE_PTHREAD_YIELD)
|
||||
#elif defined(HAVE_PTHREAD_YIELD_ZERO_ARG)
|
||||
pthread_yield();
|
||||
#elif defined(HAVE_PTHREAD_YIELD_ONE_ARG)
|
||||
pthread_yield(0);
|
||||
#else
|
||||
os_thread_sleep(0);
|
||||
#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)
|
||||
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;
|
||||
update t1 set id=1 where id=-1;
|
||||
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/have_default_master.inc;
|
||||
connection master;
|
||||
show master status;
|
||||
save_master_pos;
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
connect (master,localhost,root,,test,0,mysql-master.sock);
|
||||
connect (slave,localhost,root,,test,0, mysql-slave.sock);
|
||||
source include/have_default_master.inc;
|
||||
connection master;
|
||||
reset master;
|
||||
show master status;
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
connect (master,localhost,root,,test,0,mysql-master.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 chmod 000 var/slave-data/master.info;
|
||||
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,
|
||||
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);
|
||||
DBUG_RETURN(HA_ADMIN_FAILED);
|
||||
|
@ -615,7 +616,8 @@ int ha_myisam::repair(THD *thd, MI_CHECK ¶m, bool optimize)
|
|||
update_state_info(¶m, file, 0);
|
||||
}
|
||||
thd->proc_info=old_proc_info;
|
||||
mi_lock_database(file,F_UNLCK);
|
||||
if (!thd->locked_tables)
|
||||
mi_lock_database(file,F_UNLCK);
|
||||
DBUG_RETURN(error ? HA_ADMIN_FAILED :
|
||||
!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 &&
|
||||
(join.const_tables == join.tables ||
|
||||
test_if_skip_sort_order(&join.join_tab[join.const_tables], order,
|
||||
(having || group ||
|
||||
join.const_tables != join.tables - 1) ?
|
||||
HA_POS_ERROR : thd->select_limit)))
|
||||
(group ? HA_POS_ERROR : thd->select_limit))))
|
||||
order=0;
|
||||
select_describe(&join,need_tmp,
|
||||
(order != 0 &&
|
||||
|
|
Loading…
Reference in a new issue