mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 12:32:27 +01:00
Merge mysql.com:/home/jonas/src/mysql-4.1
into mysql.com:/home/jonas/src/mysql-4.1-ndb mysql-test/ndb/ndbcluster.sh: Auto merged
This commit is contained in:
commit
d0a9676b4a
63 changed files with 10584 additions and 211 deletions
|
@ -40,6 +40,7 @@ georg@beethoven.local
|
|||
gerberb@ou800.zenez.com
|
||||
gluh@gluh.(none)
|
||||
gluh@gluh.mysql.r18.ru
|
||||
gordon@zero.local.lan
|
||||
greg@gcw.ath.cx
|
||||
greg@mysql.com
|
||||
guilhem@mysql.com
|
||||
|
@ -122,6 +123,7 @@ mwagner@work.mysql.com
|
|||
mydev@mysql.com
|
||||
mysql@home.(none)
|
||||
mysqldev@build.mysql2.com
|
||||
mysqldev@melody.local
|
||||
mysqldev@mysql.com
|
||||
ndbdev@ndbmaster.mysql.com
|
||||
nick@mysql.com
|
||||
|
|
|
@ -162,7 +162,23 @@ sub trim_the_fat
|
|||
undef $/;
|
||||
my $configure= <CONFIGURE>;
|
||||
close(CONFIGURE);
|
||||
$configure=~ s|${the_fat}/Makefile dnl\n?||g;
|
||||
|
||||
#
|
||||
# If $the_fat Makefile line closes the parenthesis, then
|
||||
# replace that line with just the closing parenthesis.
|
||||
#
|
||||
if ($configure=~ m|${the_fat}/Makefile\)\n?|)
|
||||
{
|
||||
$configure=~ s|${the_fat}/Makefile(\)\n?)|$1|;
|
||||
}
|
||||
#
|
||||
# Else just delete the line
|
||||
#
|
||||
else
|
||||
{
|
||||
$configure=~ s|${the_fat}/Makefile dnl\n?||;
|
||||
}
|
||||
|
||||
open(CONFIGURE,">configure.in") or die "Unable to open configure.in for write: $!\n";
|
||||
print CONFIGURE $configure;
|
||||
close(CONFIGURE);
|
||||
|
|
|
@ -435,6 +435,10 @@ SOURCE=..\mysys\my_tempnam.c
|
|||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\libmysql\my_time.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\mysys\my_thr_init.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
|
10
configure.in
10
configure.in
|
@ -4,7 +4,7 @@ dnl Process this file with autoconf to produce a configure script.
|
|||
AC_INIT(sql/mysqld.cc)
|
||||
AC_CANONICAL_SYSTEM
|
||||
# The Docs Makefile.am parses this line!
|
||||
AM_INIT_AUTOMAKE(mysql, 4.1.3-beta)
|
||||
AM_INIT_AUTOMAKE(mysql, 4.1.4-beta)
|
||||
AM_CONFIG_HEADER(config.h)
|
||||
|
||||
PROTOCOL_VERSION=10
|
||||
|
@ -521,7 +521,7 @@ fi
|
|||
AC_SUBST(CHECK_PID)
|
||||
AC_MSG_RESULT("$CHECK_PID")
|
||||
|
||||
# We need a ANSI C compiler
|
||||
# We need an ANSI C compiler
|
||||
AM_PROG_CC_STDC
|
||||
|
||||
# We need an assembler, too
|
||||
|
@ -529,7 +529,7 @@ AM_PROG_AS
|
|||
|
||||
if test "$am_cv_prog_cc_stdc" = "no"
|
||||
then
|
||||
AC_MSG_ERROR([MySQL requires a ANSI C compiler (and a C++ compiler). Try gcc. See the Installation chapter in the Reference Manual.])
|
||||
AC_MSG_ERROR([MySQL requires an ANSI C compiler (and a C++ compiler). Try gcc. See the Installation chapter in the Reference Manual.])
|
||||
fi
|
||||
|
||||
NOINST_LDFLAGS=
|
||||
|
@ -796,7 +796,7 @@ AC_CHECK_FUNC(sem_init, , AC_CHECK_LIB(posix4, sem_init))
|
|||
|
||||
# For compress in zlib
|
||||
case $SYSTEM_TYPE in
|
||||
*netware*)
|
||||
*netware* | *modesto*)
|
||||
AC_DEFINE(HAVE_COMPRESS)
|
||||
;;
|
||||
*)
|
||||
|
@ -2525,7 +2525,7 @@ done
|
|||
case $default_charset in
|
||||
armscii8)
|
||||
default_charset_default_collation="armscii8_general_ci"
|
||||
default_charset_collations="armscii8_general_ci armscii_bin"
|
||||
default_charset_collations="armscii8_general_ci armscii8_bin"
|
||||
;;
|
||||
ascii)
|
||||
default_charset_default_collation="ascii_general_ci"
|
||||
|
|
|
@ -14,8 +14,8 @@
|
|||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||
|
||||
/* Error messages for mysql clients */
|
||||
/* error messages for the demon is in share/language/errmsg.sys */
|
||||
/* Error messages for MySQL clients */
|
||||
/* (Error messages for the daemon are in share/language/errmsg.sys) */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
@ -83,10 +83,10 @@ extern const char *client_errors[]; /* Error messages */
|
|||
#define CR_SHARED_MEMORY_FILE_MAP_ERROR 2042
|
||||
#define CR_SHARED_MEMORY_MAP_ERROR 2043
|
||||
#define CR_SHARED_MEMORY_EVENT_ERROR 2044
|
||||
#define CR_SHARED_MEMORY_CONNECT_ABANDODED_ERROR 2045
|
||||
#define CR_SHARED_MEMORY_CONNECT_ABANDONED_ERROR 2045
|
||||
#define CR_SHARED_MEMORY_CONNECT_SET_ERROR 2046
|
||||
#define CR_CONN_UNKNOW_PROTOCOL 2047
|
||||
#define CR_INVALID_CONN_HANDLE 2048
|
||||
#define CR_SECURE_AUTH 2049
|
||||
#define CR_FETCH_CANCELLED 2050
|
||||
#define CR_FETCH_CANCELED 2050
|
||||
#define CR_NO_DATA 2051
|
||||
|
|
|
@ -16,10 +16,7 @@
|
|||
|
||||
#ifndef _dbug_h
|
||||
#define _dbug_h
|
||||
#ifdef DBUG_OFF
|
||||
#define NDEBUG /* for assert.h */
|
||||
#endif
|
||||
#include <assert.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
|
|
@ -313,6 +313,13 @@ C_MODE_END
|
|||
#include <crypt.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
A lot of our programs uses asserts, so better to always include it
|
||||
This also fixes a problem when people uses DBUG_ASSERT without including
|
||||
assert.h
|
||||
*/
|
||||
#include <assert.h>
|
||||
|
||||
/* Go around some bugs in different OS and compilers */
|
||||
#if defined(_HPUX_SOURCE) && defined(HAVE_SYS_STREAM_H)
|
||||
#include <sys/stream.h> /* HPUX 10.20 defines ulong here. UGLY !!! */
|
||||
|
@ -1020,22 +1027,22 @@ do { doubleget_union _tmp; \
|
|||
32))
|
||||
#define int2store(T,A) do { uint def_temp= (uint) (A) ;\
|
||||
*((uchar*) (T))= (uchar)(def_temp); \
|
||||
*((uchar*) (T+1))=(uchar)((def_temp >> 8)); \
|
||||
*((uchar*) (T)+1)=(uchar)((def_temp >> 8)); \
|
||||
} while(0)
|
||||
#define int3store(T,A) do { /*lint -save -e734 */\
|
||||
*((uchar*)(T))=(uchar) ((A));\
|
||||
*((uchar*) (T)+1)=(uchar) (((A) >> 8));\
|
||||
*((uchar*)(T)+2)=(uchar) (((A) >> 16)); \
|
||||
/*lint -restore */} while(0)
|
||||
#define int4store(T,A) do { *(T)=(char) ((A));\
|
||||
*((T)+1)=(char) (((A) >> 8));\
|
||||
*((T)+2)=(char) (((A) >> 16));\
|
||||
*((T)+3)=(char) (((A) >> 24)); } while(0)
|
||||
#define int5store(T,A) do { *(T)=((A));\
|
||||
*((T)+1)=(((A) >> 8));\
|
||||
*((T)+2)=(((A) >> 16));\
|
||||
*((T)+3)=(((A) >> 24)); \
|
||||
*((T)+4)=(((A) >> 32)); } while(0)
|
||||
#define int4store(T,A) do { *((char *)(T))=(char) ((A));\
|
||||
*(((char *)(T))+1)=(char) (((A) >> 8));\
|
||||
*(((char *)(T))+2)=(char) (((A) >> 16));\
|
||||
*(((char *)(T))+3)=(char) (((A) >> 24)); } while(0)
|
||||
#define int5store(T,A) do { *((char *)(T))=((A));\
|
||||
*(((char *)(T))+1)=(((A) >> 8));\
|
||||
*(((char *)(T))+2)=(((A) >> 16));\
|
||||
*(((char *)(T))+3)=(((A) >> 24)); \
|
||||
*(((char *)(T))+4)=(((A) >> 32)); } while(0)
|
||||
#define int8store(T,A) do { uint def_temp= (uint) (A), def_temp2= (uint) ((A) >> 32); \
|
||||
int4store((T),def_temp); \
|
||||
int4store((T+4),def_temp2); } while(0)
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||
|
||||
/* Error messages for MySQL clients */
|
||||
/* error messages for the daemon is in share/language/errmsg.sys */
|
||||
/* (Error messages for the daemon are in share/language/errmsg.sys) */
|
||||
|
||||
#include <my_global.h>
|
||||
#include <my_sys.h>
|
||||
|
@ -31,20 +31,20 @@ const char *client_errors[]=
|
|||
"Kann TCP/IP-Socket nicht anlegen (%d)",
|
||||
"Unbekannter MySQL Server Host (%-.100s) (%d)",
|
||||
"MySQL Server nicht vorhanden",
|
||||
"Protokolle ungleich. Server Version = % d Client Version = %d",
|
||||
"MySQL client got out of memory",
|
||||
"Protokolle ungleich; Server Version = %d, Client Version = %d",
|
||||
"MySQL client ran out of memory",
|
||||
"Wrong host info",
|
||||
"Localhost via UNIX socket",
|
||||
"%-.100s via TCP/IP",
|
||||
"Error in server handshake",
|
||||
"Lost connection to MySQL server during query",
|
||||
"Commands out of sync; You can't run this command now",
|
||||
"Commands out of sync; you can't run this command now",
|
||||
"Verbindung ueber Named Pipe; Host: %-.100s",
|
||||
"Kann nicht auf Named Pipe warten. Host: %-.64s pipe: %-.32s (%lu)",
|
||||
"Kann Named Pipe nicht oeffnen. Host: %-.64s pipe: %-.32s (%lu)",
|
||||
"Kann den Status der Named Pipe nicht setzen. Host: %-.64s pipe: %-.32s (%lu)",
|
||||
"Can't initialize character set %-.32s (path: %-.100s)",
|
||||
"Got packet bigger than 'max_allowed_packet'",
|
||||
"Got packet bigger than 'max_allowed_packet' bytes",
|
||||
"Embedded server",
|
||||
"Error on SHOW SLAVE STATUS:",
|
||||
"Error on SHOW SLAVE HOSTS:",
|
||||
|
@ -55,26 +55,26 @@ const char *client_errors[]=
|
|||
"This client library is licensed only for use with MySQL servers having '%s' license",
|
||||
"Invalid use of null pointer",
|
||||
"Statement not prepared",
|
||||
"Parameters data was not supplied",
|
||||
"No data supplied for parameters in prepared statement",
|
||||
"Data truncated",
|
||||
"No parameters exists in the statement",
|
||||
"No parameters exist in the statement",
|
||||
"Invalid parameter number",
|
||||
"Can't send long data for non string or binary data types (parameter: %d)",
|
||||
"Can't send long data for non-string/non-binary data types (parameter: %d)",
|
||||
"Using unsupported buffer type: %d (parameter: %d)",
|
||||
"Shared memory (%lu)",
|
||||
"Can't open shared memory. Request event don't create (%lu)",
|
||||
"Can't open shared memory. Answer event don't create (%lu)",
|
||||
"Can't open shared memory. File mapping don't create (%lu)",
|
||||
"Can't open shared memory. Map of memory don't create (%lu)",
|
||||
"Can't open shared memory. File mapping don't create for client (%lu)",
|
||||
"Can't open shared memory. Map of memory don't create for client (%lu)",
|
||||
"Can't open shared memory. %s event don't create for client (%lu)",
|
||||
"Can't open shared memory. Server abandoded and don't sent the answer event (%lu)",
|
||||
"Can't open shared memory. Can't send the request event to server (%lu)",
|
||||
"Can't open shared memory; client could not create request event (%lu)",
|
||||
"Can't open shared memory; no answer event received from server (%lu)",
|
||||
"Can't open shared memory; server could not allocate file mapping (%lu)",
|
||||
"Can't open shared memory; server could not get pointer to file mapping (%lu)",
|
||||
"Can't open shared memory; client could not allocate file mapping (%lu)",
|
||||
"Can't open shared memory; client could not get pointer to file mapping (%lu)",
|
||||
"Can't open shared memory; client could not create %s event (%lu)",
|
||||
"Can't open shared memory; no answer from server (%lu)",
|
||||
"Can't open shared memory; cannot send request event to server (%lu)",
|
||||
"Wrong or unknown protocol",
|
||||
"Invalid connection handle",
|
||||
"Connection using old (pre 4.1.1) authentication protocol refused (client option 'secure_auth' enabled)",
|
||||
"Row retrieval was cancelled by mysql_stmt_close() call",
|
||||
"Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)",
|
||||
"Row retrieval was canceled by mysql_stmt_close() call",
|
||||
"Attempt to read column without prior row fetch"
|
||||
};
|
||||
|
||||
|
@ -90,20 +90,20 @@ const char *client_errors[]=
|
|||
"Não pode criar 'socket TCP/IP' (%d)",
|
||||
"'Host' servidor MySQL '%-.100s' (%d) desconhecido",
|
||||
"Servidor MySQL desapareceu",
|
||||
"Incompatibilidade de protocolos. Versão do Servidor: %d - Versão do Cliente: %d",
|
||||
"Incompatibilidade de protocolos; versão do servidor = %d, versão do cliente = %d",
|
||||
"Cliente do MySQL com falta de memória",
|
||||
"Informação inválida de 'host'",
|
||||
"Localhost via 'UNIX socket'",
|
||||
"%-.100s via 'TCP/IP'",
|
||||
"Erro na negociação de acesso ao servidor",
|
||||
"Conexão perdida com servidor MySQL durante 'query'",
|
||||
"Comandos fora de sincronismo. Você não pode executar este comando agora",
|
||||
"Comandos fora de sincronismo; você não pode executar este comando agora",
|
||||
"%-.100s via 'named pipe'",
|
||||
"Não pode esperar pelo 'named pipe' para o 'host' %-.64s - 'pipe' %-.32s (%lu)",
|
||||
"Não pode abrir 'named pipe' para o 'host' %-.64s - 'pipe' %-.32s (%lu)",
|
||||
"Não pode estabelecer o estado do 'named pipe' para o 'host' %-.64s - 'pipe' %-.32s (%lu)",
|
||||
"Não pode inicializar conjunto de caracteres %-.32s (caminho %-.100s)",
|
||||
"Obteve pacote maior do que 'max_allowed_packet'",
|
||||
"Obteve pacote maior do que 'max_allowed_packet' bytes",
|
||||
"Embedded server"
|
||||
"Error on SHOW SLAVE STATUS:",
|
||||
"Error on SHOW SLAVE HOSTS:",
|
||||
|
@ -114,26 +114,26 @@ const char *client_errors[]=
|
|||
"This client library is licensed only for use with MySQL servers having '%s' license",
|
||||
"Invalid use of null pointer",
|
||||
"Statement not prepared",
|
||||
"Parameters data was not supplied",
|
||||
"No data supplied for parameters in prepared statement",
|
||||
"Data truncated",
|
||||
"No parameters exists in the statement",
|
||||
"No parameters exist in the statement",
|
||||
"Invalid parameter number",
|
||||
"Can't send long data for non string or binary data types (parameter: %d)",
|
||||
"Can't send long data for non-string/non-binary data types (parameter: %d)",
|
||||
"Using unsupported buffer type: %d (parameter: %d)",
|
||||
"Shared memory (%lu)",
|
||||
"Can't open shared memory. Request event don't create (%lu)",
|
||||
"Can't open shared memory. Answer event don't create (%lu)",
|
||||
"Can't open shared memory. File mapping don't create (%lu)",
|
||||
"Can't open shared memory. Map of memory don't create (%lu)",
|
||||
"Can't open shared memory. File mapping don't create for client (%lu)",
|
||||
"Can't open shared memory. Map of memory don't create for client (%lu)",
|
||||
"Can't open shared memory. %s event don't create for client (%lu)",
|
||||
"Can't open shared memory. Server abandoded and don't sent the answer event (%lu)",
|
||||
"Can't open shared memory. Can't send the request event to server (%lu)",
|
||||
"Can't open shared memory; client could not create request event (%lu)",
|
||||
"Can't open shared memory; no answer event received from server (%lu)",
|
||||
"Can't open shared memory; server could not allocate file mapping (%lu)",
|
||||
"Can't open shared memory; server could not get pointer to file mapping (%lu)",
|
||||
"Can't open shared memory; client could not allocate file mapping (%lu)",
|
||||
"Can't open shared memory; client could not get pointer to file mapping (%lu)",
|
||||
"Can't open shared memory; client could not create %s event (%lu)",
|
||||
"Can't open shared memory; no answer from server (%lu)",
|
||||
"Can't open shared memory; cannot send request event to server (%lu)",
|
||||
"Wrong or unknown protocol",
|
||||
"Invalid connection handle",
|
||||
"Connection using old (pre 4.1.1) authentication protocol refused (client option 'secure_auth' enabled)",
|
||||
"Row retrieval was cancelled by mysql_stmt_close() call",
|
||||
"Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)",
|
||||
"Row retrieval was canceled by mysql_stmt_close() call",
|
||||
"Attempt to read column without prior row fetch"
|
||||
};
|
||||
|
||||
|
@ -145,22 +145,22 @@ const char *client_errors[]=
|
|||
"Can't connect to local MySQL server through socket '%-.100s' (%d)",
|
||||
"Can't connect to MySQL server on '%-.100s' (%d)",
|
||||
"Can't create TCP/IP socket (%d)",
|
||||
"Unknown MySQL Server Host '%-.100s' (%d)",
|
||||
"Unknown MySQL server host '%-.100s' (%d)",
|
||||
"MySQL server has gone away",
|
||||
"Protocol mismatch. Server Version = %d Client Version = %d",
|
||||
"MySQL client run out of memory",
|
||||
"Protocol mismatch; server version = %d, client version = %d",
|
||||
"MySQL client ran out of memory",
|
||||
"Wrong host info",
|
||||
"Localhost via UNIX socket",
|
||||
"%-.100s via TCP/IP",
|
||||
"Error in server handshake",
|
||||
"Lost connection to MySQL server during query",
|
||||
"Commands out of sync; You can't run this command now",
|
||||
"Commands out of sync; you can't run this command now",
|
||||
"%-.100s via named pipe",
|
||||
"Can't wait for named pipe to host: %-.64s pipe: %-.32s (%lu)",
|
||||
"Can't open named pipe to host: %-.64s pipe: %-.32s (%lu)",
|
||||
"Can't set state of named pipe to host: %-.64s pipe: %-.32s (%lu)",
|
||||
"Can't initialize character set %-.32s (path: %-.100s)",
|
||||
"Got packet bigger than 'max_allowed_packet'",
|
||||
"Got packet bigger than 'max_allowed_packet' bytes",
|
||||
"Embedded server",
|
||||
"Error on SHOW SLAVE STATUS:",
|
||||
"Error on SHOW SLAVE HOSTS:",
|
||||
|
@ -171,26 +171,26 @@ const char *client_errors[]=
|
|||
"This client library is licensed only for use with MySQL servers having '%s' license",
|
||||
"Invalid use of null pointer",
|
||||
"Statement not prepared",
|
||||
"Not all parameters data supplied",
|
||||
"No data supplied for parameters in prepared statement",
|
||||
"Data truncated",
|
||||
"No parameters exists in the statement",
|
||||
"No parameters exist in the statement",
|
||||
"Invalid parameter number",
|
||||
"Can't send long data for non string or binary data types (parameter: %d)",
|
||||
"Can't send long data for non-string/non-binary data types (parameter: %d)",
|
||||
"Using unsupported buffer type: %d (parameter: %d)",
|
||||
"Shared memory (%lu)",
|
||||
"Can't open shared memory. Request event don't create (%lu)",
|
||||
"Can't open shared memory. Answer event don't create (%lu)",
|
||||
"Can't open shared memory. File mapping don't create (%lu)",
|
||||
"Can't open shared memory. Map of memory don't create (%lu)",
|
||||
"Can't open shared memory. File mapping don't create for client (%lu)",
|
||||
"Can't open shared memory. Map of memory don't create for client (%lu)",
|
||||
"Can't open shared memory. %s event don't create for client (%lu)",
|
||||
"Can't open shared memory. Server abandoded and don't sent the answer event (%lu)",
|
||||
"Can't open shared memory. Can't send the request event to server (%lu)",
|
||||
"Can't open shared memory; client could not create request event (%lu)",
|
||||
"Can't open shared memory; no answer event received from server (%lu)",
|
||||
"Can't open shared memory; server could not allocate file mapping (%lu)",
|
||||
"Can't open shared memory; server could not get pointer to file mapping (%lu)",
|
||||
"Can't open shared memory; client could not allocate file mapping (%lu)",
|
||||
"Can't open shared memory; client could not get pointer to file mapping (%lu)",
|
||||
"Can't open shared memory; client could not create %s event (%lu)",
|
||||
"Can't open shared memory; no answer from server (%lu)",
|
||||
"Can't open shared memory; cannot send request event to server (%lu)",
|
||||
"Wrong or unknown protocol",
|
||||
"Invalid connection handle",
|
||||
"Connection using old (pre 4.1.1) authentication protocol refused (client option 'secure_auth' enabled)",
|
||||
"Row retrieval was cancelled by mysql_stmt_close() call",
|
||||
"Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)",
|
||||
"Row retrieval was canceled by mysql_stmt_close() call",
|
||||
"Attempt to read column without prior row fetch"
|
||||
};
|
||||
#endif
|
||||
|
|
|
@ -2522,7 +2522,7 @@ static int stmt_read_row_unbuffered(MYSQL_STMT *stmt, unsigned char **row)
|
|||
if (mysql->status != MYSQL_STATUS_GET_RESULT)
|
||||
{
|
||||
set_stmt_error(stmt, stmt->unbuffered_fetch_cancelled ?
|
||||
CR_FETCH_CANCELLED : CR_COMMANDS_OUT_OF_SYNC,
|
||||
CR_FETCH_CANCELED : CR_COMMANDS_OUT_OF_SYNC,
|
||||
unknown_sqlstate);
|
||||
goto error;
|
||||
}
|
||||
|
|
43
mysql-test/include/ps_create.inc
Normal file
43
mysql-test/include/ps_create.inc
Normal file
|
@ -0,0 +1,43 @@
|
|||
############### include/ps_create.inc ##################
|
||||
# #
|
||||
# drop + create the tables used in most PS test cases #
|
||||
# t/ps_*.test #
|
||||
# #
|
||||
########################################################
|
||||
|
||||
#
|
||||
# NOTE: PLEASE SEE ps_1general.test (bottom)
|
||||
# BEFORE ADDING NEW TABLES HERE !!!
|
||||
#
|
||||
# Please be aware, that this file will be sourced by several
|
||||
# test case files stored within the subdirectory 't'.
|
||||
# So every change here will affect several test cases.
|
||||
|
||||
#----------- Please insert your table definitions here ----------#
|
||||
|
||||
|
||||
#---- Please do not alter the following table definitions -------#
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1, t_many_col_types ;
|
||||
--enable_warnings
|
||||
|
||||
eval create table t1
|
||||
(
|
||||
a int, b varchar(30),
|
||||
primary key(a)
|
||||
) engine = $type ;
|
||||
|
||||
eval create table t_many_col_types
|
||||
(
|
||||
c1 tinyint, c2 smallint, c3 mediumint, c4 int,
|
||||
c5 integer, c6 bigint, c7 float, c8 double,
|
||||
c9 double precision, c10 real, c11 decimal(7, 4), c12 numeric(8, 4),
|
||||
c13 date, c14 datetime, c15 timestamp(14), c16 time,
|
||||
c17 year, c18 bit, c19 bool, c20 char,
|
||||
c21 char(10), c22 varchar(30), c23 tinyblob, c24 tinytext,
|
||||
c25 blob, c26 text, c27 mediumblob, c28 mediumtext,
|
||||
c29 longblob, c30 longtext, c31 enum('one', 'two', 'three'),
|
||||
c32 set('monday', 'tuesday', 'wednesday'),
|
||||
primary key(c1)
|
||||
) engine = $type ;
|
239
mysql-test/include/ps_modify.inc
Normal file
239
mysql-test/include/ps_modify.inc
Normal file
|
@ -0,0 +1,239 @@
|
|||
###################### ps_modify.inc #########################
|
||||
# #
|
||||
# Tests for prepared statements: INSERT/DELETE/UPDATE... #
|
||||
# #
|
||||
##############################################################
|
||||
|
||||
#
|
||||
# NOTE: PLEASE SEE ps_1general.test (bottom)
|
||||
# BEFORE ADDING NEW TEST CASES HERE !!!
|
||||
|
||||
#
|
||||
# Please be aware, that this file will be sourced by several test case files
|
||||
# stored within the subdirectory 't'. So every change here will affect
|
||||
# several test cases.
|
||||
#
|
||||
# Please do not modify the structure (DROP/ALTER..) of the tables
|
||||
# 't1' and 't_many_col_types'.
|
||||
#
|
||||
# But you are encouraged to use these two tables within your statements
|
||||
# whenever possible.
|
||||
# t1 - very simple table
|
||||
# t_many_col_types - table with nearly all available column types
|
||||
#
|
||||
# The structure and the content of these tables can be found in
|
||||
# include/ps_create.inc CREATE TABLE ...
|
||||
# include/ps_renew.inc DELETE all rows and INSERT some rows
|
||||
#
|
||||
# Both tables are managed by the same storage engine.
|
||||
# The type of the storage engine is stored in the variable '$type' .
|
||||
|
||||
|
||||
|
||||
#------------------- Please insert your test cases here -------------------#
|
||||
|
||||
|
||||
|
||||
#-------- Please be very carefull when editing behind this line ----------#
|
||||
|
||||
--disable_query_log
|
||||
select '------ delete tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
--source include/ps_renew.inc
|
||||
|
||||
## delete without parameter
|
||||
prepare stmt1 from 'delete from t1 where a=2' ;
|
||||
execute stmt1;
|
||||
select a,b from t1 where a=2;
|
||||
# delete with row not found
|
||||
execute stmt1;
|
||||
|
||||
## delete with one parameter in the where clause
|
||||
insert into t1 values(0,NULL);
|
||||
set @arg00=NULL;
|
||||
prepare stmt1 from 'delete from t1 where b=?' ;
|
||||
execute stmt1 using @arg00;
|
||||
select a,b from t1 where b is NULL ;
|
||||
set @arg00='one';
|
||||
execute stmt1 using @arg00;
|
||||
select a,b from t1 where b=@arg00;
|
||||
|
||||
## truncate a table
|
||||
--error 1295
|
||||
prepare stmt1 from 'truncate table t1' ;
|
||||
|
||||
|
||||
--disable_query_log
|
||||
select '------ update tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
--source include/ps_renew.inc
|
||||
|
||||
## update without parameter
|
||||
prepare stmt1 from 'update t1 set b=''a=two'' where a=2' ;
|
||||
execute stmt1;
|
||||
select a,b from t1 where a=2;
|
||||
# dummy update
|
||||
execute stmt1;
|
||||
select a,b from t1 where a=2;
|
||||
|
||||
## update with one parameter in the set clause
|
||||
set @arg00=NULL;
|
||||
prepare stmt1 from 'update t1 set b=? where a=2' ;
|
||||
execute stmt1 using @arg00;
|
||||
select a,b from t1 where a=2;
|
||||
set @arg00='two';
|
||||
execute stmt1 using @arg00;
|
||||
select a,b from t1 where a=2;
|
||||
|
||||
## update with one parameter in the where cause
|
||||
set @arg00=2;
|
||||
prepare stmt1 from 'update t1 set b=NULL where a=?' ;
|
||||
execute stmt1 using @arg00;
|
||||
select a,b from t1 where a=@arg00;
|
||||
update t1 set b='two' where a=@arg00;
|
||||
# row not found in update
|
||||
set @arg00=2000;
|
||||
execute stmt1 using @arg00;
|
||||
select a,b from t1 where a=@arg00;
|
||||
|
||||
## update on primary key column (two parameters)
|
||||
set @arg00=2;
|
||||
set @arg01=22;
|
||||
prepare stmt1 from 'update t1 set a=? where a=?' ;
|
||||
# dummy update
|
||||
execute stmt1 using @arg00, @arg00;
|
||||
select a,b from t1 where a=@arg00;
|
||||
execute stmt1 using @arg01, @arg00;
|
||||
select a,b from t1 where a=@arg01;
|
||||
execute stmt1 using @arg00, @arg01;
|
||||
select a,b from t1 where a=@arg00;
|
||||
set @arg00=NULL;
|
||||
set @arg01=2;
|
||||
execute stmt1 using @arg00, @arg01;
|
||||
select a,b from t1;
|
||||
set @arg00=0;
|
||||
execute stmt1 using @arg01, @arg00;
|
||||
select a,b from t1;
|
||||
|
||||
## update with subquery and several parameters
|
||||
set @arg00=23;
|
||||
set @arg01='two';
|
||||
set @arg02=2;
|
||||
set @arg03='two';
|
||||
set @arg04=2;
|
||||
--disable_warnings
|
||||
drop table if exists t2;
|
||||
--enable_warnings
|
||||
create table t2 as select a,b from t1 ;
|
||||
prepare stmt1 from 'update t1 set a=? where b=?
|
||||
and a in (select ? from t2
|
||||
where b = ? or a = ?)';
|
||||
execute stmt1 using @arg00, @arg01, @arg02, @arg03, @arg04 ;
|
||||
select a,b from t1 where a = @arg00 ;
|
||||
prepare stmt1 from 'update t1 set a=? where b=?
|
||||
and a not in (select ? from t2
|
||||
where b = ? or a = ?)';
|
||||
execute stmt1 using @arg04, @arg01, @arg02, @arg03, @arg00 ;
|
||||
select a,b from t1 ;
|
||||
drop table t2 ;
|
||||
|
||||
## update with parameters in limit
|
||||
set @arg00=1;
|
||||
prepare stmt1 from 'update t1 set b=''bla''
|
||||
where a=2
|
||||
limit 1';
|
||||
execute stmt1 ;
|
||||
select a,b from t1 where b = 'bla' ;
|
||||
# currently (May 2004, Version 4.1) it is impossible
|
||||
-- error 1064
|
||||
prepare stmt1 from 'update t1 set b=''bla''
|
||||
where a=2
|
||||
limit ?';
|
||||
|
||||
--disable_query_log
|
||||
select '------ insert tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
--source include/ps_renew.inc
|
||||
|
||||
## insert without parameter
|
||||
prepare stmt1 from 'insert into t1 values(5, ''five'' )';
|
||||
execute stmt1;
|
||||
select a,b from t1 where a = 5;
|
||||
|
||||
## insert with one parameter in values part
|
||||
set @arg00='six' ;
|
||||
prepare stmt1 from 'insert into t1 values(6, ? )';
|
||||
execute stmt1 using @arg00;
|
||||
select a,b from t1 where b = @arg00;
|
||||
# the second insert fails, because the first column is primary key
|
||||
--error 1062
|
||||
execute stmt1 using @arg00;
|
||||
set @arg00=NULL ;
|
||||
prepare stmt1 from 'insert into t1 values(0, ? )';
|
||||
execute stmt1 using @arg00;
|
||||
select a,b from t1 where b is NULL;
|
||||
|
||||
## insert with two parameter in values part
|
||||
set @arg00=8 ;
|
||||
set @arg01='eight' ;
|
||||
prepare stmt1 from 'insert into t1 values(?, ? )';
|
||||
execute stmt1 using @arg00, @arg01 ;
|
||||
select a,b from t1 where b = @arg01;
|
||||
|
||||
## insert with two rows in values part
|
||||
set @arg00=81 ;
|
||||
set @arg01='8-1' ;
|
||||
set @arg02=82 ;
|
||||
set @arg03='8-2' ;
|
||||
prepare stmt1 from 'insert into t1 values(?,?),(?,?)';
|
||||
execute stmt1 using @arg00, @arg01, @arg02, @arg03 ;
|
||||
select a,b from t1 where a in (@arg00,@arg02) ;
|
||||
|
||||
## insert with two parameter in the set part
|
||||
set @arg00=9 ;
|
||||
set @arg01='nine' ;
|
||||
prepare stmt1 from 'insert into t1 set a=?, b=? ';
|
||||
execute stmt1 using @arg00, @arg01 ;
|
||||
select a,b from t1 where a = @arg00 ;
|
||||
|
||||
## insert with parameters in the ON DUPLICATE KEY part
|
||||
set @arg00=6 ;
|
||||
set @arg01=1 ;
|
||||
prepare stmt1 from 'insert into t1 set a=?, b=''sechs''
|
||||
on duplicate key update a=a + ?, b=concat(b,''modified'') ';
|
||||
execute stmt1 using @arg00, @arg01;
|
||||
select * from t1;
|
||||
set @arg00=81 ;
|
||||
set @arg01=1 ;
|
||||
--error 1062
|
||||
execute stmt1 using @arg00, @arg01;
|
||||
|
||||
## many parameters
|
||||
set @1000=1000 ;
|
||||
set @x1000_2="x1000_2" ;
|
||||
set @x1000_3="x1000_3" ;
|
||||
|
||||
set @x1000="x1000" ;
|
||||
set @1100=1100 ;
|
||||
set @x1100="x1100" ;
|
||||
set @100=100 ;
|
||||
set @updated="updated" ;
|
||||
insert into t1 values(1000,'x1000_1') ;
|
||||
insert into t1 values(@1000,@x1000_2),(@1000,@x1000_3)
|
||||
on duplicate key update a = a + @100, b = concat(b,@updated) ;
|
||||
select a,b from t1 where a >= 1000 ;
|
||||
delete from t1 where a >= 1000 ;
|
||||
insert into t1 values(1000,'x1000_1') ;
|
||||
prepare stmt1 from ' insert into t1 values(?,?),(?,?)
|
||||
on duplicate key update a = a + ?, b = concat(b,?) ';
|
||||
execute stmt1 using @1000, @x1000_2, @1000, @x1000_3, @100, @updated ;
|
||||
select a,b from t1 where a >= 1000 ;
|
||||
delete from t1 where a >= 1000 ;
|
||||
insert into t1 values(1000,'x1000_1') ;
|
||||
execute stmt1 using @1000, @x1000_2, @1100, @x1000_3, @100, @updated ;
|
||||
select a,b from t1 where a >= 1000 ;
|
||||
delete from t1 where a >= 1000 ;
|
||||
|
||||
## replace
|
||||
--error 1295
|
||||
prepare stmt1 from ' replace into t1 (a,b) select 100, ''hundred'' ';
|
97
mysql-test/include/ps_modify1.inc
Normal file
97
mysql-test/include/ps_modify1.inc
Normal file
|
@ -0,0 +1,97 @@
|
|||
###################### ps_modify1.inc ########################
|
||||
# #
|
||||
# Tests for prepared statements: big INSERT .. SELECTs #
|
||||
# #
|
||||
##############################################################
|
||||
|
||||
#
|
||||
# NOTE: THESE TESTS CANNOT BE APPLIED TO TABLES OF TYPE MERGE.
|
||||
# Test which can be applied to MERGE tables should be stored in
|
||||
# include/ps_modify.inc .
|
||||
#
|
||||
|
||||
#
|
||||
# NOTE: PLEASE SEE ps_1general.test (bottom)
|
||||
# BEFORE ADDING NEW TEST CASES HERE !!!
|
||||
|
||||
#
|
||||
# Please be aware, that this file will be sourced by several test case files
|
||||
# stored within the subdirectory 't'. So every change here will affect
|
||||
# several test cases.
|
||||
#
|
||||
# Please do not modify the structure (DROP/ALTER..) of the tables
|
||||
# 't1' and 't_many_col_types'.
|
||||
#
|
||||
# But you are encouraged to use these two tables within your statements
|
||||
# (DELETE/UPDATE/...) whenever possible.
|
||||
# t1 - very simple table
|
||||
# t_many_col_types - table with nearly all available column types
|
||||
#
|
||||
# The structure and the content of these tables can be found in
|
||||
# include/ps_create.inc CREATE TABLE ...
|
||||
# include/ps_renew.inc DELETE all rows and INSERT some rows
|
||||
#
|
||||
# Both tables are managed by the same storage engine.
|
||||
# The type of the storage engine is stored in the variable '$type' .
|
||||
|
||||
|
||||
|
||||
#------------------- Please insert your test cases here -------------------#
|
||||
|
||||
|
||||
#-------- Please be very carefull when editing behind this line ----------#
|
||||
|
||||
## big insert select statements
|
||||
set @duplicate='duplicate ' ;
|
||||
set @1000=1000 ;
|
||||
set @5=5 ;
|
||||
select a,b from t1 where a < 5 ;
|
||||
--enable_info
|
||||
insert into t1 select a + @1000, concat(@duplicate,b) from t1
|
||||
where a < @5 ;
|
||||
--disable_info
|
||||
select a,b from t1 where a >= 1000 ;
|
||||
delete from t1 where a >= 1000 ;
|
||||
prepare stmt1 from ' insert into t1 select a + ?, concat(?,b) from t1
|
||||
where a < ? ' ;
|
||||
--enable_info
|
||||
execute stmt1 using @1000, @duplicate, @5;
|
||||
--disable_info
|
||||
select a,b from t1 where a >= 1000 ;
|
||||
delete from t1 where a >= 1000 ;
|
||||
|
||||
set @float=1.00;
|
||||
set @five='five' ;
|
||||
--disable_warnings
|
||||
drop table if exists t2;
|
||||
--enable_warnings
|
||||
create table t2 like t1 ;
|
||||
--enable_info
|
||||
insert into t2 (b,a)
|
||||
select @duplicate, sum(first.a) from t1 first, t1 second
|
||||
where first.a <> @5 and second.b = first.b
|
||||
and second.b <> @five
|
||||
group by second.b
|
||||
having sum(second.a) > @2
|
||||
union
|
||||
select b, a + @100 from t1
|
||||
where (a,b) in ( select sqrt(a+@1)+CAST(@float AS signed),b
|
||||
from t1);
|
||||
--disable_info
|
||||
select a,b from t2;
|
||||
delete from t2 ;
|
||||
prepare stmt1 from ' insert into t2 (b,a)
|
||||
select ?, sum(first.a)
|
||||
from t1 first, t1 second
|
||||
where first.a <> ? and second.b = first.b and second.b <> ?
|
||||
group by second.b
|
||||
having sum(second.a) > ?
|
||||
union
|
||||
select b, a + ? from t1
|
||||
where (a,b) in ( select sqrt(a+?)+CAST(? AS signed),b
|
||||
from t1 ) ' ;
|
||||
--enable_info
|
||||
execute stmt1 using @duplicate, @5, @five, @2, @100, @1, @float ;
|
||||
--disable_info
|
||||
select a,b from t2;
|
||||
drop table t2;
|
616
mysql-test/include/ps_query.inc
Normal file
616
mysql-test/include/ps_query.inc
Normal file
|
@ -0,0 +1,616 @@
|
|||
####################### ps_query.inc #########################
|
||||
# #
|
||||
# Tests for prepared statements: SELECTs #
|
||||
# #
|
||||
##############################################################
|
||||
|
||||
#
|
||||
# NOTE: PLEASE SEE ps_1general.test (bottom)
|
||||
# BEFORE ADDING NEW TEST CASES HERE !!!
|
||||
|
||||
#
|
||||
# Please be aware, that this file will be sourced by several test case files
|
||||
# stored within the subdirectory 't'. So every change here will affect
|
||||
# several test cases.
|
||||
#
|
||||
# Please do not modify (INSERT/UPDATE/DELETE) the content or the
|
||||
# structure (DROP/ALTER..) of the tables
|
||||
# 't1' and 't_many_col_types'.
|
||||
# Such tests should be done in include/ps_modify.inc .
|
||||
#
|
||||
# But you are encouraged to use these two tables within your SELECT statements
|
||||
# whenever possible.
|
||||
# t1 - very simple table
|
||||
# t_many_col_types - table with nearly all available column types
|
||||
#
|
||||
# The structure and the content of these tables can be found in
|
||||
# include/ps_create.inc CREATE TABLE ...
|
||||
# include/ps_renew.inc DELETE all rows and INSERT some rows
|
||||
#
|
||||
# Both tables are managed by the same storage engine.
|
||||
# The type of the storage engine is stored in the variable '$type' .
|
||||
|
||||
|
||||
|
||||
#------------------- Please insert your test cases here -------------------#
|
||||
|
||||
|
||||
|
||||
#-------- Please be very carefull when editing behind this line ----------#
|
||||
|
||||
--disable_query_log
|
||||
select '------ simple select tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
|
||||
##### parameter used for keyword like SELECT (must fail)
|
||||
set @arg00='SELECT' ;
|
||||
# mysqltest gives no output for the next statement, Why ??
|
||||
--error 1064
|
||||
@arg00 a from t1 where a=1;
|
||||
--error 1064
|
||||
prepare stmt1 from ' ? a from t1 where a=1 ';
|
||||
|
||||
##### parameter in select column list
|
||||
## parameter is not NULL
|
||||
set @arg00=1 ;
|
||||
select @arg00, b from t1 where a=1 ;
|
||||
prepare stmt1 from ' select ?, b from t1 where a=1 ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
set @arg00='lion' ;
|
||||
select @arg00, b from t1 where a=1 ;
|
||||
prepare stmt1 from ' select ?, b from t1 where a=1 ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
## parameter is NULL
|
||||
set @arg00=NULL ;
|
||||
select @arg00, b from t1 where a=1 ;
|
||||
prepare stmt1 from ' select ?, b from t1 where a=1 ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
## parameter within an expression
|
||||
set @arg00=1 ;
|
||||
select b, a - @arg00 from t1 where a=1 ;
|
||||
prepare stmt1 from ' select b, a - ? from t1 where a=1 ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
## parameter is within a function
|
||||
# variations on 'substr'
|
||||
set @arg00='MySQL' ;
|
||||
select substr(@arg00,1,2) from t1 where a=1 ;
|
||||
prepare stmt1 from ' select substr(?,1,2) from t1 where a=1 ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
set @arg00=3 ;
|
||||
select substr('MySQL',@arg00,5) from t1 where a=1 ;
|
||||
prepare stmt1 from ' select substr(''MySQL'',?,5) from t1 where a=1 ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
select substr('MySQL',1,@arg00) from t1 where a=1 ;
|
||||
prepare stmt1 from ' select substr(''MySQL'',1,?) from t1 where a=1 ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
# variations on 'concat'
|
||||
set @arg00='MySQL' ;
|
||||
select a , concat(@arg00,b) from t1 ;
|
||||
# BUG#3796
|
||||
prepare stmt1 from ' select a , concat(?,b) from t1 ' ;
|
||||
execute stmt1 using @arg00;
|
||||
#
|
||||
select a , concat(b,@arg00) from t1 ;
|
||||
prepare stmt1 from ' select a , concat(b,?) from t1 ' ;
|
||||
execute stmt1 using @arg00;
|
||||
|
||||
# variations on 'group_concat'
|
||||
set @arg00='MySQL' ;
|
||||
select group_concat(@arg00,b) from t1
|
||||
group by 'a' ;
|
||||
prepare stmt1 from ' select group_concat(?,b) from t1
|
||||
group by ''a'' ' ;
|
||||
execute stmt1 using @arg00;
|
||||
#
|
||||
select group_concat(b,@arg00) from t1
|
||||
group by 'a' ;
|
||||
prepare stmt1 from ' select group_concat(b,?) from t1
|
||||
group by ''a'' ' ;
|
||||
execute stmt1 using @arg00;
|
||||
|
||||
## two parameters
|
||||
set @arg00='first' ;
|
||||
set @arg01='second' ;
|
||||
set @arg02=NULL;
|
||||
select @arg00, @arg01 from t1 where a=1 ;
|
||||
prepare stmt1 from ' select ?, ? from t1 where a=1 ' ;
|
||||
execute stmt1 using @arg00, @arg01 ;
|
||||
# NULL as first and/or last parameter
|
||||
execute stmt1 using @arg02, @arg01 ;
|
||||
execute stmt1 using @arg00, @arg02 ;
|
||||
execute stmt1 using @arg02, @arg02 ;
|
||||
# case derived from client_test.c: test_ps_conj_select()
|
||||
# for BUG#3420: select returned all rows of the table
|
||||
--disable_warnings
|
||||
drop table if exists new_tab ;
|
||||
--enable_warnings
|
||||
create table new_tab (id1 int(11) not null default '0',
|
||||
value2 varchar(100), value1 varchar(100)) ;
|
||||
insert into new_tab values (1,'hh','hh'),(2,'hh','hh'),
|
||||
(1,'ii','ii'),(2,'ii','ii') ;
|
||||
prepare stmt1 from ' select id1,value1 from new_tab where id1=? or value1=? ' ;
|
||||
set @arg00=1 ;
|
||||
set @arg01='hh' ;
|
||||
execute stmt1 using @arg00, @arg01 ;
|
||||
drop table new_tab ;
|
||||
# case derived from client_test.c: test_bug1180()
|
||||
# for BUG#1180 optimized away part of WHERE clause
|
||||
--disable_warnings
|
||||
drop table if exists new_tab ;
|
||||
--enable_warnings
|
||||
create table new_tab(session_id char(9) not null) ;
|
||||
insert into new_tab values ('abc') ;
|
||||
prepare stmt1 from ' select * from new_tab
|
||||
where ?=''1111'' and session_id = ''abc'' ' ;
|
||||
set @arg00='abc' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
set @arg00='1111' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
set @arg00='abc' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
drop table new_tab ;
|
||||
|
||||
|
||||
##### parameter used for keyword FROM (must fail)
|
||||
set @arg00='FROM' ;
|
||||
--error 1064
|
||||
select a @arg00 t1 where a=1 ;
|
||||
--error 1064
|
||||
prepare stmt1 from ' select a ? t1 where a=1 ' ;
|
||||
##### parameter used for tablename (must fail)
|
||||
set @arg00='t1' ;
|
||||
--error 1064
|
||||
select a from @arg00 where a=1 ;
|
||||
--error 1064
|
||||
prepare stmt1 from ' select a from ? where a=1 ' ;
|
||||
##### parameter used for keyword WHERE tablename (must fail)
|
||||
set @arg00='WHERE' ;
|
||||
--error 1064
|
||||
select a from t1 @arg00 a=1 ;
|
||||
--error 1064
|
||||
prepare stmt1 from ' select a from t1 ? a=1 ' ;
|
||||
|
||||
##### parameter used in where clause
|
||||
# parameter is not NULL
|
||||
set @arg00=1 ;
|
||||
select a FROM t1 where a=@arg00 ;
|
||||
prepare stmt1 from ' select a FROM t1 where a=? ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
set @arg00=1000 ;
|
||||
# row not found
|
||||
execute stmt1 using @arg00 ;
|
||||
# parameter is NULL
|
||||
set @arg00=NULL ;
|
||||
select a FROM t1 where a=@arg00 ;
|
||||
prepare stmt1 from ' select a FROM t1 where a=? ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
# parameter is not NULL within a function
|
||||
set @arg00=4 ;
|
||||
select a FROM t1 where a=sqrt(@arg00) ;
|
||||
prepare stmt1 from ' select a FROM t1 where a=sqrt(?) ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
# parameter is NULL within a function
|
||||
set @arg00=NULL ;
|
||||
select a FROM t1 where a=sqrt(@arg00) ;
|
||||
prepare stmt1 from ' select a FROM t1 where a=sqrt(?) ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
# parameter in IN
|
||||
set @arg00=2 ;
|
||||
set @arg01=3 ;
|
||||
select a FROM t1 where a in (@arg00,@arg01);
|
||||
prepare stmt1 from ' select a FROM t1 where a in (?,?) ';
|
||||
execute stmt1 using @arg00, @arg01;
|
||||
# parameter in LIKE
|
||||
prepare stmt1 from ' select b FROM t1 where b like ? ';
|
||||
set @arg00='two' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
set @arg00='tw%' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
set @arg00='%wo' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
|
||||
##### parameter used for operator in WHERE clause (must fail)
|
||||
set @arg00='>' ;
|
||||
--error 1064
|
||||
select a FROM t1 where a @arg00 1 ;
|
||||
--error 1064
|
||||
prepare stmt1 from ' select a FROM t1 where a ? 1 ' ;
|
||||
|
||||
##### parameter used in group by clause
|
||||
set @arg00=1 ;
|
||||
select a,b FROM t1 where a is not NULL
|
||||
AND b is not NULL group by a - @arg00 ;
|
||||
prepare stmt1 from ' select a,b FROM t1 where a is not NULL
|
||||
AND b is not NULL group by a - ? ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
|
||||
##### parameter used in having clause
|
||||
set @arg00='two' ;
|
||||
select a,b FROM t1 where a is not NULL
|
||||
AND b is not NULL having b <> @arg00 ;
|
||||
prepare stmt1 from ' select a,b FROM t1 where a is not NULL
|
||||
AND b is not NULL having b <> ? ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
|
||||
##### parameter used in order clause
|
||||
set @arg00=1 ;
|
||||
select a,b FROM t1 where a is not NULL
|
||||
AND b is not NULL order by a - @arg00 ;
|
||||
prepare stmt1 from ' select a,b FROM t1 where a is not NULL
|
||||
AND b is not NULL order by a - ? ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
## What is the semantic of a single parameter (integer >0)
|
||||
# after order by? column number or constant
|
||||
set @arg00=2 ;
|
||||
select a,b from t1 order by 2 ;
|
||||
prepare stmt1 from ' select a,b from t1
|
||||
order by ? ';
|
||||
execute stmt1 using @arg00;
|
||||
|
||||
##### parameter used in limit clause
|
||||
set @arg00=1;
|
||||
prepare stmt1 from ' select a,b from t1
|
||||
limit 1 ';
|
||||
execute stmt1 ;
|
||||
# currently (May 2004, Version 4.1) it is impossible
|
||||
-- error 1064
|
||||
prepare stmt1 from ' select a,b from t1
|
||||
limit ? ';
|
||||
|
||||
##### parameter used in many places
|
||||
set @arg00='b' ;
|
||||
set @arg01=0 ;
|
||||
set @arg02=2 ;
|
||||
set @arg03=2 ;
|
||||
select sum(a), @arg00 from t1 where a > @arg01
|
||||
and b is not null group by substr(b,@arg02)
|
||||
having sum(a) <> @arg03 ;
|
||||
prepare stmt1 from ' select sum(a), ? from t1 where a > ?
|
||||
and b is not null group by substr(b,?)
|
||||
having sum(a) <> ? ';
|
||||
execute stmt1 using @arg00, @arg01, @arg02, @arg03;
|
||||
|
||||
|
||||
--disable_query_log
|
||||
select '------ join tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
|
||||
# no parameter
|
||||
select first.a as a1, second.a as a2
|
||||
from t1 first, t1 second
|
||||
where first.a = second.a ;
|
||||
prepare stmt1 from ' select first.a as a1, second.a as a2
|
||||
from t1 first, t1 second
|
||||
where first.a = second.a ';
|
||||
execute stmt1 ;
|
||||
|
||||
# some parameters
|
||||
set @arg00='ABC';
|
||||
set @arg01='two';
|
||||
set @arg02='one';
|
||||
select first.a, @arg00, second.a FROM t1 first, t1 second
|
||||
where @arg01 = first.b or first.a = second.a or second.b = @arg02;
|
||||
prepare stmt1 from ' select first.a, ?, second.a FROM t1 first, t1 second
|
||||
where ? = first.b or first.a = second.a or second.b = ? ';
|
||||
execute stmt1 using @arg00, @arg01, @arg02;
|
||||
|
||||
|
||||
|
||||
--disable_query_log
|
||||
select '------ subquery tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
|
||||
# no parameter
|
||||
prepare stmt1 from ' select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where b = ''two'') ';
|
||||
execute stmt1 ;
|
||||
|
||||
###### parameter in the outer part
|
||||
set @arg00='two' ;
|
||||
select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where b = 'two' ) and b=@arg00 ;
|
||||
prepare stmt1 from ' select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where b = ''two'') and b=? ';
|
||||
execute stmt1 using @arg00;
|
||||
###### parameter in the inner part
|
||||
set @arg00='two' ;
|
||||
# Bug#4000 (only BDB tables)
|
||||
select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where b = @arg00 ) and b='two' ;
|
||||
prepare stmt1 from ' select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where b = ? ) and b=''two'' ' ;
|
||||
execute stmt1 using @arg00;
|
||||
set @arg00=3 ;
|
||||
set @arg01='three' ;
|
||||
select a,b FROM t1 where (a,b) in (select 3, 'three');
|
||||
select a FROM t1 where (a,b) in (select @arg00,@arg01);
|
||||
prepare stmt1 from ' select a FROM t1 where (a,b) in (select ?, ?) ';
|
||||
execute stmt1 using @arg00, @arg01;
|
||||
|
||||
###### parameters in the both parts
|
||||
set @arg00=1 ;
|
||||
set @arg01='two' ;
|
||||
set @arg02=2 ;
|
||||
set @arg03='two' ;
|
||||
# Bug#4000 (only BDB tables)
|
||||
select a, @arg00, b FROM t1 outer_table where
|
||||
b=@arg01 and a = (select @arg02 from t1 where b = @arg03 ) ;
|
||||
prepare stmt1 from ' select a, ?, b FROM t1 outer_table where
|
||||
b=? and a = (select ? from t1 where b = ? ) ' ;
|
||||
execute stmt1 using @arg00, @arg01, @arg02, @arg03 ;
|
||||
|
||||
######## correlated subquery
|
||||
# no parameter
|
||||
prepare stmt1 from ' select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where b = outer_table.b ) ';
|
||||
# also Bug#4000 (only BDB tables) ??
|
||||
execute stmt1 ;
|
||||
|
||||
###### parameter in the outer part
|
||||
set @arg00='two' ;
|
||||
# Bug#4000 (only BDB tables)
|
||||
select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where b = outer_table.b ) and b=@arg00 ;
|
||||
prepare stmt1 from ' select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where b = outer_table.b) and b=? ';
|
||||
# also Bug#4000 (only BDB tables) ??
|
||||
execute stmt1 using @arg00;
|
||||
|
||||
###### parameter in the inner part
|
||||
set @arg00=2 ;
|
||||
select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where a = @arg00 and b = outer_table.b) and b='two' ;
|
||||
prepare stmt1 from ' select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where a = ? and b = outer_table.b) and b=''two'' ' ;
|
||||
execute stmt1 using @arg00;
|
||||
|
||||
set @arg00=2 ;
|
||||
select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where outer_table.a = @arg00 and a=2) and b='two' ;
|
||||
prepare stmt1 from ' select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where outer_table.a = ? and a=2) and b=''two'' ' ;
|
||||
execute stmt1 using @arg00;
|
||||
|
||||
###### parameters in the both parts
|
||||
set @arg00=1 ;
|
||||
set @arg01='two' ;
|
||||
set @arg02=2 ;
|
||||
set @arg03='two' ;
|
||||
# Bug#4000 (only BDB tables)
|
||||
select a, @arg00, b FROM t1 outer_table where
|
||||
b=@arg01 and a = (select @arg02 from t1 where outer_table.b = @arg03
|
||||
and outer_table.a=a ) ;
|
||||
prepare stmt1 from ' select a, ?, b FROM t1 outer_table where
|
||||
b=? and a = (select ? from t1 where outer_table.b = ?
|
||||
and outer_table.a=a ) ' ;
|
||||
# also Bug#4000 (only BDB tables) ??
|
||||
execute stmt1 using @arg00, @arg01, @arg02, @arg03 ;
|
||||
|
||||
###### subquery after from
|
||||
set @arg00=1 ;
|
||||
set @arg01=0 ;
|
||||
select a, @arg00
|
||||
from ( select a - @arg00 as a from t1 where a=@arg00 ) as t2
|
||||
where a=@arg01;
|
||||
prepare stmt1 from ' select a, ?
|
||||
from ( select a - ? as a from t1 where a=? ) as t2
|
||||
where a=? ';
|
||||
execute stmt1 using @arg00, @arg00, @arg00, @arg01 ;
|
||||
|
||||
###### heavy modified case derived from client_test.c: test_distinct()
|
||||
## no parameters
|
||||
--disable_warnings
|
||||
drop table if exists t2 ;
|
||||
--enable_warnings
|
||||
create table t2 as select * from t_many_col_types;
|
||||
#insert into t2 select * from t_many_col_types;
|
||||
set @stmt= ' SELECT
|
||||
(SELECT SUM(c1 + c12 + 0.0) FROM t2
|
||||
where (t_many_col_types.c2 - 0e-3) = t2.c2
|
||||
GROUP BY t_many_col_types.c15 LIMIT 1) as scalar_s,
|
||||
exists (select 1.0e+0 from t2
|
||||
where t2.c3 * 9.0000000000 = t_many_col_types.c4) as exists_s,
|
||||
c5 * 4 in (select c6 + 0.3e+1 from t2) as in_s,
|
||||
(c7 - 4, c8 - 4) in (select c9 + 4.0, c10 + 40e-1 from t2) as in_row_s
|
||||
FROM t_many_col_types,
|
||||
(select c25 x, c32 y from t2) tt WHERE x = c25 ' ;
|
||||
--enable_metadata
|
||||
prepare stmt1 from @stmt ;
|
||||
execute stmt1 ;
|
||||
--disable_metadata
|
||||
execute stmt1 ;
|
||||
set @stmt= concat('explain ',@stmt);
|
||||
--enable_metadata
|
||||
prepare stmt1 from @stmt ;
|
||||
execute stmt1 ;
|
||||
--disable_metadata
|
||||
execute stmt1 ;
|
||||
## many parameters
|
||||
set @stmt= ' SELECT
|
||||
(SELECT SUM(c1+c12+?) FROM t2 where (t_many_col_types.c2-?)=t2.c2
|
||||
GROUP BY t_many_col_types.c15 LIMIT 1) as scalar_s,
|
||||
exists (select ? from t2
|
||||
where t2.c3*?=t_many_col_types.c4) as exists_s,
|
||||
c5*? in (select c6+? from t2) as in_s,
|
||||
(c7-?, c8-?) in (select c9+?, c10+? from t2) as in_row_s
|
||||
FROM t_many_col_types,
|
||||
(select c25 x, c32 y from t2) tt WHERE x =c25 ' ;
|
||||
set @arg00= 0.0 ;
|
||||
set @arg01= 0e-3 ;
|
||||
set @arg02= 1.0e+0 ;
|
||||
set @arg03= 9.0000000000 ;
|
||||
set @arg04= 4 ;
|
||||
set @arg05= 0.3e+1 ;
|
||||
set @arg06= 4 ;
|
||||
set @arg07= 4 ;
|
||||
set @arg08= 4.0 ;
|
||||
set @arg09= 40e-1 ;
|
||||
--enable_metadata
|
||||
prepare stmt1 from @stmt ;
|
||||
execute stmt1 using @arg00, @arg01, @arg02, @arg03, @arg04, @arg05, @arg06,
|
||||
@arg07, @arg08, @arg09 ;
|
||||
--disable_metadata
|
||||
execute stmt1 using @arg00, @arg01, @arg02, @arg03, @arg04, @arg05, @arg06,
|
||||
@arg07, @arg08, @arg09 ;
|
||||
set @stmt= concat('explain ',@stmt);
|
||||
--enable_metadata
|
||||
prepare stmt1 from @stmt ;
|
||||
execute stmt1 using @arg00, @arg01, @arg02, @arg03, @arg04, @arg05, @arg06,
|
||||
@arg07, @arg08, @arg09 ;
|
||||
--disable_metadata
|
||||
execute stmt1 using @arg00, @arg01, @arg02, @arg03, @arg04, @arg05, @arg06,
|
||||
@arg07, @arg08, @arg09 ;
|
||||
drop table t2 ;
|
||||
|
||||
|
||||
--disable_query_log
|
||||
select '------ union tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
|
||||
# no parameter
|
||||
prepare stmt1 from ' select a FROM t1 where a=1
|
||||
union distinct
|
||||
select a FROM t1 where a=1 ';
|
||||
execute stmt1 ;
|
||||
# Bug#3577: the second execute crashes mysqld
|
||||
execute stmt1 ;
|
||||
prepare stmt1 from ' select a FROM t1 where a=1
|
||||
union all
|
||||
select a FROM t1 where a=1 ';
|
||||
execute stmt1 ;
|
||||
|
||||
##### everything in the first table
|
||||
# one parameter as constant in the first table
|
||||
set @arg00=1 ;
|
||||
select @arg00 FROM t1 where a=1
|
||||
union distinct
|
||||
select 1 FROM t1 where a=1;
|
||||
prepare stmt1 from ' select ? FROM t1 where a=1
|
||||
union distinct
|
||||
select 1 FROM t1 where a=1 ' ;
|
||||
execute stmt1 using @arg00;
|
||||
|
||||
##### everything in the second table
|
||||
# one parameter as constant
|
||||
set @arg00=1 ;
|
||||
select 1 FROM t1 where a=1
|
||||
union distinct
|
||||
select @arg00 FROM t1 where a=1;
|
||||
prepare stmt1 from ' select 1 FROM t1 where a=1
|
||||
union distinct
|
||||
select ? FROM t1 where a=1 ' ;
|
||||
execute stmt1 using @arg00;
|
||||
|
||||
# one parameter in every table
|
||||
set @arg00='a' ;
|
||||
select @arg00 FROM t1 where a=1
|
||||
union distinct
|
||||
select @arg00 FROM t1 where a=1;
|
||||
prepare stmt1 from ' select ? FROM t1 where a=1
|
||||
union distinct
|
||||
select ? FROM t1 where a=1 ';
|
||||
# BUG#3811 wrong result, prepared statement, union,
|
||||
# parameter in result column list
|
||||
execute stmt1 using @arg00, @arg00;
|
||||
prepare stmt1 from ' select ?
|
||||
union distinct
|
||||
select ? ';
|
||||
execute stmt1 using @arg00, @arg00;
|
||||
|
||||
# many parameters
|
||||
set @arg00='a' ;
|
||||
set @arg01=1 ;
|
||||
set @arg02='a' ;
|
||||
set @arg03=2 ;
|
||||
select @arg00 FROM t1 where a=@arg01
|
||||
union distinct
|
||||
select @arg02 FROM t1 where a=@arg03;
|
||||
prepare stmt1 from ' select ? FROM t1 where a=?
|
||||
union distinct
|
||||
select ? FROM t1 where a=? ' ;
|
||||
execute stmt1 using @arg00, @arg01, @arg02, @arg03;
|
||||
|
||||
## increased complexity
|
||||
|
||||
set @arg00=1 ;
|
||||
# Bug#3686 the wrong server response was 1140 Mixing of GROUP columns ..
|
||||
prepare stmt1 from ' select sum(a) + 200, ? from t1
|
||||
union distinct
|
||||
select sum(a) + 200, 1 from t1
|
||||
group by b ' ;
|
||||
execute stmt1 using @arg00;
|
||||
|
||||
set @Oporto='Oporto' ;
|
||||
set @Lisboa='Lisboa' ;
|
||||
set @0=0 ;
|
||||
set @1=1 ;
|
||||
set @2=2 ;
|
||||
set @3=3 ;
|
||||
set @4=4 ;
|
||||
select @Oporto,@Lisboa,@0,@1,@2,@3,@4 ;
|
||||
|
||||
## union + group by
|
||||
select sum(a) + 200 as the_sum, @Oporto as the_town from t1
|
||||
group by b
|
||||
union distinct
|
||||
select sum(a) + 200, @Lisboa from t1
|
||||
group by b ;
|
||||
|
||||
prepare stmt1 from ' select sum(a) + 200 as the_sum, ? as the_town from t1
|
||||
group by b
|
||||
union distinct
|
||||
select sum(a) + 200, ? from t1
|
||||
group by b ' ;
|
||||
execute stmt1 using @Oporto, @Lisboa;
|
||||
|
||||
|
||||
## union + where + group by
|
||||
select sum(a) + 200 as the_sum, @Oporto as the_town from t1
|
||||
where a > @1
|
||||
group by b
|
||||
union distinct
|
||||
select sum(a) + 200, @Lisboa from t1
|
||||
where a > @2
|
||||
group by b ;
|
||||
|
||||
prepare stmt1 from ' select sum(a) + 200 as the_sum, ? as the_town from t1
|
||||
where a > ?
|
||||
group by b
|
||||
union distinct
|
||||
select sum(a) + 200, ? from t1
|
||||
where a > ?
|
||||
group by b ' ;
|
||||
execute stmt1 using @Oporto, @1, @Lisboa, @2;
|
||||
|
||||
## union + where + group by + having
|
||||
select sum(a) + 200 as the_sum, @Oporto as the_town from t1
|
||||
where a > @1
|
||||
group by b
|
||||
having avg(a) > @2
|
||||
union distinct
|
||||
select sum(a) + 200, @Lisboa from t1
|
||||
where a > @2
|
||||
group by b
|
||||
having avg(a) > @3;
|
||||
|
||||
prepare stmt1 from ' select sum(a) + 200 as the_sum, ? as the_town from t1
|
||||
where a > ?
|
||||
group by b
|
||||
having avg(a) > ?
|
||||
union distinct
|
||||
select sum(a) + 200, ? from t1
|
||||
where a > ?
|
||||
group by b
|
||||
having avg(a) > ? ';
|
||||
execute stmt1 using @Oporto, @1, @2, @Lisboa, @2, @3;
|
||||
|
||||
|
||||
--disable_query_log
|
||||
select '------ explain select tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
prepare stmt1 from ' select * from t_many_col_types ' ;
|
||||
--enable_metadata
|
||||
execute stmt1;
|
||||
--disable_metadata
|
||||
|
||||
|
34
mysql-test/include/ps_renew.inc
Normal file
34
mysql-test/include/ps_renew.inc
Normal file
|
@ -0,0 +1,34 @@
|
|||
################ include/ps_renew.inc #################
|
||||
# #
|
||||
# renew the content of t1 and t_many_col_types #
|
||||
# #
|
||||
#######################################################
|
||||
|
||||
# truncate could not be used, because it is not supported
|
||||
# in tables of type MERGE
|
||||
delete from t1 ;
|
||||
insert into t1 values (1,'one');
|
||||
insert into t1 values (2,'two');
|
||||
insert into t1 values (3,'three');
|
||||
insert into t1 values (4,'four');
|
||||
commit ;
|
||||
|
||||
delete from t_many_col_types ;
|
||||
insert into t_many_col_types
|
||||
set c1= 1, c2= 1, c3= 1, c4= 1, c5= 1, c6= 1, c7= 1, c8= 1, c9= 1,
|
||||
c10= 1, c11= 1, c12 = 1,
|
||||
c13= '2004-02-29', c14= '2004-02-29 11:11:11', c15= '2004-02-29 11:11:11',
|
||||
c16= '11:11:11', c17= '2004',
|
||||
c18= 1, c19=true, c20= 'a', c21= '123456789a',
|
||||
c22= '123456789a123456789b123456789c', c23= 'tinyblob', c24= 'tinytext',
|
||||
c25= 'blob', c26= 'text', c27= 'mediumblob', c28= 'mediumtext',
|
||||
c29= 'longblob', c30= 'longtext', c31='one', c32= 'monday';
|
||||
insert into t_many_col_types
|
||||
set c1= 9, c2= 9, c3= 9, c4= 9, c5= 9, c6= 9, c7= 9, c8= 9, c9= 9,
|
||||
c10= 9, c11= 9, c12 = 9,
|
||||
c13= '2004-02-29', c14= '2004-02-29 11:11:11', c15= '2004-02-29 11:11:11',
|
||||
c16= '11:11:11', c17= '2004',
|
||||
c18= 1, c19=false, c20= 'a', c21= '123456789a',
|
||||
c22= '123456789a123456789b123456789c', c23= 'tinyblob', c24= 'tinytext',
|
||||
c25= 'blob', c26= 'text', c27= 'mediumblob', c28= 'mediumtext',
|
||||
c29= 'longblob', c30= 'longtext', c31='two', c32= 'tuesday';
|
|
@ -95,7 +95,7 @@ if [ ! -x $exec_ndb ]; then
|
|||
echo "$exec_ndb missing"
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -x $exec_mgmtsrv ]; then
|
||||
if [ ! -x $exec_mgmtsrvr ]; then
|
||||
echo "$exec_mgmtsrvr missing"
|
||||
exit 1
|
||||
fi
|
||||
|
|
|
@ -1244,3 +1244,10 @@ a b
|
|||
3 three
|
||||
4 four
|
||||
drop table t1, t2;
|
||||
create table t1 (a int, b varchar(30), primary key(a)) engine = bdb;
|
||||
insert into t1 values (1,'one');
|
||||
commit;
|
||||
truncate t1;
|
||||
select * from t1;
|
||||
a b
|
||||
drop table t1;
|
||||
|
|
|
@ -6,5 +6,5 @@ drop table t1;
|
|||
flush tables;
|
||||
CREATE TABLE t1 (a int) ENGINE=INNODB;
|
||||
SELECT * from T1;
|
||||
ERROR HY000: Can't open file: 'T1.InnoDB'. (errno: 1)
|
||||
ERROR HY000: Can't open file: 'T1.InnoDB' (errno: 1)
|
||||
drop table t1;
|
||||
|
|
|
@ -175,10 +175,10 @@ insert into t1 values (19,4, 0);
|
|||
select * from t1 where b<=5 and c=0;
|
||||
a b c
|
||||
19 4 0
|
||||
select * from t1 where b=4 and c<=5;
|
||||
select * from t1 where b=4 and c<=5 order by a;
|
||||
a b c
|
||||
19 4 0
|
||||
17 4 4
|
||||
19 4 0
|
||||
select * from t1 where b<=4 and c<=5 order by a;
|
||||
a b c
|
||||
7 2 1
|
||||
|
|
745
mysql-test/r/ps_1general.result
Normal file
745
mysql-test/r/ps_1general.result
Normal file
|
@ -0,0 +1,745 @@
|
|||
use test;
|
||||
test_sequence
|
||||
------ basic tests ------
|
||||
drop table if exists t1, t_many_col_types ;
|
||||
create table t1
|
||||
(
|
||||
a int, b varchar(30),
|
||||
primary key(a)
|
||||
) engine = 'MYISAM' ;
|
||||
create table t_many_col_types
|
||||
(
|
||||
c1 tinyint, c2 smallint, c3 mediumint, c4 int,
|
||||
c5 integer, c6 bigint, c7 float, c8 double,
|
||||
c9 double precision, c10 real, c11 decimal(7, 4), c12 numeric(8, 4),
|
||||
c13 date, c14 datetime, c15 timestamp(14), c16 time,
|
||||
c17 year, c18 bit, c19 bool, c20 char,
|
||||
c21 char(10), c22 varchar(30), c23 tinyblob, c24 tinytext,
|
||||
c25 blob, c26 text, c27 mediumblob, c28 mediumtext,
|
||||
c29 longblob, c30 longtext, c31 enum('one', 'two', 'three'),
|
||||
c32 set('monday', 'tuesday', 'wednesday'),
|
||||
primary key(c1)
|
||||
) engine = 'MYISAM' ;
|
||||
delete from t1 ;
|
||||
insert into t1 values (1,'one');
|
||||
insert into t1 values (2,'two');
|
||||
insert into t1 values (3,'three');
|
||||
insert into t1 values (4,'four');
|
||||
commit ;
|
||||
delete from t_many_col_types ;
|
||||
insert into t_many_col_types
|
||||
set c1= 1, c2= 1, c3= 1, c4= 1, c5= 1, c6= 1, c7= 1, c8= 1, c9= 1,
|
||||
c10= 1, c11= 1, c12 = 1,
|
||||
c13= '2004-02-29', c14= '2004-02-29 11:11:11', c15= '2004-02-29 11:11:11',
|
||||
c16= '11:11:11', c17= '2004',
|
||||
c18= 1, c19=true, c20= 'a', c21= '123456789a',
|
||||
c22= '123456789a123456789b123456789c', c23= 'tinyblob', c24= 'tinytext',
|
||||
c25= 'blob', c26= 'text', c27= 'mediumblob', c28= 'mediumtext',
|
||||
c29= 'longblob', c30= 'longtext', c31='one', c32= 'monday';
|
||||
insert into t_many_col_types
|
||||
set c1= 9, c2= 9, c3= 9, c4= 9, c5= 9, c6= 9, c7= 9, c8= 9, c9= 9,
|
||||
c10= 9, c11= 9, c12 = 9,
|
||||
c13= '2004-02-29', c14= '2004-02-29 11:11:11', c15= '2004-02-29 11:11:11',
|
||||
c16= '11:11:11', c17= '2004',
|
||||
c18= 1, c19=false, c20= 'a', c21= '123456789a',
|
||||
c22= '123456789a123456789b123456789c', c23= 'tinyblob', c24= 'tinytext',
|
||||
c25= 'blob', c26= 'text', c27= 'mediumblob', c28= 'mediumtext',
|
||||
c29= 'longblob', c30= 'longtext', c31='two', c32= 'tuesday';
|
||||
PREPARE stmt FROM ' select * from t1 where a = ? ' ;
|
||||
SET @var= 2 ;
|
||||
EXECUTE stmt USING @var ;
|
||||
a b
|
||||
2 two
|
||||
select * from t1 where a = @var ;
|
||||
a b
|
||||
2 two
|
||||
DEALLOCATE PREPARE stmt ;
|
||||
prepare stmt1 from ' select 1 as my_col ' ;
|
||||
prepare stmt1 from ' select ? as my_col ' ;
|
||||
prepare ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
|
||||
prepare stmt1 ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
|
||||
prepare stmt1 from ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
|
||||
prepare_garbage stmt1 from ' select 1 ' ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'prepare_garbage stmt1 from ' select 1 '' at line 1
|
||||
prepare stmt1 from_garbage ' select 1 ' ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from_garbage ' select 1 '' at line 1
|
||||
prepare stmt1 from ' select_garbage 1 ' ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select_garbage 1' at line 1
|
||||
prepare from ' select 1 ' ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from ' select 1 '' at line 1
|
||||
prepare stmt1 ' select 1 ' ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' select 1 '' at line 1
|
||||
prepare ? from ' select ? as my_col ' ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? from ' select ? as my_col '' at line 1
|
||||
set @arg00='select 1 as my_col';
|
||||
prepare stmt1 from @arg00;
|
||||
set @arg00='';
|
||||
prepare stmt1 from @arg00;
|
||||
ERROR 42000: Query was empty
|
||||
set @arg00=NULL;
|
||||
prepare stmt1 from @arg01;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1
|
||||
prepare stmt1 from ' select * from t1 where a <= 2 ' ;
|
||||
prepare stmt1 from ' select * from t1 where x <= 2 ' ;
|
||||
ERROR 42S22: Unknown column 'x' in 'where clause'
|
||||
drop table if exists not_exist ;
|
||||
prepare stmt1 from ' select * from not_exist where a <= 2 ' ;
|
||||
ERROR 42S02: Table 'test.not_exist' doesn't exist
|
||||
prepare stmt1 from ' insert into t1 values(? ' ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
|
||||
prepare stmt1 from ' select a, b from t1
|
||||
where a=? and where ' ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where' at line 2
|
||||
execute never_prepared ;
|
||||
ERROR HY000: Unknown prepared statement handler (never_prepared) given to EXECUTE
|
||||
prepare stmt1 from ' select * from t1 where a <= 2 ' ;
|
||||
prepare stmt1 from ' select * from not_exist where a <= 2 ' ;
|
||||
ERROR 42S02: Table 'test.not_exist' doesn't exist
|
||||
execute stmt1 ;
|
||||
ERROR HY000: Unknown prepared statement handler (stmt1) given to EXECUTE
|
||||
create table to_be_dropped
|
||||
(
|
||||
a int primary key,
|
||||
b char(30),
|
||||
c int
|
||||
);
|
||||
insert into to_be_dropped( a, b, c) values( 1, 'original table', 1);
|
||||
prepare stmt2 from ' select * from to_be_dropped ' ;
|
||||
execute stmt2 ;
|
||||
a b c
|
||||
1 original table 1
|
||||
drop table to_be_dropped ;
|
||||
execute stmt2 ;
|
||||
ERROR 42S02: Table 'test.to_be_dropped' doesn't exist
|
||||
create table to_be_dropped
|
||||
(
|
||||
a int primary key,
|
||||
b char(30),
|
||||
c int
|
||||
);
|
||||
insert into to_be_dropped( a, b, c) values( 9, 'recreated table', 9);
|
||||
execute stmt2 ;
|
||||
a b c
|
||||
9 recreated table 9
|
||||
drop table to_be_dropped ;
|
||||
create table to_be_dropped
|
||||
(
|
||||
a int primary key,
|
||||
c int,
|
||||
b char(30)
|
||||
);
|
||||
insert into to_be_dropped( a, b, c) values( 9, 'recreated table', 9);
|
||||
execute stmt2 ;
|
||||
a b c
|
||||
9 recreated table 9
|
||||
drop table to_be_dropped ;
|
||||
create table to_be_dropped
|
||||
(
|
||||
a int primary key,
|
||||
b char(30),
|
||||
c int,
|
||||
d timestamp default current_timestamp
|
||||
);
|
||||
insert into to_be_dropped( a, b, c) values( 9, 'recreated table', 9);
|
||||
execute stmt2 ;
|
||||
a b c
|
||||
9 recreated table 9
|
||||
drop table to_be_dropped ;
|
||||
create table to_be_dropped
|
||||
(
|
||||
a int primary key,
|
||||
d timestamp default current_timestamp,
|
||||
b char(30),
|
||||
c int
|
||||
);
|
||||
insert into to_be_dropped( a, b, c) values( 9, 'recreated table', 9);
|
||||
execute stmt2 ;
|
||||
a b c
|
||||
9 recreated table 9
|
||||
drop table to_be_dropped ;
|
||||
create table to_be_dropped
|
||||
(
|
||||
a timestamp default '2004-02-29 18:01:59',
|
||||
b char(30),
|
||||
c int
|
||||
);
|
||||
insert into to_be_dropped( b, c) values( 'recreated table', 9);
|
||||
execute stmt2 ;
|
||||
a b c
|
||||
2004-02-29 18:01:59 recreated table 9
|
||||
drop table to_be_dropped ;
|
||||
create table to_be_dropped
|
||||
(
|
||||
f1 int primary key,
|
||||
f2 char(30),
|
||||
f3 int
|
||||
);
|
||||
insert into to_be_dropped( f1, f2, f3) values( 9, 'recreated table', 9);
|
||||
execute stmt2 ;
|
||||
ERROR 42S22: Unknown column 'to_be_dropped.a' in 'field list'
|
||||
drop table to_be_dropped ;
|
||||
prepare stmt1 from ' select * from t1 where a <= 2 ' ;
|
||||
execute stmt1 ;
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
set @arg00=1 ;
|
||||
set @arg01='two' ;
|
||||
prepare stmt1 from ' select * from t1 where a <= ? ' ;
|
||||
execute stmt1 using @arg00;
|
||||
a b
|
||||
1 one
|
||||
execute stmt1 ;
|
||||
ERROR HY000: Incorrect arguments to EXECUTE
|
||||
execute stmt1 using @arg00, @arg01;
|
||||
ERROR HY000: Incorrect arguments to EXECUTE
|
||||
execute stmt1 using @not_set;
|
||||
a b
|
||||
deallocate prepare never_prepared ;
|
||||
ERROR HY000: Unknown prepared statement handler (never_prepared) given to DEALLOCATE PREPARE
|
||||
prepare stmt1 from ' select * from t1 where a <= 2 ' ;
|
||||
prepare stmt1 from ' select * from not_exist where a <= 2 ' ;
|
||||
ERROR 42S02: Table 'test.not_exist' doesn't exist
|
||||
deallocate prepare stmt1;
|
||||
ERROR HY000: Unknown prepared statement handler (stmt1) given to DEALLOCATE PREPARE
|
||||
create table to_be_dropped
|
||||
(
|
||||
a int primary key,
|
||||
b char(10)
|
||||
);
|
||||
prepare stmt2 from ' select a,b from to_be_dropped where a <= 2 ' ;
|
||||
drop table to_be_dropped ;
|
||||
deallocate prepare stmt2;
|
||||
prepare stmt1 from ' select a from t1 where a <= 2 ' ;
|
||||
prepare stmt2 from ' select b from t1 where a <= 2 ' ;
|
||||
execute stmt2 ;
|
||||
b
|
||||
one
|
||||
two
|
||||
execute stmt1 ;
|
||||
a
|
||||
1
|
||||
2
|
||||
prepare stmt1 from ' select a from t1 where a <= 2 ' ;
|
||||
prepare stmt2 from ' select a from t1 where a <= 2 ' ;
|
||||
execute stmt2 ;
|
||||
a
|
||||
1
|
||||
2
|
||||
execute stmt1 ;
|
||||
a
|
||||
1
|
||||
2
|
||||
deallocate prepare stmt1 ;
|
||||
execute stmt2 ;
|
||||
a
|
||||
1
|
||||
2
|
||||
test_sequence
|
||||
------ show and misc tests ------
|
||||
drop table if exists t2;
|
||||
create table t2
|
||||
(
|
||||
a int primary key, b char(10)
|
||||
);
|
||||
prepare stmt4 from ' show databases ';
|
||||
execute stmt4;
|
||||
Database
|
||||
mysql
|
||||
test
|
||||
prepare stmt4 from ' show tables from test like ''t2%'' ';
|
||||
execute stmt4;
|
||||
Tables_in_test (t2%)
|
||||
t2
|
||||
prepare stmt4 from ' show columns from t2 from test like ''a%'' ';
|
||||
execute stmt4;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) PRI 0
|
||||
create index t2_idx on t2(b);
|
||||
prepare stmt4 from ' show index from t2 from test ';
|
||||
execute stmt4;
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
t2 0 PRIMARY 1 a A 0 NULL NULL BTREE
|
||||
t2 1 t2_idx 1 b A NULL NULL NULL YES BTREE
|
||||
prepare stmt4 from ' show table status from test like ''t2%'' ';
|
||||
execute stmt4;
|
||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||
t2 MyISAM 9 Fixed 0 0 0 64424509439 1024 0 NULL # # # latin1_swedish_ci NULL
|
||||
prepare stmt4 from ' show table status from test like ''t_many_col_types%'' ';
|
||||
execute stmt4;
|
||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||
t_many_col_types MyISAM 9 Dynamic 2 220 440 4294967295 2048 0 NULL # # # latin1_swedish_ci NULL
|
||||
prepare stmt4 from ' show status like ''Threads_running'' ';
|
||||
execute stmt4;
|
||||
Variable_name Value
|
||||
Threads_running 1
|
||||
prepare stmt4 from ' show variables like ''sql_mode'' ';
|
||||
execute stmt4;
|
||||
Variable_name Value
|
||||
sql_mode
|
||||
prepare stmt4 from ' show engine bdb logs ';
|
||||
execute stmt4;
|
||||
prepare stmt4 from ' show full processlist ';
|
||||
execute stmt4;
|
||||
Id User Host db Command Time State Info
|
||||
number root localhost test Query 0 NULL show full processlist
|
||||
prepare stmt4 from ' show grants for user ';
|
||||
prepare stmt4 from ' show create table t2 ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt4 from ' show master status ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt4 from ' show master logs ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt4 from ' show slave status ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt4 from ' show warnings limit 20 ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt4 from ' show errors limit 20 ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt4 from ' show storage engines ';
|
||||
execute stmt4;
|
||||
Engine Support Comment
|
||||
MyISAM YES/NO Default type from 3.23 with great performance
|
||||
HEAP YES/NO Hash based, stored in memory, useful for temporary tables
|
||||
MEMORY YES/NO Alias for HEAP
|
||||
MERGE YES/NO Collection of identical MyISAM tables
|
||||
MRG_MYISAM YES/NO Alias for MERGE
|
||||
ISAM YES/NO Obsolete table type; Is replaced by MyISAM
|
||||
MRG_ISAM YES/NO Obsolete table type; Is replaced by MRG_MYISAM
|
||||
InnoDB YES/NO Supports transactions, row-level locking and foreign keys
|
||||
INNOBASE YES/NO Alias for INNODB
|
||||
BDB YES/NO Supports transactions and page-level locking
|
||||
BERKELEYDB YES/NO Alias for BDB
|
||||
NDBCLUSTER YES/NO Clustered, fault tolerant memory based tables
|
||||
NDB YES/NO Alias for NDBCLUSTER
|
||||
EXAMPLE YES/NO Example storage engine
|
||||
ARCHIVE YES/NO Archive storage engine
|
||||
drop table if exists tx;
|
||||
prepare stmt1 from ' drop table if exists tx ' ;
|
||||
execute stmt1 ;
|
||||
Warnings:
|
||||
Note 1051 Unknown table 'tx'
|
||||
prepare stmt1 from ' drop table tx ' ;
|
||||
execute stmt1 ;
|
||||
ERROR 42S02: Unknown table 'tx'
|
||||
prepare stmt1 from ' prepare stmt2 from '' select 1 '' ' ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' select 1 '' at line 1
|
||||
prepare stmt1 from ' execute stmt2 ' ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'stmt2' at line 1
|
||||
prepare stmt1 from ' deallocate prepare never_prepared ' ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'never_prepared' at line 1
|
||||
prepare stmt4 from ' use test ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt3 from ' create database drop_me ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
create database drop_me ;
|
||||
prepare stmt3 from ' drop database drop_me ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
drop database drop_me ;
|
||||
prepare stmt3 from ' grant all on test.t1 to drop_user@localhost
|
||||
identified by ''looser'' ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
grant all on test.t1 to drop_user@localhost
|
||||
identified by 'looser' ;
|
||||
prepare stmt3 from ' revoke all privileges on test.t1 from
|
||||
drop_user@localhost ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
revoke all privileges on test.t1 from drop_user@localhost ;
|
||||
prepare stmt3 from ' drop user drop_user@localhost ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
drop user drop_user@localhost;
|
||||
prepare stmt3 from ' describe t2 ';
|
||||
execute stmt3;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) PRI 0
|
||||
b char(10) YES MUL NULL
|
||||
drop table t2 ;
|
||||
execute stmt3;
|
||||
ERROR 42S02: Table 'test.t2' doesn't exist
|
||||
prepare stmt3 from ' lock tables t1 read ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt3 from ' unlock tables ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt1 from ' load data infile ''data.txt''
|
||||
into table t1 fields terminated by ''\t'' ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt1 from ' select * into outfile ''data.txt'' from t1 ';
|
||||
execute stmt1 ;
|
||||
prepare stmt1 from ' optimize table t1 ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt1 from ' analyze table t1 ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt1 from ' checksum table t1 ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt1 from ' repair table t1 ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt1 from ' restore table t1 from ''data.txt'' ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt1 from ' handler t1 open ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt3 from ' commit ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt3 from ' rollback ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt4 from ' SET sql_mode=ansi ';
|
||||
execute stmt4;
|
||||
select 'a' || 'b' ;
|
||||
'a' || 'b'
|
||||
ab
|
||||
prepare stmt4 from ' SET sql_mode="" ';
|
||||
execute stmt4;
|
||||
select 'a' || 'b' ;
|
||||
'a' || 'b'
|
||||
0
|
||||
prepare stmt5 from ' select ''a'' || ''b'' ' ;
|
||||
execute stmt5;
|
||||
'a' || 'b'
|
||||
0
|
||||
SET sql_mode=ansi;
|
||||
execute stmt5;
|
||||
'a' || 'b'
|
||||
0
|
||||
SET sql_mode="";
|
||||
prepare stmt1 from ' flush local privileges ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt1 from ' reset query cache ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt1 from ' KILL 0 ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt1 from ' explain select a from t1 order by b ';
|
||||
execute stmt1;
|
||||
Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def id 8 3 1 N 32801 0 8
|
||||
def select_type 253 19 6 N 1 31 63
|
||||
def table 253 64 2 N 1 31 63
|
||||
def type 253 10 3 N 1 31 63
|
||||
def possible_keys 253 4096 0 Y 0 31 63
|
||||
def key 253 64 0 Y 0 31 63
|
||||
def key_len 8 3 0 Y 32800 0 8
|
||||
def ref 253 1024 0 Y 0 31 63
|
||||
def rows 8 10 1 N 32801 0 8
|
||||
def Extra 253 255 14 N 1 31 63
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using filesort
|
||||
SET @arg00=1 ;
|
||||
prepare stmt1 from ' explain select a from t1 where a > ? order by b ';
|
||||
execute stmt1 using @arg00;
|
||||
Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def id 8 3 1 N 32801 0 8
|
||||
def select_type 253 19 6 N 1 31 63
|
||||
def table 253 64 2 N 1 31 63
|
||||
def type 253 10 5 N 1 31 63
|
||||
def possible_keys 253 4096 7 Y 0 31 63
|
||||
def key 253 64 7 Y 0 31 63
|
||||
def key_len 8 3 1 Y 32800 0 8
|
||||
def ref 253 1024 0 Y 0 31 63
|
||||
def rows 8 10 1 N 32801 0 8
|
||||
def Extra 253 255 27 N 1 31 63
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 3 Using where; Using filesort
|
||||
test_sequence
|
||||
------ create/drop/alter/rename tests ------
|
||||
drop table if exists t2, t3;
|
||||
prepare stmt_drop from ' drop table if exists t2 ' ;
|
||||
execute stmt_drop;
|
||||
prepare stmt_create from ' create table t2 (
|
||||
a int primary key, b char(10)) ';
|
||||
execute stmt_create;
|
||||
prepare stmt3 from ' create table t3 like t2 ';
|
||||
execute stmt3;
|
||||
drop table t3;
|
||||
set @arg00=1;
|
||||
prepare stmt3 from ' create table t3 (m int) select ? as m ' ;
|
||||
execute stmt3 using @arg00;
|
||||
select m from t3;
|
||||
m
|
||||
1
|
||||
drop table t3;
|
||||
prepare stmt3 from ' create index t2_idx on t2(b) ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt3 from ' drop index t2_idx on t2 ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt3 from ' alter table t2 drop primary key ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
drop table if exists new_t2;
|
||||
prepare stmt3 from ' rename table t2 to new_t2 ';
|
||||
execute stmt3;
|
||||
execute stmt3;
|
||||
ERROR 42S01: Table 'new_t2' already exists
|
||||
rename table new_t2 to t2;
|
||||
drop table t2;
|
||||
test_sequence
|
||||
------ big statement tests ------
|
||||
select 'ABC' as my_const_col from t1 where
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 ;
|
||||
my_const_col
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
prepare stmt1 from ' select ''ABC'' as my_const_col FROM t1 WHERE
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 ' ;
|
||||
execute stmt1 ;
|
||||
my_const_col
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
execute stmt1 ;
|
||||
my_const_col
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
select 'ABC' as my_const_col FROM t1 WHERE
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' ;
|
||||
my_const_col
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
prepare stmt1 from ' select ''ABC'' as my_const_col FROM t1 WHERE
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' ';
|
||||
execute stmt1 ;
|
||||
my_const_col
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
execute stmt1 ;
|
||||
my_const_col
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
set @arg00= 1;
|
||||
set @arg01= 1;
|
||||
set @arg02= 1;
|
||||
set @arg03= 1;
|
||||
set @arg04= 1;
|
||||
set @arg05= 1;
|
||||
set @arg06= 1;
|
||||
set @arg07= 1;
|
||||
set @arg10= 1;
|
||||
set @arg11= 1;
|
||||
set @arg12= 1;
|
||||
set @arg13= 1;
|
||||
set @arg14= 1;
|
||||
set @arg15= 1;
|
||||
set @arg16= 1;
|
||||
set @arg17= 1;
|
||||
set @arg20= 1;
|
||||
set @arg21= 1;
|
||||
set @arg22= 1;
|
||||
set @arg23= 1;
|
||||
set @arg24= 1;
|
||||
set @arg25= 1;
|
||||
set @arg26= 1;
|
||||
set @arg27= 1;
|
||||
set @arg30= 1;
|
||||
set @arg31= 1;
|
||||
set @arg32= 1;
|
||||
set @arg33= 1;
|
||||
set @arg34= 1;
|
||||
set @arg35= 1;
|
||||
set @arg36= 1;
|
||||
set @arg37= 1;
|
||||
set @arg40= 1;
|
||||
set @arg41= 1;
|
||||
set @arg42= 1;
|
||||
set @arg43= 1;
|
||||
set @arg44= 1;
|
||||
set @arg45= 1;
|
||||
set @arg46= 1;
|
||||
set @arg47= 1;
|
||||
set @arg50= 1;
|
||||
set @arg51= 1;
|
||||
set @arg52= 1;
|
||||
set @arg53= 1;
|
||||
set @arg54= 1;
|
||||
set @arg55= 1;
|
||||
set @arg56= 1;
|
||||
set @arg57= 1;
|
||||
set @arg60= 1;
|
||||
set @arg61= 1;
|
||||
select 'ABC' as my_const_col FROM t1 WHERE
|
||||
@arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and
|
||||
@arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and
|
||||
@arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and
|
||||
@arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and
|
||||
@arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and
|
||||
@arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and
|
||||
@arg00=@arg00 ;
|
||||
my_const_col
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
prepare stmt1 from ' select ''ABC'' as my_const_col FROM t1 WHERE
|
||||
? = ? and ? = ? and ? = ? and ? = ? and
|
||||
? = ? and ? = ? and ? = ? and ? = ? and
|
||||
? = ? and ? = ? and ? = ? and ? = ? and
|
||||
? = ? and ? = ? and ? = ? and ? = ? and
|
||||
? = ? and ? = ? and ? = ? and ? = ? and
|
||||
? = ? and ? = ? and ? = ? and ? = ? and
|
||||
? = ? ' ;
|
||||
execute stmt1 using
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00;
|
||||
my_const_col
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
execute stmt1 using
|
||||
@arg00, @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07,
|
||||
@arg10, @arg11, @arg12, @arg13, @arg14, @arg15, @arg16, @arg17,
|
||||
@arg20, @arg21, @arg22, @arg23, @arg24, @arg25, @arg26, @arg27,
|
||||
@arg30, @arg31, @arg32, @arg33, @arg34, @arg35, @arg36, @arg37,
|
||||
@arg40, @arg41, @arg42, @arg43, @arg44, @arg45, @arg46, @arg47,
|
||||
@arg50, @arg51, @arg52, @arg53, @arg54, @arg55, @arg56, @arg57,
|
||||
@arg60, @arg61 ;
|
||||
my_const_col
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
drop table t1 ;
|
1269
mysql-test/r/ps_2myisam.result
Normal file
1269
mysql-test/r/ps_2myisam.result
Normal file
File diff suppressed because it is too large
Load diff
1269
mysql-test/r/ps_3innodb.result
Normal file
1269
mysql-test/r/ps_3innodb.result
Normal file
File diff suppressed because it is too large
Load diff
1270
mysql-test/r/ps_4heap.result
Normal file
1270
mysql-test/r/ps_4heap.result
Normal file
File diff suppressed because it is too large
Load diff
2410
mysql-test/r/ps_5merge.result
Normal file
2410
mysql-test/r/ps_5merge.result
Normal file
File diff suppressed because it is too large
Load diff
1269
mysql-test/r/ps_6bdb.result
Normal file
1269
mysql-test/r/ps_6bdb.result
Normal file
File diff suppressed because it is too large
Load diff
|
@ -9,7 +9,7 @@ drop database if exists test1;
|
|||
Warnings:
|
||||
Note 1008 Can't drop database 'test1'; database doesn't exist
|
||||
show tables from test1;
|
||||
ERROR HY000: Can't read dir of './test1/' (Errcode: 2)
|
||||
ERROR HY000: Can't read dir of './test1/' (Errcode: X)
|
||||
create table t1 (a int);
|
||||
drop table if exists t1;
|
||||
Warnings:
|
||||
|
|
|
@ -400,3 +400,10 @@ where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3';
|
|||
delete from mysql.db
|
||||
where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3';
|
||||
flush privileges;
|
||||
set names latin1;
|
||||
create database `ä`;
|
||||
create table `ä`.`ä` (a int) engine=heap;
|
||||
show table status from `ä` LIKE 'ä';
|
||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||
ä HEAP 9 Fixed 0 5 # # # 0 NULL NULL NULL NULL latin1_swedish_ci NULL
|
||||
drop database `ä`;
|
||||
|
|
|
@ -886,3 +886,14 @@ insert into t2 (a, b)
|
|||
select a, b from t1 where (a, b) in (select a, b from t1);
|
||||
select * from t2;
|
||||
drop table t1, t2;
|
||||
|
||||
#
|
||||
# Bug #4304: TRUNCATE <table of type BDB> , wrong result
|
||||
#
|
||||
|
||||
create table t1 (a int, b varchar(30), primary key(a)) engine = bdb;
|
||||
insert into t1 values (1,'one');
|
||||
commit;
|
||||
truncate t1;
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
|
|
@ -106,7 +106,7 @@ select * from t1 where b<=5 order by a;
|
|||
select * from t1 where b<=5 and c=0;
|
||||
insert into t1 values (19,4, 0);
|
||||
select * from t1 where b<=5 and c=0;
|
||||
select * from t1 where b=4 and c<=5;
|
||||
select * from t1 where b=4 and c<=5 order by a;
|
||||
select * from t1 where b<=4 and c<=5 order by a;
|
||||
select * from t1 where b<=5 and c=0 or b<=5 and c=2;
|
||||
drop table t1;
|
||||
|
|
831
mysql-test/t/ps_1general.test
Normal file
831
mysql-test/t/ps_1general.test
Normal file
|
@ -0,0 +1,831 @@
|
|||
###################### ps_general.test #######################
|
||||
# #
|
||||
# basic and miscellaneous tests for prepared statements #
|
||||
# #
|
||||
##############################################################
|
||||
|
||||
#
|
||||
# NOTE: PLEASE SEE THE DETAILED DESCRIPTION AT THE BOTTOM OF THIS FILE
|
||||
# BEFORE ADDING NEW TEST CASES HERE !!!
|
||||
|
||||
use test;
|
||||
--disable_query_log
|
||||
select '------ basic tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
|
||||
let $type= 'MYISAM' ;
|
||||
# create the tables (t1 and t_many_col_types) used in many tests
|
||||
--source include/ps_create.inc
|
||||
# insert data into these tables
|
||||
--source include/ps_renew.inc
|
||||
|
||||
|
||||
##### The basic functions ####
|
||||
|
||||
# 1. PREPARE stmt_name FROM <preparable statement>;
|
||||
# <preparable statement> ::=
|
||||
# 'literal_stmt' |
|
||||
# @variable_ref_stmt.
|
||||
# The statement may contain question marks as placeholders for parameters.
|
||||
#
|
||||
# Bind a statement name to a string containing a SQL statement and
|
||||
# send it to the server. The server will parse the statement and
|
||||
# reply with "Query Ok" or an error message.
|
||||
#
|
||||
PREPARE stmt FROM ' select * from t1 where a = ? ' ;
|
||||
|
||||
# 2. EXECUTE stmt_name [USING @var [, @var ]];
|
||||
# Current values of supplied variables are used as parameters.
|
||||
#
|
||||
# Send the server the order to execute the statement and supply values
|
||||
# for the input parameters needed.
|
||||
# If no error occurs the server reply will be identical to the reply for
|
||||
# the query used in PREPARE with question marks replaced with values of
|
||||
# the input variables.
|
||||
#
|
||||
SET @var= 2 ;
|
||||
EXECUTE stmt USING @var ;
|
||||
# The non prepared statement with the same server reply would be:
|
||||
select * from t1 where a = @var ;
|
||||
|
||||
# 3. DEALLOCATE PREPARE stmt_name;
|
||||
#
|
||||
# Send the server the order to drop the parse informations.
|
||||
# The server will reply with "Query Ok" or an error message.
|
||||
DEALLOCATE PREPARE stmt ;
|
||||
|
||||
## prepare
|
||||
# prepare without parameter
|
||||
prepare stmt1 from ' select 1 as my_col ' ;
|
||||
# prepare with parameter
|
||||
prepare stmt1 from ' select ? as my_col ' ;
|
||||
# prepare must fail (incomplete statements/wrong syntax)
|
||||
--error 1064
|
||||
prepare ;
|
||||
--error 1064
|
||||
prepare stmt1 ;
|
||||
--error 1064
|
||||
prepare stmt1 from ;
|
||||
--error 1064
|
||||
prepare_garbage stmt1 from ' select 1 ' ;
|
||||
--error 1064
|
||||
prepare stmt1 from_garbage ' select 1 ' ;
|
||||
--error 1064
|
||||
prepare stmt1 from ' select_garbage 1 ' ;
|
||||
--error 1064
|
||||
prepare from ' select 1 ' ;
|
||||
--error 1064
|
||||
prepare stmt1 ' select 1 ' ;
|
||||
--error 1064
|
||||
prepare ? from ' select ? as my_col ' ;
|
||||
# statement in variable
|
||||
set @arg00='select 1 as my_col';
|
||||
prepare stmt1 from @arg00;
|
||||
# prepare must fail (query variable is empty)
|
||||
set @arg00='';
|
||||
--error 1065
|
||||
prepare stmt1 from @arg00;
|
||||
set @arg00=NULL;
|
||||
# prepare must fail (query variable is NULL)
|
||||
--error 1064
|
||||
prepare stmt1 from @arg01;
|
||||
|
||||
prepare stmt1 from ' select * from t1 where a <= 2 ' ;
|
||||
# prepare must fail (column does not exist)
|
||||
--error 1054
|
||||
prepare stmt1 from ' select * from t1 where x <= 2 ' ;
|
||||
--disable_warnings
|
||||
drop table if exists not_exist ;
|
||||
--enable_warnings
|
||||
# prepare must fail (table does not exist)
|
||||
--error 1146
|
||||
prepare stmt1 from ' select * from not_exist where a <= 2 ' ;
|
||||
|
||||
# case derived from client_test.c: test_prepare_syntax()
|
||||
# prepare must fail (incomplete statement)
|
||||
--error 1064
|
||||
prepare stmt1 from ' insert into t1 values(? ' ;
|
||||
--error 1064
|
||||
prepare stmt1 from ' select a, b from t1
|
||||
where a=? and where ' ;
|
||||
|
||||
## execute
|
||||
# execute must fail (statement never_prepared never prepared)
|
||||
--error 1243
|
||||
execute never_prepared ;
|
||||
# execute must fail (prepare stmt1 just failed,
|
||||
# but there was a successful prepare of stmt1 before)
|
||||
prepare stmt1 from ' select * from t1 where a <= 2 ' ;
|
||||
--error 1146
|
||||
prepare stmt1 from ' select * from not_exist where a <= 2 ' ;
|
||||
--error 1243
|
||||
execute stmt1 ;
|
||||
|
||||
# drop the table between prepare and execute
|
||||
create table to_be_dropped
|
||||
(
|
||||
a int primary key,
|
||||
b char(30),
|
||||
c int
|
||||
);
|
||||
insert into to_be_dropped( a, b, c) values( 1, 'original table', 1);
|
||||
prepare stmt2 from ' select * from to_be_dropped ' ;
|
||||
execute stmt2 ;
|
||||
drop table to_be_dropped ;
|
||||
# execute must fail (table was dropped after prepare)
|
||||
--error 1146
|
||||
execute stmt2 ;
|
||||
# cases derived from client_test.c: test_select_prepare()
|
||||
# 1. drop + create table (same column names/types/order)
|
||||
# between prepare and execute
|
||||
create table to_be_dropped
|
||||
(
|
||||
a int primary key,
|
||||
b char(30),
|
||||
c int
|
||||
);
|
||||
insert into to_be_dropped( a, b, c) values( 9, 'recreated table', 9);
|
||||
execute stmt2 ;
|
||||
drop table to_be_dropped ;
|
||||
# 2. drop + create table (same column names/types but different order)
|
||||
# between prepare and execute
|
||||
create table to_be_dropped
|
||||
(
|
||||
a int primary key,
|
||||
c int,
|
||||
b char(30)
|
||||
);
|
||||
insert into to_be_dropped( a, b, c) values( 9, 'recreated table', 9);
|
||||
execute stmt2 ;
|
||||
drop table to_be_dropped ;
|
||||
# 3. drop + create table (same column names/types/order+extra column)
|
||||
# between prepare and execute
|
||||
create table to_be_dropped
|
||||
(
|
||||
a int primary key,
|
||||
b char(30),
|
||||
c int,
|
||||
d timestamp default current_timestamp
|
||||
);
|
||||
insert into to_be_dropped( a, b, c) values( 9, 'recreated table', 9);
|
||||
execute stmt2 ;
|
||||
drop table to_be_dropped ;
|
||||
# 4. drop + create table (same column names/types, different order +
|
||||
# additional column) between prepare and execute
|
||||
create table to_be_dropped
|
||||
(
|
||||
a int primary key,
|
||||
d timestamp default current_timestamp,
|
||||
b char(30),
|
||||
c int
|
||||
);
|
||||
insert into to_be_dropped( a, b, c) values( 9, 'recreated table', 9);
|
||||
execute stmt2 ;
|
||||
drop table to_be_dropped ;
|
||||
# 5. drop + create table (same column names/order, different types)
|
||||
# between prepare and execute
|
||||
create table to_be_dropped
|
||||
(
|
||||
a timestamp default '2004-02-29 18:01:59',
|
||||
b char(30),
|
||||
c int
|
||||
);
|
||||
insert into to_be_dropped( b, c) values( 'recreated table', 9);
|
||||
execute stmt2 ;
|
||||
drop table to_be_dropped ;
|
||||
# 6. drop + create table (same column types/order, different names)
|
||||
# between prepare and execute
|
||||
create table to_be_dropped
|
||||
(
|
||||
f1 int primary key,
|
||||
f2 char(30),
|
||||
f3 int
|
||||
);
|
||||
insert into to_be_dropped( f1, f2, f3) values( 9, 'recreated table', 9);
|
||||
--error 1054
|
||||
execute stmt2 ;
|
||||
drop table to_be_dropped ;
|
||||
|
||||
# execute without parameter
|
||||
prepare stmt1 from ' select * from t1 where a <= 2 ' ;
|
||||
execute stmt1 ;
|
||||
# execute with parameter
|
||||
set @arg00=1 ;
|
||||
set @arg01='two' ;
|
||||
prepare stmt1 from ' select * from t1 where a <= ? ' ;
|
||||
execute stmt1 using @arg00;
|
||||
# execute must fail (too small number of parameters)
|
||||
--error 1210
|
||||
execute stmt1 ;
|
||||
# execute must fail (too big number of parameters)
|
||||
--error 1210
|
||||
execute stmt1 using @arg00, @arg01;
|
||||
# execute must fail (parameter is not set)
|
||||
execute stmt1 using @not_set;
|
||||
|
||||
## deallocate
|
||||
# deallocate must fail (never_prepared was never prepared)
|
||||
--error 1243
|
||||
deallocate prepare never_prepared ;
|
||||
# deallocate must fail (prepare stmt1 just failed,
|
||||
# but there was a successful prepare before)
|
||||
prepare stmt1 from ' select * from t1 where a <= 2 ' ;
|
||||
--error 1146
|
||||
prepare stmt1 from ' select * from not_exist where a <= 2 ' ;
|
||||
--error 1243
|
||||
deallocate prepare stmt1;
|
||||
create table to_be_dropped
|
||||
(
|
||||
a int primary key,
|
||||
b char(10)
|
||||
);
|
||||
prepare stmt2 from ' select a,b from to_be_dropped where a <= 2 ' ;
|
||||
drop table to_be_dropped ;
|
||||
# deallocate prepared statement where the table was dropped after prepare
|
||||
deallocate prepare stmt2;
|
||||
|
||||
## parallel use of more than one prepared statement handlers
|
||||
# switch between different queries
|
||||
prepare stmt1 from ' select a from t1 where a <= 2 ' ;
|
||||
prepare stmt2 from ' select b from t1 where a <= 2 ' ;
|
||||
execute stmt2 ;
|
||||
execute stmt1 ;
|
||||
# switch between statement handlers of the same query
|
||||
prepare stmt1 from ' select a from t1 where a <= 2 ' ;
|
||||
prepare stmt2 from ' select a from t1 where a <= 2 ' ;
|
||||
execute stmt2 ;
|
||||
execute stmt1 ;
|
||||
deallocate prepare stmt1 ;
|
||||
# Will the deallocate of stmt1 with the same query affect stmt2 ?
|
||||
execute stmt2 ;
|
||||
|
||||
--disable_query_log
|
||||
select '------ show and misc tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t2;
|
||||
--enable_warnings
|
||||
create table t2
|
||||
(
|
||||
a int primary key, b char(10)
|
||||
);
|
||||
|
||||
###### SHOW COMMANDS
|
||||
prepare stmt4 from ' show databases ';
|
||||
execute stmt4;
|
||||
prepare stmt4 from ' show tables from test like ''t2%'' ';
|
||||
execute stmt4;
|
||||
prepare stmt4 from ' show columns from t2 from test like ''a%'' ';
|
||||
execute stmt4;
|
||||
create index t2_idx on t2(b);
|
||||
prepare stmt4 from ' show index from t2 from test ';
|
||||
execute stmt4;
|
||||
prepare stmt4 from ' show table status from test like ''t2%'' ';
|
||||
# egalize date and time values
|
||||
--replace_column 12 # 13 # 14 #
|
||||
# Bug#4288 : prepared statement 'show table status ..', wrong output on execute
|
||||
execute stmt4;
|
||||
# try the same with the big table
|
||||
prepare stmt4 from ' show table status from test like ''t_many_col_types%'' ';
|
||||
# egalize date and time values
|
||||
--replace_column 12 # 13 # 14 #
|
||||
# Bug#4288
|
||||
execute stmt4;
|
||||
prepare stmt4 from ' show status like ''Threads_running'' ';
|
||||
execute stmt4;
|
||||
prepare stmt4 from ' show variables like ''sql_mode'' ';
|
||||
execute stmt4;
|
||||
prepare stmt4 from ' show engine bdb logs ';
|
||||
# The output depends on the history (actions of the bdb engine).
|
||||
# That is the reason why, we switch the output here off.
|
||||
# (The real output will be tested in ps_6bdb.test)
|
||||
# --replace_result $MYSQL_TEST_DIR TEST_DIR
|
||||
--disable_result_log
|
||||
execute stmt4;
|
||||
--enable_result_log
|
||||
prepare stmt4 from ' show full processlist ';
|
||||
--replace_column 1 number
|
||||
execute stmt4;
|
||||
prepare stmt4 from ' show grants for user ';
|
||||
--error 1295
|
||||
prepare stmt4 from ' show create table t2 ';
|
||||
--error 1295
|
||||
prepare stmt4 from ' show master status ';
|
||||
--error 1295
|
||||
prepare stmt4 from ' show master logs ';
|
||||
--error 1295
|
||||
prepare stmt4 from ' show slave status ';
|
||||
--error 1295
|
||||
prepare stmt4 from ' show warnings limit 20 ';
|
||||
--error 1295
|
||||
prepare stmt4 from ' show errors limit 20 ';
|
||||
prepare stmt4 from ' show storage engines ';
|
||||
--replace_column 2 YES/NO
|
||||
execute stmt4;
|
||||
|
||||
###### MISC STUFF
|
||||
## get a warning and an error
|
||||
# cases derived from client_test.c: test_warnings(), test_errors()
|
||||
--disable_warnings
|
||||
drop table if exists tx;
|
||||
--enable_warnings
|
||||
prepare stmt1 from ' drop table if exists tx ' ;
|
||||
execute stmt1 ;
|
||||
prepare stmt1 from ' drop table tx ' ;
|
||||
--error 1051
|
||||
execute stmt1 ;
|
||||
|
||||
## nonsense like prepare of prepare,execute or deallocate
|
||||
--error 1064
|
||||
prepare stmt1 from ' prepare stmt2 from '' select 1 '' ' ;
|
||||
--error 1064
|
||||
prepare stmt1 from ' execute stmt2 ' ;
|
||||
--error 1064
|
||||
prepare stmt1 from ' deallocate prepare never_prepared ' ;
|
||||
|
||||
## switch the database connection
|
||||
--error 1295
|
||||
prepare stmt4 from ' use test ' ;
|
||||
|
||||
## create/drop database
|
||||
--error 1295
|
||||
prepare stmt3 from ' create database drop_me ';
|
||||
create database drop_me ;
|
||||
--error 1295
|
||||
prepare stmt3 from ' drop database drop_me ';
|
||||
drop database drop_me ;
|
||||
|
||||
## grant/revoke + drop user
|
||||
--error 1295
|
||||
prepare stmt3 from ' grant all on test.t1 to drop_user@localhost
|
||||
identified by ''looser'' ';
|
||||
grant all on test.t1 to drop_user@localhost
|
||||
identified by 'looser' ;
|
||||
--error 1295
|
||||
prepare stmt3 from ' revoke all privileges on test.t1 from
|
||||
drop_user@localhost ';
|
||||
revoke all privileges on test.t1 from drop_user@localhost ;
|
||||
--error 1295
|
||||
prepare stmt3 from ' drop user drop_user@localhost ';
|
||||
drop user drop_user@localhost;
|
||||
--error 1141
|
||||
|
||||
#### table related commands
|
||||
## describe
|
||||
prepare stmt3 from ' describe t2 ';
|
||||
execute stmt3;
|
||||
drop table t2 ;
|
||||
--error 1146
|
||||
execute stmt3;
|
||||
## lock/unlock
|
||||
--error 1295
|
||||
prepare stmt3 from ' lock tables t1 read ' ;
|
||||
--error 1295
|
||||
prepare stmt3 from ' unlock tables ' ;
|
||||
## Load/Unload table contents
|
||||
--error 1295
|
||||
prepare stmt1 from ' load data infile ''data.txt''
|
||||
into table t1 fields terminated by ''\t'' ';
|
||||
prepare stmt1 from ' select * into outfile ''data.txt'' from t1 ';
|
||||
execute stmt1 ;
|
||||
##
|
||||
--error 1295
|
||||
prepare stmt1 from ' optimize table t1 ' ;
|
||||
--error 1295
|
||||
prepare stmt1 from ' analyze table t1 ' ;
|
||||
--error 1295
|
||||
prepare stmt1 from ' checksum table t1 ' ;
|
||||
--error 1295
|
||||
prepare stmt1 from ' repair table t1 ' ;
|
||||
--error 1295
|
||||
prepare stmt1 from ' restore table t1 from ''data.txt'' ' ;
|
||||
## handler
|
||||
--error 1295
|
||||
prepare stmt1 from ' handler t1 open ';
|
||||
|
||||
|
||||
## commit/rollback
|
||||
--error 1295
|
||||
prepare stmt3 from ' commit ' ;
|
||||
--error 1295
|
||||
prepare stmt3 from ' rollback ' ;
|
||||
|
||||
|
||||
## switch the sql_mode
|
||||
prepare stmt4 from ' SET sql_mode=ansi ';
|
||||
execute stmt4;
|
||||
# check if the sql_mode is now ansi
|
||||
select 'a' || 'b' ;
|
||||
prepare stmt4 from ' SET sql_mode="" ';
|
||||
execute stmt4;
|
||||
# check if the sql_mode is not ansi
|
||||
select 'a' || 'b' ;
|
||||
# Will a switch of the sqlmode affect the execution of already prepared
|
||||
# statements ?
|
||||
prepare stmt5 from ' select ''a'' || ''b'' ' ;
|
||||
execute stmt5;
|
||||
SET sql_mode=ansi;
|
||||
execute stmt5;
|
||||
SET sql_mode="";
|
||||
|
||||
--error 1295
|
||||
prepare stmt1 from ' flush local privileges ' ;
|
||||
--error 1295
|
||||
prepare stmt1 from ' reset query cache ' ;
|
||||
--error 1295
|
||||
prepare stmt1 from ' KILL 0 ';
|
||||
|
||||
## simple explain
|
||||
# cases derived from client_test.c: test_explain_bug()
|
||||
prepare stmt1 from ' explain select a from t1 order by b ';
|
||||
--enable_metadata
|
||||
execute stmt1;
|
||||
--disable_metadata
|
||||
SET @arg00=1 ;
|
||||
prepare stmt1 from ' explain select a from t1 where a > ? order by b ';
|
||||
--enable_metadata
|
||||
execute stmt1 using @arg00;
|
||||
--disable_metadata
|
||||
|
||||
--disable_query_log
|
||||
select '------ create/drop/alter/rename tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t2, t3;
|
||||
--enable_warnings
|
||||
|
||||
prepare stmt_drop from ' drop table if exists t2 ' ;
|
||||
--disable_warnings
|
||||
execute stmt_drop;
|
||||
--enable_warnings
|
||||
|
||||
prepare stmt_create from ' create table t2 (
|
||||
a int primary key, b char(10)) ';
|
||||
execute stmt_create;
|
||||
prepare stmt3 from ' create table t3 like t2 ';
|
||||
execute stmt3;
|
||||
drop table t3;
|
||||
|
||||
set @arg00=1;
|
||||
prepare stmt3 from ' create table t3 (m int) select ? as m ' ;
|
||||
# Bug#4280 server hangs, prepared "create table .. as select ? .."
|
||||
execute stmt3 using @arg00;
|
||||
select m from t3;
|
||||
drop table t3;
|
||||
|
||||
--error 1295
|
||||
prepare stmt3 from ' create index t2_idx on t2(b) ';
|
||||
--error 1295
|
||||
prepare stmt3 from ' drop index t2_idx on t2 ' ;
|
||||
--error 1295
|
||||
prepare stmt3 from ' alter table t2 drop primary key ';
|
||||
--disable_warnings
|
||||
drop table if exists new_t2;
|
||||
--enable_warnings
|
||||
prepare stmt3 from ' rename table t2 to new_t2 ';
|
||||
execute stmt3;
|
||||
--error 1050
|
||||
execute stmt3;
|
||||
rename table new_t2 to t2;
|
||||
drop table t2;
|
||||
|
||||
--disable_query_log
|
||||
select '------ big statement tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
# Attention: The limits used are NOT derived from the manual
|
||||
# or other sources.
|
||||
|
||||
## many lines ( 50 )
|
||||
select 'ABC' as my_const_col from t1 where
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 ;
|
||||
prepare stmt1 from ' select ''ABC'' as my_const_col FROM t1 WHERE
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 ' ;
|
||||
execute stmt1 ;
|
||||
execute stmt1 ;
|
||||
|
||||
## many characters ( about 1400 )
|
||||
|
||||
select 'ABC' as my_const_col FROM t1 WHERE
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' ;
|
||||
prepare stmt1 from ' select ''ABC'' as my_const_col FROM t1 WHERE
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' ';
|
||||
execute stmt1 ;
|
||||
execute stmt1 ;
|
||||
|
||||
|
||||
## many parameters ( 50 )
|
||||
set @arg00= 1;
|
||||
set @arg01= 1;
|
||||
set @arg02= 1;
|
||||
set @arg03= 1;
|
||||
set @arg04= 1;
|
||||
set @arg05= 1;
|
||||
set @arg06= 1;
|
||||
set @arg07= 1;
|
||||
set @arg10= 1;
|
||||
set @arg11= 1;
|
||||
set @arg12= 1;
|
||||
set @arg13= 1;
|
||||
set @arg14= 1;
|
||||
set @arg15= 1;
|
||||
set @arg16= 1;
|
||||
set @arg17= 1;
|
||||
set @arg20= 1;
|
||||
set @arg21= 1;
|
||||
set @arg22= 1;
|
||||
set @arg23= 1;
|
||||
set @arg24= 1;
|
||||
set @arg25= 1;
|
||||
set @arg26= 1;
|
||||
set @arg27= 1;
|
||||
set @arg30= 1;
|
||||
set @arg31= 1;
|
||||
set @arg32= 1;
|
||||
set @arg33= 1;
|
||||
set @arg34= 1;
|
||||
set @arg35= 1;
|
||||
set @arg36= 1;
|
||||
set @arg37= 1;
|
||||
set @arg40= 1;
|
||||
set @arg41= 1;
|
||||
set @arg42= 1;
|
||||
set @arg43= 1;
|
||||
set @arg44= 1;
|
||||
set @arg45= 1;
|
||||
set @arg46= 1;
|
||||
set @arg47= 1;
|
||||
set @arg50= 1;
|
||||
set @arg51= 1;
|
||||
set @arg52= 1;
|
||||
set @arg53= 1;
|
||||
set @arg54= 1;
|
||||
set @arg55= 1;
|
||||
set @arg56= 1;
|
||||
set @arg57= 1;
|
||||
set @arg60= 1;
|
||||
set @arg61= 1;
|
||||
|
||||
select 'ABC' as my_const_col FROM t1 WHERE
|
||||
@arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and
|
||||
@arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and
|
||||
@arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and
|
||||
@arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and
|
||||
@arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and
|
||||
@arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and
|
||||
@arg00=@arg00 ;
|
||||
prepare stmt1 from ' select ''ABC'' as my_const_col FROM t1 WHERE
|
||||
? = ? and ? = ? and ? = ? and ? = ? and
|
||||
? = ? and ? = ? and ? = ? and ? = ? and
|
||||
? = ? and ? = ? and ? = ? and ? = ? and
|
||||
? = ? and ? = ? and ? = ? and ? = ? and
|
||||
? = ? and ? = ? and ? = ? and ? = ? and
|
||||
? = ? and ? = ? and ? = ? and ? = ? and
|
||||
? = ? ' ;
|
||||
execute stmt1 using
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00;
|
||||
execute stmt1 using
|
||||
@arg00, @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07,
|
||||
@arg10, @arg11, @arg12, @arg13, @arg14, @arg15, @arg16, @arg17,
|
||||
@arg20, @arg21, @arg22, @arg23, @arg24, @arg25, @arg26, @arg27,
|
||||
@arg30, @arg31, @arg32, @arg33, @arg34, @arg35, @arg36, @arg37,
|
||||
@arg40, @arg41, @arg42, @arg43, @arg44, @arg45, @arg46, @arg47,
|
||||
@arg50, @arg51, @arg52, @arg53, @arg54, @arg55, @arg56, @arg57,
|
||||
@arg60, @arg61 ;
|
||||
|
||||
drop table t1 ;
|
||||
|
||||
##### RULES OF THUMB TO PRESERVE THE SYSTEMATICS OF THE PS TEST CASES #####
|
||||
#
|
||||
# 0. You don't have the time to
|
||||
# - read and pay attention to these rules of thumb
|
||||
# - accept that QA may move your test case to a different place
|
||||
# (I will not change your code!!) .
|
||||
# Please append your test case to
|
||||
# t/ps.test
|
||||
#
|
||||
# 1. You have more time and want to get as much value from you test case as
|
||||
# possible. Please try to make the following decisions:
|
||||
#
|
||||
# Will the execution or result of the sub test case depend on the
|
||||
# properties of a storage engine ?
|
||||
#
|
||||
# NO --> alter t/ps_1general.test (Example: Command with syntax error)
|
||||
# If you need a table, please try to use
|
||||
# t1 - very simple table
|
||||
# t_many_col_types - table with nearly all available column types
|
||||
# whenever possible.
|
||||
#
|
||||
# The structure and the content of these tables can be found in
|
||||
# include/ps_create.inc CREATE TABLE ...
|
||||
# include/ps_renew.inc DELETE all rows and INSERT some rows
|
||||
#
|
||||
# Both tables are managed by the same storage engine.
|
||||
# The type of the storage engine is stored in the variable
|
||||
# '$type' . In ps_1general.test $type is set to 'MYISAM'.
|
||||
#
|
||||
# Please feel free to source ps_create.inc or ps_renew.inc
|
||||
# whenever you think it helps. But please restore the original
|
||||
# state of these tables after your tests, because the following
|
||||
# statements may depend on it.
|
||||
#
|
||||
# YES
|
||||
# |
|
||||
# |
|
||||
# Is it possible to apply the sub test case to all table types ?
|
||||
# YES --> alter include/ps_query.inc (for SELECTs)
|
||||
# include/ps_modify.inc (for INSERT/UPDATE/DELETE)
|
||||
# include/ps_modify1.inc (also for INSERT/UPDATE/DELETE,
|
||||
# but t/ps_5merge.test will not source that file)
|
||||
# Please try to find an appropriate place within the file.
|
||||
# It would be nice if we have some systematics in the
|
||||
# order of the sub test cases (if possible).
|
||||
#
|
||||
# Please be aware, that
|
||||
# include: ps_query.inc, ps_modify.inc, ps_modify1.inc
|
||||
# will be sourced by several test case files stored within the
|
||||
# subdirectory 't'. So every change here will affect several test
|
||||
# cases.
|
||||
#
|
||||
# NO
|
||||
# |
|
||||
# |
|
||||
# Append the sub test case to the appropriate
|
||||
# ps_<number><table type>.test .
|
||||
#
|
||||
# 2. The current structure of the PS tests
|
||||
#
|
||||
# t/ps_1general.test Check of basic PS features, SHOW commands and DDL
|
||||
# The tests should not depend on the table type.
|
||||
#
|
||||
# t/ps_2myisam Check of PS on tables of type MYISAM .
|
||||
# t/ps_3innodb Check of PS on tables of type InnoDB .
|
||||
# ...
|
||||
# t/ps_6bdb Check of PS on tables of type BDB .
|
||||
# All storage engine related tests use the variable $type to hold the
|
||||
# name of the storage engine.
|
||||
#
|
||||
# include/ps_query.inc test cases with SELECT/...
|
||||
# These test cases should not modify the content or
|
||||
# the structure (DROP/ALTER..) of the tables
|
||||
# 't1' and 't_many_col_types'.
|
||||
# include/ps_modify.inc test cases with INSERT/UPDATE/...
|
||||
# These test cases should not modify the structure
|
||||
# (DROP/ALTER..) of the tables
|
||||
# 't1' and 't_many_col_types'.
|
||||
# These two test sequences will be applied to all table types .
|
||||
#
|
||||
# include/ps_modify1.inc test cases with INSERT/UPDATE/...
|
||||
# This test sequences will be applied to all table types
|
||||
# except MERGE tables.
|
||||
#
|
||||
# include/ps_create.inc DROP and CREATE of the tables
|
||||
# 't1' and 't_many_col_types' .
|
||||
# include/ps_renew.inc DELETE all rows and INSERT some rows, that means
|
||||
# recreate the original content of these tables.
|
||||
# Please do not alter the commands concerning these two tables.
|
||||
#
|
||||
# Please feel free and encouraged to exploit the current code sharing
|
||||
# mechanism of the 'ps_<number><table type>' test cases. It is an convenient
|
||||
# way to check all storage engines.
|
||||
#
|
||||
# Thank you for reading these rules of thumb.
|
||||
#
|
||||
# Matthias
|
21
mysql-test/t/ps_2myisam.test
Normal file
21
mysql-test/t/ps_2myisam.test
Normal file
|
@ -0,0 +1,21 @@
|
|||
###############################################
|
||||
# #
|
||||
# Prepared Statements test on MYISAM tables #
|
||||
# #
|
||||
###############################################
|
||||
|
||||
#
|
||||
# NOTE: PLEASE SEE ps_1general.test (bottom)
|
||||
# BEFORE ADDING NEW TEST CASES HERE !!!
|
||||
|
||||
use test;
|
||||
|
||||
let $type= 'MYISAM' ;
|
||||
-- source include/ps_create.inc
|
||||
-- source include/ps_renew.inc
|
||||
|
||||
-- source include/ps_query.inc
|
||||
-- source include/ps_modify.inc
|
||||
-- source include/ps_modify1.inc
|
||||
|
||||
drop table t1, t_many_col_types;
|
21
mysql-test/t/ps_3innodb.test
Normal file
21
mysql-test/t/ps_3innodb.test
Normal file
|
@ -0,0 +1,21 @@
|
|||
###############################################
|
||||
# #
|
||||
# Prepared Statements test on InnoDB tables #
|
||||
# #
|
||||
###############################################
|
||||
|
||||
#
|
||||
# NOTE: PLEASE SEE ps_1general.test (bottom)
|
||||
# BEFORE ADDING NEW TEST CASES HERE !!!
|
||||
|
||||
use test;
|
||||
|
||||
let $type= 'InnoDB' ;
|
||||
-- source include/ps_create.inc
|
||||
-- source include/ps_renew.inc
|
||||
|
||||
-- source include/ps_query.inc
|
||||
-- source include/ps_modify.inc
|
||||
-- source include/ps_modify1.inc
|
||||
|
||||
drop table t1, t_many_col_types;
|
48
mysql-test/t/ps_4heap.test
Normal file
48
mysql-test/t/ps_4heap.test
Normal file
|
@ -0,0 +1,48 @@
|
|||
###############################################
|
||||
# #
|
||||
# Prepared Statements test on HEAP tables #
|
||||
# #
|
||||
###############################################
|
||||
|
||||
#
|
||||
# NOTE: PLEASE SEE ps_1general.test (bottom)
|
||||
# BEFORE ADDING NEW TEST CASES HERE !!!
|
||||
|
||||
use test;
|
||||
|
||||
let $type= 'HEAP' ;
|
||||
--disable_warnings
|
||||
drop table if exists t1, t_many_col_types ;
|
||||
--enable_warnings
|
||||
eval create table t1
|
||||
(
|
||||
a int, b varchar(30),
|
||||
primary key(a)
|
||||
) engine = $type ;
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t_many_col_types;
|
||||
--enable_warnings
|
||||
# The used table type doesn't support BLOB/TEXT columns.
|
||||
# (The server would send error 1163 .)
|
||||
# So we use char(100) instead.
|
||||
eval create table t_many_col_types
|
||||
(
|
||||
c1 tinyint, c2 smallint, c3 mediumint, c4 int,
|
||||
c5 integer, c6 bigint, c7 float, c8 double,
|
||||
c9 double precision, c10 real, c11 decimal(7, 4), c12 numeric(8, 4),
|
||||
c13 date, c14 datetime, c15 timestamp(14), c16 time,
|
||||
c17 year, c18 bit, c19 bool, c20 char,
|
||||
c21 char(10), c22 varchar(30), c23 char(100), c24 char(100),
|
||||
c25 char(100), c26 char(100), c27 char(100), c28 char(100),
|
||||
c29 char(100), c30 char(100), c31 enum('one', 'two', 'three'),
|
||||
c32 set('monday', 'tuesday', 'wednesday'),
|
||||
primary key(c1)
|
||||
) engine = $type ;
|
||||
-- source include/ps_renew.inc
|
||||
|
||||
-- source include/ps_query.inc
|
||||
-- source include/ps_modify.inc
|
||||
-- source include/ps_modify1.inc
|
||||
|
||||
drop table t1, t_many_col_types;
|
82
mysql-test/t/ps_5merge.test
Normal file
82
mysql-test/t/ps_5merge.test
Normal file
|
@ -0,0 +1,82 @@
|
|||
###############################################
|
||||
# #
|
||||
# Prepared Statements test on MERGE tables #
|
||||
# #
|
||||
###############################################
|
||||
|
||||
#
|
||||
# NOTE: PLEASE SEE ps_1general.test (bottom)
|
||||
# BEFORE ADDING NEW TEST CASES HERE !!!
|
||||
|
||||
use test;
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1, t1_1, t1_2,
|
||||
t_many_col_types, t_many_col_types_1, t_many_col_types_2;
|
||||
--enable_warnings
|
||||
let $type= 'MYISAM' ;
|
||||
-- source include/ps_create.inc
|
||||
rename table t1 to t1_1, t_many_col_types to t_many_col_types_1 ;
|
||||
-- source include/ps_create.inc
|
||||
rename table t1 to t1_2, t_many_col_types to t_many_col_types_2 ;
|
||||
|
||||
create table t1
|
||||
(
|
||||
a int, b varchar(30),
|
||||
primary key(a)
|
||||
) ENGINE = MERGE UNION=(t1_1,t1_2)
|
||||
INSERT_METHOD=FIRST;
|
||||
create table t_many_col_types
|
||||
(
|
||||
c1 tinyint, c2 smallint, c3 mediumint, c4 int,
|
||||
c5 integer, c6 bigint, c7 float, c8 double,
|
||||
c9 double precision, c10 real, c11 decimal(7, 4), c12 numeric(8, 4),
|
||||
c13 date, c14 datetime, c15 timestamp(14), c16 time,
|
||||
c17 year, c18 bit, c19 bool, c20 char,
|
||||
c21 char(10), c22 varchar(30), c23 tinyblob, c24 tinytext,
|
||||
c25 blob, c26 text, c27 mediumblob, c28 mediumtext,
|
||||
c29 longblob, c30 longtext, c31 enum('one', 'two', 'three'),
|
||||
c32 set('monday', 'tuesday', 'wednesday'),
|
||||
primary key(c1)
|
||||
) ENGINE = MERGE UNION=(t_many_col_types_1,t_many_col_types_2)
|
||||
INSERT_METHOD=FIRST;
|
||||
-- source include/ps_renew.inc
|
||||
|
||||
-- source include/ps_query.inc
|
||||
-- source include/ps_modify.inc
|
||||
# no test of ps_modify1, because insert .. select
|
||||
# is not allowed on MERGE tables
|
||||
# -- source include/ps_modify1.inc
|
||||
|
||||
# Lets's try the same tests with INSERT_METHOD=LAST
|
||||
drop table t1, t_many_col_types ;
|
||||
create table t1
|
||||
(
|
||||
a int, b varchar(30),
|
||||
primary key(a)
|
||||
) ENGINE = MERGE UNION=(t1_1,t1_2)
|
||||
INSERT_METHOD=LAST;
|
||||
create table t_many_col_types
|
||||
(
|
||||
c1 tinyint, c2 smallint, c3 mediumint, c4 int,
|
||||
c5 integer, c6 bigint, c7 float, c8 double,
|
||||
c9 double precision, c10 real, c11 decimal(7, 4), c12 numeric(8, 4),
|
||||
c13 date, c14 datetime, c15 timestamp(14), c16 time,
|
||||
c17 year, c18 bit, c19 bool, c20 char,
|
||||
c21 char(10), c22 varchar(30), c23 tinyblob, c24 tinytext,
|
||||
c25 blob, c26 text, c27 mediumblob, c28 mediumtext,
|
||||
c29 longblob, c30 longtext, c31 enum('one', 'two', 'three'),
|
||||
c32 set('monday', 'tuesday', 'wednesday'),
|
||||
primary key(c1)
|
||||
) ENGINE = MERGE UNION=(t_many_col_types_1,t_many_col_types_2)
|
||||
INSERT_METHOD=LAST;
|
||||
-- source include/ps_renew.inc
|
||||
|
||||
-- source include/ps_query.inc
|
||||
-- source include/ps_modify.inc
|
||||
# no test of ps_modify1, because insert .. select
|
||||
# is not allowed on MERGE tables
|
||||
# -- source include/ps_modify1.inc
|
||||
|
||||
drop table t1, t1_1, t1_2,
|
||||
t_many_col_types_1, t_many_col_types_2, t_many_col_types;
|
22
mysql-test/t/ps_6bdb.test
Normal file
22
mysql-test/t/ps_6bdb.test
Normal file
|
@ -0,0 +1,22 @@
|
|||
###############################################
|
||||
# #
|
||||
# Prepared Statements test on BDB tables #
|
||||
# #
|
||||
###############################################
|
||||
|
||||
#
|
||||
# NOTE: PLEASE SEE ps_1general.test (bottom)
|
||||
# BEFORE ADDING NEW TEST CASES HERE !!!
|
||||
|
||||
use test;
|
||||
|
||||
-- source include/have_bdb.inc
|
||||
let $type= 'BDB' ;
|
||||
-- source include/ps_create.inc
|
||||
-- source include/ps_renew.inc
|
||||
|
||||
-- source include/ps_query.inc
|
||||
-- source include/ps_modify.inc
|
||||
-- source include/ps_modify1.inc
|
||||
|
||||
drop table t1, t_many_col_types;
|
|
@ -6,7 +6,8 @@ connection master;
|
|||
drop database if exists test1;
|
||||
sync_slave_with_master;
|
||||
# can't read dir
|
||||
error 12;
|
||||
--replace_result "Errcode: 1" "Errcode: X" "Errcode: 2" "Errcode: X"
|
||||
--error 12
|
||||
show tables from test1;
|
||||
|
||||
connection slave;
|
||||
|
@ -15,7 +16,7 @@ connection master;
|
|||
drop table if exists t1;
|
||||
sync_slave_with_master;
|
||||
# table does not exist
|
||||
error 1146;
|
||||
--error 1146
|
||||
select * from t1;
|
||||
|
||||
connection master;
|
||||
|
|
|
@ -304,3 +304,11 @@ where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3';
|
|||
delete from mysql.db
|
||||
where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3';
|
||||
flush privileges;
|
||||
|
||||
#Bug #4374 SHOW TABLE STATUS FROM ignores collation_connection
|
||||
set names latin1;
|
||||
create database `ä`;
|
||||
create table `ä`.`ä` (a int) engine=heap;
|
||||
--replace_column 7 # 8 # 9 #
|
||||
show table status from `ä` LIKE 'ä';
|
||||
drop database `ä`;
|
||||
|
|
|
@ -24,8 +24,8 @@ public:
|
|||
ValueType m_type;
|
||||
union {
|
||||
Uint32 m_int;
|
||||
const char * m_string;
|
||||
Uint64 m_int64;
|
||||
const char * m_string;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -72,14 +72,14 @@ private:
|
|||
friend class ConstIterator;
|
||||
|
||||
bool getByPos(Uint32 pos, Entry *) const;
|
||||
Uint64 & get64(Uint32 index) const;
|
||||
char * & getString(Uint32 index) const;
|
||||
Uint64 * get64(Uint32 index) const;
|
||||
char ** getString(Uint32 index) const;
|
||||
|
||||
Uint32 m_size;
|
||||
Uint32 m_dataSize;
|
||||
Uint32 m_stringCount;
|
||||
Uint32 m_int64Count;
|
||||
|
||||
|
||||
Uint32 m_values[1];
|
||||
void * m_data[1];
|
||||
};
|
||||
|
|
|
@ -60,7 +60,7 @@ ConfigValues::ConfigValues(Uint32 sz, Uint32 dsz){
|
|||
|
||||
ConfigValues::~ConfigValues(){
|
||||
for(Uint32 i = 0; i<m_stringCount; i++){
|
||||
free(getString(i));
|
||||
free(* getString(i));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -87,10 +87,10 @@ ConfigValues::getByPos(Uint32 pos, Entry * result) const {
|
|||
result->m_int = val;
|
||||
break;
|
||||
case StringType:
|
||||
result->m_string = getString(val);
|
||||
result->m_string = * getString(val);
|
||||
break;
|
||||
case Int64Type:
|
||||
result->m_int64 = get64(val);
|
||||
result->m_int64 = * get64(val);
|
||||
break;
|
||||
case InvalidType:
|
||||
default:
|
||||
|
@ -102,18 +102,23 @@ ConfigValues::getByPos(Uint32 pos, Entry * result) const {
|
|||
return true;
|
||||
}
|
||||
|
||||
Uint64 &
|
||||
Uint64 *
|
||||
ConfigValues::get64(Uint32 index) const {
|
||||
assert(index < m_int64Count);
|
||||
Uint64 * ptr = (Uint64*)(&m_values[m_size << 1]);
|
||||
return ptr[index];
|
||||
const Uint32 * data = m_values + (m_size << 1);
|
||||
Uint64 * ptr = (Uint64*)data;
|
||||
ptr += index;
|
||||
return ptr;
|
||||
}
|
||||
|
||||
char * &
|
||||
char **
|
||||
ConfigValues::getString(Uint32 index) const {
|
||||
assert(index < m_stringCount);
|
||||
char ** ptr = (char**)(((char *)&(m_values[m_size << 1])) + m_dataSize);
|
||||
return ptr[-index];
|
||||
assert(index < m_stringCount);
|
||||
const Uint32 * data = m_values + (m_size << 1);
|
||||
char * ptr = (char*)data;
|
||||
ptr += m_dataSize;
|
||||
ptr -= (index * sizeof(char *));
|
||||
return (char**)ptr;
|
||||
}
|
||||
|
||||
bool
|
||||
|
@ -176,7 +181,7 @@ ConfigValues::Iterator::set(Uint32 key, Uint64 value){
|
|||
return false;
|
||||
}
|
||||
|
||||
m_cfg.get64(m_cfg.m_values[pos+1]) = value;
|
||||
* m_cfg.get64(m_cfg.m_values[pos+1]) = value;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -191,9 +196,9 @@ ConfigValues::Iterator::set(Uint32 key, const char * value){
|
|||
return false;
|
||||
}
|
||||
|
||||
char * & str = m_cfg.getString(m_cfg.m_values[pos+1]);
|
||||
free(str);
|
||||
str = strdup(value ? value : "");
|
||||
char ** str = m_cfg.getString(m_cfg.m_values[pos+1]);
|
||||
free(* str);
|
||||
* str = strdup(value ? value : "");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -457,7 +462,8 @@ ConfigValuesFactory::put(const ConfigValues::Entry & entry){
|
|||
case ConfigValues::StringType:{
|
||||
Uint32 index = m_cfg->m_stringCount++;
|
||||
m_cfg->m_values[pos+1] = index;
|
||||
m_cfg->getString(index) = strdup(entry.m_string ? entry.m_string : "");
|
||||
char ** ref = m_cfg->getString(index);
|
||||
* ref = strdup(entry.m_string ? entry.m_string : "");
|
||||
m_freeKeys--;
|
||||
m_freeData -= sizeof(char *);
|
||||
DEBUG printf("Putting at: %d(%d) (loop = %d) key: %d value(%d): %s\n",
|
||||
|
@ -470,7 +476,7 @@ ConfigValuesFactory::put(const ConfigValues::Entry & entry){
|
|||
case ConfigValues::Int64Type:{
|
||||
Uint32 index = m_cfg->m_int64Count++;
|
||||
m_cfg->m_values[pos+1] = index;
|
||||
m_cfg->get64(index) = entry.m_int64;
|
||||
* m_cfg->get64(index) = entry.m_int64;
|
||||
m_freeKeys--;
|
||||
m_freeData -= 8;
|
||||
DEBUG printf("Putting at: %d(%d) (loop = %d) key: %d value64(%d): %lld\n",
|
||||
|
@ -558,7 +564,7 @@ ConfigValues::getPackedSize() const {
|
|||
break;
|
||||
case StringType:
|
||||
size += 8; // key + len
|
||||
size += mod4(strlen(getString(m_values[i+1])) + 1);
|
||||
size += mod4(strlen(* getString(m_values[i+1])) + 1);
|
||||
break;
|
||||
case InvalidType:
|
||||
default:
|
||||
|
@ -587,7 +593,7 @@ ConfigValues::pack(void * _dst, Uint32 _len) const {
|
|||
* (Uint32*)dst = htonl(val); dst += 4;
|
||||
break;
|
||||
case Int64Type:{
|
||||
Uint64 i64 = get64(val);
|
||||
Uint64 i64 = * get64(val);
|
||||
Uint32 hi = (i64 >> 32);
|
||||
Uint32 lo = (i64 & 0xFFFFFFFF);
|
||||
* (Uint32*)dst = htonl(key); dst += 4;
|
||||
|
@ -596,7 +602,7 @@ ConfigValues::pack(void * _dst, Uint32 _len) const {
|
|||
}
|
||||
break;
|
||||
case StringType:{
|
||||
const char * str = getString(val);
|
||||
const char * str = * getString(val);
|
||||
Uint32 len = strlen(str) + 1;
|
||||
* (Uint32*)dst = htonl(key); dst += 4;
|
||||
* (Uint32*)dst = htonl(len); dst += 4;
|
||||
|
|
|
@ -63,7 +63,7 @@ Ndbfs::Ndbfs(const Configuration & conf) :
|
|||
const ndb_mgm_configuration_iterator * p = conf.getOwnConfigIterator();
|
||||
ndbrequire(p != 0);
|
||||
|
||||
m_maxOpenedFiles = 40;
|
||||
m_maxFiles = 40;
|
||||
//ndb_mgm_get_int_parameter(p, CFG_DB_MAX_OPEN_FILES, &m_maxFiles);
|
||||
|
||||
// Create idle AsyncFiles
|
||||
|
|
|
@ -795,8 +795,8 @@ inline
|
|||
void
|
||||
UnsafeArrayPool<T>::getPtrForce(Ptr<T> & ptr){
|
||||
Uint32 i = ptr.i;
|
||||
if(i < size){
|
||||
ptr.p = &theArray[i];
|
||||
if(i < this->size){
|
||||
ptr.p = &this->theArray[i];
|
||||
} else {
|
||||
ErrorReporter::handleAssert("UnsafeArrayPool<T>::getPtr",
|
||||
__FILE__, __LINE__);
|
||||
|
@ -808,8 +808,8 @@ inline
|
|||
void
|
||||
UnsafeArrayPool<T>::getPtrForce(ConstPtr<T> & ptr) const{
|
||||
Uint32 i = ptr.i;
|
||||
if(i < size){
|
||||
ptr.p = &theArray[i];
|
||||
if(i < this->size){
|
||||
ptr.p = &this->theArray[i];
|
||||
} else {
|
||||
ErrorReporter::handleAssert("UnsafeArrayPool<T>::getPtr",
|
||||
__FILE__, __LINE__);
|
||||
|
@ -820,8 +820,8 @@ template <class T>
|
|||
inline
|
||||
T *
|
||||
UnsafeArrayPool<T>::getPtrForce(Uint32 i){
|
||||
if(i < size){
|
||||
return &theArray[i];
|
||||
if(i < this->size){
|
||||
return &this->theArray[i];
|
||||
} else {
|
||||
ErrorReporter::handleAssert("UnsafeArrayPool<T>::getPtr",
|
||||
__FILE__, __LINE__);
|
||||
|
@ -833,8 +833,8 @@ template <class T>
|
|||
inline
|
||||
const T *
|
||||
UnsafeArrayPool<T>::getConstPtrForce(Uint32 i) const {
|
||||
if(i < size){
|
||||
return &theArray[i];
|
||||
if(i < this->size){
|
||||
return &this->theArray[i];
|
||||
} else {
|
||||
ErrorReporter::handleAssert("UnsafeArrayPool<T>::getPtr",
|
||||
__FILE__, __LINE__);
|
||||
|
@ -847,8 +847,8 @@ inline
|
|||
void
|
||||
UnsafeArrayPool<T>::getPtrForce(Ptr<T> & ptr, Uint32 i){
|
||||
ptr.i = i;
|
||||
if(i < size){
|
||||
ptr.p = &theArray[i];
|
||||
if(i < this->size){
|
||||
ptr.p = &this->theArray[i];
|
||||
return ;
|
||||
} else {
|
||||
ErrorReporter::handleAssert("UnsafeArrayPool<T>::getPtr",
|
||||
|
@ -861,8 +861,8 @@ inline
|
|||
void
|
||||
UnsafeArrayPool<T>::getPtrForce(ConstPtr<T> & ptr, Uint32 i) const{
|
||||
ptr.i = i;
|
||||
if(i < size){
|
||||
ptr.p = &theArray[i];
|
||||
if(i < this->size){
|
||||
ptr.p = &this->theArray[i];
|
||||
return ;
|
||||
} else {
|
||||
ErrorReporter::handleAssert("UnsafeArrayPool<T>::getPtr",
|
||||
|
|
|
@ -153,11 +153,11 @@ public:
|
|||
LocalDLFifoList(ArrayPool<T> & thePool, typename DLFifoList<T>::Head & _src)
|
||||
: DLFifoList<T>(thePool), src(_src)
|
||||
{
|
||||
head = src;
|
||||
this->head = src;
|
||||
}
|
||||
|
||||
~LocalDLFifoList(){
|
||||
src = head;
|
||||
src = this->head;
|
||||
}
|
||||
private:
|
||||
typename DLFifoList<T>::Head & src;
|
||||
|
|
|
@ -169,11 +169,11 @@ public:
|
|||
LocalDLList(ArrayPool<T> & thePool, typename DLList<T>::Head & _src)
|
||||
: DLList<T>(thePool), src(_src)
|
||||
{
|
||||
head = src;
|
||||
this->head = src;
|
||||
}
|
||||
|
||||
~LocalDLList(){
|
||||
src = head;
|
||||
src = this->head;
|
||||
}
|
||||
private:
|
||||
typename DLList<T>::Head & src;
|
||||
|
|
|
@ -174,11 +174,11 @@ public:
|
|||
typename DataBuffer<sz>::Head & _src)
|
||||
: DataBuffer<sz>(thePool), src(_src)
|
||||
{
|
||||
head = src;
|
||||
this->head = src;
|
||||
}
|
||||
|
||||
~LocalDataBuffer(){
|
||||
src = head;
|
||||
src = this->head;
|
||||
}
|
||||
private:
|
||||
typename DataBuffer<sz>::Head & src;
|
||||
|
|
|
@ -137,11 +137,11 @@ public:
|
|||
LocalSLList(ArrayPool<T> & thePool, typename SLList<T>::Head & _src)
|
||||
: SLList<T>(thePool), src(_src)
|
||||
{
|
||||
head = src;
|
||||
this->head = src;
|
||||
}
|
||||
|
||||
~LocalSLList(){
|
||||
src = head;
|
||||
src = this->head;
|
||||
}
|
||||
private:
|
||||
typename SLList<T>::Head & src;
|
||||
|
|
|
@ -29,7 +29,7 @@ rm -f */*.linux
|
|||
./configure --without-innodb --without-docs
|
||||
|
||||
# build tools only
|
||||
make clean config.h
|
||||
make clean all-local
|
||||
(cd dbug; make libdbug.a)
|
||||
(cd strings; make libmystrings.a)
|
||||
(cd mysys; make libmysys.a)
|
||||
|
|
|
@ -15,6 +15,7 @@ suffix="standard"
|
|||
extra_configs=" \
|
||||
--with-innodb \
|
||||
--enable-thread-safe-client \
|
||||
--with-archive-storage-engine \
|
||||
"
|
||||
|
||||
. $path/compile-netware-END
|
||||
|
|
|
@ -13,7 +13,7 @@ export MWNWx86LibraryFiles="libcpre.o;libc.imp;netware.imp;mwcrtl.lib;mwcpp.lib;
|
|||
export WINEPATH="$MYDEV/mw/bin"
|
||||
|
||||
# the default added path is "$HOME/mydev/mysql-x.x-x/netware/BUILD"
|
||||
export PATH="$PATH:/home/kp/mydev/mysql-VERSION/netware/BUILD"
|
||||
export PATH="$PATH:BUILD_DIR/mysql-VERSION/netware/BUILD"
|
||||
|
||||
export AR='mwldnlm'
|
||||
export AR_FLAGS='-type library -o'
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -24,9 +24,7 @@
|
|||
#include <ctype.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/mode.h>
|
||||
|
||||
#include "my_manage.h"
|
||||
|
||||
/******************************************************************************
|
||||
|
||||
macros
|
||||
|
@ -143,7 +141,7 @@ int read_option(char *, char *);
|
|||
void run_test(char *);
|
||||
void setup(char *);
|
||||
void vlog(char *, va_list);
|
||||
void log(char *, ...);
|
||||
void log_msg(char *, ...);
|
||||
void log_info(char *, ...);
|
||||
void log_error(char *, ...);
|
||||
void log_errno(char *, ...);
|
||||
|
@ -161,21 +159,21 @@ void report_stats()
|
|||
{
|
||||
if (total_fail == 0)
|
||||
{
|
||||
log("\nAll %d test(s) were successful.\n", total_test);
|
||||
log_msg("\nAll %d test(s) were successful.\n", total_test);
|
||||
}
|
||||
else
|
||||
{
|
||||
double percent = ((double)total_pass / total_test) * 100;
|
||||
|
||||
log("\nFailed %u/%u test(s), %.02f%% successful.\n",
|
||||
log_msg("\nFailed %u/%u test(s), %.02f%% successful.\n",
|
||||
total_fail, total_test, percent);
|
||||
log("\nThe .out and .err files in %s may give you some\n", result_dir);
|
||||
log("hint of what when wrong.\n");
|
||||
log("\nIf you want to report this error, please first read the documentation\n");
|
||||
log("at: http://www.mysql.com/doc/M/y/MySQL_test_suite.html\n");
|
||||
log_msg("\nThe .out and .err files in %s may give you some\n", result_dir);
|
||||
log_msg("hint of what when wrong.\n");
|
||||
log_msg("\nIf you want to report this error, please first read the documentation\n");
|
||||
log_msg("at: http://www.mysql.com/doc/M/y/MySQL_test_suite.html\n");
|
||||
}
|
||||
|
||||
log("\n%.02f total minutes elapsed in the test cases\n\n", total_time / 60);
|
||||
log_msg("\n%.02f total minutes elapsed in the test cases\n\n", total_time / 60);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
|
@ -240,7 +238,7 @@ void mysql_install_db()
|
|||
mkdir(temp, S_IRWXU);
|
||||
|
||||
// create subdirectories
|
||||
log("Creating test-suite folders...\n");
|
||||
log_msg("Creating test-suite folders...\n");
|
||||
snprintf(temp, PATH_MAX, "%s/var/run", mysql_test_dir);
|
||||
mkdir(temp, S_IRWXU);
|
||||
snprintf(temp, PATH_MAX, "%s/var/tmp", mysql_test_dir);
|
||||
|
@ -259,9 +257,9 @@ void mysql_install_db()
|
|||
mkdir(temp, S_IRWXU);
|
||||
|
||||
// install databases
|
||||
log("Creating test databases for master... \n");
|
||||
log_msg("Creating test databases for master... \n");
|
||||
install_db(master_dir);
|
||||
log("Creating test databases for slave... \n");
|
||||
log_msg("Creating test databases for slave... \n");
|
||||
install_db(slave_dir);
|
||||
}
|
||||
|
||||
|
@ -589,15 +587,18 @@ void start_slave()
|
|||
mysql_tmp_dir)) == 0)
|
||||
{
|
||||
slave_running = TRUE;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
log_error("The slave server went down early.");
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
log_error("Unable to start slave server.");
|
||||
|
||||
}
|
||||
|
||||
// free args
|
||||
|
@ -805,7 +806,7 @@ void run_test(char *test)
|
|||
if (ignore)
|
||||
{
|
||||
// show test
|
||||
log("%-46s ", test);
|
||||
log_msg("%-46s ", test);
|
||||
|
||||
// ignore
|
||||
rstr = TEST_IGNORE;
|
||||
|
@ -887,7 +888,7 @@ void run_test(char *test)
|
|||
sleep(1);
|
||||
|
||||
// show test
|
||||
log("%-46s ", test);
|
||||
log_msg("%-46s ", test);
|
||||
|
||||
// args
|
||||
init_args(&al);
|
||||
|
@ -959,7 +960,7 @@ void run_test(char *test)
|
|||
else // early skips
|
||||
{
|
||||
// show test
|
||||
log("%-46s ", test);
|
||||
log_msg("%-46s ", test);
|
||||
|
||||
// skip
|
||||
rstr = TEST_SKIP;
|
||||
|
@ -967,7 +968,7 @@ void run_test(char *test)
|
|||
}
|
||||
|
||||
// result
|
||||
log("%10.06f %-14s\n", elapsed, rstr);
|
||||
log_msg("%10.06f %-14s\n", elapsed, rstr);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
|
@ -996,7 +997,7 @@ void vlog(char *format, va_list ap)
|
|||
Log the message.
|
||||
|
||||
******************************************************************************/
|
||||
void log(char *format, ...)
|
||||
void log_msg(char *format, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
|
@ -1020,9 +1021,9 @@ void log_info(char *format, ...)
|
|||
|
||||
va_start(ap, format);
|
||||
|
||||
log("-- INFO : ");
|
||||
log_msg("-- INFO : ");
|
||||
vlog(format, ap);
|
||||
log("\n");
|
||||
log_msg("\n");
|
||||
|
||||
va_end(ap);
|
||||
}
|
||||
|
@ -1040,9 +1041,9 @@ void log_error(char *format, ...)
|
|||
|
||||
va_start(ap, format);
|
||||
|
||||
log("-- ERROR: ");
|
||||
log_msg("-- ERROR: ");
|
||||
vlog(format, ap);
|
||||
log("\n");
|
||||
log_msg("\n");
|
||||
|
||||
va_end(ap);
|
||||
}
|
||||
|
@ -1060,9 +1061,9 @@ void log_errno(char *format, ...)
|
|||
|
||||
va_start(ap, format);
|
||||
|
||||
log("-- ERROR: (%003u) ", errno);
|
||||
log_msg("-- ERROR: (%003u) ", errno);
|
||||
vlog(format, ap);
|
||||
log("\n");
|
||||
log_msg("\n");
|
||||
|
||||
va_end(ap);
|
||||
}
|
||||
|
@ -1157,8 +1158,9 @@ void setup(char *file)
|
|||
snprintf(file_path, PATH_MAX*2, "%s/mysqlbinlog --no-defaults --local-load=%s", bin_dir, mysql_tmp_dir);
|
||||
setenv("MYSQL_BINLOG", file_path, 1);
|
||||
setenv("MASTER_MYPORT", "9306", 1);
|
||||
|
||||
|
||||
setenv("SLAVE_MYPORT", "9307", 1);
|
||||
setenv("MYSQL_TCP_PORT", "3306", 1);
|
||||
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
|
@ -1198,18 +1200,18 @@ int main(int argc, char **argv)
|
|||
is_ignore_list = 1;
|
||||
}
|
||||
// header
|
||||
log("MySQL Server %s, for %s (%s)\n\n", VERSION, SYSTEM_TYPE, MACHINE_TYPE);
|
||||
log_msg("MySQL Server %s, for %s (%s)\n\n", VERSION, SYSTEM_TYPE, MACHINE_TYPE);
|
||||
|
||||
log("Initializing Tests...\n");
|
||||
log_msg("Initializing Tests...\n");
|
||||
|
||||
// install test databases
|
||||
mysql_install_db();
|
||||
|
||||
log("Starting Tests...\n");
|
||||
log_msg("Starting Tests...\n");
|
||||
|
||||
log("\n");
|
||||
log(HEADER);
|
||||
log(DASH);
|
||||
log_msg("\n");
|
||||
log_msg(HEADER);
|
||||
log_msg(DASH);
|
||||
|
||||
if ( argc > 1 + is_ignore_list )
|
||||
{
|
||||
|
@ -1264,10 +1266,10 @@ int main(int argc, char **argv)
|
|||
// stop server
|
||||
mysql_stop();
|
||||
|
||||
log(DASH);
|
||||
log("\n");
|
||||
log_msg(DASH);
|
||||
log_msg("\n");
|
||||
|
||||
log("Ending Tests...\n");
|
||||
log_msg("Ending Tests...\n");
|
||||
|
||||
// report stats
|
||||
report_stats();
|
||||
|
|
|
@ -102,7 +102,7 @@ then
|
|||
fi
|
||||
|
||||
cmd="$bindir/mysql -f --user=$user --host=$host"
|
||||
if test -z "$password" ; then
|
||||
if test ! -z "$password" ; then
|
||||
cmd="$cmd --password=$password"
|
||||
fi
|
||||
if test ! -z "$port"; then
|
||||
|
@ -155,7 +155,7 @@ s_echo ""
|
|||
if test $verbose = 1
|
||||
then
|
||||
s_echo "You can safely ignore all 'Duplicate column' and 'Unknown column' errors"
|
||||
s_echo "as this just means that your tables where already up to date."
|
||||
s_echo "because these just mean that your tables are already up to date."
|
||||
s_echo "This script is safe to run even if your tables are already up to date!"
|
||||
s_echo ""
|
||||
fi
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
-- for MySQL 4.0.
|
||||
|
||||
-- You can safely ignore all 'Duplicate column' and 'Unknown column' errors"
|
||||
-- as this just means that your tables where already up to date.
|
||||
-- because these just mean that your tables are already up to date.
|
||||
-- This script is safe to run even if your tables are already up to date!
|
||||
|
||||
-- On unix, you should use the mysql_fix_privilege_tables script to execute
|
||||
|
|
|
@ -448,7 +448,7 @@ HANDLE create_shared_memory(MYSQL *mysql,NET *net, uint connect_timeout)
|
|||
if (WaitForSingleObject(event_connect_answer,connect_timeout*1000) !=
|
||||
WAIT_OBJECT_0)
|
||||
{
|
||||
error_allow = CR_SHARED_MEMORY_CONNECT_ABANDODED_ERROR;
|
||||
error_allow = CR_SHARED_MEMORY_CONNECT_ABANDONED_ERROR;
|
||||
goto err;
|
||||
}
|
||||
|
||||
|
@ -2528,7 +2528,7 @@ mysql_fetch_row(MYSQL_RES *res)
|
|||
{
|
||||
set_mysql_error(mysql,
|
||||
res->unbuffered_fetch_cancelled ?
|
||||
CR_FETCH_CANCELLED : CR_COMMANDS_OUT_OF_SYNC,
|
||||
CR_FETCH_CANCELED : CR_COMMANDS_OUT_OF_SYNC,
|
||||
unknown_sqlstate);
|
||||
}
|
||||
else if (!(read_one_row(mysql, res->field_count, res->row, res->lengths)))
|
||||
|
|
|
@ -91,11 +91,10 @@ mysqld_SOURCES = sql_lex.cc sql_handler.cc \
|
|||
gstream.cc spatial.cc sql_help.cc protocol_cursor.cc \
|
||||
tztime.cc my_time.c \
|
||||
examples/ha_example.cc examples/ha_archive.cc
|
||||
|
||||
gen_lex_hash_SOURCES = gen_lex_hash.cc
|
||||
gen_lex_hash_LDADD = $(LDADD) $(CXXLDFLAGS)
|
||||
|
||||
mysql_tzinfo_to_sql_SOURCES = mysql_tzinfo_to_sql_tztime.cc
|
||||
mysql_tzinfo_to_sql_CXXFLAGS = -DTZINFO2SQL $(AM_CXXFLAGS)
|
||||
mysql_tzinfo_to_sql_SOURCES = mysql_tzinfo_to_sql.cc
|
||||
mysql_tzinfo_to_sql_LDADD = $(LDADD) $(CXXLDFLAGS)
|
||||
|
||||
DEFS = -DMYSQL_SERVER \
|
||||
|
@ -108,7 +107,11 @@ BUILT_SOURCES = sql_yacc.cc sql_yacc.h
|
|||
EXTRA_DIST = udf_example.cc $(BUILT_SOURCES)
|
||||
AM_YFLAGS = -d
|
||||
|
||||
link_sources:
|
||||
mysql_tzinfo_to_sql.cc:
|
||||
rm -f mysql_tzinfo_to_sql.cc
|
||||
@LN_CP_F@ tztime.cc mysql_tzinfo_to_sql.cc
|
||||
|
||||
link_sources: mysql_tzinfo_to_sql.cc
|
||||
rm -f mini_client_errors.c
|
||||
@LN_CP_F@ ../libmysql/errmsg.c mini_client_errors.c
|
||||
rm -f pack.c
|
||||
|
@ -121,9 +124,8 @@ link_sources:
|
|||
gen_lex_hash.o: gen_lex_hash.cc lex.h
|
||||
$(CXXCOMPILE) -c $(INCLUDES) $<
|
||||
|
||||
mysql_tzinfo_to_sql_tztime.cc: tztime.cc
|
||||
rm -f $(srcdir)/mysql_tzinfo_to_sql_tztime.cc
|
||||
@LN_CP_F@ $(srcdir)/tztime.cc $(srcdir)/mysql_tzinfo_to_sql_tztime.cc
|
||||
mysql_tzinfo_to_sql.o: $(mysql_tzinfo_to_sql_SOURCES)
|
||||
$(CXXCOMPILE) -c $(INCLUDES) -DTZINFO2SQL $<
|
||||
|
||||
# Try to get better dependencies for the grammar. Othervise really bad
|
||||
# things like different grammars for different pars of MySQL can
|
||||
|
|
|
@ -94,7 +94,7 @@ class ha_berkeley: public handler
|
|||
changed_rows(0),last_dup_key((uint) -1),version(0),using_ignore(0) {}
|
||||
~ha_berkeley() {}
|
||||
const char *table_type() const { return "BerkeleyDB"; }
|
||||
ulong ha_berkeley::index_flags(uint idx, uint part) const
|
||||
ulong index_flags(uint idx, uint part) const
|
||||
{
|
||||
ulong flags=HA_READ_NEXT | HA_READ_PREV;
|
||||
if (part == (uint)~0 ||
|
||||
|
|
|
@ -515,7 +515,8 @@ extern TYPELIB tx_isolation_typelib;
|
|||
#define ha_commit(thd) (ha_commit_trans((thd), &((thd)->transaction.all)))
|
||||
#define ha_rollback(thd) (ha_rollback_trans((thd), &((thd)->transaction.all)))
|
||||
|
||||
#define ha_supports_generate(T) (T != DB_TYPE_INNODB)
|
||||
#define ha_supports_generate(T) (T != DB_TYPE_INNODB && \
|
||||
T != DB_TYPE_BERKELEY_DB)
|
||||
|
||||
bool ha_caching_allowed(THD* thd, char* table_key,
|
||||
uint key_length, uint8 cache_type);
|
||||
|
|
|
@ -333,17 +333,11 @@ class Item_field :public Item_ident
|
|||
void set_field(Field *field);
|
||||
public:
|
||||
Field *field,*result_field;
|
||||
#ifndef DBUG_OFF
|
||||
bool double_fix;
|
||||
#endif
|
||||
|
||||
Item_field(const char *db_par,const char *table_name_par,
|
||||
const char *field_name_par)
|
||||
:Item_ident(db_par,table_name_par,field_name_par),
|
||||
field(0), result_field(0)
|
||||
#ifndef DBUG_OFF
|
||||
,double_fix(0)
|
||||
#endif
|
||||
{ collation.set(DERIVATION_IMPLICIT); }
|
||||
// Constructor need to process subselect with temporary tables (see Item)
|
||||
Item_field(THD *thd, Item_field *item);
|
||||
|
|
|
@ -313,12 +313,12 @@ err:
|
|||
|
||||
|
||||
/*
|
||||
Functions to concatinate various spatial objects
|
||||
Functions to concatenate various spatial objects
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Concatinate doubles into Point
|
||||
* Concatenate doubles into Point
|
||||
*/
|
||||
|
||||
|
||||
|
@ -343,7 +343,7 @@ String *Item_func_point::val_str(String *str)
|
|||
|
||||
|
||||
/*
|
||||
Concatinates various items into various collections
|
||||
Concatenates various items into various collections
|
||||
with checkings for valid wkb type of items.
|
||||
For example, MultiPoint can be a collection of Points only.
|
||||
coll_type contains wkb type of target collection.
|
||||
|
@ -388,7 +388,7 @@ String *Item_func_spatial_collection::val_str(String *str)
|
|||
const char *data= res->ptr() + 1;
|
||||
|
||||
/*
|
||||
In the case of named collection we must to check that items
|
||||
In the case of named collection we must check that items
|
||||
are of specific type, let's do this checking now
|
||||
*/
|
||||
|
||||
|
|
|
@ -402,7 +402,7 @@ To make maintaining easier please:
|
|||
<description>ARMSCII-8 Armenian</description>
|
||||
<alias>armscii-8</alias>
|
||||
<collation name="armscii8_general_ci" id="32" order="Armenian" flag="primary"/>
|
||||
<collation name="armscii_bin" id="64" order="Binary" flag="binary"/>
|
||||
<collation name="armscii8_bin" id="64" order="Binary" flag="binary"/>
|
||||
</charset>
|
||||
|
||||
<charset name="utf8">
|
||||
|
|
|
@ -114,7 +114,7 @@
|
|||
</map>
|
||||
</collation>
|
||||
|
||||
<collation name="armscii_bin" flag="binary"/>
|
||||
<collation name="armscii8_bin" flag="binary"/>
|
||||
|
||||
</charset>
|
||||
|
||||
|
|
|
@ -3408,6 +3408,7 @@ int mysql_recreate_table(THD *thd, TABLE_LIST *table_list,
|
|||
lex->key_list.empty();
|
||||
lex->col_list.empty();
|
||||
lex->alter_info.reset();
|
||||
lex->alter_info.is_simple= 0; // Force full recreate
|
||||
bzero((char*) &create_info,sizeof(create_info));
|
||||
create_info.db_type=DB_TYPE_DEFAULT;
|
||||
create_info.row_type=ROW_TYPE_DEFAULT;
|
||||
|
|
|
@ -4422,7 +4422,9 @@ opt_db:
|
|||
|
||||
wild:
|
||||
/* empty */
|
||||
| LIKE text_string { Lex->wild= $2; };
|
||||
| LIKE TEXT_STRING_sys
|
||||
{ Lex->wild= new (&YYTHD->mem_root) String($2.str, $2.length,
|
||||
system_charset_info); };
|
||||
|
||||
opt_full:
|
||||
/* empty */ { Lex->verbose=0; }
|
||||
|
|
|
@ -8420,7 +8420,7 @@ CHARSET_INFO my_charset_utf8_icelandic_uca_ci=
|
|||
NULL, /* state_map */
|
||||
NULL, /* ident_map */
|
||||
8, /* strxfrm_multiply */
|
||||
2, /* mbminlen */
|
||||
1, /* mbminlen */
|
||||
2, /* mbmaxlen */
|
||||
9, /* min_sort_char */
|
||||
0xFFFF, /* max_sort_char */
|
||||
|
@ -8447,7 +8447,7 @@ CHARSET_INFO my_charset_utf8_latvian_uca_ci=
|
|||
NULL, /* state_map */
|
||||
NULL, /* ident_map */
|
||||
8, /* strxfrm_multiply */
|
||||
2, /* mbminlen */
|
||||
1, /* mbminlen */
|
||||
2, /* mbmaxlen */
|
||||
9, /* min_sort_char */
|
||||
0xFFFF, /* max_sort_char */
|
||||
|
@ -8474,7 +8474,7 @@ CHARSET_INFO my_charset_utf8_romanian_uca_ci=
|
|||
NULL, /* state_map */
|
||||
NULL, /* ident_map */
|
||||
8, /* strxfrm_multiply */
|
||||
2, /* mbminlen */
|
||||
1, /* mbminlen */
|
||||
2, /* mbmaxlen */
|
||||
9, /* min_sort_char */
|
||||
0xFFFF, /* max_sort_char */
|
||||
|
@ -8501,7 +8501,7 @@ CHARSET_INFO my_charset_utf8_slovenian_uca_ci=
|
|||
NULL, /* state_map */
|
||||
NULL, /* ident_map */
|
||||
8, /* strxfrm_multiply */
|
||||
2, /* mbminlen */
|
||||
1, /* mbminlen */
|
||||
2, /* mbmaxlen */
|
||||
9, /* min_sort_char */
|
||||
0xFFFF, /* max_sort_char */
|
||||
|
@ -8528,7 +8528,7 @@ CHARSET_INFO my_charset_utf8_polish_uca_ci=
|
|||
NULL, /* state_map */
|
||||
NULL, /* ident_map */
|
||||
8, /* strxfrm_multiply */
|
||||
2, /* mbminlen */
|
||||
1, /* mbminlen */
|
||||
2, /* mbmaxlen */
|
||||
9, /* min_sort_char */
|
||||
0xFFFF, /* max_sort_char */
|
||||
|
@ -8555,7 +8555,7 @@ CHARSET_INFO my_charset_utf8_estonian_uca_ci=
|
|||
NULL, /* state_map */
|
||||
NULL, /* ident_map */
|
||||
8, /* strxfrm_multiply */
|
||||
2, /* mbminlen */
|
||||
1, /* mbminlen */
|
||||
2, /* mbmaxlen */
|
||||
9, /* min_sort_char */
|
||||
0xFFFF, /* max_sort_char */
|
||||
|
@ -8582,7 +8582,7 @@ CHARSET_INFO my_charset_utf8_spanish_uca_ci=
|
|||
NULL, /* state_map */
|
||||
NULL, /* ident_map */
|
||||
8, /* strxfrm_multiply */
|
||||
2, /* mbminlen */
|
||||
1, /* mbminlen */
|
||||
2, /* mbmaxlen */
|
||||
9, /* min_sort_char */
|
||||
0xFFFF, /* max_sort_char */
|
||||
|
@ -8609,7 +8609,7 @@ CHARSET_INFO my_charset_utf8_swedish_uca_ci=
|
|||
NULL, /* state_map */
|
||||
NULL, /* ident_map */
|
||||
8, /* strxfrm_multiply */
|
||||
2, /* mbminlen */
|
||||
1, /* mbminlen */
|
||||
2, /* mbmaxlen */
|
||||
9, /* min_sort_char */
|
||||
0xFFFF, /* max_sort_char */
|
||||
|
@ -8636,7 +8636,7 @@ CHARSET_INFO my_charset_utf8_turkish_uca_ci=
|
|||
NULL, /* state_map */
|
||||
NULL, /* ident_map */
|
||||
8, /* strxfrm_multiply */
|
||||
2, /* mbminlen */
|
||||
1, /* mbminlen */
|
||||
2, /* mbmaxlen */
|
||||
9, /* min_sort_char */
|
||||
0xFFFF, /* max_sort_char */
|
||||
|
@ -8663,7 +8663,7 @@ CHARSET_INFO my_charset_utf8_czech_uca_ci=
|
|||
NULL, /* state_map */
|
||||
NULL, /* ident_map */
|
||||
8, /* strxfrm_multiply */
|
||||
2, /* mbminlen */
|
||||
1, /* mbminlen */
|
||||
2, /* mbmaxlen */
|
||||
9, /* min_sort_char */
|
||||
0xFFFF, /* max_sort_char */
|
||||
|
@ -8691,7 +8691,7 @@ CHARSET_INFO my_charset_utf8_danish_uca_ci=
|
|||
NULL, /* state_map */
|
||||
NULL, /* ident_map */
|
||||
8, /* strxfrm_multiply */
|
||||
2, /* mbminlen */
|
||||
1, /* mbminlen */
|
||||
2, /* mbmaxlen */
|
||||
9, /* min_sort_char */
|
||||
0xFFFF, /* max_sort_char */
|
||||
|
@ -8718,7 +8718,7 @@ CHARSET_INFO my_charset_utf8_lithuanian_uca_ci=
|
|||
NULL, /* state_map */
|
||||
NULL, /* ident_map */
|
||||
8, /* strxfrm_multiply */
|
||||
2, /* mbminlen */
|
||||
1, /* mbminlen */
|
||||
2, /* mbmaxlen */
|
||||
9, /* min_sort_char */
|
||||
0xFFFF, /* max_sort_char */
|
||||
|
@ -8745,7 +8745,7 @@ CHARSET_INFO my_charset_utf8_slovak_uca_ci=
|
|||
NULL, /* state_map */
|
||||
NULL, /* ident_map */
|
||||
8, /* strxfrm_multiply */
|
||||
2, /* mbminlen */
|
||||
1, /* mbminlen */
|
||||
2, /* mbmaxlen */
|
||||
9, /* min_sort_char */
|
||||
0xFFFF, /* max_sort_char */
|
||||
|
@ -8772,7 +8772,7 @@ CHARSET_INFO my_charset_utf8_spanish2_uca_ci=
|
|||
NULL, /* state_map */
|
||||
NULL, /* ident_map */
|
||||
8, /* strxfrm_multiply */
|
||||
2, /* mbminlen */
|
||||
1, /* mbminlen */
|
||||
2, /* mbmaxlen */
|
||||
9, /* min_sort_char */
|
||||
0xFFFF, /* max_sort_char */
|
||||
|
|
|
@ -397,7 +397,7 @@ useradd -M -r -d $mysql_datadir -s /bin/bash -c "MySQL server" mysql 2> /dev/nul
|
|||
chown -R mysql $mysql_datadir
|
||||
|
||||
# Initiate databases
|
||||
mysql_install_db -IN-RPM --user=mysql
|
||||
mysql_install_db --rpm --user=mysql
|
||||
|
||||
# Change permissions again to fix any new files.
|
||||
chown -R mysql $mysql_datadir
|
||||
|
@ -579,6 +579,11 @@ fi
|
|||
# The spec file changelog only includes changes made to the spec file
|
||||
# itself
|
||||
%changelog
|
||||
* Wed Jun 30 2004 Lenz Grimmer <lenz@mysql.com>
|
||||
|
||||
- fixed server postinstall (mysql_install_db was called with the wrong
|
||||
parameter)
|
||||
|
||||
* Thu Jun 24 2004 Lenz Grimmer <lenz@mysql.com>
|
||||
|
||||
- added mysql_tzinfo_to_sql to the server subpackage
|
||||
|
|
Loading…
Reference in a new issue