mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into rurik.mysql.com:/home/igor/mysql-5.0-opt VC++Files/sql/mysqld.dsp: Auto merged
This commit is contained in:
12
.bzrignore
12
.bzrignore
@ -1,3 +1,5 @@
|
|||||||
|
*.Plo
|
||||||
|
*.Po
|
||||||
*.a
|
*.a
|
||||||
*.bb
|
*.bb
|
||||||
*.bbg
|
*.bbg
|
||||||
@ -9,6 +11,7 @@
|
|||||||
*.gcov
|
*.gcov
|
||||||
*.idb
|
*.idb
|
||||||
*.la
|
*.la
|
||||||
|
*.lai
|
||||||
*.lib
|
*.lib
|
||||||
*.lo
|
*.lo
|
||||||
*.map
|
*.map
|
||||||
@ -20,6 +23,7 @@
|
|||||||
*.res
|
*.res
|
||||||
*.sbr
|
*.sbr
|
||||||
*.so
|
*.so
|
||||||
|
*.so.*
|
||||||
*.spec
|
*.spec
|
||||||
*/*_pure_*warnings
|
*/*_pure_*warnings
|
||||||
*/.pure
|
*/.pure
|
||||||
@ -48,6 +52,7 @@
|
|||||||
50
|
50
|
||||||
=6
|
=6
|
||||||
BUILD/compile-pentium-maintainer
|
BUILD/compile-pentium-maintainer
|
||||||
|
BitKeeper/etc/RESYNC_TREE
|
||||||
BitKeeper/etc/config
|
BitKeeper/etc/config
|
||||||
BitKeeper/etc/csets
|
BitKeeper/etc/csets
|
||||||
BitKeeper/etc/csets-in
|
BitKeeper/etc/csets-in
|
||||||
@ -279,6 +284,7 @@ build_tags.sh
|
|||||||
client/#mysql.cc#
|
client/#mysql.cc#
|
||||||
client/*.ds?
|
client/*.ds?
|
||||||
client/*.vcproj
|
client/*.vcproj
|
||||||
|
client/.libs -prune
|
||||||
client/completion_hash.cpp
|
client/completion_hash.cpp
|
||||||
client/decimal.c
|
client/decimal.c
|
||||||
client/insert_test
|
client/insert_test
|
||||||
@ -558,6 +564,7 @@ libmysqld/sql_insert.cc
|
|||||||
libmysqld/sql_lex.cc
|
libmysqld/sql_lex.cc
|
||||||
libmysqld/sql_list.cc
|
libmysqld/sql_list.cc
|
||||||
libmysqld/sql_load.cc
|
libmysqld/sql_load.cc
|
||||||
|
libmysqld/sql_locale.cc
|
||||||
libmysqld/sql_manager.cc
|
libmysqld/sql_manager.cc
|
||||||
libmysqld/sql_map.cc
|
libmysqld/sql_map.cc
|
||||||
libmysqld/sql_olap.cc
|
libmysqld/sql_olap.cc
|
||||||
@ -669,6 +676,7 @@ mysql-test/mysql-test-run.log
|
|||||||
mysql-test/mysql_test_run_new
|
mysql-test/mysql_test_run_new
|
||||||
mysql-test/ndb/ndbcluster
|
mysql-test/ndb/ndbcluster
|
||||||
mysql-test/r/*.err
|
mysql-test/r/*.err
|
||||||
|
mysql-test/r/*.log
|
||||||
mysql-test/r/*.out
|
mysql-test/r/*.out
|
||||||
mysql-test/r/*.reject
|
mysql-test/r/*.reject
|
||||||
mysql-test/r/alter_table.err
|
mysql-test/r/alter_table.err
|
||||||
@ -1061,6 +1069,7 @@ scripts/mysql_secure_installation
|
|||||||
scripts/mysql_setpermission
|
scripts/mysql_setpermission
|
||||||
scripts/mysql_tableinfo
|
scripts/mysql_tableinfo
|
||||||
scripts/mysql_upgrade
|
scripts/mysql_upgrade
|
||||||
|
scripts/mysql_upgrade_shell
|
||||||
scripts/mysql_zap
|
scripts/mysql_zap
|
||||||
scripts/mysqlaccess
|
scripts/mysqlaccess
|
||||||
scripts/mysqlbug
|
scripts/mysqlbug
|
||||||
@ -1262,6 +1271,7 @@ test1/*
|
|||||||
test_xml
|
test_xml
|
||||||
tests/*.ds?
|
tests/*.ds?
|
||||||
tests/*.vcproj
|
tests/*.vcproj
|
||||||
|
tests/.libs -prune
|
||||||
tests/client_test
|
tests/client_test
|
||||||
tests/connect_test
|
tests/connect_test
|
||||||
tests/mysql_client_test
|
tests/mysql_client_test
|
||||||
@ -1269,6 +1279,7 @@ thr_insert_test/*
|
|||||||
thr_test/*
|
thr_test/*
|
||||||
thread_test
|
thread_test
|
||||||
tmp/*
|
tmp/*
|
||||||
|
tools/.libs -prune
|
||||||
tools/my_vsnprintf.c
|
tools/my_vsnprintf.c
|
||||||
tools/mysqlmanager
|
tools/mysqlmanager
|
||||||
tools/mysqlmngd
|
tools/mysqlmngd
|
||||||
@ -1285,4 +1296,3 @@ vio/viotest-sslconnect.cpp
|
|||||||
vio/viotest.cpp
|
vio/viotest.cpp
|
||||||
zlib/*.ds?
|
zlib/*.ds?
|
||||||
zlib/*.vcproj
|
zlib/*.vcproj
|
||||||
BitKeeper/etc/RESYNC_TREE
|
|
||||||
|
@ -623,6 +623,10 @@ SOURCE=..\sql\time.cpp
|
|||||||
SOURCE=..\sql\tztime.cpp
|
SOURCE=..\sql\tztime.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
#
|
||||||
|
SOURCE=..\sql\sql_locale.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=..\sql\uniques.cpp
|
SOURCE=..\sql\uniques.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
|
@ -4313,6 +4313,42 @@
|
|||||||
PreprocessorDefinitions="WIN32;_WINDOWS;USE_SYMDIR;SIGNAL_WITH_VIO_CLOSE;HAVE_DLOPEN;EMBEDDED_LIBRARY;USE_TLS;__WIN__;LICENSE=Commercial;DBUG_OFF;_MBCS;NDEBUG;$(NoInherit)"/>
|
PreprocessorDefinitions="WIN32;_WINDOWS;USE_SYMDIR;SIGNAL_WITH_VIO_CLOSE;HAVE_DLOPEN;EMBEDDED_LIBRARY;USE_TLS;__WIN__;LICENSE=Commercial;DBUG_OFF;_MBCS;NDEBUG;$(NoInherit)"/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\sql\sql_locale.cpp">
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|Win32">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="0"
|
||||||
|
AdditionalIncludeDirectories=""
|
||||||
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;SAFEMALLOC;HAVE_BERKELEY_DB;USE_SYMDIR;SIGNAL_WITH_VIO_CLOSE;HAVE_DLOPEN;EMBEDDED_LIBRARY;HAVE_INNOBASE_DB;USE_TLS;__WIN__;$(NoInherit)"
|
||||||
|
BasicRuntimeChecks="3"/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="pro|Win32">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="2"
|
||||||
|
AdditionalIncludeDirectories=""
|
||||||
|
PreprocessorDefinitions="WIN32;USE_SYMDIR;SIGNAL_WITH_VIO_CLOSE;EMBEDDED_LIBRARY;USE_TLS;__WIN__;MYSQL_SERVER;LICENSE=Commercial;_MBCS;HAVE_DLOPEN;HAVE_INNOBASE_DB;DBUG_OFF;NDEBUG;_WINDOWS;_CONSOLE;$(NoInherit)"/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Release|Win32">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="2"
|
||||||
|
AdditionalIncludeDirectories=""
|
||||||
|
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;SIGNAL_WITH_VIO_CLOSE;HAVE_DLOPEN;EMBEDDED_LIBRARY;HAVE_INNOBASE_DB;DBUG_OFF;USE_TLS;__WIN__;$(NoInherit)"/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="classic|Win32">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="2"
|
||||||
|
AdditionalIncludeDirectories=""
|
||||||
|
PreprocessorDefinitions="WIN32;_WINDOWS;USE_SYMDIR;SIGNAL_WITH_VIO_CLOSE;HAVE_DLOPEN;EMBEDDED_LIBRARY;USE_TLS;__WIN__;LICENSE=Commercial;DBUG_OFF;_MBCS;NDEBUG;$(NoInherit)"/>
|
||||||
|
</FileConfiguration>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\sql\uniques.cpp">
|
RelativePath="..\sql\uniques.cpp">
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
|
@ -2023,6 +2023,10 @@ SOURCE=.\tztime.cpp
|
|||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\sql_locale.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\uniques.cpp
|
SOURCE=.\uniques.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
@ -85,7 +85,7 @@
|
|||||||
InlineFunctionExpansion="1"
|
InlineFunctionExpansion="1"
|
||||||
OptimizeForProcessor="2"
|
OptimizeForProcessor="2"
|
||||||
AdditionalIncludeDirectories="../bdb/build_win32,../include,../regex,../extra/yassl/include,../zlib"
|
AdditionalIncludeDirectories="../bdb/build_win32,../include,../regex,../extra/yassl/include,../zlib"
|
||||||
PreprocessorDefinitions="__NT__;NDEBUG;DBUG_OFF;USE_SYMDIR;HAVE_INNOBASE_DB;HAVE_BERKELEY_DB;HAVE_ARCHIVE_DB;HAVE_BLACKHOLE_DB;HAVE_EXAMPLE_DB;HAVE_FEDERATED_DB;MYSQL_SERVER;_WINDOWS;_CONSOLE;HAVE_DLOPEN"
|
PreprocessorDefinitions="USE_SYMDIR;NDEBUG;DBUG_OFF;HAVE_INNOBASE_DB;HAVE_BERKELEY_DB;HAVE_ARCHIVE_DB;HAVE_BLACKHOLE_DB;HAVE_EXAMPLE_DB;HAVE_FEDERATED_DB;MYSQL_SERVER;_WINDOWS;_CONSOLE;HAVE_DLOPEN"
|
||||||
StringPooling="TRUE"
|
StringPooling="TRUE"
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
EnableFunctionLevelLinking="TRUE"
|
EnableFunctionLevelLinking="TRUE"
|
||||||
@ -145,7 +145,7 @@
|
|||||||
InlineFunctionExpansion="1"
|
InlineFunctionExpansion="1"
|
||||||
OptimizeForProcessor="2"
|
OptimizeForProcessor="2"
|
||||||
AdditionalIncludeDirectories="../bdb/build_win32,../include,../regex,../extra/yassl/include,../zlib"
|
AdditionalIncludeDirectories="../bdb/build_win32,../include,../regex,../extra/yassl/include,../zlib"
|
||||||
PreprocessorDefinitions="NDEBUG;__NT__;DBUG_OFF;HAVE_INNOBASE_DB;HAVE_BERKELEY_DB;HAVE_ARCHIVE_DB;HAVE_BLACKHOLE_DB;HAVE_EXAMPLE_DB;HAVE_FEDERATED_DB;MYSQL_SERVER;_WINDOWS;_CONSOLE;HAVE_DLOPEN"
|
PreprocessorDefinitions="__NT__;NDEBUG;DBUG_OFF;HAVE_INNOBASE_DB;HAVE_BERKELEY_DB;HAVE_ARCHIVE_DB;HAVE_BLACKHOLE_DB;HAVE_EXAMPLE_DB;HAVE_FEDERATED_DB;MYSQL_SERVER;_WINDOWS;_CONSOLE;HAVE_DLOPEN"
|
||||||
StringPooling="TRUE"
|
StringPooling="TRUE"
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
EnableFunctionLevelLinking="TRUE"
|
EnableFunctionLevelLinking="TRUE"
|
||||||
@ -8570,6 +8570,81 @@
|
|||||||
PreprocessorDefinitions=""/>
|
PreprocessorDefinitions=""/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="sql_locale.cpp">
|
||||||
|
<FileConfiguration
|
||||||
|
Name="classic nt|Win32">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="2"
|
||||||
|
AdditionalIncludeDirectories=""
|
||||||
|
PreprocessorDefinitions=""/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Max|Win32">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="2"
|
||||||
|
AdditionalIncludeDirectories=""
|
||||||
|
PreprocessorDefinitions=""/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Max nt|Win32">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="2"
|
||||||
|
AdditionalIncludeDirectories=""
|
||||||
|
PreprocessorDefinitions=""/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="nt|Win32">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="2"
|
||||||
|
AdditionalIncludeDirectories=""
|
||||||
|
PreprocessorDefinitions=""/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="pro nt|Win32">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="2"
|
||||||
|
AdditionalIncludeDirectories=""
|
||||||
|
PreprocessorDefinitions=""/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|Win32">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="0"
|
||||||
|
AdditionalIncludeDirectories=""
|
||||||
|
PreprocessorDefinitions=""/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="pro|Win32">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="2"
|
||||||
|
AdditionalIncludeDirectories=""
|
||||||
|
PreprocessorDefinitions=""/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="classic|Win32">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="2"
|
||||||
|
AdditionalIncludeDirectories=""
|
||||||
|
PreprocessorDefinitions=""/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Release|Win32">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="2"
|
||||||
|
AdditionalIncludeDirectories=""
|
||||||
|
PreprocessorDefinitions=""/>
|
||||||
|
</FileConfiguration>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="uniques.cpp">
|
RelativePath="uniques.cpp">
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
|
12
configure.in
12
configure.in
@ -7,7 +7,7 @@ AC_INIT(sql/mysqld.cc)
|
|||||||
AC_CANONICAL_SYSTEM
|
AC_CANONICAL_SYSTEM
|
||||||
# The Docs Makefile.am parses this line!
|
# The Docs Makefile.am parses this line!
|
||||||
# remember to also change ndb version below and update version.c in ndb
|
# remember to also change ndb version below and update version.c in ndb
|
||||||
AM_INIT_AUTOMAKE(mysql, 5.0.24)
|
AM_INIT_AUTOMAKE(mysql, 5.0.25)
|
||||||
AM_CONFIG_HEADER(config.h)
|
AM_CONFIG_HEADER(config.h)
|
||||||
|
|
||||||
PROTOCOL_VERSION=10
|
PROTOCOL_VERSION=10
|
||||||
@ -19,7 +19,7 @@ SHARED_LIB_VERSION=$SHARED_LIB_MAJOR_VERSION:0:0
|
|||||||
# ndb version
|
# ndb version
|
||||||
NDB_VERSION_MAJOR=5
|
NDB_VERSION_MAJOR=5
|
||||||
NDB_VERSION_MINOR=0
|
NDB_VERSION_MINOR=0
|
||||||
NDB_VERSION_BUILD=24
|
NDB_VERSION_BUILD=25
|
||||||
NDB_VERSION_STATUS=""
|
NDB_VERSION_STATUS=""
|
||||||
|
|
||||||
# Set all version vars based on $VERSION. How do we do this more elegant ?
|
# Set all version vars based on $VERSION. How do we do this more elegant ?
|
||||||
@ -382,18 +382,18 @@ fi
|
|||||||
AC_SUBST(LD_VERSION_SCRIPT)
|
AC_SUBST(LD_VERSION_SCRIPT)
|
||||||
|
|
||||||
# Avoid bug in fcntl on some versions of linux
|
# Avoid bug in fcntl on some versions of linux
|
||||||
AC_MSG_CHECKING("if we should use 'skip-locking' as default for $target_os")
|
AC_MSG_CHECKING([if we should use 'skip-external-locking' as default for $target_os])
|
||||||
# Any variation of Linux
|
# Any variation of Linux
|
||||||
if expr "$target_os" : "[[Ll]]inux.*" > /dev/null
|
if expr "$target_os" : "[[Ll]]inux.*" > /dev/null
|
||||||
then
|
then
|
||||||
MYSQLD_DEFAULT_SWITCHES="--skip-locking"
|
MYSQLD_DEFAULT_SWITCHES="--skip-external-locking"
|
||||||
TARGET_LINUX="true"
|
TARGET_LINUX="true"
|
||||||
AC_MSG_RESULT("yes")
|
AC_MSG_RESULT([yes])
|
||||||
AC_DEFINE([TARGET_OS_LINUX], [1], [Whether we build for Linux])
|
AC_DEFINE([TARGET_OS_LINUX], [1], [Whether we build for Linux])
|
||||||
else
|
else
|
||||||
MYSQLD_DEFAULT_SWITCHES=""
|
MYSQLD_DEFAULT_SWITCHES=""
|
||||||
TARGET_LINUX="false"
|
TARGET_LINUX="false"
|
||||||
AC_MSG_RESULT("no")
|
AC_MSG_RESULT([no])
|
||||||
fi
|
fi
|
||||||
AC_SUBST(MYSQLD_DEFAULT_SWITCHES)
|
AC_SUBST(MYSQLD_DEFAULT_SWITCHES)
|
||||||
AC_SUBST(TARGET_LINUX)
|
AC_SUBST(TARGET_LINUX)
|
||||||
|
@ -44,6 +44,7 @@ int main(int argc, char **argv)
|
|||||||
get_options(argc,argv);
|
get_options(argc,argv);
|
||||||
|
|
||||||
bzero(&hp_create_info, sizeof(hp_create_info));
|
bzero(&hp_create_info, sizeof(hp_create_info));
|
||||||
|
hp_create_info.max_table_size= 1024L*1024L;
|
||||||
|
|
||||||
keyinfo[0].keysegs=1;
|
keyinfo[0].keysegs=1;
|
||||||
keyinfo[0].seg=keyseg;
|
keyinfo[0].seg=keyseg;
|
||||||
@ -58,7 +59,7 @@ int main(int argc, char **argv)
|
|||||||
bzero((gptr) flags,sizeof(flags));
|
bzero((gptr) flags,sizeof(flags));
|
||||||
|
|
||||||
printf("- Creating heap-file\n");
|
printf("- Creating heap-file\n");
|
||||||
if (heap_create(filename,1,keyinfo,30,(ulong) flag*100000l,10l,
|
if (heap_create(filename,1,keyinfo,30,(ulong) flag*100000L,10L,
|
||||||
&hp_create_info) ||
|
&hp_create_info) ||
|
||||||
!(file= heap_open(filename, 2)))
|
!(file= heap_open(filename, 2)))
|
||||||
goto err;
|
goto err;
|
||||||
|
@ -74,6 +74,7 @@ int main(int argc, char *argv[])
|
|||||||
get_options(argc,argv);
|
get_options(argc,argv);
|
||||||
|
|
||||||
bzero(&hp_create_info, sizeof(hp_create_info));
|
bzero(&hp_create_info, sizeof(hp_create_info));
|
||||||
|
hp_create_info.max_table_size= 1024L*1024L;
|
||||||
|
|
||||||
write_count=update=opt_delete=0;
|
write_count=update=opt_delete=0;
|
||||||
key_check=0;
|
key_check=0;
|
||||||
|
@ -152,7 +152,16 @@ enum ha_extra_function {
|
|||||||
other fields intact. When this is off (by default) InnoDB will use memcpy
|
other fields intact. When this is off (by default) InnoDB will use memcpy
|
||||||
to overwrite entire row.
|
to overwrite entire row.
|
||||||
*/
|
*/
|
||||||
HA_EXTRA_KEYREAD_PRESERVE_FIELDS
|
HA_EXTRA_KEYREAD_PRESERVE_FIELDS,
|
||||||
|
/*
|
||||||
|
Informs handler that write_row() which tries to insert new row into the
|
||||||
|
table and encounters some already existing row with same primary/unique
|
||||||
|
key can replace old row with new row instead of reporting error (basically
|
||||||
|
it informs handler that we do REPLACE instead of simple INSERT).
|
||||||
|
Off by default.
|
||||||
|
*/
|
||||||
|
HA_EXTRA_WRITE_CAN_REPLACE,
|
||||||
|
HA_EXTRA_WRITE_CANNOT_REPLACE
|
||||||
};
|
};
|
||||||
|
|
||||||
/* The following is parameter to ha_panic() */
|
/* The following is parameter to ha_panic() */
|
||||||
|
@ -1071,8 +1071,8 @@ do { doubleget_union _tmp; \
|
|||||||
#define doublestore(T,V) do { *((long *) T) = ((doubleget_union *)&V)->m[0]; \
|
#define doublestore(T,V) do { *((long *) T) = ((doubleget_union *)&V)->m[0]; \
|
||||||
*(((long *) T)+1) = ((doubleget_union *)&V)->m[1]; \
|
*(((long *) T)+1) = ((doubleget_union *)&V)->m[1]; \
|
||||||
} while (0)
|
} while (0)
|
||||||
#define float4get(V,M) do { *((long *) &(V)) = *((long*) (M)); } while(0)
|
#define float4get(V,M) do { *((float *) &(V)) = *((float*) (M)); } while(0)
|
||||||
#define float8get(V,M) doubleget((V),(M))
|
#define float8get(V,M) doubleget((V),(M))
|
||||||
#define float4store(V,M) memcpy((byte*) V,(byte*) (&M),sizeof(float))
|
#define float4store(V,M) memcpy((byte*) V,(byte*) (&M),sizeof(float))
|
||||||
#define floatstore(T,V) memcpy((byte*)(T), (byte*)(&V),sizeof(float))
|
#define floatstore(T,V) memcpy((byte*)(T), (byte*)(&V),sizeof(float))
|
||||||
#define floatget(V,M) memcpy((byte*) &V,(byte*) (M),sizeof(float))
|
#define floatget(V,M) memcpy((byte*) &V,(byte*) (M),sizeof(float))
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
#ifndef _my_handler_h
|
#ifndef _my_handler_h
|
||||||
#define _my_handler_h
|
#define _my_handler_h
|
||||||
|
|
||||||
#include "my_global.h"
|
|
||||||
#include "my_base.h"
|
#include "my_base.h"
|
||||||
#include "m_ctype.h"
|
#include "m_ctype.h"
|
||||||
#include "myisampack.h"
|
#include "myisampack.h"
|
||||||
|
@ -597,7 +597,7 @@ extern gptr _my_memdup(const byte *from,uint length,
|
|||||||
const char *sFile, uint uLine,myf MyFlag);
|
const char *sFile, uint uLine,myf MyFlag);
|
||||||
extern my_string _my_strdup(const char *from, const char *sFile, uint uLine,
|
extern my_string _my_strdup(const char *from, const char *sFile, uint uLine,
|
||||||
myf MyFlag);
|
myf MyFlag);
|
||||||
extern char *_my_strdup_with_length(const byte *from, uint length,
|
extern char *_my_strdup_with_length(const char *from, uint length,
|
||||||
const char *sFile, uint uLine,
|
const char *sFile, uint uLine,
|
||||||
myf MyFlag);
|
myf MyFlag);
|
||||||
|
|
||||||
|
@ -2391,10 +2391,9 @@ static void net_store_datetime(NET *net, MYSQL_TIME *tm)
|
|||||||
|
|
||||||
static void store_param_date(NET *net, MYSQL_BIND *param)
|
static void store_param_date(NET *net, MYSQL_BIND *param)
|
||||||
{
|
{
|
||||||
MYSQL_TIME *tm= (MYSQL_TIME *) param->buffer;
|
MYSQL_TIME tm= *((MYSQL_TIME *) param->buffer);
|
||||||
tm->hour= tm->minute= tm->second= 0;
|
tm.hour= tm.minute= tm.second= tm.second_part= 0;
|
||||||
tm->second_part= 0;
|
net_store_datetime(net, &tm);
|
||||||
net_store_datetime(net, tm);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void store_param_datetime(NET *net, MYSQL_BIND *param)
|
static void store_param_datetime(NET *net, MYSQL_BIND *param)
|
||||||
|
@ -51,7 +51,7 @@ sqlsources = derror.cc field.cc field_conv.cc strfunc.cc filesort.cc \
|
|||||||
key.cc lock.cc log.cc log_event.cc sql_state.c \
|
key.cc lock.cc log.cc log_event.cc sql_state.c \
|
||||||
protocol.cc net_serv.cc opt_range.cc \
|
protocol.cc net_serv.cc opt_range.cc \
|
||||||
opt_sum.cc procedure.cc records.cc sql_acl.cc \
|
opt_sum.cc procedure.cc records.cc sql_acl.cc \
|
||||||
sql_load.cc discover.cc \
|
sql_load.cc discover.cc sql_locale.cc \
|
||||||
sql_analyse.cc sql_base.cc sql_cache.cc sql_class.cc \
|
sql_analyse.cc sql_base.cc sql_cache.cc sql_class.cc \
|
||||||
sql_crypt.cc sql_db.cc sql_delete.cc sql_error.cc sql_insert.cc \
|
sql_crypt.cc sql_db.cc sql_delete.cc sql_error.cc sql_insert.cc \
|
||||||
sql_lex.cc sql_list.cc sql_manager.cc sql_map.cc sql_parse.cc \
|
sql_lex.cc sql_list.cc sql_manager.cc sql_map.cc sql_parse.cc \
|
||||||
|
@ -1158,13 +1158,14 @@ int chk_data_link(MI_CHECK *param, MI_INFO *info,int extend)
|
|||||||
#ifdef HAVE_RTREE_KEYS
|
#ifdef HAVE_RTREE_KEYS
|
||||||
(keyinfo->flag & HA_SPATIAL) ?
|
(keyinfo->flag & HA_SPATIAL) ?
|
||||||
rtree_find_first(info, key, info->lastkey, key_length,
|
rtree_find_first(info, key, info->lastkey, key_length,
|
||||||
SEARCH_SAME) :
|
MBR_EQUAL | MBR_DATA) :
|
||||||
#endif
|
#endif
|
||||||
_mi_search(info,keyinfo,info->lastkey,key_length,
|
_mi_search(info,keyinfo,info->lastkey,key_length,
|
||||||
SEARCH_SAME, info->s->state.key_root[key]);
|
SEARCH_SAME, info->s->state.key_root[key]);
|
||||||
if (search_result)
|
if (search_result)
|
||||||
{
|
{
|
||||||
mi_check_print_error(param,"Record at: %10s Can't find key for index: %2d",
|
mi_check_print_error(param,"Record at: %10s "
|
||||||
|
"Can't find key for index: %2d",
|
||||||
llstr(start_recpos,llbuff),key+1);
|
llstr(start_recpos,llbuff),key+1);
|
||||||
if (error++ > MAXERR || !(param->testflag & T_VERBOSE))
|
if (error++ > MAXERR || !(param->testflag & T_VERBOSE))
|
||||||
goto err2;
|
goto err2;
|
||||||
|
@ -59,6 +59,8 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
|
|||||||
my_off_t key_root[MI_MAX_POSSIBLE_KEY],key_del[MI_MAX_KEY_BLOCK_SIZE];
|
my_off_t key_root[MI_MAX_POSSIBLE_KEY],key_del[MI_MAX_KEY_BLOCK_SIZE];
|
||||||
MI_CREATE_INFO tmp_create_info;
|
MI_CREATE_INFO tmp_create_info;
|
||||||
DBUG_ENTER("mi_create");
|
DBUG_ENTER("mi_create");
|
||||||
|
DBUG_PRINT("enter", ("keys: %u columns: %u uniques: %u flags: %u",
|
||||||
|
keys, columns, uniques, flags));
|
||||||
|
|
||||||
if (!ci)
|
if (!ci)
|
||||||
{
|
{
|
||||||
@ -471,6 +473,16 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
|
|||||||
uniques * MI_UNIQUEDEF_SIZE +
|
uniques * MI_UNIQUEDEF_SIZE +
|
||||||
(key_segs + unique_key_parts)*HA_KEYSEG_SIZE+
|
(key_segs + unique_key_parts)*HA_KEYSEG_SIZE+
|
||||||
columns*MI_COLUMNDEF_SIZE);
|
columns*MI_COLUMNDEF_SIZE);
|
||||||
|
DBUG_PRINT("info", ("info_length: %u", info_length));
|
||||||
|
/* There are only 16 bits for the total header length. */
|
||||||
|
if (info_length > 65535)
|
||||||
|
{
|
||||||
|
my_printf_error(0, "MyISAM table '%s' has too many columns and/or "
|
||||||
|
"indexes and/or unique constraints.",
|
||||||
|
MYF(0), name + dirname_length(name));
|
||||||
|
my_errno= HA_WRONG_CREATE_OPTION;
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
bmove(share.state.header.file_version,(byte*) myisam_file_magic,4);
|
bmove(share.state.header.file_version,(byte*) myisam_file_magic,4);
|
||||||
ci->old_options=options| (ci->old_options & HA_OPTION_TEMP_COMPRESS_RECORD ?
|
ci->old_options=options| (ci->old_options & HA_OPTION_TEMP_COMPRESS_RECORD ?
|
||||||
@ -545,9 +557,20 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
|
|||||||
|
|
||||||
if (ci->index_file_name)
|
if (ci->index_file_name)
|
||||||
{
|
{
|
||||||
fn_format(filename, ci->index_file_name,"",MI_NAME_IEXT,4);
|
if (options & HA_OPTION_TMP_TABLE)
|
||||||
fn_format(linkname,name, "",MI_NAME_IEXT,4);
|
{
|
||||||
linkname_ptr=linkname;
|
char *path;
|
||||||
|
/* chop off the table name, tempory tables use generated name */
|
||||||
|
if ((path= strrchr(ci->index_file_name, FN_LIBCHAR)))
|
||||||
|
*path= '\0';
|
||||||
|
fn_format(filename, name, ci->index_file_name, MI_NAME_IEXT,
|
||||||
|
MY_REPLACE_DIR | MY_UNPACK_FILENAME);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
fn_format(filename, ci->index_file_name, "",
|
||||||
|
MI_NAME_IEXT, MY_UNPACK_FILENAME);
|
||||||
|
fn_format(linkname, name, "", MI_NAME_IEXT, MY_UNPACK_FILENAME);
|
||||||
|
linkname_ptr= linkname;
|
||||||
/*
|
/*
|
||||||
Don't create the table if the link or file exists to ensure that one
|
Don't create the table if the link or file exists to ensure that one
|
||||||
doesn't accidently destroy another table.
|
doesn't accidently destroy another table.
|
||||||
@ -601,10 +624,21 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
|
|||||||
{
|
{
|
||||||
if (ci->data_file_name)
|
if (ci->data_file_name)
|
||||||
{
|
{
|
||||||
fn_format(filename, ci->data_file_name,"",MI_NAME_DEXT,4);
|
if (options & HA_OPTION_TMP_TABLE)
|
||||||
fn_format(linkname, name, "",MI_NAME_DEXT,4);
|
{
|
||||||
linkname_ptr=linkname;
|
char *path;
|
||||||
create_flag=0;
|
/* chop off the table name, tempory tables use generated name */
|
||||||
|
if ((path= strrchr(ci->data_file_name, FN_LIBCHAR)))
|
||||||
|
*path= '\0';
|
||||||
|
fn_format(filename, name, ci->data_file_name, MI_NAME_DEXT,
|
||||||
|
MY_REPLACE_DIR | MY_UNPACK_FILENAME);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
fn_format(filename, ci->data_file_name, "",
|
||||||
|
MI_NAME_DEXT, MY_UNPACK_FILENAME);
|
||||||
|
fn_format(linkname, name, "", MI_NAME_DEXT, MY_UNPACK_FILENAME);
|
||||||
|
linkname_ptr= linkname;
|
||||||
|
create_flag= 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -620,6 +654,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
|
|||||||
errpos=3;
|
errpos=3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DBUG_PRINT("info", ("write state info and base info"));
|
||||||
if (mi_state_info_write(file, &share.state, 2) ||
|
if (mi_state_info_write(file, &share.state, 2) ||
|
||||||
mi_base_info_write(file, &share.base))
|
mi_base_info_write(file, &share.base))
|
||||||
goto err;
|
goto err;
|
||||||
@ -633,6 +668,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Write key and keyseg definitions */
|
/* Write key and keyseg definitions */
|
||||||
|
DBUG_PRINT("info", ("write key and keyseg definitions"));
|
||||||
for (i=0 ; i < share.base.keys - uniques; i++)
|
for (i=0 ; i < share.base.keys - uniques; i++)
|
||||||
{
|
{
|
||||||
uint sp_segs=(keydefs[i].flag & HA_SPATIAL) ? 2*SPDIMS : 0;
|
uint sp_segs=(keydefs[i].flag & HA_SPATIAL) ? 2*SPDIMS : 0;
|
||||||
@ -683,6 +719,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Save unique definition */
|
/* Save unique definition */
|
||||||
|
DBUG_PRINT("info", ("write unique definitions"));
|
||||||
for (i=0 ; i < share.state.header.uniques ; i++)
|
for (i=0 ; i < share.state.header.uniques ; i++)
|
||||||
{
|
{
|
||||||
HA_KEYSEG *keyseg_end;
|
HA_KEYSEG *keyseg_end;
|
||||||
@ -713,6 +750,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
|
|||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
DBUG_PRINT("info", ("write field definitions"));
|
||||||
for (i=0 ; i < share.base.fields ; i++)
|
for (i=0 ; i < share.base.fields ; i++)
|
||||||
if (mi_recinfo_write(file, &recinfo[i]))
|
if (mi_recinfo_write(file, &recinfo[i]))
|
||||||
goto err;
|
goto err;
|
||||||
@ -727,6 +765,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Enlarge files */
|
/* Enlarge files */
|
||||||
|
DBUG_PRINT("info", ("enlarge to keystart: %lu", (ulong) share.base.keystart));
|
||||||
if (my_chsize(file,(ulong) share.base.keystart,0,MYF(0)))
|
if (my_chsize(file,(ulong) share.base.keystart,0,MYF(0)))
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
|
@ -34,12 +34,24 @@ int mi_delete_table(const char *name)
|
|||||||
#ifdef USE_RAID
|
#ifdef USE_RAID
|
||||||
{
|
{
|
||||||
MI_INFO *info;
|
MI_INFO *info;
|
||||||
/* we use 'open_for_repair' to be able to delete a crashed table */
|
/*
|
||||||
if (!(info=mi_open(name, O_RDONLY, HA_OPEN_FOR_REPAIR)))
|
When built with RAID support, we need to determine if this table
|
||||||
DBUG_RETURN(my_errno);
|
makes use of the raid feature. If yes, we need to remove all raid
|
||||||
raid_type = info->s->base.raid_type;
|
chunks. This is done with my_raid_delete(). Unfortunately it is
|
||||||
raid_chunks = info->s->base.raid_chunks;
|
necessary to open the table just to check this. We use
|
||||||
mi_close(info);
|
'open_for_repair' to be able to open even a crashed table. If even
|
||||||
|
this open fails, we assume no raid configuration for this table
|
||||||
|
and try to remove the normal data file only. This may however
|
||||||
|
leave the raid chunks behind.
|
||||||
|
*/
|
||||||
|
if (!(info= mi_open(name, O_RDONLY, HA_OPEN_FOR_REPAIR)))
|
||||||
|
raid_type= 0;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
raid_type= info->s->base.raid_type;
|
||||||
|
raid_chunks= info->s->base.raid_chunks;
|
||||||
|
mi_close(info);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#ifdef EXTRA_DEBUG
|
#ifdef EXTRA_DEBUG
|
||||||
check_table_is_closed(name,"delete");
|
check_table_is_closed(name,"delete");
|
||||||
|
@ -1155,6 +1155,9 @@ int _mi_read_dynamic_record(MI_INFO *info, my_off_t filepos, byte *buf)
|
|||||||
info->rec_cache.pos_in_file <= block_info.next_filepos &&
|
info->rec_cache.pos_in_file <= block_info.next_filepos &&
|
||||||
flush_io_cache(&info->rec_cache))
|
flush_io_cache(&info->rec_cache))
|
||||||
goto err;
|
goto err;
|
||||||
|
/* A corrupted table can have wrong pointers. (Bug# 19835) */
|
||||||
|
if (block_info.next_filepos == HA_OFFSET_ERROR)
|
||||||
|
goto panic;
|
||||||
info->rec_cache.seek_not_done=1;
|
info->rec_cache.seek_not_done=1;
|
||||||
if ((b_type=_mi_get_block_info(&block_info,file,
|
if ((b_type=_mi_get_block_info(&block_info,file,
|
||||||
block_info.next_filepos))
|
block_info.next_filepos))
|
||||||
|
@ -64,7 +64,7 @@ uint _mi_make_key(register MI_INFO *info, uint keynr, uchar *key,
|
|||||||
TODO: nulls processing
|
TODO: nulls processing
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_SPATIAL
|
#ifdef HAVE_SPATIAL
|
||||||
return sp_make_key(info,keynr,key,record,filepos);
|
DBUG_RETURN(sp_make_key(info,keynr,key,record,filepos));
|
||||||
#else
|
#else
|
||||||
DBUG_ASSERT(0); /* mi_open should check that this never happens*/
|
DBUG_ASSERT(0); /* mi_open should check that this never happens*/
|
||||||
#endif
|
#endif
|
||||||
|
@ -68,6 +68,7 @@ int mi_rkey(MI_INFO *info, byte *buf, int inx, const byte *key, uint key_len,
|
|||||||
|
|
||||||
if (fast_mi_readinfo(info))
|
if (fast_mi_readinfo(info))
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
if (share->concurrent_insert)
|
if (share->concurrent_insert)
|
||||||
rw_rdlock(&share->key_root_lock[inx]);
|
rw_rdlock(&share->key_root_lock[inx]);
|
||||||
|
|
||||||
@ -90,24 +91,35 @@ int mi_rkey(MI_INFO *info, byte *buf, int inx, const byte *key, uint key_len,
|
|||||||
case HA_KEY_ALG_BTREE:
|
case HA_KEY_ALG_BTREE:
|
||||||
default:
|
default:
|
||||||
if (!_mi_search(info, keyinfo, key_buff, use_key_length,
|
if (!_mi_search(info, keyinfo, key_buff, use_key_length,
|
||||||
myisam_read_vec[search_flag], info->s->state.key_root[inx]))
|
myisam_read_vec[search_flag], info->s->state.key_root[inx]))
|
||||||
{
|
{
|
||||||
while (info->lastpos >= info->state->data_file_length)
|
/*
|
||||||
|
If we are searching for an exact key (including the data pointer)
|
||||||
|
and this was added by an concurrent insert,
|
||||||
|
then the result is "key not found".
|
||||||
|
*/
|
||||||
|
if ((search_flag == HA_READ_KEY_EXACT) &&
|
||||||
|
(info->lastpos >= info->state->data_file_length))
|
||||||
|
{
|
||||||
|
my_errno= HA_ERR_KEY_NOT_FOUND;
|
||||||
|
info->lastpos= HA_OFFSET_ERROR;
|
||||||
|
}
|
||||||
|
else while (info->lastpos >= info->state->data_file_length)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
Skip rows that are inserted by other threads since we got a lock
|
Skip rows that are inserted by other threads since we got a lock
|
||||||
Note that this can only happen if we are not searching after an
|
Note that this can only happen if we are not searching after an
|
||||||
exact key, because the keys are sorted according to position
|
exact key, because the keys are sorted according to position
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (_mi_search_next(info, keyinfo, info->lastkey,
|
if (_mi_search_next(info, keyinfo, info->lastkey,
|
||||||
info->lastkey_length,
|
info->lastkey_length,
|
||||||
myisam_readnext_vec[search_flag],
|
myisam_readnext_vec[search_flag],
|
||||||
info->s->state.key_root[inx]))
|
info->s->state.key_root[inx]))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (share->concurrent_insert)
|
if (share->concurrent_insert)
|
||||||
rw_unlock(&share->key_root_lock[inx]);
|
rw_unlock(&share->key_root_lock[inx]);
|
||||||
|
|
||||||
|
@ -183,9 +183,11 @@ int rtree_find_first(MI_INFO *info, uint keynr, uchar *key, uint key_length,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Save searched key */
|
/*
|
||||||
memcpy(info->first_mbr_key, key, keyinfo->keylength -
|
Save searched key, include data pointer.
|
||||||
info->s->base.rec_reflength);
|
The data pointer is required if the search_flag contains MBR_DATA.
|
||||||
|
*/
|
||||||
|
memcpy(info->first_mbr_key, key, keyinfo->keylength);
|
||||||
info->last_rkey_length = key_length;
|
info->last_rkey_length = key_length;
|
||||||
|
|
||||||
info->rtree_recursion_depth = -1;
|
info->rtree_recursion_depth = -1;
|
||||||
|
@ -52,10 +52,14 @@
|
|||||||
if (EQUAL_CMP(amin, amax, bmin, bmax)) \
|
if (EQUAL_CMP(amin, amax, bmin, bmax)) \
|
||||||
return 1; \
|
return 1; \
|
||||||
} \
|
} \
|
||||||
else /* if (nextflag & MBR_DISJOINT) */ \
|
else if (nextflag & MBR_DISJOINT) \
|
||||||
{ \
|
{ \
|
||||||
if (DISJOINT_CMP(amin, amax, bmin, bmax)) \
|
if (DISJOINT_CMP(amin, amax, bmin, bmax)) \
|
||||||
return 1; \
|
return 1; \
|
||||||
|
}\
|
||||||
|
else /* if unknown comparison operator */ \
|
||||||
|
{ \
|
||||||
|
DBUG_ASSERT(0); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define RT_CMP_KORR(type, korr_func, len, nextflag) \
|
#define RT_CMP_KORR(type, korr_func, len, nextflag) \
|
||||||
|
@ -101,15 +101,15 @@ uninstall-local:
|
|||||||
@RM@ -f -r $(DESTDIR)$(testdir)
|
@RM@ -f -r $(DESTDIR)$(testdir)
|
||||||
|
|
||||||
std_data/client-key.pem: $(top_srcdir)/SSL/$(@F)
|
std_data/client-key.pem: $(top_srcdir)/SSL/$(@F)
|
||||||
@CP@ $(top_srcdir)/SSL/$(@F) $(srcdir)/std_data
|
@RM@ -f $@; @CP@ $(top_srcdir)/SSL/$(@F) $(srcdir)/std_data
|
||||||
std_data/client-cert.pem: $(top_srcdir)/SSL/$(@F)
|
std_data/client-cert.pem: $(top_srcdir)/SSL/$(@F)
|
||||||
@CP@ $(top_srcdir)/SSL/$(@F) $(srcdir)/std_data
|
@RM@ -f $@; @CP@ $(top_srcdir)/SSL/$(@F) $(srcdir)/std_data
|
||||||
std_data/cacert.pem: $(top_srcdir)/SSL/$(@F)
|
std_data/cacert.pem: $(top_srcdir)/SSL/$(@F)
|
||||||
@CP@ $(top_srcdir)/SSL/$(@F) $(srcdir)/std_data
|
@RM@ -f $@; @CP@ $(top_srcdir)/SSL/$(@F) $(srcdir)/std_data
|
||||||
std_data/server-cert.pem: $(top_srcdir)/SSL/$(@F)
|
std_data/server-cert.pem: $(top_srcdir)/SSL/$(@F)
|
||||||
@CP@ $(top_srcdir)/SSL/$(@F) $(srcdir)/std_data
|
@RM@ -f $@; @CP@ $(top_srcdir)/SSL/$(@F) $(srcdir)/std_data
|
||||||
std_data/server-key.pem: $(top_srcdir)/SSL/$(@F)
|
std_data/server-key.pem: $(top_srcdir)/SSL/$(@F)
|
||||||
@CP@ $(top_srcdir)/SSL/$(@F) $(srcdir)/std_data
|
@RM@ -f $@; @CP@ $(top_srcdir)/SSL/$(@F) $(srcdir)/std_data
|
||||||
|
|
||||||
SUFFIXES = .sh
|
SUFFIXES = .sh
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
-- require r/ndb_default_cluster.require
|
-- require r/ndb_default_cluster.require
|
||||||
disable_query_log;
|
disable_query_log;
|
||||||
show status like "Ndb_connected_host";
|
show status like "Ndb_config_from_host";
|
||||||
enable_query_log;
|
enable_query_log;
|
||||||
|
@ -534,6 +534,11 @@ sub command_line_setup () {
|
|||||||
"($opt_master_myport - $opt_master_myport + 10)");
|
"($opt_master_myport - $opt_master_myport + 10)");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# This is needed for test log evaluation in "gen-build-status-page"
|
||||||
|
# in all cases where the calling tool does not log the commands
|
||||||
|
# directly before it executes them, like "make test-force-pl" in RPM builds.
|
||||||
|
print "Logging: $0 ", join(" ", @ARGV), "\n";
|
||||||
|
|
||||||
# Read the command line
|
# Read the command line
|
||||||
# Note: Keep list, and the order, in sync with usage at end of this file
|
# Note: Keep list, and the order, in sync with usage at end of this file
|
||||||
|
|
||||||
|
@ -1381,16 +1381,16 @@ start_master()
|
|||||||
|
|
||||||
if [ x$DO_DDD = x1 ]
|
if [ x$DO_DDD = x1 ]
|
||||||
then
|
then
|
||||||
$ECHO "set args $master_args" > $GDB_MASTER_INIT
|
$ECHO "set args $master_args" > $GDB_MASTER_INIT$1
|
||||||
manager_launch master ddd -display $DISPLAY --debugger \
|
manager_launch master ddd -display $DISPLAY --debugger \
|
||||||
"gdb -x $GDB_MASTER_INIT" $MASTER_MYSQLD
|
"gdb -x $GDB_MASTER_INIT$1" $MASTER_MYSQLD
|
||||||
elif [ x$DO_GDB = x1 ]
|
elif [ x$DO_GDB = x1 ]
|
||||||
then
|
then
|
||||||
if [ x$MANUAL_GDB = x1 ]
|
if [ x$MANUAL_GDB = x1 ]
|
||||||
then
|
then
|
||||||
$ECHO "set args $master_args" > $GDB_MASTER_INIT
|
$ECHO "set args $master_args" > $GDB_MASTER_INIT$1
|
||||||
$ECHO "To start gdb for the master , type in another window:"
|
$ECHO "To start gdb for the master , type in another window:"
|
||||||
$ECHO "cd $CWD ; gdb -x $GDB_MASTER_INIT $MASTER_MYSQLD"
|
$ECHO "cd $CWD ; gdb -x $GDB_MASTER_INIT$1 $MASTER_MYSQLD"
|
||||||
wait_for_master=1500
|
wait_for_master=1500
|
||||||
else
|
else
|
||||||
( $ECHO set args $master_args;
|
( $ECHO set args $master_args;
|
||||||
@ -1402,9 +1402,9 @@ disa 1
|
|||||||
end
|
end
|
||||||
r
|
r
|
||||||
EOF
|
EOF
|
||||||
fi ) > $GDB_MASTER_INIT
|
fi ) > $GDB_MASTER_INIT$1
|
||||||
manager_launch master $XTERM -display $DISPLAY \
|
manager_launch master $XTERM -display $DISPLAY \
|
||||||
-title "Master" -e gdb -x $GDB_MASTER_INIT $MASTER_MYSQLD
|
-title "Master" -e gdb -x $GDB_MASTER_INIT$1 $MASTER_MYSQLD
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
manager_launch master $MASTER_MYSQLD $master_args
|
manager_launch master $MASTER_MYSQLD $master_args
|
||||||
@ -2088,13 +2088,7 @@ then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
start_manager
|
start_manager
|
||||||
|
mysql_start
|
||||||
# Do not automagically start daemons if we are in gdb or running only one test
|
|
||||||
# case
|
|
||||||
if [ -z "$DO_GDB" ] && [ -z "$DO_DDD" ]
|
|
||||||
then
|
|
||||||
mysql_start
|
|
||||||
fi
|
|
||||||
$ECHO "Loading Standard Test Databases"
|
$ECHO "Loading Standard Test Databases"
|
||||||
mysql_loadstd
|
mysql_loadstd
|
||||||
fi
|
fi
|
||||||
|
@ -39,10 +39,10 @@ t2 CREATE TABLE `t2` (
|
|||||||
`Field_name` varbinary(255) NOT NULL default '',
|
`Field_name` varbinary(255) NOT NULL default '',
|
||||||
`Min_value` varbinary(255) default NULL,
|
`Min_value` varbinary(255) default NULL,
|
||||||
`Max_value` varbinary(255) default NULL,
|
`Max_value` varbinary(255) default NULL,
|
||||||
`Min_length` bigint(11) NOT NULL default '0',
|
`Min_length` int(11) NOT NULL default '0',
|
||||||
`Max_length` bigint(11) NOT NULL default '0',
|
`Max_length` int(11) NOT NULL default '0',
|
||||||
`Empties_or_zeros` bigint(11) NOT NULL default '0',
|
`Empties_or_zeros` int(11) NOT NULL default '0',
|
||||||
`Nulls` bigint(11) NOT NULL default '0',
|
`Nulls` int(11) NOT NULL default '0',
|
||||||
`Avg_value_or_avg_length` varbinary(255) NOT NULL default '',
|
`Avg_value_or_avg_length` varbinary(255) NOT NULL default '',
|
||||||
`Std` varbinary(255) default NULL,
|
`Std` varbinary(255) default NULL,
|
||||||
`Optimal_fieldtype` varbinary(64) NOT NULL default ''
|
`Optimal_fieldtype` varbinary(64) NOT NULL default ''
|
||||||
@ -58,10 +58,10 @@ t2 CREATE TABLE `t2` (
|
|||||||
`Field_name` varbinary(255) NOT NULL default '',
|
`Field_name` varbinary(255) NOT NULL default '',
|
||||||
`Min_value` varbinary(255) default NULL,
|
`Min_value` varbinary(255) default NULL,
|
||||||
`Max_value` varbinary(255) default NULL,
|
`Max_value` varbinary(255) default NULL,
|
||||||
`Min_length` bigint(11) NOT NULL default '0',
|
`Min_length` int(11) NOT NULL default '0',
|
||||||
`Max_length` bigint(11) NOT NULL default '0',
|
`Max_length` int(11) NOT NULL default '0',
|
||||||
`Empties_or_zeros` bigint(11) NOT NULL default '0',
|
`Empties_or_zeros` int(11) NOT NULL default '0',
|
||||||
`Nulls` bigint(11) NOT NULL default '0',
|
`Nulls` int(11) NOT NULL default '0',
|
||||||
`Avg_value_or_avg_length` varbinary(255) NOT NULL default '',
|
`Avg_value_or_avg_length` varbinary(255) NOT NULL default '',
|
||||||
`Std` varbinary(255) default NULL,
|
`Std` varbinary(255) default NULL,
|
||||||
`Optimal_fieldtype` varbinary(64) NOT NULL default ''
|
`Optimal_fieldtype` varbinary(64) NOT NULL default ''
|
||||||
@ -81,10 +81,10 @@ t2 CREATE TABLE `t2` (
|
|||||||
`Field_name` varbinary(255) NOT NULL default '',
|
`Field_name` varbinary(255) NOT NULL default '',
|
||||||
`Min_value` varbinary(255) default NULL,
|
`Min_value` varbinary(255) default NULL,
|
||||||
`Max_value` varbinary(255) default NULL,
|
`Max_value` varbinary(255) default NULL,
|
||||||
`Min_length` bigint(11) NOT NULL default '0',
|
`Min_length` int(11) NOT NULL default '0',
|
||||||
`Max_length` bigint(11) NOT NULL default '0',
|
`Max_length` int(11) NOT NULL default '0',
|
||||||
`Empties_or_zeros` bigint(11) NOT NULL default '0',
|
`Empties_or_zeros` int(11) NOT NULL default '0',
|
||||||
`Nulls` bigint(11) NOT NULL default '0',
|
`Nulls` int(11) NOT NULL default '0',
|
||||||
`Avg_value_or_avg_length` varbinary(255) NOT NULL default '',
|
`Avg_value_or_avg_length` varbinary(255) NOT NULL default '',
|
||||||
`Std` varbinary(255) default NULL,
|
`Std` varbinary(255) default NULL,
|
||||||
`Optimal_fieldtype` varbinary(64) NOT NULL default ''
|
`Optimal_fieldtype` varbinary(64) NOT NULL default ''
|
||||||
|
@ -174,7 +174,7 @@ create table t1 select 1 as 'a';
|
|||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` bigint(1) NOT NULL default '0'
|
`a` int(1) NOT NULL default '0'
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 select 9223372036854775809 as 'a';
|
create table t1 select 9223372036854775809 as 'a';
|
||||||
|
@ -123,11 +123,3 @@ master-bin.000001 # Query 1 # use `test`; create table t3 like t1
|
|||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 select * from t3
|
master-bin.000001 # Query 1 # use `test`; insert into t1 select * from t3
|
||||||
master-bin.000001 # Query 1 # use `test`; replace into t1 select * from t3
|
master-bin.000001 # Query 1 # use `test`; replace into t1 select * from t3
|
||||||
drop table t1,t2,t3;
|
drop table t1,t2,t3;
|
||||||
drop table if exists t1;
|
|
||||||
Warnings:
|
|
||||||
Note 1051 Unknown table 't1'
|
|
||||||
create table t1 (c char(20)) engine=MyISAM;
|
|
||||||
insert into t1 values ("Monty"),("WAX"),("Walrus");
|
|
||||||
alter table t1 engine=blackhole;
|
|
||||||
ERROR HY000: Table storage engine for 't1' doesn't have this option
|
|
||||||
drop table t1;
|
|
||||||
|
@ -668,7 +668,7 @@ Table Create Table
|
|||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`b` int(11) NOT NULL,
|
`b` int(11) NOT NULL,
|
||||||
`a` varchar(12) character set utf8 collate utf8_bin NOT NULL,
|
`a` varchar(12) character set utf8 collate utf8_bin NOT NULL,
|
||||||
`c` bigint(1) NOT NULL default '0',
|
`c` int(1) NOT NULL default '0',
|
||||||
PRIMARY KEY (`a`)
|
PRIMARY KEY (`a`)
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
@ -681,7 +681,7 @@ Table Create Table
|
|||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`b` int(11) default NULL,
|
`b` int(11) default NULL,
|
||||||
`a` varchar(12) character set utf8 collate utf8_bin NOT NULL,
|
`a` varchar(12) character set utf8 collate utf8_bin NOT NULL,
|
||||||
`c` bigint(1) NOT NULL default '0',
|
`c` int(1) NOT NULL default '0',
|
||||||
PRIMARY KEY (`a`)
|
PRIMARY KEY (`a`)
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
@ -495,6 +495,22 @@ f1 f2
|
|||||||
Warnings:
|
Warnings:
|
||||||
Warning 1292 Truncated incorrect date value: '2003-04-05 g'
|
Warning 1292 Truncated incorrect date value: '2003-04-05 g'
|
||||||
Warning 1292 Truncated incorrect datetime value: '2003-04-05 10:11:12.101010234567'
|
Warning 1292 Truncated incorrect datetime value: '2003-04-05 10:11:12.101010234567'
|
||||||
|
set names latin1;
|
||||||
|
select date_format('2004-01-01','%W (%a), %e %M (%b) %Y');
|
||||||
|
date_format('2004-01-01','%W (%a), %e %M (%b) %Y')
|
||||||
|
Thursday (Thu), 1 January (Jan) 2004
|
||||||
|
set lc_time_names=ru_RU;
|
||||||
|
set names koi8r;
|
||||||
|
select date_format('2004-01-01','%W (%a), %e %M (%b) %Y');
|
||||||
|
date_format('2004-01-01','%W (%a), %e %M (%b) %Y')
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD>), 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD>) 2004
|
||||||
|
set lc_time_names=de_DE;
|
||||||
|
set names latin1;
|
||||||
|
select date_format('2004-01-01','%W (%a), %e %M (%b) %Y');
|
||||||
|
date_format('2004-01-01','%W (%a), %e %M (%b) %Y')
|
||||||
|
Donnerstag (Do), 1 Januar (Jan) 2004
|
||||||
|
set names latin1;
|
||||||
|
set lc_time_names=en_US;
|
||||||
create table t1 (f1 datetime);
|
create table t1 (f1 datetime);
|
||||||
insert into t1 (f1) values ("2005-01-01");
|
insert into t1 (f1) values ("2005-01-01");
|
||||||
insert into t1 (f1) values ("2005-02-01");
|
insert into t1 (f1) values ("2005-02-01");
|
||||||
|
@ -1689,6 +1689,50 @@ id c1 c2
|
|||||||
9 abc ppc
|
9 abc ppc
|
||||||
drop table federated.t1, federated.t2;
|
drop table federated.t1, federated.t2;
|
||||||
drop table federated.t1, federated.t2;
|
drop table federated.t1, federated.t2;
|
||||||
|
drop table if exists federated.t1;
|
||||||
|
create table federated.t1 (a int, b int, c int);
|
||||||
|
drop table if exists federated.t1;
|
||||||
|
drop table if exists federated.t2;
|
||||||
|
create table federated.t1 (a int, b int, c int) engine=federated connection='mysql://root@127.0.0.1:SLAVE_PORT/federated/t1';
|
||||||
|
create trigger federated.t1_bi before insert on federated.t1 for each row set new.c= new.a * new.b;
|
||||||
|
create table federated.t2 (a int, b int);
|
||||||
|
insert into federated.t2 values (13, 17), (19, 23);
|
||||||
|
insert into federated.t1 (a, b) values (1, 2), (3, 5), (7, 11);
|
||||||
|
select * from federated.t1;
|
||||||
|
a b c
|
||||||
|
1 2 2
|
||||||
|
3 5 15
|
||||||
|
7 11 77
|
||||||
|
delete from federated.t1;
|
||||||
|
insert into federated.t1 (a, b) select * from federated.t2;
|
||||||
|
select * from federated.t1;
|
||||||
|
a b c
|
||||||
|
13 17 221
|
||||||
|
19 23 437
|
||||||
|
delete from federated.t1;
|
||||||
|
load data infile '../std_data_ln/loaddata5.dat' into table federated.t1 fields terminated by '' enclosed by '' ignore 1 lines (a, b);
|
||||||
|
select * from federated.t1;
|
||||||
|
a b c
|
||||||
|
3 4 12
|
||||||
|
5 6 30
|
||||||
|
drop tables federated.t1, federated.t2;
|
||||||
|
drop table federated.t1;
|
||||||
|
create table t1 (id int not null auto_increment primary key, val int);
|
||||||
|
create table t1
|
||||||
|
(id int not null auto_increment primary key, val int) engine=federated
|
||||||
|
connection='mysql://root@127.0.0.1:SLAVE_PORT/test/t1';
|
||||||
|
insert into t1 values (1,0),(2,0);
|
||||||
|
update t1 set val = NULL where id = 1;
|
||||||
|
select * from t1;
|
||||||
|
id val
|
||||||
|
1 NULL
|
||||||
|
2 0
|
||||||
|
select * from t1;
|
||||||
|
id val
|
||||||
|
1 NULL
|
||||||
|
2 0
|
||||||
|
drop table t1;
|
||||||
|
drop table t1;
|
||||||
DROP TABLE IF EXISTS federated.t1;
|
DROP TABLE IF EXISTS federated.t1;
|
||||||
DROP DATABASE IF EXISTS federated;
|
DROP DATABASE IF EXISTS federated;
|
||||||
DROP TABLE IF EXISTS federated.t1;
|
DROP TABLE IF EXISTS federated.t1;
|
||||||
|
@ -1038,6 +1038,21 @@ select * from t1 where f1='test' and (f2= sha("TEST") or f2= sha("test"));
|
|||||||
f1 f2
|
f1 f2
|
||||||
test a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
|
test a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
CREATE TABLE t1 (a varchar(10));
|
||||||
|
INSERT INTO t1 VALUES ('abc'), ('xyz');
|
||||||
|
SELECT a, CONCAT(a,' ',a) AS c FROM t1
|
||||||
|
HAVING LEFT(c,LENGTH(c)-INSTR(REVERSE(c)," ")) = a;
|
||||||
|
a c
|
||||||
|
abc abc abc
|
||||||
|
xyz xyz xyz
|
||||||
|
SELECT a, CONCAT(a,' ',a) AS c FROM t1
|
||||||
|
HAVING LEFT(CONCAT(a,' ',a),
|
||||||
|
LENGTH(CONCAT(a,' ',a))-
|
||||||
|
INSTR(REVERSE(CONCAT(a,' ',a))," ")) = a;
|
||||||
|
a c
|
||||||
|
abc abc abc
|
||||||
|
xyz xyz xyz
|
||||||
|
DROP TABLE t1;
|
||||||
End of 4.1 tests
|
End of 4.1 tests
|
||||||
create table t1 (d decimal default null);
|
create table t1 (d decimal default null);
|
||||||
insert into t1 values (null);
|
insert into t1 values (null);
|
||||||
|
@ -361,12 +361,6 @@ extract(SECOND FROM "1999-01-02 10:11:12")
|
|||||||
select extract(MONTH FROM "2001-02-00");
|
select extract(MONTH FROM "2001-02-00");
|
||||||
extract(MONTH FROM "2001-02-00")
|
extract(MONTH FROM "2001-02-00")
|
||||||
2
|
2
|
||||||
SELECT DATE_SUB(str_to_date('9999-12-31 00:01:00','%Y-%m-%d %H:%i:%s'), INTERVAL 1 MINUTE);
|
|
||||||
DATE_SUB(str_to_date('9999-12-31 00:01:00','%Y-%m-%d %H:%i:%s'), INTERVAL 1 MINUTE)
|
|
||||||
9999-12-31 00:00:00
|
|
||||||
SELECT DATE_ADD(str_to_date('9999-12-30 23:59:00','%Y-%m-%d %H:%i:%s'), INTERVAL 1 MINUTE);
|
|
||||||
DATE_ADD(str_to_date('9999-12-30 23:59:00','%Y-%m-%d %H:%i:%s'), INTERVAL 1 MINUTE)
|
|
||||||
9999-12-31 00:00:00
|
|
||||||
SELECT EXTRACT(QUARTER FROM '2004-01-15') AS quarter;
|
SELECT EXTRACT(QUARTER FROM '2004-01-15') AS quarter;
|
||||||
quarter
|
quarter
|
||||||
1
|
1
|
||||||
@ -403,6 +397,12 @@ quarter
|
|||||||
SELECT EXTRACT(QUARTER FROM '2004-12-15') AS quarter;
|
SELECT EXTRACT(QUARTER FROM '2004-12-15') AS quarter;
|
||||||
quarter
|
quarter
|
||||||
4
|
4
|
||||||
|
SELECT DATE_SUB(str_to_date('9999-12-31 00:01:00','%Y-%m-%d %H:%i:%s'), INTERVAL 1 MINUTE);
|
||||||
|
DATE_SUB(str_to_date('9999-12-31 00:01:00','%Y-%m-%d %H:%i:%s'), INTERVAL 1 MINUTE)
|
||||||
|
9999-12-31 00:00:00
|
||||||
|
SELECT DATE_ADD(str_to_date('9999-12-30 23:59:00','%Y-%m-%d %H:%i:%s'), INTERVAL 1 MINUTE);
|
||||||
|
DATE_ADD(str_to_date('9999-12-30 23:59:00','%Y-%m-%d %H:%i:%s'), INTERVAL 1 MINUTE)
|
||||||
|
9999-12-31 00:00:00
|
||||||
SELECT "1900-01-01 00:00:00" + INTERVAL 2147483648 SECOND;
|
SELECT "1900-01-01 00:00:00" + INTERVAL 2147483648 SECOND;
|
||||||
"1900-01-01 00:00:00" + INTERVAL 2147483648 SECOND
|
"1900-01-01 00:00:00" + INTERVAL 2147483648 SECOND
|
||||||
1968-01-20 03:14:08
|
1968-01-20 03:14:08
|
||||||
|
@ -816,3 +816,43 @@ check table t1 extended;
|
|||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
test.t1 check status OK
|
test.t1 check status OK
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
c1 geometry NOT NULL default '',
|
||||||
|
SPATIAL KEY i1 (c1(32))
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||||
|
INSERT INTO t1 (c1) VALUES (
|
||||||
|
PolygonFromText('POLYGON((-18.6086111000 -66.9327777000,
|
||||||
|
-18.6055555000 -66.8158332999,
|
||||||
|
-18.7186111000 -66.8102777000,
|
||||||
|
-18.7211111000 -66.9269443999,
|
||||||
|
-18.6086111000 -66.9327777000))'));
|
||||||
|
CHECK TABLE t1 EXTENDED;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 check status OK
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
c1 geometry NOT NULL default '',
|
||||||
|
SPATIAL KEY i1 (c1(32))
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||||
|
INSERT INTO t1 (c1) VALUES (
|
||||||
|
PolygonFromText('POLYGON((-18.6086111000 -66.9327777000,
|
||||||
|
-18.6055555000 -66.8158332999,
|
||||||
|
-18.7186111000 -66.8102777000,
|
||||||
|
-18.7211111000 -66.9269443999,
|
||||||
|
-18.6086111000 -66.9327777000))'));
|
||||||
|
INSERT INTO t1 (c1) VALUES (
|
||||||
|
PolygonFromText('POLYGON((-65.7402776999 -96.6686111000,
|
||||||
|
-65.7372222000 -96.5516666000,
|
||||||
|
-65.8502777000 -96.5461111000,
|
||||||
|
-65.8527777000 -96.6627777000,
|
||||||
|
-65.7402776999 -96.6686111000))'));
|
||||||
|
INSERT INTO t1 (c1) VALUES (
|
||||||
|
PolygonFromText('POLYGON((-18.6086111000 -66.9327777000,
|
||||||
|
-18.6055555000 -66.8158332999,
|
||||||
|
-18.7186111000 -66.8102777000,
|
||||||
|
-18.7211111000 -66.9269443999,
|
||||||
|
-18.6086111000 -66.9327777000))'));
|
||||||
|
CHECK TABLE t1 EXTENDED;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 check status OK
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -294,26 +294,26 @@ show create function sub1;
|
|||||||
ERROR 42000: FUNCTION sub1 does not exist
|
ERROR 42000: FUNCTION sub1 does not exist
|
||||||
select ROUTINE_NAME, ROUTINE_DEFINITION from information_schema.ROUTINES;
|
select ROUTINE_NAME, ROUTINE_DEFINITION from information_schema.ROUTINES;
|
||||||
ROUTINE_NAME ROUTINE_DEFINITION
|
ROUTINE_NAME ROUTINE_DEFINITION
|
||||||
sel2
|
sel2 NULL
|
||||||
sub1
|
sub1 NULL
|
||||||
grant all privileges on test.* to mysqltest_1@localhost;
|
grant all privileges on test.* to mysqltest_1@localhost;
|
||||||
select ROUTINE_NAME, ROUTINE_DEFINITION from information_schema.ROUTINES;
|
select ROUTINE_NAME, ROUTINE_DEFINITION from information_schema.ROUTINES;
|
||||||
ROUTINE_NAME ROUTINE_DEFINITION
|
ROUTINE_NAME ROUTINE_DEFINITION
|
||||||
sel2
|
sel2 NULL
|
||||||
sub1
|
sub1 NULL
|
||||||
create function sub2(i int) returns int
|
create function sub2(i int) returns int
|
||||||
return i+1;
|
return i+1;
|
||||||
select ROUTINE_NAME, ROUTINE_DEFINITION from information_schema.ROUTINES;
|
select ROUTINE_NAME, ROUTINE_DEFINITION from information_schema.ROUTINES;
|
||||||
ROUTINE_NAME ROUTINE_DEFINITION
|
ROUTINE_NAME ROUTINE_DEFINITION
|
||||||
sel2
|
sel2 NULL
|
||||||
sub1
|
sub1 NULL
|
||||||
sub2 return i+1
|
sub2 return i+1
|
||||||
show create procedure sel2;
|
show create procedure sel2;
|
||||||
Procedure sql_mode Create Procedure
|
Procedure sql_mode Create Procedure
|
||||||
sel2
|
sel2 NULL
|
||||||
show create function sub1;
|
show create function sub1;
|
||||||
Function sql_mode Create Function
|
Function sql_mode Create Function
|
||||||
sub1
|
sub1 NULL
|
||||||
show create function sub2;
|
show create function sub2;
|
||||||
Function sql_mode Create Function
|
Function sql_mode Create Function
|
||||||
sub2 CREATE DEFINER=`mysqltest_1`@`localhost` FUNCTION `sub2`(i int) RETURNS int(11)
|
sub2 CREATE DEFINER=`mysqltest_1`@`localhost` FUNCTION `sub2`(i int) RETURNS int(11)
|
||||||
@ -1134,3 +1134,39 @@ concat(@a, table_name) @a table_name
|
|||||||
.t1 . t1
|
.t1 . t1
|
||||||
.t2 . t2
|
.t2 . t2
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
DROP PROCEDURE IF EXISTS p1;
|
||||||
|
DROP FUNCTION IF EXISTS f1;
|
||||||
|
CREATE PROCEDURE p1() SET @a= 1;
|
||||||
|
CREATE FUNCTION f1() RETURNS INT RETURN @a + 1;
|
||||||
|
CREATE USER mysql_bug20230@localhost;
|
||||||
|
GRANT EXECUTE ON PROCEDURE p1 TO mysql_bug20230@localhost;
|
||||||
|
GRANT EXECUTE ON FUNCTION f1 TO mysql_bug20230@localhost;
|
||||||
|
SELECT ROUTINE_NAME, ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES;
|
||||||
|
ROUTINE_NAME ROUTINE_DEFINITION
|
||||||
|
f1 RETURN @a + 1
|
||||||
|
p1 SET @a= 1
|
||||||
|
SHOW CREATE PROCEDURE p1;
|
||||||
|
Procedure sql_mode Create Procedure
|
||||||
|
p1 CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
|
||||||
|
SET @a= 1
|
||||||
|
SHOW CREATE FUNCTION f1;
|
||||||
|
Function sql_mode Create Function
|
||||||
|
f1 CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
|
||||||
|
RETURN @a + 1
|
||||||
|
SELECT ROUTINE_NAME, ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES;
|
||||||
|
ROUTINE_NAME ROUTINE_DEFINITION
|
||||||
|
f1 NULL
|
||||||
|
p1 NULL
|
||||||
|
SHOW CREATE PROCEDURE p1;
|
||||||
|
Procedure sql_mode Create Procedure
|
||||||
|
p1 NULL
|
||||||
|
SHOW CREATE FUNCTION f1;
|
||||||
|
Function sql_mode Create Function
|
||||||
|
f1 NULL
|
||||||
|
CALL p1();
|
||||||
|
SELECT f1();
|
||||||
|
f1()
|
||||||
|
2
|
||||||
|
DROP FUNCTION f1;
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
DROP USER mysql_bug20230@localhost;
|
||||||
|
@ -22,3 +22,117 @@ set GLOBAL init_connect="adsfsdfsdfs";
|
|||||||
select @a;
|
select @a;
|
||||||
Got one of the listed errors
|
Got one of the listed errors
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
End of 4.1 tests
|
||||||
|
create table t1 (x int);
|
||||||
|
insert into t1 values (3), (5), (7);
|
||||||
|
create table t2 (y int);
|
||||||
|
create user mysqltest1@localhost;
|
||||||
|
grant all privileges on test.* to mysqltest1@localhost;
|
||||||
|
set global init_connect="create procedure p1() select * from t1";
|
||||||
|
call p1();
|
||||||
|
x
|
||||||
|
3
|
||||||
|
5
|
||||||
|
7
|
||||||
|
drop procedure p1;
|
||||||
|
set global init_connect="create procedure p1(x int)\
|
||||||
|
begin\
|
||||||
|
select count(*) from t1;\
|
||||||
|
select * from t1;\
|
||||||
|
set @x = x;
|
||||||
|
end";
|
||||||
|
call p1(42);
|
||||||
|
count(*)
|
||||||
|
3
|
||||||
|
x
|
||||||
|
3
|
||||||
|
5
|
||||||
|
7
|
||||||
|
select @x;
|
||||||
|
@x
|
||||||
|
42
|
||||||
|
set global init_connect="call p1(4711)";
|
||||||
|
select @x;
|
||||||
|
@x
|
||||||
|
4711
|
||||||
|
set global init_connect="drop procedure if exists p1";
|
||||||
|
call p1();
|
||||||
|
ERROR 42000: PROCEDURE test.p1 does not exist
|
||||||
|
create procedure p1(out sum int)
|
||||||
|
begin
|
||||||
|
declare n int default 0;
|
||||||
|
declare c cursor for select * from t1;
|
||||||
|
declare exit handler for not found
|
||||||
|
begin
|
||||||
|
close c;
|
||||||
|
set sum = n;
|
||||||
|
end;
|
||||||
|
open c;
|
||||||
|
loop
|
||||||
|
begin
|
||||||
|
declare x int;
|
||||||
|
fetch c into x;
|
||||||
|
if x > 3 then
|
||||||
|
set n = n + x;
|
||||||
|
end if;
|
||||||
|
end;
|
||||||
|
end loop;
|
||||||
|
end|
|
||||||
|
set global init_connect="call p1(@sum)";
|
||||||
|
select @sum;
|
||||||
|
@sum
|
||||||
|
12
|
||||||
|
drop procedure p1;
|
||||||
|
create procedure p1(tbl char(10), v int)
|
||||||
|
begin
|
||||||
|
set @s = concat('insert into ', tbl, ' values (?)');
|
||||||
|
set @v = v;
|
||||||
|
prepare stmt1 from @s;
|
||||||
|
execute stmt1 using @v;
|
||||||
|
deallocate prepare stmt1;
|
||||||
|
end|
|
||||||
|
set global init_connect="call p1('t1', 11)";
|
||||||
|
select * from t1;
|
||||||
|
x
|
||||||
|
3
|
||||||
|
5
|
||||||
|
7
|
||||||
|
11
|
||||||
|
drop procedure p1;
|
||||||
|
create function f1() returns int
|
||||||
|
begin
|
||||||
|
declare n int;
|
||||||
|
select count(*) into n from t1;
|
||||||
|
return n;
|
||||||
|
end|
|
||||||
|
set global init_connect="set @x = f1()";
|
||||||
|
select @x;
|
||||||
|
@x
|
||||||
|
4
|
||||||
|
set global init_connect="create view v1 as select f1()";
|
||||||
|
select * from v1;
|
||||||
|
f1()
|
||||||
|
4
|
||||||
|
set global init_connect="drop view v1";
|
||||||
|
select * from v1;
|
||||||
|
ERROR 42S02: Table 'test.v1' doesn't exist
|
||||||
|
drop function f1;
|
||||||
|
create trigger trg1
|
||||||
|
after insert on t2
|
||||||
|
for each row
|
||||||
|
insert into t1 values (new.y);
|
||||||
|
set global init_connect="insert into t2 values (13), (17), (19)";
|
||||||
|
select * from t1;
|
||||||
|
x
|
||||||
|
3
|
||||||
|
5
|
||||||
|
7
|
||||||
|
11
|
||||||
|
13
|
||||||
|
17
|
||||||
|
19
|
||||||
|
drop trigger trg1;
|
||||||
|
set global init_connect=default;
|
||||||
|
revoke all privileges, grant option from mysqltest1@localhost;
|
||||||
|
drop user mysqltest1@localhost;
|
||||||
|
drop table t1, t2;
|
||||||
|
@ -1 +1,16 @@
|
|||||||
ok
|
ok
|
||||||
|
end of 4.1 tests
|
||||||
|
select * from t1;
|
||||||
|
x
|
||||||
|
3
|
||||||
|
5
|
||||||
|
7
|
||||||
|
11
|
||||||
|
13
|
||||||
|
select * from t2;
|
||||||
|
y
|
||||||
|
30
|
||||||
|
3
|
||||||
|
11
|
||||||
|
13
|
||||||
|
drop table t1, t2;
|
||||||
|
@ -54,6 +54,35 @@ c.c_id = 218 and expiredate is null;
|
|||||||
slai_id
|
slai_id
|
||||||
12
|
12
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
CREATE TABLE t1 (a int, b int, KEY b (b)) Engine=InnoDB;
|
||||||
|
CREATE TABLE t2 (a int, b int, PRIMARY KEY (a,b)) Engine=InnoDB;
|
||||||
|
CREATE TABLE t3 (a int, b int, c int, PRIMARY KEY (a),
|
||||||
|
UNIQUE KEY b (b,c), KEY a (a,b,c)) Engine=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (1, 1);
|
||||||
|
INSERT INTO t1 SELECT a + 1, b + 1 FROM t1;
|
||||||
|
INSERT INTO t1 SELECT a + 2, b + 2 FROM t1;
|
||||||
|
INSERT INTO t2 VALUES (1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8);
|
||||||
|
INSERT INTO t2 SELECT a + 1, b FROM t2;
|
||||||
|
DELETE FROM t2 WHERE a = 1 AND b < 2;
|
||||||
|
INSERT INTO t3 VALUES (1,1,1),(2,1,2);
|
||||||
|
INSERT INTO t3 SELECT a + 2, a + 2, 3 FROM t3;
|
||||||
|
INSERT INTO t3 SELECT a + 4, a + 4, 3 FROM t3;
|
||||||
|
SELECT STRAIGHT_JOIN SQL_NO_CACHE t1.b, t1.a FROM t1, t3, t2 WHERE
|
||||||
|
t3.a = t2.a AND t2.b = t1.a AND t3.b = 1 AND t3.c IN (1, 2)
|
||||||
|
ORDER BY t1.b LIMIT 2;
|
||||||
|
b a
|
||||||
|
1 1
|
||||||
|
2 2
|
||||||
|
SELECT STRAIGHT_JOIN SQL_NO_CACHE t1.b, t1.a FROM t1, t3, t2 WHERE
|
||||||
|
t3.a = t2.a AND t2.b = t1.a AND t3.b = 1 AND t3.c IN (1, 2)
|
||||||
|
ORDER BY t1.b LIMIT 5;
|
||||||
|
b a
|
||||||
|
1 1
|
||||||
|
2 2
|
||||||
|
2 2
|
||||||
|
3 3
|
||||||
|
3 3
|
||||||
|
DROP TABLE t1, t2, t3;
|
||||||
create table t1m (a int) engine=myisam;
|
create table t1m (a int) engine=myisam;
|
||||||
create table t1i (a int) engine=innodb;
|
create table t1i (a int) engine=innodb;
|
||||||
create table t2m (a int) engine=myisam;
|
create table t2m (a int) engine=myisam;
|
||||||
|
@ -336,8 +336,16 @@ UNIQUE i1idx (i1),
|
|||||||
UNIQUE i2idx (i2));
|
UNIQUE i2idx (i2));
|
||||||
desc t1;
|
desc t1;
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
i1 int(11) NO UNI
|
i1 int(11) NO PRI
|
||||||
i2 int(11) NO UNI
|
i2 int(11) NO UNI
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`i1` int(11) NOT NULL,
|
||||||
|
`i2` int(11) NOT NULL,
|
||||||
|
UNIQUE KEY `i1idx` (`i1`),
|
||||||
|
UNIQUE KEY `i2idx` (`i2`)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (
|
create table t1 (
|
||||||
c1 int,
|
c1 int,
|
||||||
|
@ -768,14 +768,6 @@ Table Op Msg_type Msg_text
|
|||||||
test.t1 check status OK
|
test.t1 check status OK
|
||||||
test.t2 check status OK
|
test.t2 check status OK
|
||||||
drop table t1, t2, t3;
|
drop table t1, t2, t3;
|
||||||
drop table if exists t1;
|
|
||||||
Warnings:
|
|
||||||
Note 1051 Unknown table 't1'
|
|
||||||
create table t1 (c char(20)) engine=MyISAM;
|
|
||||||
insert into t1 values ("Monty"),("WAX"),("Walrus");
|
|
||||||
alter table t1 engine=MERGE;
|
|
||||||
ERROR HY000: Table storage engine for 't1' doesn't have this option
|
|
||||||
drop table t1;
|
|
||||||
create table t1 (b bit(1));
|
create table t1 (b bit(1));
|
||||||
create table t2 (b bit(1));
|
create table t2 (b bit(1));
|
||||||
create table tm (b bit(1)) engine = merge union = (t1,t2);
|
create table tm (b bit(1)) engine = merge union = (t1,t2);
|
||||||
|
@ -1454,3 +1454,16 @@ create table t3 (c1 int) engine=myisam pack_keys=default;
|
|||||||
create table t4 (c1 int) engine=myisam pack_keys=2;
|
create table t4 (c1 int) engine=myisam pack_keys=2;
|
||||||
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 '2' at line 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 '2' at line 1
|
||||||
drop table t1, t2, t3;
|
drop table t1, t2, t3;
|
||||||
|
show create table t1;
|
||||||
|
show create table t1;
|
||||||
|
create table t1 (a int) engine=myisam select 42 a;
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
9
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
99
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
42
|
||||||
|
drop table t1;
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Ndb_connected_host localhost
|
Ndb_config_from_host localhost
|
||||||
|
@ -30,7 +30,8 @@ REPLACE INTO t1 (i,j) VALUES (17,2);
|
|||||||
SELECT * from t1 ORDER BY i;
|
SELECT * from t1 ORDER BY i;
|
||||||
i j k
|
i j k
|
||||||
3 1 42
|
3 1 42
|
||||||
17 2 24
|
17 2 NULL
|
||||||
|
DROP TABLE t1;
|
||||||
CREATE TABLE t2 (a INT(11) NOT NULL,
|
CREATE TABLE t2 (a INT(11) NOT NULL,
|
||||||
b INT(11) NOT NULL,
|
b INT(11) NOT NULL,
|
||||||
c INT(11) NOT NULL,
|
c INT(11) NOT NULL,
|
||||||
@ -52,3 +53,47 @@ SELECT * FROM t2 ORDER BY id;
|
|||||||
a b c x y z id i
|
a b c x y z id i
|
||||||
1 1 1 b b b 5 2
|
1 1 1 b b b 5 2
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
|
drop table if exists t1;
|
||||||
|
create table t1 (pk int primary key, apk int unique, data int) engine=ndbcluster;
|
||||||
|
insert into t1 values (1, 1, 1), (2, 2, 2), (3, 3, 3);
|
||||||
|
replace into t1 (pk, apk) values (4, 1), (5, 2);
|
||||||
|
select * from t1 order by pk;
|
||||||
|
pk apk data
|
||||||
|
3 3 3
|
||||||
|
4 1 NULL
|
||||||
|
5 2 NULL
|
||||||
|
delete from t1;
|
||||||
|
insert into t1 values (1, 1, 1), (2, 2, 2), (3, 3, 3);
|
||||||
|
replace into t1 (pk, apk) values (1, 4), (2, 5);
|
||||||
|
select * from t1 order by pk;
|
||||||
|
pk apk data
|
||||||
|
1 4 NULL
|
||||||
|
2 5 NULL
|
||||||
|
3 3 3
|
||||||
|
delete from t1;
|
||||||
|
insert into t1 values (1, 1, 1), (4, 4, 4), (6, 6, 6);
|
||||||
|
load data infile '../std_data_ln/loaddata5.dat' replace into table t1 fields terminated by '' enclosed by '' ignore 1 lines (pk, apk);
|
||||||
|
select * from t1 order by pk;
|
||||||
|
pk apk data
|
||||||
|
1 1 1
|
||||||
|
3 4 NULL
|
||||||
|
5 6 NULL
|
||||||
|
delete from t1;
|
||||||
|
insert into t1 values (1, 1, 1), (3, 3, 3), (5, 5, 5);
|
||||||
|
load data infile '../std_data_ln/loaddata5.dat' replace into table t1 fields terminated by '' enclosed by '' ignore 1 lines (pk, apk);
|
||||||
|
select * from t1 order by pk;
|
||||||
|
pk apk data
|
||||||
|
1 1 1
|
||||||
|
3 4 NULL
|
||||||
|
5 6 NULL
|
||||||
|
delete from t1;
|
||||||
|
insert into t1 values (1, 1, 1), (2, 2, 2), (3, 3, 3);
|
||||||
|
replace into t1 (pk, apk) select 4, 1;
|
||||||
|
replace into t1 (pk, apk) select 2, 4;
|
||||||
|
select * from t1 order by pk;
|
||||||
|
pk apk data
|
||||||
|
2 4 NULL
|
||||||
|
3 3 3
|
||||||
|
4 1 NULL
|
||||||
|
drop table t1;
|
||||||
|
End of 5.0 tests.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
use test;
|
use test;
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
|
||||||
drop table if exists t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
drop table if exists t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c,t10_c;
|
||||||
CREATE TABLE `t1` (
|
CREATE TABLE `t1` (
|
||||||
`capgoaledatta` smallint(5) unsigned NOT NULL auto_increment,
|
`capgoaledatta` smallint(5) unsigned NOT NULL auto_increment,
|
||||||
`goaledatta` char(2) NOT NULL default '',
|
`goaledatta` char(2) NOT NULL default '',
|
||||||
@ -116,6 +116,8 @@ CREATE TABLE `t9` (
|
|||||||
PRIMARY KEY (`kattjame`,`hunderaaarbagefa`,`hassetistart`,`hassetino`)
|
PRIMARY KEY (`kattjame`,`hunderaaarbagefa`,`hassetistart`,`hassetino`)
|
||||||
) ENGINE=myisam DEFAULT CHARSET=latin1;
|
) ENGINE=myisam DEFAULT CHARSET=latin1;
|
||||||
INSERT INTO `t9` VALUES ('3g4jh8gar2t','joe','q3.net','elredun.com','q3.net','436643316120','436643316939','91341234568968','695595699','1.1.1.1','2.2.6.2','3','86989','34','x','x','2012-03-12 18:35:04','2012-12-05 12:35:04',3123123,9569,6565,1),('4tt45345235','pap','q3plus.qt','q3plus.qt','q3.net','436643316120','436643316939','8956234534568968','5254595969','1.1.1.1','8.6.2.2','4','86989','34','x','x','2012-03-12 12:55:34','2012-12-05 11:20:04',3223433,3369,9565,2),('4545435545','john','q3.net','q3.net','acne.li','436643316120','436643316939','45345234568968','995696699','1.1.1.1','2.9.9.2','2','86998','34','x','x','2012-03-12 11:35:03','2012-12-05 08:50:04',8823123,169,3565,3);
|
INSERT INTO `t9` VALUES ('3g4jh8gar2t','joe','q3.net','elredun.com','q3.net','436643316120','436643316939','91341234568968','695595699','1.1.1.1','2.2.6.2','3','86989','34','x','x','2012-03-12 18:35:04','2012-12-05 12:35:04',3123123,9569,6565,1),('4tt45345235','pap','q3plus.qt','q3plus.qt','q3.net','436643316120','436643316939','8956234534568968','5254595969','1.1.1.1','8.6.2.2','4','86989','34','x','x','2012-03-12 12:55:34','2012-12-05 11:20:04',3223433,3369,9565,2),('4545435545','john','q3.net','q3.net','acne.li','436643316120','436643316939','45345234568968','995696699','1.1.1.1','2.9.9.2','2','86998','34','x','x','2012-03-12 11:35:03','2012-12-05 08:50:04',8823123,169,3565,3);
|
||||||
|
create table t10 (a int auto_increment key);
|
||||||
|
insert into t10 values (1),(2),(3);
|
||||||
create table t1_c engine=ndbcluster as select * from t1;
|
create table t1_c engine=ndbcluster as select * from t1;
|
||||||
create table t2_c engine=ndbcluster as select * from t2;
|
create table t2_c engine=ndbcluster as select * from t2;
|
||||||
create table t3_c engine=ndbcluster as select * from t3;
|
create table t3_c engine=ndbcluster as select * from t3;
|
||||||
@ -125,10 +127,12 @@ create table t6_c engine=ndbcluster as select * from t6;
|
|||||||
create table t7_c engine=ndbcluster as select * from t7;
|
create table t7_c engine=ndbcluster as select * from t7;
|
||||||
create table t8_c engine=ndbcluster as select * from t8;
|
create table t8_c engine=ndbcluster as select * from t8;
|
||||||
create table t9_c engine=ndbcluster as select * from t9;
|
create table t9_c engine=ndbcluster as select * from t9;
|
||||||
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
create table t10_c engine=ndbcluster as select * from t10;
|
||||||
|
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c, t10_c;
|
||||||
show tables;
|
show tables;
|
||||||
Tables_in_test
|
Tables_in_test
|
||||||
t1
|
t1
|
||||||
|
t10
|
||||||
t2
|
t2
|
||||||
t3
|
t3
|
||||||
t4
|
t4
|
||||||
@ -137,14 +141,15 @@ t6
|
|||||||
t7
|
t7
|
||||||
t8
|
t8
|
||||||
t9
|
t9
|
||||||
t8_c
|
t3_c
|
||||||
t9_c
|
t9_c
|
||||||
t1_c
|
t1_c
|
||||||
|
t8_c
|
||||||
t7_c
|
t7_c
|
||||||
t6_c
|
t6_c
|
||||||
t5_c
|
t5_c
|
||||||
t4_c
|
t4_c
|
||||||
t3_c
|
t10_c
|
||||||
t2_c
|
t2_c
|
||||||
select count(*) from t1;
|
select count(*) from t1;
|
||||||
count(*)
|
count(*)
|
||||||
@ -245,6 +250,11 @@ from (select * from t9 union
|
|||||||
select * from t9_c) a;
|
select * from t9_c) a;
|
||||||
count(*)
|
count(*)
|
||||||
3
|
3
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
select * from t10_c order by a;
|
||||||
drop table if exists t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9, t10;
|
||||||
|
drop table if exists t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c, t10_c;
|
||||||
520093696,1
|
520093696,1
|
||||||
|
119
mysql-test/r/ndb_trigger.result
Normal file
119
mysql-test/r/ndb_trigger.result
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
drop table if exists t1, t2, t3;
|
||||||
|
create table t1 (id int primary key, a int not null, b decimal (63,30) default 0) engine=ndb;
|
||||||
|
create table t2 (op char(1), a int not null, b decimal (63,30));
|
||||||
|
create table t3 select 1 as i;
|
||||||
|
create trigger t1_bu before update on t1 for each row
|
||||||
|
begin
|
||||||
|
insert into t2 values ("u", old.a, old.b);
|
||||||
|
set new.b = old.b + 10;
|
||||||
|
end;//
|
||||||
|
create trigger t1_bd before delete on t1 for each row
|
||||||
|
begin
|
||||||
|
insert into t2 values ("d", old.a, old.b);
|
||||||
|
end;//
|
||||||
|
insert into t1 values (1, 1, 1.05), (2, 2, 2.05), (3, 3, 3.05), (4, 4, 4.05);
|
||||||
|
update t1 set a=5 where a != 3;
|
||||||
|
select * from t1 order by id;
|
||||||
|
id a b
|
||||||
|
1 5 11.050000000000000000000000000000
|
||||||
|
2 5 12.050000000000000000000000000000
|
||||||
|
3 3 3.050000000000000000000000000000
|
||||||
|
4 5 14.050000000000000000000000000000
|
||||||
|
select * from t2 order by op, a, b;
|
||||||
|
op a b
|
||||||
|
u 1 1.050000000000000000000000000000
|
||||||
|
u 2 2.050000000000000000000000000000
|
||||||
|
u 4 4.050000000000000000000000000000
|
||||||
|
delete from t2;
|
||||||
|
update t1, t3 set a=6 where a = 5;
|
||||||
|
select * from t1 order by id;
|
||||||
|
id a b
|
||||||
|
1 6 21.050000000000000000000000000000
|
||||||
|
2 6 22.050000000000000000000000000000
|
||||||
|
3 3 3.050000000000000000000000000000
|
||||||
|
4 6 24.050000000000000000000000000000
|
||||||
|
select * from t2 order by op, a, b;
|
||||||
|
op a b
|
||||||
|
u 5 11.050000000000000000000000000000
|
||||||
|
u 5 12.050000000000000000000000000000
|
||||||
|
u 5 14.050000000000000000000000000000
|
||||||
|
delete from t2;
|
||||||
|
delete from t1 where a != 3;
|
||||||
|
select * from t1 order by id;
|
||||||
|
id a b
|
||||||
|
3 3 3.050000000000000000000000000000
|
||||||
|
select * from t2 order by op, a, b;
|
||||||
|
op a b
|
||||||
|
d 6 21.050000000000000000000000000000
|
||||||
|
d 6 22.050000000000000000000000000000
|
||||||
|
d 6 24.050000000000000000000000000000
|
||||||
|
delete from t2;
|
||||||
|
insert into t1 values (1, 1, 1.05), (2, 2, 2.05), (4, 4, 4.05);
|
||||||
|
delete t1 from t1, t3 where a != 3;
|
||||||
|
select * from t1 order by id;
|
||||||
|
id a b
|
||||||
|
3 3 3.050000000000000000000000000000
|
||||||
|
select * from t2 order by op, a, b;
|
||||||
|
op a b
|
||||||
|
d 1 1.050000000000000000000000000000
|
||||||
|
d 2 2.050000000000000000000000000000
|
||||||
|
d 4 4.050000000000000000000000000000
|
||||||
|
delete from t2;
|
||||||
|
insert into t1 values (4, 4, 4.05);
|
||||||
|
insert into t1 (id, a) values (4, 1), (3, 1) on duplicate key update a= a + 1;
|
||||||
|
select * from t1 order by id;
|
||||||
|
id a b
|
||||||
|
3 4 13.050000000000000000000000000000
|
||||||
|
4 5 14.050000000000000000000000000000
|
||||||
|
select * from t2 order by op, a, b;
|
||||||
|
op a b
|
||||||
|
u 3 3.050000000000000000000000000000
|
||||||
|
u 4 4.050000000000000000000000000000
|
||||||
|
delete from t2;
|
||||||
|
delete from t3;
|
||||||
|
insert into t3 values (4), (3);
|
||||||
|
insert into t1 (id, a) (select i, 1 from t3) on duplicate key update a= a + 1;
|
||||||
|
select * from t1 order by id;
|
||||||
|
id a b
|
||||||
|
3 5 23.050000000000000000000000000000
|
||||||
|
4 6 24.050000000000000000000000000000
|
||||||
|
select * from t2 order by op, a, b;
|
||||||
|
op a b
|
||||||
|
u 4 13.050000000000000000000000000000
|
||||||
|
u 5 14.050000000000000000000000000000
|
||||||
|
delete from t2;
|
||||||
|
replace into t1 (id, a) values (4, 1), (3, 1);
|
||||||
|
select * from t1 order by id;
|
||||||
|
id a b
|
||||||
|
3 1 0.000000000000000000000000000000
|
||||||
|
4 1 0.000000000000000000000000000000
|
||||||
|
select * from t2 order by op, a, b;
|
||||||
|
op a b
|
||||||
|
d 5 23.050000000000000000000000000000
|
||||||
|
d 6 24.050000000000000000000000000000
|
||||||
|
delete from t1;
|
||||||
|
delete from t2;
|
||||||
|
insert into t1 values (3, 1, 1.05), (4, 1, 2.05);
|
||||||
|
replace into t1 (id, a) (select i, 2 from t3);
|
||||||
|
select * from t1 order by id;
|
||||||
|
id a b
|
||||||
|
3 2 0.000000000000000000000000000000
|
||||||
|
4 2 0.000000000000000000000000000000
|
||||||
|
select * from t2 order by op, a, b;
|
||||||
|
op a b
|
||||||
|
d 1 1.050000000000000000000000000000
|
||||||
|
d 1 2.050000000000000000000000000000
|
||||||
|
delete from t1;
|
||||||
|
delete from t2;
|
||||||
|
insert into t1 values (3, 1, 1.05), (5, 2, 2.05);
|
||||||
|
load data infile '../std_data_ln/loaddata5.dat' replace into table t1 fields terminated by '' enclosed by '' ignore 1 lines (id, a);
|
||||||
|
select * from t1 order by id;
|
||||||
|
id a b
|
||||||
|
3 4 0.000000000000000000000000000000
|
||||||
|
5 6 0.000000000000000000000000000000
|
||||||
|
select * from t2 order by op, a, b;
|
||||||
|
op a b
|
||||||
|
d 1 1.050000000000000000000000000000
|
||||||
|
d 2 2.050000000000000000000000000000
|
||||||
|
drop tables t1, t2, t3;
|
||||||
|
End of 5.0 tests
|
@ -14,3 +14,14 @@ explain select * from t1 where b is null;
|
|||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY);
|
||||||
|
INSERT INTO t1 VALUES (NULL);
|
||||||
|
SELECT sql_no_cache a, last_insert_id() FROM t1 WHERE a IS NULL;
|
||||||
|
a last_insert_id()
|
||||||
|
1 1
|
||||||
|
SELECT sql_no_cache a, last_insert_id() FROM t1 WHERE a IS NULL;
|
||||||
|
a last_insert_id()
|
||||||
|
SELECT sql_no_cache a, last_insert_id() FROM t1;
|
||||||
|
a last_insert_id()
|
||||||
|
1 1
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -620,8 +620,8 @@ CREATE VIEW v1 AS
|
|||||||
SELECT a, LENGTH(a), COUNT(*) FROM t1 GROUP BY a WITH ROLLUP;
|
SELECT a, LENGTH(a), COUNT(*) FROM t1 GROUP BY a WITH ROLLUP;
|
||||||
DESC v1;
|
DESC v1;
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
a bigint(11) YES NULL
|
a int(11) YES 0
|
||||||
LENGTH(a) bigint(10) YES NULL
|
LENGTH(a) int(10) YES NULL
|
||||||
COUNT(*) bigint(21) NO 0
|
COUNT(*) bigint(21) NO 0
|
||||||
SELECT * FROM v1;
|
SELECT * FROM v1;
|
||||||
a LENGTH(a) COUNT(*)
|
a LENGTH(a) COUNT(*)
|
||||||
|
@ -1775,7 +1775,7 @@ NULL as const12, @arg12 as param12,
|
|||||||
show create table t5 ;
|
show create table t5 ;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t5 CREATE TABLE `t5` (
|
t5 CREATE TABLE `t5` (
|
||||||
`const01` bigint(1) NOT NULL default '0',
|
`const01` int(1) NOT NULL default '0',
|
||||||
`param01` bigint(20) default NULL,
|
`param01` bigint(20) default NULL,
|
||||||
`const02` decimal(2,1) NOT NULL default '0.0',
|
`const02` decimal(2,1) NOT NULL default '0.0',
|
||||||
`param02` decimal(65,30) default NULL,
|
`param02` decimal(65,30) default NULL,
|
||||||
@ -1805,7 +1805,7 @@ t5 CREATE TABLE `t5` (
|
|||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
select * from t5 ;
|
select * from t5 ;
|
||||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
def test t5 t5 const01 const01 8 1 1 N 32769 0 63
|
def test t5 t5 const01 const01 3 1 1 N 32769 0 63
|
||||||
def test t5 t5 param01 param01 8 20 1 Y 32768 0 63
|
def test t5 t5 param01 param01 8 20 1 Y 32768 0 63
|
||||||
def test t5 t5 const02 const02 246 4 3 N 1 1 63
|
def test t5 t5 const02 const02 246 4 3 N 1 1 63
|
||||||
def test t5 t5 param02 param02 246 67 32 Y 0 30 63
|
def test t5 t5 param02 param02 246 67 32 Y 0 30 63
|
||||||
|
@ -1758,7 +1758,7 @@ NULL as const12, @arg12 as param12,
|
|||||||
show create table t5 ;
|
show create table t5 ;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t5 CREATE TABLE `t5` (
|
t5 CREATE TABLE `t5` (
|
||||||
`const01` bigint(1) NOT NULL default '0',
|
`const01` int(1) NOT NULL default '0',
|
||||||
`param01` bigint(20) default NULL,
|
`param01` bigint(20) default NULL,
|
||||||
`const02` decimal(2,1) NOT NULL default '0.0',
|
`const02` decimal(2,1) NOT NULL default '0.0',
|
||||||
`param02` decimal(65,30) default NULL,
|
`param02` decimal(65,30) default NULL,
|
||||||
@ -1788,7 +1788,7 @@ t5 CREATE TABLE `t5` (
|
|||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
select * from t5 ;
|
select * from t5 ;
|
||||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
def test t5 t5 const01 const01 8 1 1 N 32769 0 63
|
def test t5 t5 const01 const01 3 1 1 N 32769 0 63
|
||||||
def test t5 t5 param01 param01 8 20 1 Y 32768 0 63
|
def test t5 t5 param01 param01 8 20 1 Y 32768 0 63
|
||||||
def test t5 t5 const02 const02 246 4 3 N 1 1 63
|
def test t5 t5 const02 const02 246 4 3 N 1 1 63
|
||||||
def test t5 t5 param02 param02 246 67 32 Y 0 30 63
|
def test t5 t5 param02 param02 246 67 32 Y 0 30 63
|
||||||
|
@ -1759,7 +1759,7 @@ NULL as const12, @arg12 as param12,
|
|||||||
show create table t5 ;
|
show create table t5 ;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t5 CREATE TABLE `t5` (
|
t5 CREATE TABLE `t5` (
|
||||||
`const01` bigint(1) NOT NULL default '0',
|
`const01` int(1) NOT NULL default '0',
|
||||||
`param01` bigint(20) default NULL,
|
`param01` bigint(20) default NULL,
|
||||||
`const02` decimal(2,1) NOT NULL default '0.0',
|
`const02` decimal(2,1) NOT NULL default '0.0',
|
||||||
`param02` decimal(65,30) default NULL,
|
`param02` decimal(65,30) default NULL,
|
||||||
@ -1789,7 +1789,7 @@ t5 CREATE TABLE `t5` (
|
|||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
select * from t5 ;
|
select * from t5 ;
|
||||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
def test t5 t5 const01 const01 8 1 1 N 32769 0 63
|
def test t5 t5 const01 const01 3 1 1 N 32769 0 63
|
||||||
def test t5 t5 param01 param01 8 20 1 Y 32768 0 63
|
def test t5 t5 param01 param01 8 20 1 Y 32768 0 63
|
||||||
def test t5 t5 const02 const02 246 4 3 N 1 1 63
|
def test t5 t5 const02 const02 246 4 3 N 1 1 63
|
||||||
def test t5 t5 param02 param02 246 67 32 Y 0 30 63
|
def test t5 t5 param02 param02 246 67 32 Y 0 30 63
|
||||||
|
@ -1695,7 +1695,7 @@ NULL as const12, @arg12 as param12,
|
|||||||
show create table t5 ;
|
show create table t5 ;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t5 CREATE TABLE `t5` (
|
t5 CREATE TABLE `t5` (
|
||||||
`const01` bigint(1) NOT NULL default '0',
|
`const01` int(1) NOT NULL default '0',
|
||||||
`param01` bigint(20) default NULL,
|
`param01` bigint(20) default NULL,
|
||||||
`const02` decimal(2,1) NOT NULL default '0.0',
|
`const02` decimal(2,1) NOT NULL default '0.0',
|
||||||
`param02` decimal(65,30) default NULL,
|
`param02` decimal(65,30) default NULL,
|
||||||
@ -1725,7 +1725,7 @@ t5 CREATE TABLE `t5` (
|
|||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
select * from t5 ;
|
select * from t5 ;
|
||||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
def test t5 t5 const01 const01 8 1 1 N 32769 0 63
|
def test t5 t5 const01 const01 3 1 1 N 32769 0 63
|
||||||
def test t5 t5 param01 param01 8 20 1 Y 32768 0 63
|
def test t5 t5 param01 param01 8 20 1 Y 32768 0 63
|
||||||
def test t5 t5 const02 const02 246 4 3 N 1 1 63
|
def test t5 t5 const02 const02 246 4 3 N 1 1 63
|
||||||
def test t5 t5 param02 param02 246 67 32 Y 0 30 63
|
def test t5 t5 param02 param02 246 67 32 Y 0 30 63
|
||||||
@ -4709,7 +4709,7 @@ NULL as const12, @arg12 as param12,
|
|||||||
show create table t5 ;
|
show create table t5 ;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t5 CREATE TABLE `t5` (
|
t5 CREATE TABLE `t5` (
|
||||||
`const01` bigint(1) NOT NULL default '0',
|
`const01` int(1) NOT NULL default '0',
|
||||||
`param01` bigint(20) default NULL,
|
`param01` bigint(20) default NULL,
|
||||||
`const02` decimal(2,1) NOT NULL default '0.0',
|
`const02` decimal(2,1) NOT NULL default '0.0',
|
||||||
`param02` decimal(65,30) default NULL,
|
`param02` decimal(65,30) default NULL,
|
||||||
@ -4739,7 +4739,7 @@ t5 CREATE TABLE `t5` (
|
|||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
select * from t5 ;
|
select * from t5 ;
|
||||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
def test t5 t5 const01 const01 8 1 1 N 32769 0 63
|
def test t5 t5 const01 const01 3 1 1 N 32769 0 63
|
||||||
def test t5 t5 param01 param01 8 20 1 Y 32768 0 63
|
def test t5 t5 param01 param01 8 20 1 Y 32768 0 63
|
||||||
def test t5 t5 const02 const02 246 4 3 N 1 1 63
|
def test t5 t5 const02 const02 246 4 3 N 1 1 63
|
||||||
def test t5 t5 param02 param02 246 67 32 Y 0 30 63
|
def test t5 t5 param02 param02 246 67 32 Y 0 30 63
|
||||||
|
@ -1758,7 +1758,7 @@ NULL as const12, @arg12 as param12,
|
|||||||
show create table t5 ;
|
show create table t5 ;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t5 CREATE TABLE `t5` (
|
t5 CREATE TABLE `t5` (
|
||||||
`const01` bigint(1) NOT NULL default '0',
|
`const01` int(1) NOT NULL default '0',
|
||||||
`param01` bigint(20) default NULL,
|
`param01` bigint(20) default NULL,
|
||||||
`const02` decimal(2,1) NOT NULL default '0.0',
|
`const02` decimal(2,1) NOT NULL default '0.0',
|
||||||
`param02` decimal(65,30) default NULL,
|
`param02` decimal(65,30) default NULL,
|
||||||
@ -1788,7 +1788,7 @@ t5 CREATE TABLE `t5` (
|
|||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
select * from t5 ;
|
select * from t5 ;
|
||||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
def test t5 t5 const01 const01 8 1 1 N 32769 0 63
|
def test t5 t5 const01 const01 3 1 1 N 32769 0 63
|
||||||
def test t5 t5 param01 param01 8 20 1 Y 32768 0 63
|
def test t5 t5 param01 param01 8 20 1 Y 32768 0 63
|
||||||
def test t5 t5 const02 const02 246 4 3 N 1 1 63
|
def test t5 t5 const02 const02 246 4 3 N 1 1 63
|
||||||
def test t5 t5 param02 param02 246 67 32 Y 0 30 63
|
def test t5 t5 param02 param02 246 67 32 Y 0 30 63
|
||||||
|
@ -1758,7 +1758,7 @@ NULL as const12, @arg12 as param12,
|
|||||||
show create table t5 ;
|
show create table t5 ;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t5 CREATE TABLE `t5` (
|
t5 CREATE TABLE `t5` (
|
||||||
`const01` bigint(1) NOT NULL default '0',
|
`const01` int(1) NOT NULL default '0',
|
||||||
`param01` bigint(20) default NULL,
|
`param01` bigint(20) default NULL,
|
||||||
`const02` decimal(2,1) NOT NULL default '0.0',
|
`const02` decimal(2,1) NOT NULL default '0.0',
|
||||||
`param02` decimal(65,30) default NULL,
|
`param02` decimal(65,30) default NULL,
|
||||||
@ -1788,7 +1788,7 @@ t5 CREATE TABLE `t5` (
|
|||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
select * from t5 ;
|
select * from t5 ;
|
||||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
def test t5 t5 const01 const01 8 1 1 N 32769 0 63
|
def test t5 t5 const01 const01 3 1 1 N 32769 0 63
|
||||||
def test t5 t5 param01 param01 8 20 1 Y 32768 0 63
|
def test t5 t5 param01 param01 8 20 1 Y 32768 0 63
|
||||||
def test t5 t5 const02 const02 246 4 3 N 1 1 63
|
def test t5 t5 const02 const02 246 4 3 N 1 1 63
|
||||||
def test t5 t5 param02 param02 246 67 32 Y 0 30 63
|
def test t5 t5 param02 param02 246 67 32 Y 0 30 63
|
||||||
|
@ -644,6 +644,27 @@ SELECT count(*) FROM t1 WHERE CLIENT='000' AND (ARG1 != ' 2' OR ARG1 != ' 1');
|
|||||||
count(*)
|
count(*)
|
||||||
4
|
4
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (a int);
|
||||||
|
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
pk1 int(11) NOT NULL,
|
||||||
|
pk2 int(11) NOT NULL,
|
||||||
|
pk3 int(11) NOT NULL,
|
||||||
|
pk4 int(11) NOT NULL,
|
||||||
|
filler char(82),
|
||||||
|
PRIMARY KEY (pk1,pk2,pk3,pk4)
|
||||||
|
) DEFAULT CHARSET=latin1;
|
||||||
|
insert into t2 select 1, A.a+10*B.a, 432, 44, 'fillerZ' from t1 A, t1 B;
|
||||||
|
INSERT INTO t2 VALUES (2621, 2635, 0, 0,'filler'), (2621, 2635, 1, 0,'filler'),
|
||||||
|
(2621, 2635, 10, 0,'filler'), (2621, 2635, 11, 0,'filler'),
|
||||||
|
(2621, 2635, 14, 0,'filler'), (2621, 2635, 1000015, 0,'filler');
|
||||||
|
SELECT * FROM t2
|
||||||
|
WHERE ((((pk4 =0) AND (pk1 =2621) AND (pk2 =2635)))
|
||||||
|
OR ((pk4 =1) AND (((pk1 IN ( 7, 2, 1 ))) OR (pk1 =522)) AND ((pk2 IN ( 0, 2635))))
|
||||||
|
) AND (pk3 >=1000000);
|
||||||
|
pk1 pk2 pk3 pk4 filler
|
||||||
|
2621 2635 1000015 0 filler
|
||||||
|
drop table t1, t2;
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
id int(11) NOT NULL auto_increment,
|
id int(11) NOT NULL auto_increment,
|
||||||
status varchar(20),
|
status varchar(20),
|
||||||
|
@ -183,3 +183,47 @@ a
|
|||||||
32
|
32
|
||||||
42
|
42
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (a tinyint not null auto_increment primary key) engine=myisam;
|
||||||
|
insert into t1 values(103);
|
||||||
|
set auto_increment_increment=11;
|
||||||
|
set auto_increment_offset=4;
|
||||||
|
insert into t1 values(null);
|
||||||
|
insert into t1 values(null);
|
||||||
|
insert into t1 values(null);
|
||||||
|
ERROR 23000: Duplicate entry '125' for key 1
|
||||||
|
select a, mod(a-@@auto_increment_offset,@@auto_increment_increment) from t1 order by a;
|
||||||
|
a mod(a-@@auto_increment_offset,@@auto_increment_increment)
|
||||||
|
103 0
|
||||||
|
114 0
|
||||||
|
125 0
|
||||||
|
create table t2 (a tinyint unsigned not null auto_increment primary key) engine=myisam;
|
||||||
|
set auto_increment_increment=10;
|
||||||
|
set auto_increment_offset=1;
|
||||||
|
set insert_id=1000;
|
||||||
|
insert into t2 values(null);
|
||||||
|
Warnings:
|
||||||
|
Warning 1264 Out of range value adjusted for column 'a' at row 1
|
||||||
|
select a, mod(a-@@auto_increment_offset,@@auto_increment_increment) from t2 order by a;
|
||||||
|
a mod(a-@@auto_increment_offset,@@auto_increment_increment)
|
||||||
|
251 0
|
||||||
|
create table t3 like t1;
|
||||||
|
set auto_increment_increment=1000;
|
||||||
|
set auto_increment_offset=700;
|
||||||
|
insert into t3 values(null);
|
||||||
|
Warnings:
|
||||||
|
Warning 1264 Out of range value adjusted for column 'a' at row 1
|
||||||
|
select * from t3 order by a;
|
||||||
|
a
|
||||||
|
127
|
||||||
|
select * from t1 order by a;
|
||||||
|
a
|
||||||
|
103
|
||||||
|
114
|
||||||
|
125
|
||||||
|
select * from t2 order by a;
|
||||||
|
a
|
||||||
|
251
|
||||||
|
select * from t3 order by a;
|
||||||
|
a
|
||||||
|
127
|
||||||
|
drop table t1,t2,t3;
|
||||||
|
@ -74,6 +74,19 @@ SET FOREIGN_KEY_CHECKS=0;
|
|||||||
INSERT INTO t1 VALUES (1),(1);
|
INSERT INTO t1 VALUES (1),(1);
|
||||||
ERROR 23000: Duplicate entry '1' for key 1
|
ERROR 23000: Duplicate entry '1' for key 1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1(a int auto_increment, key(a));
|
||||||
|
create table t2(a int);
|
||||||
|
insert into t1 (a) values (null);
|
||||||
|
insert into t2 (a) select a from t1 where a is null;
|
||||||
|
insert into t2 (a) select a from t1 where a is null;
|
||||||
|
select * from t2;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
select * from t2;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
drop table t1;
|
||||||
|
drop table t2;
|
||||||
drop function if exists bug15728;
|
drop function if exists bug15728;
|
||||||
drop function if exists bug15728_insert;
|
drop function if exists bug15728_insert;
|
||||||
drop table if exists t1, t2;
|
drop table if exists t1, t2;
|
||||||
@ -132,3 +145,68 @@ id last_id
|
|||||||
drop function bug15728;
|
drop function bug15728;
|
||||||
drop function bug15728_insert;
|
drop function bug15728_insert;
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
create table t1 (n int primary key auto_increment not null,
|
||||||
|
b int, unique(b));
|
||||||
|
set sql_log_bin=0;
|
||||||
|
insert into t1 values(null,100);
|
||||||
|
replace into t1 values(null,50),(null,100),(null,150);
|
||||||
|
select * from t1 order by n;
|
||||||
|
n b
|
||||||
|
2 50
|
||||||
|
3 100
|
||||||
|
4 150
|
||||||
|
truncate table t1;
|
||||||
|
set sql_log_bin=1;
|
||||||
|
insert into t1 values(null,100);
|
||||||
|
select * from t1 order by n;
|
||||||
|
n b
|
||||||
|
1 100
|
||||||
|
insert into t1 values(null,200),(null,300);
|
||||||
|
delete from t1 where b <> 100;
|
||||||
|
select * from t1 order by n;
|
||||||
|
n b
|
||||||
|
1 100
|
||||||
|
replace into t1 values(null,100),(null,350);
|
||||||
|
select * from t1 order by n;
|
||||||
|
n b
|
||||||
|
2 100
|
||||||
|
3 350
|
||||||
|
select * from t1 order by n;
|
||||||
|
n b
|
||||||
|
2 100
|
||||||
|
3 350
|
||||||
|
insert into t1 values (NULL,400),(3,500),(NULL,600) on duplicate key UPDATE n=1000;
|
||||||
|
select * from t1 order by n;
|
||||||
|
n b
|
||||||
|
2 100
|
||||||
|
4 400
|
||||||
|
1000 350
|
||||||
|
1001 600
|
||||||
|
select * from t1 order by n;
|
||||||
|
n b
|
||||||
|
2 100
|
||||||
|
4 400
|
||||||
|
1000 350
|
||||||
|
1001 600
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (n int primary key auto_increment not null,
|
||||||
|
b int, unique(b));
|
||||||
|
insert into t1 values(null,100);
|
||||||
|
select * from t1 order by n;
|
||||||
|
n b
|
||||||
|
1 100
|
||||||
|
insert into t1 values(null,200),(null,300);
|
||||||
|
delete from t1 where b <> 100;
|
||||||
|
select * from t1 order by n;
|
||||||
|
n b
|
||||||
|
1 100
|
||||||
|
insert into t1 values(null,100),(null,350) on duplicate key update n=2;
|
||||||
|
select * from t1 order by n;
|
||||||
|
n b
|
||||||
|
2 100
|
||||||
|
3 350
|
||||||
|
select * from t1 order by n;
|
||||||
|
n b
|
||||||
|
2 100
|
||||||
|
3 350
|
||||||
|
drop table t1;
|
||||||
|
@ -3395,3 +3395,6 @@ a t1.b + 0 t1.c + 0 a t2.b + 0 c d
|
|||||||
1 0 1 1 0 1 NULL
|
1 0 1 1 0 1 NULL
|
||||||
2 0 1 NULL NULL NULL NULL
|
2 0 1 NULL NULL NULL NULL
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
SELECT 0.9888889889 * 1.011111411911;
|
||||||
|
0.9888889889 * 1.011111411911
|
||||||
|
0.9998769417899202067879
|
||||||
|
@ -1075,3 +1075,18 @@ SELECT f1();
|
|||||||
f1()
|
f1()
|
||||||
abc
|
abc
|
||||||
DROP FUNCTION f1;
|
DROP FUNCTION f1;
|
||||||
|
DROP PROCEDURE IF EXISTS p1;
|
||||||
|
CREATE PROCEDURE p1()
|
||||||
|
BEGIN
|
||||||
|
DECLARE v_char VARCHAR(255);
|
||||||
|
DECLARE v_text TEXT DEFAULT '';
|
||||||
|
SET v_char = 'abc';
|
||||||
|
SET v_text = v_char;
|
||||||
|
SET v_char = 'def';
|
||||||
|
SET v_text = concat(v_text, '|', v_char);
|
||||||
|
SELECT v_text;
|
||||||
|
END|
|
||||||
|
CALL p1();
|
||||||
|
v_text
|
||||||
|
abc|def
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
@ -4921,7 +4921,7 @@ create table t3 as select * from v1|
|
|||||||
show create table t3|
|
show create table t3|
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t3 CREATE TABLE `t3` (
|
t3 CREATE TABLE `t3` (
|
||||||
`j` bigint(11) default NULL
|
`j` int(11) default NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
select * from t3|
|
select * from t3|
|
||||||
j
|
j
|
||||||
|
@ -206,3 +206,17 @@ drop procedure bug10100pd|
|
|||||||
drop procedure bug10100pc|
|
drop procedure bug10100pc|
|
||||||
drop view v1|
|
drop view v1|
|
||||||
drop table t3|
|
drop table t3|
|
||||||
|
drop procedure if exists bug15298_1;
|
||||||
|
drop procedure if exists bug15298_2;
|
||||||
|
grant all privileges on test.* to 'mysqltest_1'@'localhost';
|
||||||
|
create procedure 15298_1 () sql security definer show grants for current_user;
|
||||||
|
create procedure 15298_2 () sql security definer show grants;
|
||||||
|
call 15298_1();
|
||||||
|
Grants for root@localhost
|
||||||
|
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
|
||||||
|
call 15298_2();
|
||||||
|
Grants for root@localhost
|
||||||
|
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
|
||||||
|
drop user mysqltest_1@localhost;
|
||||||
|
drop procedure 15298_1;
|
||||||
|
drop procedure 15298_2;
|
||||||
|
@ -1298,3 +1298,49 @@ t2 CREATE TABLE `t2` (
|
|||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t2,t1;
|
drop table t2,t1;
|
||||||
set @@sql_mode= @org_mode;
|
set @@sql_mode= @org_mode;
|
||||||
|
set @@sql_mode='traditional';
|
||||||
|
create table t1 (i int)
|
||||||
|
comment '123456789*123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*123456789*';
|
||||||
|
ERROR HY000: Too long comment for table 't1'
|
||||||
|
create table t1 (
|
||||||
|
i int comment
|
||||||
|
'123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*');
|
||||||
|
ERROR HY000: Too long comment for field 'i'
|
||||||
|
set @@sql_mode= @org_mode;
|
||||||
|
create table t1
|
||||||
|
(i int comment
|
||||||
|
'123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*');
|
||||||
|
Warnings:
|
||||||
|
Warning 1105 Unknown error
|
||||||
|
select column_name, column_comment from information_schema.columns where
|
||||||
|
table_schema = 'test' and table_name = 't1';
|
||||||
|
column_name column_comment
|
||||||
|
i 123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*
|
||||||
|
drop table t1;
|
||||||
|
set names utf8;
|
||||||
|
create table t1 (i int)
|
||||||
|
comment '123456789*123456789*123456789*123456789*123456789*123456789*';
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`i` int(11) default NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='123456789*123456789*123456789*123456789*123456789*123456789*'
|
||||||
|
drop table t1;
|
||||||
|
@ -1087,24 +1087,24 @@ CREATE TABLE t1 SELECT * FROM (SELECT 1 as a,(SELECT 1)) a;
|
|||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` bigint(1) NOT NULL default '0',
|
`a` int(1) NOT NULL default '0',
|
||||||
`(SELECT 1)` bigint(1) NOT NULL default '0'
|
`(SELECT 1)` int(1) NOT NULL default '0'
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
CREATE TABLE t1 SELECT * FROM (SELECT 1 as a,(SELECT a)) a;
|
CREATE TABLE t1 SELECT * FROM (SELECT 1 as a,(SELECT a)) a;
|
||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` bigint(1) NOT NULL default '0',
|
`a` int(1) NOT NULL default '0',
|
||||||
`(SELECT a)` bigint(1) NOT NULL default '0'
|
`(SELECT a)` int(1) NOT NULL default '0'
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
CREATE TABLE t1 SELECT * FROM (SELECT 1 as a,(SELECT a+0)) a;
|
CREATE TABLE t1 SELECT * FROM (SELECT 1 as a,(SELECT a+0)) a;
|
||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` bigint(1) NOT NULL default '0',
|
`a` int(1) NOT NULL default '0',
|
||||||
`(SELECT a+0)` bigint(3) NOT NULL default '0'
|
`(SELECT a+0)` int(3) NOT NULL default '0'
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
CREATE TABLE t1 SELECT (SELECT 1 as a UNION SELECT 1+1 limit 1,1) as a;
|
CREATE TABLE t1 SELECT (SELECT 1 as a UNION SELECT 1+1 limit 1,1) as a;
|
||||||
@ -2854,6 +2854,40 @@ a
|
|||||||
3
|
3
|
||||||
4
|
4
|
||||||
DROP TABLE t1,t2,t3;
|
DROP TABLE t1,t2,t3;
|
||||||
|
purge master logs before (select adddate(current_timestamp(), interval -4 day));
|
||||||
|
CREATE TABLE t1 (f1 INT);
|
||||||
|
CREATE TABLE t2 (f2 INT);
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
SELECT * FROM t1 WHERE f1 > ALL (SELECT f2 FROM t2);
|
||||||
|
f1
|
||||||
|
1
|
||||||
|
SELECT * FROM t1 WHERE f1 > ALL (SELECT f2 FROM t2 WHERE 1=0);
|
||||||
|
f1
|
||||||
|
1
|
||||||
|
INSERT INTO t2 VALUES (1);
|
||||||
|
INSERT INTO t2 VALUES (2);
|
||||||
|
SELECT * FROM t1 WHERE f1 > ALL (SELECT f2 FROM t2 WHERE f2=0);
|
||||||
|
f1
|
||||||
|
1
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
select 1 from dual where 1 < any (select 2);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
select 1 from dual where 1 < all (select 2);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
select 1 from dual where 2 > any (select 1);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
select 1 from dual where 2 > all (select 1);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
select 1 from dual where 1 < any (select 2 from dual);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
select 1 from dual where 1 < all (select 2 from dual where 1!=1);
|
||||||
|
1
|
||||||
|
1
|
||||||
create table t1 (df decimal(5,1));
|
create table t1 (df decimal(5,1));
|
||||||
insert into t1 values(1.1);
|
insert into t1 values(1.1);
|
||||||
insert into t1 values(2.2);
|
insert into t1 values(2.2);
|
||||||
|
@ -273,7 +273,7 @@ create table t2 (primary key (auto)) select auto+1 as auto,1 as t1, 'a' as t2, r
|
|||||||
show full columns from t2;
|
show full columns from t2;
|
||||||
Field Type Collation Null Key Default Extra Privileges Comment
|
Field Type Collation Null Key Default Extra Privileges Comment
|
||||||
auto bigint(12) unsigned NULL NO PRI 0 #
|
auto bigint(12) unsigned NULL NO PRI 0 #
|
||||||
t1 bigint(1) NULL NO 0 #
|
t1 int(1) NULL NO 0 #
|
||||||
t2 varchar(1) latin1_swedish_ci NO #
|
t2 varchar(1) latin1_swedish_ci NO #
|
||||||
t3 varchar(256) latin1_swedish_ci NO #
|
t3 varchar(256) latin1_swedish_ci NO #
|
||||||
t4 varbinary(256) NULL NO #
|
t4 varbinary(256) NULL NO #
|
||||||
@ -301,7 +301,7 @@ show full columns from t3;
|
|||||||
Field Type Collation Null Key Default Extra Privileges Comment
|
Field Type Collation Null Key Default Extra Privileges Comment
|
||||||
c1 int(11) NULL YES NULL #
|
c1 int(11) NULL YES NULL #
|
||||||
c2 int(11) NULL YES NULL #
|
c2 int(11) NULL YES NULL #
|
||||||
const bigint(1) NULL NO 0 #
|
const int(1) NULL NO 0 #
|
||||||
drop table t1,t2,t3;
|
drop table t1,t2,t3;
|
||||||
create table t1 ( myfield INT NOT NULL, UNIQUE INDEX (myfield), unique (myfield), index(myfield));
|
create table t1 ( myfield INT NOT NULL, UNIQUE INDEX (myfield), unique (myfield), index(myfield));
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
@ -2735,4 +2735,42 @@ m e
|
|||||||
4 a
|
4 a
|
||||||
1 b
|
1 b
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP TABLE IF EXISTS t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
CREATE TABLE t1 (a INT NOT NULL, b INT NULL DEFAULT NULL);
|
||||||
|
CREATE VIEW v1 AS SELECT a, b FROM t1;
|
||||||
|
INSERT INTO v1 (b) VALUES (2);
|
||||||
|
Warnings:
|
||||||
|
Warning 1423 Field of view 'test.v1' underlying table doesn't have a default value
|
||||||
|
SET SQL_MODE = STRICT_ALL_TABLES;
|
||||||
|
INSERT INTO v1 (b) VALUES (4);
|
||||||
|
ERROR HY000: Field of view 'test.v1' underlying table doesn't have a default value
|
||||||
|
SET SQL_MODE = '';
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b
|
||||||
|
0 2
|
||||||
|
DROP VIEW v1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (firstname text, surname text);
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
("Bart","Simpson"),("Milhouse","van Houten"),("Montgomery","Burns");
|
||||||
|
CREATE VIEW v1 AS SELECT CONCAT(firstname," ",surname) AS name FROM t1;
|
||||||
|
SELECT CONCAT(LEFT(name,LENGTH(name)-INSTR(REVERSE(name)," ")),
|
||||||
|
LEFT(name,LENGTH(name)-INSTR(REVERSE(name)," "))) AS f1
|
||||||
|
FROM v1;
|
||||||
|
f1
|
||||||
|
BartBart
|
||||||
|
Milhouse vanMilhouse van
|
||||||
|
MontgomeryMontgomery
|
||||||
|
DROP VIEW v1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (i int, j int);
|
||||||
|
CREATE VIEW v1 AS SELECT COALESCE(i,j) FROM t1;
|
||||||
|
DESCRIBE v1;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
COALESCE(i,j) int(11) YES NULL
|
||||||
|
CREATE TABLE t2 SELECT COALESCE(i,j) FROM t1;
|
||||||
|
DESCRIBE t2;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
COALESCE(i,j) int(11) YES NULL
|
||||||
|
DROP VIEW v1;
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
@ -659,3 +659,56 @@ DROP VIEW test2.t3;
|
|||||||
DROP TABLE test2.t1, test1.t0;
|
DROP TABLE test2.t1, test1.t0;
|
||||||
DROP DATABASE test2;
|
DROP DATABASE test2;
|
||||||
DROP DATABASE test1;
|
DROP DATABASE test1;
|
||||||
|
DROP VIEW IF EXISTS v1;
|
||||||
|
DROP VIEW IF EXISTS v2;
|
||||||
|
DROP VIEW IF EXISTS v3;
|
||||||
|
DROP FUNCTION IF EXISTS f1;
|
||||||
|
DROP FUNCTION IF EXISTS f2;
|
||||||
|
DROP PROCEDURE IF EXISTS p1;
|
||||||
|
CREATE SQL SECURITY DEFINER VIEW v1 AS SELECT CURRENT_USER() AS cu;
|
||||||
|
CREATE FUNCTION f1() RETURNS VARCHAR(77) SQL SECURITY INVOKER
|
||||||
|
RETURN CURRENT_USER();
|
||||||
|
CREATE SQL SECURITY DEFINER VIEW v2 AS SELECT f1() AS cu;
|
||||||
|
CREATE PROCEDURE p1(OUT cu VARCHAR(77)) SQL SECURITY INVOKER
|
||||||
|
SET cu= CURRENT_USER();
|
||||||
|
CREATE FUNCTION f2() RETURNS VARCHAR(77) SQL SECURITY INVOKER
|
||||||
|
BEGIN
|
||||||
|
DECLARE cu VARCHAR(77);
|
||||||
|
CALL p1(cu);
|
||||||
|
RETURN cu;
|
||||||
|
END|
|
||||||
|
CREATE SQL SECURITY DEFINER VIEW v3 AS SELECT f2() AS cu;
|
||||||
|
CREATE USER mysqltest_u1@localhost;
|
||||||
|
GRANT ALL ON test.* TO mysqltest_u1@localhost;
|
||||||
|
|
||||||
|
The following tests should all return 1.
|
||||||
|
|
||||||
|
SELECT CURRENT_USER() = 'mysqltest_u1@localhost';
|
||||||
|
CURRENT_USER() = 'mysqltest_u1@localhost'
|
||||||
|
1
|
||||||
|
SELECT f1() = 'mysqltest_u1@localhost';
|
||||||
|
f1() = 'mysqltest_u1@localhost'
|
||||||
|
1
|
||||||
|
CALL p1(@cu);
|
||||||
|
SELECT @cu = 'mysqltest_u1@localhost';
|
||||||
|
@cu = 'mysqltest_u1@localhost'
|
||||||
|
1
|
||||||
|
SELECT f2() = 'mysqltest_u1@localhost';
|
||||||
|
f2() = 'mysqltest_u1@localhost'
|
||||||
|
1
|
||||||
|
SELECT cu = 'root@localhost' FROM v1;
|
||||||
|
cu = 'root@localhost'
|
||||||
|
1
|
||||||
|
SELECT cu = 'root@localhost' FROM v2;
|
||||||
|
cu = 'root@localhost'
|
||||||
|
1
|
||||||
|
SELECT cu = 'root@localhost' FROM v3;
|
||||||
|
cu = 'root@localhost'
|
||||||
|
1
|
||||||
|
DROP VIEW v3;
|
||||||
|
DROP FUNCTION f2;
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
DROP FUNCTION f1;
|
||||||
|
DROP VIEW v2;
|
||||||
|
DROP VIEW v1;
|
||||||
|
DROP USER mysqltest_u1@localhost;
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
select 0;
|
||||||
|
0
|
||||||
|
0
|
||||||
|
flush status;
|
||||||
select 1;
|
select 1;
|
||||||
1
|
1
|
||||||
1
|
1
|
||||||
|
@ -1 +1,29 @@
|
|||||||
select * from mysql.user as t1, mysql.user as t2, mysql.user as t3;
|
select * from mysql.user as t1, mysql.user as t2, mysql.user as t3;
|
||||||
|
use test;
|
||||||
|
|
||||||
|
drop table if exists t1;
|
||||||
|
create table t1 (x int);
|
||||||
|
drop table if exists t2;
|
||||||
|
create table t2 (y int);
|
||||||
|
|
||||||
|
drop procedure if exists p1;
|
||||||
|
create definer=root@localhost procedure p1() select * from t1;
|
||||||
|
call p1();
|
||||||
|
drop procedure p1;
|
||||||
|
|
||||||
|
create definer=root@localhost procedure p1() insert into t1 values (3),(5),(7);
|
||||||
|
call p1();
|
||||||
|
|
||||||
|
drop function if exists f1;
|
||||||
|
create definer=root@localhost function f1() returns int return (select count(*) from t1);
|
||||||
|
insert into t2 set y = f1()*10;
|
||||||
|
|
||||||
|
drop view if exists v1;
|
||||||
|
create definer=root@localhost view v1 as select f1();
|
||||||
|
insert into t2 (y) select * from v1;
|
||||||
|
|
||||||
|
create trigger trg1 after insert on t2 for each row insert into t1 values (new.y);
|
||||||
|
insert into t2 values (11), (13);
|
||||||
|
drop procedure p1;
|
||||||
|
drop function f1;
|
||||||
|
drop view v1;
|
||||||
|
@ -128,15 +128,3 @@ show binlog events;
|
|||||||
drop table t1,t2,t3;
|
drop table t1,t2,t3;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
|
||||||
#
|
|
||||||
# BUG#10952 - alter table ... lost data without errors and warnings
|
|
||||||
#
|
|
||||||
drop table if exists t1;
|
|
||||||
create table t1 (c char(20)) engine=MyISAM;
|
|
||||||
insert into t1 values ("Monty"),("WAX"),("Walrus");
|
|
||||||
--error 1031
|
|
||||||
alter table t1 engine=blackhole;
|
|
||||||
drop table t1;
|
|
||||||
|
|
||||||
# End of 5.0 tests
|
|
||||||
|
@ -261,6 +261,20 @@ select str_to_date("2003-04-05 g", "%Y-%m-%d") as f1,
|
|||||||
str_to_date("2003-04-05 10:11:12.101010234567", "%Y-%m-%d %H:%i:%S.%f") as f2;
|
str_to_date("2003-04-05 10:11:12.101010234567", "%Y-%m-%d %H:%i:%S.%f") as f2;
|
||||||
--enable_ps_protocol
|
--enable_ps_protocol
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test of locale dependent date format (WL#2928 Date Translation NRE)
|
||||||
|
#
|
||||||
|
set names latin1;
|
||||||
|
select date_format('2004-01-01','%W (%a), %e %M (%b) %Y');
|
||||||
|
set lc_time_names=ru_RU;
|
||||||
|
set names koi8r;
|
||||||
|
select date_format('2004-01-01','%W (%a), %e %M (%b) %Y');
|
||||||
|
set lc_time_names=de_DE;
|
||||||
|
set names latin1;
|
||||||
|
select date_format('2004-01-01','%W (%a), %e %M (%b) %Y');
|
||||||
|
set names latin1;
|
||||||
|
set lc_time_names=en_US;
|
||||||
|
|
||||||
#
|
#
|
||||||
# Bug #14016
|
# Bug #14016
|
||||||
#
|
#
|
||||||
|
@ -1365,4 +1365,64 @@ drop table federated.t1, federated.t2;
|
|||||||
connection slave;
|
connection slave;
|
||||||
drop table federated.t1, federated.t2;
|
drop table federated.t1, federated.t2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Additional test for bug#18437 "Wrong values inserted with a before
|
||||||
|
# update trigger on NDB table". SQL-layer didn't properly inform
|
||||||
|
# handler about fields which were read and set in triggers. In some
|
||||||
|
# cases this resulted in incorrect (garbage) values of OLD variables
|
||||||
|
# and lost changes to NEW variables.
|
||||||
|
# Since for federated engine only operation which is affected by wrong
|
||||||
|
# fields mark-up is handler::write_row() this file constains coverage
|
||||||
|
# for ON INSERT triggers only. Tests for other types of triggers reside
|
||||||
|
# in ndb_trigger.test.
|
||||||
|
#
|
||||||
|
--disable_warnings
|
||||||
|
drop table if exists federated.t1;
|
||||||
|
--enable_warnings
|
||||||
|
create table federated.t1 (a int, b int, c int);
|
||||||
|
connection master;
|
||||||
|
--disable_warnings
|
||||||
|
drop table if exists federated.t1;
|
||||||
|
drop table if exists federated.t2;
|
||||||
|
--enable_warnings
|
||||||
|
--replace_result $SLAVE_MYPORT SLAVE_PORT
|
||||||
|
eval create table federated.t1 (a int, b int, c int) engine=federated connection='mysql://root@127.0.0.1:$SLAVE_MYPORT/federated/t1';
|
||||||
|
create trigger federated.t1_bi before insert on federated.t1 for each row set new.c= new.a * new.b;
|
||||||
|
create table federated.t2 (a int, b int);
|
||||||
|
insert into federated.t2 values (13, 17), (19, 23);
|
||||||
|
# Each of three statements should correctly set values for all three fields
|
||||||
|
# insert
|
||||||
|
insert into federated.t1 (a, b) values (1, 2), (3, 5), (7, 11);
|
||||||
|
select * from federated.t1;
|
||||||
|
delete from federated.t1;
|
||||||
|
# insert ... select
|
||||||
|
insert into federated.t1 (a, b) select * from federated.t2;
|
||||||
|
select * from federated.t1;
|
||||||
|
delete from federated.t1;
|
||||||
|
# load
|
||||||
|
load data infile '../std_data_ln/loaddata5.dat' into table federated.t1 fields terminated by '' enclosed by '' ignore 1 lines (a, b);
|
||||||
|
select * from federated.t1;
|
||||||
|
drop tables federated.t1, federated.t2;
|
||||||
|
|
||||||
|
connection slave;
|
||||||
|
drop table federated.t1;
|
||||||
|
#
|
||||||
|
# Bug #16494: Updates that set a column to NULL fail sometimes
|
||||||
|
#
|
||||||
|
connection slave;
|
||||||
|
create table t1 (id int not null auto_increment primary key, val int);
|
||||||
|
connection master;
|
||||||
|
--replace_result $SLAVE_MYPORT SLAVE_PORT
|
||||||
|
eval create table t1
|
||||||
|
(id int not null auto_increment primary key, val int) engine=federated
|
||||||
|
connection='mysql://root@127.0.0.1:$SLAVE_MYPORT/test/t1';
|
||||||
|
insert into t1 values (1,0),(2,0);
|
||||||
|
update t1 set val = NULL where id = 1;
|
||||||
|
select * from t1;
|
||||||
|
connection slave;
|
||||||
|
select * from t1;
|
||||||
|
drop table t1;
|
||||||
|
connection master;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
source include/federated_cleanup.inc;
|
source include/federated_cleanup.inc;
|
||||||
|
@ -685,6 +685,23 @@ select * from t1 where f1='test' and (f2= sha("test") or f2= sha("TEST"));
|
|||||||
select * from t1 where f1='test' and (f2= sha("TEST") or f2= sha("test"));
|
select * from t1 where f1='test' and (f2= sha("TEST") or f2= sha("test"));
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#18243: REVERSE changes its argument
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a varchar(10));
|
||||||
|
INSERT INTO t1 VALUES ('abc'), ('xyz');
|
||||||
|
|
||||||
|
SELECT a, CONCAT(a,' ',a) AS c FROM t1
|
||||||
|
HAVING LEFT(c,LENGTH(c)-INSTR(REVERSE(c)," ")) = a;
|
||||||
|
|
||||||
|
SELECT a, CONCAT(a,' ',a) AS c FROM t1
|
||||||
|
HAVING LEFT(CONCAT(a,' ',a),
|
||||||
|
LENGTH(CONCAT(a,' ',a))-
|
||||||
|
INSTR(REVERSE(CONCAT(a,' ',a))," ")) = a;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo End of 4.1 tests
|
--echo End of 4.1 tests
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -142,12 +142,6 @@ select extract(MINUTE_SECOND FROM "10:11:12");
|
|||||||
select extract(SECOND FROM "1999-01-02 10:11:12");
|
select extract(SECOND FROM "1999-01-02 10:11:12");
|
||||||
select extract(MONTH FROM "2001-02-00");
|
select extract(MONTH FROM "2001-02-00");
|
||||||
|
|
||||||
#
|
|
||||||
# MySQL Bugs: #12356: DATE_SUB or DATE_ADD incorrectly returns null
|
|
||||||
#
|
|
||||||
SELECT DATE_SUB(str_to_date('9999-12-31 00:01:00','%Y-%m-%d %H:%i:%s'), INTERVAL 1 MINUTE);
|
|
||||||
SELECT DATE_ADD(str_to_date('9999-12-30 23:59:00','%Y-%m-%d %H:%i:%s'), INTERVAL 1 MINUTE);
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# test EXTRACT QUARTER (Bug #18100)
|
# test EXTRACT QUARTER (Bug #18100)
|
||||||
#
|
#
|
||||||
@ -164,7 +158,11 @@ SELECT EXTRACT(QUARTER FROM '2004-09-15') AS quarter;
|
|||||||
SELECT EXTRACT(QUARTER FROM '2004-10-15') AS quarter;
|
SELECT EXTRACT(QUARTER FROM '2004-10-15') AS quarter;
|
||||||
SELECT EXTRACT(QUARTER FROM '2004-11-15') AS quarter;
|
SELECT EXTRACT(QUARTER FROM '2004-11-15') AS quarter;
|
||||||
SELECT EXTRACT(QUARTER FROM '2004-12-15') AS quarter;
|
SELECT EXTRACT(QUARTER FROM '2004-12-15') AS quarter;
|
||||||
|
#
|
||||||
|
# MySQL Bugs: #12356: DATE_SUB or DATE_ADD incorrectly returns null
|
||||||
|
#
|
||||||
|
SELECT DATE_SUB(str_to_date('9999-12-31 00:01:00','%Y-%m-%d %H:%i:%s'), INTERVAL 1 MINUTE);
|
||||||
|
SELECT DATE_ADD(str_to_date('9999-12-30 23:59:00','%Y-%m-%d %H:%i:%s'), INTERVAL 1 MINUTE);
|
||||||
|
|
||||||
#
|
#
|
||||||
# Test big intervals (Bug #3498)
|
# Test big intervals (Bug #3498)
|
||||||
|
@ -187,4 +187,48 @@ check table t1 extended;
|
|||||||
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#17877 - Corrupted spatial index
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
c1 geometry NOT NULL default '',
|
||||||
|
SPATIAL KEY i1 (c1(32))
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||||
|
INSERT INTO t1 (c1) VALUES (
|
||||||
|
PolygonFromText('POLYGON((-18.6086111000 -66.9327777000,
|
||||||
|
-18.6055555000 -66.8158332999,
|
||||||
|
-18.7186111000 -66.8102777000,
|
||||||
|
-18.7211111000 -66.9269443999,
|
||||||
|
-18.6086111000 -66.9327777000))'));
|
||||||
|
# This showed a missing key.
|
||||||
|
CHECK TABLE t1 EXTENDED;
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
c1 geometry NOT NULL default '',
|
||||||
|
SPATIAL KEY i1 (c1(32))
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||||
|
INSERT INTO t1 (c1) VALUES (
|
||||||
|
PolygonFromText('POLYGON((-18.6086111000 -66.9327777000,
|
||||||
|
-18.6055555000 -66.8158332999,
|
||||||
|
-18.7186111000 -66.8102777000,
|
||||||
|
-18.7211111000 -66.9269443999,
|
||||||
|
-18.6086111000 -66.9327777000))'));
|
||||||
|
INSERT INTO t1 (c1) VALUES (
|
||||||
|
PolygonFromText('POLYGON((-65.7402776999 -96.6686111000,
|
||||||
|
-65.7372222000 -96.5516666000,
|
||||||
|
-65.8502777000 -96.5461111000,
|
||||||
|
-65.8527777000 -96.6627777000,
|
||||||
|
-65.7402776999 -96.6686111000))'));
|
||||||
|
# This is the same as the first insert to get a non-unique key.
|
||||||
|
INSERT INTO t1 (c1) VALUES (
|
||||||
|
PolygonFromText('POLYGON((-18.6086111000 -66.9327777000,
|
||||||
|
-18.6055555000 -66.8158332999,
|
||||||
|
-18.7186111000 -66.8102777000,
|
||||||
|
-18.7211111000 -66.9269443999,
|
||||||
|
-18.6086111000 -66.9327777000))'));
|
||||||
|
# This showed (and still shows) OK.
|
||||||
|
CHECK TABLE t1 EXTENDED;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
@ -852,3 +852,39 @@ create table t2(f1 char(5));
|
|||||||
select concat(@a, table_name), @a, table_name
|
select concat(@a, table_name), @a, table_name
|
||||||
from information_schema.tables where table_schema = 'test';
|
from information_schema.tables where table_schema = 'test';
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#20230: routine_definition is not null
|
||||||
|
#
|
||||||
|
--disable_warnings
|
||||||
|
DROP PROCEDURE IF EXISTS p1;
|
||||||
|
DROP FUNCTION IF EXISTS f1;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
CREATE PROCEDURE p1() SET @a= 1;
|
||||||
|
CREATE FUNCTION f1() RETURNS INT RETURN @a + 1;
|
||||||
|
CREATE USER mysql_bug20230@localhost;
|
||||||
|
GRANT EXECUTE ON PROCEDURE p1 TO mysql_bug20230@localhost;
|
||||||
|
GRANT EXECUTE ON FUNCTION f1 TO mysql_bug20230@localhost;
|
||||||
|
|
||||||
|
SELECT ROUTINE_NAME, ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES;
|
||||||
|
SHOW CREATE PROCEDURE p1;
|
||||||
|
SHOW CREATE FUNCTION f1;
|
||||||
|
|
||||||
|
connect (conn1, localhost, mysql_bug20230,,);
|
||||||
|
|
||||||
|
SELECT ROUTINE_NAME, ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES;
|
||||||
|
SHOW CREATE PROCEDURE p1;
|
||||||
|
SHOW CREATE FUNCTION f1;
|
||||||
|
CALL p1();
|
||||||
|
SELECT f1();
|
||||||
|
|
||||||
|
disconnect conn1;
|
||||||
|
connection default;
|
||||||
|
|
||||||
|
DROP FUNCTION f1;
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
DROP USER mysql_bug20230@localhost;
|
||||||
|
|
||||||
|
# End of 5.0 tests.
|
||||||
|
@ -35,4 +35,205 @@ select @a;
|
|||||||
connection con0;
|
connection con0;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
# End of 4.1 tests
|
disconnect con1;
|
||||||
|
disconnect con2;
|
||||||
|
disconnect con3;
|
||||||
|
disconnect con4;
|
||||||
|
disconnect con5;
|
||||||
|
|
||||||
|
--echo End of 4.1 tests
|
||||||
|
#
|
||||||
|
# Test 5.* features
|
||||||
|
#
|
||||||
|
|
||||||
|
create table t1 (x int);
|
||||||
|
insert into t1 values (3), (5), (7);
|
||||||
|
create table t2 (y int);
|
||||||
|
|
||||||
|
create user mysqltest1@localhost;
|
||||||
|
grant all privileges on test.* to mysqltest1@localhost;
|
||||||
|
#
|
||||||
|
# Create a simple procedure
|
||||||
|
#
|
||||||
|
set global init_connect="create procedure p1() select * from t1";
|
||||||
|
connect (con1,localhost,mysqltest1,,);
|
||||||
|
connection con1;
|
||||||
|
call p1();
|
||||||
|
drop procedure p1;
|
||||||
|
|
||||||
|
connection con0;
|
||||||
|
disconnect con1;
|
||||||
|
#
|
||||||
|
# Create a multi-result set procedure
|
||||||
|
#
|
||||||
|
set global init_connect="create procedure p1(x int)\
|
||||||
|
begin\
|
||||||
|
select count(*) from t1;\
|
||||||
|
select * from t1;\
|
||||||
|
set @x = x;
|
||||||
|
end";
|
||||||
|
connect (con1,localhost,mysqltest1,,);
|
||||||
|
connection con1;
|
||||||
|
call p1(42);
|
||||||
|
select @x;
|
||||||
|
|
||||||
|
connection con0;
|
||||||
|
disconnect con1;
|
||||||
|
#
|
||||||
|
# Just call it - this will not generate any output
|
||||||
|
#
|
||||||
|
set global init_connect="call p1(4711)";
|
||||||
|
connect (con1,localhost,mysqltest1,,);
|
||||||
|
connection con1;
|
||||||
|
select @x;
|
||||||
|
|
||||||
|
connection con0;
|
||||||
|
disconnect con1;
|
||||||
|
#
|
||||||
|
# Drop the procedure
|
||||||
|
#
|
||||||
|
set global init_connect="drop procedure if exists p1";
|
||||||
|
connect (con1,localhost,mysqltest1,,);
|
||||||
|
connection con1;
|
||||||
|
--error ER_SP_DOES_NOT_EXIST
|
||||||
|
call p1();
|
||||||
|
|
||||||
|
connection con0;
|
||||||
|
disconnect con1;
|
||||||
|
#
|
||||||
|
# Execution of a more complex procedure
|
||||||
|
#
|
||||||
|
delimiter |;
|
||||||
|
create procedure p1(out sum int)
|
||||||
|
begin
|
||||||
|
declare n int default 0;
|
||||||
|
declare c cursor for select * from t1;
|
||||||
|
declare exit handler for not found
|
||||||
|
begin
|
||||||
|
close c;
|
||||||
|
set sum = n;
|
||||||
|
end;
|
||||||
|
|
||||||
|
open c;
|
||||||
|
loop
|
||||||
|
begin
|
||||||
|
declare x int;
|
||||||
|
|
||||||
|
fetch c into x;
|
||||||
|
if x > 3 then
|
||||||
|
set n = n + x;
|
||||||
|
end if;
|
||||||
|
end;
|
||||||
|
end loop;
|
||||||
|
end|
|
||||||
|
delimiter ;|
|
||||||
|
# Call the procedure with a cursor
|
||||||
|
set global init_connect="call p1(@sum)";
|
||||||
|
connect (con1,localhost,mysqltest1,,);
|
||||||
|
connection con1;
|
||||||
|
select @sum;
|
||||||
|
|
||||||
|
connection con0;
|
||||||
|
disconnect con1;
|
||||||
|
drop procedure p1;
|
||||||
|
#
|
||||||
|
# Test Dynamic SQL
|
||||||
|
#
|
||||||
|
delimiter |;
|
||||||
|
create procedure p1(tbl char(10), v int)
|
||||||
|
begin
|
||||||
|
set @s = concat('insert into ', tbl, ' values (?)');
|
||||||
|
set @v = v;
|
||||||
|
prepare stmt1 from @s;
|
||||||
|
execute stmt1 using @v;
|
||||||
|
deallocate prepare stmt1;
|
||||||
|
end|
|
||||||
|
delimiter ;|
|
||||||
|
# Call the procedure with prepared statements
|
||||||
|
set global init_connect="call p1('t1', 11)";
|
||||||
|
connect (con1,localhost,mysqltest1,,);
|
||||||
|
connection con1;
|
||||||
|
select * from t1;
|
||||||
|
|
||||||
|
connection con0;
|
||||||
|
disconnect con1;
|
||||||
|
drop procedure p1;
|
||||||
|
#
|
||||||
|
# Stored functions
|
||||||
|
#
|
||||||
|
delimiter |;
|
||||||
|
create function f1() returns int
|
||||||
|
begin
|
||||||
|
declare n int;
|
||||||
|
|
||||||
|
select count(*) into n from t1;
|
||||||
|
return n;
|
||||||
|
end|
|
||||||
|
delimiter ;|
|
||||||
|
# Invoke a function
|
||||||
|
set global init_connect="set @x = f1()";
|
||||||
|
connect (con1,localhost,mysqltest1,,);
|
||||||
|
connection con1;
|
||||||
|
select @x;
|
||||||
|
|
||||||
|
connection con0;
|
||||||
|
disconnect con1;
|
||||||
|
#
|
||||||
|
# Create a view
|
||||||
|
#
|
||||||
|
set global init_connect="create view v1 as select f1()";
|
||||||
|
connect (con1,localhost,mysqltest1,,);
|
||||||
|
connection con1;
|
||||||
|
select * from v1;
|
||||||
|
|
||||||
|
connection con0;
|
||||||
|
disconnect con1;
|
||||||
|
#
|
||||||
|
# Drop the view
|
||||||
|
#
|
||||||
|
set global init_connect="drop view v1";
|
||||||
|
connect (con1,localhost,mysqltest1,,);
|
||||||
|
connection con1;
|
||||||
|
--error ER_NO_SUCH_TABLE
|
||||||
|
select * from v1;
|
||||||
|
|
||||||
|
connection con0;
|
||||||
|
disconnect con1;
|
||||||
|
drop function f1;
|
||||||
|
|
||||||
|
# We can't test "create trigger", since this requires super privileges
|
||||||
|
# in 5.0, but with super privileges, init_connect is not executed.
|
||||||
|
# (However, this can be tested in 5.1)
|
||||||
|
#
|
||||||
|
#set global init_connect="create trigger trg1\
|
||||||
|
# after insert on t2\
|
||||||
|
# for each row\
|
||||||
|
# insert into t1 values (new.y)";
|
||||||
|
#connect (con1,localhost,mysqltest1,,);
|
||||||
|
#connection con1;
|
||||||
|
#insert into t2 values (2), (4);
|
||||||
|
#select * from t1;
|
||||||
|
#
|
||||||
|
#connection con0;
|
||||||
|
#disconnect con1;
|
||||||
|
|
||||||
|
create trigger trg1
|
||||||
|
after insert on t2
|
||||||
|
for each row
|
||||||
|
insert into t1 values (new.y);
|
||||||
|
|
||||||
|
# Invoke trigger
|
||||||
|
set global init_connect="insert into t2 values (13), (17), (19)";
|
||||||
|
connect (con1,localhost,mysqltest1,,);
|
||||||
|
connection con1;
|
||||||
|
select * from t1;
|
||||||
|
|
||||||
|
connection con0;
|
||||||
|
disconnect con1;
|
||||||
|
|
||||||
|
drop trigger trg1;
|
||||||
|
set global init_connect=default;
|
||||||
|
|
||||||
|
revoke all privileges, grant option from mysqltest1@localhost;
|
||||||
|
drop user mysqltest1@localhost;
|
||||||
|
drop table t1, t2;
|
||||||
|
@ -6,5 +6,15 @@
|
|||||||
# mysql-test/t/init_file-master.opt for the actual test
|
# mysql-test/t/init_file-master.opt for the actual test
|
||||||
#
|
#
|
||||||
|
|
||||||
# End of 4.1 tests
|
--echo ok
|
||||||
echo ok;
|
--echo end of 4.1 tests
|
||||||
|
#
|
||||||
|
# Chec 5.x features
|
||||||
|
#
|
||||||
|
# Expected:
|
||||||
|
# 3, 5, 7, 11, 13
|
||||||
|
select * from t1;
|
||||||
|
# Expected:
|
||||||
|
# 30, 3, 11, 13
|
||||||
|
select * from t2;
|
||||||
|
drop table t1, t2;
|
||||||
|
@ -58,6 +58,38 @@ where
|
|||||||
|
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#17212: results not sorted correctly by ORDER BY when using index
|
||||||
|
# (repeatable only w/innodb because of index props)
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a int, b int, KEY b (b)) Engine=InnoDB;
|
||||||
|
CREATE TABLE t2 (a int, b int, PRIMARY KEY (a,b)) Engine=InnoDB;
|
||||||
|
CREATE TABLE t3 (a int, b int, c int, PRIMARY KEY (a),
|
||||||
|
UNIQUE KEY b (b,c), KEY a (a,b,c)) Engine=InnoDB;
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (1, 1);
|
||||||
|
INSERT INTO t1 SELECT a + 1, b + 1 FROM t1;
|
||||||
|
INSERT INTO t1 SELECT a + 2, b + 2 FROM t1;
|
||||||
|
|
||||||
|
INSERT INTO t2 VALUES (1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8);
|
||||||
|
INSERT INTO t2 SELECT a + 1, b FROM t2;
|
||||||
|
DELETE FROM t2 WHERE a = 1 AND b < 2;
|
||||||
|
|
||||||
|
INSERT INTO t3 VALUES (1,1,1),(2,1,2);
|
||||||
|
INSERT INTO t3 SELECT a + 2, a + 2, 3 FROM t3;
|
||||||
|
INSERT INTO t3 SELECT a + 4, a + 4, 3 FROM t3;
|
||||||
|
|
||||||
|
# demonstrate a problem when a must-use-sort table flag
|
||||||
|
# (sort_by_table=1) is being neglected.
|
||||||
|
SELECT STRAIGHT_JOIN SQL_NO_CACHE t1.b, t1.a FROM t1, t3, t2 WHERE
|
||||||
|
t3.a = t2.a AND t2.b = t1.a AND t3.b = 1 AND t3.c IN (1, 2)
|
||||||
|
ORDER BY t1.b LIMIT 2;
|
||||||
|
|
||||||
|
# demonstrate the problem described in the bug report
|
||||||
|
SELECT STRAIGHT_JOIN SQL_NO_CACHE t1.b, t1.a FROM t1, t3, t2 WHERE
|
||||||
|
t3.a = t2.a AND t2.b = t1.a AND t3.b = 1 AND t3.c IN (1, 2)
|
||||||
|
ORDER BY t1.b LIMIT 5;
|
||||||
|
DROP TABLE t1, t2, t3;
|
||||||
#
|
#
|
||||||
# Bug #12882 min/max inconsistent on empty table
|
# Bug #12882 min/max inconsistent on empty table
|
||||||
#
|
#
|
||||||
|
@ -334,6 +334,7 @@ create table t1 (
|
|||||||
UNIQUE i1idx (i1),
|
UNIQUE i1idx (i1),
|
||||||
UNIQUE i2idx (i2));
|
UNIQUE i2idx (i2));
|
||||||
desc t1;
|
desc t1;
|
||||||
|
show create table t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -380,16 +380,6 @@ drop table t1, t2, t3;
|
|||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
|
||||||
#
|
|
||||||
# BUG#10952 - alter table ... lost data without errors and warnings
|
|
||||||
#
|
|
||||||
drop table if exists t1;
|
|
||||||
create table t1 (c char(20)) engine=MyISAM;
|
|
||||||
insert into t1 values ("Monty"),("WAX"),("Walrus");
|
|
||||||
--error 1031
|
|
||||||
alter table t1 engine=MERGE;
|
|
||||||
drop table t1;
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# BUG#19648 - Merge table does not work with bit types
|
# BUG#19648 - Merge table does not work with bit types
|
||||||
#
|
#
|
||||||
|
@ -718,8 +718,6 @@ UPDATE t1 AS ta1,t1 AS ta2 SET ta1.b='aaaaaa',ta2.b='bbbbbb';
|
|||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
# End of 4.1 tests
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Test varchar
|
# Test varchar
|
||||||
#
|
#
|
||||||
@ -844,3 +842,39 @@ create table t3 (c1 int) engine=myisam pack_keys=default;
|
|||||||
--error 1064
|
--error 1064
|
||||||
create table t4 (c1 int) engine=myisam pack_keys=2;
|
create table t4 (c1 int) engine=myisam pack_keys=2;
|
||||||
drop table t1, t2, t3;
|
drop table t1, t2, t3;
|
||||||
|
#
|
||||||
|
# Bug#8706 - temporary table with data directory option fails
|
||||||
|
#
|
||||||
|
connect (session1,localhost,root,,);
|
||||||
|
connect (session2,localhost,root,,);
|
||||||
|
|
||||||
|
connection session1;
|
||||||
|
disable_query_log;
|
||||||
|
eval create temporary table t1 (a int) engine=myisam data directory="$MYSQLTEST_VARDIR/tmp" select 9 a;
|
||||||
|
enable_query_log;
|
||||||
|
disable_result_log;
|
||||||
|
show create table t1;
|
||||||
|
enable_result_log;
|
||||||
|
|
||||||
|
connection session2;
|
||||||
|
disable_query_log;
|
||||||
|
eval create temporary table t1 (a int) engine=myisam data directory="$MYSQLTEST_VARDIR/tmp" select 99 a;
|
||||||
|
enable_query_log;
|
||||||
|
disable_result_log;
|
||||||
|
show create table t1;
|
||||||
|
enable_result_log;
|
||||||
|
|
||||||
|
connection default;
|
||||||
|
create table t1 (a int) engine=myisam select 42 a;
|
||||||
|
|
||||||
|
connection session1;
|
||||||
|
select * from t1;
|
||||||
|
disconnect session1;
|
||||||
|
connection session2;
|
||||||
|
select * from t1;
|
||||||
|
disconnect session2;
|
||||||
|
connection default;
|
||||||
|
select * from t1;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
# End of 4.1 tests
|
||||||
|
@ -610,7 +610,7 @@ drop database db1;
|
|||||||
# BUG#15328 Segmentation fault occured if my.cnf is invalid for escape sequence
|
# BUG#15328 Segmentation fault occured if my.cnf is invalid for escape sequence
|
||||||
#
|
#
|
||||||
|
|
||||||
--exec $MYSQL_MY_PRINT_DEFAULTS --config-file=$MYSQL_TEST_DIR/std_data/bug15328.cnf mysqldump
|
--exec $MYSQL_MY_PRINT_DEFAULTS --defaults-file=$MYSQL_TEST_DIR/std_data/bug15328.cnf mysqldump
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -1155,12 +1155,11 @@ insert into t values(5, 51);
|
|||||||
create view v1 as select qty, price, qty*price as value from t;
|
create view v1 as select qty, price, qty*price as value from t;
|
||||||
create view v2 as select qty from v1;
|
create view v2 as select qty from v1;
|
||||||
--echo mysqldump {
|
--echo mysqldump {
|
||||||
--exec $MYSQL_DUMP --compact -F --tab . test
|
--exec $MYSQL_DUMP --compact -F --tab $MYSQLTEST_VARDIR/tmp test
|
||||||
--exec cat v1.sql
|
--exec cat $MYSQLTEST_VARDIR/tmp/v1.sql
|
||||||
--echo } mysqldump {
|
--echo } mysqldump {
|
||||||
--exec cat v2.sql
|
--exec cat $MYSQLTEST_VARDIR/tmp/v2.sql
|
||||||
--echo } mysqldump
|
--echo } mysqldump
|
||||||
--rm v.sql t.sql t.txt
|
|
||||||
drop view v1;
|
drop view v1;
|
||||||
drop view v2;
|
drop view v2;
|
||||||
drop table t;
|
drop table t;
|
||||||
|
@ -39,6 +39,7 @@ INSERT INTO t1 VALUES (1,1,23),(2,2,24);
|
|||||||
REPLACE INTO t1 (j,k) VALUES (1,42);
|
REPLACE INTO t1 (j,k) VALUES (1,42);
|
||||||
REPLACE INTO t1 (i,j) VALUES (17,2);
|
REPLACE INTO t1 (i,j) VALUES (17,2);
|
||||||
SELECT * from t1 ORDER BY i;
|
SELECT * from t1 ORDER BY i;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
# bug#19906
|
# bug#19906
|
||||||
CREATE TABLE t2 (a INT(11) NOT NULL,
|
CREATE TABLE t2 (a INT(11) NOT NULL,
|
||||||
@ -64,4 +65,40 @@ SELECT * FROM t2 ORDER BY id;
|
|||||||
|
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #20728 "REPLACE does not work correctly for NDB table with PK and
|
||||||
|
# unique index"
|
||||||
|
#
|
||||||
|
--disable_warnings
|
||||||
|
drop table if exists t1;
|
||||||
|
--enable_warnings
|
||||||
|
create table t1 (pk int primary key, apk int unique, data int) engine=ndbcluster;
|
||||||
|
# Test for plain replace which updates pk
|
||||||
|
insert into t1 values (1, 1, 1), (2, 2, 2), (3, 3, 3);
|
||||||
|
replace into t1 (pk, apk) values (4, 1), (5, 2);
|
||||||
|
select * from t1 order by pk;
|
||||||
|
delete from t1;
|
||||||
|
# Another test for plain replace which doesn't touch pk
|
||||||
|
insert into t1 values (1, 1, 1), (2, 2, 2), (3, 3, 3);
|
||||||
|
replace into t1 (pk, apk) values (1, 4), (2, 5);
|
||||||
|
select * from t1 order by pk;
|
||||||
|
delete from t1;
|
||||||
|
# Test for load data replace which updates pk
|
||||||
|
insert into t1 values (1, 1, 1), (4, 4, 4), (6, 6, 6);
|
||||||
|
load data infile '../std_data_ln/loaddata5.dat' replace into table t1 fields terminated by '' enclosed by '' ignore 1 lines (pk, apk);
|
||||||
|
select * from t1 order by pk;
|
||||||
|
delete from t1;
|
||||||
|
# Now test for load data replace which doesn't touch pk
|
||||||
|
insert into t1 values (1, 1, 1), (3, 3, 3), (5, 5, 5);
|
||||||
|
load data infile '../std_data_ln/loaddata5.dat' replace into table t1 fields terminated by '' enclosed by '' ignore 1 lines (pk, apk);
|
||||||
|
select * from t1 order by pk;
|
||||||
|
delete from t1;
|
||||||
|
# Finally test for both types of replace ... select
|
||||||
|
insert into t1 values (1, 1, 1), (2, 2, 2), (3, 3, 3);
|
||||||
|
replace into t1 (pk, apk) select 4, 1;
|
||||||
|
replace into t1 (pk, apk) select 2, 4;
|
||||||
|
select * from t1 order by pk;
|
||||||
|
# Clean-up
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
--echo End of 5.0 tests.
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
|
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
use test;
|
use test;
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
|
||||||
drop table if exists t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
drop table if exists t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c,t10_c;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
|
||||||
CREATE TABLE `t1` (
|
CREATE TABLE `t1` (
|
||||||
@ -132,6 +132,13 @@ CREATE TABLE `t9` (
|
|||||||
) ENGINE=myisam DEFAULT CHARSET=latin1;
|
) ENGINE=myisam DEFAULT CHARSET=latin1;
|
||||||
INSERT INTO `t9` VALUES ('3g4jh8gar2t','joe','q3.net','elredun.com','q3.net','436643316120','436643316939','91341234568968','695595699','1.1.1.1','2.2.6.2','3','86989','34','x','x','2012-03-12 18:35:04','2012-12-05 12:35:04',3123123,9569,6565,1),('4tt45345235','pap','q3plus.qt','q3plus.qt','q3.net','436643316120','436643316939','8956234534568968','5254595969','1.1.1.1','8.6.2.2','4','86989','34','x','x','2012-03-12 12:55:34','2012-12-05 11:20:04',3223433,3369,9565,2),('4545435545','john','q3.net','q3.net','acne.li','436643316120','436643316939','45345234568968','995696699','1.1.1.1','2.9.9.2','2','86998','34','x','x','2012-03-12 11:35:03','2012-12-05 08:50:04',8823123,169,3565,3);
|
INSERT INTO `t9` VALUES ('3g4jh8gar2t','joe','q3.net','elredun.com','q3.net','436643316120','436643316939','91341234568968','695595699','1.1.1.1','2.2.6.2','3','86989','34','x','x','2012-03-12 18:35:04','2012-12-05 12:35:04',3123123,9569,6565,1),('4tt45345235','pap','q3plus.qt','q3plus.qt','q3.net','436643316120','436643316939','8956234534568968','5254595969','1.1.1.1','8.6.2.2','4','86989','34','x','x','2012-03-12 12:55:34','2012-12-05 11:20:04',3223433,3369,9565,2),('4545435545','john','q3.net','q3.net','acne.li','436643316120','436643316939','45345234568968','995696699','1.1.1.1','2.9.9.2','2','86998','34','x','x','2012-03-12 11:35:03','2012-12-05 08:50:04',8823123,169,3565,3);
|
||||||
|
|
||||||
|
# Bug #20820
|
||||||
|
# auto inc table not handled correctly when restored from cluster backup
|
||||||
|
# - before fix ndb_restore would not set auto inc value correct,
|
||||||
|
# seen by select below
|
||||||
|
create table t10 (a int auto_increment key);
|
||||||
|
insert into t10 values (1),(2),(3);
|
||||||
|
|
||||||
create table t1_c engine=ndbcluster as select * from t1;
|
create table t1_c engine=ndbcluster as select * from t1;
|
||||||
create table t2_c engine=ndbcluster as select * from t2;
|
create table t2_c engine=ndbcluster as select * from t2;
|
||||||
create table t3_c engine=ndbcluster as select * from t3;
|
create table t3_c engine=ndbcluster as select * from t3;
|
||||||
@ -141,10 +148,11 @@ create table t6_c engine=ndbcluster as select * from t6;
|
|||||||
create table t7_c engine=ndbcluster as select * from t7;
|
create table t7_c engine=ndbcluster as select * from t7;
|
||||||
create table t8_c engine=ndbcluster as select * from t8;
|
create table t8_c engine=ndbcluster as select * from t8;
|
||||||
create table t9_c engine=ndbcluster as select * from t9;
|
create table t9_c engine=ndbcluster as select * from t9;
|
||||||
|
create table t10_c engine=ndbcluster as select * from t10;
|
||||||
|
|
||||||
|
|
||||||
--exec $NDB_MGM --no-defaults -e "start backup" >> $NDB_TOOLS_OUTPUT
|
--exec $NDB_MGM --no-defaults -e "start backup" >> $NDB_TOOLS_OUTPUT
|
||||||
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c, t10_c;
|
||||||
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 1 -n 1 -m -r --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-1 >> $NDB_TOOLS_OUTPUT
|
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 1 -n 1 -m -r --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-1 >> $NDB_TOOLS_OUTPUT
|
||||||
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 1 -n 2 -r --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-1 >> $NDB_TOOLS_OUTPUT
|
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 1 -n 2 -r --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-1 >> $NDB_TOOLS_OUTPUT
|
||||||
|
|
||||||
@ -205,9 +213,12 @@ select count(*)
|
|||||||
from (select * from t9 union
|
from (select * from t9 union
|
||||||
select * from t9_c) a;
|
select * from t9_c) a;
|
||||||
|
|
||||||
|
# Bug #20820 cont'd
|
||||||
|
select * from t10_c order by a;
|
||||||
|
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9, t10;
|
||||||
drop table if exists t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
drop table if exists t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c, t10_c;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -216,4 +227,4 @@ drop table if exists t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
|||||||
|
|
||||||
--exec $NDB_TOOLS_DIR/ndb_select_all --no-defaults -d sys -D , SYSTAB_0 | grep 520093696
|
--exec $NDB_TOOLS_DIR/ndb_select_all --no-defaults -d sys -D , SYSTAB_0 | grep 520093696
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 5.0 tests (4.1 test intermixed to save test time)
|
||||||
|
92
mysql-test/t/ndb_trigger.test
Normal file
92
mysql-test/t/ndb_trigger.test
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
# Tests which involve triggers and NDB storage engine
|
||||||
|
--source include/have_ndb.inc
|
||||||
|
--source include/not_embedded.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test for bug#18437 "Wrong values inserted with a before update
|
||||||
|
# trigger on NDB table". SQL-layer didn't properly inform handler
|
||||||
|
# about fields which were read and set in triggers. In some cases
|
||||||
|
# this resulted in incorrect (garbage) values of OLD variables and
|
||||||
|
# lost changes to NEW variables.
|
||||||
|
# You can find similar tests for ON INSERT triggers in federated.test
|
||||||
|
# since this engine so far is the only engine in MySQL which cares
|
||||||
|
# about field mark-up during handler::write_row() operation.
|
||||||
|
#
|
||||||
|
|
||||||
|
--disable_warnings
|
||||||
|
drop table if exists t1, t2, t3;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
create table t1 (id int primary key, a int not null, b decimal (63,30) default 0) engine=ndb;
|
||||||
|
create table t2 (op char(1), a int not null, b decimal (63,30));
|
||||||
|
create table t3 select 1 as i;
|
||||||
|
|
||||||
|
delimiter //;
|
||||||
|
create trigger t1_bu before update on t1 for each row
|
||||||
|
begin
|
||||||
|
insert into t2 values ("u", old.a, old.b);
|
||||||
|
set new.b = old.b + 10;
|
||||||
|
end;//
|
||||||
|
create trigger t1_bd before delete on t1 for each row
|
||||||
|
begin
|
||||||
|
insert into t2 values ("d", old.a, old.b);
|
||||||
|
end;//
|
||||||
|
delimiter ;//
|
||||||
|
insert into t1 values (1, 1, 1.05), (2, 2, 2.05), (3, 3, 3.05), (4, 4, 4.05);
|
||||||
|
|
||||||
|
# Check that usual update works as it should
|
||||||
|
update t1 set a=5 where a != 3;
|
||||||
|
select * from t1 order by id;
|
||||||
|
select * from t2 order by op, a, b;
|
||||||
|
delete from t2;
|
||||||
|
# Check that everything works for multi-update
|
||||||
|
update t1, t3 set a=6 where a = 5;
|
||||||
|
select * from t1 order by id;
|
||||||
|
select * from t2 order by op, a, b;
|
||||||
|
delete from t2;
|
||||||
|
# Check for delete
|
||||||
|
delete from t1 where a != 3;
|
||||||
|
select * from t1 order by id;
|
||||||
|
select * from t2 order by op, a, b;
|
||||||
|
delete from t2;
|
||||||
|
# Check for multi-delete
|
||||||
|
insert into t1 values (1, 1, 1.05), (2, 2, 2.05), (4, 4, 4.05);
|
||||||
|
delete t1 from t1, t3 where a != 3;
|
||||||
|
select * from t1 order by id;
|
||||||
|
select * from t2 order by op, a, b;
|
||||||
|
delete from t2;
|
||||||
|
# Check for insert ... on duplicate key update
|
||||||
|
insert into t1 values (4, 4, 4.05);
|
||||||
|
insert into t1 (id, a) values (4, 1), (3, 1) on duplicate key update a= a + 1;
|
||||||
|
select * from t1 order by id;
|
||||||
|
select * from t2 order by op, a, b;
|
||||||
|
delete from t2;
|
||||||
|
# Check for insert ... select ... on duplicate key update
|
||||||
|
delete from t3;
|
||||||
|
insert into t3 values (4), (3);
|
||||||
|
insert into t1 (id, a) (select i, 1 from t3) on duplicate key update a= a + 1;
|
||||||
|
select * from t1 order by id;
|
||||||
|
select * from t2 order by op, a, b;
|
||||||
|
delete from t2;
|
||||||
|
# Check for replace
|
||||||
|
replace into t1 (id, a) values (4, 1), (3, 1);
|
||||||
|
select * from t1 order by id;
|
||||||
|
select * from t2 order by op, a, b;
|
||||||
|
delete from t1;
|
||||||
|
delete from t2;
|
||||||
|
# Check for replace ... select ...
|
||||||
|
insert into t1 values (3, 1, 1.05), (4, 1, 2.05);
|
||||||
|
replace into t1 (id, a) (select i, 2 from t3);
|
||||||
|
select * from t1 order by id;
|
||||||
|
select * from t2 order by op, a, b;
|
||||||
|
delete from t1;
|
||||||
|
delete from t2;
|
||||||
|
# Check for load data replace
|
||||||
|
insert into t1 values (3, 1, 1.05), (5, 2, 2.05);
|
||||||
|
load data infile '../std_data_ln/loaddata5.dat' replace into table t1 fields terminated by '' enclosed by '' ignore 1 lines (id, a);
|
||||||
|
select * from t1 order by id;
|
||||||
|
select * from t2 order by op, a, b;
|
||||||
|
|
||||||
|
drop tables t1, t2, t3;
|
||||||
|
|
||||||
|
--echo End of 5.0 tests
|
@ -21,4 +21,14 @@ select * from t1 where a is null;
|
|||||||
explain select * from t1 where b is null;
|
explain select * from t1 where b is null;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #14553: NULL in WHERE resets LAST_INSERT_ID
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY);
|
||||||
|
INSERT INTO t1 VALUES (NULL);
|
||||||
|
SELECT sql_no_cache a, last_insert_id() FROM t1 WHERE a IS NULL;
|
||||||
|
SELECT sql_no_cache a, last_insert_id() FROM t1 WHERE a IS NULL;
|
||||||
|
SELECT sql_no_cache a, last_insert_id() FROM t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
@ -490,6 +490,31 @@ SELECT count(*) FROM t1 WHERE CLIENT='000' AND (ARG1 != ' 1' OR ARG1 != ' 2');
|
|||||||
SELECT count(*) FROM t1 WHERE CLIENT='000' AND (ARG1 != ' 2' OR ARG1 != ' 1');
|
SELECT count(*) FROM t1 WHERE CLIENT='000' AND (ARG1 != ' 2' OR ARG1 != ' 1');
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
# BUG#16168: Wrong range optimizer results, "Use_count: Wrong count ..."
|
||||||
|
# warnings in server stderr.
|
||||||
|
create table t1 (a int);
|
||||||
|
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||||
|
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
pk1 int(11) NOT NULL,
|
||||||
|
pk2 int(11) NOT NULL,
|
||||||
|
pk3 int(11) NOT NULL,
|
||||||
|
pk4 int(11) NOT NULL,
|
||||||
|
filler char(82),
|
||||||
|
PRIMARY KEY (pk1,pk2,pk3,pk4)
|
||||||
|
) DEFAULT CHARSET=latin1;
|
||||||
|
|
||||||
|
insert into t2 select 1, A.a+10*B.a, 432, 44, 'fillerZ' from t1 A, t1 B;
|
||||||
|
INSERT INTO t2 VALUES (2621, 2635, 0, 0,'filler'), (2621, 2635, 1, 0,'filler'),
|
||||||
|
(2621, 2635, 10, 0,'filler'), (2621, 2635, 11, 0,'filler'),
|
||||||
|
(2621, 2635, 14, 0,'filler'), (2621, 2635, 1000015, 0,'filler');
|
||||||
|
|
||||||
|
SELECT * FROM t2
|
||||||
|
WHERE ((((pk4 =0) AND (pk1 =2621) AND (pk2 =2635)))
|
||||||
|
OR ((pk4 =1) AND (((pk1 IN ( 7, 2, 1 ))) OR (pk1 =522)) AND ((pk2 IN ( 0, 2635))))
|
||||||
|
) AND (pk3 >=1000000);
|
||||||
|
drop table t1, t2;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -96,9 +96,47 @@ select * from t1;
|
|||||||
|
|
||||||
sync_slave_with_master;
|
sync_slave_with_master;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
|
|
||||||
|
# Test for BUG#20524 "auto_increment_* not observed when inserting
|
||||||
|
# a too large value". When an autogenerated value was bigger than the
|
||||||
|
# maximum possible value of the field, it was truncated to that max
|
||||||
|
# possible value, without being "rounded down" to still honour
|
||||||
|
# auto_increment_* variables.
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (a tinyint not null auto_increment primary key) engine=myisam;
|
||||||
|
insert into t1 values(103);
|
||||||
|
set auto_increment_increment=11;
|
||||||
|
set auto_increment_offset=4;
|
||||||
|
insert into t1 values(null);
|
||||||
|
insert into t1 values(null);
|
||||||
|
--error 1062
|
||||||
|
insert into t1 values(null);
|
||||||
|
select a, mod(a-@@auto_increment_offset,@@auto_increment_increment) from t1 order by a;
|
||||||
|
|
||||||
|
# same but with a larger value
|
||||||
|
create table t2 (a tinyint unsigned not null auto_increment primary key) engine=myisam;
|
||||||
|
set auto_increment_increment=10;
|
||||||
|
set auto_increment_offset=1;
|
||||||
|
set insert_id=1000;
|
||||||
|
insert into t2 values(null);
|
||||||
|
select a, mod(a-@@auto_increment_offset,@@auto_increment_increment) from t2 order by a;
|
||||||
|
|
||||||
|
# An offset so big that even first value does not fit
|
||||||
|
create table t3 like t1;
|
||||||
|
set auto_increment_increment=1000;
|
||||||
|
set auto_increment_offset=700;
|
||||||
|
insert into t3 values(null);
|
||||||
|
select * from t3 order by a;
|
||||||
|
sync_slave_with_master;
|
||||||
|
select * from t1 order by a;
|
||||||
|
select * from t2 order by a;
|
||||||
|
select * from t3 order by a;
|
||||||
|
|
||||||
connection master;
|
connection master;
|
||||||
|
|
||||||
drop table t1;
|
drop table t1,t2,t3;
|
||||||
|
|
||||||
# End cleanup
|
# End cleanup
|
||||||
sync_slave_with_master;
|
sync_slave_with_master;
|
||||||
|
@ -77,6 +77,24 @@ sync_slave_with_master;
|
|||||||
connection master;
|
connection master;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
sync_slave_with_master;
|
sync_slave_with_master;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#14553: NULL in WHERE resets LAST_INSERT_ID
|
||||||
|
#
|
||||||
|
connection master;
|
||||||
|
create table t1(a int auto_increment, key(a));
|
||||||
|
create table t2(a int);
|
||||||
|
insert into t1 (a) values (null);
|
||||||
|
insert into t2 (a) select a from t1 where a is null;
|
||||||
|
insert into t2 (a) select a from t1 where a is null;
|
||||||
|
select * from t2;
|
||||||
|
sync_slave_with_master;
|
||||||
|
connection slave;
|
||||||
|
select * from t2;
|
||||||
|
connection master;
|
||||||
|
drop table t1;
|
||||||
|
drop table t2;
|
||||||
|
sync_slave_with_master;
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
|
||||||
|
|
||||||
@ -147,6 +165,69 @@ drop function bug15728;
|
|||||||
drop function bug15728_insert;
|
drop function bug15728_insert;
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
|
||||||
|
# test of BUG#20188 REPLACE or ON DUPLICATE KEY UPDATE in
|
||||||
|
# auto_increment breaks binlog
|
||||||
|
|
||||||
|
create table t1 (n int primary key auto_increment not null,
|
||||||
|
b int, unique(b));
|
||||||
|
|
||||||
|
# First, test that we do not call restore_auto_increment() too early
|
||||||
|
# in write_record():
|
||||||
|
set sql_log_bin=0;
|
||||||
|
insert into t1 values(null,100);
|
||||||
|
replace into t1 values(null,50),(null,100),(null,150);
|
||||||
|
select * from t1 order by n;
|
||||||
|
truncate table t1;
|
||||||
|
set sql_log_bin=1;
|
||||||
|
|
||||||
|
insert into t1 values(null,100);
|
||||||
|
select * from t1 order by n;
|
||||||
|
sync_slave_with_master;
|
||||||
|
# make slave's table autoinc counter bigger
|
||||||
|
insert into t1 values(null,200),(null,300);
|
||||||
|
delete from t1 where b <> 100;
|
||||||
|
# check that slave's table content is identical to master
|
||||||
|
select * from t1 order by n;
|
||||||
|
# only the auto_inc counter differs.
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
replace into t1 values(null,100),(null,350);
|
||||||
|
select * from t1 order by n;
|
||||||
|
sync_slave_with_master;
|
||||||
|
select * from t1 order by n;
|
||||||
|
|
||||||
|
# Same test as for REPLACE, but for ON DUPLICATE KEY UPDATE
|
||||||
|
|
||||||
|
# We first check that if we update a row using a value larger than the
|
||||||
|
# table's counter, the counter for next row is bigger than the
|
||||||
|
# after-value of the updated row.
|
||||||
|
connection master;
|
||||||
|
insert into t1 values (NULL,400),(3,500),(NULL,600) on duplicate key UPDATE n=1000;
|
||||||
|
select * from t1 order by n;
|
||||||
|
sync_slave_with_master;
|
||||||
|
select * from t1 order by n;
|
||||||
|
|
||||||
|
# and now test for the bug:
|
||||||
|
connection master;
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (n int primary key auto_increment not null,
|
||||||
|
b int, unique(b));
|
||||||
|
insert into t1 values(null,100);
|
||||||
|
select * from t1 order by n;
|
||||||
|
sync_slave_with_master;
|
||||||
|
insert into t1 values(null,200),(null,300);
|
||||||
|
delete from t1 where b <> 100;
|
||||||
|
select * from t1 order by n;
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
insert into t1 values(null,100),(null,350) on duplicate key update n=2;
|
||||||
|
select * from t1 order by n;
|
||||||
|
sync_slave_with_master;
|
||||||
|
select * from t1 order by n;
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
# End of 5.0 tests
|
# End of 5.0 tests
|
||||||
|
|
||||||
sync_slave_with_master;
|
sync_slave_with_master;
|
||||||
|
@ -2901,3 +2901,8 @@ from t1 left outer join t2 on t1.a = t2.c and t2.b <> 1
|
|||||||
where t1.b <> 1 order by t1.a;
|
where t1.b <> 1 order by t1.a;
|
||||||
|
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #20569: Garbage in DECIMAL results from some mathematical functions
|
||||||
|
#
|
||||||
|
SELECT 0.9888889889 * 1.011111411911;
|
||||||
|
@ -1271,3 +1271,39 @@ SELECT f1();
|
|||||||
#
|
#
|
||||||
|
|
||||||
DROP FUNCTION f1;
|
DROP FUNCTION f1;
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#17226: Variable set in cursor on first iteration is assigned
|
||||||
|
# second iterations value
|
||||||
|
#
|
||||||
|
# The problem was in incorrect handling of local variables of type
|
||||||
|
# TEXT (BLOB).
|
||||||
|
#
|
||||||
|
--disable_warnings
|
||||||
|
DROP PROCEDURE IF EXISTS p1;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
delimiter |;
|
||||||
|
CREATE PROCEDURE p1()
|
||||||
|
BEGIN
|
||||||
|
DECLARE v_char VARCHAR(255);
|
||||||
|
DECLARE v_text TEXT DEFAULT '';
|
||||||
|
|
||||||
|
SET v_char = 'abc';
|
||||||
|
|
||||||
|
SET v_text = v_char;
|
||||||
|
|
||||||
|
SET v_char = 'def';
|
||||||
|
|
||||||
|
SET v_text = concat(v_text, '|', v_char);
|
||||||
|
|
||||||
|
SELECT v_text;
|
||||||
|
END|
|
||||||
|
delimiter ;|
|
||||||
|
|
||||||
|
CALL p1();
|
||||||
|
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
|
||||||
|
# End of 5.0 tests.
|
||||||
|
@ -265,3 +265,23 @@ drop view v1|
|
|||||||
drop table t3|
|
drop table t3|
|
||||||
|
|
||||||
delimiter ;|
|
delimiter ;|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#15298 SHOW GRANTS FOR CURRENT_USER: Incorrect output in DEFINER context
|
||||||
|
#
|
||||||
|
--disable_warnings
|
||||||
|
drop procedure if exists bug15298_1;
|
||||||
|
drop procedure if exists bug15298_2;
|
||||||
|
--enable_warnings
|
||||||
|
grant all privileges on test.* to 'mysqltest_1'@'localhost';
|
||||||
|
create procedure 15298_1 () sql security definer show grants for current_user;
|
||||||
|
create procedure 15298_2 () sql security definer show grants;
|
||||||
|
|
||||||
|
connect (con1,localhost,mysqltest_1,,test);
|
||||||
|
call 15298_1();
|
||||||
|
call 15298_2();
|
||||||
|
|
||||||
|
connection default;
|
||||||
|
drop user mysqltest_1@localhost;
|
||||||
|
drop procedure 15298_1;
|
||||||
|
drop procedure 15298_2;
|
||||||
|
@ -1155,3 +1155,42 @@ create table t2 select date from t1;
|
|||||||
show create table t2;
|
show create table t2;
|
||||||
drop table t2,t1;
|
drop table t2,t1;
|
||||||
set @@sql_mode= @org_mode;
|
set @@sql_mode= @org_mode;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #13934 Silent truncation of table comments
|
||||||
|
#
|
||||||
|
set @@sql_mode='traditional';
|
||||||
|
--error 1105
|
||||||
|
create table t1 (i int)
|
||||||
|
comment '123456789*123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*123456789*';
|
||||||
|
--error 1105
|
||||||
|
create table t1 (
|
||||||
|
i int comment
|
||||||
|
'123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*');
|
||||||
|
set @@sql_mode= @org_mode;
|
||||||
|
create table t1
|
||||||
|
(i int comment
|
||||||
|
'123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*
|
||||||
|
123456789*123456789*123456789*123456789*');
|
||||||
|
|
||||||
|
select column_name, column_comment from information_schema.columns where
|
||||||
|
table_schema = 'test' and table_name = 't1';
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
set names utf8;
|
||||||
|
create table t1 (i int)
|
||||||
|
comment '123456789*123456789*123456789*123456789*123456789*123456789*';
|
||||||
|
show create table t1;
|
||||||
|
drop table t1;
|
||||||
|
@ -1821,6 +1821,36 @@ SELECT * FROM t1
|
|||||||
|
|
||||||
DROP TABLE t1,t2,t3;
|
DROP TABLE t1,t2,t3;
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG #10308: purge log with subselect
|
||||||
|
#
|
||||||
|
|
||||||
|
purge master logs before (select adddate(current_timestamp(), interval -4 day));
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#18503: Queries with a quantified subquery returning empty set may
|
||||||
|
# return a wrong result.
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (f1 INT);
|
||||||
|
CREATE TABLE t2 (f2 INT);
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
SELECT * FROM t1 WHERE f1 > ALL (SELECT f2 FROM t2);
|
||||||
|
SELECT * FROM t1 WHERE f1 > ALL (SELECT f2 FROM t2 WHERE 1=0);
|
||||||
|
INSERT INTO t2 VALUES (1);
|
||||||
|
INSERT INTO t2 VALUES (2);
|
||||||
|
SELECT * FROM t1 WHERE f1 > ALL (SELECT f2 FROM t2 WHERE f2=0);
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#16302: Quantified subquery without any tables gives wrong results
|
||||||
|
#
|
||||||
|
select 1 from dual where 1 < any (select 2);
|
||||||
|
select 1 from dual where 1 < all (select 2);
|
||||||
|
select 1 from dual where 2 > any (select 1);
|
||||||
|
select 1 from dual where 2 > all (select 1);
|
||||||
|
select 1 from dual where 1 < any (select 2 from dual);
|
||||||
|
select 1 from dual where 1 < all (select 2 from dual where 1!=1);
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -2595,4 +2595,51 @@ CREATE TABLE t2 SELECT * FROM v1;
|
|||||||
SELECT * FROM t2;
|
SELECT * FROM t2;
|
||||||
|
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP TABLE IF EXISTS t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#16110: insert permitted into view col w/o default value
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT NOT NULL, b INT NULL DEFAULT NULL);
|
||||||
|
CREATE VIEW v1 AS SELECT a, b FROM t1;
|
||||||
|
|
||||||
|
INSERT INTO v1 (b) VALUES (2);
|
||||||
|
|
||||||
|
SET SQL_MODE = STRICT_ALL_TABLES;
|
||||||
|
--error 1423
|
||||||
|
INSERT INTO v1 (b) VALUES (4);
|
||||||
|
SET SQL_MODE = '';
|
||||||
|
|
||||||
|
SELECT * FROM t1;
|
||||||
|
|
||||||
|
DROP VIEW v1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #18243: expression over a view column that with the REVERSE function
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (firstname text, surname text);
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
("Bart","Simpson"),("Milhouse","van Houten"),("Montgomery","Burns");
|
||||||
|
|
||||||
|
CREATE VIEW v1 AS SELECT CONCAT(firstname," ",surname) AS name FROM t1;
|
||||||
|
SELECT CONCAT(LEFT(name,LENGTH(name)-INSTR(REVERSE(name)," ")),
|
||||||
|
LEFT(name,LENGTH(name)-INSTR(REVERSE(name)," "))) AS f1
|
||||||
|
FROM v1;
|
||||||
|
|
||||||
|
DROP VIEW v1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #19714: wrong type of a view column specified by an expressions over ints
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (i int, j int);
|
||||||
|
CREATE VIEW v1 AS SELECT COALESCE(i,j) FROM t1;
|
||||||
|
DESCRIBE v1;
|
||||||
|
CREATE TABLE t2 SELECT COALESCE(i,j) FROM t1;
|
||||||
|
DESCRIBE t2;
|
||||||
|
|
||||||
|
DROP VIEW v1;
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
@ -866,3 +866,65 @@ DROP VIEW test2.t3;
|
|||||||
DROP TABLE test2.t1, test1.t0;
|
DROP TABLE test2.t1, test1.t0;
|
||||||
DROP DATABASE test2;
|
DROP DATABASE test2;
|
||||||
DROP DATABASE test1;
|
DROP DATABASE test1;
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG#20570: CURRENT_USER() in a VIEW with SQL SECURITY DEFINER
|
||||||
|
# returns invoker name
|
||||||
|
#
|
||||||
|
--disable_warnings
|
||||||
|
DROP VIEW IF EXISTS v1;
|
||||||
|
DROP VIEW IF EXISTS v2;
|
||||||
|
DROP VIEW IF EXISTS v3;
|
||||||
|
DROP FUNCTION IF EXISTS f1;
|
||||||
|
DROP FUNCTION IF EXISTS f2;
|
||||||
|
DROP PROCEDURE IF EXISTS p1;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
CREATE SQL SECURITY DEFINER VIEW v1 AS SELECT CURRENT_USER() AS cu;
|
||||||
|
|
||||||
|
CREATE FUNCTION f1() RETURNS VARCHAR(77) SQL SECURITY INVOKER
|
||||||
|
RETURN CURRENT_USER();
|
||||||
|
CREATE SQL SECURITY DEFINER VIEW v2 AS SELECT f1() AS cu;
|
||||||
|
|
||||||
|
CREATE PROCEDURE p1(OUT cu VARCHAR(77)) SQL SECURITY INVOKER
|
||||||
|
SET cu= CURRENT_USER();
|
||||||
|
delimiter |;
|
||||||
|
CREATE FUNCTION f2() RETURNS VARCHAR(77) SQL SECURITY INVOKER
|
||||||
|
BEGIN
|
||||||
|
DECLARE cu VARCHAR(77);
|
||||||
|
CALL p1(cu);
|
||||||
|
RETURN cu;
|
||||||
|
END|
|
||||||
|
delimiter ;|
|
||||||
|
CREATE SQL SECURITY DEFINER VIEW v3 AS SELECT f2() AS cu;
|
||||||
|
|
||||||
|
CREATE USER mysqltest_u1@localhost;
|
||||||
|
GRANT ALL ON test.* TO mysqltest_u1@localhost;
|
||||||
|
|
||||||
|
connect (conn1, localhost, mysqltest_u1,,);
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo The following tests should all return 1.
|
||||||
|
--echo
|
||||||
|
SELECT CURRENT_USER() = 'mysqltest_u1@localhost';
|
||||||
|
SELECT f1() = 'mysqltest_u1@localhost';
|
||||||
|
CALL p1(@cu);
|
||||||
|
SELECT @cu = 'mysqltest_u1@localhost';
|
||||||
|
SELECT f2() = 'mysqltest_u1@localhost';
|
||||||
|
SELECT cu = 'root@localhost' FROM v1;
|
||||||
|
SELECT cu = 'root@localhost' FROM v2;
|
||||||
|
SELECT cu = 'root@localhost' FROM v3;
|
||||||
|
|
||||||
|
disconnect conn1;
|
||||||
|
connection default;
|
||||||
|
|
||||||
|
DROP VIEW v3;
|
||||||
|
DROP FUNCTION f2;
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
DROP FUNCTION f1;
|
||||||
|
DROP VIEW v2;
|
||||||
|
DROP VIEW v1;
|
||||||
|
DROP USER mysqltest_u1@localhost;
|
||||||
|
|
||||||
|
# End of 5.0 tests.
|
||||||
|
@ -9,16 +9,20 @@
|
|||||||
# Connect with another connection and reset counters
|
# Connect with another connection and reset counters
|
||||||
--disable_query_log
|
--disable_query_log
|
||||||
connect (wait_con,localhost,root,,test,,);
|
connect (wait_con,localhost,root,,test,,);
|
||||||
flush status; # Reset counters
|
|
||||||
connection wait_con;
|
connection wait_con;
|
||||||
set session wait_timeout=100;
|
set session wait_timeout=100;
|
||||||
let $retries=300;
|
let $retries=300;
|
||||||
let $aborted_clients = `SHOW STATUS LIKE 'aborted_clients'`;
|
|
||||||
set @aborted_clients= 0;
|
set @aborted_clients= 0;
|
||||||
--enable_query_log
|
--enable_query_log
|
||||||
|
|
||||||
# Disable reconnect and do the query
|
# Disable reconnect and do the query
|
||||||
connection default;
|
connection default;
|
||||||
|
# If slow host (Valgrind...), we may have already timed out here.
|
||||||
|
# So force a reconnect if necessary, using a dummy query. And issue a
|
||||||
|
# 'flush status' to reset the 'aborted_clients' counter.
|
||||||
|
--enable_reconnect
|
||||||
|
select 0;
|
||||||
|
flush status;
|
||||||
--disable_reconnect
|
--disable_reconnect
|
||||||
select 1;
|
select 1;
|
||||||
|
|
||||||
@ -46,6 +50,9 @@ connection default;
|
|||||||
select 2;
|
select 2;
|
||||||
--enable_reconnect
|
--enable_reconnect
|
||||||
select 3;
|
select 3;
|
||||||
|
# Disconnect so that we will not be confused by a future abort from this
|
||||||
|
# connection.
|
||||||
|
disconnect default
|
||||||
|
|
||||||
#
|
#
|
||||||
# Do the same test as above on a TCP connection
|
# Do the same test as above on a TCP connection
|
||||||
@ -56,7 +63,6 @@ select 3;
|
|||||||
connection wait_con;
|
connection wait_con;
|
||||||
flush status; # Reset counters
|
flush status; # Reset counters
|
||||||
let $retries=300;
|
let $retries=300;
|
||||||
let $aborted_clients = `SHOW STATUS LIKE 'aborted_clients'`;
|
|
||||||
set @aborted_clients= 0;
|
set @aborted_clients= 0;
|
||||||
--enable_query_log
|
--enable_query_log
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
||||||
MA 02111-1307, USA */
|
MA 02111-1307, USA */
|
||||||
|
|
||||||
|
#include <my_global.h>
|
||||||
#include "my_handler.h"
|
#include "my_handler.h"
|
||||||
|
|
||||||
int mi_compare_text(CHARSET_INFO *charset_info, uchar *a, uint a_length,
|
int mi_compare_text(CHARSET_INFO *charset_info, uchar *a, uint a_length,
|
||||||
|
@ -15,7 +15,6 @@ ndbapi/NdbApi.hpp \
|
|||||||
ndbapi/NdbTransaction.hpp \
|
ndbapi/NdbTransaction.hpp \
|
||||||
ndbapi/NdbDictionary.hpp \
|
ndbapi/NdbDictionary.hpp \
|
||||||
ndbapi/NdbError.hpp \
|
ndbapi/NdbError.hpp \
|
||||||
ndbapi/NdbEventOperation.hpp \
|
|
||||||
ndbapi/NdbIndexOperation.hpp \
|
ndbapi/NdbIndexOperation.hpp \
|
||||||
ndbapi/NdbOperation.hpp \
|
ndbapi/NdbOperation.hpp \
|
||||||
ndbapi/ndb_cluster_connection.hpp \
|
ndbapi/ndb_cluster_connection.hpp \
|
||||||
|
@ -587,6 +587,7 @@ extern const GlobalSignalNumber NO_OF_SIGNAL_NAMES;
|
|||||||
#define GSN_BLOCK_COMMIT_ORD 485
|
#define GSN_BLOCK_COMMIT_ORD 485
|
||||||
#define GSN_UNBLOCK_COMMIT_ORD 486
|
#define GSN_UNBLOCK_COMMIT_ORD 486
|
||||||
|
|
||||||
|
#define GSN_NODE_START_REP 502
|
||||||
#define GSN_NODE_STATE_REP 487
|
#define GSN_NODE_STATE_REP 487
|
||||||
#define GSN_CHANGE_NODE_STATE_REQ 488
|
#define GSN_CHANGE_NODE_STATE_REQ 488
|
||||||
#define GSN_CHANGE_NODE_STATE_CONF 489
|
#define GSN_CHANGE_NODE_STATE_CONF 489
|
||||||
@ -731,9 +732,11 @@ extern const GlobalSignalNumber NO_OF_SIGNAL_NAMES;
|
|||||||
#define GSN_SUB_CREATE_REQ 576
|
#define GSN_SUB_CREATE_REQ 576
|
||||||
#define GSN_SUB_CREATE_REF 577
|
#define GSN_SUB_CREATE_REF 577
|
||||||
#define GSN_SUB_CREATE_CONF 578
|
#define GSN_SUB_CREATE_CONF 578
|
||||||
|
/*
|
||||||
#define GSN_SUB_START_REQ 579
|
#define GSN_SUB_START_REQ 579
|
||||||
#define GSN_SUB_START_REF 580
|
#define GSN_SUB_START_REF 580
|
||||||
#define GSN_SUB_START_CONF 581
|
#define GSN_SUB_START_CONF 581
|
||||||
|
*/
|
||||||
#define GSN_SUB_SYNC_REQ 582
|
#define GSN_SUB_SYNC_REQ 582
|
||||||
#define GSN_SUB_SYNC_REF 583
|
#define GSN_SUB_SYNC_REF 583
|
||||||
#define GSN_SUB_SYNC_CONF 584
|
#define GSN_SUB_SYNC_CONF 584
|
||||||
@ -899,10 +902,11 @@ extern const GlobalSignalNumber NO_OF_SIGNAL_NAMES;
|
|||||||
/**
|
/**
|
||||||
* SUMA restart protocol
|
* SUMA restart protocol
|
||||||
*/
|
*/
|
||||||
|
/*
|
||||||
#define GSN_SUMA_START_ME 691
|
#define GSN_SUMA_START_ME 691
|
||||||
#define GSN_SUMA_HANDOVER_REQ 692
|
#define GSN_SUMA_HANDOVER_REQ 692
|
||||||
#define GSN_SUMA_HANDOVER_CONF 693
|
#define GSN_SUMA_HANDOVER_CONF 693
|
||||||
|
*/
|
||||||
/* not used 694 */
|
/* not used 694 */
|
||||||
/* not used 695 */
|
/* not used 695 */
|
||||||
/* not used 696 */
|
/* not used 696 */
|
||||||
@ -919,6 +923,7 @@ extern const GlobalSignalNumber NO_OF_SIGNAL_NAMES;
|
|||||||
/*
|
/*
|
||||||
* EVENT Signals
|
* EVENT Signals
|
||||||
*/
|
*/
|
||||||
|
/*
|
||||||
#define GSN_SUB_GCP_COMPLETE_ACC 699
|
#define GSN_SUB_GCP_COMPLETE_ACC 699
|
||||||
|
|
||||||
#define GSN_CREATE_EVNT_REQ 700
|
#define GSN_CREATE_EVNT_REQ 700
|
||||||
@ -928,7 +933,7 @@ extern const GlobalSignalNumber NO_OF_SIGNAL_NAMES;
|
|||||||
#define GSN_DROP_EVNT_REQ 703
|
#define GSN_DROP_EVNT_REQ 703
|
||||||
#define GSN_DROP_EVNT_CONF 704
|
#define GSN_DROP_EVNT_CONF 704
|
||||||
#define GSN_DROP_EVNT_REF 705
|
#define GSN_DROP_EVNT_REF 705
|
||||||
|
*/
|
||||||
#define GSN_TUX_BOUND_INFO 710
|
#define GSN_TUX_BOUND_INFO 710
|
||||||
|
|
||||||
#define GSN_ACC_LOCKREQ 711
|
#define GSN_ACC_LOCKREQ 711
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user