Merge from 5.0-pe-stage into main.
This commit is contained in:
commit
0f95bd3105
@ -241,7 +241,7 @@ typedef struct {
|
||||
|
||||
static COMMANDS commands[] = {
|
||||
{ "?", '?', com_help, 1, "Synonym for `help'." },
|
||||
{ "clear", 'c', com_clear, 0, "Clear command."},
|
||||
{ "clear", 'c', com_clear, 0, "Clear the current input statement."},
|
||||
{ "connect",'r', com_connect,1,
|
||||
"Reconnect to the server. Optional arguments are db and host." },
|
||||
{ "delimiter", 'd', com_delimiter, 1,
|
||||
|
@ -4087,19 +4087,26 @@ int select_connection_name(const char *name)
|
||||
|
||||
int select_connection(struct st_command *command)
|
||||
{
|
||||
char *name;
|
||||
int ret;
|
||||
char *p= command->first_argument;
|
||||
static DYNAMIC_STRING ds_connection;
|
||||
const struct command_arg connection_args[] = {
|
||||
{ "connection_name", ARG_STRING, TRUE, &ds_connection, "Name of the connection that we switch to." }
|
||||
};
|
||||
DBUG_ENTER("select_connection");
|
||||
|
||||
if (!*p)
|
||||
die("Missing connection name in connect");
|
||||
name= p;
|
||||
while (*p && !my_isspace(charset_info,*p))
|
||||
p++;
|
||||
if (*p)
|
||||
*p++= 0;
|
||||
command->last_argument= p;
|
||||
return select_connection_name(name);
|
||||
|
||||
check_command_args(command, command->first_argument, connection_args,
|
||||
sizeof(connection_args)/sizeof(struct command_arg),
|
||||
',');
|
||||
|
||||
DBUG_PRINT("info", ("changing connection: %s", ds_connection.str));
|
||||
|
||||
ret= select_connection_name(ds_connection.str);
|
||||
dynstr_free(&ds_connection);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
@ -61,7 +61,7 @@ static char sccsid[] = "@(#)term.c 8.2 (Berkeley) 4/30/95";
|
||||
#ifdef HAVE_NCURSES_H
|
||||
#include <ncurses.h>
|
||||
#endif
|
||||
/* Solaris's term.h does horrid things. */
|
||||
/* Don't use Solaris's term.h. */
|
||||
#if (defined(HAVE_TERM_H) && !defined(__SunOS))
|
||||
#include <term.h>
|
||||
#endif
|
||||
|
@ -358,16 +358,19 @@ esac
|
||||
AC_DEFUN([MYSQL_CHECK_LIB_TERMCAP],
|
||||
[
|
||||
AC_CACHE_VAL(mysql_cv_termcap_lib,
|
||||
[AC_CHECK_LIB(ncurses, tgetent, mysql_cv_termcap_lib=libncurses,
|
||||
[AC_CHECK_LIB(curses, tgetent, mysql_cv_termcap_lib=libcurses,
|
||||
[AC_CHECK_LIB(termcap, tgetent, mysql_cv_termcap_lib=libtermcap,
|
||||
[AC_CHECK_LIB(tinfo, tgetent, mysql_cv_termcap_lib=libtinfo,
|
||||
mysql_cv_termcap_lib=NOT_FOUND)])])])])
|
||||
[AC_CHECK_LIB(ncursesw, tgetent, mysql_cv_termcap_lib=libncursesw,
|
||||
[AC_CHECK_LIB(ncurses, tgetent, mysql_cv_termcap_lib=libncurses,
|
||||
[AC_CHECK_LIB(curses, tgetent, mysql_cv_termcap_lib=libcurses,
|
||||
[AC_CHECK_LIB(termcap, tgetent, mysql_cv_termcap_lib=libtermcap,
|
||||
[AC_CHECK_LIB(tinfo, tgetent, mysql_cv_termcap_lib=libtinfo,
|
||||
mysql_cv_termcap_lib=NOT_FOUND)])])])])])
|
||||
AC_MSG_CHECKING(for termcap functions library)
|
||||
if test "$mysql_cv_termcap_lib" = "NOT_FOUND"; then
|
||||
AC_MSG_ERROR([No curses/termcap library found])
|
||||
elif test "$mysql_cv_termcap_lib" = "libtermcap"; then
|
||||
TERMCAP_LIB=-ltermcap
|
||||
elif test "$mysql_cv_termcap_lib" = "libncursesw"; then
|
||||
TERMCAP_LIB=-lncursesw
|
||||
elif test "$mysql_cv_termcap_lib" = "libncurses"; then
|
||||
TERMCAP_LIB=-lncurses
|
||||
elif test "$mysql_cv_termcap_lib" = "libtinfo"; then
|
||||
|
21
configure.in
21
configure.in
@ -2094,6 +2094,27 @@ esac
|
||||
AC_MSG_CHECKING(for isinf in <math.h>)
|
||||
AC_TRY_LINK([#include <math.h>], [float f = 0.0; int r = isinf(f); return r],
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_MSG_CHECKING(whether isinf() is safe to use in C code)
|
||||
AC_TRY_RUN([
|
||||
#include <math.h>
|
||||
int main()
|
||||
{
|
||||
double a= 10.0;
|
||||
double b= 1e308;
|
||||
|
||||
return !isinf(a * b);
|
||||
}
|
||||
],
|
||||
[AC_MSG_RESULT(yes)],
|
||||
[AC_MSG_RESULT(no)
|
||||
AC_DEFINE([HAVE_BROKEN_ISINF], [1],
|
||||
[Define to 1 if isinf() uses 80-bit register for intermediate values])
|
||||
],
|
||||
[
|
||||
# Let's be optimistic when cross-compiling, since the only compiler known
|
||||
# to be affected by this isinf() bug is GCC 4.3 on 32-bit x86.
|
||||
AC_MSG_RESULT([[cross-compiling, assuming 'yes']])
|
||||
])
|
||||
AC_MSG_CHECKING(whether isinf() can be used in C++ code)
|
||||
AC_LANG_SAVE
|
||||
AC_LANG_CPLUSPLUS
|
||||
|
@ -797,9 +797,19 @@ typedef SOCKET_SIZE_TYPE size_socket;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_ISINF
|
||||
/* isinf() can be used in both C and C++ code */
|
||||
#define my_isinf(X) isinf(X)
|
||||
/* Check if C compiler is affected by GCC bug #39228 */
|
||||
#if !defined(__cplusplus) && defined(HAVE_BROKEN_ISINF)
|
||||
/* Force store/reload of the argument to/from a 64-bit double */
|
||||
static inline double my_isinf(double x)
|
||||
{
|
||||
volatile double t= x;
|
||||
return isinf(t);
|
||||
}
|
||||
#else
|
||||
/* System-provided isinf() is available and safe to use */
|
||||
#define my_isinf(X) isinf(X)
|
||||
#endif
|
||||
#else /* !HAVE_ISINF */
|
||||
#define my_isinf(X) (!finite(X) && !isnan(X))
|
||||
#endif
|
||||
|
||||
|
@ -1101,12 +1101,20 @@ btr_search_drop_page_hash_when_freed(
|
||||
page = buf_page_get_gen(space, page_no, RW_S_LATCH, NULL,
|
||||
BUF_GET_IF_IN_POOL, __FILE__, __LINE__,
|
||||
&mtr);
|
||||
/* Because the buffer pool mutex was released by
|
||||
buf_page_peek_if_search_hashed(), it is possible that the
|
||||
block was removed from the buffer pool by another thread
|
||||
before buf_page_get_gen() got a chance to acquire the buffer
|
||||
pool mutex again. Thus, we must check for a NULL return. */
|
||||
|
||||
if (UNIV_LIKELY(page != NULL)) {
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
buf_page_dbg_add_level(page, SYNC_TREE_NODE_FROM_HASH);
|
||||
buf_page_dbg_add_level(page, SYNC_TREE_NODE_FROM_HASH);
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
btr_search_drop_page_hash_index(page);
|
||||
btr_search_drop_page_hash_index(page);
|
||||
}
|
||||
|
||||
mtr_commit(&mtr);
|
||||
}
|
||||
|
@ -253,6 +253,12 @@ extern ulint srv_read_ahead_seq;
|
||||
/* variable to count the number of random read-aheads were done */
|
||||
extern ulint srv_read_ahead_rnd;
|
||||
|
||||
/* An option to enable the fix for "Bug#43660 SHOW INDEXES/ANALYZE does
|
||||
NOT update cardinality for indexes of InnoDB table". By default we are
|
||||
running with the fix disabled because MySQL 5.1 is frozen for such
|
||||
behavioral changes. */
|
||||
extern char srv_use_legacy_cardinality_algorithm;
|
||||
|
||||
/* In this structure we store status variables to be passed to MySQL */
|
||||
typedef struct export_var_struct export_struc;
|
||||
|
||||
|
@ -15,6 +15,8 @@ Created 10/4/1994 Heikki Tuuri
|
||||
#include "mtr0log.h"
|
||||
#include "log0recv.h"
|
||||
#include "rem0cmp.h"
|
||||
#include "srv0srv.h"
|
||||
#include "ut0ut.h"
|
||||
|
||||
static ulint page_rnd = 976722341;
|
||||
|
||||
@ -23,6 +25,44 @@ static ulint page_rnd = 976722341;
|
||||
ulint page_cur_short_succ = 0;
|
||||
# endif /* UNIV_SEARCH_PERF_STAT */
|
||||
|
||||
/***********************************************************************
|
||||
This is a linear congruential generator PRNG. Returns a pseudo random
|
||||
number between 0 and 2^64-1 inclusive. The formula and the constants
|
||||
being used are:
|
||||
X[n+1] = (a * X[n] + c) mod m
|
||||
where:
|
||||
X[0] = ut_usectime()
|
||||
a = 1103515245 (3^5 * 5 * 7 * 129749)
|
||||
c = 12345 (3 * 5 * 823)
|
||||
m = 18446744073709551616 (2^64)
|
||||
*/
|
||||
#define LCG_a 1103515245
|
||||
#define LCG_c 12345
|
||||
static
|
||||
unsigned long long
|
||||
page_cur_lcg_prng()
|
||||
/*===============*/
|
||||
/* out: number between 0 and 2^64-1 */
|
||||
{
|
||||
static unsigned long long lcg_current = 0;
|
||||
static ibool initialized = FALSE;
|
||||
ulint time_sec;
|
||||
ulint time_ms;
|
||||
|
||||
if (!initialized) {
|
||||
ut_usectime(&time_sec, &time_ms);
|
||||
lcg_current = (unsigned long long) (time_sec * 1000000
|
||||
+ time_ms);
|
||||
initialized = TRUE;
|
||||
}
|
||||
|
||||
/* no need to "% 2^64" explicitly because lcg_current is
|
||||
64 bit and this will be done anyway */
|
||||
lcg_current = LCG_a * lcg_current + LCG_c;
|
||||
|
||||
return(lcg_current);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
Tries a search shortcut based on the last insert. */
|
||||
UNIV_INLINE
|
||||
@ -489,9 +529,13 @@ page_cur_open_on_rnd_user_rec(
|
||||
return;
|
||||
}
|
||||
|
||||
page_rnd += 87584577;
|
||||
if (srv_use_legacy_cardinality_algorithm) {
|
||||
page_rnd += 87584577;
|
||||
|
||||
rnd = page_rnd % page_get_n_recs(page);
|
||||
rnd = page_rnd % page_get_n_recs(page);
|
||||
} else {
|
||||
rnd = (ulint) page_cur_lcg_prng() % page_get_n_recs(page);
|
||||
}
|
||||
|
||||
rec = page_get_infimum_rec(page);
|
||||
|
||||
@ -1419,3 +1463,30 @@ page_cur_delete_rec(
|
||||
page_dir_balance_slot(page, cur_slot_no);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef UNIV_COMPILE_TEST_FUNCS
|
||||
|
||||
/***********************************************************************
|
||||
Print the first n numbers, generated by page_cur_lcg_prng() to make sure
|
||||
(visually) that it works properly. */
|
||||
void
|
||||
test_page_cur_lcg_prng(
|
||||
/*===================*/
|
||||
int n) /* in: print first n numbers */
|
||||
{
|
||||
int i;
|
||||
unsigned long long rnd;
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
rnd = page_cur_lcg_prng();
|
||||
printf("%llu\t%%2=%llu %%3=%llu %%5=%llu %%7=%llu %%11=%llu\n",
|
||||
rnd,
|
||||
rnd % 2,
|
||||
rnd % 3,
|
||||
rnd % 5,
|
||||
rnd % 7,
|
||||
rnd % 11);
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* UNIV_COMPILE_TEST_FUNCS */
|
||||
|
@ -239,6 +239,12 @@ ulint srv_read_ahead_seq = 0;
|
||||
/* variable to count the number of random read-aheads */
|
||||
ulint srv_read_ahead_rnd = 0;
|
||||
|
||||
/* An option to enable the fix for "Bug#43660 SHOW INDEXES/ANALYZE does
|
||||
NOT update cardinality for indexes of InnoDB table". By default we are
|
||||
running with the fix disabled because MySQL 5.1 is frozen for such
|
||||
behavioral changes. */
|
||||
char srv_use_legacy_cardinality_algorithm = TRUE;
|
||||
|
||||
/* structure to pass status variables to MySQL */
|
||||
export_struc export_vars;
|
||||
|
||||
|
@ -41,6 +41,8 @@ TARGET_LINK_LIBRARIES(myisamlog myisam mysys debug dbug strings zlib wsock32)
|
||||
ADD_EXECUTABLE(myisampack myisampack.c)
|
||||
TARGET_LINK_LIBRARIES(myisampack myisam mysys debug dbug strings zlib wsock32)
|
||||
|
||||
SET_TARGET_PROPERTIES(myisamchk myisampack PROPERTIES LINK_FLAGS "setargv.obj")
|
||||
|
||||
IF(EMBED_MANIFESTS)
|
||||
MYSQL_EMBED_MANIFEST("myisam_ftdump" "asInvoker")
|
||||
MYSQL_EMBED_MANIFEST("myisamchk" "asInvoker")
|
||||
|
@ -35,8 +35,6 @@ int mi_close(register MI_INFO *info)
|
||||
if (info->lock_type == F_EXTRA_LCK)
|
||||
info->lock_type=F_UNLCK; /* HA_EXTRA_NO_USER_CHANGE */
|
||||
|
||||
if (share->reopen == 1 && share->kfile >= 0)
|
||||
_mi_decrement_open_count(info);
|
||||
|
||||
if (info->lock_type != F_UNLCK)
|
||||
{
|
||||
@ -78,6 +76,8 @@ int mi_close(register MI_INFO *info)
|
||||
*/
|
||||
if (share->mode != O_RDONLY && mi_is_crashed(info))
|
||||
mi_state_info_write(share->kfile, &share->state, 1);
|
||||
/* Decrement open count must be last I/O on this file. */
|
||||
_mi_decrement_open_count(info);
|
||||
if (my_close(share->kfile,MYF(0)))
|
||||
error = my_errno;
|
||||
}
|
||||
|
@ -250,7 +250,11 @@ static int d_search(register MI_INFO *info, register MI_KEYDEF *keyinfo,
|
||||
if (info->ft1_to_ft2)
|
||||
{
|
||||
/* we're in ft1->ft2 conversion mode. Saving key data */
|
||||
insert_dynamic(info->ft1_to_ft2, (char*) (lastkey+off));
|
||||
if (insert_dynamic(info->ft1_to_ft2, (char*) (lastkey+off)))
|
||||
{
|
||||
DBUG_PRINT("error",("Out of memory"));
|
||||
DBUG_RETURN(-1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -208,10 +208,17 @@ my_bool _mi_read_pack_info(MI_INFO *info, pbool fix_keys)
|
||||
This segment will be reallocated after construction of the tables.
|
||||
*/
|
||||
length=(uint) (elements*2+trees*(1 << myisam_quick_table_bits));
|
||||
/*
|
||||
To keep some algorithms simpler, we accept that they access
|
||||
bytes beyond the end of the input data. This can affect up to
|
||||
one byte less than the "word size" size used in this file,
|
||||
which is BITS_SAVED / 8. To avoid accessing non-allocated
|
||||
data, we add (BITS_SAVED / 8) - 1 bytes to the buffer size.
|
||||
*/
|
||||
if (!(share->decode_tables=(uint16*)
|
||||
my_malloc((length + OFFSET_TABLE_SIZE) * sizeof(uint16) +
|
||||
(uint) (share->pack.header_length - sizeof(header)),
|
||||
MYF(MY_WME | MY_ZEROFILL))))
|
||||
(uint) (share->pack.header_length - sizeof(header) +
|
||||
(BITS_SAVED / 8) - 1), MYF(MY_WME | MY_ZEROFILL))))
|
||||
goto err1;
|
||||
tmp_buff=share->decode_tables+length;
|
||||
disk_cache=(byte*) (tmp_buff+OFFSET_TABLE_SIZE);
|
||||
@ -1430,6 +1437,7 @@ static void fill_buffer(MI_BIT_BUFF *bit_buff)
|
||||
bit_buff->current_byte=0;
|
||||
return;
|
||||
}
|
||||
|
||||
#if BITS_SAVED == 64
|
||||
bit_buff->current_byte= ((((uint) ((uchar) bit_buff->pos[7]))) +
|
||||
(((uint) ((uchar) bit_buff->pos[6])) << 8) +
|
||||
|
@ -550,7 +550,14 @@ int _mi_insert(register MI_INFO *info, register MI_KEYDEF *keyinfo,
|
||||
we cannot easily dispatch an empty page here */
|
||||
b+=blen+ft2len+2;
|
||||
for (a=anc_buff+a_length ; b < a ; b+=ft2len+2)
|
||||
insert_dynamic(info->ft1_to_ft2, (char*) b);
|
||||
{
|
||||
if (insert_dynamic(info->ft1_to_ft2, (char*) b))
|
||||
{
|
||||
mi_print_error(info->s, HA_ERR_OUT_OF_MEM);
|
||||
my_errno= HA_ERR_OUT_OF_MEM;
|
||||
DBUG_RETURN(-1);
|
||||
}
|
||||
}
|
||||
|
||||
/* fixing the page's length - it contains only one key now */
|
||||
mi_putint(anc_buff,2+blen+ft2len+2,0);
|
||||
|
@ -1311,7 +1311,7 @@ static void descript(MI_CHECK *param, register MI_INFO *info, my_string name)
|
||||
share->base.max_key_file_length != HA_OFFSET_ERROR)
|
||||
printf("Max datafile length: %13s Max keyfile length: %13s\n",
|
||||
llstr(share->base.max_data_file_length-1,llbuff),
|
||||
llstr(share->base.max_key_file_length-1,llbuff2));
|
||||
ullstr(share->base.max_key_file_length - 1, llbuff2));
|
||||
}
|
||||
}
|
||||
|
||||
|
21
mysql-test/include/diff_master_slave.inc
Normal file
21
mysql-test/include/diff_master_slave.inc
Normal file
@ -0,0 +1,21 @@
|
||||
# ==== Purpose ====
|
||||
#
|
||||
# Diff the output of a statement on master and slave
|
||||
#
|
||||
# ==== Usage =====
|
||||
#
|
||||
# let $diff_statement= SELECT * FROM t1 WHERE a < 100;
|
||||
# source include/diff_master_slave.inc;
|
||||
|
||||
--echo source include/diff_master_slave.inc;
|
||||
disable_query_log;
|
||||
disable_result_log;
|
||||
|
||||
exec $MYSQL test -e "$diff_statement" > $MYSQLTEST_VARDIR/tmp/diff_master.out;
|
||||
sync_slave_with_master;
|
||||
exec $MYSQL_SLAVE test -e "$diff_statement" > $MYSQLTEST_VARDIR/tmp/diff_slave.out;
|
||||
|
||||
diff_files $MYSQLTEST_VARDIR/tmp/diff_master.out $MYSQLTEST_VARDIR/tmp/diff_slave.out;
|
||||
|
||||
enable_result_log;
|
||||
enable_query_log;
|
68
mysql-test/include/kill_query.inc
Normal file
68
mysql-test/include/kill_query.inc
Normal file
@ -0,0 +1,68 @@
|
||||
# ==== Purpose ====
|
||||
#
|
||||
# Kill a query in the master connection, and then try to reap the
|
||||
# result of the killed query.
|
||||
#
|
||||
# ==== Usage ====
|
||||
#
|
||||
# The following variables should be set before sourcing this file.
|
||||
#
|
||||
# $debug_lock: name of the debug user lock, if set, will release/lock
|
||||
# the specified debug lock accordingly, and before
|
||||
# sourcing this, connection 'master' should get the user
|
||||
# lock and run a query in another thread, which will
|
||||
# block before creating statement event.
|
||||
#
|
||||
# $connection_name: name of the connection that is waiting for the
|
||||
# lock, this can not be 'master'
|
||||
#
|
||||
# $connection_id: id of the connection that is waiting for the lock
|
||||
#
|
||||
# Example:
|
||||
# let $debug_lock=;
|
||||
# connection master1;
|
||||
# let $connection_name= master1;
|
||||
# let $connection_id= `SELECT CONNECTION_ID()`;
|
||||
# send CREATE TABLE t1;
|
||||
# source kill_query.inc;
|
||||
#
|
||||
# let $debug_lock= "debug_lock.before_query_log_event";
|
||||
# connection master;
|
||||
# eval SELECT GET_LOCK($debug_lock, 10);
|
||||
# connection master1;
|
||||
# let $connection_name= master1;
|
||||
# let $connection_id= `SELECT CONNECTION_ID()`;
|
||||
# send CREATE TABLE t1;
|
||||
# source kill_query.inc;
|
||||
|
||||
|
||||
--echo source include/kill_query.inc;
|
||||
disable_query_log;
|
||||
disable_result_log;
|
||||
connection master;
|
||||
|
||||
# kill the query that is waiting
|
||||
eval kill query $connection_id;
|
||||
|
||||
if (`SELECT '$debug_lock' != ''`)
|
||||
{
|
||||
# release the lock to allow binlog continue
|
||||
eval SELECT RELEASE_LOCK($debug_lock);
|
||||
}
|
||||
|
||||
# reap the result of the waiting query
|
||||
connection $connection_name;
|
||||
error 0, 1317, 1307, 1306, 1334, 1305;
|
||||
reap;
|
||||
|
||||
connection master;
|
||||
|
||||
if (`SELECT '$debug_lock' != ''`)
|
||||
{
|
||||
# get lock again to make the next query wait
|
||||
eval SELECT GET_LOCK($debug_lock, 10);
|
||||
}
|
||||
|
||||
connection $connection_name;
|
||||
enable_query_log;
|
||||
enable_result_log;
|
43
mysql-test/include/kill_query_and_diff_master_slave.inc
Normal file
43
mysql-test/include/kill_query_and_diff_master_slave.inc
Normal file
@ -0,0 +1,43 @@
|
||||
# ==== Purpose ====
|
||||
#
|
||||
# Kill a query, sync master with slave, and diff the output of a
|
||||
# statement on master and slave to check if statement is correctly
|
||||
# replicated.
|
||||
#
|
||||
# ==== Usage ====
|
||||
#
|
||||
# connection <CONNECTION>;
|
||||
# let $connection_name=<CONNECTION>
|
||||
# let $connection_id=`SELECT CONNECTION_ID()`;
|
||||
# let $diff_statement=<SQL COMMAND>;
|
||||
# send <SQL COMMAND>;
|
||||
# source include/kill_query_and_diff_master_slave.inc;
|
||||
#
|
||||
# Note: <CONNECTION> must not be 'master'.
|
||||
#
|
||||
# See also kill_query.inc and diff_master_slave.inc for more
|
||||
# information
|
||||
|
||||
source include/kill_query.inc;
|
||||
|
||||
# Release the debug lock if used, so that the statements in
|
||||
# diff_master_slave.inc will not be blocked.
|
||||
connection master;
|
||||
disable_query_log;
|
||||
disable_result_log;
|
||||
if (`SELECT '$debug_lock' != ''`)
|
||||
{
|
||||
eval SELECT RELEASE_LOCK($debug_lock);
|
||||
}
|
||||
enable_result_log;
|
||||
enable_query_log;
|
||||
|
||||
source include/diff_master_slave.inc;
|
||||
|
||||
# Acquire the debug lock again if used
|
||||
connection master;
|
||||
disable_query_log; disable_result_log; if (`SELECT '$debug_lock' !=
|
||||
''`) { eval SELECT GET_LOCK($debug_lock, 10); } enable_result_log;
|
||||
enable_query_log;
|
||||
|
||||
connection $connection_name;
|
@ -2063,7 +2063,7 @@ sub environment_setup () {
|
||||
$ENV{'MYSQL_BINLOG'}= $cmdline_mysqlbinlog;
|
||||
|
||||
# ----------------------------------------------------
|
||||
# Setup env so childs can execute mysql
|
||||
# Setup env so childs can execute mysql against master
|
||||
# ----------------------------------------------------
|
||||
my $cmdline_mysql=
|
||||
mtr_native_path($exe_mysql) .
|
||||
@ -2074,6 +2074,18 @@ sub environment_setup () {
|
||||
|
||||
$ENV{'MYSQL'}= $cmdline_mysql;
|
||||
|
||||
# ----------------------------------------------------
|
||||
# Setup env so childs can execute mysql against slave
|
||||
# ----------------------------------------------------
|
||||
my $cmdline_mysql_slave=
|
||||
mtr_native_path($exe_mysql) .
|
||||
" --no-defaults --host=localhost --user=root --password= " .
|
||||
"--port=$slave->[0]->{'port'} " .
|
||||
"--socket=$slave->[0]->{'path_sock'} ".
|
||||
"--character-sets-dir=$path_charsetsdir";
|
||||
|
||||
$ENV{'MYSQL_SLAVE'}= $cmdline_mysql_slave;
|
||||
|
||||
# ----------------------------------------------------
|
||||
# Setup env so childs can execute bug25714
|
||||
# ----------------------------------------------------
|
||||
|
@ -2,7 +2,8 @@ DROP TABLE IF EXISTS t1, t2;
|
||||
CREATE TABLE t1 (id INTEGER, grp TINYINT, id_rev INTEGER);
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
4181000
|
||||
4201000
|
||||
SELECT COUNT(DISTINCT id) FROM t1 GROUP BY grp;
|
||||
# Begin cleanup
|
||||
SET session myisam_sort_buffer_size = @orig_myisam_sort_buffer_size;
|
||||
DROP TABLE t1;
|
||||
set @@read_buffer_size=default;
|
||||
|
@ -1,3 +1,37 @@
|
||||
select des_encrypt('hello');
|
||||
des_encrypt('hello')
|
||||
€Ö2nV“Ø}
|
||||
#
|
||||
# Bug #11643: des_encrypt() causes server to die
|
||||
#
|
||||
CREATE TABLE t1 (des VARBINARY(200) NOT NULL DEFAULT '') ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES ('1234'), ('12345'), ('123456'), ('1234567');
|
||||
UPDATE t1 SET des=DES_ENCRYPT('1234');
|
||||
SELECT LENGTH(des) FROM t1;
|
||||
LENGTH(des)
|
||||
9
|
||||
9
|
||||
9
|
||||
9
|
||||
SELECT DES_DECRYPT(des) FROM t1;
|
||||
DES_DECRYPT(des)
|
||||
1234
|
||||
1234
|
||||
1234
|
||||
1234
|
||||
SELECT
|
||||
LENGTH(DES_ENCRYPT('1234')),
|
||||
LENGTH(DES_ENCRYPT('12345')),
|
||||
LENGTH(DES_ENCRYPT('123456')),
|
||||
LENGTH(DES_ENCRYPT('1234567'));
|
||||
LENGTH(DES_ENCRYPT('1234')) LENGTH(DES_ENCRYPT('12345')) LENGTH(DES_ENCRYPT('123456')) LENGTH(DES_ENCRYPT('1234567'))
|
||||
9 9 9 9
|
||||
SELECT
|
||||
DES_DECRYPT(DES_ENCRYPT('1234')),
|
||||
DES_DECRYPT(DES_ENCRYPT('12345')),
|
||||
DES_DECRYPT(DES_ENCRYPT('123456')),
|
||||
DES_DECRYPT(DES_ENCRYPT('1234567'));
|
||||
DES_DECRYPT(DES_ENCRYPT('1234')) DES_DECRYPT(DES_ENCRYPT('12345')) DES_DECRYPT(DES_ENCRYPT('123456')) DES_DECRYPT(DES_ENCRYPT('1234567'))
|
||||
1234 12345 123456 1234567
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
|
@ -1448,4 +1448,41 @@ COUNT(*)
|
||||
0
|
||||
SET SQL_MODE=default;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE derived1 (a bigint(21));
|
||||
INSERT INTO derived1 VALUES (2);
|
||||
CREATE TABLE D (
|
||||
pk int(11) NOT NULL AUTO_INCREMENT,
|
||||
int_nokey int(11) DEFAULT NULL,
|
||||
int_key int(11) DEFAULT NULL,
|
||||
filler blob,
|
||||
PRIMARY KEY (pk),
|
||||
KEY int_key (int_key)
|
||||
);
|
||||
INSERT INTO D VALUES
|
||||
(39,40,4,repeat(' X', 42)),
|
||||
(43,56,4,repeat(' X', 42)),
|
||||
(47,12,4,repeat(' X', 42)),
|
||||
(71,28,4,repeat(' X', 42)),
|
||||
(76,54,4,repeat(' X', 42)),
|
||||
(83,45,4,repeat(' X', 42)),
|
||||
(105,53,12,NULL);
|
||||
SELECT
|
||||
(SELECT COUNT( int_nokey )
|
||||
FROM derived1 AS X
|
||||
WHERE
|
||||
X.int_nokey < 61
|
||||
GROUP BY pk
|
||||
LIMIT 1)
|
||||
FROM D AS X
|
||||
WHERE X.int_key < 13
|
||||
GROUP BY int_nokey LIMIT 1;
|
||||
(SELECT COUNT( int_nokey )
|
||||
FROM derived1 AS X
|
||||
WHERE
|
||||
X.int_nokey < 61
|
||||
GROUP BY pk
|
||||
LIMIT 1)
|
||||
1
|
||||
DROP TABLE derived1;
|
||||
DROP TABLE D;
|
||||
End of 5.0 tests
|
||||
|
@ -324,4 +324,7 @@ SELECT * FROM t1 WHERE a = NAME_CONST('reportDate',
|
||||
_binary'2009-01-09' COLLATE 'binary');
|
||||
a
|
||||
DROP TABLE t1;
|
||||
select NAME_CONST('_id',1234) as id;
|
||||
id
|
||||
1234
|
||||
End of 5.0 tests
|
||||
|
@ -186,106 +186,106 @@ CREATE TABLE t2 (
|
||||
fid INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
g GEOMETRY NOT NULL
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(10 * 10 - 9, 10 * 10 - 9), Point(10 * 10, 10 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(10 * 10 - 9, 9 * 10 - 9), Point(10 * 10, 9 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(10 * 10 - 9, 8 * 10 - 9), Point(10 * 10, 8 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(10 * 10 - 9, 7 * 10 - 9), Point(10 * 10, 7 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(10 * 10 - 9, 6 * 10 - 9), Point(10 * 10, 6 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(10 * 10 - 9, 5 * 10 - 9), Point(10 * 10, 5 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(10 * 10 - 9, 4 * 10 - 9), Point(10 * 10, 4 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(10 * 10 - 9, 3 * 10 - 9), Point(10 * 10, 3 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(10 * 10 - 9, 2 * 10 - 9), Point(10 * 10, 2 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(10 * 10 - 9, 1 * 10 - 9), Point(10 * 10, 1 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(9 * 10 - 9, 10 * 10 - 9), Point(9 * 10, 10 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(9 * 10 - 9, 9 * 10 - 9), Point(9 * 10, 9 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(9 * 10 - 9, 8 * 10 - 9), Point(9 * 10, 8 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(9 * 10 - 9, 7 * 10 - 9), Point(9 * 10, 7 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(9 * 10 - 9, 6 * 10 - 9), Point(9 * 10, 6 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(9 * 10 - 9, 5 * 10 - 9), Point(9 * 10, 5 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(9 * 10 - 9, 4 * 10 - 9), Point(9 * 10, 4 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(9 * 10 - 9, 3 * 10 - 9), Point(9 * 10, 3 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(9 * 10 - 9, 2 * 10 - 9), Point(9 * 10, 2 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(9 * 10 - 9, 1 * 10 - 9), Point(9 * 10, 1 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(8 * 10 - 9, 10 * 10 - 9), Point(8 * 10, 10 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(8 * 10 - 9, 9 * 10 - 9), Point(8 * 10, 9 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(8 * 10 - 9, 8 * 10 - 9), Point(8 * 10, 8 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(8 * 10 - 9, 7 * 10 - 9), Point(8 * 10, 7 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(8 * 10 - 9, 6 * 10 - 9), Point(8 * 10, 6 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(8 * 10 - 9, 5 * 10 - 9), Point(8 * 10, 5 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(8 * 10 - 9, 4 * 10 - 9), Point(8 * 10, 4 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(8 * 10 - 9, 3 * 10 - 9), Point(8 * 10, 3 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(8 * 10 - 9, 2 * 10 - 9), Point(8 * 10, 2 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(8 * 10 - 9, 1 * 10 - 9), Point(8 * 10, 1 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(7 * 10 - 9, 10 * 10 - 9), Point(7 * 10, 10 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(7 * 10 - 9, 9 * 10 - 9), Point(7 * 10, 9 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(7 * 10 - 9, 8 * 10 - 9), Point(7 * 10, 8 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(7 * 10 - 9, 7 * 10 - 9), Point(7 * 10, 7 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(7 * 10 - 9, 6 * 10 - 9), Point(7 * 10, 6 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(7 * 10 - 9, 5 * 10 - 9), Point(7 * 10, 5 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(7 * 10 - 9, 4 * 10 - 9), Point(7 * 10, 4 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(7 * 10 - 9, 3 * 10 - 9), Point(7 * 10, 3 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(7 * 10 - 9, 2 * 10 - 9), Point(7 * 10, 2 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(7 * 10 - 9, 1 * 10 - 9), Point(7 * 10, 1 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(6 * 10 - 9, 10 * 10 - 9), Point(6 * 10, 10 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(6 * 10 - 9, 9 * 10 - 9), Point(6 * 10, 9 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(6 * 10 - 9, 8 * 10 - 9), Point(6 * 10, 8 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(6 * 10 - 9, 7 * 10 - 9), Point(6 * 10, 7 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(6 * 10 - 9, 6 * 10 - 9), Point(6 * 10, 6 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(6 * 10 - 9, 5 * 10 - 9), Point(6 * 10, 5 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(6 * 10 - 9, 4 * 10 - 9), Point(6 * 10, 4 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(6 * 10 - 9, 3 * 10 - 9), Point(6 * 10, 3 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(6 * 10 - 9, 2 * 10 - 9), Point(6 * 10, 2 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(6 * 10 - 9, 1 * 10 - 9), Point(6 * 10, 1 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(5 * 10 - 9, 10 * 10 - 9), Point(5 * 10, 10 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(5 * 10 - 9, 9 * 10 - 9), Point(5 * 10, 9 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(5 * 10 - 9, 8 * 10 - 9), Point(5 * 10, 8 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(5 * 10 - 9, 7 * 10 - 9), Point(5 * 10, 7 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(5 * 10 - 9, 6 * 10 - 9), Point(5 * 10, 6 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(5 * 10 - 9, 5 * 10 - 9), Point(5 * 10, 5 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(5 * 10 - 9, 4 * 10 - 9), Point(5 * 10, 4 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(5 * 10 - 9, 3 * 10 - 9), Point(5 * 10, 3 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(5 * 10 - 9, 2 * 10 - 9), Point(5 * 10, 2 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(5 * 10 - 9, 1 * 10 - 9), Point(5 * 10, 1 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(4 * 10 - 9, 10 * 10 - 9), Point(4 * 10, 10 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(4 * 10 - 9, 9 * 10 - 9), Point(4 * 10, 9 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(4 * 10 - 9, 8 * 10 - 9), Point(4 * 10, 8 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(4 * 10 - 9, 7 * 10 - 9), Point(4 * 10, 7 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(4 * 10 - 9, 6 * 10 - 9), Point(4 * 10, 6 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(4 * 10 - 9, 5 * 10 - 9), Point(4 * 10, 5 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(4 * 10 - 9, 4 * 10 - 9), Point(4 * 10, 4 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(4 * 10 - 9, 3 * 10 - 9), Point(4 * 10, 3 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(4 * 10 - 9, 2 * 10 - 9), Point(4 * 10, 2 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(4 * 10 - 9, 1 * 10 - 9), Point(4 * 10, 1 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(3 * 10 - 9, 10 * 10 - 9), Point(3 * 10, 10 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(3 * 10 - 9, 9 * 10 - 9), Point(3 * 10, 9 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(3 * 10 - 9, 8 * 10 - 9), Point(3 * 10, 8 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(3 * 10 - 9, 7 * 10 - 9), Point(3 * 10, 7 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(3 * 10 - 9, 6 * 10 - 9), Point(3 * 10, 6 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(3 * 10 - 9, 5 * 10 - 9), Point(3 * 10, 5 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(3 * 10 - 9, 4 * 10 - 9), Point(3 * 10, 4 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(3 * 10 - 9, 3 * 10 - 9), Point(3 * 10, 3 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(3 * 10 - 9, 2 * 10 - 9), Point(3 * 10, 2 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(3 * 10 - 9, 1 * 10 - 9), Point(3 * 10, 1 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(2 * 10 - 9, 10 * 10 - 9), Point(2 * 10, 10 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(2 * 10 - 9, 9 * 10 - 9), Point(2 * 10, 9 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(2 * 10 - 9, 8 * 10 - 9), Point(2 * 10, 8 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(2 * 10 - 9, 7 * 10 - 9), Point(2 * 10, 7 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(2 * 10 - 9, 6 * 10 - 9), Point(2 * 10, 6 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(2 * 10 - 9, 5 * 10 - 9), Point(2 * 10, 5 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(2 * 10 - 9, 4 * 10 - 9), Point(2 * 10, 4 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(2 * 10 - 9, 3 * 10 - 9), Point(2 * 10, 3 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(2 * 10 - 9, 2 * 10 - 9), Point(2 * 10, 2 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(2 * 10 - 9, 1 * 10 - 9), Point(2 * 10, 1 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(1 * 10 - 9, 10 * 10 - 9), Point(1 * 10, 10 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(1 * 10 - 9, 9 * 10 - 9), Point(1 * 10, 9 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(1 * 10 - 9, 8 * 10 - 9), Point(1 * 10, 8 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(1 * 10 - 9, 7 * 10 - 9), Point(1 * 10, 7 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(1 * 10 - 9, 6 * 10 - 9), Point(1 * 10, 6 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(1 * 10 - 9, 5 * 10 - 9), Point(1 * 10, 5 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(1 * 10 - 9, 4 * 10 - 9), Point(1 * 10, 4 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(1 * 10 - 9, 3 * 10 - 9), Point(1 * 10, 3 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(1 * 10 - 9, 2 * 10 - 9), Point(1 * 10, 2 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point(1 * 10 - 9, 1 * 10 - 9), Point(1 * 10, 1 * 10))));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(10 * 10 - 9, 10 * 10 - 9), Point(10 * 10, 10 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(10 * 10 - 9, 9 * 10 - 9), Point(10 * 10, 9 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(10 * 10 - 9, 8 * 10 - 9), Point(10 * 10, 8 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(10 * 10 - 9, 7 * 10 - 9), Point(10 * 10, 7 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(10 * 10 - 9, 6 * 10 - 9), Point(10 * 10, 6 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(10 * 10 - 9, 5 * 10 - 9), Point(10 * 10, 5 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(10 * 10 - 9, 4 * 10 - 9), Point(10 * 10, 4 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(10 * 10 - 9, 3 * 10 - 9), Point(10 * 10, 3 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(10 * 10 - 9, 2 * 10 - 9), Point(10 * 10, 2 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(10 * 10 - 9, 1 * 10 - 9), Point(10 * 10, 1 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(9 * 10 - 9, 10 * 10 - 9), Point(9 * 10, 10 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(9 * 10 - 9, 9 * 10 - 9), Point(9 * 10, 9 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(9 * 10 - 9, 8 * 10 - 9), Point(9 * 10, 8 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(9 * 10 - 9, 7 * 10 - 9), Point(9 * 10, 7 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(9 * 10 - 9, 6 * 10 - 9), Point(9 * 10, 6 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(9 * 10 - 9, 5 * 10 - 9), Point(9 * 10, 5 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(9 * 10 - 9, 4 * 10 - 9), Point(9 * 10, 4 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(9 * 10 - 9, 3 * 10 - 9), Point(9 * 10, 3 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(9 * 10 - 9, 2 * 10 - 9), Point(9 * 10, 2 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(9 * 10 - 9, 1 * 10 - 9), Point(9 * 10, 1 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(8 * 10 - 9, 10 * 10 - 9), Point(8 * 10, 10 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(8 * 10 - 9, 9 * 10 - 9), Point(8 * 10, 9 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(8 * 10 - 9, 8 * 10 - 9), Point(8 * 10, 8 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(8 * 10 - 9, 7 * 10 - 9), Point(8 * 10, 7 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(8 * 10 - 9, 6 * 10 - 9), Point(8 * 10, 6 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(8 * 10 - 9, 5 * 10 - 9), Point(8 * 10, 5 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(8 * 10 - 9, 4 * 10 - 9), Point(8 * 10, 4 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(8 * 10 - 9, 3 * 10 - 9), Point(8 * 10, 3 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(8 * 10 - 9, 2 * 10 - 9), Point(8 * 10, 2 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(8 * 10 - 9, 1 * 10 - 9), Point(8 * 10, 1 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(7 * 10 - 9, 10 * 10 - 9), Point(7 * 10, 10 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(7 * 10 - 9, 9 * 10 - 9), Point(7 * 10, 9 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(7 * 10 - 9, 8 * 10 - 9), Point(7 * 10, 8 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(7 * 10 - 9, 7 * 10 - 9), Point(7 * 10, 7 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(7 * 10 - 9, 6 * 10 - 9), Point(7 * 10, 6 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(7 * 10 - 9, 5 * 10 - 9), Point(7 * 10, 5 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(7 * 10 - 9, 4 * 10 - 9), Point(7 * 10, 4 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(7 * 10 - 9, 3 * 10 - 9), Point(7 * 10, 3 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(7 * 10 - 9, 2 * 10 - 9), Point(7 * 10, 2 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(7 * 10 - 9, 1 * 10 - 9), Point(7 * 10, 1 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(6 * 10 - 9, 10 * 10 - 9), Point(6 * 10, 10 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(6 * 10 - 9, 9 * 10 - 9), Point(6 * 10, 9 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(6 * 10 - 9, 8 * 10 - 9), Point(6 * 10, 8 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(6 * 10 - 9, 7 * 10 - 9), Point(6 * 10, 7 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(6 * 10 - 9, 6 * 10 - 9), Point(6 * 10, 6 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(6 * 10 - 9, 5 * 10 - 9), Point(6 * 10, 5 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(6 * 10 - 9, 4 * 10 - 9), Point(6 * 10, 4 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(6 * 10 - 9, 3 * 10 - 9), Point(6 * 10, 3 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(6 * 10 - 9, 2 * 10 - 9), Point(6 * 10, 2 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(6 * 10 - 9, 1 * 10 - 9), Point(6 * 10, 1 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(5 * 10 - 9, 10 * 10 - 9), Point(5 * 10, 10 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(5 * 10 - 9, 9 * 10 - 9), Point(5 * 10, 9 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(5 * 10 - 9, 8 * 10 - 9), Point(5 * 10, 8 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(5 * 10 - 9, 7 * 10 - 9), Point(5 * 10, 7 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(5 * 10 - 9, 6 * 10 - 9), Point(5 * 10, 6 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(5 * 10 - 9, 5 * 10 - 9), Point(5 * 10, 5 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(5 * 10 - 9, 4 * 10 - 9), Point(5 * 10, 4 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(5 * 10 - 9, 3 * 10 - 9), Point(5 * 10, 3 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(5 * 10 - 9, 2 * 10 - 9), Point(5 * 10, 2 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(5 * 10 - 9, 1 * 10 - 9), Point(5 * 10, 1 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(4 * 10 - 9, 10 * 10 - 9), Point(4 * 10, 10 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(4 * 10 - 9, 9 * 10 - 9), Point(4 * 10, 9 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(4 * 10 - 9, 8 * 10 - 9), Point(4 * 10, 8 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(4 * 10 - 9, 7 * 10 - 9), Point(4 * 10, 7 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(4 * 10 - 9, 6 * 10 - 9), Point(4 * 10, 6 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(4 * 10 - 9, 5 * 10 - 9), Point(4 * 10, 5 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(4 * 10 - 9, 4 * 10 - 9), Point(4 * 10, 4 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(4 * 10 - 9, 3 * 10 - 9), Point(4 * 10, 3 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(4 * 10 - 9, 2 * 10 - 9), Point(4 * 10, 2 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(4 * 10 - 9, 1 * 10 - 9), Point(4 * 10, 1 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(3 * 10 - 9, 10 * 10 - 9), Point(3 * 10, 10 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(3 * 10 - 9, 9 * 10 - 9), Point(3 * 10, 9 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(3 * 10 - 9, 8 * 10 - 9), Point(3 * 10, 8 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(3 * 10 - 9, 7 * 10 - 9), Point(3 * 10, 7 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(3 * 10 - 9, 6 * 10 - 9), Point(3 * 10, 6 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(3 * 10 - 9, 5 * 10 - 9), Point(3 * 10, 5 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(3 * 10 - 9, 4 * 10 - 9), Point(3 * 10, 4 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(3 * 10 - 9, 3 * 10 - 9), Point(3 * 10, 3 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(3 * 10 - 9, 2 * 10 - 9), Point(3 * 10, 2 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(3 * 10 - 9, 1 * 10 - 9), Point(3 * 10, 1 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(2 * 10 - 9, 10 * 10 - 9), Point(2 * 10, 10 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(2 * 10 - 9, 9 * 10 - 9), Point(2 * 10, 9 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(2 * 10 - 9, 8 * 10 - 9), Point(2 * 10, 8 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(2 * 10 - 9, 7 * 10 - 9), Point(2 * 10, 7 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(2 * 10 - 9, 6 * 10 - 9), Point(2 * 10, 6 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(2 * 10 - 9, 5 * 10 - 9), Point(2 * 10, 5 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(2 * 10 - 9, 4 * 10 - 9), Point(2 * 10, 4 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(2 * 10 - 9, 3 * 10 - 9), Point(2 * 10, 3 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(2 * 10 - 9, 2 * 10 - 9), Point(2 * 10, 2 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(2 * 10 - 9, 1 * 10 - 9), Point(2 * 10, 1 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(1 * 10 - 9, 10 * 10 - 9), Point(1 * 10, 10 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(1 * 10 - 9, 9 * 10 - 9), Point(1 * 10, 9 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(1 * 10 - 9, 8 * 10 - 9), Point(1 * 10, 8 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(1 * 10 - 9, 7 * 10 - 9), Point(1 * 10, 7 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(1 * 10 - 9, 6 * 10 - 9), Point(1 * 10, 6 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(1 * 10 - 9, 5 * 10 - 9), Point(1 * 10, 5 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(1 * 10 - 9, 4 * 10 - 9), Point(1 * 10, 4 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(1 * 10 - 9, 3 * 10 - 9), Point(1 * 10, 3 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(1 * 10 - 9, 2 * 10 - 9), Point(1 * 10, 2 * 10)));
|
||||
INSERT INTO t2 (g) VALUES (LineString(Point(1 * 10 - 9, 1 * 10 - 9), Point(1 * 10, 1 * 10)));
|
||||
ALTER TABLE t2 ADD SPATIAL KEY(g);
|
||||
SHOW CREATE TABLE t2;
|
||||
Table Create Table
|
||||
@ -309,406 +309,406 @@ fid AsText(g)
|
||||
56 LINESTRING(41 41,50 50)
|
||||
45 LINESTRING(51 51,60 60)
|
||||
55 LINESTRING(41 51,50 60)
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(10 * 10 - 9, 10 * 10 - 9), Point(10 * 10, 10 * 10)))));
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(10 * 10 - 9, 10 * 10 - 9), Point(10 * 10, 10 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
99
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(10 * 10 - 9, 9 * 10 - 9), Point(10 * 10, 9 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(10 * 10 - 9, 9 * 10 - 9), Point(10 * 10, 9 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
98
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(10 * 10 - 9, 8 * 10 - 9), Point(10 * 10, 8 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(10 * 10 - 9, 8 * 10 - 9), Point(10 * 10, 8 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
97
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(10 * 10 - 9, 7 * 10 - 9), Point(10 * 10, 7 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(10 * 10 - 9, 7 * 10 - 9), Point(10 * 10, 7 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
96
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(10 * 10 - 9, 6 * 10 - 9), Point(10 * 10, 6 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(10 * 10 - 9, 6 * 10 - 9), Point(10 * 10, 6 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
95
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(10 * 10 - 9, 5 * 10 - 9), Point(10 * 10, 5 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(10 * 10 - 9, 5 * 10 - 9), Point(10 * 10, 5 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
94
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(10 * 10 - 9, 4 * 10 - 9), Point(10 * 10, 4 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(10 * 10 - 9, 4 * 10 - 9), Point(10 * 10, 4 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
93
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(10 * 10 - 9, 3 * 10 - 9), Point(10 * 10, 3 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(10 * 10 - 9, 3 * 10 - 9), Point(10 * 10, 3 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
92
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(10 * 10 - 9, 2 * 10 - 9), Point(10 * 10, 2 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(10 * 10 - 9, 2 * 10 - 9), Point(10 * 10, 2 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
91
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(10 * 10 - 9, 1 * 10 - 9), Point(10 * 10, 1 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(10 * 10 - 9, 1 * 10 - 9), Point(10 * 10, 1 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
90
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(9 * 10 - 9, 10 * 10 - 9), Point(9 * 10, 10 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(9 * 10 - 9, 10 * 10 - 9), Point(9 * 10, 10 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
89
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(9 * 10 - 9, 9 * 10 - 9), Point(9 * 10, 9 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(9 * 10 - 9, 9 * 10 - 9), Point(9 * 10, 9 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
88
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(9 * 10 - 9, 8 * 10 - 9), Point(9 * 10, 8 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(9 * 10 - 9, 8 * 10 - 9), Point(9 * 10, 8 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
87
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(9 * 10 - 9, 7 * 10 - 9), Point(9 * 10, 7 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(9 * 10 - 9, 7 * 10 - 9), Point(9 * 10, 7 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
86
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(9 * 10 - 9, 6 * 10 - 9), Point(9 * 10, 6 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(9 * 10 - 9, 6 * 10 - 9), Point(9 * 10, 6 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
85
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(9 * 10 - 9, 5 * 10 - 9), Point(9 * 10, 5 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(9 * 10 - 9, 5 * 10 - 9), Point(9 * 10, 5 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
84
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(9 * 10 - 9, 4 * 10 - 9), Point(9 * 10, 4 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(9 * 10 - 9, 4 * 10 - 9), Point(9 * 10, 4 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
83
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(9 * 10 - 9, 3 * 10 - 9), Point(9 * 10, 3 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(9 * 10 - 9, 3 * 10 - 9), Point(9 * 10, 3 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
82
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(9 * 10 - 9, 2 * 10 - 9), Point(9 * 10, 2 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(9 * 10 - 9, 2 * 10 - 9), Point(9 * 10, 2 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
81
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(9 * 10 - 9, 1 * 10 - 9), Point(9 * 10, 1 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(9 * 10 - 9, 1 * 10 - 9), Point(9 * 10, 1 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
80
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(8 * 10 - 9, 10 * 10 - 9), Point(8 * 10, 10 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(8 * 10 - 9, 10 * 10 - 9), Point(8 * 10, 10 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
79
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(8 * 10 - 9, 9 * 10 - 9), Point(8 * 10, 9 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(8 * 10 - 9, 9 * 10 - 9), Point(8 * 10, 9 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
78
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(8 * 10 - 9, 8 * 10 - 9), Point(8 * 10, 8 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(8 * 10 - 9, 8 * 10 - 9), Point(8 * 10, 8 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
77
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(8 * 10 - 9, 7 * 10 - 9), Point(8 * 10, 7 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(8 * 10 - 9, 7 * 10 - 9), Point(8 * 10, 7 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
76
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(8 * 10 - 9, 6 * 10 - 9), Point(8 * 10, 6 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(8 * 10 - 9, 6 * 10 - 9), Point(8 * 10, 6 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
75
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(8 * 10 - 9, 5 * 10 - 9), Point(8 * 10, 5 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(8 * 10 - 9, 5 * 10 - 9), Point(8 * 10, 5 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
74
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(8 * 10 - 9, 4 * 10 - 9), Point(8 * 10, 4 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(8 * 10 - 9, 4 * 10 - 9), Point(8 * 10, 4 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
73
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(8 * 10 - 9, 3 * 10 - 9), Point(8 * 10, 3 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(8 * 10 - 9, 3 * 10 - 9), Point(8 * 10, 3 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
72
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(8 * 10 - 9, 2 * 10 - 9), Point(8 * 10, 2 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(8 * 10 - 9, 2 * 10 - 9), Point(8 * 10, 2 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
71
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(8 * 10 - 9, 1 * 10 - 9), Point(8 * 10, 1 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(8 * 10 - 9, 1 * 10 - 9), Point(8 * 10, 1 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
70
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(7 * 10 - 9, 10 * 10 - 9), Point(7 * 10, 10 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(7 * 10 - 9, 10 * 10 - 9), Point(7 * 10, 10 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
69
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(7 * 10 - 9, 9 * 10 - 9), Point(7 * 10, 9 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(7 * 10 - 9, 9 * 10 - 9), Point(7 * 10, 9 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
68
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(7 * 10 - 9, 8 * 10 - 9), Point(7 * 10, 8 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(7 * 10 - 9, 8 * 10 - 9), Point(7 * 10, 8 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
67
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(7 * 10 - 9, 7 * 10 - 9), Point(7 * 10, 7 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(7 * 10 - 9, 7 * 10 - 9), Point(7 * 10, 7 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
66
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(7 * 10 - 9, 6 * 10 - 9), Point(7 * 10, 6 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(7 * 10 - 9, 6 * 10 - 9), Point(7 * 10, 6 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
65
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(7 * 10 - 9, 5 * 10 - 9), Point(7 * 10, 5 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(7 * 10 - 9, 5 * 10 - 9), Point(7 * 10, 5 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
64
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(7 * 10 - 9, 4 * 10 - 9), Point(7 * 10, 4 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(7 * 10 - 9, 4 * 10 - 9), Point(7 * 10, 4 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
63
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(7 * 10 - 9, 3 * 10 - 9), Point(7 * 10, 3 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(7 * 10 - 9, 3 * 10 - 9), Point(7 * 10, 3 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
62
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(7 * 10 - 9, 2 * 10 - 9), Point(7 * 10, 2 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(7 * 10 - 9, 2 * 10 - 9), Point(7 * 10, 2 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
61
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(7 * 10 - 9, 1 * 10 - 9), Point(7 * 10, 1 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(7 * 10 - 9, 1 * 10 - 9), Point(7 * 10, 1 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
60
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(6 * 10 - 9, 10 * 10 - 9), Point(6 * 10, 10 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(6 * 10 - 9, 10 * 10 - 9), Point(6 * 10, 10 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
59
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(6 * 10 - 9, 9 * 10 - 9), Point(6 * 10, 9 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(6 * 10 - 9, 9 * 10 - 9), Point(6 * 10, 9 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
58
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(6 * 10 - 9, 8 * 10 - 9), Point(6 * 10, 8 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(6 * 10 - 9, 8 * 10 - 9), Point(6 * 10, 8 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
57
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(6 * 10 - 9, 7 * 10 - 9), Point(6 * 10, 7 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(6 * 10 - 9, 7 * 10 - 9), Point(6 * 10, 7 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
56
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(6 * 10 - 9, 6 * 10 - 9), Point(6 * 10, 6 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(6 * 10 - 9, 6 * 10 - 9), Point(6 * 10, 6 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
55
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(6 * 10 - 9, 5 * 10 - 9), Point(6 * 10, 5 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(6 * 10 - 9, 5 * 10 - 9), Point(6 * 10, 5 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
54
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(6 * 10 - 9, 4 * 10 - 9), Point(6 * 10, 4 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(6 * 10 - 9, 4 * 10 - 9), Point(6 * 10, 4 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
53
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(6 * 10 - 9, 3 * 10 - 9), Point(6 * 10, 3 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(6 * 10 - 9, 3 * 10 - 9), Point(6 * 10, 3 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
52
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(6 * 10 - 9, 2 * 10 - 9), Point(6 * 10, 2 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(6 * 10 - 9, 2 * 10 - 9), Point(6 * 10, 2 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
51
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(6 * 10 - 9, 1 * 10 - 9), Point(6 * 10, 1 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(6 * 10 - 9, 1 * 10 - 9), Point(6 * 10, 1 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
50
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(5 * 10 - 9, 10 * 10 - 9), Point(5 * 10, 10 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(5 * 10 - 9, 10 * 10 - 9), Point(5 * 10, 10 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
49
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(5 * 10 - 9, 9 * 10 - 9), Point(5 * 10, 9 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(5 * 10 - 9, 9 * 10 - 9), Point(5 * 10, 9 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
48
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(5 * 10 - 9, 8 * 10 - 9), Point(5 * 10, 8 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(5 * 10 - 9, 8 * 10 - 9), Point(5 * 10, 8 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
47
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(5 * 10 - 9, 7 * 10 - 9), Point(5 * 10, 7 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(5 * 10 - 9, 7 * 10 - 9), Point(5 * 10, 7 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
46
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(5 * 10 - 9, 6 * 10 - 9), Point(5 * 10, 6 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(5 * 10 - 9, 6 * 10 - 9), Point(5 * 10, 6 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
45
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(5 * 10 - 9, 5 * 10 - 9), Point(5 * 10, 5 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(5 * 10 - 9, 5 * 10 - 9), Point(5 * 10, 5 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
44
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(5 * 10 - 9, 4 * 10 - 9), Point(5 * 10, 4 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(5 * 10 - 9, 4 * 10 - 9), Point(5 * 10, 4 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
43
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(5 * 10 - 9, 3 * 10 - 9), Point(5 * 10, 3 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(5 * 10 - 9, 3 * 10 - 9), Point(5 * 10, 3 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
42
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(5 * 10 - 9, 2 * 10 - 9), Point(5 * 10, 2 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(5 * 10 - 9, 2 * 10 - 9), Point(5 * 10, 2 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
41
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(5 * 10 - 9, 1 * 10 - 9), Point(5 * 10, 1 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(5 * 10 - 9, 1 * 10 - 9), Point(5 * 10, 1 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
40
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(4 * 10 - 9, 10 * 10 - 9), Point(4 * 10, 10 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(4 * 10 - 9, 10 * 10 - 9), Point(4 * 10, 10 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
39
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(4 * 10 - 9, 9 * 10 - 9), Point(4 * 10, 9 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(4 * 10 - 9, 9 * 10 - 9), Point(4 * 10, 9 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
38
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(4 * 10 - 9, 8 * 10 - 9), Point(4 * 10, 8 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(4 * 10 - 9, 8 * 10 - 9), Point(4 * 10, 8 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
37
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(4 * 10 - 9, 7 * 10 - 9), Point(4 * 10, 7 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(4 * 10 - 9, 7 * 10 - 9), Point(4 * 10, 7 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
36
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(4 * 10 - 9, 6 * 10 - 9), Point(4 * 10, 6 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(4 * 10 - 9, 6 * 10 - 9), Point(4 * 10, 6 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
35
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(4 * 10 - 9, 5 * 10 - 9), Point(4 * 10, 5 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(4 * 10 - 9, 5 * 10 - 9), Point(4 * 10, 5 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
34
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(4 * 10 - 9, 4 * 10 - 9), Point(4 * 10, 4 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(4 * 10 - 9, 4 * 10 - 9), Point(4 * 10, 4 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
33
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(4 * 10 - 9, 3 * 10 - 9), Point(4 * 10, 3 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(4 * 10 - 9, 3 * 10 - 9), Point(4 * 10, 3 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
32
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(4 * 10 - 9, 2 * 10 - 9), Point(4 * 10, 2 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(4 * 10 - 9, 2 * 10 - 9), Point(4 * 10, 2 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
31
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(4 * 10 - 9, 1 * 10 - 9), Point(4 * 10, 1 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(4 * 10 - 9, 1 * 10 - 9), Point(4 * 10, 1 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
30
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(3 * 10 - 9, 10 * 10 - 9), Point(3 * 10, 10 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(3 * 10 - 9, 10 * 10 - 9), Point(3 * 10, 10 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
29
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(3 * 10 - 9, 9 * 10 - 9), Point(3 * 10, 9 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(3 * 10 - 9, 9 * 10 - 9), Point(3 * 10, 9 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
28
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(3 * 10 - 9, 8 * 10 - 9), Point(3 * 10, 8 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(3 * 10 - 9, 8 * 10 - 9), Point(3 * 10, 8 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
27
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(3 * 10 - 9, 7 * 10 - 9), Point(3 * 10, 7 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(3 * 10 - 9, 7 * 10 - 9), Point(3 * 10, 7 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
26
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(3 * 10 - 9, 6 * 10 - 9), Point(3 * 10, 6 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(3 * 10 - 9, 6 * 10 - 9), Point(3 * 10, 6 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
25
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(3 * 10 - 9, 5 * 10 - 9), Point(3 * 10, 5 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(3 * 10 - 9, 5 * 10 - 9), Point(3 * 10, 5 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
24
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(3 * 10 - 9, 4 * 10 - 9), Point(3 * 10, 4 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(3 * 10 - 9, 4 * 10 - 9), Point(3 * 10, 4 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
23
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(3 * 10 - 9, 3 * 10 - 9), Point(3 * 10, 3 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(3 * 10 - 9, 3 * 10 - 9), Point(3 * 10, 3 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
22
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(3 * 10 - 9, 2 * 10 - 9), Point(3 * 10, 2 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(3 * 10 - 9, 2 * 10 - 9), Point(3 * 10, 2 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
21
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(3 * 10 - 9, 1 * 10 - 9), Point(3 * 10, 1 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(3 * 10 - 9, 1 * 10 - 9), Point(3 * 10, 1 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
20
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(2 * 10 - 9, 10 * 10 - 9), Point(2 * 10, 10 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(2 * 10 - 9, 10 * 10 - 9), Point(2 * 10, 10 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
19
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(2 * 10 - 9, 9 * 10 - 9), Point(2 * 10, 9 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(2 * 10 - 9, 9 * 10 - 9), Point(2 * 10, 9 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
18
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(2 * 10 - 9, 8 * 10 - 9), Point(2 * 10, 8 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(2 * 10 - 9, 8 * 10 - 9), Point(2 * 10, 8 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
17
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(2 * 10 - 9, 7 * 10 - 9), Point(2 * 10, 7 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(2 * 10 - 9, 7 * 10 - 9), Point(2 * 10, 7 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
16
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(2 * 10 - 9, 6 * 10 - 9), Point(2 * 10, 6 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(2 * 10 - 9, 6 * 10 - 9), Point(2 * 10, 6 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
15
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(2 * 10 - 9, 5 * 10 - 9), Point(2 * 10, 5 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(2 * 10 - 9, 5 * 10 - 9), Point(2 * 10, 5 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
14
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(2 * 10 - 9, 4 * 10 - 9), Point(2 * 10, 4 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(2 * 10 - 9, 4 * 10 - 9), Point(2 * 10, 4 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
13
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(2 * 10 - 9, 3 * 10 - 9), Point(2 * 10, 3 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(2 * 10 - 9, 3 * 10 - 9), Point(2 * 10, 3 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
12
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(2 * 10 - 9, 2 * 10 - 9), Point(2 * 10, 2 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(2 * 10 - 9, 2 * 10 - 9), Point(2 * 10, 2 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
11
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(2 * 10 - 9, 1 * 10 - 9), Point(2 * 10, 1 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(2 * 10 - 9, 1 * 10 - 9), Point(2 * 10, 1 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
10
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(1 * 10 - 9, 10 * 10 - 9), Point(1 * 10, 10 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(1 * 10 - 9, 10 * 10 - 9), Point(1 * 10, 10 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
9
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(1 * 10 - 9, 9 * 10 - 9), Point(1 * 10, 9 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(1 * 10 - 9, 9 * 10 - 9), Point(1 * 10, 9 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
8
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(1 * 10 - 9, 8 * 10 - 9), Point(1 * 10, 8 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(1 * 10 - 9, 8 * 10 - 9), Point(1 * 10, 8 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
7
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(1 * 10 - 9, 7 * 10 - 9), Point(1 * 10, 7 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(1 * 10 - 9, 7 * 10 - 9), Point(1 * 10, 7 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
6
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(1 * 10 - 9, 6 * 10 - 9), Point(1 * 10, 6 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(1 * 10 - 9, 6 * 10 - 9), Point(1 * 10, 6 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
5
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(1 * 10 - 9, 5 * 10 - 9), Point(1 * 10, 5 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(1 * 10 - 9, 5 * 10 - 9), Point(1 * 10, 5 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
4
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(1 * 10 - 9, 4 * 10 - 9), Point(1 * 10, 4 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(1 * 10 - 9, 4 * 10 - 9), Point(1 * 10, 4 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
3
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(1 * 10 - 9, 3 * 10 - 9), Point(1 * 10, 3 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(1 * 10 - 9, 3 * 10 - 9), Point(1 * 10, 3 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
2
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(1 * 10 - 9, 2 * 10 - 9), Point(1 * 10, 2 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(1 * 10 - 9, 2 * 10 - 9), Point(1 * 10, 2 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
1
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(1 * 10 - 9, 1 * 10 - 9), Point(1 * 10, 1 * 10)))));
|
||||
100
|
||||
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point(1 * 10 - 9, 1 * 10 - 9), Point(1 * 10, 1 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
count(*)
|
||||
0
|
||||
100
|
||||
DROP TABLE t2;
|
||||
drop table if exists t1;
|
||||
Warnings:
|
||||
@ -863,11 +863,11 @@ Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (foo GEOMETRY NOT NULL, SPATIAL INDEX(foo) );
|
||||
INSERT INTO t1 (foo) VALUES (PointFromWKB(POINT(1,1)));
|
||||
INSERT INTO t1 (foo) VALUES (PointFromWKB(POINT(1,0)));
|
||||
INSERT INTO t1 (foo) VALUES (PointFromWKB(POINT(0,1)));
|
||||
INSERT INTO t1 (foo) VALUES (PointFromWKB(POINT(0,0)));
|
||||
SELECT 1 FROM t1 WHERE foo != PointFromWKB(POINT(0,0));
|
||||
INSERT INTO t1 (foo) VALUES (POINT(1,1));
|
||||
INSERT INTO t1 (foo) VALUES (POINT(1,0));
|
||||
INSERT INTO t1 (foo) VALUES (POINT(0,1));
|
||||
INSERT INTO t1 (foo) VALUES (POINT(0,0));
|
||||
SELECT 1 FROM t1 WHERE foo != POINT(0,0);
|
||||
1
|
||||
1
|
||||
1
|
||||
@ -1426,35 +1426,35 @@ Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
DROP TABLE t1;
|
||||
create table t1 (a geometry not null, spatial index(a));
|
||||
insert into t1 values (PointFromWKB(POINT(1.1517219314031e+164, 131072)));
|
||||
insert into t1 values (PointFromWKB(POINT(9.1248812352444e+192, 2.9740338169556e+284)));
|
||||
insert into t1 values (PointFromWKB(POINT(4.7783097267365e-299, -0)));
|
||||
insert into t1 values (PointFromWKB(POINT(1.49166814624e-154, 2.0880974297595e-53)));
|
||||
insert into t1 values (PointFromWKB(POINT(4.0917382598702e+149, 1.2024538023802e+111)));
|
||||
insert into t1 values (PointFromWKB(POINT(2.0349165139404e+236, 2.9993936277913e-241)));
|
||||
insert into t1 values (PointFromWKB(POINT(2.5243548967072e-29, 1.2024538023802e+111)));
|
||||
insert into t1 values (PointFromWKB(POINT(0, 6.9835074892995e-251)));
|
||||
insert into t1 values (PointFromWKB(POINT(2.0880974297595e-53, 3.1050361846014e+231)));
|
||||
insert into t1 values (PointFromWKB(POINT(2.8728483499323e-188, 2.4600631144627e+260)));
|
||||
insert into t1 values (PointFromWKB(POINT(3.0517578125e-05, 2.0349165139404e+236)));
|
||||
insert into t1 values (PointFromWKB(POINT(1.1517219314031e+164, 1.1818212630766e-125)));
|
||||
insert into t1 values (PointFromWKB(POINT(2.481040258324e-265, 5.7766220027675e-275)));
|
||||
insert into t1 values (PointFromWKB(POINT(2.0880974297595e-53, 2.5243548967072e-29)));
|
||||
insert into t1 values (PointFromWKB(POINT(5.7766220027675e-275, 9.9464647281957e+86)));
|
||||
insert into t1 values (PointFromWKB(POINT(2.2181357552967e+130, 3.7857669957337e-270)));
|
||||
insert into t1 values (PointFromWKB(POINT(4.5767114681874e-246, 3.6893488147419e+19)));
|
||||
insert into t1 values (PointFromWKB(POINT(4.5767114681874e-246, 3.7537584144024e+255)));
|
||||
insert into t1 values (PointFromWKB(POINT(3.7857669957337e-270, 1.8033161362863e-130)));
|
||||
insert into t1 values (PointFromWKB(POINT(0, 5.8774717541114e-39)));
|
||||
insert into t1 values (PointFromWKB(POINT(1.1517219314031e+164, 2.2761049594727e-159)));
|
||||
insert into t1 values (PointFromWKB(POINT(6.243497100632e+144, 3.7857669957337e-270)));
|
||||
insert into t1 values (PointFromWKB(POINT(3.7857669957337e-270, 2.6355494858076e-82)));
|
||||
insert into t1 values (PointFromWKB(POINT(2.0349165139404e+236, 3.8518598887745e-34)));
|
||||
insert into t1 values (PointFromWKB(POINT(4.6566128730774e-10, 2.0880974297595e-53)));
|
||||
insert into t1 values (PointFromWKB(POINT(2.0880974297595e-53, 1.8827498946116e-183)));
|
||||
insert into t1 values (PointFromWKB(POINT(1.8033161362863e-130, 9.1248812352444e+192)));
|
||||
insert into t1 values (PointFromWKB(POINT(4.7783097267365e-299, 2.2761049594727e-159)));
|
||||
insert into t1 values (PointFromWKB(POINT(1.94906280228e+289, 1.2338789709327e-178)));
|
||||
insert into t1 values (POINT(1.1517219314031e+164, 131072));
|
||||
insert into t1 values (POINT(9.1248812352444e+192, 2.9740338169556e+284));
|
||||
insert into t1 values (POINT(4.7783097267365e-299, -0));
|
||||
insert into t1 values (POINT(1.49166814624e-154, 2.0880974297595e-53));
|
||||
insert into t1 values (POINT(4.0917382598702e+149, 1.2024538023802e+111));
|
||||
insert into t1 values (POINT(2.0349165139404e+236, 2.9993936277913e-241));
|
||||
insert into t1 values (POINT(2.5243548967072e-29, 1.2024538023802e+111));
|
||||
insert into t1 values (POINT(0, 6.9835074892995e-251));
|
||||
insert into t1 values (POINT(2.0880974297595e-53, 3.1050361846014e+231));
|
||||
insert into t1 values (POINT(2.8728483499323e-188, 2.4600631144627e+260));
|
||||
insert into t1 values (POINT(3.0517578125e-05, 2.0349165139404e+236));
|
||||
insert into t1 values (POINT(1.1517219314031e+164, 1.1818212630766e-125));
|
||||
insert into t1 values (POINT(2.481040258324e-265, 5.7766220027675e-275));
|
||||
insert into t1 values (POINT(2.0880974297595e-53, 2.5243548967072e-29));
|
||||
insert into t1 values (POINT(5.7766220027675e-275, 9.9464647281957e+86));
|
||||
insert into t1 values (POINT(2.2181357552967e+130, 3.7857669957337e-270));
|
||||
insert into t1 values (POINT(4.5767114681874e-246, 3.6893488147419e+19));
|
||||
insert into t1 values (POINT(4.5767114681874e-246, 3.7537584144024e+255));
|
||||
insert into t1 values (POINT(3.7857669957337e-270, 1.8033161362863e-130));
|
||||
insert into t1 values (POINT(0, 5.8774717541114e-39));
|
||||
insert into t1 values (POINT(1.1517219314031e+164, 2.2761049594727e-159));
|
||||
insert into t1 values (POINT(6.243497100632e+144, 3.7857669957337e-270));
|
||||
insert into t1 values (POINT(3.7857669957337e-270, 2.6355494858076e-82));
|
||||
insert into t1 values (POINT(2.0349165139404e+236, 3.8518598887745e-34));
|
||||
insert into t1 values (POINT(4.6566128730774e-10, 2.0880974297595e-53));
|
||||
insert into t1 values (POINT(2.0880974297595e-53, 1.8827498946116e-183));
|
||||
insert into t1 values (POINT(1.8033161362863e-130, 9.1248812352444e+192));
|
||||
insert into t1 values (POINT(4.7783097267365e-299, 2.2761049594727e-159));
|
||||
insert into t1 values (POINT(1.94906280228e+289, 1.2338789709327e-178));
|
||||
drop table t1;
|
||||
CREATE TABLE t1(foo GEOMETRY NOT NULL, SPATIAL INDEX(foo) );
|
||||
INSERT INTO t1(foo) VALUES (NULL);
|
||||
|
@ -47,26 +47,26 @@ INSERT INTO gis_point VALUES
|
||||
INSERT INTO gis_line VALUES
|
||||
(105, LineFromText('LINESTRING(0 0,0 10,10 0)')),
|
||||
(106, LineStringFromText('LINESTRING(10 10,20 10,20 20,10 20,10 10)')),
|
||||
(107, LineStringFromWKB(LineString(Point(10, 10), Point(40, 10))));
|
||||
(107, LineStringFromWKB(AsWKB(LineString(Point(10, 10), Point(40, 10)))));
|
||||
INSERT INTO gis_polygon VALUES
|
||||
(108, PolygonFromText('POLYGON((10 10,20 10,20 20,10 20,10 10))')),
|
||||
(109, PolyFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')),
|
||||
(110, PolyFromWKB(Polygon(LineString(Point(0, 0), Point(30, 0), Point(30, 30), Point(0, 0)))));
|
||||
(110, PolyFromWKB(AsWKB(Polygon(LineString(Point(0, 0), Point(30, 0), Point(30, 30), Point(0, 0))))));
|
||||
INSERT INTO gis_multi_point VALUES
|
||||
(111, MultiPointFromText('MULTIPOINT(0 0,10 10,10 20,20 20)')),
|
||||
(112, MPointFromText('MULTIPOINT(1 1,11 11,11 21,21 21)')),
|
||||
(113, MPointFromWKB(MultiPoint(Point(3, 6), Point(4, 10))));
|
||||
(113, MPointFromWKB(AsWKB(MultiPoint(Point(3, 6), Point(4, 10)))));
|
||||
INSERT INTO gis_multi_line VALUES
|
||||
(114, MultiLineStringFromText('MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))')),
|
||||
(115, MLineFromText('MULTILINESTRING((10 48,10 21,10 0))')),
|
||||
(116, MLineFromWKB(MultiLineString(LineString(Point(1, 2), Point(3, 5)), LineString(Point(2, 5), Point(5, 8), Point(21, 7)))));
|
||||
(116, MLineFromWKB(AsWKB(MultiLineString(LineString(Point(1, 2), Point(3, 5)), LineString(Point(2, 5), Point(5, 8), Point(21, 7))))));
|
||||
INSERT INTO gis_multi_polygon VALUES
|
||||
(117, MultiPolygonFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))')),
|
||||
(118, MPolyFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))')),
|
||||
(119, MPolyFromWKB(MultiPolygon(Polygon(LineString(Point(0, 3), Point(3, 3), Point(3, 0), Point(0, 3))))));
|
||||
(119, MPolyFromWKB(AsWKB(MultiPolygon(Polygon(LineString(Point(0, 3), Point(3, 3), Point(3, 0), Point(0, 3)))))));
|
||||
INSERT INTO gis_geometrycollection VALUES
|
||||
(120, GeomCollFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))')),
|
||||
(121, GeometryFromWKB(GeometryCollection(Point(44, 6), LineString(Point(3, 6), Point(7, 9)))));
|
||||
(121, GeometryFromWKB(AsWKB(GeometryCollection(Point(44, 6), LineString(Point(3, 6), Point(7, 9))))));
|
||||
INSERT into gis_geometry SELECT * FROM gis_point;
|
||||
INSERT into gis_geometry SELECT * FROM gis_line;
|
||||
INSERT into gis_geometry SELECT * FROM gis_polygon;
|
||||
|
@ -502,3 +502,7 @@ handler t1_alias READ a next where inexistent > 0;
|
||||
ERROR 42S22: Unknown column 'inexistent' in 'field list'
|
||||
handler t1_alias close;
|
||||
drop table t1;
|
||||
USE information_schema;
|
||||
HANDLER COLUMNS OPEN;
|
||||
ERROR HY000: Incorrect usage of HANDLER OPEN and information_schema
|
||||
USE test;
|
||||
|
@ -1803,15 +1803,12 @@ Innodb_buffer_pool_pages_total 512
|
||||
show status like "Innodb_page_size";
|
||||
Variable_name Value
|
||||
Innodb_page_size 16384
|
||||
show status like "Innodb_rows_deleted";
|
||||
Variable_name Value
|
||||
Innodb_rows_deleted 73
|
||||
show status like "Innodb_rows_inserted";
|
||||
Variable_name Value
|
||||
Innodb_rows_inserted 29734
|
||||
show status like "Innodb_rows_updated";
|
||||
Variable_name Value
|
||||
Innodb_rows_updated 29532
|
||||
innodb_rows_deleted
|
||||
73
|
||||
innodb_rows_inserted
|
||||
29734
|
||||
innodb_rows_updated
|
||||
29532
|
||||
show status like "Innodb_row_lock_waits";
|
||||
Variable_name Value
|
||||
Innodb_row_lock_waits 0
|
||||
|
@ -1267,4 +1267,28 @@ CREATE INDEX i1 on t1 (a(3));
|
||||
SELECT * FROM t1 WHERE a = 'abcde';
|
||||
a
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# BUG #26288: savepoint are not deleted on comit, if the transaction
|
||||
# was otherwise empty
|
||||
#
|
||||
BEGIN;
|
||||
SAVEPOINT s1;
|
||||
COMMIT;
|
||||
RELEASE SAVEPOINT s1;
|
||||
ERROR 42000: SAVEPOINT s1 does not exist
|
||||
BEGIN;
|
||||
SAVEPOINT s2;
|
||||
COMMIT;
|
||||
ROLLBACK TO SAVEPOINT s2;
|
||||
ERROR 42000: SAVEPOINT s2 does not exist
|
||||
BEGIN;
|
||||
SAVEPOINT s3;
|
||||
ROLLBACK;
|
||||
RELEASE SAVEPOINT s3;
|
||||
ERROR 42000: SAVEPOINT s3 does not exist
|
||||
BEGIN;
|
||||
SAVEPOINT s4;
|
||||
ROLLBACK;
|
||||
ROLLBACK TO SAVEPOINT s4;
|
||||
ERROR 42000: SAVEPOINT s4 does not exist
|
||||
End of 5.0 tests
|
||||
|
@ -595,4 +595,9 @@ SELECT * FROM t2;
|
||||
c1
|
||||
15449237462
|
||||
DROP TABLE t1, t2;
|
||||
CREATE TABLE t1(f1 FLOAT);
|
||||
INSERT INTO t1 VALUES (1.23);
|
||||
CREATE TABLE t2(f1 CHAR(1));
|
||||
INSERT INTO t2 SELECT f1 FROM t1;
|
||||
DROP TABLE t1, t2;
|
||||
End of 5.0 tests.
|
||||
|
@ -393,6 +393,7 @@ id c1 cnt
|
||||
1 0 3
|
||||
2 2 1
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
create table t1(f1 int primary key,
|
||||
f2 timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP);
|
||||
insert into t1(f1) values(1);
|
||||
|
@ -133,3 +133,58 @@ ALTER TABLE t1 ADD COLUMN a INT;
|
||||
# 2.2.1. normal mode
|
||||
# 2.2.2. PS mode
|
||||
DROP TABLE t1;
|
||||
create table t1 (a int);
|
||||
create table t2 like t1;
|
||||
# con1
|
||||
lock tables t1 write;
|
||||
# con2
|
||||
flush tables with read lock;
|
||||
# con5
|
||||
# global read lock is taken
|
||||
# con3
|
||||
select * from t2 for update;
|
||||
# waiting for release of read lock
|
||||
# con4
|
||||
# would hang and later cause a deadlock
|
||||
flush tables t2;
|
||||
# clean up
|
||||
unlock tables;
|
||||
unlock tables;
|
||||
a
|
||||
drop table t1,t2;
|
||||
#
|
||||
# Lightweight version:
|
||||
# Ensure that the wait for a GRL is done before opening tables.
|
||||
#
|
||||
create table t1 (a int);
|
||||
create table t2 like t1;
|
||||
#
|
||||
# UPDATE
|
||||
#
|
||||
# default
|
||||
flush tables with read lock;
|
||||
# con1
|
||||
update t2 set a = 1;
|
||||
# default
|
||||
# statement is waiting for release of read lock
|
||||
# con2
|
||||
flush table t2;
|
||||
# default
|
||||
unlock tables;
|
||||
# con1
|
||||
#
|
||||
# LOCK TABLES .. WRITE
|
||||
#
|
||||
# default
|
||||
flush tables with read lock;
|
||||
# con1
|
||||
lock tables t2 write;
|
||||
# default
|
||||
# statement is waiting for release of read lock
|
||||
# con2
|
||||
flush table t2;
|
||||
# default
|
||||
unlock tables;
|
||||
# con1
|
||||
unlock tables;
|
||||
drop table t1,t2;
|
||||
|
@ -27,3 +27,36 @@ CHECK TABLE t1 EXTENDED;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# BUG#41541 - Valgrind warnings on packed MyISAM table
|
||||
#
|
||||
CREATE TABLE t1(f1 VARCHAR(200), f2 TEXT);
|
||||
INSERT INTO t1 VALUES ('foo', 'foo1'), ('bar', 'bar1');
|
||||
FLUSH TABLE t1;
|
||||
# Compress the table using MYISAMPACK tool
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
1024
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug #43973 - backup_myisam.test fails on 6.0-bugteam
|
||||
#
|
||||
CREATE DATABASE mysql_db1;
|
||||
CREATE TABLE mysql_db1.t1 (c1 VARCHAR(5), c2 int);
|
||||
CREATE INDEX i1 ON mysql_db1.t1 (c1, c2);
|
||||
INSERT INTO mysql_db1.t1 VALUES ('A',1);
|
||||
INSERT INTO mysql_db1.t1 SELECT * FROM mysql_db1.t1;
|
||||
INSERT INTO mysql_db1.t1 SELECT * FROM mysql_db1.t1;
|
||||
INSERT INTO mysql_db1.t1 SELECT * FROM mysql_db1.t1;
|
||||
INSERT INTO mysql_db1.t1 SELECT * FROM mysql_db1.t1;
|
||||
INSERT INTO mysql_db1.t1 SELECT * FROM mysql_db1.t1;
|
||||
INSERT INTO mysql_db1.t1 SELECT * FROM mysql_db1.t1;
|
||||
INSERT INTO mysql_db1.t1 SELECT * FROM mysql_db1.t1;
|
||||
FLUSH TABLE mysql_db1.t1;
|
||||
# Compress the table using MYISAMPACK tool
|
||||
# Run MYISAMCHK tool on the compressed table
|
||||
SELECT COUNT(*) FROM mysql_db1.t1 WHERE c2 < 5;
|
||||
COUNT(*)
|
||||
128
|
||||
DROP TABLE mysql_db1.t1;
|
||||
DROP DATABASE mysql_db1;
|
||||
|
@ -3557,7 +3557,6 @@ DROP TABLE t1,t2;
|
||||
|
||||
|
||||
-- Dump completed on DATE
|
||||
SET @@GLOBAL.CONCURRENT_INSERT = @OLD_CONCURRENT_INSERT;
|
||||
#
|
||||
# Bug #42635: mysqldump includes views that were excluded using
|
||||
# the --ignore-table option
|
||||
@ -3693,6 +3692,7 @@ UNLOCK TABLES;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
DROP TABLE `כדשגכחךלדגכחשךדגחכךלדגכ`;
|
||||
SET NAMES latin1;
|
||||
SET @@GLOBAL.CONCURRENT_INSERT = @OLD_CONCURRENT_INSERT;
|
||||
#
|
||||
# End of 5.0 tests
|
||||
#
|
||||
|
@ -4,9 +4,4 @@ Id User Host db Command Time State Info
|
||||
number root localhost test Query time NULL show full processlist
|
||||
deallocate prepare stmt1;
|
||||
FLUSH STATUS;
|
||||
SHOW GLOBAL STATUS LIKE 'com_select';
|
||||
Variable_name Value
|
||||
Com_select 101
|
||||
SHOW GLOBAL STATUS LIKE 'com_select';
|
||||
Variable_name Value
|
||||
Com_select 101
|
||||
Value of com_select did not change
|
||||
|
@ -418,17 +418,17 @@ prepare stmt3 from ' lock tables t1 read ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt3 from ' unlock tables ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt1 from ' load data infile ''data.txt''
|
||||
into table t1 fields terminated by ''\t'' ';
|
||||
prepare stmt1 from ' load data infile ''<MYSQLTEST_VARDIR>/tmp/data.txt''
|
||||
into table t1 fields terminated by ''\t'' ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt1 from ' select * into outfile ''data.txt'' from t1 ';
|
||||
prepare stmt1 from ' select * into outfile ''<MYSQLTEST_VARDIR>/tmp/data.txt'' from t1 ';
|
||||
execute stmt1 ;
|
||||
prepare stmt1 from ' optimize table t1 ' ;
|
||||
prepare stmt1 from ' analyze table t1 ' ;
|
||||
prepare stmt1 from ' checksum table t1 ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt1 from ' repair table t1 ' ;
|
||||
prepare stmt1 from ' restore table t1 from ''data.txt'' ' ;
|
||||
prepare stmt1 from ' restore table t1 from ''<MYSQLTEST_VARDIR>/tmp/data.txt'' ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt1 from ' handler t1 open ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
|
6
mysql-test/r/rpl_bug38694.result
Normal file
6
mysql-test/r/rpl_bug38694.result
Normal file
@ -0,0 +1,6 @@
|
||||
stop slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
80
mysql-test/r/rpl_drop_if_exists.result
Normal file
80
mysql-test/r/rpl_drop_if_exists.result
Normal file
@ -0,0 +1,80 @@
|
||||
RESET MASTER;
|
||||
DROP PROCEDURE IF EXISTS db_bug_13684.p;
|
||||
DROP FUNCTION IF EXISTS db_bug_13684.f;
|
||||
DROP TRIGGER IF EXISTS db_bug_13684.tr;
|
||||
DROP VIEW IF EXISTS db_bug_13684.v;
|
||||
DROP TABLE IF EXISTS db_bug_13684.t;
|
||||
DROP DATABASE IF EXISTS db_bug_13684;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; DROP PROCEDURE IF EXISTS db_bug_13684.p
|
||||
master-bin.000001 # Query # # use `test`; DROP FUNCTION IF EXISTS db_bug_13684.f
|
||||
master-bin.000001 # Query # # use `test`; DROP TRIGGER IF EXISTS db_bug_13684.tr
|
||||
master-bin.000001 # Query # # use `test`; DROP VIEW IF EXISTS db_bug_13684.v
|
||||
master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS db_bug_13684.t
|
||||
master-bin.000001 # Query # # DROP DATABASE IF EXISTS db_bug_13684
|
||||
CREATE DATABASE db_bug_13684;
|
||||
CREATE TABLE db_bug_13684.t (a int);
|
||||
CREATE VIEW db_bug_13684.v
|
||||
AS SELECT * FROM db_bug_13684.t;
|
||||
CREATE TRIGGER db_bug_13684.tr BEFORE INSERT ON db_bug_13684.t
|
||||
FOR EACH ROW BEGIN
|
||||
END;
|
||||
CREATE PROCEDURE db_bug_13684.p (OUT p1 INT)
|
||||
BEGIN
|
||||
END;
|
||||
CREATE FUNCTION db_bug_13684.f (s CHAR(20))
|
||||
RETURNS CHAR(50) DETERMINISTIC
|
||||
RETURN s;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; DROP PROCEDURE IF EXISTS db_bug_13684.p
|
||||
master-bin.000001 # Query # # use `test`; DROP FUNCTION IF EXISTS db_bug_13684.f
|
||||
master-bin.000001 # Query # # use `test`; DROP TRIGGER IF EXISTS db_bug_13684.tr
|
||||
master-bin.000001 # Query # # use `test`; DROP VIEW IF EXISTS db_bug_13684.v
|
||||
master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS db_bug_13684.t
|
||||
master-bin.000001 # Query # # DROP DATABASE IF EXISTS db_bug_13684
|
||||
master-bin.000001 # Query # # CREATE DATABASE db_bug_13684
|
||||
master-bin.000001 # Query # # use `test`; CREATE TABLE db_bug_13684.t (a int)
|
||||
master-bin.000001 # Query # # use `test`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `db_bug_13684`.`v` AS select `db_bug_13684`.`t`.`a` AS `a` from `db_bug_13684`.`t`
|
||||
master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` TRIGGER db_bug_13684.tr BEFORE INSERT ON db_bug_13684.t
|
||||
FOR EACH ROW BEGIN
|
||||
END
|
||||
master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `db_bug_13684`.`p`(OUT p1 INT)
|
||||
BEGIN
|
||||
END
|
||||
master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` FUNCTION `db_bug_13684`.`f`(s CHAR(20)) RETURNS char(50) CHARSET latin1
|
||||
DETERMINISTIC
|
||||
RETURN s
|
||||
DROP PROCEDURE IF EXISTS db_bug_13684.p;
|
||||
DROP FUNCTION IF EXISTS db_bug_13684.f;
|
||||
DROP TRIGGER IF EXISTS db_bug_13684.tr;
|
||||
DROP VIEW IF EXISTS db_bug_13684.v;
|
||||
DROP TABLE IF EXISTS db_bug_13684.t;
|
||||
DROP DATABASE IF EXISTS db_bug_13684;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; DROP PROCEDURE IF EXISTS db_bug_13684.p
|
||||
master-bin.000001 # Query # # use `test`; DROP FUNCTION IF EXISTS db_bug_13684.f
|
||||
master-bin.000001 # Query # # use `test`; DROP TRIGGER IF EXISTS db_bug_13684.tr
|
||||
master-bin.000001 # Query # # use `test`; DROP VIEW IF EXISTS db_bug_13684.v
|
||||
master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS db_bug_13684.t
|
||||
master-bin.000001 # Query # # DROP DATABASE IF EXISTS db_bug_13684
|
||||
master-bin.000001 # Query # # CREATE DATABASE db_bug_13684
|
||||
master-bin.000001 # Query # # use `test`; CREATE TABLE db_bug_13684.t (a int)
|
||||
master-bin.000001 # Query # # use `test`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `db_bug_13684`.`v` AS select `db_bug_13684`.`t`.`a` AS `a` from `db_bug_13684`.`t`
|
||||
master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` TRIGGER db_bug_13684.tr BEFORE INSERT ON db_bug_13684.t
|
||||
FOR EACH ROW BEGIN
|
||||
END
|
||||
master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `db_bug_13684`.`p`(OUT p1 INT)
|
||||
BEGIN
|
||||
END
|
||||
master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` FUNCTION `db_bug_13684`.`f`(s CHAR(20)) RETURNS char(50) CHARSET latin1
|
||||
DETERMINISTIC
|
||||
RETURN s
|
||||
master-bin.000001 # Query # # use `test`; DROP PROCEDURE IF EXISTS db_bug_13684.p
|
||||
master-bin.000001 # Query # # use `test`; DROP FUNCTION IF EXISTS db_bug_13684.f
|
||||
master-bin.000001 # Query # # use `test`; DROP TRIGGER IF EXISTS db_bug_13684.tr
|
||||
master-bin.000001 # Query # # use `test`; DROP VIEW IF EXISTS db_bug_13684.v
|
||||
master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS db_bug_13684.t
|
||||
master-bin.000001 # Query # # DROP DATABASE IF EXISTS db_bug_13684
|
146
mysql-test/r/rpl_killed_ddl.result
Normal file
146
mysql-test/r/rpl_killed_ddl.result
Normal file
@ -0,0 +1,146 @@
|
||||
stop slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
DROP DATABASE IF EXISTS d1;
|
||||
DROP DATABASE IF EXISTS d2;
|
||||
DROP DATABASE IF EXISTS d3;
|
||||
DROP DATABASE IF EXISTS d4;
|
||||
DROP FUNCTION IF EXISTS f1;
|
||||
DROP FUNCTION IF EXISTS f2;
|
||||
DROP FUNCTION IF EXISTS f3;
|
||||
DROP FUNCTION IF EXISTS f4;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TABLE IF EXISTS t2;
|
||||
DROP TABLE IF EXISTS t3;
|
||||
DROP TABLE IF EXISTS t4;
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
DROP PROCEDURE IF EXISTS p2;
|
||||
DROP PROCEDURE IF EXISTS p3;
|
||||
DROP PROCEDURE IF EXISTS p4;
|
||||
DROP TRIGGER IF EXISTS tr1;
|
||||
DROP TRIGGER IF EXISTS tr2;
|
||||
DROP TRIGGER IF EXISTS tr3;
|
||||
DROP TRIGGER IF EXISTS tr4;
|
||||
CREATE DATABASE d1;
|
||||
CREATE FUNCTION f1 () RETURNS INT DETERMINISTIC
|
||||
RETURN 1;
|
||||
CREATE PROCEDURE p1 (OUT rows INT)
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO rows FROM t1;
|
||||
END;
|
||||
//
|
||||
CREATE TABLE t1 (a int);
|
||||
CREATE TABLE t3 (a int);
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1
|
||||
FOR EACH ROW BEGIN
|
||||
DELETE FROM t4 WHERE a=NEW.a;
|
||||
END;
|
||||
//
|
||||
CREATE INDEX i1 ON t1 (a);
|
||||
CREATE VIEW v1 AS SELECT a FROM t1 WHERE a < 100;
|
||||
[on master]
|
||||
[on master1]
|
||||
CREATE DATABASE d2;
|
||||
source include/kill_query.inc;
|
||||
source include/diff_master_slave.inc;
|
||||
ALTER DATABASE d1
|
||||
DEFAULT CHARACTER SET = 'utf8';
|
||||
source include/kill_query.inc;
|
||||
source include/diff_master_slave.inc;
|
||||
DROP DATABASE d1;
|
||||
source include/kill_query.inc;
|
||||
source include/diff_master_slave.inc;
|
||||
DROP DATABASE d2;
|
||||
source include/kill_query.inc;
|
||||
source include/diff_master_slave.inc;
|
||||
CREATE FUNCTION f2 () RETURNS INT DETERMINISTIC
|
||||
RETURN 1;
|
||||
source include/kill_query.inc;
|
||||
source include/diff_master_slave.inc;
|
||||
ALTER FUNCTION f1 SQL SECURITY INVOKER;
|
||||
source include/kill_query.inc;
|
||||
source include/diff_master_slave.inc;
|
||||
DROP FUNCTION IF EXISTS f1;
|
||||
source include/kill_query.inc;
|
||||
source include/diff_master_slave.inc;
|
||||
DROP FUNCTION IF EXISTS f2;
|
||||
source include/kill_query.inc;
|
||||
source include/diff_master_slave.inc;
|
||||
CREATE PROCEDURE p2 (OUT rows INT)
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO rows FROM t2;
|
||||
END;
|
||||
//
|
||||
source include/kill_query.inc;
|
||||
source include/diff_master_slave.inc;
|
||||
ALTER PROCEDURE p1 SQL SECURITY INVOKER COMMENT 'return rows of table t1';
|
||||
source include/kill_query.inc;
|
||||
source include/diff_master_slave.inc;
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
source include/kill_query.inc;
|
||||
source include/diff_master_slave.inc;
|
||||
DROP PROCEDURE IF EXISTS p2;
|
||||
source include/kill_query.inc;
|
||||
source include/diff_master_slave.inc;
|
||||
CREATE TABLE t2 (b int);
|
||||
source include/kill_query.inc;
|
||||
source include/diff_master_slave.inc;
|
||||
ALTER TABLE t1 ADD (d int);
|
||||
source include/kill_query.inc;
|
||||
source include/diff_master_slave.inc;
|
||||
RENAME TABLE t3 TO t4;
|
||||
source include/kill_query.inc;
|
||||
source include/diff_master_slave.inc;
|
||||
CREATE INDEX i2 on t1 (a);
|
||||
source include/kill_query.inc;
|
||||
source include/diff_master_slave.inc;
|
||||
DROP INDEX i1 on t1;
|
||||
source include/kill_query.inc;
|
||||
source include/diff_master_slave.inc;
|
||||
CREATE TRIGGER tr2 BEFORE INSERT ON t4
|
||||
FOR EACH ROW BEGIN
|
||||
DELETE FROM t1 WHERE a=NEW.a;
|
||||
END;
|
||||
//
|
||||
source include/kill_query.inc;
|
||||
source include/diff_master_slave.inc;
|
||||
DROP TRIGGER tr1;
|
||||
source include/kill_query.inc;
|
||||
source include/diff_master_slave.inc;
|
||||
DROP TRIGGER IF EXISTS tr2;
|
||||
source include/kill_query.inc;
|
||||
source include/diff_master_slave.inc;
|
||||
CREATE VIEW v2 AS SELECT a FROM t1 WHERE a > 100;
|
||||
source include/kill_query.inc;
|
||||
source include/diff_master_slave.inc;
|
||||
DROP VIEW v1;
|
||||
source include/kill_query.inc;
|
||||
source include/diff_master_slave.inc;
|
||||
DROP VIEW IF EXISTS v2;
|
||||
source include/kill_query.inc;
|
||||
source include/diff_master_slave.inc;
|
||||
DROP TABLE t1;
|
||||
source include/kill_query.inc;
|
||||
source include/diff_master_slave.inc;
|
||||
DROP TABLE IF EXISTS t2;
|
||||
source include/kill_query.inc;
|
||||
source include/diff_master_slave.inc;
|
||||
DROP DATABASE IF EXISTS d1;
|
||||
DROP DATABASE IF EXISTS d2;
|
||||
DROP DATABASE IF EXISTS d3;
|
||||
DROP DATABASE IF EXISTS d4;
|
||||
DROP FUNCTION IF EXISTS f1;
|
||||
DROP FUNCTION IF EXISTS f2;
|
||||
DROP FUNCTION IF EXISTS f3;
|
||||
DROP FUNCTION IF EXISTS f4;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TABLE IF EXISTS t2;
|
||||
DROP TABLE IF EXISTS t3;
|
||||
DROP TABLE IF EXISTS t4;
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
DROP PROCEDURE IF EXISTS p2;
|
||||
DROP PROCEDURE IF EXISTS p3;
|
||||
DROP PROCEDURE IF EXISTS p4;
|
28
mysql-test/r/rpl_name_const.result
Normal file
28
mysql-test/r/rpl_name_const.result
Normal file
@ -0,0 +1,28 @@
|
||||
stop slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
==== Initialize ====
|
||||
[on master]
|
||||
create table t1 (id int);
|
||||
==== create a procedure that has a column aliase in a subquery ====
|
||||
drop procedure if exists test_procedure;
|
||||
create procedure test_procedure(_id int)
|
||||
begin
|
||||
insert into t1 (id)
|
||||
select a.id
|
||||
from
|
||||
( select _id as id ) a;
|
||||
end;$$
|
||||
==== enable the binary log, then call the procedure ====
|
||||
call test_procedure(1234);
|
||||
[on slave]
|
||||
select * from t1 order by id;
|
||||
id
|
||||
1234
|
||||
==== Clean up ====
|
||||
[on master]
|
||||
drop table t1;
|
||||
drop procedure test_procedure;
|
@ -483,6 +483,7 @@ master-bin.000001 # Query 1 # use `mysqltest1`; drop procedure foo
|
||||
master-bin.000001 # Query 1 # use `mysqltest1`; drop function fn1
|
||||
master-bin.000001 # Query 1 # drop database mysqltest1
|
||||
master-bin.000001 # Query 1 # drop user "zedjzlcsjhd"@127.0.0.1
|
||||
master-bin.000001 # Query 1 # use `test`; drop function if exists f1
|
||||
master-bin.000001 # Query 1 # use `test`; CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
|
||||
READS SQL DATA
|
||||
begin
|
||||
@ -498,12 +499,15 @@ master-bin.000001 # Query 1 # use `test`; create table t1 (a int)
|
||||
master-bin.000001 # Query 1 # use `test`; insert into t1 (a) values (f1())
|
||||
master-bin.000001 # Query 1 # use `test`; drop view v1
|
||||
master-bin.000001 # Query 1 # use `test`; drop function f1
|
||||
master-bin.000001 # Query 1 # use `test`; DROP PROCEDURE IF EXISTS p1
|
||||
master-bin.000001 # Query 1 # use `test`; DROP TABLE IF EXISTS t1
|
||||
master-bin.000001 # Query 1 # use `test`; CREATE TABLE t1(col VARCHAR(10))
|
||||
master-bin.000001 # Query 1 # use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`(arg VARCHAR(10))
|
||||
INSERT INTO t1 VALUES(arg)
|
||||
master-bin.000001 # Query 1 # use `test`; INSERT INTO t1 VALUES( NAME_CONST('arg',_latin1'test' COLLATE 'latin1_swedish_ci'))
|
||||
master-bin.000001 # Query 1 # use `test`; DROP PROCEDURE p1
|
||||
master-bin.000001 # Query 1 # use `test`; DROP PROCEDURE IF EXISTS p1
|
||||
master-bin.000001 # Query 1 # use `test`; DROP FUNCTION IF EXISTS f1
|
||||
master-bin.000001 # Query 1 # use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
|
||||
SET @a = 1
|
||||
master-bin.000001 # Query 1 # use `test`; CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
|
||||
@ -804,6 +808,9 @@ drop user "zedjzlcsjhd"@127.0.0.1
|
||||
/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=t/*!*/;
|
||||
drop function if exists f1
|
||||
/*!*/;
|
||||
SET TIMESTAMP=t/*!*/;
|
||||
CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
|
||||
READS SQL DATA
|
||||
begin
|
||||
@ -831,6 +838,9 @@ SET TIMESTAMP=t/*!*/;
|
||||
drop function f1
|
||||
/*!*/;
|
||||
SET TIMESTAMP=t/*!*/;
|
||||
DROP PROCEDURE IF EXISTS p1
|
||||
/*!*/;
|
||||
SET TIMESTAMP=t/*!*/;
|
||||
DROP TABLE IF EXISTS t1
|
||||
/*!*/;
|
||||
SET TIMESTAMP=t/*!*/;
|
||||
@ -847,6 +857,12 @@ SET TIMESTAMP=t/*!*/;
|
||||
DROP PROCEDURE p1
|
||||
/*!*/;
|
||||
SET TIMESTAMP=t/*!*/;
|
||||
DROP PROCEDURE IF EXISTS p1
|
||||
/*!*/;
|
||||
SET TIMESTAMP=t/*!*/;
|
||||
DROP FUNCTION IF EXISTS f1
|
||||
/*!*/;
|
||||
SET TIMESTAMP=t/*!*/;
|
||||
CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
|
||||
SET @a = 1
|
||||
/*!*/;
|
||||
|
@ -4388,4 +4388,17 @@ f3 f4 count
|
||||
1 abc 1
|
||||
1 def 2
|
||||
drop table t1, t2, t3;
|
||||
CREATE TABLE t1 (a INT KEY, b INT);
|
||||
INSERT INTO t1 VALUES (1,1), (2,2), (3,3), (4,4);
|
||||
EXPLAIN EXTENDED SELECT a, b FROM t1 WHERE a > 1 AND a = b LIMIT 2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 3 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where ((`test`.`t1`.`b` = `test`.`t1`.`a`) and (`test`.`t1`.`a` > 1)) limit 2
|
||||
EXPLAIN EXTENDED SELECT a, b FROM t1 WHERE a > 1 AND b = a LIMIT 2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 3 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where ((`test`.`t1`.`a` = `test`.`t1`.`b`) and (`test`.`t1`.`a` > 1)) limit 2
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
|
@ -2152,4 +2152,11 @@ Warnings:
|
||||
Warning 1052 Column 'kundentyp' in group statement is ambiguous
|
||||
drop table t1;
|
||||
mysqld is alive
|
||||
SET @max_allowed_packet= @@global.max_allowed_packet;
|
||||
SET @net_buffer_length= @@global.net_buffer_length;
|
||||
SET GLOBAL max_allowed_packet= 1024;
|
||||
SET GLOBAL net_buffer_length= 1024;
|
||||
ERROR 1153 (08S01) at line 1: Got a packet bigger than 'max_allowed_packet' bytes
|
||||
SET GLOBAL max_allowed_packet= @max_allowed_packet;
|
||||
SET GLOBAL net_buffer_length= @net_buffer_length;
|
||||
End of 5.0 tests.
|
||||
|
@ -4390,9 +4390,9 @@ drop procedure if exists bug13012|
|
||||
create procedure bug13012()
|
||||
BEGIN
|
||||
REPAIR TABLE t1;
|
||||
BACKUP TABLE t1 to '../tmp';
|
||||
BACKUP TABLE t1 to '<MYSQLTEST_VARDIR>/tmp/';
|
||||
DROP TABLE t1;
|
||||
RESTORE TABLE t1 FROM '../tmp';
|
||||
RESTORE TABLE t1 FROM '<MYSQLTEST_VARDIR>/tmp/';
|
||||
END|
|
||||
call bug13012()|
|
||||
Table Op Msg_type Msg_text
|
||||
|
@ -1,3 +1,5 @@
|
||||
drop function if exists bug23333|
|
||||
drop table if exists t1,t2|
|
||||
CREATE TABLE t1 (a int NOT NULL auto_increment primary key) ENGINE=MyISAM|
|
||||
CREATE TABLE t2 (a int NOT NULL auto_increment, b int, PRIMARY KEY (a)) ENGINE=InnoDB|
|
||||
insert into t2 values (1,1)|
|
||||
@ -20,4 +22,5 @@ master-bin.000001 # Query 1 # #
|
||||
select count(*),@a from t1 /* must be 1,1 */|
|
||||
count(*) @a
|
||||
1 1
|
||||
drop table t1, t2|
|
||||
drop table t1,t2;
|
||||
drop function if exists bug23333;
|
||||
|
@ -1961,4 +1961,24 @@ select * from t2;
|
||||
s1
|
||||
drop table t1;
|
||||
drop temporary table t2;
|
||||
#------------------------------------------------------------------------
|
||||
# Bug#39953 Triggers are not working properly with multi table updates
|
||||
#------------------------------------------------------------------------
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TRIGGER IF EXISTS t_insert;
|
||||
DROP TABLE IF EXISTS t2;
|
||||
CREATE TABLE t1 (a int, date_insert timestamp, PRIMARY KEY (a));
|
||||
INSERT INTO t1 (a) VALUES (2),(5);
|
||||
CREATE TABLE t2 (a int, b int, PRIMARY KEY (a));
|
||||
CREATE TRIGGER t_insert AFTER INSERT ON t2 FOR EACH ROW BEGIN UPDATE t1,t2 SET
|
||||
date_insert=NOW() WHERE t1.a=t2.b AND t2.a=NEW.a; END |
|
||||
INSERT INTO t2 (a,b) VALUES (1,2);
|
||||
DROP TRIGGER t_insert;
|
||||
CREATE TRIGGER t_insert AFTER INSERT ON t2 FOR EACH ROW BEGIN UPDATE t1,t2 SET
|
||||
date_insert=NOW(),b=b+1 WHERE t1.a=t2.b AND t2.a=NEW.a; END |
|
||||
INSERT INTO t2 (a,b) VALUES (3,5);
|
||||
ERROR HY000: Can't update table 't2' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
|
||||
DROP TABLE t1;
|
||||
DROP TRIGGER t_insert;
|
||||
DROP TABLE t2;
|
||||
End of 5.0 tests
|
||||
|
@ -1506,4 +1506,16 @@ DESC t6;
|
||||
Field Type Null Key Default Extra
|
||||
NULL int(11) YES NULL
|
||||
DROP TABLE t1, t2, t3, t4, t5, t6;
|
||||
CREATE TABLE t1 (f FLOAT(9,6));
|
||||
CREATE TABLE t2 AS SELECT f FROM t1 UNION SELECT f FROM t1;
|
||||
SHOW FIELDS FROM t2;
|
||||
Field Type Null Key Default Extra
|
||||
f float(9,6) YES NULL
|
||||
DROP TABLE t1, t2;
|
||||
CREATE TABLE t1(d DOUBLE(9,6));
|
||||
CREATE TABLE t2 AS SELECT d FROM t1 UNION SELECT d FROM t1;
|
||||
SHOW FIELDS FROM t2;
|
||||
Field Type Null Key Default Extra
|
||||
d double(9,6) YES NULL
|
||||
DROP TABLE t1, t2;
|
||||
End of 5.0 tests
|
||||
|
@ -78,6 +78,7 @@ alter table t1 modify a varchar(255);
|
||||
select length(a) from t1;
|
||||
length(a)
|
||||
6
|
||||
drop table t1;
|
||||
select 0b01000001;
|
||||
0b01000001
|
||||
A
|
||||
|
@ -1,24 +1,20 @@
|
||||
set session transaction_prealloc_size=1024*1024*1024*1;
|
||||
show processlist;
|
||||
SET SESSION transaction_prealloc_size=1024*1024*1024*1;
|
||||
SHOW PROCESSLIST;
|
||||
Id User Host db Command Time State Info
|
||||
6 root localhost test Query 0 NULL show processlist
|
||||
set session transaction_prealloc_size=1024*1024*1024*2;
|
||||
show processlist;
|
||||
<Id> root localhost test Query <Time> NULL SHOW PROCESSLIST
|
||||
SET SESSION transaction_prealloc_size=1024*1024*1024*2;
|
||||
SHOW PROCESSLIST;
|
||||
Id User Host db Command Time State Info
|
||||
6 root localhost test Query 1 NULL show processlist
|
||||
set session transaction_prealloc_size=1024*1024*1024*3;
|
||||
show processlist;
|
||||
<Id> root localhost test Query <Time> NULL SHOW PROCESSLIST
|
||||
SET SESSION transaction_prealloc_size=1024*1024*1024*3;
|
||||
SHOW PROCESSLIST;
|
||||
Id User Host db Command Time State Info
|
||||
6 root localhost test Query 0 NULL show processlist
|
||||
set session transaction_prealloc_size=1024*1024*1024*4;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect transaction_prealloc_size value: '4294967296'
|
||||
show processlist;
|
||||
<Id> root localhost test Query <Time> NULL SHOW PROCESSLIST
|
||||
SET SESSION transaction_prealloc_size=1024*1024*1024*4;
|
||||
SHOW PROCESSLIST;
|
||||
Id User Host db Command Time State Info
|
||||
6 root localhost test Query 0 NULL show processlist
|
||||
set session transaction_prealloc_size=1024*1024*1024*5;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect transaction_prealloc_size value: '5368709120'
|
||||
show processlist;
|
||||
<Id> root localhost test Query <Time> NULL SHOW PROCESSLIST
|
||||
SET SESSION transaction_prealloc_size=1024*1024*1024*5;
|
||||
SHOW PROCESSLIST;
|
||||
Id User Host db Command Time State Info
|
||||
6 root localhost test Query 0 NULL show processlist
|
||||
<Id> root localhost test Query <Time> NULL SHOW PROCESSLIST
|
||||
|
@ -86,6 +86,15 @@ let $check_std_csets= 1;
|
||||
let $check_ucs2_csets= 1;
|
||||
let $check_utf8_csets= 1;
|
||||
|
||||
# Bug#32784: Timeout in test "innodb_charset": InnoDB much slower
|
||||
# than other handlers
|
||||
# NOTE: We turn autocommit off to improve the performance of the innodb variant
|
||||
# of this test. Per Innobase's recommendation.
|
||||
|
||||
--disable_query_log
|
||||
SET autocommit=0;
|
||||
--enable_query_log
|
||||
|
||||
#
|
||||
# Check all charsets/collation combinations
|
||||
#
|
||||
|
@ -1,4 +1,4 @@
|
||||
#
|
||||
# Bug #958 a big table without indices and select with group by doesnt work
|
||||
# this is a test for error 1032 in count(distinct) + group by, introduced in
|
||||
# mysql-4.1
|
||||
#
|
||||
@ -21,27 +21,16 @@ while ($1)
|
||||
INSERT INTO t1 (id, grp, id_rev) VALUES (@id, @grp, @id_rev);
|
||||
dec $1;
|
||||
}
|
||||
set @@read_buffer_size=2*1024*1024;
|
||||
CREATE TABLE t2 SELECT * FROM t1;
|
||||
INSERT INTO t1 (id, grp, id_rev) SELECT id, grp, id_rev FROM t2;
|
||||
INSERT INTO t2 (id, grp, id_rev) SELECT id, grp, id_rev FROM t1;
|
||||
INSERT INTO t1 (id, grp, id_rev) SELECT id, grp, id_rev FROM t2;
|
||||
INSERT INTO t2 (id, grp, id_rev) SELECT id, grp, id_rev FROM t1;
|
||||
INSERT INTO t1 (id, grp, id_rev) SELECT id, grp, id_rev FROM t2;
|
||||
INSERT INTO t2 (id, grp, id_rev) SELECT id, grp, id_rev FROM t1;
|
||||
INSERT INTO t1 (id, grp, id_rev) SELECT id, grp, id_rev FROM t2;
|
||||
INSERT INTO t2 (id, grp, id_rev) SELECT id, grp, id_rev FROM t1;
|
||||
INSERT INTO t1 (id, grp, id_rev) SELECT id, grp, id_rev FROM t2;
|
||||
INSERT INTO t2 (id, grp, id_rev) SELECT id, grp, id_rev FROM t1;
|
||||
INSERT INTO t1 (id, grp, id_rev) SELECT id, grp, id_rev FROM t2;
|
||||
INSERT INTO t2 (id, grp, id_rev) SELECT id, grp, id_rev FROM t1;
|
||||
INSERT INTO t1 (id, grp, id_rev) SELECT id, grp, id_rev FROM t2;
|
||||
INSERT INTO t2 (id, grp, id_rev) SELECT id, grp, id_rev FROM t1;
|
||||
INSERT INTO t1 (id, grp, id_rev) SELECT id, grp, id_rev FROM t2;
|
||||
INSERT INTO t2 (id, grp, id_rev) SELECT id, grp, id_rev FROM t1;
|
||||
INSERT INTO t1 (id, grp, id_rev) SELECT id, grp, id_rev FROM t2;
|
||||
INSERT INTO t2 (id, grp, id_rev) SELECT id, grp, id_rev FROM t1;
|
||||
DROP TABLE t2;
|
||||
|
||||
# We increase the size of t1 here.
|
||||
SET @orig_myisam_sort_buffer_size = @@session.myisam_sort_buffer_size;
|
||||
SET session myisam_sort_buffer_size=20000000;
|
||||
INSERT INTO t1
|
||||
SELECT A.id, A.grp, A.id_rev
|
||||
FROM
|
||||
t1 A,
|
||||
(SELECT * FROM t1 B LIMIT 100) B,
|
||||
(SELECT * FROM t1 Z LIMIT 42) Z;
|
||||
--enable_query_log
|
||||
|
||||
SELECT COUNT(*) FROM t1;
|
||||
@ -49,12 +38,12 @@ SELECT COUNT(*) FROM t1;
|
||||
# As t1 contains random numbers, results are different from test to test.
|
||||
# That's okay, because we test only that select doesn't yield an
|
||||
# error. Note, that --disable_result_log doesn't suppress error output.
|
||||
|
||||
--disable_result_log
|
||||
SELECT COUNT(DISTINCT id) FROM t1 GROUP BY grp;
|
||||
--enable_result_log
|
||||
|
||||
--echo # Begin cleanup
|
||||
SET session myisam_sort_buffer_size = @orig_myisam_sort_buffer_size;
|
||||
DROP TABLE t1;
|
||||
|
||||
set @@read_buffer_size=default;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
@ -9,3 +9,31 @@
|
||||
select des_encrypt('hello');
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
--echo #
|
||||
--echo # Bug #11643: des_encrypt() causes server to die
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (des VARBINARY(200) NOT NULL DEFAULT '') ENGINE=MyISAM;
|
||||
|
||||
INSERT INTO t1 VALUES ('1234'), ('12345'), ('123456'), ('1234567');
|
||||
|
||||
UPDATE t1 SET des=DES_ENCRYPT('1234');
|
||||
|
||||
SELECT LENGTH(des) FROM t1;
|
||||
SELECT DES_DECRYPT(des) FROM t1;
|
||||
|
||||
SELECT
|
||||
LENGTH(DES_ENCRYPT('1234')),
|
||||
LENGTH(DES_ENCRYPT('12345')),
|
||||
LENGTH(DES_ENCRYPT('123456')),
|
||||
LENGTH(DES_ENCRYPT('1234567'));
|
||||
SELECT
|
||||
DES_DECRYPT(DES_ENCRYPT('1234')),
|
||||
DES_DECRYPT(DES_ENCRYPT('12345')),
|
||||
DES_DECRYPT(DES_ENCRYPT('123456')),
|
||||
DES_DECRYPT(DES_ENCRYPT('1234567'));
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--Echo End of 5.0 tests
|
||||
|
@ -955,5 +955,45 @@ SET SQL_MODE=default;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
#
|
||||
# Bug #37348: Crash in or immediately after JOIN::make_sum_func_list
|
||||
#
|
||||
|
||||
CREATE TABLE derived1 (a bigint(21));
|
||||
INSERT INTO derived1 VALUES (2);
|
||||
|
||||
|
||||
CREATE TABLE D (
|
||||
pk int(11) NOT NULL AUTO_INCREMENT,
|
||||
int_nokey int(11) DEFAULT NULL,
|
||||
int_key int(11) DEFAULT NULL,
|
||||
filler blob,
|
||||
PRIMARY KEY (pk),
|
||||
KEY int_key (int_key)
|
||||
);
|
||||
|
||||
INSERT INTO D VALUES
|
||||
(39,40,4,repeat(' X', 42)),
|
||||
(43,56,4,repeat(' X', 42)),
|
||||
(47,12,4,repeat(' X', 42)),
|
||||
(71,28,4,repeat(' X', 42)),
|
||||
(76,54,4,repeat(' X', 42)),
|
||||
(83,45,4,repeat(' X', 42)),
|
||||
(105,53,12,NULL);
|
||||
|
||||
SELECT
|
||||
(SELECT COUNT( int_nokey )
|
||||
FROM derived1 AS X
|
||||
WHERE
|
||||
X.int_nokey < 61
|
||||
GROUP BY pk
|
||||
LIMIT 1)
|
||||
FROM D AS X
|
||||
WHERE X.int_key < 13
|
||||
GROUP BY int_nokey LIMIT 1;
|
||||
|
||||
DROP TABLE derived1;
|
||||
DROP TABLE D;
|
||||
|
||||
###
|
||||
--echo End of 5.0 tests
|
||||
|
@ -445,5 +445,10 @@ SELECT * FROM t1 WHERE a = NAME_CONST('reportDate',
|
||||
_binary'2009-01-09' COLLATE 'binary');
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug#35515: Aliases of variables in binary log are ignored with NAME_CONST
|
||||
#
|
||||
select NAME_CONST('_id',1234) as id;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
|
@ -41,7 +41,7 @@ while ($1)
|
||||
let $2=10;
|
||||
while ($2)
|
||||
{
|
||||
eval INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point($1 * 10 - 9, $2 * 10 - 9), Point($1 * 10, $2 * 10))));
|
||||
eval INSERT INTO t2 (g) VALUES (LineString(Point($1 * 10 - 9, $2 * 10 - 9), Point($1 * 10, $2 * 10)));
|
||||
dec $2;
|
||||
}
|
||||
dec $1;
|
||||
@ -61,7 +61,7 @@ while ($1)
|
||||
let $2=10;
|
||||
while ($2)
|
||||
{
|
||||
eval DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point($1 * 10 - 9, $2 * 10 - 9), Point($1 * 10, $2 * 10)))));
|
||||
eval DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(Point($1 * 10 - 9, $2 * 10 - 9), Point($1 * 10, $2 * 10))));
|
||||
SELECT count(*) FROM t2;
|
||||
dec $2;
|
||||
}
|
||||
@ -235,11 +235,11 @@ DROP TABLE t1;
|
||||
# Bug #21888: Query on GEOMETRY field using PointFromWKB() results in lost connection
|
||||
#
|
||||
CREATE TABLE t1 (foo GEOMETRY NOT NULL, SPATIAL INDEX(foo) );
|
||||
INSERT INTO t1 (foo) VALUES (PointFromWKB(POINT(1,1)));
|
||||
INSERT INTO t1 (foo) VALUES (PointFromWKB(POINT(1,0)));
|
||||
INSERT INTO t1 (foo) VALUES (PointFromWKB(POINT(0,1)));
|
||||
INSERT INTO t1 (foo) VALUES (PointFromWKB(POINT(0,0)));
|
||||
SELECT 1 FROM t1 WHERE foo != PointFromWKB(POINT(0,0));
|
||||
INSERT INTO t1 (foo) VALUES (POINT(1,1));
|
||||
INSERT INTO t1 (foo) VALUES (POINT(1,0));
|
||||
INSERT INTO t1 (foo) VALUES (POINT(0,1));
|
||||
INSERT INTO t1 (foo) VALUES (POINT(0,0));
|
||||
SELECT 1 FROM t1 WHERE foo != POINT(0,0);
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
@ -802,35 +802,35 @@ DROP TABLE t1;
|
||||
#
|
||||
|
||||
create table t1 (a geometry not null, spatial index(a));
|
||||
insert into t1 values (PointFromWKB(POINT(1.1517219314031e+164, 131072)));
|
||||
insert into t1 values (PointFromWKB(POINT(9.1248812352444e+192, 2.9740338169556e+284)));
|
||||
insert into t1 values (PointFromWKB(POINT(4.7783097267365e-299, -0)));
|
||||
insert into t1 values (PointFromWKB(POINT(1.49166814624e-154, 2.0880974297595e-53)));
|
||||
insert into t1 values (PointFromWKB(POINT(4.0917382598702e+149, 1.2024538023802e+111)));
|
||||
insert into t1 values (PointFromWKB(POINT(2.0349165139404e+236, 2.9993936277913e-241)));
|
||||
insert into t1 values (PointFromWKB(POINT(2.5243548967072e-29, 1.2024538023802e+111)));
|
||||
insert into t1 values (PointFromWKB(POINT(0, 6.9835074892995e-251)));
|
||||
insert into t1 values (PointFromWKB(POINT(2.0880974297595e-53, 3.1050361846014e+231)));
|
||||
insert into t1 values (PointFromWKB(POINT(2.8728483499323e-188, 2.4600631144627e+260)));
|
||||
insert into t1 values (PointFromWKB(POINT(3.0517578125e-05, 2.0349165139404e+236)));
|
||||
insert into t1 values (PointFromWKB(POINT(1.1517219314031e+164, 1.1818212630766e-125)));
|
||||
insert into t1 values (PointFromWKB(POINT(2.481040258324e-265, 5.7766220027675e-275)));
|
||||
insert into t1 values (PointFromWKB(POINT(2.0880974297595e-53, 2.5243548967072e-29)));
|
||||
insert into t1 values (PointFromWKB(POINT(5.7766220027675e-275, 9.9464647281957e+86)));
|
||||
insert into t1 values (PointFromWKB(POINT(2.2181357552967e+130, 3.7857669957337e-270)));
|
||||
insert into t1 values (PointFromWKB(POINT(4.5767114681874e-246, 3.6893488147419e+19)));
|
||||
insert into t1 values (PointFromWKB(POINT(4.5767114681874e-246, 3.7537584144024e+255)));
|
||||
insert into t1 values (PointFromWKB(POINT(3.7857669957337e-270, 1.8033161362863e-130)));
|
||||
insert into t1 values (PointFromWKB(POINT(0, 5.8774717541114e-39)));
|
||||
insert into t1 values (PointFromWKB(POINT(1.1517219314031e+164, 2.2761049594727e-159)));
|
||||
insert into t1 values (PointFromWKB(POINT(6.243497100632e+144, 3.7857669957337e-270)));
|
||||
insert into t1 values (PointFromWKB(POINT(3.7857669957337e-270, 2.6355494858076e-82)));
|
||||
insert into t1 values (PointFromWKB(POINT(2.0349165139404e+236, 3.8518598887745e-34)));
|
||||
insert into t1 values (PointFromWKB(POINT(4.6566128730774e-10, 2.0880974297595e-53)));
|
||||
insert into t1 values (PointFromWKB(POINT(2.0880974297595e-53, 1.8827498946116e-183)));
|
||||
insert into t1 values (PointFromWKB(POINT(1.8033161362863e-130, 9.1248812352444e+192)));
|
||||
insert into t1 values (PointFromWKB(POINT(4.7783097267365e-299, 2.2761049594727e-159)));
|
||||
insert into t1 values (PointFromWKB(POINT(1.94906280228e+289, 1.2338789709327e-178)));
|
||||
insert into t1 values (POINT(1.1517219314031e+164, 131072));
|
||||
insert into t1 values (POINT(9.1248812352444e+192, 2.9740338169556e+284));
|
||||
insert into t1 values (POINT(4.7783097267365e-299, -0));
|
||||
insert into t1 values (POINT(1.49166814624e-154, 2.0880974297595e-53));
|
||||
insert into t1 values (POINT(4.0917382598702e+149, 1.2024538023802e+111));
|
||||
insert into t1 values (POINT(2.0349165139404e+236, 2.9993936277913e-241));
|
||||
insert into t1 values (POINT(2.5243548967072e-29, 1.2024538023802e+111));
|
||||
insert into t1 values (POINT(0, 6.9835074892995e-251));
|
||||
insert into t1 values (POINT(2.0880974297595e-53, 3.1050361846014e+231));
|
||||
insert into t1 values (POINT(2.8728483499323e-188, 2.4600631144627e+260));
|
||||
insert into t1 values (POINT(3.0517578125e-05, 2.0349165139404e+236));
|
||||
insert into t1 values (POINT(1.1517219314031e+164, 1.1818212630766e-125));
|
||||
insert into t1 values (POINT(2.481040258324e-265, 5.7766220027675e-275));
|
||||
insert into t1 values (POINT(2.0880974297595e-53, 2.5243548967072e-29));
|
||||
insert into t1 values (POINT(5.7766220027675e-275, 9.9464647281957e+86));
|
||||
insert into t1 values (POINT(2.2181357552967e+130, 3.7857669957337e-270));
|
||||
insert into t1 values (POINT(4.5767114681874e-246, 3.6893488147419e+19));
|
||||
insert into t1 values (POINT(4.5767114681874e-246, 3.7537584144024e+255));
|
||||
insert into t1 values (POINT(3.7857669957337e-270, 1.8033161362863e-130));
|
||||
insert into t1 values (POINT(0, 5.8774717541114e-39));
|
||||
insert into t1 values (POINT(1.1517219314031e+164, 2.2761049594727e-159));
|
||||
insert into t1 values (POINT(6.243497100632e+144, 3.7857669957337e-270));
|
||||
insert into t1 values (POINT(3.7857669957337e-270, 2.6355494858076e-82));
|
||||
insert into t1 values (POINT(2.0349165139404e+236, 3.8518598887745e-34));
|
||||
insert into t1 values (POINT(4.6566128730774e-10, 2.0880974297595e-53));
|
||||
insert into t1 values (POINT(2.0880974297595e-53, 1.8827498946116e-183));
|
||||
insert into t1 values (POINT(1.8033161362863e-130, 9.1248812352444e+192));
|
||||
insert into t1 values (POINT(4.7783097267365e-299, 2.2761049594727e-159));
|
||||
insert into t1 values (POINT(1.94906280228e+289, 1.2338789709327e-178));
|
||||
drop table t1;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
@ -36,32 +36,32 @@ INSERT INTO gis_point VALUES
|
||||
INSERT INTO gis_line VALUES
|
||||
(105, LineFromText('LINESTRING(0 0,0 10,10 0)')),
|
||||
(106, LineStringFromText('LINESTRING(10 10,20 10,20 20,10 20,10 10)')),
|
||||
(107, LineStringFromWKB(LineString(Point(10, 10), Point(40, 10))));
|
||||
(107, LineStringFromWKB(AsWKB(LineString(Point(10, 10), Point(40, 10)))));
|
||||
|
||||
INSERT INTO gis_polygon VALUES
|
||||
(108, PolygonFromText('POLYGON((10 10,20 10,20 20,10 20,10 10))')),
|
||||
(109, PolyFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')),
|
||||
(110, PolyFromWKB(Polygon(LineString(Point(0, 0), Point(30, 0), Point(30, 30), Point(0, 0)))));
|
||||
(110, PolyFromWKB(AsWKB(Polygon(LineString(Point(0, 0), Point(30, 0), Point(30, 30), Point(0, 0))))));
|
||||
|
||||
INSERT INTO gis_multi_point VALUES
|
||||
(111, MultiPointFromText('MULTIPOINT(0 0,10 10,10 20,20 20)')),
|
||||
(112, MPointFromText('MULTIPOINT(1 1,11 11,11 21,21 21)')),
|
||||
(113, MPointFromWKB(MultiPoint(Point(3, 6), Point(4, 10))));
|
||||
(113, MPointFromWKB(AsWKB(MultiPoint(Point(3, 6), Point(4, 10)))));
|
||||
|
||||
INSERT INTO gis_multi_line VALUES
|
||||
(114, MultiLineStringFromText('MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))')),
|
||||
(115, MLineFromText('MULTILINESTRING((10 48,10 21,10 0))')),
|
||||
(116, MLineFromWKB(MultiLineString(LineString(Point(1, 2), Point(3, 5)), LineString(Point(2, 5), Point(5, 8), Point(21, 7)))));
|
||||
(116, MLineFromWKB(AsWKB(MultiLineString(LineString(Point(1, 2), Point(3, 5)), LineString(Point(2, 5), Point(5, 8), Point(21, 7))))));
|
||||
|
||||
|
||||
INSERT INTO gis_multi_polygon VALUES
|
||||
(117, MultiPolygonFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))')),
|
||||
(118, MPolyFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))')),
|
||||
(119, MPolyFromWKB(MultiPolygon(Polygon(LineString(Point(0, 3), Point(3, 3), Point(3, 0), Point(0, 3))))));
|
||||
(119, MPolyFromWKB(AsWKB(MultiPolygon(Polygon(LineString(Point(0, 3), Point(3, 3), Point(3, 0), Point(0, 3)))))));
|
||||
|
||||
INSERT INTO gis_geometrycollection VALUES
|
||||
(120, GeomCollFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))')),
|
||||
(121, GeometryFromWKB(GeometryCollection(Point(44, 6), LineString(Point(3, 6), Point(7, 9)))));
|
||||
(121, GeometryFromWKB(AsWKB(GeometryCollection(Point(44, 6), LineString(Point(3, 6), Point(7, 9))))));
|
||||
|
||||
INSERT into gis_geometry SELECT * FROM gis_point;
|
||||
INSERT into gis_geometry SELECT * FROM gis_line;
|
||||
|
@ -460,3 +460,11 @@ handler t1_alias read a next;
|
||||
handler t1_alias READ a next where inexistent > 0;
|
||||
handler t1_alias close;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#44151 using handler commands on information_schema tables crashes server
|
||||
#
|
||||
USE information_schema;
|
||||
--error ER_WRONG_USAGE
|
||||
HANDLER COLUMNS OPEN;
|
||||
USE test;
|
||||
|
@ -13,6 +13,18 @@
|
||||
|
||||
-- source include/have_innodb.inc
|
||||
|
||||
# Save the original values of some variables in order to be able to
|
||||
# estimate how much they have changed during the tests. Previously this
|
||||
# test assumed that e.g. rows_deleted is 0 here and after deleting 23
|
||||
# rows it expected that rows_deleted will be 23. Now we do not make
|
||||
# assumptions about the values of the variables at the beginning, e.g.
|
||||
# rows_deleted should be 23 + "rows_deleted before the test". This allows
|
||||
# the test to be run multiple times without restarting the mysqld server.
|
||||
# See Bug#43309 Test main.innodb can't be run twice
|
||||
-- let $innodb_rows_deleted_orig = query_get_value(SHOW STATUS WHERE variable_name = 'innodb_rows_deleted', Value, 1)
|
||||
-- let $innodb_rows_inserted_orig = query_get_value(SHOW STATUS WHERE variable_name = 'innodb_rows_inserted', Value, 1)
|
||||
-- let $innodb_rows_updated_orig = query_get_value(SHOW STATUS WHERE variable_name = 'innodb_rows_updated', Value, 1)
|
||||
|
||||
#
|
||||
# Small basic test with ignore
|
||||
#
|
||||
@ -1344,9 +1356,14 @@ drop table t1;
|
||||
# uses previous ones(pages_created, rows_deleted, ...).
|
||||
show status like "Innodb_buffer_pool_pages_total";
|
||||
show status like "Innodb_page_size";
|
||||
show status like "Innodb_rows_deleted";
|
||||
show status like "Innodb_rows_inserted";
|
||||
show status like "Innodb_rows_updated";
|
||||
-- let $innodb_rows_deleted = query_get_value(SHOW STATUS WHERE variable_name = 'innodb_rows_deleted', Value, 1)
|
||||
-- let $innodb_rows_inserted = query_get_value(SHOW STATUS WHERE variable_name = 'innodb_rows_inserted', Value, 1)
|
||||
-- let $innodb_rows_updated = query_get_value(SHOW STATUS WHERE variable_name = 'innodb_rows_updated', Value, 1)
|
||||
-- disable_query_log
|
||||
-- eval SELECT $innodb_rows_deleted - $innodb_rows_deleted_orig AS innodb_rows_deleted
|
||||
-- eval SELECT $innodb_rows_inserted - $innodb_rows_inserted_orig AS innodb_rows_inserted
|
||||
-- eval SELECT $innodb_rows_updated - $innodb_rows_updated_orig AS innodb_rows_updated
|
||||
-- enable_query_log
|
||||
|
||||
# Test for row locks InnoDB status variables.
|
||||
show status like "Innodb_row_lock_waits";
|
||||
@ -1365,6 +1382,8 @@ set global innodb_sync_spin_loops=20;
|
||||
show variables like "innodb_sync_spin_loops";
|
||||
|
||||
# Test for innodb_thread_concurrency variable
|
||||
# save the original value so we can restore it at the end
|
||||
-- let $innodb_thread_concurrency_orig = query_get_value(SHOW VARIABLES WHERE variable_name = 'innodb_thread_concurrency', Value, 1)
|
||||
show variables like "innodb_thread_concurrency";
|
||||
set global innodb_thread_concurrency=1001;
|
||||
show variables like "innodb_thread_concurrency";
|
||||
@ -1372,6 +1391,10 @@ set global innodb_thread_concurrency=0;
|
||||
show variables like "innodb_thread_concurrency";
|
||||
set global innodb_thread_concurrency=16;
|
||||
show variables like "innodb_thread_concurrency";
|
||||
# restore the orginal value, this way the test can be run multiple times
|
||||
-- disable_query_log
|
||||
-- eval set global innodb_thread_concurrency = $innodb_thread_concurrency_orig
|
||||
-- enable_query_log
|
||||
|
||||
# Test for innodb_concurrency_tickets variable
|
||||
show variables like "innodb_concurrency_tickets";
|
||||
|
@ -1025,4 +1025,33 @@ CREATE INDEX i1 on t1 (a(3));
|
||||
SELECT * FROM t1 WHERE a = 'abcde';
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # BUG #26288: savepoint are not deleted on comit, if the transaction
|
||||
--echo # was otherwise empty
|
||||
--echo #
|
||||
BEGIN;
|
||||
SAVEPOINT s1;
|
||||
COMMIT;
|
||||
--error 1305
|
||||
RELEASE SAVEPOINT s1;
|
||||
|
||||
BEGIN;
|
||||
SAVEPOINT s2;
|
||||
COMMIT;
|
||||
--error 1305
|
||||
ROLLBACK TO SAVEPOINT s2;
|
||||
|
||||
BEGIN;
|
||||
SAVEPOINT s3;
|
||||
ROLLBACK;
|
||||
--error 1305
|
||||
RELEASE SAVEPOINT s3;
|
||||
|
||||
BEGIN;
|
||||
SAVEPOINT s4;
|
||||
ROLLBACK;
|
||||
--error 1305
|
||||
ROLLBACK TO SAVEPOINT s4;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -454,5 +454,14 @@ SELECT * FROM t2;
|
||||
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
#
|
||||
# Bug#43833 Simple INSERT crashes the server
|
||||
#
|
||||
CREATE TABLE t1(f1 FLOAT);
|
||||
INSERT INTO t1 VALUES (1.23);
|
||||
CREATE TABLE t2(f1 CHAR(1));
|
||||
INSERT INTO t2 SELECT f1 FROM t1;
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
--echo End of 5.0 tests.
|
||||
|
||||
|
@ -12,7 +12,7 @@ INSERT t1 VALUES (8,4,50) ON DUPLICATE KEY UPDATE c=c+1000;
|
||||
SELECT * FROM t1;
|
||||
INSERT t1 VALUES (1,4,60) ON DUPLICATE KEY UPDATE c=c+10000;
|
||||
SELECT * FROM t1;
|
||||
-- error 1062
|
||||
-- error ER_DUP_ENTRY
|
||||
INSERT t1 VALUES (1,9,70) ON DUPLICATE KEY UPDATE c=c+100000, b=4;
|
||||
SELECT * FROM t1;
|
||||
TRUNCATE TABLE t1;
|
||||
@ -63,7 +63,7 @@ INSERT t1 SELECT 8,4,50 FROM DUAL ON DUPLICATE KEY UPDATE c=c+1000;
|
||||
SELECT * FROM t1;
|
||||
INSERT t1 SELECT 1,4,60 FROM DUAL ON DUPLICATE KEY UPDATE c=c+10000;
|
||||
SELECT * FROM t1;
|
||||
-- error 1062
|
||||
-- error ER_DUP_ENTRY
|
||||
INSERT t1 SELECT 1,9,70 FROM DUAL ON DUPLICATE KEY UPDATE c=c+100000, b=4;
|
||||
SELECT * FROM t1;
|
||||
TRUNCATE TABLE t1;
|
||||
@ -76,7 +76,7 @@ INSERT t1 SELECT a,b,c FROM t2 WHERE d=1 ON DUPLICATE KEY UPDATE c=t1.c+100;
|
||||
SELECT * FROM t1;
|
||||
INSERT t1 SET a=5 ON DUPLICATE KEY UPDATE b=0;
|
||||
SELECT * FROM t1;
|
||||
--error 1052
|
||||
--error ER_NON_UNIQ_ERROR
|
||||
INSERT t1 SELECT a,b,c FROM t2 WHERE d=2 ON DUPLICATE KEY UPDATE c=c+VALUES(a);
|
||||
INSERT t1 SELECT a,b,c FROM t2 WHERE d=2 ON DUPLICATE KEY UPDATE c=t1.c+VALUES(t1.a);
|
||||
SELECT *, VALUES(a) FROM t1;
|
||||
@ -95,9 +95,9 @@ insert ignore into t1 select a from t1 as t2 on duplicate key update a=t1.a+1 ;
|
||||
select * from t1;
|
||||
insert into t1 select 1 on duplicate key update a=2;
|
||||
select * from t1;
|
||||
--error 1052
|
||||
--error ER_NON_UNIQ_ERROR
|
||||
insert into t1 select a from t1 on duplicate key update a=a+1 ;
|
||||
--error 1052
|
||||
--error ER_NON_UNIQ_ERROR
|
||||
insert ignore into t1 select a from t1 on duplicate key update a=t1.a+1 ;
|
||||
drop table t1;
|
||||
|
||||
@ -171,13 +171,13 @@ SET SQL_MODE = 'TRADITIONAL';
|
||||
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY, b INT NOT NULL);
|
||||
|
||||
--error 1364
|
||||
--error ER_NO_DEFAULT_FOR_FIELD
|
||||
INSERT INTO t1 (a) VALUES (1);
|
||||
|
||||
--error 1364
|
||||
--error ER_NO_DEFAULT_FOR_FIELD
|
||||
INSERT INTO t1 (a) VALUES (1) ON DUPLICATE KEY UPDATE a = b;
|
||||
|
||||
--error 1364
|
||||
--error ER_NO_DEFAULT_FOR_FIELD
|
||||
INSERT INTO t1 (a) VALUES (1) ON DUPLICATE KEY UPDATE b = b;
|
||||
|
||||
SELECT * FROM t1;
|
||||
@ -278,7 +278,7 @@ INSERT INTO t1 (id,c1) VALUES (1,10);
|
||||
SELECT * FROM t1;
|
||||
CREATE TABLE t2 (id INT, c1 INT);
|
||||
INSERT INTO t2 VALUES (1,NULL), (2,2);
|
||||
--error 1048
|
||||
--error ER_BAD_NULL_ERROR
|
||||
INSERT INTO t1 (id,c1) SELECT 1,NULL
|
||||
ON DUPLICATE KEY UPDATE c1=NULL;
|
||||
SELECT * FROM t1;
|
||||
@ -290,6 +290,7 @@ INSERT IGNORE INTO t1 (id,c1) SELECT * FROM t2
|
||||
SELECT * FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
|
||||
#
|
||||
# Bug#28904: INSERT .. ON DUPLICATE was silently updating rows when it
|
||||
|
@ -683,6 +683,134 @@ DROP TABLE t1;
|
||||
--disconnect locker
|
||||
--disconnect writer
|
||||
|
||||
#
|
||||
# Bug#43230: SELECT ... FOR UPDATE can hang with FLUSH TABLES WITH READ LOCK indefinitely
|
||||
#
|
||||
|
||||
connect (con1,localhost,root,,);
|
||||
connect (con2,localhost,root,,);
|
||||
connect (con3,localhost,root,,);
|
||||
connect (con4,localhost,root,,);
|
||||
connect (con5,localhost,root,,);
|
||||
|
||||
create table t1 (a int);
|
||||
create table t2 like t1;
|
||||
|
||||
connection con1;
|
||||
--echo # con1
|
||||
lock tables t1 write;
|
||||
connection con2;
|
||||
--echo # con2
|
||||
send flush tables with read lock;
|
||||
connection con5;
|
||||
--echo # con5
|
||||
let $show_statement= SHOW PROCESSLIST;
|
||||
let $field= State;
|
||||
let $condition= = 'Flushing tables';
|
||||
--source include/wait_show_condition.inc
|
||||
--echo # global read lock is taken
|
||||
connection con3;
|
||||
--echo # con3
|
||||
send select * from t2 for update;
|
||||
connection con5;
|
||||
let $show_statement= SHOW PROCESSLIST;
|
||||
let $field= State;
|
||||
let $condition= = 'Waiting for release of readlock';
|
||||
--source include/wait_show_condition.inc
|
||||
--echo # waiting for release of read lock
|
||||
connection con4;
|
||||
--echo # con4
|
||||
--echo # would hang and later cause a deadlock
|
||||
flush tables t2;
|
||||
connection con1;
|
||||
--echo # clean up
|
||||
unlock tables;
|
||||
connection con2;
|
||||
--reap
|
||||
unlock tables;
|
||||
connection con3;
|
||||
--reap
|
||||
connection default;
|
||||
disconnect con5;
|
||||
disconnect con4;
|
||||
disconnect con3;
|
||||
disconnect con2;
|
||||
disconnect con1;
|
||||
|
||||
drop table t1,t2;
|
||||
|
||||
--echo #
|
||||
--echo # Lightweight version:
|
||||
--echo # Ensure that the wait for a GRL is done before opening tables.
|
||||
--echo #
|
||||
|
||||
connect (con1,localhost,root,,);
|
||||
connect (con2,localhost,root,,);
|
||||
|
||||
create table t1 (a int);
|
||||
create table t2 like t1;
|
||||
|
||||
--echo #
|
||||
--echo # UPDATE
|
||||
--echo #
|
||||
|
||||
connection default;
|
||||
--echo # default
|
||||
flush tables with read lock;
|
||||
connection con1;
|
||||
--echo # con1
|
||||
send update t2 set a = 1;
|
||||
connection default;
|
||||
--echo # default
|
||||
let $show_statement= SHOW PROCESSLIST;
|
||||
let $field= State;
|
||||
let $condition= = 'Waiting for release of readlock';
|
||||
--source include/wait_show_condition.inc
|
||||
--echo # statement is waiting for release of read lock
|
||||
connection con2;
|
||||
--echo # con2
|
||||
flush table t2;
|
||||
connection default;
|
||||
--echo # default
|
||||
unlock tables;
|
||||
connection con1;
|
||||
--echo # con1
|
||||
--reap
|
||||
|
||||
--echo #
|
||||
--echo # LOCK TABLES .. WRITE
|
||||
--echo #
|
||||
|
||||
connection default;
|
||||
--echo # default
|
||||
flush tables with read lock;
|
||||
connection con1;
|
||||
--echo # con1
|
||||
send lock tables t2 write;
|
||||
connection default;
|
||||
--echo # default
|
||||
let $show_statement= SHOW PROCESSLIST;
|
||||
let $field= State;
|
||||
let $condition= = 'Waiting for release of readlock';
|
||||
--source include/wait_show_condition.inc
|
||||
--echo # statement is waiting for release of read lock
|
||||
connection con2;
|
||||
--echo # con2
|
||||
flush table t2;
|
||||
connection default;
|
||||
--echo # default
|
||||
unlock tables;
|
||||
connection con1;
|
||||
--echo # con1
|
||||
--reap
|
||||
unlock tables;
|
||||
|
||||
connection default;
|
||||
disconnect con2;
|
||||
disconnect con1;
|
||||
|
||||
drop table t1,t2;
|
||||
|
||||
# End of 5.0 tests
|
||||
|
||||
# Wait till all disconnects are completed
|
||||
|
@ -31,3 +31,47 @@ FLUSH TABLES;
|
||||
--exec $MYISAMCHK -s --unpack $MYSQLTEST_VARDIR/master-data/test/t1
|
||||
CHECK TABLE t1 EXTENDED;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # BUG#41541 - Valgrind warnings on packed MyISAM table
|
||||
--echo #
|
||||
CREATE TABLE t1(f1 VARCHAR(200), f2 TEXT);
|
||||
INSERT INTO t1 VALUES ('foo', 'foo1'), ('bar', 'bar1');
|
||||
let $i=9;
|
||||
--disable_query_log
|
||||
while ($i)
|
||||
{
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
dec $i;
|
||||
}
|
||||
--enable_query_log
|
||||
FLUSH TABLE t1;
|
||||
--echo # Compress the table using MYISAMPACK tool
|
||||
--exec $MYISAMPACK $MYSQLTEST_VARDIR/master-data/test/t1
|
||||
SELECT COUNT(*) FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #43973 - backup_myisam.test fails on 6.0-bugteam
|
||||
--echo #
|
||||
CREATE DATABASE mysql_db1;
|
||||
CREATE TABLE mysql_db1.t1 (c1 VARCHAR(5), c2 int);
|
||||
CREATE INDEX i1 ON mysql_db1.t1 (c1, c2);
|
||||
INSERT INTO mysql_db1.t1 VALUES ('A',1);
|
||||
INSERT INTO mysql_db1.t1 SELECT * FROM mysql_db1.t1;
|
||||
INSERT INTO mysql_db1.t1 SELECT * FROM mysql_db1.t1;
|
||||
INSERT INTO mysql_db1.t1 SELECT * FROM mysql_db1.t1;
|
||||
INSERT INTO mysql_db1.t1 SELECT * FROM mysql_db1.t1;
|
||||
INSERT INTO mysql_db1.t1 SELECT * FROM mysql_db1.t1;
|
||||
INSERT INTO mysql_db1.t1 SELECT * FROM mysql_db1.t1;
|
||||
INSERT INTO mysql_db1.t1 SELECT * FROM mysql_db1.t1;
|
||||
FLUSH TABLE mysql_db1.t1;
|
||||
#
|
||||
--echo # Compress the table using MYISAMPACK tool
|
||||
--exec $MYISAMPACK -s $MYSQLTEST_VARDIR/master-data/mysql_db1/t1
|
||||
--echo # Run MYISAMCHK tool on the compressed table
|
||||
--exec $MYISAMCHK -srq $MYSQLTEST_VARDIR/master-data/mysql_db1/t1
|
||||
SELECT COUNT(*) FROM mysql_db1.t1 WHERE c2 < 5;
|
||||
#
|
||||
DROP TABLE mysql_db1.t1;
|
||||
DROP DATABASE mysql_db1;
|
||||
|
@ -1646,9 +1646,6 @@ DROP TABLE t1,t2;
|
||||
--replace_regex /-- [^D][^u][^m][^p].*// /\/\*!.*// / on [0-9 :-]+/ on DATE/
|
||||
--exec $MYSQL_DUMP test
|
||||
|
||||
# We reset concurrent_inserts value to whatever it was at the start of the test
|
||||
SET @@GLOBAL.CONCURRENT_INSERT = @OLD_CONCURRENT_INSERT;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #42635: mysqldump includes views that were excluded using
|
||||
--echo # the --ignore-table option
|
||||
@ -1681,6 +1678,9 @@ CREATE TABLE `כדשגכחךלדגכחשךדגחכךלדגכ` ( f1 INT );
|
||||
DROP TABLE `כדשגכחךלדגכחשךדגחכךלדגכ`;
|
||||
SET NAMES latin1;
|
||||
|
||||
# We reset concurrent_inserts value to whatever it was at the start of the test
|
||||
# This line must be executed _after_ all test cases.
|
||||
SET @@GLOBAL.CONCURRENT_INSERT = @OLD_CONCURRENT_INSERT;
|
||||
|
||||
--echo #
|
||||
--echo # End of 5.0 tests
|
||||
|
@ -39,8 +39,14 @@ while ($i)
|
||||
--enable_query_log
|
||||
--enable_result_log
|
||||
|
||||
SHOW GLOBAL STATUS LIKE 'com_select';
|
||||
let $before= query_get_value(SHOW GLOBAL STATUS LIKE 'com_select',Value,1);
|
||||
|
||||
--change_user
|
||||
|
||||
SHOW GLOBAL STATUS LIKE 'com_select';
|
||||
let $after= query_get_value(SHOW GLOBAL STATUS LIKE 'com_select',Value,1);
|
||||
|
||||
if (`select $after != $before`){
|
||||
SHOW GLOBAL STATUS LIKE 'com_select';
|
||||
die The value of com_select changed during change_user;
|
||||
}
|
||||
echo Value of com_select did not change;
|
||||
|
@ -70,71 +70,71 @@ prepare stmt1 from ' select 1 as my_col ' ;
|
||||
# prepare with parameter
|
||||
prepare stmt1 from ' select ? as my_col ' ;
|
||||
# prepare must fail (incomplete statements/wrong syntax)
|
||||
--error 1064
|
||||
--error ER_PARSE_ERROR
|
||||
prepare ;
|
||||
--error 1064
|
||||
--error ER_PARSE_ERROR
|
||||
prepare stmt1 ;
|
||||
--error 1064
|
||||
--error ER_PARSE_ERROR
|
||||
prepare stmt1 from ;
|
||||
--error 1064
|
||||
--error ER_PARSE_ERROR
|
||||
prepare_garbage stmt1 from ' select 1 ' ;
|
||||
--error 1064
|
||||
--error ER_PARSE_ERROR
|
||||
prepare stmt1 from_garbage ' select 1 ' ;
|
||||
--error 1064
|
||||
--error ER_PARSE_ERROR
|
||||
prepare stmt1 from ' select_garbage 1 ' ;
|
||||
--error 1064
|
||||
--error ER_PARSE_ERROR
|
||||
prepare from ' select 1 ' ;
|
||||
--error 1064
|
||||
--error ER_PARSE_ERROR
|
||||
prepare stmt1 ' select 1 ' ;
|
||||
--error 1064
|
||||
--error ER_PARSE_ERROR
|
||||
prepare ? from ' select ? as my_col ' ;
|
||||
# statement in variable
|
||||
set @arg00='select 1 as my_col';
|
||||
prepare stmt1 from @arg00;
|
||||
# prepare must fail (query variable is empty)
|
||||
set @arg00='';
|
||||
--error 1065
|
||||
--error ER_EMPTY_QUERY
|
||||
prepare stmt1 from @arg00;
|
||||
set @arg00=NULL;
|
||||
# prepare must fail (query variable is NULL)
|
||||
--error 1064
|
||||
--error ER_PARSE_ERROR
|
||||
prepare stmt1 from @arg01;
|
||||
|
||||
prepare stmt1 from ' select * from t1 where a <= 2 ' ;
|
||||
# prepare must fail (column x does not exist)
|
||||
--error 1054
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
prepare stmt1 from ' select * from t1 where x <= 2 ' ;
|
||||
# cases derived from client_test.c: test_null()
|
||||
# prepare must fail (column x does not exist)
|
||||
--error 1054
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
prepare stmt1 from ' insert into t1(a,x) values(?,?) ' ;
|
||||
--error 1054
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
prepare stmt1 from ' insert into t1(x,a) values(?,?) ' ;
|
||||
--disable_warnings
|
||||
drop table if exists not_exist ;
|
||||
--enable_warnings
|
||||
# prepare must fail (table does not exist)
|
||||
--error 1146
|
||||
--error ER_NO_SUCH_TABLE
|
||||
prepare stmt1 from ' select * from not_exist where a <= 2 ' ;
|
||||
|
||||
# case derived from client_test.c: test_prepare_syntax()
|
||||
# prepare must fail (incomplete statement)
|
||||
--error 1064
|
||||
--error ER_PARSE_ERROR
|
||||
prepare stmt1 from ' insert into t1 values(? ' ;
|
||||
--error 1064
|
||||
--error ER_PARSE_ERROR
|
||||
prepare stmt1 from ' select a, b from t1
|
||||
where a=? and where ' ;
|
||||
|
||||
################ EXECUTE ################
|
||||
# execute must fail (statement never_prepared never prepared)
|
||||
--error 1243
|
||||
--error ER_UNKNOWN_STMT_HANDLER
|
||||
execute never_prepared ;
|
||||
# execute must fail (prepare stmt1 just failed,
|
||||
# but there was a successful prepare of stmt1 before)
|
||||
prepare stmt1 from ' select * from t1 where a <= 2 ' ;
|
||||
--error 1146
|
||||
--error ER_NO_SUCH_TABLE
|
||||
prepare stmt1 from ' select * from not_exist where a <= 2 ' ;
|
||||
--error 1243
|
||||
--error ER_UNKNOWN_STMT_HANDLER
|
||||
execute stmt1 ;
|
||||
|
||||
# drop the table between prepare and execute
|
||||
@ -149,7 +149,7 @@ prepare stmt2 from ' select * from t5 ' ;
|
||||
execute stmt2 ;
|
||||
drop table t5 ;
|
||||
# execute must fail (table was dropped after prepare)
|
||||
--error 1146
|
||||
--error ER_NO_SUCH_TABLE
|
||||
execute stmt2 ;
|
||||
# cases derived from client_test.c: test_select_prepare()
|
||||
# 1. drop + create table (same column names/types/order)
|
||||
@ -218,7 +218,7 @@ create table t5
|
||||
f3 int
|
||||
);
|
||||
insert into t5( f1, f2, f3) values( 9, 'recreated table', 9);
|
||||
--error 1054
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
execute stmt2 ;
|
||||
drop table t5 ;
|
||||
|
||||
@ -231,24 +231,24 @@ set @arg01='two' ;
|
||||
prepare stmt1 from ' select * from t1 where a <= ? ' ;
|
||||
execute stmt1 using @arg00;
|
||||
# execute must fail (too small number of parameters)
|
||||
--error 1210
|
||||
--error ER_WRONG_ARGUMENTS
|
||||
execute stmt1 ;
|
||||
# execute must fail (too big number of parameters)
|
||||
--error 1210
|
||||
--error ER_WRONG_ARGUMENTS
|
||||
execute stmt1 using @arg00, @arg01;
|
||||
# execute must fail (parameter is not set)
|
||||
execute stmt1 using @not_set;
|
||||
|
||||
################ DEALLOCATE ################
|
||||
# deallocate must fail (the statement 'never_prepared' was never prepared)
|
||||
--error 1243
|
||||
--error ER_UNKNOWN_STMT_HANDLER
|
||||
deallocate prepare never_prepared ;
|
||||
# deallocate must fail (prepare stmt1 just failed,
|
||||
# but there was a successful prepare before)
|
||||
prepare stmt1 from ' select * from t1 where a <= 2 ' ;
|
||||
--error 1146
|
||||
--error ER_NO_SUCH_TABLE
|
||||
prepare stmt1 from ' select * from not_exist where a <= 2 ' ;
|
||||
--error 1243
|
||||
--error ER_UNKNOWN_STMT_HANDLER
|
||||
deallocate prepare stmt1;
|
||||
create table t5
|
||||
(
|
||||
@ -330,17 +330,17 @@ prepare stmt4 from ' show engine bdb logs ';
|
||||
execute stmt4;
|
||||
--enable_result_log
|
||||
prepare stmt4 from ' show grants for user ';
|
||||
--error 1295
|
||||
--error ER_UNSUPPORTED_PS
|
||||
prepare stmt4 from ' show create table t2 ';
|
||||
--error 1295
|
||||
--error ER_UNSUPPORTED_PS
|
||||
prepare stmt4 from ' show master status ';
|
||||
--error 1295
|
||||
--error ER_UNSUPPORTED_PS
|
||||
prepare stmt4 from ' show master logs ';
|
||||
--error 1295
|
||||
--error ER_UNSUPPORTED_PS
|
||||
prepare stmt4 from ' show slave status ';
|
||||
--error 1295
|
||||
--error ER_UNSUPPORTED_PS
|
||||
prepare stmt4 from ' show warnings limit 20 ';
|
||||
--error 1295
|
||||
--error ER_UNSUPPORTED_PS
|
||||
prepare stmt4 from ' show errors limit 20 ';
|
||||
prepare stmt4 from ' show storage engines ';
|
||||
--replace_column 2 YES/NO
|
||||
@ -355,7 +355,7 @@ drop table if exists t5;
|
||||
prepare stmt1 from ' drop table if exists t5 ' ;
|
||||
execute stmt1 ;
|
||||
prepare stmt1 from ' drop table t5 ' ;
|
||||
--error 1051
|
||||
--error ER_BAD_TABLE_ERROR
|
||||
execute stmt1 ;
|
||||
|
||||
## SELECT @@version
|
||||
@ -428,14 +428,14 @@ prepare stmt1 from ' deallocate prepare never_prepared ' ;
|
||||
prepare stmt1 from 'alter view v1 as select 2';
|
||||
|
||||
## switch the database connection
|
||||
--error 1295
|
||||
--error ER_UNSUPPORTED_PS
|
||||
prepare stmt4 from ' use test ' ;
|
||||
|
||||
## create/drop database
|
||||
--error 1295
|
||||
--error ER_UNSUPPORTED_PS
|
||||
prepare stmt3 from ' create database mysqltest ';
|
||||
create database mysqltest ;
|
||||
--error 1295
|
||||
--error ER_UNSUPPORTED_PS
|
||||
prepare stmt3 from ' drop database mysqltest ';
|
||||
drop database mysqltest ;
|
||||
|
||||
@ -444,29 +444,40 @@ drop database mysqltest ;
|
||||
prepare stmt3 from ' describe t2 ';
|
||||
execute stmt3;
|
||||
drop table t2 ;
|
||||
--error 1146
|
||||
--error ER_NO_SUCH_TABLE
|
||||
execute stmt3;
|
||||
## lock/unlock
|
||||
--error 1295
|
||||
--error ER_UNSUPPORTED_PS
|
||||
prepare stmt3 from ' lock tables t1 read ' ;
|
||||
--error 1295
|
||||
--error ER_UNSUPPORTED_PS
|
||||
prepare stmt3 from ' unlock tables ' ;
|
||||
## Load/Unload table contents
|
||||
--error 1295
|
||||
prepare stmt1 from ' load data infile ''data.txt''
|
||||
into table t1 fields terminated by ''\t'' ';
|
||||
prepare stmt1 from ' select * into outfile ''data.txt'' from t1 ';
|
||||
execute stmt1 ;
|
||||
|
||||
--let $datafile = $MYSQLTEST_VARDIR/tmp/data.txt
|
||||
--error 0,1
|
||||
--remove_file $datafile
|
||||
|
||||
--replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
|
||||
--error ER_UNSUPPORTED_PS
|
||||
eval prepare stmt1 from ' load data infile ''$datafile''
|
||||
into table t1 fields terminated by ''\t'' ';
|
||||
--replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
|
||||
eval prepare stmt1 from ' select * into outfile ''$datafile'' from t1 ';
|
||||
execute stmt1 ;
|
||||
##
|
||||
prepare stmt1 from ' optimize table t1 ' ;
|
||||
prepare stmt1 from ' analyze table t1 ' ;
|
||||
--error 1295
|
||||
--error ER_UNSUPPORTED_PS
|
||||
prepare stmt1 from ' checksum table t1 ' ;
|
||||
prepare stmt1 from ' repair table t1 ' ;
|
||||
--error 1295
|
||||
prepare stmt1 from ' restore table t1 from ''data.txt'' ' ;
|
||||
--replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
|
||||
--error ER_UNSUPPORTED_PS
|
||||
eval prepare stmt1 from ' restore table t1 from ''$datafile'' ' ;
|
||||
--remove_file $datafile
|
||||
|
||||
|
||||
## handler
|
||||
--error 1295
|
||||
--error ER_UNSUPPORTED_PS
|
||||
prepare stmt1 from ' handler t1 open ';
|
||||
|
||||
|
||||
@ -492,11 +503,11 @@ SET sql_mode=ansi;
|
||||
execute stmt5;
|
||||
SET sql_mode="";
|
||||
|
||||
--error 1295
|
||||
--error ER_UNSUPPORTED_PS
|
||||
prepare stmt1 from ' flush local privileges ' ;
|
||||
--error 1295
|
||||
--error ER_UNSUPPORTED_PS
|
||||
prepare stmt1 from ' reset query cache ' ;
|
||||
--error 1295
|
||||
--error ER_UNSUPPORTED_PS
|
||||
prepare stmt1 from ' KILL 0 ';
|
||||
|
||||
## simple explain
|
||||
@ -582,7 +593,7 @@ drop table if exists new_t2;
|
||||
--enable_warnings
|
||||
prepare stmt3 from ' rename table t2 to new_t2 ';
|
||||
execute stmt3;
|
||||
--error 1050
|
||||
--error ER_TABLE_EXISTS_ERROR
|
||||
execute stmt3;
|
||||
rename table new_t2 to t2;
|
||||
drop table t2;
|
||||
@ -593,13 +604,13 @@ create table t5 (a int) ;
|
||||
# rename must fail, t7 does not exist
|
||||
# Clean up the filename here because embedded server reports whole path
|
||||
--replace_result \\ / $MYSQLTEST_VARDIR . /master-data/ / t7.frm t7
|
||||
--error 1017
|
||||
--error ER_FILE_NOT_FOUND
|
||||
execute stmt1 ;
|
||||
create table t7 (a int) ;
|
||||
# rename, t5 -> t6 and t7 -> t8
|
||||
execute stmt1 ;
|
||||
# rename must fail, t5 and t7 does not exist t6 and t8 already exist
|
||||
--error 1050
|
||||
--error ER_TABLE_EXISTS_ERROR
|
||||
execute stmt1 ;
|
||||
rename table t6 to t5, t8 to t7 ;
|
||||
# rename, t5 -> t6 and t7 -> t8
|
||||
|
1
mysql-test/t/rpl_bug38694-slave.opt
Normal file
1
mysql-test/t/rpl_bug38694-slave.opt
Normal file
@ -0,0 +1 @@
|
||||
--loose-debug=d,simulate_slave_delay_at_terminate_bug38694
|
10
mysql-test/t/rpl_bug38694.test
Normal file
10
mysql-test/t/rpl_bug38694.test
Normal file
@ -0,0 +1,10 @@
|
||||
# Testing replication threads stopping concurrency issue
|
||||
# at the server shutdown
|
||||
# Related bugs: bug#38694, bug#29968, bug#25306
|
||||
# The test checks if a delay at the termination phase of slave threads
|
||||
# DBUG_EXECUTE_IF("simulate_slave_delay_at_terminate_bug38694", sleep(5););
|
||||
# could cause any issue.
|
||||
|
||||
source include/master-slave.inc;
|
||||
|
||||
# End of tests
|
77
mysql-test/t/rpl_drop_if_exists.test
Normal file
77
mysql-test/t/rpl_drop_if_exists.test
Normal file
@ -0,0 +1,77 @@
|
||||
# BUG#13684:
|
||||
# SP: DROP PROCEDURE|FUNCTION IF EXISTS not binlogged if routine
|
||||
# does not exist
|
||||
#
|
||||
# There is an inconsistency with DROP DATABASE IF EXISTS, DROP
|
||||
# TABLE IF EXISTS and DROP VIEW IF EXISTS: those are binlogged even
|
||||
# if the DB or TABLE does not exist, whereas DROP PROCEDURE IF
|
||||
# EXISTS does not. It would be nice or at least consistent if DROP
|
||||
# PROCEDURE/STATEMENT worked the same too.
|
||||
#
|
||||
# Description:
|
||||
# DROP PROCEDURE|FUNCTION IF EXISTS does not get binlogged whereas DROP
|
||||
# DATABASE|TABLE|TRIGGER|... IF EXISTS do.
|
||||
#
|
||||
# Fixed DROP PROCEDURE|FUNCTION IF EXISTS by adding a call to
|
||||
# mysql_bin_log.write in mysql_execute_command. Checked also if all
|
||||
# documented "DROP (...) IF EXISTS" get binlogged.
|
||||
#
|
||||
# Test is implemented as follows:
|
||||
#
|
||||
# i) test each "drop if exists" (DDL)
|
||||
# ii) show binlog events;
|
||||
# iii) create an object for each drop if exists statement;
|
||||
# iv) issue "drop if exists" in existent objects.
|
||||
# v) show binlog events;
|
||||
#
|
||||
|
||||
--source include/have_log_bin.inc
|
||||
RESET MASTER;
|
||||
|
||||
disable_warnings;
|
||||
|
||||
# test all "drop if exists" in manual with inexistent objects
|
||||
DROP PROCEDURE IF EXISTS db_bug_13684.p;
|
||||
DROP FUNCTION IF EXISTS db_bug_13684.f;
|
||||
DROP TRIGGER IF EXISTS db_bug_13684.tr;
|
||||
DROP VIEW IF EXISTS db_bug_13684.v;
|
||||
DROP TABLE IF EXISTS db_bug_13684.t;
|
||||
DROP DATABASE IF EXISTS db_bug_13684;
|
||||
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
# test drop with existing values
|
||||
|
||||
# create
|
||||
CREATE DATABASE db_bug_13684;
|
||||
|
||||
CREATE TABLE db_bug_13684.t (a int);
|
||||
|
||||
CREATE VIEW db_bug_13684.v
|
||||
AS SELECT * FROM db_bug_13684.t;
|
||||
|
||||
CREATE TRIGGER db_bug_13684.tr BEFORE INSERT ON db_bug_13684.t
|
||||
FOR EACH ROW BEGIN
|
||||
END;
|
||||
|
||||
CREATE PROCEDURE db_bug_13684.p (OUT p1 INT)
|
||||
BEGIN
|
||||
END;
|
||||
|
||||
CREATE FUNCTION db_bug_13684.f (s CHAR(20))
|
||||
RETURNS CHAR(50) DETERMINISTIC
|
||||
RETURN s;
|
||||
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
# drop existing
|
||||
DROP PROCEDURE IF EXISTS db_bug_13684.p;
|
||||
DROP FUNCTION IF EXISTS db_bug_13684.f;
|
||||
DROP TRIGGER IF EXISTS db_bug_13684.tr;
|
||||
DROP VIEW IF EXISTS db_bug_13684.v;
|
||||
DROP TABLE IF EXISTS db_bug_13684.t;
|
||||
DROP DATABASE IF EXISTS db_bug_13684;
|
||||
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
enable_warnings;
|
1
mysql-test/t/rpl_killed_ddl-master.opt
Normal file
1
mysql-test/t/rpl_killed_ddl-master.opt
Normal file
@ -0,0 +1 @@
|
||||
--debug=d,debug_lock_before_query_log_event
|
271
mysql-test/t/rpl_killed_ddl.test
Normal file
271
mysql-test/t/rpl_killed_ddl.test
Normal file
@ -0,0 +1,271 @@
|
||||
# ==== Purpose ====
|
||||
#
|
||||
# This test check if DDL statements are correctly binlogged when the
|
||||
# thread is killed
|
||||
#
|
||||
# ==== Method ====
|
||||
#
|
||||
# Start a DDL query and kill it, check if the error code of the binlog
|
||||
# event is correct.
|
||||
#
|
||||
# DDL statements tested:
|
||||
# CREATE/ALTER/RENAME/DROP DATABASE
|
||||
# CREATE/ALTER/DROP FUNCTION
|
||||
# CREATE/ALTER/DROP PROCEDURE
|
||||
# CREATE/ALTER/RENAME/DROP TABLE
|
||||
# CREATE/DROP TRIGGER
|
||||
# CREATE/ALTER/DROP VIEW
|
||||
#
|
||||
# ==== Bugs =====
|
||||
#
|
||||
|
||||
source include/have_debug.inc;
|
||||
source include/master-slave.inc;
|
||||
|
||||
# Use the DBUG_SYNC_POINT to make sure the thread running the DDL is
|
||||
# waiting before creating the query log event
|
||||
|
||||
let $debug_lock= "debug_lock.before_query_log_event";
|
||||
|
||||
######## INITIALIZATION ########
|
||||
|
||||
disable_warnings;
|
||||
DROP DATABASE IF EXISTS d1;
|
||||
DROP DATABASE IF EXISTS d2;
|
||||
DROP DATABASE IF EXISTS d3;
|
||||
DROP DATABASE IF EXISTS d4;
|
||||
DROP FUNCTION IF EXISTS f1;
|
||||
DROP FUNCTION IF EXISTS f2;
|
||||
DROP FUNCTION IF EXISTS f3;
|
||||
DROP FUNCTION IF EXISTS f4;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TABLE IF EXISTS t2;
|
||||
DROP TABLE IF EXISTS t3;
|
||||
DROP TABLE IF EXISTS t4;
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
DROP PROCEDURE IF EXISTS p2;
|
||||
DROP PROCEDURE IF EXISTS p3;
|
||||
DROP PROCEDURE IF EXISTS p4;
|
||||
DROP TRIGGER IF EXISTS tr1;
|
||||
DROP TRIGGER IF EXISTS tr2;
|
||||
DROP TRIGGER IF EXISTS tr3;
|
||||
DROP TRIGGER IF EXISTS tr4;
|
||||
enable_warnings;
|
||||
|
||||
CREATE DATABASE d1;
|
||||
|
||||
CREATE FUNCTION f1 () RETURNS INT DETERMINISTIC
|
||||
RETURN 1;
|
||||
|
||||
DELIMITER //;
|
||||
CREATE PROCEDURE p1 (OUT rows INT)
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO rows FROM t1;
|
||||
END;
|
||||
//
|
||||
DELIMITER ;//
|
||||
|
||||
CREATE TABLE t1 (a int);
|
||||
CREATE TABLE t3 (a int);
|
||||
|
||||
DELIMITER //;
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1
|
||||
FOR EACH ROW BEGIN
|
||||
DELETE FROM t4 WHERE a=NEW.a;
|
||||
END;
|
||||
//
|
||||
DELIMITER ;//
|
||||
|
||||
CREATE INDEX i1 ON t1 (a);
|
||||
|
||||
CREATE VIEW v1 AS SELECT a FROM t1 WHERE a < 100;
|
||||
|
||||
sync_slave_with_master;
|
||||
|
||||
connection master1;
|
||||
let $connection_name= master1;
|
||||
let $connection_id= `SELECT CONNECTION_ID()`;
|
||||
|
||||
connection master;
|
||||
echo [on master];
|
||||
|
||||
# This will block the execution of a statement at the DBUG_SYNC_POINT
|
||||
# with given lock name
|
||||
if (`SELECT '$debug_lock' != ''`)
|
||||
{
|
||||
disable_query_log;
|
||||
disable_result_log;
|
||||
eval SELECT IS_FREE_LOCK($debug_lock);
|
||||
eval SELECT GET_LOCK($debug_lock, 10);
|
||||
eval SELECT IS_FREE_LOCK($debug_lock);
|
||||
enable_query_log;
|
||||
enable_result_log;
|
||||
}
|
||||
|
||||
######## START TEST ########
|
||||
|
||||
connection master1;
|
||||
echo [on master1];
|
||||
|
||||
disable_warnings;
|
||||
|
||||
######## DATABASE ########
|
||||
|
||||
let $diff_statement= SHOW DATABASES LIKE 'd%';
|
||||
|
||||
send CREATE DATABASE d2;
|
||||
source include/kill_query_and_diff_master_slave.inc;
|
||||
|
||||
send ALTER DATABASE d1
|
||||
DEFAULT CHARACTER SET = 'utf8';
|
||||
source include/kill_query_and_diff_master_slave.inc;
|
||||
|
||||
send DROP DATABASE d1;
|
||||
source include/kill_query_and_diff_master_slave.inc;
|
||||
|
||||
send DROP DATABASE d2;
|
||||
source include/kill_query_and_diff_master_slave.inc;
|
||||
|
||||
######## FUNCTION ########
|
||||
|
||||
let $diff_statement= SHOW FUNCTION STATUS LIKE 'f%';
|
||||
|
||||
send CREATE FUNCTION f2 () RETURNS INT DETERMINISTIC
|
||||
RETURN 1;
|
||||
source include/kill_query_and_diff_master_slave.inc;
|
||||
|
||||
send ALTER FUNCTION f1 SQL SECURITY INVOKER;
|
||||
source include/kill_query_and_diff_master_slave.inc;
|
||||
|
||||
# function f1 probably does not exist because the ALTER query was
|
||||
# killed
|
||||
send DROP FUNCTION IF EXISTS f1;
|
||||
source include/kill_query_and_diff_master_slave.inc;
|
||||
|
||||
# function f2 probably does not exist because the CREATE query was
|
||||
# killed
|
||||
send DROP FUNCTION IF EXISTS f2;
|
||||
source include/kill_query_and_diff_master_slave.inc;
|
||||
|
||||
######## PROCEDURE ########
|
||||
|
||||
let $diff_statement= SHOW PROCEDURE STATUS LIKE 'p%';
|
||||
|
||||
DELIMITER //;
|
||||
send CREATE PROCEDURE p2 (OUT rows INT)
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO rows FROM t2;
|
||||
END;
|
||||
//
|
||||
DELIMITER ;//
|
||||
source include/kill_query_and_diff_master_slave.inc;
|
||||
|
||||
send ALTER PROCEDURE p1 SQL SECURITY INVOKER COMMENT 'return rows of table t1';
|
||||
source include/kill_query_and_diff_master_slave.inc;
|
||||
|
||||
send DROP PROCEDURE IF EXISTS p1;
|
||||
source include/kill_query_and_diff_master_slave.inc;
|
||||
|
||||
send DROP PROCEDURE IF EXISTS p2;
|
||||
source include/kill_query_and_diff_master_slave.inc;
|
||||
|
||||
######## TABLE ########
|
||||
|
||||
let $diff_statement= SHOW TABLES LIKE 't%';
|
||||
|
||||
send CREATE TABLE t2 (b int);
|
||||
source include/kill_query_and_diff_master_slave.inc;
|
||||
|
||||
send ALTER TABLE t1 ADD (d int);
|
||||
source include/kill_query_and_diff_master_slave.inc;
|
||||
|
||||
send RENAME TABLE t3 TO t4;
|
||||
source include/kill_query_and_diff_master_slave.inc;
|
||||
|
||||
######## INDEX ########
|
||||
|
||||
let $diff_statement= SHOW INDEX FROM t1;
|
||||
|
||||
send CREATE INDEX i2 on t1 (a);
|
||||
source include/kill_query_and_diff_master_slave.inc;
|
||||
|
||||
send DROP INDEX i1 on t1;
|
||||
source include/kill_query_and_diff_master_slave.inc;
|
||||
|
||||
######## TRIGGER ########
|
||||
|
||||
let $diff_statement= SHOW TRIGGERS LIKE 'v%';
|
||||
|
||||
DELIMITER //;
|
||||
send CREATE TRIGGER tr2 BEFORE INSERT ON t4
|
||||
FOR EACH ROW BEGIN
|
||||
DELETE FROM t1 WHERE a=NEW.a;
|
||||
END;
|
||||
//
|
||||
DELIMITER ;//
|
||||
source include/kill_query_and_diff_master_slave.inc;
|
||||
|
||||
send DROP TRIGGER tr1;
|
||||
source include/kill_query_and_diff_master_slave.inc;
|
||||
|
||||
send DROP TRIGGER IF EXISTS tr2;
|
||||
source include/kill_query_and_diff_master_slave.inc;
|
||||
|
||||
######## VIEW ########
|
||||
|
||||
let $diff_statement= SHOW TABLES LIKE 'v%';
|
||||
|
||||
send CREATE VIEW v2 AS SELECT a FROM t1 WHERE a > 100;
|
||||
source include/kill_query_and_diff_master_slave.inc;
|
||||
|
||||
send DROP VIEW v1;
|
||||
source include/kill_query_and_diff_master_slave.inc;
|
||||
|
||||
send DROP VIEW IF EXISTS v2;
|
||||
source include/kill_query_and_diff_master_slave.inc;
|
||||
|
||||
######## DROP TABLE ########
|
||||
|
||||
# Because of BUG#43529, we cannot use the DBUG_SYNC_POINT for DROP
|
||||
# TABLE statements on 5.0
|
||||
connection master;
|
||||
disable_query_log;
|
||||
disable_result_log;
|
||||
eval SELECT RELEASE_LOCK($debug_lock);
|
||||
enable_result_log;
|
||||
enable_query_log;
|
||||
let $debug_lock=;
|
||||
|
||||
connection master1;
|
||||
|
||||
let $diff_statement= SHOW TABLES LIKE 't%';
|
||||
|
||||
send DROP TABLE t1;
|
||||
source include/kill_query_and_diff_master_slave.inc;
|
||||
|
||||
send DROP TABLE IF EXISTS t2;
|
||||
source include/kill_query_and_diff_master_slave.inc;
|
||||
|
||||
######## CLEAN UP ########
|
||||
|
||||
# The DROP statements above are killed during the process, so they
|
||||
# does not make sure the objects are dropped.
|
||||
|
||||
disable_warnings;
|
||||
DROP DATABASE IF EXISTS d1;
|
||||
DROP DATABASE IF EXISTS d2;
|
||||
DROP DATABASE IF EXISTS d3;
|
||||
DROP DATABASE IF EXISTS d4;
|
||||
DROP FUNCTION IF EXISTS f1;
|
||||
DROP FUNCTION IF EXISTS f2;
|
||||
DROP FUNCTION IF EXISTS f3;
|
||||
DROP FUNCTION IF EXISTS f4;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TABLE IF EXISTS t2;
|
||||
DROP TABLE IF EXISTS t3;
|
||||
DROP TABLE IF EXISTS t4;
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
DROP PROCEDURE IF EXISTS p2;
|
||||
DROP PROCEDURE IF EXISTS p3;
|
||||
DROP PROCEDURE IF EXISTS p4;
|
||||
enable_warnings;
|
47
mysql-test/t/rpl_name_const.test
Normal file
47
mysql-test/t/rpl_name_const.test
Normal file
@ -0,0 +1,47 @@
|
||||
# ==== Purpose ====
|
||||
#
|
||||
# Test that aliases of variables in binary log aren't ignored with NAME_CONST.
|
||||
#
|
||||
# ==== Method ====
|
||||
#
|
||||
# Create a procedure with aliases of variables, then replicate it to slave.
|
||||
# BUG#35515 Aliases of variables in binary log are ignored with NAME_CONST.
|
||||
#
|
||||
|
||||
source include/master-slave.inc;
|
||||
|
||||
--echo ==== Initialize ====
|
||||
|
||||
--echo [on master]
|
||||
--connection master
|
||||
|
||||
create table t1 (id int);
|
||||
|
||||
--echo ==== create a procedure that has a column aliase in a subquery ====
|
||||
--disable_warnings
|
||||
drop procedure if exists test_procedure;
|
||||
--enable_warnings
|
||||
delimiter $$;
|
||||
create procedure test_procedure(_id int)
|
||||
begin
|
||||
insert into t1 (id)
|
||||
select a.id
|
||||
from
|
||||
( select _id as id ) a;
|
||||
end;$$
|
||||
delimiter ;$$
|
||||
|
||||
--echo ==== enable the binary log, then call the procedure ====
|
||||
call test_procedure(1234);
|
||||
|
||||
|
||||
--echo [on slave]
|
||||
sync_slave_with_master;
|
||||
select * from t1 order by id;
|
||||
|
||||
--echo ==== Clean up ====
|
||||
|
||||
--echo [on master]
|
||||
connection master;
|
||||
drop table t1;
|
||||
drop procedure test_procedure;
|
@ -3737,4 +3737,18 @@ cr.f4 = cr2.f4
|
||||
GROUP BY a.f3, cr.f4;
|
||||
|
||||
drop table t1, t2, t3;
|
||||
|
||||
|
||||
#
|
||||
# Bug #40925: Equality propagation takes non indexed attribute
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a INT KEY, b INT);
|
||||
INSERT INTO t1 VALUES (1,1), (2,2), (3,3), (4,4);
|
||||
|
||||
EXPLAIN EXTENDED SELECT a, b FROM t1 WHERE a > 1 AND a = b LIMIT 2;
|
||||
EXPLAIN EXTENDED SELECT a, b FROM t1 WHERE a > 1 AND b = a LIMIT 2;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -16,4 +16,23 @@ if (`SELECT '$shm' != 'ON'`){
|
||||
#
|
||||
--exec $MYSQLADMIN --no-defaults --user=root --host=127.0.0.1 --port=$MASTER_MYPORT --shared-memory-base-name=HeyMrBaseNameXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ping
|
||||
|
||||
#
|
||||
# Bug #33899: Deadlock in mysql_real_query with shared memory connections
|
||||
#
|
||||
|
||||
let $name= query_get_value("SHOW GLOBAL VARIABLES LIKE 'shared_memory_base_name'", Value, 1);
|
||||
let $stmt= `SELECT REPEAT('a', 2048)`;
|
||||
|
||||
SET @max_allowed_packet= @@global.max_allowed_packet;
|
||||
SET @net_buffer_length= @@global.net_buffer_length;
|
||||
|
||||
SET GLOBAL max_allowed_packet= 1024;
|
||||
SET GLOBAL net_buffer_length= 1024;
|
||||
|
||||
--error 1
|
||||
--exec echo SELECT '$stmt'| $MYSQL --protocol=memory --shared-memory-base-name=$name 2>&1
|
||||
|
||||
SET GLOBAL max_allowed_packet= @max_allowed_packet;
|
||||
SET GLOBAL net_buffer_length= @net_buffer_length;
|
||||
|
||||
--echo End of 5.0 tests.
|
||||
|
@ -1271,7 +1271,7 @@ select *, f8() from v1|
|
||||
|
||||
# Let us test what will happen if function is missing
|
||||
drop function f1|
|
||||
--error 1356
|
||||
--error ER_VIEW_INVALID
|
||||
select * from v1|
|
||||
|
||||
# And what will happen if we have recursion which involves
|
||||
@ -1310,9 +1310,9 @@ select f0()|
|
||||
select * from v0|
|
||||
select *, f0() from v0, (select 123) as d1|
|
||||
# But these should not !
|
||||
--error 1100
|
||||
--error ER_TABLE_NOT_LOCKED
|
||||
select id, f3() from t1|
|
||||
--error 1100
|
||||
--error ER_TABLE_NOT_LOCKED
|
||||
select f4()|
|
||||
unlock tables|
|
||||
|
||||
@ -1322,9 +1322,9 @@ lock tables v2 read, mysql.proc read|
|
||||
select * from v2|
|
||||
select * from v1|
|
||||
# These should not work as we have too little instances of tables locked
|
||||
--error 1100
|
||||
--error ER_TABLE_NOT_LOCKED
|
||||
select * from v1, t1|
|
||||
--error 1100
|
||||
--error ER_TABLE_NOT_LOCKED
|
||||
select f4()|
|
||||
unlock tables|
|
||||
|
||||
@ -4501,14 +4501,14 @@ begin
|
||||
select bug12379();
|
||||
end|
|
||||
|
||||
--error 1062
|
||||
--error ER_DUP_ENTRY
|
||||
select bug12379()|
|
||||
select 1|
|
||||
call bug12379_1()|
|
||||
select 2|
|
||||
call bug12379_2()|
|
||||
select 3|
|
||||
--error 1062
|
||||
--error ER_DUP_ENTRY
|
||||
call bug12379_3()|
|
||||
select 4|
|
||||
|
||||
@ -5235,18 +5235,29 @@ drop procedure bug5967|
|
||||
#
|
||||
# Bug#13012 "SP: REPAIR/BACKUP/RESTORE TABLE crashes the server"
|
||||
#
|
||||
--let $backupdir = $MYSQLTEST_VARDIR/tmp/
|
||||
--error 0,1
|
||||
--remove_file $backupdir/t1.frm
|
||||
--error 0,1
|
||||
--remove_file $backupdir/t1.MYD
|
||||
|
||||
--disable_warnings
|
||||
drop procedure if exists bug13012|
|
||||
--replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
|
||||
--enable_warnings
|
||||
create procedure bug13012()
|
||||
BEGIN
|
||||
REPAIR TABLE t1;
|
||||
BACKUP TABLE t1 to '../tmp';
|
||||
DROP TABLE t1;
|
||||
RESTORE TABLE t1 FROM '../tmp';
|
||||
END|
|
||||
eval create procedure bug13012()
|
||||
BEGIN
|
||||
REPAIR TABLE t1;
|
||||
BACKUP TABLE t1 to '$backupdir';
|
||||
DROP TABLE t1;
|
||||
RESTORE TABLE t1 FROM '$backupdir';
|
||||
END|
|
||||
call bug13012()|
|
||||
|
||||
--remove_file $backupdir/t1.frm
|
||||
--remove_file $backupdir/t1.MYD
|
||||
drop procedure bug13012|
|
||||
|
||||
create view v1 as select * from t1|
|
||||
create procedure bug13012()
|
||||
BEGIN
|
||||
|
@ -4,11 +4,15 @@
|
||||
delimiter |;
|
||||
|
||||
#
|
||||
# Bug #13270 INSERT,UPDATE,etc that calls func with side-effect does not binlog
|
||||
# Bug #23333 stored function + non-transac table + transac table =
|
||||
# breaks stmt-based binlog
|
||||
# Bug #27395 OPTION_STATUS_NO_TRANS_UPDATE is not preserved at the end of SF()
|
||||
# Bug#13270 INSERT,UPDATE,etc that calls func with side-effect does not binlog
|
||||
# Bug#23333 stored function + non-transac table + transac table =
|
||||
# breaks stmt-based binlog
|
||||
# Bug#27395 OPTION_STATUS_NO_TRANS_UPDATE is not preserved at the end of SF()
|
||||
#
|
||||
--disable_warnings
|
||||
drop function if exists bug23333|
|
||||
drop table if exists t1,t2|
|
||||
--enable_warnings
|
||||
CREATE TABLE t1 (a int NOT NULL auto_increment primary key) ENGINE=MyISAM|
|
||||
CREATE TABLE t2 (a int NOT NULL auto_increment, b int, PRIMARY KEY (a)) ENGINE=InnoDB|
|
||||
|
||||
@ -29,5 +33,10 @@ insert into t2 values (bug23333(),1)|
|
||||
--replace_column 2 # 5 # 6 #
|
||||
show binlog events from 98 /* with fixes for #23333 will show there are 2 queries */|
|
||||
select count(*),@a from t1 /* must be 1,1 */|
|
||||
drop table t1, t2|
|
||||
|
||||
delimiter ;|
|
||||
|
||||
# clean-up
|
||||
|
||||
drop table t1,t2;
|
||||
drop function if exists bug23333;
|
||||
|
@ -2217,4 +2217,37 @@ select * from t1;
|
||||
select * from t2;
|
||||
drop table t1;
|
||||
drop temporary table t2;
|
||||
|
||||
--echo #------------------------------------------------------------------------
|
||||
--echo # Bug#39953 Triggers are not working properly with multi table updates
|
||||
--echo #------------------------------------------------------------------------
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TRIGGER IF EXISTS t_insert;
|
||||
DROP TABLE IF EXISTS t2;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1 (a int, date_insert timestamp, PRIMARY KEY (a));
|
||||
INSERT INTO t1 (a) VALUES (2),(5);
|
||||
CREATE TABLE t2 (a int, b int, PRIMARY KEY (a));
|
||||
DELIMITER |;
|
||||
CREATE TRIGGER t_insert AFTER INSERT ON t2 FOR EACH ROW BEGIN UPDATE t1,t2 SET
|
||||
date_insert=NOW() WHERE t1.a=t2.b AND t2.a=NEW.a; END |
|
||||
DELIMITER ;|
|
||||
INSERT INTO t2 (a,b) VALUES (1,2);
|
||||
|
||||
DROP TRIGGER t_insert;
|
||||
|
||||
DELIMITER |;
|
||||
CREATE TRIGGER t_insert AFTER INSERT ON t2 FOR EACH ROW BEGIN UPDATE t1,t2 SET
|
||||
date_insert=NOW(),b=b+1 WHERE t1.a=t2.b AND t2.a=NEW.a; END |
|
||||
DELIMITER ;|
|
||||
--error ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG
|
||||
INSERT INTO t2 (a,b) VALUES (3,5);
|
||||
|
||||
DROP TABLE t1;
|
||||
DROP TRIGGER t_insert;
|
||||
DROP TABLE t2;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -1023,4 +1023,19 @@ SELECT * FROM (SELECT * FROM (SELECT NULL)a) b UNION SELECT a FROM t1;
|
||||
DESC t6;
|
||||
|
||||
DROP TABLE t1, t2, t3, t4, t5, t6;
|
||||
|
||||
#
|
||||
# Bug #43432: Union on floats does unnecessary rounding
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (f FLOAT(9,6));
|
||||
CREATE TABLE t2 AS SELECT f FROM t1 UNION SELECT f FROM t1;
|
||||
SHOW FIELDS FROM t2;
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
CREATE TABLE t1(d DOUBLE(9,6));
|
||||
CREATE TABLE t2 AS SELECT d FROM t1 UNION SELECT d FROM t1;
|
||||
SHOW FIELDS FROM t2;
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -83,6 +83,7 @@ insert into t1 values("aaa ");
|
||||
select length(a) from t1;
|
||||
alter table t1 modify a varchar(255);
|
||||
select length(a) from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#35658 (An empty binary value leads to mysqld crash)
|
||||
|
@ -5,16 +5,51 @@
|
||||
--source include/big_test.inc
|
||||
|
||||
#
|
||||
# Bug #27322 failure to allocate transaction_prealloc_size causes crash
|
||||
# Bug#27322 failure to allocate transaction_prealloc_size causes crash
|
||||
#
|
||||
#
|
||||
# Manual (6.0):
|
||||
# Platform Bit Size Range Default
|
||||
# 32 1024-4294967295 (4 Gi - 1) 4096
|
||||
# 64 1024-18446744073709547520 4096
|
||||
#
|
||||
# Observation(mleich):
|
||||
# 1. - Linux 64 Bit, MySQL 64 Bit, 4 GiB RAM, 8 GiB swap
|
||||
# - SET SESSION transaction_prealloc_size=1099511627776;
|
||||
# SHOW PROCESSLIST;
|
||||
# Id User ... Info
|
||||
# <Id> root ... SHOW PROCESSLIST
|
||||
# SELECT @@session.transaction_prealloc_size;
|
||||
# @@session.transaction_prealloc_size
|
||||
# 1099511627776
|
||||
# very short runtime in 5.0
|
||||
# excessive resource consumption + long runtime in 5.1 and 6.0
|
||||
# 2. - Win in VM, slightly older version of this test, MySQL 5.0
|
||||
# - testcase timeout after 900s
|
||||
# analyze-timeout-mysqld.1.err :
|
||||
# Id User ... Time Info
|
||||
# 83 root ... 542 set session transaction_prealloc_size=1024*1024*1024*2
|
||||
# 84 root ... 1 SHOW PROCESSLIST
|
||||
#
|
||||
# There is a significant probablitity that this tests fails with testcase
|
||||
# timeout if the testing box is not powerful enough.
|
||||
#
|
||||
|
||||
set session transaction_prealloc_size=1024*1024*1024*1;
|
||||
show processlist;
|
||||
set session transaction_prealloc_size=1024*1024*1024*2;
|
||||
show processlist;
|
||||
set session transaction_prealloc_size=1024*1024*1024*3;
|
||||
show processlist;
|
||||
set session transaction_prealloc_size=1024*1024*1024*4;
|
||||
show processlist;
|
||||
set session transaction_prealloc_size=1024*1024*1024*5;
|
||||
show processlist;
|
||||
--disable_warnings
|
||||
SET SESSION transaction_prealloc_size=1024*1024*1024*1;
|
||||
--replace_column 1 <Id> 6 <Time>
|
||||
SHOW PROCESSLIST;
|
||||
SET SESSION transaction_prealloc_size=1024*1024*1024*2;
|
||||
--replace_column 1 <Id> 6 <Time>
|
||||
SHOW PROCESSLIST;
|
||||
SET SESSION transaction_prealloc_size=1024*1024*1024*3;
|
||||
--replace_column 1 <Id> 6 <Time>
|
||||
SHOW PROCESSLIST;
|
||||
SET SESSION transaction_prealloc_size=1024*1024*1024*4;
|
||||
--replace_column 1 <Id> 6 <Time>
|
||||
SHOW PROCESSLIST;
|
||||
SET SESSION transaction_prealloc_size=1024*1024*1024*5;
|
||||
--replace_column 1 <Id> 6 <Time>
|
||||
SHOW PROCESSLIST;
|
||||
--enable_warnings
|
||||
|
||||
|
@ -556,7 +556,7 @@ BackupRestore::logEntry(const LogEntry & tup)
|
||||
NdbTransaction * trans = m_ndb->startTransaction();
|
||||
if (trans == NULL)
|
||||
{
|
||||
// Deep shit, TODO: handle the error
|
||||
// TODO: handle the error
|
||||
err << "Cannot start transaction" << endl;
|
||||
exitHandler();
|
||||
} // if
|
||||
@ -693,7 +693,7 @@ BackupRestore::tuple(const TupleS & tup)
|
||||
NdbTransaction * trans = m_ndb->startTransaction();
|
||||
if (trans == NULL)
|
||||
{
|
||||
// Deep shit, TODO: handle the error
|
||||
// TODO: handle the error
|
||||
ndbout << "Cannot start transaction" << endl;
|
||||
exitHandler();
|
||||
} // if
|
||||
|
@ -373,7 +373,7 @@ BackupRestore::tuple(const TupleS & tup)
|
||||
NdbTransaction * trans = m_ndb->startTransaction();
|
||||
if (trans == NULL)
|
||||
{
|
||||
// Deep shit, TODO: handle the error
|
||||
// TODO: handle the error
|
||||
ndbout << "Cannot start transaction" << endl;
|
||||
exit(-1);
|
||||
} // if
|
||||
@ -462,7 +462,7 @@ BackupRestore::logEntry(const LogEntry & tup)
|
||||
NdbTransaction * trans = m_ndb->startTransaction();
|
||||
if (trans == NULL)
|
||||
{
|
||||
// Deep shit, TODO: handle the error
|
||||
// TODO: handle the error
|
||||
ndbout << "Cannot start transaction" << endl;
|
||||
exit(-1);
|
||||
} // if
|
||||
|
@ -293,12 +293,7 @@ sub start_mysqlds()
|
||||
@groups = &find_groups($groupids);
|
||||
for ($i = 0; defined($groups[$i]); $i++)
|
||||
{
|
||||
# Defaults are made explicit parameters to server execution...
|
||||
@options = defaults_for_group($groups[$i]);
|
||||
# ...so server MUST NOT try to read again from some config file, especially
|
||||
# as the "right" file may be unknown to the server if we are using
|
||||
# --defaults-file=... params in here.
|
||||
unshift(@options,"--no-defaults");
|
||||
|
||||
$mysqld_found= 1; # The default
|
||||
$mysqld_found= 0 if (!length($mysqld));
|
||||
|
@ -49,11 +49,11 @@ $0 Ver $VERSION
|
||||
|
||||
Usage: $0 db_name[./table_regex/] [new_db_name | directory]
|
||||
|
||||
-?, --help display this helpscreen and exit
|
||||
-?, --help display this help-screen and exit
|
||||
-u, --user=# user for database login if not current user
|
||||
-p, --password=# password to use when connecting to server (if not set
|
||||
in my.cnf, which is recommended)
|
||||
-h, --host=# Hostname for local server when connecting over TCP/IP
|
||||
-h, --host=# hostname for local server when connecting over TCP/IP
|
||||
-P, --port=# port to use when connecting to local server with TCP/IP
|
||||
-S, --socket=# socket to use when connecting to local server
|
||||
|
||||
@ -86,7 +86,7 @@ sub usage {
|
||||
|
||||
# Do not initialize user or password options; that way, any user/password
|
||||
# options specified in option files will be used. If no values are specified
|
||||
# all, the defaults will be used (login name, no password).
|
||||
# at all, the defaults will be used (login name, no password).
|
||||
|
||||
my %opt = (
|
||||
noindices => 0,
|
||||
@ -95,7 +95,7 @@ my %opt = (
|
||||
method => "cp",
|
||||
flushlog => 0,
|
||||
);
|
||||
Getopt::Long::Configure(qw(no_ignore_case)); # disambuguate -p and -P
|
||||
Getopt::Long::Configure(qw(no_ignore_case)); # disambiguate -p and -P
|
||||
GetOptions( \%opt,
|
||||
"help",
|
||||
"host|h=s",
|
||||
@ -453,7 +453,7 @@ else {
|
||||
printf "Locked $num_tables tables in %d seconds.\n", time-$start unless $opt{quiet};
|
||||
$hc_started = time; # count from time lock is granted
|
||||
|
||||
# flush tables to make on-disk copy uptodate
|
||||
# flush tables to make on-disk copy up to date
|
||||
$start = time;
|
||||
$dbh->do("FLUSH TABLES /*!32323 $hc_tables */");
|
||||
printf "Flushed tables ($hc_tables) in %d seconds.\n", time-$start unless $opt{quiet};
|
||||
@ -895,7 +895,7 @@ tables and you don't want to have all the tables locked for the
|
||||
whole duration.
|
||||
|
||||
In this situation, I<if> you are happy for groups of tables to be
|
||||
backed up separately (and thus possibly not be logically consistant
|
||||
backed up separately (and thus possibly not be logically consistent
|
||||
with one another) then you can run mysqlhotcopy several times on
|
||||
the same database each with different db_name./table_regex/.
|
||||
All but the first should use the --addtodest option so the tables
|
||||
@ -920,7 +920,7 @@ server in a mutual replication setup.
|
||||
|
||||
=item --regexp pattern
|
||||
|
||||
Copy all databases with names matching the pattern
|
||||
Copy all databases with names matching the pattern.
|
||||
|
||||
=item --regexp /pattern1/./pattern2/
|
||||
|
||||
@ -933,7 +933,7 @@ names begin with 'bar' from all databases which names end with 'foo':
|
||||
=item db_name./pattern/
|
||||
|
||||
Copy only tables matching pattern. Shell metacharacters ( (, ), |, !,
|
||||
etc.) have to be escaped (e.g. \). For example, to select all tables
|
||||
etc.) have to be escaped (e.g., \). For example, to select all tables
|
||||
in database db1 whose names begin with 'foo' or 'bar':
|
||||
|
||||
mysqlhotcopy --indices --method=cp db1./^\(foo\|bar\)/
|
||||
@ -947,19 +947,19 @@ that do not begin with foo nor bar:
|
||||
|
||||
=item -?, --help
|
||||
|
||||
Display helpscreen and exit
|
||||
Display help-screen and exit.
|
||||
|
||||
=item -u, --user=#
|
||||
|
||||
user for database login if not current user
|
||||
User for database login if not current user.
|
||||
|
||||
=item -p, --password=#
|
||||
|
||||
password to use when connecting to the server. Note that you are strongly
|
||||
Password to use when connecting to the server. Note that you are strongly
|
||||
encouraged *not* to use this option as every user would be able to see the
|
||||
password in the process list. Instead use the '[mysqlhotcopy]' section in
|
||||
one of the config files, normally /etc/my.cnf or your personal ~/.my.cnf.
|
||||
(See the chapter 'my.cnf Option Files' in the manual)
|
||||
(See the chapter 'my.cnf Option Files' in the manual.)
|
||||
|
||||
=item -h, -h, --host=#
|
||||
|
||||
@ -968,12 +968,12 @@ different from 'localhost' will trigger mysqlhotcopy to use TCP/IP connection.
|
||||
|
||||
=item -P, --port=#
|
||||
|
||||
port to use when connecting to MySQL server with TCP/IP. This is only used
|
||||
Port to use when connecting to MySQL server with TCP/IP. This is only used
|
||||
when using the --host option.
|
||||
|
||||
=item -S, --socket=#
|
||||
|
||||
UNIX domain socket to use when connecting to local server
|
||||
UNIX domain socket to use when connecting to local server.
|
||||
|
||||
=item --noindices
|
||||
|
||||
@ -983,7 +983,7 @@ on the backup.
|
||||
|
||||
=item --method=#
|
||||
|
||||
method for copy (only "cp" currently supported). Alpha support for
|
||||
Method for copy (only "cp" currently supported). Alpha support for
|
||||
"scp" was added in November 2000. Your experience with the scp method
|
||||
will vary with your ability to understand how scp works. 'man scp'
|
||||
and 'man ssh' are your friends.
|
||||
@ -1000,15 +1000,15 @@ scp or rsync the files at your leisure.
|
||||
|
||||
=item -q, --quiet
|
||||
|
||||
be silent except for errors
|
||||
Be silent except for errors.
|
||||
|
||||
=item --debug
|
||||
|
||||
Debug messages are displayed
|
||||
Debug messages are displayed.
|
||||
|
||||
=item -n, --dryrun
|
||||
|
||||
Display commands without actually doing them
|
||||
Display commands without actually doing them.
|
||||
|
||||
=back
|
||||
|
||||
@ -1030,18 +1030,18 @@ to be specified on the command line:
|
||||
mysqlhotcopy db newdb t1 t2 /^foo_/ : t3 /^bar_/ : +
|
||||
|
||||
where ":" delimits the subsets, the /^foo_/ indicates all tables
|
||||
with names begining with "foo_" and the "+" indicates all tables
|
||||
with names beginning with "foo_" and the "+" indicates all tables
|
||||
not copied by the previous subsets.
|
||||
|
||||
newdb is either another not existing database or a full path to a directory
|
||||
where we can create a directory 'db'
|
||||
'newdb' is either the name of the new database, or the full path name
|
||||
of the new database file. The database should not already exist.
|
||||
|
||||
Add option to lock each table in turn for people who don\'t need
|
||||
cross-table integrity.
|
||||
|
||||
Add option to FLUSH STATUS just before UNLOCK TABLES.
|
||||
|
||||
Add support for other copy methods (eg tar to single file?).
|
||||
Add support for other copy methods (e.g., tar to single file?).
|
||||
|
||||
Add support for forthcoming MySQL ``RAID'' table subdirectory layouts.
|
||||
|
||||
@ -1049,26 +1049,26 @@ Add support for forthcoming MySQL ``RAID'' table subdirectory layouts.
|
||||
|
||||
Tim Bunce
|
||||
|
||||
Martin Waite - added checkpoint, flushlog, regexp and dryrun options
|
||||
Martin Waite - Added checkpoint, flushlog, regexp and dryrun options.
|
||||
Fixed cleanup of targets when hotcopy fails.
|
||||
Added --record_log_pos.
|
||||
Added --record_log_pos.
|
||||
RAID tables are now copied (don't know if this works over scp).
|
||||
|
||||
Ralph Corderoy - added synonyms for commands
|
||||
Ralph Corderoy - Added synonyms for commands.
|
||||
|
||||
Scott Wiersdorf - added table regex and scp support
|
||||
Scott Wiersdorf - Added table regex and scp support.
|
||||
|
||||
Monty - working --noindex (copy only first 2048 bytes of index file)
|
||||
Fixes for --method=scp
|
||||
Monty - Working --noindex (copy only first 2048 bytes of index file).
|
||||
Fixes for --method=scp.
|
||||
|
||||
Ask Bjoern Hansen - Cleanup code to fix a few bugs and enable -w again.
|
||||
|
||||
Emil S. Hansen - Added resetslave and resetmaster.
|
||||
|
||||
Jeremy D. Zawodny - Removed depricated DBI calls. Fixed bug which
|
||||
Jeremy D. Zawodny - Removed deprecated DBI calls. Fixed bug which
|
||||
resulted in nothing being copied when a regexp was specified but no
|
||||
database name(s).
|
||||
|
||||
Martin Waite - Fix to handle database name that contains space.
|
||||
|
||||
Paul DuBois - Remove end '/' from directory names
|
||||
Paul DuBois - Remove end '/' from directory names.
|
||||
|
@ -522,8 +522,7 @@ int Instance_options::add_option(const char* option)
|
||||
switch (selected_options->type) {
|
||||
case SAVE_WHOLE_AND_ADD:
|
||||
*(selected_options->value)= tmp;
|
||||
insert_dynamic(&options_array,(gptr) &tmp);
|
||||
return 0;
|
||||
return insert_dynamic(&options_array,(gptr) &tmp);
|
||||
case SAVE_VALUE:
|
||||
*(selected_options->value)= strchr(tmp, '=') + 1;
|
||||
return 0;
|
||||
|
12
sql/field.cc
12
sql/field.cc
@ -5987,13 +5987,13 @@ int Field_str::store(double nr)
|
||||
calculate the maximum number of significant digits if the 'f'-format
|
||||
would be used (+1 for decimal point if the number has a fractional part).
|
||||
*/
|
||||
digits= max(0, (int) max_length - fractional);
|
||||
digits= max(1, (int) max_length - fractional);
|
||||
/*
|
||||
If the exponent is negative, decrease digits by the number of leading zeros
|
||||
after the decimal point that do not count as significant digits.
|
||||
*/
|
||||
if (exp < 0)
|
||||
digits= max(0, (int) digits + exp);
|
||||
digits= max(1, (int) digits + exp);
|
||||
/*
|
||||
'e'-format is used only if the exponent is less than -4 or greater than or
|
||||
equal to the precision. In this case we need to adjust the number of
|
||||
@ -6001,7 +6001,7 @@ int Field_str::store(double nr)
|
||||
We also have to reserve one additional character if abs(exp) >= 100.
|
||||
*/
|
||||
if (exp >= (int) digits || exp < -4)
|
||||
digits= max(0, (int) (max_length - 5 - (exp >= 100 || exp <= -100)));
|
||||
digits= max(1, (int) (max_length - 5 - (exp >= 100 || exp <= -100)));
|
||||
|
||||
/* Limit precision to DBL_DIG to avoid garbage past significant digits */
|
||||
set_if_smaller(digits, DBL_DIG);
|
||||
@ -8587,16 +8587,16 @@ bool create_field::init(THD *thd, char *fld_name, enum_field_types fld_type,
|
||||
else if (tmp_length > PRECISION_FOR_FLOAT)
|
||||
{
|
||||
sql_type= FIELD_TYPE_DOUBLE;
|
||||
length= DBL_DIG+7; /* -[digits].E+### */
|
||||
length= MAX_DOUBLE_STR_LENGTH;
|
||||
}
|
||||
else
|
||||
length= FLT_DIG+6; /* -[digits].E+## */
|
||||
length= MAX_FLOAT_STR_LENGTH;
|
||||
decimals= NOT_FIXED_DEC;
|
||||
break;
|
||||
}
|
||||
if (!fld_length && !fld_decimals)
|
||||
{
|
||||
length= FLT_DIG+6;
|
||||
length= MAX_FLOAT_STR_LENGTH;
|
||||
decimals= NOT_FIXED_DEC;
|
||||
}
|
||||
if (length < decimals &&
|
||||
|
@ -234,6 +234,11 @@ extern ulong srv_thread_sleep_delay;
|
||||
extern ulong srv_thread_concurrency;
|
||||
extern ulong srv_commit_concurrency;
|
||||
extern ulong srv_flush_log_at_trx_commit;
|
||||
/* An option to enable the fix for "Bug#43660 SHOW INDEXES/ANALYZE does
|
||||
NOT update cardinality for indexes of InnoDB table". By default we are
|
||||
running with the fix disabled because MySQL 5.1 is frozen for such
|
||||
behavioral changes. */
|
||||
extern char srv_use_legacy_cardinality_algorithm;
|
||||
}
|
||||
|
||||
bool innobase_init(void);
|
||||
|
@ -730,6 +730,16 @@ end:
|
||||
if (is_real_trans)
|
||||
start_waiting_global_read_lock(thd);
|
||||
}
|
||||
else if (all)
|
||||
{
|
||||
/*
|
||||
A COMMIT of an empty transaction. There may be savepoints.
|
||||
Destroy them. If the transaction is not empty
|
||||
savepoints are cleared in ha_commit_one_phase()
|
||||
or ha_rollback_trans().
|
||||
*/
|
||||
thd->transaction.cleanup();
|
||||
}
|
||||
#endif /* USING_TRANSACTIONS */
|
||||
DBUG_RETURN(error);
|
||||
}
|
||||
@ -825,11 +835,11 @@ int ha_rollback_trans(THD *thd, bool all)
|
||||
thd->transaction.xid_state.xid.null();
|
||||
}
|
||||
if (all)
|
||||
{
|
||||
thd->variables.tx_isolation=thd->session_tx_isolation;
|
||||
thd->transaction.cleanup();
|
||||
}
|
||||
}
|
||||
/* Always cleanup. Even if there nht==0. There may be savepoints. */
|
||||
if (all)
|
||||
thd->transaction.cleanup();
|
||||
#endif /* USING_TRANSACTIONS */
|
||||
if (all)
|
||||
thd->transaction_rollback_request= FALSE;
|
||||
|
38
sql/item.cc
38
sql/item.cc
@ -1282,7 +1282,10 @@ bool Item_name_const::fix_fields(THD *thd, Item **ref)
|
||||
my_error(ER_RESERVED_SYNTAX, MYF(0), "NAME_CONST");
|
||||
return TRUE;
|
||||
}
|
||||
set_name(item_name->ptr(), (uint) item_name->length(), system_charset_info);
|
||||
if (is_autogenerated_name)
|
||||
{
|
||||
set_name(item_name->ptr(), (uint) item_name->length(), system_charset_info);
|
||||
}
|
||||
collation.set(value_item->collation.collation, DERIVATION_IMPLICIT);
|
||||
max_length= value_item->max_length;
|
||||
decimals= value_item->decimals;
|
||||
@ -1320,6 +1323,7 @@ public:
|
||||
else
|
||||
Item_ident::print(str);
|
||||
}
|
||||
virtual Ref_Type ref_type() { return AGGREGATE_REF; }
|
||||
};
|
||||
|
||||
|
||||
@ -4337,7 +4341,7 @@ Item *Item_field::replace_equal_field(byte *arg)
|
||||
return const_item;
|
||||
}
|
||||
Item_field *subst= item_equal->get_first();
|
||||
if (subst && !field->eq(subst->field))
|
||||
if (subst && field->table != subst->field->table && !field->eq(subst->field))
|
||||
return subst;
|
||||
}
|
||||
return this;
|
||||
@ -6966,18 +6970,26 @@ bool Item_type_holder::join_types(THD *thd, Item *item)
|
||||
{
|
||||
if (decimals != NOT_FIXED_DEC)
|
||||
{
|
||||
int delta1= max_length_orig - decimals_orig;
|
||||
int delta2= item->max_length - item->decimals;
|
||||
max_length= max(delta1, delta2) + decimals;
|
||||
if (fld_type == MYSQL_TYPE_FLOAT && max_length > FLT_DIG + 2)
|
||||
/*
|
||||
For FLOAT(M,D)/DOUBLE(M,D) do not change precision
|
||||
if both fields have the same M and D
|
||||
*/
|
||||
if (item->max_length != max_length_orig ||
|
||||
item->decimals != decimals_orig)
|
||||
{
|
||||
max_length= FLT_DIG + 6;
|
||||
decimals= NOT_FIXED_DEC;
|
||||
}
|
||||
if (fld_type == MYSQL_TYPE_DOUBLE && max_length > DBL_DIG + 2)
|
||||
{
|
||||
max_length= DBL_DIG + 7;
|
||||
decimals= NOT_FIXED_DEC;
|
||||
int delta1= max_length_orig - decimals_orig;
|
||||
int delta2= item->max_length - item->decimals;
|
||||
max_length= max(delta1, delta2) + decimals;
|
||||
if (fld_type == MYSQL_TYPE_FLOAT && max_length > FLT_DIG + 2)
|
||||
{
|
||||
max_length= MAX_FLOAT_STR_LENGTH;
|
||||
decimals= NOT_FIXED_DEC;
|
||||
}
|
||||
else if (fld_type == MYSQL_TYPE_DOUBLE && max_length > DBL_DIG + 2)
|
||||
{
|
||||
max_length= MAX_DOUBLE_STR_LENGTH;
|
||||
decimals= NOT_FIXED_DEC;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -1899,7 +1899,7 @@ class Item_ref :public Item_ident
|
||||
protected:
|
||||
void set_properties();
|
||||
public:
|
||||
enum Ref_Type { REF, DIRECT_REF, VIEW_REF, OUTER_REF };
|
||||
enum Ref_Type { REF, DIRECT_REF, VIEW_REF, OUTER_REF, AGGREGATE_REF };
|
||||
Field *result_field; /* Save result here */
|
||||
Item **ref;
|
||||
Item_ref(Name_resolution_context *context_arg,
|
||||
|
@ -3377,6 +3377,10 @@ longlong Item_master_pos_wait::val_int()
|
||||
}
|
||||
|
||||
#ifdef EXTRA_DEBUG
|
||||
/**
|
||||
This will release the user lock that the thread currently locked,
|
||||
please see also the comment of DEBUG_SYNC_POINT.
|
||||
*/
|
||||
void debug_sync_point(const char* lock_name, uint lock_timeout)
|
||||
{
|
||||
THD* thd=current_thd;
|
||||
|
@ -70,10 +70,17 @@ String *Item_func_geometry_from_wkb::val_str(String *str)
|
||||
{
|
||||
DBUG_ASSERT(fixed == 1);
|
||||
String arg_val;
|
||||
String *wkb= args[0]->val_str(&arg_val);
|
||||
String *wkb;
|
||||
Geometry_buffer buffer;
|
||||
uint32 srid= 0;
|
||||
|
||||
if (args[0]->field_type() == MYSQL_TYPE_GEOMETRY)
|
||||
{
|
||||
return args[0]->val_str(str);
|
||||
}
|
||||
|
||||
wkb= args[0]->val_str(&arg_val);
|
||||
|
||||
if ((arg_count == 2) && !args[1]->null_value)
|
||||
srid= (uint32)args[1]->val_int();
|
||||
|
||||
@ -83,8 +90,8 @@ String *Item_func_geometry_from_wkb::val_str(String *str)
|
||||
str->length(0);
|
||||
str->q_append(srid);
|
||||
if ((null_value=
|
||||
(args[0]->null_value ||
|
||||
!Geometry::create_from_wkb(&buffer, wkb->ptr(), wkb->length(), str))))
|
||||
(args[0]->null_value ||
|
||||
!Geometry::create_from_wkb(&buffer, wkb->ptr(), wkb->length(), str))))
|
||||
return 0;
|
||||
return str;
|
||||
}
|
||||
@ -337,14 +344,16 @@ String *Item_func_point::val_str(String *str)
|
||||
DBUG_ASSERT(fixed == 1);
|
||||
double x= args[0]->val_real();
|
||||
double y= args[1]->val_real();
|
||||
uint32 srid= 0;
|
||||
|
||||
if ((null_value= (args[0]->null_value ||
|
||||
args[1]->null_value ||
|
||||
str->realloc(1 + 4 + SIZEOF_STORED_DOUBLE*2))))
|
||||
str->realloc(4/*SRID*/ + 1 + 4 + SIZEOF_STORED_DOUBLE*2))))
|
||||
return 0;
|
||||
|
||||
str->set_charset(&my_charset_bin);
|
||||
str->length(0);
|
||||
str->q_append(srid);
|
||||
str->q_append((char)Geometry::wkb_ndr);
|
||||
str->q_append((uint32)Geometry::wkb_point);
|
||||
str->q_append(x);
|
||||
@ -368,12 +377,14 @@ String *Item_func_spatial_collection::val_str(String *str)
|
||||
DBUG_ASSERT(fixed == 1);
|
||||
String arg_value;
|
||||
uint i;
|
||||
uint32 srid= 0;
|
||||
|
||||
str->set_charset(&my_charset_bin);
|
||||
str->length(0);
|
||||
if (str->reserve(1 + 4 + 4, 512))
|
||||
if (str->reserve(4/*SRID*/ + 1 + 4 + 4, 512))
|
||||
goto err;
|
||||
|
||||
str->q_append(srid);
|
||||
str->q_append((char) Geometry::wkb_ndr);
|
||||
str->q_append((uint32) coll_type);
|
||||
str->q_append((uint32) arg_count);
|
||||
@ -391,13 +402,13 @@ String *Item_func_spatial_collection::val_str(String *str)
|
||||
In the case of GeometryCollection we don't need any checkings
|
||||
for item types, so just copy them into target collection
|
||||
*/
|
||||
if (str->append(res->ptr(), len, (uint32) 512))
|
||||
if (str->append(res->ptr() + 4/*SRID*/, len - 4/*SRID*/, (uint32) 512))
|
||||
goto err;
|
||||
}
|
||||
else
|
||||
{
|
||||
enum Geometry::wkbType wkb_type;
|
||||
const char *data= res->ptr() + 1;
|
||||
const char *data= res->ptr() + 4/*SRID*/ + 1;
|
||||
|
||||
/*
|
||||
In the case of named collection we must check that items
|
||||
@ -406,7 +417,7 @@ String *Item_func_spatial_collection::val_str(String *str)
|
||||
|
||||
wkb_type= (Geometry::wkbType) uint4korr(data);
|
||||
data+= 4;
|
||||
len-= 5;
|
||||
len-= 5 + 4/*SRID*/;
|
||||
if (wkb_type != item_type)
|
||||
goto err;
|
||||
|
||||
|
@ -473,17 +473,21 @@ String *Item_func_des_encrypt::val_str(String *str)
|
||||
string marking change of string length.
|
||||
*/
|
||||
|
||||
tail= (8-(res_length) % 8); // 1..8 marking extra length
|
||||
tail= 8 - (res_length % 8); // 1..8 marking extra length
|
||||
res_length+=tail;
|
||||
tmp_arg.realloc(res_length);
|
||||
tmp_arg.length(0);
|
||||
tmp_arg.append(res->ptr(), res->length());
|
||||
code= ER_OUT_OF_RESOURCES;
|
||||
if (tail && res->append(append_str, tail) || tmp_value.alloc(res_length+1))
|
||||
if (tmp_arg.append(append_str, tail) || tmp_value.alloc(res_length+1))
|
||||
goto error;
|
||||
(*res)[res_length-1]=tail; // save extra length
|
||||
tmp_arg[res_length-1]=tail; // save extra length
|
||||
tmp_value.realloc(res_length+1);
|
||||
tmp_value.length(res_length+1);
|
||||
tmp_value[0]=(char) (128 | key_number);
|
||||
// Real encryption
|
||||
bzero((char*) &ivec,sizeof(ivec));
|
||||
DES_ede3_cbc_encrypt((const uchar*) (res->ptr()),
|
||||
DES_ede3_cbc_encrypt((const uchar*) (tmp_arg.ptr()),
|
||||
(uchar*) (tmp_value.ptr()+1),
|
||||
res_length,
|
||||
&keyschedule.ks1,
|
||||
|
@ -306,13 +306,17 @@ public:
|
||||
|
||||
class Item_func_des_encrypt :public Item_str_func
|
||||
{
|
||||
String tmp_value;
|
||||
String tmp_value,tmp_arg;
|
||||
public:
|
||||
Item_func_des_encrypt(Item *a) :Item_str_func(a) {}
|
||||
Item_func_des_encrypt(Item *a, Item *b): Item_str_func(a,b) {}
|
||||
String *val_str(String *);
|
||||
void fix_length_and_dec()
|
||||
{ maybe_null=1; max_length = args[0]->max_length+8; }
|
||||
{
|
||||
maybe_null=1;
|
||||
/* 9 = MAX ((8- (arg_len % 8)) + 1) */
|
||||
max_length = args[0]->max_length + 9;
|
||||
}
|
||||
const char *func_name() const { return "des_encrypt"; }
|
||||
};
|
||||
|
||||
@ -323,7 +327,12 @@ public:
|
||||
Item_func_des_decrypt(Item *a) :Item_str_func(a) {}
|
||||
Item_func_des_decrypt(Item *a, Item *b): Item_str_func(a,b) {}
|
||||
String *val_str(String *);
|
||||
void fix_length_and_dec() { maybe_null=1; max_length = args[0]->max_length; }
|
||||
void fix_length_and_dec()
|
||||
{
|
||||
maybe_null=1;
|
||||
/* 9 = MAX ((8- (arg_len % 8)) + 1) */
|
||||
max_length = args[0]->max_length - 9;
|
||||
}
|
||||
const char *func_name() const { return "des_decrypt"; }
|
||||
};
|
||||
|
||||
|
15
sql/log.cc
15
sql/log.cc
@ -158,7 +158,8 @@ static int binlog_commit(THD *thd, bool all)
|
||||
*/
|
||||
if (all || !(thd->options & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN)))
|
||||
{
|
||||
Query_log_event qev(thd, STRING_WITH_LEN("COMMIT"), TRUE, FALSE);
|
||||
Query_log_event qev(thd, STRING_WITH_LEN("COMMIT"),
|
||||
TRUE, FALSE, THD::KILLED_NO_VALUE);
|
||||
qev.error_code= 0; // see comment in MYSQL_LOG::write(THD, IO_CACHE)
|
||||
DBUG_RETURN(binlog_end_trans(thd, trans_log, &qev));
|
||||
}
|
||||
@ -202,7 +203,8 @@ static int binlog_rollback(THD *thd, bool all)
|
||||
*/
|
||||
if (unlikely(thd->transaction.all.modified_non_trans_table))
|
||||
{
|
||||
Query_log_event qev(thd, STRING_WITH_LEN("ROLLBACK"), TRUE, FALSE);
|
||||
Query_log_event qev(thd, STRING_WITH_LEN("ROLLBACK"),
|
||||
TRUE, FALSE, THD::KILLED_NO_VALUE);
|
||||
qev.error_code= 0; // see comment in MYSQL_LOG::write(THD, IO_CACHE)
|
||||
error= binlog_end_trans(thd, trans_log, &qev);
|
||||
}
|
||||
@ -240,7 +242,8 @@ static int binlog_savepoint_set(THD *thd, void *sv)
|
||||
|
||||
*(my_off_t *)sv= my_b_tell(trans_log);
|
||||
/* Write it to the binary log */
|
||||
Query_log_event qinfo(thd, thd->query, thd->query_length, TRUE, FALSE);
|
||||
Query_log_event qinfo(thd, thd->query, thd->query_length,
|
||||
TRUE, FALSE, THD::KILLED_NO_VALUE);
|
||||
DBUG_RETURN(mysql_bin_log.write(&qinfo));
|
||||
}
|
||||
|
||||
@ -257,7 +260,8 @@ static int binlog_savepoint_rollback(THD *thd, void *sv)
|
||||
*/
|
||||
if (unlikely(thd->transaction.all.modified_non_trans_table))
|
||||
{
|
||||
Query_log_event qinfo(thd, thd->query, thd->query_length, TRUE, FALSE);
|
||||
Query_log_event qinfo(thd, thd->query, thd->query_length,
|
||||
TRUE, FALSE, THD::KILLED_NO_VALUE);
|
||||
DBUG_RETURN(mysql_bin_log.write(&qinfo));
|
||||
}
|
||||
reinit_io_cache(trans_log, WRITE_CACHE, *(my_off_t *)sv, 0, 0);
|
||||
@ -2089,7 +2093,8 @@ bool MYSQL_LOG::write(THD *thd, IO_CACHE *cache, Log_event *commit_event)
|
||||
transaction is either a BEGIN..COMMIT block or a single
|
||||
statement in autocommit mode.
|
||||
*/
|
||||
Query_log_event qinfo(thd, STRING_WITH_LEN("BEGIN"), TRUE, FALSE);
|
||||
Query_log_event qinfo(thd, STRING_WITH_LEN("BEGIN"),
|
||||
TRUE, FALSE, THD::KILLED_NO_VALUE);
|
||||
/*
|
||||
Imagine this is rollback due to net timeout, after all
|
||||
statements of the transaction succeeded. Then we want a
|
||||
|
@ -1358,6 +1358,9 @@ Query_log_event::Query_log_event(THD* thd_arg, const char* query_arg,
|
||||
{
|
||||
time_t end_time;
|
||||
|
||||
DBUG_EXECUTE_IF("debug_lock_before_query_log_event",
|
||||
DBUG_SYNC_POINT("debug_lock.before_query_log_event", 10););
|
||||
|
||||
if (killed_status_arg == THD::KILLED_NO_VALUE)
|
||||
killed_status_arg= thd_arg->killed;
|
||||
error_code=
|
||||
|
@ -813,9 +813,13 @@ public:
|
||||
|
||||
#ifndef MYSQL_CLIENT
|
||||
|
||||
/*
|
||||
for argument killed_err_arg, use ` THD::NOT_KILLED ' if the killed
|
||||
status should be ignored, otherwise use `THD::KILLED_NO_VALUE'
|
||||
*/
|
||||
Query_log_event(THD* thd_arg, const char* query_arg, ulong query_length,
|
||||
bool using_trans, bool suppress_use,
|
||||
THD::killed_state killed_err_arg= THD::KILLED_NO_VALUE);
|
||||
THD::killed_state killed_err_arg);
|
||||
const char* get_db() { return db; }
|
||||
#ifdef HAVE_REPLICATION
|
||||
void pack_info(Protocol* protocol);
|
||||
|
@ -251,6 +251,11 @@ MY_LOCALE *my_locale_by_number(uint number);
|
||||
#define PRECISION_FOR_DOUBLE 53
|
||||
#define PRECISION_FOR_FLOAT 24
|
||||
|
||||
/* -[digits].E+## */
|
||||
#define MAX_FLOAT_STR_LENGTH (FLT_DIG + 6)
|
||||
/* -[digits].E+### */
|
||||
#define MAX_DOUBLE_STR_LENGTH (DBL_DIG + 7)
|
||||
|
||||
/*
|
||||
Default time to wait before aborting a new client connection
|
||||
that does not respond to "initial server greeting" timely
|
||||
@ -451,6 +456,13 @@ MY_LOCALE *my_locale_by_number(uint number);
|
||||
The client tells the server to block with SELECT GET_LOCK()
|
||||
and unblocks it with SELECT RELEASE_LOCK(). Used for debugging difficult
|
||||
concurrency problems
|
||||
|
||||
NOTE: This will release the user lock that the thread currently
|
||||
locked, which can cause problem if users want to use user locks for
|
||||
other purposes. In order to overcome this problem, it's adviced to
|
||||
wrap the call to DBUG_SYNC_POINT() within the DBUG_EXECUTE_IF(), so
|
||||
that it will only be activated if the given keyword is included in
|
||||
the 'debug' option, and will not fiddle user locks otherwise.
|
||||
*/
|
||||
#define DBUG_SYNC_POINT(lock_name,lock_timeout) \
|
||||
debug_sync_point(lock_name,lock_timeout)
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user