Merge 10.4 into 10.5
This commit is contained in:
commit
5203bc10f1
@ -1,4 +1,5 @@
|
||||
/* Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2020, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -17,7 +18,7 @@
|
||||
Endianness-independent definitions for architectures other
|
||||
than the x86 architecture.
|
||||
*/
|
||||
#define sint2korr(A) (int16) (((int16) ((uchar) (A)[0])) +\
|
||||
#define sint2korr(A) (int16) (((int16) ((uchar) (A)[0])) |\
|
||||
((int16) ((int16) (A)[1]) << 8))
|
||||
#define sint3korr(A) ((int32) ((((uchar) (A)[2]) & 128) ? \
|
||||
(((uint32) 255L << 24) | \
|
||||
@ -27,38 +28,38 @@
|
||||
(((uint32) (uchar) (A)[2]) << 16) |\
|
||||
(((uint32) (uchar) (A)[1]) << 8) | \
|
||||
((uint32) (uchar) (A)[0])))
|
||||
#define sint4korr(A) (int32) (((int32) ((uchar) (A)[0])) +\
|
||||
(((int32) ((uchar) (A)[1]) << 8)) +\
|
||||
(((int32) ((uchar) (A)[2]) << 16)) +\
|
||||
#define sint4korr(A) (int32) (((int32) ((uchar) (A)[0])) |\
|
||||
(((int32) ((uchar) (A)[1]) << 8)) |\
|
||||
(((int32) ((uchar) (A)[2]) << 16)) |\
|
||||
(((int32) ((int16) (A)[3]) << 24)))
|
||||
#define sint8korr(A) (longlong) uint8korr(A)
|
||||
#define uint2korr(A) (uint16) (((uint16) ((uchar) (A)[0])) +\
|
||||
#define uint2korr(A) (uint16) (((uint16) ((uchar) (A)[0])) |\
|
||||
((uint16) ((uchar) (A)[1]) << 8))
|
||||
#define uint3korr(A) (uint32) (((uint32) ((uchar) (A)[0])) +\
|
||||
(((uint32) ((uchar) (A)[1])) << 8) +\
|
||||
#define uint3korr(A) (uint32) (((uint32) ((uchar) (A)[0])) |\
|
||||
(((uint32) ((uchar) (A)[1])) << 8) |\
|
||||
(((uint32) ((uchar) (A)[2])) << 16))
|
||||
#define uint4korr(A) (uint32) (((uint32) ((uchar) (A)[0])) +\
|
||||
(((uint32) ((uchar) (A)[1])) << 8) +\
|
||||
(((uint32) ((uchar) (A)[2])) << 16) +\
|
||||
#define uint4korr(A) (uint32) (((uint32) ((uchar) (A)[0])) |\
|
||||
(((uint32) ((uchar) (A)[1])) << 8) |\
|
||||
(((uint32) ((uchar) (A)[2])) << 16) |\
|
||||
(((uint32) ((uchar) (A)[3])) << 24))
|
||||
#define uint5korr(A) ((ulonglong)(((uint32) ((uchar) (A)[0])) +\
|
||||
(((uint32) ((uchar) (A)[1])) << 8) +\
|
||||
(((uint32) ((uchar) (A)[2])) << 16) +\
|
||||
(((uint32) ((uchar) (A)[3])) << 24)) +\
|
||||
#define uint5korr(A) ((ulonglong)(((uint32) ((uchar) (A)[0])) |\
|
||||
(((uint32) ((uchar) (A)[1])) << 8) |\
|
||||
(((uint32) ((uchar) (A)[2])) << 16) |\
|
||||
(((uint32) ((uchar) (A)[3])) << 24)) |\
|
||||
(((ulonglong) ((uchar) (A)[4])) << 32))
|
||||
#define uint6korr(A) ((ulonglong)(((uint32) ((uchar) (A)[0])) + \
|
||||
(((uint32) ((uchar) (A)[1])) << 8) + \
|
||||
(((uint32) ((uchar) (A)[2])) << 16) + \
|
||||
(((uint32) ((uchar) (A)[3])) << 24)) + \
|
||||
(((ulonglong) ((uchar) (A)[4])) << 32) + \
|
||||
#define uint6korr(A) ((ulonglong)(((uint32) ((uchar) (A)[0])) | \
|
||||
(((uint32) ((uchar) (A)[1])) << 8) | \
|
||||
(((uint32) ((uchar) (A)[2])) << 16) | \
|
||||
(((uint32) ((uchar) (A)[3])) << 24)) | \
|
||||
(((ulonglong) ((uchar) (A)[4])) << 32) | \
|
||||
(((ulonglong) ((uchar) (A)[5])) << 40))
|
||||
#define uint8korr(A) ((ulonglong)(((uint32) ((uchar) (A)[0])) +\
|
||||
(((uint32) ((uchar) (A)[1])) << 8) +\
|
||||
(((uint32) ((uchar) (A)[2])) << 16) +\
|
||||
(((uint32) ((uchar) (A)[3])) << 24)) +\
|
||||
(((ulonglong) (((uint32) ((uchar) (A)[4])) +\
|
||||
(((uint32) ((uchar) (A)[5])) << 8) +\
|
||||
(((uint32) ((uchar) (A)[6])) << 16) +\
|
||||
#define uint8korr(A) ((ulonglong)(((uint32) ((uchar) (A)[0])) |\
|
||||
(((uint32) ((uchar) (A)[1])) << 8) |\
|
||||
(((uint32) ((uchar) (A)[2])) << 16) |\
|
||||
(((uint32) ((uchar) (A)[3])) << 24)) |\
|
||||
(((ulonglong) (((uint32) ((uchar) (A)[4])) |\
|
||||
(((uint32) ((uchar) (A)[5])) << 8) |\
|
||||
(((uint32) ((uchar) (A)[6])) << 16) |\
|
||||
(((uint32) ((uchar) (A)[7])) << 24))) <<\
|
||||
32))
|
||||
#define int2store(T,A) do { uint def_temp= (uint) (A) ;\
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2020, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -27,20 +28,20 @@
|
||||
((uint32) (uchar) (A)[0])))
|
||||
#define sint4korr(A) (*((const long *) (A)))
|
||||
#define uint2korr(A) (*((const uint16 *) (A)))
|
||||
#define uint3korr(A) (uint32) (((uint32) ((uchar) (A)[0])) +\
|
||||
(((uint32) ((uchar) (A)[1])) << 8) +\
|
||||
#define uint3korr(A) (uint32) (((uint32) ((uchar) (A)[0])) |\
|
||||
(((uint32) ((uchar) (A)[1])) << 8) |\
|
||||
(((uint32) ((uchar) (A)[2])) << 16))
|
||||
#define uint4korr(A) (*((const uint32 *) (A)))
|
||||
#define uint5korr(A) ((ulonglong)(((uint32) ((uchar) (A)[0])) +\
|
||||
(((uint32) ((uchar) (A)[1])) << 8) +\
|
||||
(((uint32) ((uchar) (A)[2])) << 16) +\
|
||||
(((uint32) ((uchar) (A)[3])) << 24)) +\
|
||||
#define uint5korr(A) ((ulonglong)(((uint32) ((uchar) (A)[0])) |\
|
||||
(((uint32) ((uchar) (A)[1])) << 8) |\
|
||||
(((uint32) ((uchar) (A)[2])) << 16) |\
|
||||
(((uint32) ((uchar) (A)[3])) << 24)) |\
|
||||
(((ulonglong) ((uchar) (A)[4])) << 32))
|
||||
#define uint6korr(A) ((ulonglong)(((uint32) ((uchar) (A)[0])) + \
|
||||
(((uint32) ((uchar) (A)[1])) << 8) + \
|
||||
(((uint32) ((uchar) (A)[2])) << 16) + \
|
||||
(((uint32) ((uchar) (A)[3])) << 24)) + \
|
||||
(((ulonglong) ((uchar) (A)[4])) << 32) + \
|
||||
#define uint6korr(A) ((ulonglong)(((uint32) ((uchar) (A)[0])) | \
|
||||
(((uint32) ((uchar) (A)[1])) << 8) | \
|
||||
(((uint32) ((uchar) (A)[2])) << 16) | \
|
||||
(((uint32) ((uchar) (A)[3])) << 24)) | \
|
||||
(((ulonglong) ((uchar) (A)[4])) << 32) | \
|
||||
(((ulonglong) ((uchar) (A)[5])) << 40))
|
||||
#define uint8korr(A) (*((const ulonglong *) (A)))
|
||||
#define sint8korr(A) (*((const longlong *) (A)))
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2020, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -28,8 +29,8 @@
|
||||
((uint32) (uchar) (A)[0])))
|
||||
#define sint4korr(A) (int32) (*((int32 *) (A)))
|
||||
#define uint2korr(A) (uint16) (*((uint16 *) (A)))
|
||||
#define uint3korr(A) (uint32) (((uint32) ((uchar) (A)[0])) +\
|
||||
(((uint32) ((uchar) (A)[1])) << 8) +\
|
||||
#define uint3korr(A) (uint32) (((uint32) ((uchar) (A)[0])) |\
|
||||
(((uint32) ((uchar) (A)[1])) << 8) |\
|
||||
(((uint32) ((uchar) (A)[2])) << 16))
|
||||
#define uint4korr(A) (uint32) (*((uint32 *) (A)))
|
||||
|
||||
@ -53,7 +54,7 @@ static inline ulonglong uint6korr(const void *p)
|
||||
#define int2store(T,A) do { uchar *pT= (uchar*)(T);\
|
||||
*((uint16*)(pT))= (uint16) (A);\
|
||||
} while (0)
|
||||
|
||||
|
||||
#define int3store(T,A) do { *(T)= (uchar) ((A));\
|
||||
*(T+1)=(uchar) (((uint) (A) >> 8));\
|
||||
*(T+2)=(uchar) (((A) >> 16));\
|
||||
|
@ -2,6 +2,7 @@
|
||||
#define MYISAMPACK_INCLUDED
|
||||
|
||||
/* Copyright (c) 2000-2002, 2004 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||
Copyright (c) 2020, MariaDB Corporation.
|
||||
Use is subject to license terms.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@ -28,7 +29,7 @@
|
||||
#define mi_sint1korr(A) ((int8)(*A))
|
||||
#define mi_uint1korr(A) ((uint8)(*A))
|
||||
|
||||
#define mi_sint2korr(A) ((int16) (((int16) (((const uchar*) (A))[1])) +\
|
||||
#define mi_sint2korr(A) ((int16) (((int16) (((const uchar*) (A))[1])) |\
|
||||
((int16) ((int16) ((const char*) (A))[0]) << 8)))
|
||||
#define mi_sint3korr(A) ((int32) (((((const uchar*) (A))[0]) & 128) ? \
|
||||
(((uint32) 255L << 24) | \
|
||||
@ -38,58 +39,58 @@
|
||||
(((uint32) ((const uchar*) (A))[0]) << 16) |\
|
||||
(((uint32) ((const uchar*) (A))[1]) << 8) | \
|
||||
((uint32) ((const uchar*) (A))[2])))
|
||||
#define mi_sint4korr(A) ((int32) (((int32) (((const uchar*) (A))[3])) +\
|
||||
((int32) (((const uchar*) (A))[2]) << 8) +\
|
||||
((int32) (((const uchar*) (A))[1]) << 16) +\
|
||||
#define mi_sint4korr(A) ((int32) (((int32) (((const uchar*) (A))[3])) |\
|
||||
((int32) (((const uchar*) (A))[2]) << 8) |\
|
||||
((int32) (((const uchar*) (A))[1]) << 16) |\
|
||||
((int32) ((int16) ((const char*) (A))[0]) << 24)))
|
||||
#define mi_sint8korr(A) ((longlong) mi_uint8korr(A))
|
||||
#define mi_uint2korr(A) ((uint16) (((uint16) (((const uchar*) (A))[1])) +\
|
||||
#define mi_uint2korr(A) ((uint16) (((uint16) (((const uchar*) (A))[1])) |\
|
||||
((uint16) (((const uchar*) (A))[0]) << 8)))
|
||||
#define mi_uint3korr(A) ((uint32) (((uint32) (((const uchar*) (A))[2])) +\
|
||||
(((uint32) (((const uchar*) (A))[1])) << 8) +\
|
||||
#define mi_uint3korr(A) ((uint32) (((uint32) (((const uchar*) (A))[2])) |\
|
||||
(((uint32) (((const uchar*) (A))[1])) << 8) |\
|
||||
(((uint32) (((const uchar*) (A))[0])) << 16)))
|
||||
#define mi_uint4korr(A) ((uint32) (((uint32) (((const uchar*) (A))[3])) +\
|
||||
(((uint32) (((const uchar*) (A))[2])) << 8) +\
|
||||
(((uint32) (((const uchar*) (A))[1])) << 16) +\
|
||||
#define mi_uint4korr(A) ((uint32) (((uint32) (((const uchar*) (A))[3])) |\
|
||||
(((uint32) (((const uchar*) (A))[2])) << 8) |\
|
||||
(((uint32) (((const uchar*) (A))[1])) << 16) |\
|
||||
(((uint32) (((const uchar*) (A))[0])) << 24)))
|
||||
|
||||
#ifndef HAVE_mi_uint5korr
|
||||
#define mi_uint5korr(A) ((ulonglong)(((uint32) (((const uchar*) (A))[4])) +\
|
||||
(((uint32) (((const uchar*) (A))[3])) << 8) +\
|
||||
(((uint32) (((const uchar*) (A))[2])) << 16) +\
|
||||
(((uint32) (((const uchar*) (A))[1])) << 24)) +\
|
||||
#define mi_uint5korr(A) ((ulonglong)(((uint32) (((const uchar*) (A))[4])) |\
|
||||
(((uint32) (((const uchar*) (A))[3])) << 8) |\
|
||||
(((uint32) (((const uchar*) (A))[2])) << 16) |\
|
||||
(((uint32) (((const uchar*) (A))[1])) << 24)) |\
|
||||
(((ulonglong) (((const uchar*) (A))[0])) << 32))
|
||||
#endif /* HAVE_mi_uint5korr */
|
||||
|
||||
#ifndef HAVE_mi_uint6korr
|
||||
#define mi_uint6korr(A) ((ulonglong)(((uint32) (((const uchar*) (A))[5])) +\
|
||||
(((uint32) (((const uchar*) (A))[4])) << 8) +\
|
||||
(((uint32) (((const uchar*) (A))[3])) << 16) +\
|
||||
(((uint32) (((const uchar*) (A))[2])) << 24)) +\
|
||||
(((ulonglong) (((uint32) (((const uchar*) (A))[1])) +\
|
||||
#define mi_uint6korr(A) ((ulonglong)(((uint32) (((const uchar*) (A))[5])) |\
|
||||
(((uint32) (((const uchar*) (A))[4])) << 8) |\
|
||||
(((uint32) (((const uchar*) (A))[3])) << 16) |\
|
||||
(((uint32) (((const uchar*) (A))[2])) << 24)) |\
|
||||
(((ulonglong) (((uint32) (((const uchar*) (A))[1])) |\
|
||||
(((uint32) (((const uchar*) (A))[0]) << 8)))) <<\
|
||||
32))
|
||||
#endif /* HAVE_mi_uint6korr */
|
||||
|
||||
#ifndef HAVE_mi_uint7korr
|
||||
#define mi_uint7korr(A) ((ulonglong)(((uint32) (((const uchar*) (A))[6])) +\
|
||||
(((uint32) (((const uchar*) (A))[5])) << 8) +\
|
||||
(((uint32) (((const uchar*) (A))[4])) << 16) +\
|
||||
(((uint32) (((const uchar*) (A))[3])) << 24)) +\
|
||||
(((ulonglong) (((uint32) (((const uchar*) (A))[2])) +\
|
||||
(((uint32) (((const uchar*) (A))[1])) << 8) +\
|
||||
#define mi_uint7korr(A) ((ulonglong)(((uint32) (((const uchar*) (A))[6])) |\
|
||||
(((uint32) (((const uchar*) (A))[5])) << 8) |\
|
||||
(((uint32) (((const uchar*) (A))[4])) << 16) |\
|
||||
(((uint32) (((const uchar*) (A))[3])) << 24)) |\
|
||||
(((ulonglong) (((uint32) (((const uchar*) (A))[2])) |\
|
||||
(((uint32) (((const uchar*) (A))[1])) << 8) |\
|
||||
(((uint32) (((const uchar*) (A))[0])) << 16))) <<\
|
||||
32))
|
||||
#endif /* HAVE_mi_uint7korr */
|
||||
|
||||
#ifndef HAVE_mi_uint8korr
|
||||
#define mi_uint8korr(A) ((ulonglong)(((uint32) (((const uchar*) (A))[7])) +\
|
||||
(((uint32) (((const uchar*) (A))[6])) << 8) +\
|
||||
(((uint32) (((const uchar*) (A))[5])) << 16) +\
|
||||
(((uint32) (((const uchar*) (A))[4])) << 24)) +\
|
||||
(((ulonglong) (((uint32) (((const uchar*) (A))[3])) +\
|
||||
(((uint32) (((const uchar*) (A))[2])) << 8) +\
|
||||
(((uint32) (((const uchar*) (A))[1])) << 16) +\
|
||||
#define mi_uint8korr(A) ((ulonglong)(((uint32) (((const uchar*) (A))[7])) |\
|
||||
(((uint32) (((const uchar*) (A))[6])) << 8) |\
|
||||
(((uint32) (((const uchar*) (A))[5])) << 16) |\
|
||||
(((uint32) (((const uchar*) (A))[4])) << 24)) |\
|
||||
(((ulonglong) (((uint32) (((const uchar*) (A))[3])) |\
|
||||
(((uint32) (((const uchar*) (A))[2])) << 8) |\
|
||||
(((uint32) (((const uchar*) (A))[1])) << 16) |\
|
||||
(((uint32) (((const uchar*) (A))[0])) << 24))) <<\
|
||||
32))
|
||||
#endif /* HAVE_mi_uint8korr */
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 3be5897c3346639fa6d7195480d93108798c4917
|
||||
Subproject commit 1768cb6c322d403c1e372b368cc3c23b660b7930
|
@ -967,6 +967,54 @@ STDDEV_SAMP(a)
|
||||
NULL
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-21977 main.func_math fails due to undefined behaviour
|
||||
#
|
||||
SELECT 9223372036854775808 DIV 1;
|
||||
9223372036854775808 DIV 1
|
||||
9223372036854775808
|
||||
SELECT 9223372036854775808 DIV -1;
|
||||
ERROR 22003: BIGINT UNSIGNED value is out of range in '9223372036854775808 DIV -1'
|
||||
SELECT -9223372036854775808 DIV 1;
|
||||
ERROR 22003: BIGINT value is out of range in '-9223372036854775808 DIV 1'
|
||||
SELECT -9223372036854775808 DIV -1;
|
||||
ERROR 22003: BIGINT value is out of range in '-9223372036854775808 DIV -1'
|
||||
SELECT 9223372036854775808 MOD 1;
|
||||
9223372036854775808 MOD 1
|
||||
0
|
||||
SELECT 9223372036854775808 MOD -1;
|
||||
9223372036854775808 MOD -1
|
||||
0
|
||||
SELECT -9223372036854775808 MOD 1;
|
||||
-9223372036854775808 MOD 1
|
||||
0
|
||||
SELECT -9223372036854775808 MOD -1;
|
||||
-9223372036854775808 MOD -1
|
||||
0
|
||||
SELECT 1 MOD 9223372036854775808;
|
||||
1 MOD 9223372036854775808
|
||||
1
|
||||
SELECT -1 MOD 9223372036854775808;
|
||||
-1 MOD 9223372036854775808
|
||||
-1
|
||||
SELECT 1 MOD -9223372036854775808;
|
||||
1 MOD -9223372036854775808
|
||||
1
|
||||
SELECT -1 MOD -9223372036854775808;
|
||||
-1 MOD -9223372036854775808
|
||||
-1
|
||||
SELECT 9223372036854775808 MOD 9223372036854775808;
|
||||
9223372036854775808 MOD 9223372036854775808
|
||||
0
|
||||
SELECT 9223372036854775808 MOD -9223372036854775808;
|
||||
9223372036854775808 MOD -9223372036854775808
|
||||
0
|
||||
SELECT -9223372036854775808 MOD 9223372036854775808;
|
||||
-9223372036854775808 MOD 9223372036854775808
|
||||
0
|
||||
SELECT -9223372036854775808 MOD -9223372036854775808;
|
||||
-9223372036854775808 MOD -9223372036854775808
|
||||
0
|
||||
#
|
||||
# End of 10.1 tests
|
||||
#
|
||||
#
|
||||
|
@ -688,6 +688,35 @@ INSERT INTO t1 VALUES (0);
|
||||
SELECT STDDEV_SAMP(a) FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-21977 main.func_math fails due to undefined behaviour
|
||||
--echo #
|
||||
|
||||
SELECT 9223372036854775808 DIV 1;
|
||||
--error ER_DATA_OUT_OF_RANGE
|
||||
SELECT 9223372036854775808 DIV -1;
|
||||
--error ER_DATA_OUT_OF_RANGE
|
||||
SELECT -9223372036854775808 DIV 1;
|
||||
--error ER_DATA_OUT_OF_RANGE
|
||||
SELECT -9223372036854775808 DIV -1;
|
||||
|
||||
SELECT 9223372036854775808 MOD 1;
|
||||
SELECT 9223372036854775808 MOD -1;
|
||||
SELECT -9223372036854775808 MOD 1;
|
||||
SELECT -9223372036854775808 MOD -1;
|
||||
|
||||
SELECT 1 MOD 9223372036854775808;
|
||||
SELECT -1 MOD 9223372036854775808;
|
||||
SELECT 1 MOD -9223372036854775808;
|
||||
SELECT -1 MOD -9223372036854775808;
|
||||
|
||||
SELECT 9223372036854775808 MOD 9223372036854775808;
|
||||
SELECT 9223372036854775808 MOD -9223372036854775808;
|
||||
SELECT -9223372036854775808 MOD 9223372036854775808;
|
||||
SELECT -9223372036854775808 MOD -9223372036854775808;
|
||||
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.1 tests
|
||||
--echo #
|
||||
|
@ -1577,13 +1577,13 @@ INSERT INTO t1 VALUES(GeomFromText('LINESTRING(2 2, 3 3)'));
|
||||
SELECT COUNT(*) FROM t1 IGNORE INDEX(l) WHERE MBRContains(l, GEOMFROMTEXT('POINT(0 0)'));
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 IGNORE INDEX(l) WHERE MBRWithin(GEOMFROMTEXT('POINT(0 0)'), l);
|
||||
SELECT COUNT(*) FROM t1 IGNORE INDEX(l) WHERE MBRWithin(GEOMFROMTEXT('POINT(0.5 0.5)'), l);
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 FORCE INDEX(l) WHERE MBRContains(l, GEOMFROMTEXT('POINT(0 0)'));
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 FORCE INDEX(l) WHERE MBRWithin(GEOMFROMTEXT('POINT(0 0)'), l);
|
||||
SELECT COUNT(*) FROM t1 FORCE INDEX(l) WHERE MBRWithin(GEOMFROMTEXT('POINT(0.5 0.5)'), l);
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
|
@ -964,10 +964,10 @@ INSERT INTO t1 VALUES(GeomFromText('LINESTRING(1 1, 2 2)'));
|
||||
INSERT INTO t1 VALUES(GeomFromText('LINESTRING(2 2, 3 3)'));
|
||||
|
||||
SELECT COUNT(*) FROM t1 IGNORE INDEX(l) WHERE MBRContains(l, GEOMFROMTEXT('POINT(0 0)'));
|
||||
SELECT COUNT(*) FROM t1 IGNORE INDEX(l) WHERE MBRWithin(GEOMFROMTEXT('POINT(0 0)'), l);
|
||||
SELECT COUNT(*) FROM t1 IGNORE INDEX(l) WHERE MBRWithin(GEOMFROMTEXT('POINT(0.5 0.5)'), l);
|
||||
|
||||
SELECT COUNT(*) FROM t1 FORCE INDEX(l) WHERE MBRContains(l, GEOMFROMTEXT('POINT(0 0)'));
|
||||
SELECT COUNT(*) FROM t1 FORCE INDEX(l) WHERE MBRWithin(GEOMFROMTEXT('POINT(0 0)'), l);
|
||||
SELECT COUNT(*) FROM t1 FORCE INDEX(l) WHERE MBRWithin(GEOMFROMTEXT('POINT(0.5 0.5)'), l);
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
|
@ -1683,7 +1683,7 @@ NULL
|
||||
#
|
||||
create table t1 (pt point);
|
||||
insert into t1 values(Geomfromtext('POLYGON((1 1, 2 2, 2 1, 1 1))'));
|
||||
ERROR 22007: Incorrect POINT value: 'POLYGON' for column `test`.`t1`.`pt` at row 1
|
||||
ERROR 22007: Incorrect POINT value: 'POLYGON((1 1,2 2,2 1,1 1))' for column `test`.`t1`.`pt` at row 1
|
||||
drop table t1;
|
||||
SELECT st_astext(ST_Buffer(ST_PolygonFromText('POLYGON((3 5, 2 4, 2 5, 3 5))'), -100));
|
||||
st_astext(ST_Buffer(ST_PolygonFromText('POLYGON((3 5, 2 4, 2 5, 3 5))'), -100))
|
||||
@ -5028,13 +5028,13 @@ ERROR HY000: Illegal parameter data types int and point for operation 'in'
|
||||
CREATE TABLE t1 (a POINT) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (Point(0,0));
|
||||
ALTER TABLE t1 MODIFY a LINESTRING;
|
||||
ERROR 22007: Incorrect LINESTRING value: 'POINT' for column `test`.`t1`.`a` at row 1
|
||||
ERROR 22007: Incorrect LINESTRING value: 'POINT(0 0)' for column `test`.`t1`.`a` at row 1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a LINESTRING);
|
||||
CREATE TABLE t2 (a POINT);
|
||||
INSERT INTO t2 VALUES (POINT(0,0));
|
||||
INSERT INTO t1 SELECT * FROM t2;
|
||||
ERROR 22007: Incorrect LINESTRING value: 'POINT' for column `test`.`t1`.`a` at row 1
|
||||
ERROR 22007: Incorrect LINESTRING value: 'POINT(0 0)' for column `test`.`t1`.`a` at row 1
|
||||
SELECT AsText(a) FROM t1;
|
||||
AsText(a)
|
||||
DROP TABLE t1, t2;
|
||||
|
@ -2,7 +2,7 @@
|
||||
# -*- cperl -*-
|
||||
|
||||
# Copyright (c) 2004, 2014, Oracle and/or its affiliates.
|
||||
# Copyright (c) 2009, 2018, MariaDB Corporation
|
||||
# Copyright (c) 2009, 2020, MariaDB Corporation
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@ -626,7 +626,8 @@ sub main {
|
||||
else
|
||||
{
|
||||
my $sys_info= My::SysInfo->new();
|
||||
$opt_parallel= $sys_info->num_cpus();
|
||||
$opt_parallel= $sys_info->num_cpus() +
|
||||
int($sys_info->min_bogomips()/500) - 4;
|
||||
for my $limit (2000, 1500, 1000, 500){
|
||||
$opt_parallel-- if ($sys_info->min_bogomips() < $limit);
|
||||
}
|
||||
|
114
mysql-test/suite/galera/r/MDEV-20616.result
Normal file
114
mysql-test/suite/galera/r/MDEV-20616.result
Normal file
@ -0,0 +1,114 @@
|
||||
connection node_2;
|
||||
connection node_1;
|
||||
|
||||
Test phase 1 to make sure that natral deadlock in trigger SP execution is
|
||||
handled correctly
|
||||
|
||||
CREATE TABLE t1(a INT);
|
||||
CREATE TABLE t2(f1 INT, f2 INT, f3 INT);
|
||||
CREATE PROCEDURE proc()
|
||||
BEGIN
|
||||
INSERT INTO t2 VALUES(100, 200, 300);
|
||||
UPDATE t2 SET f3 = f3 + 100;
|
||||
END|
|
||||
CREATE TRIGGER t1 BEFORE INSERT ON t1 FOR EACH ROW CALL proc();
|
||||
INSERT INTO t1 VALUES(2);;
|
||||
connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1;
|
||||
INSERT INTO t1 VALUES(1);;
|
||||
connection node_1;
|
||||
connection node_1a;
|
||||
connection node_1;
|
||||
wsrep__bf_aborts
|
||||
0
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
DROP PROCEDURE proc;
|
||||
|
||||
Test phase 2 to make sure that BF abort for SP execution is
|
||||
handled correctly
|
||||
|
||||
connection node_1;
|
||||
SET SESSION wsrep_retry_autocommit = 0;
|
||||
SET SESSION wsrep_sync_wait = 0;
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 CHAR(1));
|
||||
connection node_1a;
|
||||
SET SESSION wsrep_retry_autocommit = 0;
|
||||
SET SESSION wsrep_sync_wait = 0;
|
||||
CREATE PROCEDURE proc_update()
|
||||
BEGIN
|
||||
UPDATE t1 SET f2 = 'b';
|
||||
END|
|
||||
INSERT INTO t1 VALUES(1, 'a');
|
||||
connection node_1;
|
||||
SET debug_sync='wsrep_before_certification SIGNAL ready WAIT_FOR cont';
|
||||
CALL proc_update;
|
||||
connection node_1a;
|
||||
SET debug_sync='now WAIT_FOR ready';
|
||||
connection node_2;
|
||||
UPDATE t1 SET f2='c';
|
||||
connection node_1a;
|
||||
SET debug_sync='now SIGNAL cont';
|
||||
connection node_1;
|
||||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||
connection node_1a;
|
||||
SET debug_sync='RESET';
|
||||
DROP PROCEDURE proc_update;
|
||||
connection node_1;
|
||||
|
||||
Test phase 3 to make sure natural deadlock is not treated as BF abort
|
||||
|
||||
TRUNCATE t1;
|
||||
INSERT INTO t1 VALUES (1, 'a'), (2, 'a');
|
||||
connection node_1a;
|
||||
START TRANSACTION;
|
||||
UPDATE t1 SET f2 = 'b' WHERE f1 = 1;
|
||||
connection node_1;
|
||||
START TRANSACTION;
|
||||
UPDATE t1 SET f2 = 'c' WHERE f1 = 2;
|
||||
connection node_1a;
|
||||
UPDATE t1 SET f2 = 'b' WHERE f1 = 2;
|
||||
connection node_1;
|
||||
UPDATE t1 SET f2 = 'c' WHERE f1 = 1;
|
||||
connection node_1a;
|
||||
COMMIT;
|
||||
wsrep__bf_aborts
|
||||
0
|
||||
connection node_1;
|
||||
ROLLBACK;
|
||||
|
||||
Test phase 4 to make sure natural deadlock inside SP execution
|
||||
is not treated as BF abort
|
||||
|
||||
connection node_1a;
|
||||
TRUNCATE t1;
|
||||
INSERT INTO t1 VALUES (1, 'a'), (2, 'a');
|
||||
CREATE PROCEDURE proc_update_1()
|
||||
BEGIN
|
||||
START TRANSACTION;
|
||||
UPDATE t1 SET f2 = 'b' WHERE f1 = 1;
|
||||
SELECT SLEEP(5);
|
||||
UPDATE t1 SET f2 = 'b' WHERE f1 = 2;
|
||||
COMMIT;
|
||||
END|
|
||||
CREATE PROCEDURE proc_update_2()
|
||||
BEGIN
|
||||
START TRANSACTION;
|
||||
UPDATE t1 SET f2 = 'c' WHERE f1 = 2;
|
||||
SELECT SLEEP(5);
|
||||
UPDATE t1 SET f2 = 'c' WHERE f1 = 1;
|
||||
COMMIT;
|
||||
END|
|
||||
connection node_1;
|
||||
CALL proc_update_1;
|
||||
connection node_1a;
|
||||
CALL proc_update_2;
|
||||
SLEEP(5)
|
||||
0
|
||||
wsrep__bf_aborts
|
||||
0
|
||||
connection node_1;
|
||||
SLEEP(5)
|
||||
0
|
||||
DROP PROCEDURE proc_update_1;
|
||||
DROP PROCEDURE proc_update_2;
|
||||
DROP TABLE t1;
|
73
mysql-test/suite/galera/r/galera_multirow_rollback.result
Normal file
73
mysql-test/suite/galera/r/galera_multirow_rollback.result
Normal file
@ -0,0 +1,73 @@
|
||||
connection node_2;
|
||||
connection node_1;
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY DEFAULT 0, f2 char(12));
|
||||
connection node_1;
|
||||
START TRANSACTION;
|
||||
INSERT INTO t1 (f2) VALUES ('a'), ('b');
|
||||
ERROR 23000: Duplicate entry '0' for key 'PRIMARY'
|
||||
COMMIT;
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
expect_0
|
||||
0
|
||||
connection node_2;
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
expect_0
|
||||
0
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY DEFAULT 0, f2 char(12));
|
||||
connection node_1;
|
||||
START TRANSACTION;
|
||||
INSERT INTO t1 VALUES (1, 'a');
|
||||
INSERT INTO t1 VALUES (2, 'b');
|
||||
INSERT INTO t1 (f2) VALUES ('c'), ('d');
|
||||
ERROR 23000: Duplicate entry '0' for key 'PRIMARY'
|
||||
COMMIT;
|
||||
expect (1,'a'), (2, 'b')
|
||||
SELECT * FROM t1;
|
||||
f1 f2
|
||||
1 a
|
||||
2 b
|
||||
connection node_2;
|
||||
expect (1,'a'), (2, 'b')
|
||||
SELECT * FROM t1;
|
||||
f1 f2
|
||||
1 a
|
||||
2 b
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY DEFAULT 0, f2 char(12));
|
||||
connection node_1;
|
||||
INSERT INTO t1 (f2) VALUES ('a'),('b');
|
||||
ERROR 23000: Duplicate entry '0' for key 'PRIMARY'
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
expect_0
|
||||
0
|
||||
connection node_2;
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
expect_0
|
||||
0
|
||||
DROP TABLE t1;
|
||||
connection node_1;
|
||||
CREATE TABLE p(id int primary key, j int) ENGINE=InnoDB;
|
||||
CREATE TABLE c(id int primary key, fk1 int) ENGINE=InnoDB;
|
||||
ALTER TABLE c ADD FOREIGN KEY (fk1) references p(id);
|
||||
INSERT INTO p VALUES(1, 0);
|
||||
START TRANSACTION;
|
||||
INSERT INTO c VALUES (3,1);
|
||||
INSERT INTO c VALUES (1,1), (2,2);
|
||||
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`c`, CONSTRAINT `c_ibfk_1` FOREIGN KEY (`fk1`) REFERENCES `p` (`id`))
|
||||
COMMIT;
|
||||
SELECT * FROM p;
|
||||
id j
|
||||
1 0
|
||||
SELECT * FROM c;
|
||||
id fk1
|
||||
3 1
|
||||
connection node_2;
|
||||
SELECT * FROM p;
|
||||
id j
|
||||
1 0
|
||||
SELECT * FROM c;
|
||||
id fk1
|
||||
3 1
|
||||
DROP TABLE c;
|
||||
DROP TABLE p;
|
@ -41,6 +41,8 @@ SET DEBUG_SYNC = 'RESET';
|
||||
SET GLOBAL wsrep_slave_threads = 1;
|
||||
|
||||
# Trigger should now be dropped on node_2.
|
||||
--let $wait_condition = SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME like '%tr1'
|
||||
--source include/wait_condition.inc
|
||||
SHOW TRIGGERS;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
244
mysql-test/suite/galera/t/MDEV-20616.test
Normal file
244
mysql-test/suite/galera/t/MDEV-20616.test
Normal file
@ -0,0 +1,244 @@
|
||||
#
|
||||
# Test different deadlock scenarios in innodb and make sure that
|
||||
# wsrep patch does not handle them as BF aborts.
|
||||
#
|
||||
|
||||
--source include/galera_cluster.inc
|
||||
--source include/have_debug.inc
|
||||
--source include/have_debug_sync.inc
|
||||
|
||||
##############################################################################
|
||||
# test case to verify that natural deadlock of trigger SP execution is
|
||||
# handled correctly
|
||||
##############################################################################
|
||||
|
||||
--echo
|
||||
--echo Test phase 1 to make sure that natral deadlock in trigger SP execution is
|
||||
--echo handled correctly
|
||||
--echo
|
||||
--let $aborts_old = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_bf_aborts'`
|
||||
|
||||
CREATE TABLE t1(a INT);
|
||||
CREATE TABLE t2(f1 INT, f2 INT, f3 INT);
|
||||
--disable_query_log
|
||||
let $run=1000;
|
||||
while($run)
|
||||
{
|
||||
INSERT INTO t2 VALUES (1, 2, 3);
|
||||
dec $run;
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
DELIMITER |;
|
||||
CREATE PROCEDURE proc()
|
||||
BEGIN
|
||||
INSERT INTO t2 VALUES(100, 200, 300);
|
||||
UPDATE t2 SET f3 = f3 + 100;
|
||||
END|
|
||||
DELIMITER ;|
|
||||
|
||||
CREATE TRIGGER t1 BEFORE INSERT ON t1 FOR EACH ROW CALL proc();
|
||||
|
||||
--send INSERT INTO t1 VALUES(2);
|
||||
|
||||
--connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1
|
||||
--send INSERT INTO t1 VALUES(1);
|
||||
|
||||
--connection node_1
|
||||
--error 0,ER_LOCK_DEADLOCK
|
||||
--reap
|
||||
|
||||
--connection node_1a
|
||||
--error 0,ER_LOCK_DEADLOCK
|
||||
--reap
|
||||
|
||||
--connection node_1
|
||||
--let $aborts_new = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_bf_aborts'`
|
||||
--disable_query_log
|
||||
--eval SELECT $aborts_new - $aborts_old AS wsrep__bf_aborts;
|
||||
--enable_query_log
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
DROP PROCEDURE proc;
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
# test case to verify that BF abort for SP execution is handled correctly
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
--echo
|
||||
--echo Test phase 2 to make sure that BF abort for SP execution is
|
||||
--echo handled correctly
|
||||
--echo
|
||||
--connection node_1
|
||||
SET SESSION wsrep_retry_autocommit = 0;
|
||||
SET SESSION wsrep_sync_wait = 0;
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 CHAR(1));
|
||||
|
||||
# Control connection for Galera sync point management
|
||||
--connection node_1a
|
||||
|
||||
SET SESSION wsrep_retry_autocommit = 0;
|
||||
SET SESSION wsrep_sync_wait = 0;
|
||||
--let $aborts_old = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_bf_aborts'`
|
||||
|
||||
DELIMITER |;
|
||||
CREATE PROCEDURE proc_update()
|
||||
BEGIN
|
||||
UPDATE t1 SET f2 = 'b';
|
||||
END|
|
||||
DELIMITER ;|
|
||||
|
||||
INSERT INTO t1 VALUES(1, 'a');
|
||||
|
||||
--connection node_1
|
||||
SET debug_sync='wsrep_before_certification SIGNAL ready WAIT_FOR cont';
|
||||
--send CALL proc_update
|
||||
|
||||
--connection node_1a
|
||||
SET debug_sync='now WAIT_FOR ready';
|
||||
|
||||
--connection node_2
|
||||
UPDATE t1 SET f2='c';
|
||||
|
||||
--connection node_1a
|
||||
# wait for BF to happen
|
||||
--let $wait_condition = SELECT VARIABLE_VALUE = $aborts_old + 1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_bf_aborts'
|
||||
--source include/wait_condition.inc
|
||||
|
||||
SET debug_sync='now SIGNAL cont';
|
||||
|
||||
--connection node_1
|
||||
--error ER_LOCK_DEADLOCK
|
||||
--reap
|
||||
|
||||
--connection node_1a
|
||||
SET debug_sync='RESET';
|
||||
|
||||
DROP PROCEDURE proc_update;
|
||||
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
# test case to verify that natural deadlock does not cause BF abort
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
--connection node_1
|
||||
--echo
|
||||
--echo Test phase 3 to make sure natural deadlock is not treated as BF abort
|
||||
--echo
|
||||
TRUNCATE t1;
|
||||
INSERT INTO t1 VALUES (1, 'a'), (2, 'a');
|
||||
|
||||
--connection node_1a
|
||||
--let $aborts_old = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_bf_aborts'`
|
||||
|
||||
START TRANSACTION;
|
||||
UPDATE t1 SET f2 = 'b' WHERE f1 = 1;
|
||||
|
||||
--connection node_1
|
||||
START TRANSACTION;
|
||||
UPDATE t1 SET f2 = 'c' WHERE f1 = 2;
|
||||
|
||||
--connection node_1a
|
||||
# this hangs for lock wait
|
||||
--send UPDATE t1 SET f2 = 'b' WHERE f1 = 2
|
||||
|
||||
#
|
||||
# classic deadlock happens here
|
||||
#
|
||||
--connection node_1
|
||||
--error 0, ER_LOCK_DEADLOCK
|
||||
UPDATE t1 SET f2 = 'c' WHERE f1 = 1;
|
||||
|
||||
--connection node_1a
|
||||
--error 0, ER_LOCK_DEADLOCK
|
||||
--reap
|
||||
COMMIT;
|
||||
|
||||
#
|
||||
# either one of SP executions was aborted because of natural deadlock, or in worst case
|
||||
# they were ordered seqeuntailly, and both succeeded.
|
||||
# anyways, we just check here that no BF aborts happened
|
||||
#
|
||||
--let $aborts_new = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_bf_aborts'`
|
||||
--disable_query_log
|
||||
--eval SELECT $aborts_new - $aborts_old AS wsrep__bf_aborts;
|
||||
--enable_query_log
|
||||
|
||||
--connection node_1
|
||||
ROLLBACK;
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
# test case to verify that natural deadlock within SP exceution
|
||||
# does not cause BF abort
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
--echo
|
||||
--echo Test phase 4 to make sure natural deadlock inside SP execution
|
||||
--echo is not treated as BF abort
|
||||
--echo
|
||||
|
||||
--connection node_1a
|
||||
TRUNCATE t1;
|
||||
INSERT INTO t1 VALUES (1, 'a'), (2, 'a');
|
||||
|
||||
--let $aborts_old = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_bf_aborts'`
|
||||
|
||||
DELIMITER |;
|
||||
CREATE PROCEDURE proc_update_1()
|
||||
BEGIN
|
||||
START TRANSACTION;
|
||||
UPDATE t1 SET f2 = 'b' WHERE f1 = 1;
|
||||
SELECT SLEEP(5);
|
||||
UPDATE t1 SET f2 = 'b' WHERE f1 = 2;
|
||||
COMMIT;
|
||||
END|
|
||||
DELIMITER ;|
|
||||
|
||||
DELIMITER |;
|
||||
CREATE PROCEDURE proc_update_2()
|
||||
BEGIN
|
||||
START TRANSACTION;
|
||||
UPDATE t1 SET f2 = 'c' WHERE f1 = 2;
|
||||
SELECT SLEEP(5);
|
||||
UPDATE t1 SET f2 = 'c' WHERE f1 = 1;
|
||||
COMMIT;
|
||||
END|
|
||||
DELIMITER ;|
|
||||
|
||||
--connection node_1
|
||||
--send CALL proc_update_1
|
||||
|
||||
--connection node_1a
|
||||
#
|
||||
# calling proc_update_2 should cause a natural deadlock
|
||||
# however, this test is not deterministic, and depends on the sleep() to
|
||||
# cause expected ordering for update statement execution within SPs
|
||||
# We therefore, allow both success and deadlock error for the result
|
||||
#
|
||||
--error 0, ER_LOCK_DEADLOCK
|
||||
CALL proc_update_2;
|
||||
|
||||
#
|
||||
# either one of SP executions was aborted because of natural deadlock, or in worst case
|
||||
# they were ordered seqeuntailly, and both succeeded.
|
||||
# anyways, we just check here that no BF aborts happened
|
||||
#
|
||||
--let $aborts_new = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_bf_aborts'`
|
||||
--disable_query_log
|
||||
--eval SELECT $aborts_new - $aborts_old AS wsrep__bf_aborts;
|
||||
--enable_query_log
|
||||
|
||||
|
||||
--connection node_1
|
||||
--error 0, ER_LOCK_DEADLOCK
|
||||
--reap
|
||||
|
||||
DROP PROCEDURE proc_update_1;
|
||||
DROP PROCEDURE proc_update_2;
|
||||
DROP TABLE t1;
|
@ -0,0 +1,4 @@
|
||||
[binlogon]
|
||||
log-bin
|
||||
|
||||
[binlogoff]
|
89
mysql-test/suite/galera/t/galera_multirow_rollback.test
Normal file
89
mysql-test/suite/galera/t/galera_multirow_rollback.test
Normal file
@ -0,0 +1,89 @@
|
||||
#
|
||||
# Test multirow insert rollback
|
||||
#
|
||||
|
||||
--source include/galera_cluster.inc
|
||||
|
||||
#
|
||||
# Case 1: error on multirow insert results in empty transaction
|
||||
#
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY DEFAULT 0, f2 char(12));
|
||||
|
||||
--connection node_1
|
||||
START TRANSACTION;
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO t1 (f2) VALUES ('a'), ('b');
|
||||
COMMIT;
|
||||
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
|
||||
--connection node_2
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
#
|
||||
# Case 2: error on multirow insert does not affect previous statements
|
||||
#
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY DEFAULT 0, f2 char(12));
|
||||
|
||||
--connection node_1
|
||||
START TRANSACTION;
|
||||
INSERT INTO t1 VALUES (1, 'a');
|
||||
INSERT INTO t1 VALUES (2, 'b');
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO t1 (f2) VALUES ('c'), ('d');
|
||||
COMMIT;
|
||||
|
||||
--echo expect (1,'a'), (2, 'b')
|
||||
SELECT * FROM t1;
|
||||
|
||||
--connection node_2
|
||||
--echo expect (1,'a'), (2, 'b')
|
||||
SELECT * FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
#
|
||||
# Case 3: error on autocommit multirow insert
|
||||
#
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY DEFAULT 0, f2 char(12));
|
||||
|
||||
--connection node_1
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO t1 (f2) VALUES ('a'),('b');
|
||||
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
|
||||
--connection node_2
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
#
|
||||
# Case 4: FK constraint violation on multirow insert
|
||||
#
|
||||
--connection node_1
|
||||
CREATE TABLE p(id int primary key, j int) ENGINE=InnoDB;
|
||||
CREATE TABLE c(id int primary key, fk1 int) ENGINE=InnoDB;
|
||||
ALTER TABLE c ADD FOREIGN KEY (fk1) references p(id);
|
||||
INSERT INTO p VALUES(1, 0);
|
||||
|
||||
START TRANSACTION;
|
||||
INSERT INTO c VALUES (3,1);
|
||||
--error ER_NO_REFERENCED_ROW_2
|
||||
INSERT INTO c VALUES (1,1), (2,2);
|
||||
COMMIT;
|
||||
|
||||
SELECT * FROM p;
|
||||
SELECT * FROM c;
|
||||
|
||||
--connection node_2
|
||||
SELECT * FROM p;
|
||||
SELECT * FROM c;
|
||||
|
||||
DROP TABLE c;
|
||||
DROP TABLE p;
|
@ -86,6 +86,8 @@ connection node_1;
|
||||
SET GLOBAL wsrep_provider_options = 'gmcast.isolate=0';
|
||||
connection node_2;
|
||||
connection node_3;
|
||||
connection node_2;
|
||||
connection node_3;
|
||||
SELECT VARIABLE_VALUE AS expect_3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||
expect_3
|
||||
3
|
||||
|
@ -42,6 +42,10 @@ CALL mtr.add_suppression("WSREP: moving position backwards: [0-9]+ -> 0");
|
||||
CALL mtr.add_suppression("Failed to prepare for incremental state transfer");
|
||||
CALL mtr.add_suppression("It may not be safe to bootstrap the cluster from this node");
|
||||
CALL mtr.add_suppression("Aborting");
|
||||
CALL mtr.add_suppression("Plugin 'wsrep' init function returned error.");
|
||||
CALL mtr.add_suppression("Plugin 'wsrep' registration as a STORAGE ENGINE failed.");
|
||||
CALL mtr.add_suppression("Failed to initialize plugins.");
|
||||
CALL mtr.add_suppression("WSREP: gcs/src/gcs_core.cpp:core_handle_uuid_msg()");
|
||||
connection node_3;
|
||||
CALL mtr.add_suppression("WSREP: no nodes coming from prim view, prim not possible");
|
||||
CALL mtr.add_suppression("WSREP: It may not be safe to bootstrap the cluster from this node");
|
||||
@ -51,6 +55,10 @@ CALL mtr.add_suppression("WSREP: moving position backwards: [0-9]+ -> 0");
|
||||
CALL mtr.add_suppression("Failed to prepare for incremental state transfer");
|
||||
CALL mtr.add_suppression("It may not be safe to bootstrap the cluster from this node");
|
||||
CALL mtr.add_suppression("Aborting");
|
||||
CALL mtr.add_suppression("Plugin 'wsrep' init function returned error.");
|
||||
CALL mtr.add_suppression("Plugin 'wsrep' registration as a STORAGE ENGINE failed.");
|
||||
CALL mtr.add_suppression("Failed to initialize plugins.");
|
||||
CALL mtr.add_suppression("WSREP: gcs/src/gcs_core.cpp:core_handle_uuid_msg()");
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
|
@ -88,6 +88,15 @@ SET GLOBAL wsrep_provider_options = 'gmcast.isolate=0';
|
||||
--source include/wait_condition.inc
|
||||
--source include/galera_wait_ready.inc
|
||||
|
||||
# wait until nodes 2 and 3 have declared ready state (can happen after cluster_size raaise)
|
||||
--connection node_2
|
||||
--let $wait_condition = SELECT VARIABLE_VALUE = 'ON' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_ready'
|
||||
--source include/wait_condition.inc
|
||||
|
||||
--connection node_3
|
||||
--source include/wait_condition.inc
|
||||
|
||||
|
||||
# On all nodes, we now expect a Primary component of size 3, weight 3, Synced and ready
|
||||
SELECT VARIABLE_VALUE AS expect_3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||
SELECT VARIABLE_VALUE AS expect_3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_weight';
|
||||
|
@ -179,6 +179,10 @@ CALL mtr.add_suppression("WSREP: moving position backwards: [0-9]+ -> 0");
|
||||
CALL mtr.add_suppression("Failed to prepare for incremental state transfer");
|
||||
CALL mtr.add_suppression("It may not be safe to bootstrap the cluster from this node");
|
||||
CALL mtr.add_suppression("Aborting");
|
||||
CALL mtr.add_suppression("Plugin 'wsrep' init function returned error.");
|
||||
CALL mtr.add_suppression("Plugin 'wsrep' registration as a STORAGE ENGINE failed.");
|
||||
CALL mtr.add_suppression("Failed to initialize plugins.");
|
||||
CALL mtr.add_suppression("WSREP: gcs/src/gcs_core.cpp:core_handle_uuid_msg()");
|
||||
|
||||
--connection node_3
|
||||
CALL mtr.add_suppression("WSREP: no nodes coming from prim view, prim not possible");
|
||||
@ -189,6 +193,11 @@ CALL mtr.add_suppression("WSREP: moving position backwards: [0-9]+ -> 0");
|
||||
CALL mtr.add_suppression("Failed to prepare for incremental state transfer");
|
||||
CALL mtr.add_suppression("It may not be safe to bootstrap the cluster from this node");
|
||||
CALL mtr.add_suppression("Aborting");
|
||||
CALL mtr.add_suppression("Plugin 'wsrep' init function returned error.");
|
||||
CALL mtr.add_suppression("Plugin 'wsrep' registration as a STORAGE ENGINE failed.");
|
||||
CALL mtr.add_suppression("Failed to initialize plugins.");
|
||||
CALL mtr.add_suppression("WSREP: gcs/src/gcs_core.cpp:core_handle_uuid_msg()");
|
||||
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
127
mysql-test/suite/galera_sr/r/galera_sr_multirow_rollback.result
Normal file
127
mysql-test/suite/galera_sr/r/galera_sr_multirow_rollback.result
Normal file
@ -0,0 +1,127 @@
|
||||
connection node_2;
|
||||
connection node_1;
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY DEFAULT 0, f2 char(12));
|
||||
connection node_1;
|
||||
SET SESSION wsrep_trx_fragment_size = 1;
|
||||
START TRANSACTION;
|
||||
INSERT INTO t1 (f2) VALUES ('a'), ('b');
|
||||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||
COMMIT;
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
expect_0
|
||||
0
|
||||
connection node_2;
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
expect_0
|
||||
0
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY DEFAULT 0, f2 char(12));
|
||||
connection node_1;
|
||||
SET SESSION wsrep_trx_fragment_size = 1000;
|
||||
START TRANSACTION;
|
||||
INSERT INTO t1 (f2) VALUES ('a'), ('b');
|
||||
ERROR 23000: Duplicate entry '0' for key 'PRIMARY'
|
||||
COMMIT;
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
expect_0
|
||||
0
|
||||
connection node_2;
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
expect_0
|
||||
0
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY DEFAULT 0, f2 char(12));
|
||||
connection node_1;
|
||||
SET SESSION wsrep_trx_fragment_size = 1000;
|
||||
START TRANSACTION;
|
||||
INSERT INTO t1 VALUES (1, 'a');
|
||||
INSERT INTO t1 VALUES (2, 'b');
|
||||
INSERT INTO t1 (f2) VALUES ('c'), ('d');
|
||||
ERROR 23000: Duplicate entry '0' for key 'PRIMARY'
|
||||
COMMIT;
|
||||
expect (1,'a'), (2, 'b')
|
||||
SELECT * FROM t1;
|
||||
f1 f2
|
||||
1 a
|
||||
2 b
|
||||
connection node_2;
|
||||
expect (1,'a'), (2, 'b')
|
||||
SELECT * FROM t1;
|
||||
f1 f2
|
||||
1 a
|
||||
2 b
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY DEFAULT 0, f2 char(12));
|
||||
connection node_1;
|
||||
SET SESSION wsrep_trx_fragment_size = 1;
|
||||
INSERT INTO t1 (f2) VALUES ('a'), ('b');
|
||||
ERROR 23000: Duplicate entry '0' for key 'PRIMARY'
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
expect_0
|
||||
0
|
||||
connection node_2;
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
expect_0
|
||||
0
|
||||
connection node_1;
|
||||
SET SESSION wsrep_trx_fragment_size = 1000;
|
||||
INSERT INTO t1 (f2) VALUES ('a'), ('b');
|
||||
ERROR 23000: Duplicate entry '0' for key 'PRIMARY'
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
expect_0
|
||||
0
|
||||
connection node_2;
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
expect_0
|
||||
0
|
||||
DROP TABLE t1;
|
||||
connection node_1;
|
||||
CREATE TABLE p(id int primary key, j int) ENGINE=InnoDB;
|
||||
CREATE TABLE c(id int primary key, fk1 int) ENGINE=InnoDB;
|
||||
ALTER TABLE c ADD FOREIGN KEY (fk1) references p(id);
|
||||
INSERT INTO p VALUES(1, 0);
|
||||
SET SESSION wsrep_trx_fragment_size=1;
|
||||
START TRANSACTION;
|
||||
INSERT INTO c VALUES (3,1);
|
||||
INSERT INTO c VALUES (1,1), (2,2);
|
||||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||
COMMIT;
|
||||
SELECT * FROM p;
|
||||
id j
|
||||
1 0
|
||||
SELECT * FROM c;
|
||||
id fk1
|
||||
connection node_2;
|
||||
SELECT * FROM p;
|
||||
id j
|
||||
1 0
|
||||
SELECT * FROM c;
|
||||
id fk1
|
||||
DROP TABLE c;
|
||||
DROP TABLE p;
|
||||
connection node_1;
|
||||
CREATE TABLE p(id int primary key, j int) ENGINE=InnoDB;
|
||||
CREATE TABLE c(id int primary key, fk1 int) ENGINE=InnoDB;
|
||||
ALTER TABLE c ADD FOREIGN KEY (fk1) references p(id);
|
||||
INSERT INTO p VALUES(1, 0);
|
||||
SET SESSION wsrep_trx_fragment_size=1000;
|
||||
START TRANSACTION;
|
||||
INSERT INTO c VALUES (3,1);
|
||||
INSERT INTO c VALUES (1,1), (2,2);
|
||||
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`c`, CONSTRAINT `c_ibfk_1` FOREIGN KEY (`fk1`) REFERENCES `p` (`id`))
|
||||
COMMIT;
|
||||
SELECT * FROM p;
|
||||
id j
|
||||
1 0
|
||||
SELECT * FROM c;
|
||||
id fk1
|
||||
3 1
|
||||
connection node_2;
|
||||
SELECT * FROM p;
|
||||
id j
|
||||
1 0
|
||||
SELECT * FROM c;
|
||||
id fk1
|
||||
3 1
|
||||
DROP TABLE c;
|
||||
DROP TABLE p;
|
@ -0,0 +1,4 @@
|
||||
[binlogon]
|
||||
log-bin
|
||||
|
||||
[binlogoff]
|
156
mysql-test/suite/galera_sr/t/galera_sr_multirow_rollback.test
Normal file
156
mysql-test/suite/galera_sr/t/galera_sr_multirow_rollback.test
Normal file
@ -0,0 +1,156 @@
|
||||
#
|
||||
# Test multirow insert rollback with streaming replication
|
||||
#
|
||||
|
||||
--source include/galera_cluster.inc
|
||||
|
||||
|
||||
#
|
||||
# Case 1: multirow insert results full rollback if a fragment
|
||||
# managed to replicate
|
||||
#
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY DEFAULT 0, f2 char(12));
|
||||
|
||||
--connection node_1
|
||||
SET SESSION wsrep_trx_fragment_size = 1;
|
||||
START TRANSACTION;
|
||||
# With fragment size 1 we expect full rollback
|
||||
# because a fragment is already replicated.
|
||||
# Therefore, expect ER_LOCK_DEADLOCK instead of ER_DUP_ENTRY
|
||||
--error ER_LOCK_DEADLOCK
|
||||
INSERT INTO t1 (f2) VALUES ('a'), ('b');
|
||||
COMMIT;
|
||||
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
|
||||
--connection node_2
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
#
|
||||
# Case 2: error on multirow insert results in empty commit
|
||||
#
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY DEFAULT 0, f2 char(12));
|
||||
|
||||
--connection node_1
|
||||
SET SESSION wsrep_trx_fragment_size = 1000;
|
||||
START TRANSACTION;
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO t1 (f2) VALUES ('a'), ('b');
|
||||
COMMIT;
|
||||
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
|
||||
--connection node_2
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
#
|
||||
# Case 3: error on multirow insert does not affect previous statements
|
||||
#
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY DEFAULT 0, f2 char(12));
|
||||
|
||||
--connection node_1
|
||||
SET SESSION wsrep_trx_fragment_size = 1000;
|
||||
START TRANSACTION;
|
||||
INSERT INTO t1 VALUES (1, 'a');
|
||||
INSERT INTO t1 VALUES (2, 'b');
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO t1 (f2) VALUES ('c'), ('d');
|
||||
COMMIT;
|
||||
|
||||
--echo expect (1,'a'), (2, 'b')
|
||||
SELECT * FROM t1;
|
||||
|
||||
--connection node_2
|
||||
--echo expect (1,'a'), (2, 'b')
|
||||
SELECT * FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
#
|
||||
# Case 4: error on autocommit multirow insert
|
||||
#
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY DEFAULT 0, f2 char(12));
|
||||
|
||||
--connection node_1
|
||||
SET SESSION wsrep_trx_fragment_size = 1;
|
||||
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO t1 (f2) VALUES ('a'), ('b');
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
|
||||
--connection node_2
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
|
||||
--connection node_1
|
||||
SET SESSION wsrep_trx_fragment_size = 1000;
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO t1 (f2) VALUES ('a'), ('b');
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
|
||||
--connection node_2
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
#
|
||||
# Case 5: FK constraint violation on multirow insert results
|
||||
# full rollback if a fragment has already replicated
|
||||
#
|
||||
--connection node_1
|
||||
CREATE TABLE p(id int primary key, j int) ENGINE=InnoDB;
|
||||
CREATE TABLE c(id int primary key, fk1 int) ENGINE=InnoDB;
|
||||
ALTER TABLE c ADD FOREIGN KEY (fk1) references p(id);
|
||||
INSERT INTO p VALUES(1, 0);
|
||||
|
||||
SET SESSION wsrep_trx_fragment_size=1;
|
||||
START TRANSACTION;
|
||||
INSERT INTO c VALUES (3,1);
|
||||
--error ER_LOCK_DEADLOCK
|
||||
INSERT INTO c VALUES (1,1), (2,2);
|
||||
COMMIT;
|
||||
|
||||
SELECT * FROM p;
|
||||
SELECT * FROM c;
|
||||
|
||||
--connection node_2
|
||||
SELECT * FROM p;
|
||||
SELECT * FROM c;
|
||||
|
||||
DROP TABLE c;
|
||||
DROP TABLE p;
|
||||
|
||||
|
||||
#
|
||||
# Case 6: FK constraint violation on multirow insert results
|
||||
# stmt rollback if no fragments have replicated
|
||||
#
|
||||
--connection node_1
|
||||
CREATE TABLE p(id int primary key, j int) ENGINE=InnoDB;
|
||||
CREATE TABLE c(id int primary key, fk1 int) ENGINE=InnoDB;
|
||||
ALTER TABLE c ADD FOREIGN KEY (fk1) references p(id);
|
||||
INSERT INTO p VALUES(1, 0);
|
||||
|
||||
SET SESSION wsrep_trx_fragment_size=1000;
|
||||
START TRANSACTION;
|
||||
INSERT INTO c VALUES (3,1);
|
||||
--error ER_NO_REFERENCED_ROW_2
|
||||
INSERT INTO c VALUES (1,1), (2,2);
|
||||
COMMIT;
|
||||
|
||||
SELECT * FROM p;
|
||||
SELECT * FROM c;
|
||||
|
||||
--connection node_2
|
||||
SELECT * FROM p;
|
||||
SELECT * FROM c;
|
||||
|
||||
DROP TABLE c;
|
||||
DROP TABLE p;
|
@ -36,7 +36,9 @@ ALTER TABLE t DISCARD TABLESPACE;
|
||||
Warnings:
|
||||
Warning 1812 Tablespace is missing for table 'test/t'
|
||||
Warning 1812 Tablespace is missing for table 'test/t'
|
||||
DROP TABLE t;
|
||||
RENAME TABLE t TO u;
|
||||
RENAME TABLE u TO v;
|
||||
DROP TABLE v;
|
||||
SELECT * FROM `x..d`;
|
||||
ERROR HY000: Got error 194 "Tablespace is missing for a table" from storage engine InnoDB
|
||||
DROP TABLE `x..d`;
|
||||
|
@ -42,7 +42,7 @@ drop table t1;
|
||||
#
|
||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||
ALTER TABLE t1 ADD COLUMN b LINESTRING DEFAULT POINT(1,1);
|
||||
ERROR 22007: Incorrect LINESTRING value: 'POINT' for column ``.``.`b` at row 1
|
||||
ERROR 22007: Incorrect LINESTRING value: 'POINT(1 1)' for column ``.``.`b` at row 1
|
||||
DESCRIBE t1;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) YES NULL
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
||||
call mtr.add_suppression("InnoDB: Unable to import tablespace .* because it already exists. Please DISCARD the tablespace before IMPORT.");
|
||||
call mtr.add_suppression("InnoDB: Unable to import tablespace .* because it already exists. Please DISCARD the tablespace before IMPORT\\.");
|
||||
call mtr.add_suppression("Index for table 't2' is corrupt; try to repair it");
|
||||
FLUSH TABLES;
|
||||
CREATE TABLE t1
|
||||
@ -7,29 +7,26 @@ b char(22),
|
||||
c varchar(255),
|
||||
KEY (b))
|
||||
ENGINE = InnoDB;
|
||||
insert into t1 (b, c) values ('Apa', 'Filler........'),
|
||||
CREATE TEMPORARY TABLE t (b char(22),c varchar(255));
|
||||
INSERT INTO t VALUES
|
||||
('Apa', 'Filler........'),
|
||||
('Banan', 'Filler........'), ('Cavalry', '..asdasdfaeraf'),
|
||||
('Devotion', 'asdfuihknaskdf'), ('Evolution', 'lsjndofiabsoibeg');
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b,c) SELECT b,c FROM t,seq_1_to_128;
|
||||
DROP TEMPORARY TABLE t;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
640
|
||||
SELECT * FROM t1 ORDER BY b,a DESC LIMIT 3;
|
||||
a b c
|
||||
819 Apa Filler........
|
||||
814 Apa Filler........
|
||||
809 Apa Filler........
|
||||
636 Apa Filler........
|
||||
631 Apa Filler........
|
||||
626 Apa Filler........
|
||||
SELECT * FROM t1 ORDER BY a DESC LIMIT 3;
|
||||
a b c
|
||||
823 Evolution lsjndofiabsoibeg
|
||||
822 Devotion asdfuihknaskdf
|
||||
821 Cavalry ..asdasdfaeraf
|
||||
640 Evolution lsjndofiabsoibeg
|
||||
639 Devotion asdfuihknaskdf
|
||||
638 Cavalry ..asdasdfaeraf
|
||||
CREATE TABLE t2(a INT PRIMARY KEY) ENGINE=InnoDB ROW_FORMAT=COMPACT;
|
||||
db.opt
|
||||
t1.frm
|
||||
@ -53,14 +50,14 @@ COUNT(*)
|
||||
1280
|
||||
SELECT * FROM t1 ORDER BY b,a DESC LIMIT 3;
|
||||
a b c
|
||||
1459 Apa Filler........
|
||||
1454 Apa Filler........
|
||||
1449 Apa Filler........
|
||||
1276 Apa Filler........
|
||||
1271 Apa Filler........
|
||||
1266 Apa Filler........
|
||||
SELECT * FROM t1 ORDER BY a DESC LIMIT 3;
|
||||
a b c
|
||||
1463 Evolution lsjndofiabsoibeg
|
||||
1462 Devotion asdfuihknaskdf
|
||||
1461 Cavalry ..asdasdfaeraf
|
||||
1280 Evolution lsjndofiabsoibeg
|
||||
1279 Devotion asdfuihknaskdf
|
||||
1278 Cavalry ..asdasdfaeraf
|
||||
# Restarting server
|
||||
# restart
|
||||
# Done restarting server
|
||||
@ -83,14 +80,14 @@ COUNT(*)
|
||||
640
|
||||
SELECT * FROM t1 ORDER BY b,a DESC LIMIT 3;
|
||||
a b c
|
||||
819 Apa Filler........
|
||||
814 Apa Filler........
|
||||
809 Apa Filler........
|
||||
636 Apa Filler........
|
||||
631 Apa Filler........
|
||||
626 Apa Filler........
|
||||
SELECT * FROM t1 ORDER BY a DESC LIMIT 3;
|
||||
a b c
|
||||
823 Evolution lsjndofiabsoibeg
|
||||
822 Devotion asdfuihknaskdf
|
||||
821 Cavalry ..asdasdfaeraf
|
||||
640 Evolution lsjndofiabsoibeg
|
||||
639 Devotion asdfuihknaskdf
|
||||
638 Cavalry ..asdasdfaeraf
|
||||
db.opt
|
||||
t1.cfg
|
||||
t1.frm
|
||||
@ -102,14 +99,14 @@ COUNT(*)
|
||||
640
|
||||
SELECT * FROM t1 ORDER BY b,a DESC LIMIT 3;
|
||||
a b c
|
||||
819 Apa Filler........
|
||||
814 Apa Filler........
|
||||
809 Apa Filler........
|
||||
636 Apa Filler........
|
||||
631 Apa Filler........
|
||||
626 Apa Filler........
|
||||
SELECT * FROM t1 ORDER BY a DESC LIMIT 3;
|
||||
a b c
|
||||
823 Evolution lsjndofiabsoibeg
|
||||
822 Devotion asdfuihknaskdf
|
||||
821 Cavalry ..asdasdfaeraf
|
||||
640 Evolution lsjndofiabsoibeg
|
||||
639 Devotion asdfuihknaskdf
|
||||
638 Cavalry ..asdasdfaeraf
|
||||
DROP TABLE t1;
|
||||
ALTER TABLE t2 ROW_FORMAT=DYNAMIC;
|
||||
ALTER TABLE t2 DISCARD TABLESPACE;
|
||||
@ -139,18 +136,11 @@ DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT) ENGINE=InnoDB;
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
db.opt
|
||||
t1.frm
|
||||
t1.ibd
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
16
|
||||
backup: t1
|
||||
db.opt
|
||||
t1.cfg
|
||||
@ -180,18 +170,11 @@ DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT) ENGINE=InnoDB;
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
db.opt
|
||||
t1.frm
|
||||
t1.ibd
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
16
|
||||
backup: t1
|
||||
db.opt
|
||||
t1.cfg
|
||||
@ -201,8 +184,6 @@ UNLOCK TABLES;
|
||||
db.opt
|
||||
t1.frm
|
||||
t1.ibd
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
@ -226,23 +207,14 @@ DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX(c2)) ENGINE=InnoDB;
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
SELECT COUNT(*) FROM t1 WHERE c2 = 1;
|
||||
COUNT(*)
|
||||
16
|
||||
backup: t1
|
||||
db.opt
|
||||
t1.cfg
|
||||
t1.frm
|
||||
t1.ibd
|
||||
UNLOCK TABLES;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
@ -262,19 +234,10 @@ DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB;
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
SELECT COUNT(*) FROM t1 WHERE c2 = 1;
|
||||
COUNT(*)
|
||||
16
|
||||
backup: t1
|
||||
UNLOCK TABLES;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
@ -304,39 +267,32 @@ c1 c2
|
||||
2 1
|
||||
3 1
|
||||
4 1
|
||||
5 1
|
||||
6 1
|
||||
7 1
|
||||
8 1
|
||||
9 1
|
||||
10 1
|
||||
11 1
|
||||
12 1
|
||||
13 1
|
||||
14 1
|
||||
15 1
|
||||
16 1
|
||||
17 1
|
||||
18 1
|
||||
19 1
|
||||
20 1
|
||||
unlink: t1.cfg
|
||||
DROP TABLE t1;
|
||||
SET GLOBAL innodb_file_per_table = 0;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT) ENGINE=InnoDB;
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
16
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`c2` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`c1`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=latin1
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
Warnings:
|
||||
Warning 1809 Table `test`.`t1` in system tablespace
|
||||
@ -346,12 +302,7 @@ SET GLOBAL innodb_file_per_table = 1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB;
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
@ -359,41 +310,7 @@ t1 CREATE TABLE `t1` (
|
||||
`c2` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`c1`),
|
||||
KEY `idx` (`c2`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=latin1
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
4 1
|
||||
6 1
|
||||
7 1
|
||||
8 1
|
||||
9 1
|
||||
13 1
|
||||
14 1
|
||||
15 1
|
||||
16 1
|
||||
17 1
|
||||
18 1
|
||||
19 1
|
||||
20 1
|
||||
28 1
|
||||
29 1
|
||||
30 1
|
||||
31 1
|
||||
32 1
|
||||
33 1
|
||||
34 1
|
||||
35 1
|
||||
36 1
|
||||
37 1
|
||||
38 1
|
||||
39 1
|
||||
40 1
|
||||
41 1
|
||||
42 1
|
||||
43 1
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
backup: t1
|
||||
UNLOCK TABLES;
|
||||
@ -454,51 +371,30 @@ t1 CREATE TABLE `t1` (
|
||||
`c2` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`c1`),
|
||||
KEY `idx` (`c2`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=latin1
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
4 1
|
||||
5 1
|
||||
6 1
|
||||
7 1
|
||||
8 1
|
||||
9 1
|
||||
10 1
|
||||
11 1
|
||||
12 1
|
||||
13 1
|
||||
14 1
|
||||
15 1
|
||||
16 1
|
||||
17 1
|
||||
18 1
|
||||
19 1
|
||||
20 1
|
||||
28 1
|
||||
29 1
|
||||
30 1
|
||||
31 1
|
||||
32 1
|
||||
33 1
|
||||
34 1
|
||||
35 1
|
||||
36 1
|
||||
37 1
|
||||
38 1
|
||||
39 1
|
||||
40 1
|
||||
41 1
|
||||
42 1
|
||||
43 1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
@ -506,41 +402,7 @@ t1 CREATE TABLE `t1` (
|
||||
`c2` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`c1`),
|
||||
KEY `idx` (`c2`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=latin1 ROW_FORMAT=REDUNDANT
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
4 1
|
||||
6 1
|
||||
7 1
|
||||
8 1
|
||||
9 1
|
||||
13 1
|
||||
14 1
|
||||
15 1
|
||||
16 1
|
||||
17 1
|
||||
18 1
|
||||
19 1
|
||||
20 1
|
||||
28 1
|
||||
29 1
|
||||
30 1
|
||||
31 1
|
||||
32 1
|
||||
33 1
|
||||
34 1
|
||||
35 1
|
||||
36 1
|
||||
37 1
|
||||
38 1
|
||||
39 1
|
||||
40 1
|
||||
41 1
|
||||
42 1
|
||||
43 1
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1 ROW_FORMAT=REDUNDANT
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
backup: t1
|
||||
UNLOCK TABLES;
|
||||
@ -564,41 +426,25 @@ t1 CREATE TABLE `t1` (
|
||||
`c2` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`c1`),
|
||||
KEY `idx` (`c2`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=latin1 ROW_FORMAT=REDUNDANT
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1 ROW_FORMAT=REDUNDANT
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
4 1
|
||||
5 1
|
||||
6 1
|
||||
7 1
|
||||
8 1
|
||||
9 1
|
||||
10 1
|
||||
11 1
|
||||
12 1
|
||||
13 1
|
||||
14 1
|
||||
15 1
|
||||
16 1
|
||||
17 1
|
||||
18 1
|
||||
19 1
|
||||
20 1
|
||||
28 1
|
||||
29 1
|
||||
30 1
|
||||
31 1
|
||||
32 1
|
||||
33 1
|
||||
34 1
|
||||
35 1
|
||||
36 1
|
||||
37 1
|
||||
38 1
|
||||
39 1
|
||||
40 1
|
||||
41 1
|
||||
42 1
|
||||
43 1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
@ -652,51 +498,30 @@ t1 CREATE TABLE `t1` (
|
||||
`c2` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`c1`),
|
||||
KEY `idx` (`c2`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=latin1 ROW_FORMAT=REDUNDANT
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1 ROW_FORMAT=REDUNDANT
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
4 1
|
||||
5 1
|
||||
6 1
|
||||
7 1
|
||||
8 1
|
||||
9 1
|
||||
10 1
|
||||
11 1
|
||||
12 1
|
||||
13 1
|
||||
14 1
|
||||
15 1
|
||||
16 1
|
||||
17 1
|
||||
18 1
|
||||
19 1
|
||||
20 1
|
||||
28 1
|
||||
29 1
|
||||
30 1
|
||||
31 1
|
||||
32 1
|
||||
33 1
|
||||
34 1
|
||||
35 1
|
||||
36 1
|
||||
37 1
|
||||
38 1
|
||||
39 1
|
||||
40 1
|
||||
41 1
|
||||
42 1
|
||||
43 1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPACT;
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
@ -704,41 +529,7 @@ t1 CREATE TABLE `t1` (
|
||||
`c2` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`c1`),
|
||||
KEY `idx` (`c2`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
4 1
|
||||
6 1
|
||||
7 1
|
||||
8 1
|
||||
9 1
|
||||
13 1
|
||||
14 1
|
||||
15 1
|
||||
16 1
|
||||
17 1
|
||||
18 1
|
||||
19 1
|
||||
20 1
|
||||
28 1
|
||||
29 1
|
||||
30 1
|
||||
31 1
|
||||
32 1
|
||||
33 1
|
||||
34 1
|
||||
35 1
|
||||
36 1
|
||||
37 1
|
||||
38 1
|
||||
39 1
|
||||
40 1
|
||||
41 1
|
||||
42 1
|
||||
43 1
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
backup: t1
|
||||
UNLOCK TABLES;
|
||||
@ -762,41 +553,25 @@ t1 CREATE TABLE `t1` (
|
||||
`c2` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`c1`),
|
||||
KEY `idx` (`c2`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
4 1
|
||||
5 1
|
||||
6 1
|
||||
7 1
|
||||
8 1
|
||||
9 1
|
||||
10 1
|
||||
11 1
|
||||
12 1
|
||||
13 1
|
||||
14 1
|
||||
15 1
|
||||
16 1
|
||||
17 1
|
||||
18 1
|
||||
19 1
|
||||
20 1
|
||||
28 1
|
||||
29 1
|
||||
30 1
|
||||
31 1
|
||||
32 1
|
||||
33 1
|
||||
34 1
|
||||
35 1
|
||||
36 1
|
||||
37 1
|
||||
38 1
|
||||
39 1
|
||||
40 1
|
||||
41 1
|
||||
42 1
|
||||
43 1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
@ -853,51 +628,30 @@ t1 CREATE TABLE `t1` (
|
||||
`c2` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`c1`),
|
||||
KEY `idx` (`c2`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
4 1
|
||||
5 1
|
||||
6 1
|
||||
7 1
|
||||
8 1
|
||||
9 1
|
||||
10 1
|
||||
11 1
|
||||
12 1
|
||||
13 1
|
||||
14 1
|
||||
15 1
|
||||
16 1
|
||||
17 1
|
||||
18 1
|
||||
19 1
|
||||
20 1
|
||||
28 1
|
||||
29 1
|
||||
30 1
|
||||
31 1
|
||||
32 1
|
||||
33 1
|
||||
34 1
|
||||
35 1
|
||||
36 1
|
||||
37 1
|
||||
38 1
|
||||
39 1
|
||||
40 1
|
||||
41 1
|
||||
42 1
|
||||
43 1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
@ -905,41 +659,7 @@ t1 CREATE TABLE `t1` (
|
||||
`c2` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`c1`),
|
||||
KEY `idx` (`c2`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
4 1
|
||||
6 1
|
||||
7 1
|
||||
8 1
|
||||
9 1
|
||||
13 1
|
||||
14 1
|
||||
15 1
|
||||
16 1
|
||||
17 1
|
||||
18 1
|
||||
19 1
|
||||
20 1
|
||||
28 1
|
||||
29 1
|
||||
30 1
|
||||
31 1
|
||||
32 1
|
||||
33 1
|
||||
34 1
|
||||
35 1
|
||||
36 1
|
||||
37 1
|
||||
38 1
|
||||
39 1
|
||||
40 1
|
||||
41 1
|
||||
42 1
|
||||
43 1
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
backup: t1
|
||||
UNLOCK TABLES;
|
||||
@ -963,41 +683,25 @@ t1 CREATE TABLE `t1` (
|
||||
`c2` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`c1`),
|
||||
KEY `idx` (`c2`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
4 1
|
||||
5 1
|
||||
6 1
|
||||
7 1
|
||||
8 1
|
||||
9 1
|
||||
10 1
|
||||
11 1
|
||||
12 1
|
||||
13 1
|
||||
14 1
|
||||
15 1
|
||||
16 1
|
||||
17 1
|
||||
18 1
|
||||
19 1
|
||||
20 1
|
||||
28 1
|
||||
29 1
|
||||
30 1
|
||||
31 1
|
||||
32 1
|
||||
33 1
|
||||
34 1
|
||||
35 1
|
||||
36 1
|
||||
37 1
|
||||
38 1
|
||||
39 1
|
||||
40 1
|
||||
41 1
|
||||
42 1
|
||||
43 1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
@ -1054,51 +758,30 @@ t1 CREATE TABLE `t1` (
|
||||
`c2` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`c1`),
|
||||
KEY `idx` (`c2`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
4 1
|
||||
5 1
|
||||
6 1
|
||||
7 1
|
||||
8 1
|
||||
9 1
|
||||
10 1
|
||||
11 1
|
||||
12 1
|
||||
13 1
|
||||
14 1
|
||||
15 1
|
||||
16 1
|
||||
17 1
|
||||
18 1
|
||||
19 1
|
||||
20 1
|
||||
28 1
|
||||
29 1
|
||||
30 1
|
||||
31 1
|
||||
32 1
|
||||
33 1
|
||||
34 1
|
||||
35 1
|
||||
36 1
|
||||
37 1
|
||||
38 1
|
||||
39 1
|
||||
40 1
|
||||
41 1
|
||||
42 1
|
||||
43 1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
@ -1106,41 +789,7 @@ t1 CREATE TABLE `t1` (
|
||||
`c2` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`c1`),
|
||||
KEY `idx` (`c2`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
4 1
|
||||
6 1
|
||||
7 1
|
||||
8 1
|
||||
9 1
|
||||
13 1
|
||||
14 1
|
||||
15 1
|
||||
16 1
|
||||
17 1
|
||||
18 1
|
||||
19 1
|
||||
20 1
|
||||
28 1
|
||||
29 1
|
||||
30 1
|
||||
31 1
|
||||
32 1
|
||||
33 1
|
||||
34 1
|
||||
35 1
|
||||
36 1
|
||||
37 1
|
||||
38 1
|
||||
39 1
|
||||
40 1
|
||||
41 1
|
||||
42 1
|
||||
43 1
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
backup: t1
|
||||
UNLOCK TABLES;
|
||||
@ -1164,41 +813,25 @@ t1 CREATE TABLE `t1` (
|
||||
`c2` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`c1`),
|
||||
KEY `idx` (`c2`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
4 1
|
||||
5 1
|
||||
6 1
|
||||
7 1
|
||||
8 1
|
||||
9 1
|
||||
10 1
|
||||
11 1
|
||||
12 1
|
||||
13 1
|
||||
14 1
|
||||
15 1
|
||||
16 1
|
||||
17 1
|
||||
18 1
|
||||
19 1
|
||||
20 1
|
||||
28 1
|
||||
29 1
|
||||
30 1
|
||||
31 1
|
||||
32 1
|
||||
33 1
|
||||
34 1
|
||||
35 1
|
||||
36 1
|
||||
37 1
|
||||
38 1
|
||||
39 1
|
||||
40 1
|
||||
41 1
|
||||
42 1
|
||||
43 1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
@ -1268,43 +901,26 @@ t1 CREATE TABLE `t1` (
|
||||
`c2` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`c1`),
|
||||
KEY `idx` (`c2`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
4 1
|
||||
5 1
|
||||
6 1
|
||||
7 1
|
||||
8 1
|
||||
9 1
|
||||
10 1
|
||||
11 1
|
||||
12 1
|
||||
13 1
|
||||
14 1
|
||||
15 1
|
||||
16 1
|
||||
17 1
|
||||
18 1
|
||||
19 1
|
||||
20 1
|
||||
28 1
|
||||
29 1
|
||||
30 1
|
||||
31 1
|
||||
32 1
|
||||
33 1
|
||||
34 1
|
||||
35 1
|
||||
36 1
|
||||
37 1
|
||||
38 1
|
||||
39 1
|
||||
40 1
|
||||
41 1
|
||||
42 1
|
||||
43 1
|
||||
DROP TABLE t1;
|
||||
call mtr.add_suppression("Got error -1 when reading table '.*'");
|
||||
call mtr.add_suppression("InnoDB: Error: tablespace id and flags in file '.*'.*");
|
||||
call mtr.add_suppression("InnoDB: Error: tablespace id and flags in file '.*'");
|
||||
call mtr.add_suppression("InnoDB: The table .* doesn't have a corresponding tablespace, it was discarded");
|
||||
FLUSH TABLES;
|
||||
|
@ -1,7 +1,7 @@
|
||||
DROP TABLE if exists t1;
|
||||
select @@global.innodb_stats_persistent;
|
||||
@@global.innodb_stats_persistent
|
||||
0
|
||||
SET @n_pages= @@GLOBAL.innodb_defragment_n_pages;
|
||||
SET @accuracy= @@GLOBAL.innodb_defragment_stats_accuracy;
|
||||
SET @sp= @@GLOBAL.innodb_stats_persistent;
|
||||
SET GLOBAL innodb_stats_persistent = 0;
|
||||
set global innodb_defragment_stats_accuracy = 80;
|
||||
CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
b VARCHAR(256),
|
||||
@ -18,6 +18,14 @@ connect con3,localhost,root,,test,$MASTER_MYPORT,$MASTER_MYSOCK;
|
||||
connect con4,localhost,root,,test,$MASTER_MYPORT,$MASTER_MYSOCK;
|
||||
connection default;
|
||||
SET @@global.innodb_defragment_n_pages = 20;
|
||||
CREATE TEMPORARY TABLE tt (a INT, KEY(a)) ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
|
||||
INSERT INTO tt SELECT 0 FROM seq_1_to_180;
|
||||
INSERT INTO tt SELECT 5 FROM seq_1_to_160;
|
||||
INSERT INTO tt SELECT 1 FROM seq_1_to_1000;
|
||||
OPTIMIZE TABLE tt;
|
||||
Table Op Msg_type Msg_text
|
||||
test.tt optimize note Table does not support optimize, doing recreate + analyze instead
|
||||
test.tt optimize status OK
|
||||
select count(*) from t1;
|
||||
count(*)
|
||||
20000
|
||||
@ -89,3 +97,6 @@ select count(stat_value) > 0 from mysql.innodb_index_stats where table_name like
|
||||
count(stat_value) > 0
|
||||
1
|
||||
drop table t1;
|
||||
SET GLOBAL innodb_defragment_n_pages = @n_pages;
|
||||
SET GLOBAL innodb_defragment_stats_accuracy = @accuracy;
|
||||
SET GLOBAL innodb_stats_persistent = @sp;
|
||||
|
@ -59,7 +59,9 @@ ALTER TABLE t ALGORITHM=COPY, DISCARD TABLESPACE;
|
||||
--error ER_PARSE_ERROR
|
||||
ALTER TABLE t ALGORITHM=DEFAULT, DISCARD TABLESPACE;
|
||||
ALTER TABLE t DISCARD TABLESPACE;
|
||||
DROP TABLE t;
|
||||
RENAME TABLE t TO u;
|
||||
RENAME TABLE u TO v;
|
||||
DROP TABLE v;
|
||||
--error ER_GET_ERRNO
|
||||
SELECT * FROM `x..d`;
|
||||
DROP TABLE `x..d`;
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -2,9 +2,10 @@
|
||||
--source include/not_embedded.inc
|
||||
|
||||
-- source include/have_innodb.inc
|
||||
-- source include/have_sequence.inc
|
||||
-- source include/innodb_checksum_algorithm.inc
|
||||
|
||||
call mtr.add_suppression("InnoDB: Unable to import tablespace .* because it already exists. Please DISCARD the tablespace before IMPORT.");
|
||||
call mtr.add_suppression("InnoDB: Unable to import tablespace .* because it already exists. Please DISCARD the tablespace before IMPORT\\.");
|
||||
call mtr.add_suppression("Index for table 't2' is corrupt; try to repair it");
|
||||
FLUSH TABLES;
|
||||
|
||||
@ -19,17 +20,14 @@ CREATE TABLE t1
|
||||
KEY (b))
|
||||
ENGINE = InnoDB;
|
||||
|
||||
insert into t1 (b, c) values ('Apa', 'Filler........'),
|
||||
CREATE TEMPORARY TABLE t (b char(22),c varchar(255));
|
||||
INSERT INTO t VALUES
|
||||
('Apa', 'Filler........'),
|
||||
('Banan', 'Filler........'), ('Cavalry', '..asdasdfaeraf'),
|
||||
('Devotion', 'asdfuihknaskdf'), ('Evolution', 'lsjndofiabsoibeg');
|
||||
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b,c) SELECT b,c FROM t,seq_1_to_128;
|
||||
DROP TEMPORARY TABLE t;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
SELECT * FROM t1 ORDER BY b,a DESC LIMIT 3;
|
||||
SELECT * FROM t1 ORDER BY a DESC LIMIT 3;
|
||||
@ -119,16 +117,11 @@ CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT) ENGINE=InnoDB;
|
||||
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
|
||||
--list_files $MYSQLD_DATADIR/test
|
||||
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_backup_tablespaces("test", "t1");
|
||||
@ -170,15 +163,10 @@ CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT) ENGINE=InnoDB;
|
||||
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
|
||||
--list_files $MYSQLD_DATADIR/test
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_backup_tablespaces("test", "t1");
|
||||
@ -189,9 +177,6 @@ UNLOCK TABLES;
|
||||
--list_files $MYSQLD_DATADIR/test
|
||||
|
||||
# Move the LSN forward
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(
|
||||
@ -224,14 +209,9 @@ CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX(c2)) ENGINE=InnoDB;
|
||||
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
SELECT COUNT(*) FROM t1 WHERE c2 = 1;
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_backup_tablespaces("test", "t1");
|
||||
@ -240,9 +220,6 @@ EOF
|
||||
UNLOCK TABLES;
|
||||
|
||||
# Move the LSN forward
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(
|
||||
@ -275,14 +252,9 @@ CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB;
|
||||
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
SELECT COUNT(*) FROM t1 WHERE c2 = 1;
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_backup_tablespaces("test", "t1");
|
||||
@ -290,9 +262,6 @@ EOF
|
||||
UNLOCK TABLES;
|
||||
|
||||
# Move the LSN forward
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(
|
||||
@ -345,14 +314,7 @@ CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT) ENGINE=InnoDB;
|
||||
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
|
||||
SELECT COUNT(*) FROM t1;
|
||||
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
# This should fail, InnoDB should return a warning
|
||||
@ -372,15 +334,9 @@ CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB;
|
||||
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
|
||||
SHOW CREATE TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
|
||||
@ -507,15 +463,9 @@ CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
|
||||
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
|
||||
SHOW CREATE TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
|
||||
@ -660,15 +610,9 @@ CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPACT;
|
||||
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
|
||||
SHOW CREATE TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
|
||||
@ -814,15 +758,9 @@ CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
|
||||
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
|
||||
SHOW CREATE TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
|
||||
@ -968,15 +906,9 @@ CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
|
||||
SHOW CREATE TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
|
||||
@ -1141,9 +1073,8 @@ SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
call mtr.add_suppression("Got error -1 when reading table '.*'");
|
||||
call mtr.add_suppression("InnoDB: Error: tablespace id and flags in file '.*'.*");
|
||||
call mtr.add_suppression("InnoDB: Error: tablespace id and flags in file '.*'");
|
||||
call mtr.add_suppression("InnoDB: The table .* doesn't have a corresponding tablespace, it was discarded");
|
||||
FLUSH TABLES;
|
||||
|
||||
# cleanup
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/t1.cfg
|
||||
|
@ -2,17 +2,13 @@
|
||||
--source include/big_test.inc
|
||||
--source include/not_valgrind.inc
|
||||
--source include/not_embedded.inc
|
||||
--source include/have_sequence.inc
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE if exists t1;
|
||||
--enable_warnings
|
||||
SET @n_pages= @@GLOBAL.innodb_defragment_n_pages;
|
||||
SET @accuracy= @@GLOBAL.innodb_defragment_stats_accuracy;
|
||||
SET @sp= @@GLOBAL.innodb_stats_persistent;
|
||||
|
||||
--disable_query_log
|
||||
let $innodb_defragment_n_pages_orig=`select @@innodb_defragment_n_pages`;
|
||||
let $innodb_defragment_stats_accuracy_orig=`select @@innodb_defragment_stats_accuracy`;
|
||||
--enable_query_log
|
||||
|
||||
select @@global.innodb_stats_persistent;
|
||||
SET GLOBAL innodb_stats_persistent = 0;
|
||||
set global innodb_defragment_stats_accuracy = 80;
|
||||
|
||||
# Create table.
|
||||
@ -46,6 +42,12 @@ connection default;
|
||||
|
||||
SET @@global.innodb_defragment_n_pages = 20;
|
||||
|
||||
CREATE TEMPORARY TABLE tt (a INT, KEY(a)) ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
|
||||
INSERT INTO tt SELECT 0 FROM seq_1_to_180;
|
||||
INSERT INTO tt SELECT 5 FROM seq_1_to_160;
|
||||
INSERT INTO tt SELECT 1 FROM seq_1_to_1000;
|
||||
OPTIMIZE TABLE tt;
|
||||
|
||||
let $data_size = 20000;
|
||||
let $delete_size = 2000;
|
||||
|
||||
@ -60,7 +62,7 @@ while ($i)
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
select count(*) from t1;
|
||||
select count(*) from t1;
|
||||
select count(*) from t1 force index (second);
|
||||
select count(*) from t1 force index (third);
|
||||
|
||||
@ -75,7 +77,7 @@ while ($size)
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
select count(*) from t1;
|
||||
select count(*) from t1;
|
||||
select count(*) from t1 force index (second);
|
||||
select count(*) from t1 force index (third);
|
||||
|
||||
@ -136,7 +138,6 @@ select count(stat_value) > 0 from mysql.innodb_index_stats where table_name like
|
||||
drop table t1;
|
||||
|
||||
# reset system
|
||||
--disable_query_log
|
||||
EVAL SET GLOBAL innodb_defragment_n_pages = $innodb_defragment_n_pages_orig;
|
||||
EVAL SET GLOBAL innodb_defragment_stats_accuracy = $innodb_defragment_stats_accuracy_orig;
|
||||
--enable_query_log
|
||||
SET GLOBAL innodb_defragment_n_pages = @n_pages;
|
||||
SET GLOBAL innodb_defragment_stats_accuracy = @accuracy;
|
||||
SET GLOBAL innodb_stats_persistent = @sp;
|
||||
|
@ -100,17 +100,17 @@ INSERT INTO t1(title) VALUES('mysql');
|
||||
ERROR HY000: Lost connection to MySQL server during query
|
||||
# restart
|
||||
After restart
|
||||
SELECT * FROM t1 WHERE MATCH(title) AGAINST ('mysql database');
|
||||
FTS_DOC_ID title
|
||||
1 database
|
||||
SELECT title FROM t1 WHERE MATCH(title) AGAINST ('mysql database');
|
||||
title
|
||||
database
|
||||
SET @old_dbug = @@SESSION.debug_dbug;
|
||||
SET debug_dbug = '+d,fts_instrument_sync_debug';
|
||||
INSERT INTO t1(title) VALUES('mysql');
|
||||
SET debug_dbug = @old_dbug;
|
||||
SELECT * FROM t1 WHERE MATCH(title) AGAINST ('mysql database');
|
||||
FTS_DOC_ID title
|
||||
1 database
|
||||
2 mysql
|
||||
SELECT title FROM t1 WHERE MATCH(title) AGAINST ('mysql database');
|
||||
title
|
||||
database
|
||||
mysql
|
||||
DROP TABLE t1;
|
||||
# Case 4: Test sync commit & rollback in background
|
||||
CREATE TABLE t1(
|
||||
|
@ -123,7 +123,9 @@ INSERT INTO t1(title) VALUES('mysql');
|
||||
--source include/start_mysqld.inc
|
||||
|
||||
-- echo After restart
|
||||
SELECT * FROM t1 WHERE MATCH(title) AGAINST ('mysql database');
|
||||
# PAGE_ROOT_AUTO_INC could contain last failed autoinc value. Avoid
|
||||
# doing show the result of auto increment field
|
||||
SELECT title FROM t1 WHERE MATCH(title) AGAINST ('mysql database');
|
||||
|
||||
SET @old_dbug = @@SESSION.debug_dbug;
|
||||
|
||||
@ -133,7 +135,7 @@ INSERT INTO t1(title) VALUES('mysql');
|
||||
|
||||
SET debug_dbug = @old_dbug;
|
||||
|
||||
SELECT * FROM t1 WHERE MATCH(title) AGAINST ('mysql database');
|
||||
SELECT title FROM t1 WHERE MATCH(title) AGAINST ('mysql database');
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
|
@ -10,9 +10,3 @@
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
gis_split_inf : MDEV-14057 InnoDB GIS tests fail
|
||||
rtree_multi_pk : MDEV-14057 InnoDB GIS tests fail
|
||||
point_big : MDEV-14057 InnoDB GIS tests fail
|
||||
geometry : MDEV-14057 InnoDB GIS tests fail
|
||||
bug16236208 : MDEV-14057 InnoDB GIS tests fail
|
||||
bug16266012 : MDEV-14057 InnoDB GIS tests fail
|
||||
|
@ -1040,9 +1040,9 @@ SET @a=0x00000000030000000000000000000000000000000000144000000000000014400000000
|
||||
SET @a=ST_POLYFROMWKB(@a);
|
||||
create table t1(a polygon NOT NULL)engine=InnoDB;
|
||||
insert into t1 values (ST_geomfromtext("point(0 1)"));
|
||||
ERROR 22007: Incorrect POLYGON value: 'POINT' for column `test`.`t1`.`a` at row 1
|
||||
ERROR 22007: Incorrect POLYGON value: 'POINT(0 1)' for column `test`.`t1`.`a` at row 1
|
||||
insert into t1 values (ST_geomfromtext("point(1 0)"));
|
||||
ERROR 22007: Incorrect POLYGON value: 'POINT' for column `test`.`t1`.`a` at row 1
|
||||
ERROR 22007: Incorrect POLYGON value: 'POINT(1 0)' for column `test`.`t1`.`a` at row 1
|
||||
select * from (select polygon(t1.a) as p from t1 order by t1.a) d;
|
||||
p
|
||||
drop table t1;
|
||||
|
@ -485,7 +485,7 @@ ALTER TABLE tab MODIFY COLUMN c2 GEOMETRY NOT NULL;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
ALTER TABLE tab MODIFY COLUMN c3 POLYGON NOT NULL;
|
||||
ERROR 22007: Incorrect POLYGON value: 'LINESTRING' for column `test`.`tab`.`c3` at row 1
|
||||
ERROR 22007: Incorrect POLYGON value: 'LINESTRING(5 5,20 20,30 30)' for column `test`.`tab`.`c3` at row 1
|
||||
ALTER TABLE tab add COLUMN c7 POINT NOT NULL;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
@ -790,13 +790,13 @@ DROP TABLE t1;
|
||||
create table t1 (p point not null default if(unix_timestamp()>10,POINT(1,1),LineString(Point(0,0),Point(1,1)))) ENGINE=innodb;
|
||||
set timestamp=10;
|
||||
insert into t1 values(default);
|
||||
ERROR 22007: Incorrect POINT value: 'LINESTRING' for column `test`.`t1`.`p` at row 1
|
||||
ERROR 22007: Incorrect POINT value: 'LINESTRING(0 0,1 1)' for column `test`.`t1`.`p` at row 1
|
||||
drop table t1;
|
||||
SET timestamp=default;
|
||||
create table t1 (p point not null default if(unix_timestamp()>10,POINT(1,1),LineString(Point(0,0),Point(1,1)))) ENGINE=innodb;
|
||||
set timestamp=10;
|
||||
alter table t1 add column i int;
|
||||
ERROR 22007: Incorrect POINT value: 'LINESTRING' for column `test`.`t1`.`p` at row 1
|
||||
ERROR 22007: Incorrect POINT value: 'LINESTRING(0 0,1 1)' for column `test`.`t1`.`p` at row 1
|
||||
drop table t1;
|
||||
SET timestamp=default;
|
||||
CREATE OR REPLACE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||
|
@ -39,5 +39,5 @@ ST_WITHIN( ST_GeomFromText('POLYGON( ( 4135 3009 , 4914 3087 , 4236 3194 , 4091
|
||||
ST_GeomFromText('MULTILINESTRING( ( 4147 2871 , 4072 3042 , 4081 3099 , 3796
|
||||
3021 , 4007 3463 ) , ( 4042 2808 , 4109 2816 , 3730 3673 ) )') ,
|
||||
linestring_key ) AND ST_Length( linestring_nokey ) > 1;
|
||||
ERROR 22023: Invalid GIS data provided to function st_within.
|
||||
ST_AsText(linestring_nokey)
|
||||
DROP TABLE linestring;
|
||||
|
@ -6,4 +6,9 @@ MULTIPOLYGON( ( ( 0 0 , 7 1 , 6 8 , 0 0 ) ) , ( ( 9 9 , 4 0 , 4 7 , 9 9) ) )
|
||||
') ) , ST_SYMDIFFERENCE( POLYGONFROMTEXT(' POLYGON( ( 9 9 , 6 5 , 2 3 , 9 9
|
||||
) ) ') , MULTIPOLYGONFROMTEXT(' MULTIPOLYGON( ( ( 2 2 , 5 2 , 5 2 , 2 6 , 2
|
||||
2 ) ) , ( ( 7 7 , 3 7 , 2 9 , 7 1 , 7 7 ) ) ) ') ) ) );
|
||||
ERROR HY000: Geometry overlay calculation error: geometry data is invalid in function st_union.
|
||||
ST_WITHIN( LINESTRINGFROMTEXT(' LINESTRING( 5 9 , 3 4 , 4 1 , 4
|
||||
4 , 4 9 ) ') , ST_SYMDIFFERENCE( ST_UNION( ST_ENVELOPE( POLYGONFROMTEXT('
|
||||
POLYGON( ( 3 2 , 0 6 , 2 3 , 8 0 , 4 6 , 7 2 , 3 2 ) ) ') ) ,
|
||||
MULTIPOLYGONFROMTEXT('
|
||||
MULTIPOLYGON( ( ( 0 0 , 7 1 , 6
|
||||
0
|
||||
|
@ -99,9 +99,9 @@ fid ST_AsText(g)
|
||||
110 POLYGON((0 0,30 0,30 30,0 0))
|
||||
SELECT fid, ST_AsText(g) FROM gis_multi_point;
|
||||
fid ST_AsText(g)
|
||||
111 MULTIPOINT((0 0),(10 10),(10 20),(20 20))
|
||||
112 MULTIPOINT((1 1),(11 11),(11 21),(21 21))
|
||||
113 MULTIPOINT((3 6),(4 10))
|
||||
111 MULTIPOINT(0 0,10 10,10 20,20 20)
|
||||
112 MULTIPOINT(1 1,11 11,11 21,21 21)
|
||||
113 MULTIPOINT(3 6,4 10)
|
||||
SELECT fid, ST_AsText(g) FROM gis_multi_line;
|
||||
fid ST_AsText(g)
|
||||
114 MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))
|
||||
@ -129,9 +129,9 @@ fid ST_AsText(g)
|
||||
108 POLYGON((10 10,20 10,20 20,10 20,10 10))
|
||||
109 POLYGON((0 0,50 0,50 50,0 50,0 0),(10 10,20 10,20 20,10 20,10 10))
|
||||
110 POLYGON((0 0,30 0,30 30,0 0))
|
||||
111 MULTIPOINT((0 0),(10 10),(10 20),(20 20))
|
||||
112 MULTIPOINT((1 1),(11 11),(11 21),(21 21))
|
||||
113 MULTIPOINT((3 6),(4 10))
|
||||
111 MULTIPOINT(0 0,10 10,10 20,20 20)
|
||||
112 MULTIPOINT(1 1,11 11,11 21,21 21)
|
||||
113 MULTIPOINT(3 6,4 10)
|
||||
114 MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))
|
||||
115 MULTILINESTRING((10 48,10 21,10 0))
|
||||
116 MULTILINESTRING((1 2,3 5),(2 5,5 8,21 7))
|
||||
@ -178,62 +178,40 @@ CREATE UNIQUE INDEX idx2 on tab(c8(5) ASC) ;
|
||||
#check equality predicate on the index columns
|
||||
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab
|
||||
WHERE c2=ST_LineFromText('LINESTRING(10 10,20 20,30 30)');
|
||||
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE tab NULL ref idx1 idx1 8 const # 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select st_astext(`test`.`tab`.`c1`) AS `ST_ASText(c1)`,st_astext(`test`.`tab`.`c2`) AS `ST_AsText(c2)`,st_astext(`test`.`tab`.`c8`) AS `ST_AsText(c8)` from `test`.`tab` where (`test`.`tab`.`c2` = <cache>(st_geometryfromtext('LINESTRING(10 10,20 20,30 30)')))
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE tab ref idx1 idx1 8 const 1 #
|
||||
#check index with WKB function
|
||||
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8)
|
||||
FROM tab WHERE c2=ST_LineStringFromWKB(ST_AsWKB(ST_LineFromText('LINESTRING(10 10,20 20,30 30)')));
|
||||
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE tab NULL ref idx1 idx1 8 const # 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select st_astext(`test`.`tab`.`c1`) AS `ST_ASText(c1)`,st_astext(`test`.`tab`.`c2`) AS `ST_AsText(c2)`,st_astext(`test`.`tab`.`c8`) AS `ST_AsText(c8)` from `test`.`tab` where (`test`.`tab`.`c2` = <cache>(st_geometryfromwkb(st_aswkb(st_geometryfromtext('LINESTRING(10 10,20 20,30 30)')))))
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE tab ref idx1 idx1 8 const 1 #
|
||||
#check index with WKT function
|
||||
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab
|
||||
WHERE c3=ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))');
|
||||
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE tab NULL ref idx3 idx3 8 const # 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select st_astext(`test`.`tab`.`c1`) AS `ST_ASText(c1)`,st_astext(`test`.`tab`.`c2`) AS `ST_AsText(c2)`,st_astext(`test`.`tab`.`c8`) AS `ST_AsText(c8)` from `test`.`tab` where (`test`.`tab`.`c3` = <cache>(st_geometryfromtext('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))')))
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE tab ref idx3 idx3 8 const 1 #
|
||||
#check index with WKB function
|
||||
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8)
|
||||
FROM tab
|
||||
WHERE c3=ST_PolyFromWKB(ST_AsWkB(ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))')));
|
||||
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE tab NULL ref idx3 idx3 8 const # 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select st_astext(`test`.`tab`.`c1`) AS `ST_ASText(c1)`,st_astext(`test`.`tab`.`c2`) AS `ST_AsText(c2)`,st_astext(`test`.`tab`.`c8`) AS `ST_AsText(c8)` from `test`.`tab` where (`test`.`tab`.`c3` = <cache>(st_geometryfromwkb(st_aswkb(st_geometryfromtext('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))')))))
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE tab ref idx3 idx3 8 const 1 #
|
||||
#check index with WKT function
|
||||
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab
|
||||
WHERE c8=ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))');
|
||||
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE tab NULL const idx2 idx2 8 const # 100.00 NULL
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select st_astext('
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE tab const idx2 idx2 8 const 1 #
|
||||
#check index with WKB function
|
||||
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8)
|
||||
FROM tab
|
||||
WHERE c8=ST_GeometryFromWKB(ST_AsWKB(ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))')));
|
||||
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE tab NULL const idx2 idx2 8 const # 100.00 NULL
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select st_astext('
|
||||
#check range predicate on the index columns
|
||||
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab
|
||||
WHERE c2>=ST_LineFromText('LINESTRING(10 10,20 20,30 30)');
|
||||
ERROR HY000: Incorrect arguments to >=
|
||||
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab
|
||||
WHERE c3>=ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))');
|
||||
ERROR HY000: Incorrect arguments to >=
|
||||
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab
|
||||
WHERE c8>=ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))');
|
||||
ERROR HY000: Incorrect arguments to >=
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE tab const idx2 idx2 8 const 1 #
|
||||
#check index with DELETE operation
|
||||
EXPLAIN DELETE FROM tab
|
||||
WHERE c8=ST_GeometryFromWKB(ST_AsWKB(ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))')));
|
||||
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
||||
1 DELETE tab NULL range idx2 idx2 8 const # 100.00 Using where
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE tab range idx2 idx2 8 NULL 1 #
|
||||
#check the spatial values
|
||||
SELECT ST_AsText(c1) FROM tab;
|
||||
ST_AsText(c1)
|
||||
@ -246,7 +224,7 @@ ST_AsText(c3)
|
||||
POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))
|
||||
SELECT ST_AsText(c4) FROM tab;
|
||||
ST_AsText(c4)
|
||||
MULTIPOINT((0 0),(5 5),(10 10),(20 20))
|
||||
MULTIPOINT(0 0,5 5,10 10,20 20)
|
||||
SELECT ST_AsText(c5) FROM tab;
|
||||
ST_AsText(c5)
|
||||
MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30))
|
||||
@ -290,7 +268,7 @@ ST_AsText(c3)
|
||||
POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))
|
||||
SELECT ST_AsText(c4) FROM tab;
|
||||
ST_AsText(c4)
|
||||
MULTIPOINT((0 0),(5 5),(10 10),(20 20))
|
||||
MULTIPOINT(0 0,5 5,10 10,20 20)
|
||||
SELECT ST_AsText(c5) FROM tab;
|
||||
ST_AsText(c5)
|
||||
MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30))
|
||||
@ -334,7 +312,7 @@ ST_AsText(c3)
|
||||
POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))
|
||||
SELECT ST_AsText(c4) FROM tab;
|
||||
ST_AsText(c4)
|
||||
MULTIPOINT((0 0),(5 5),(10 10),(20 20))
|
||||
MULTIPOINT(0 0,5 5,10 10,20 20)
|
||||
SELECT ST_AsText(c5) FROM tab;
|
||||
ST_AsText(c5)
|
||||
MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30))
|
||||
@ -353,7 +331,7 @@ ALTER TABLE tab MODIFY COLUMN c1 BLOB;
|
||||
SHOW CREATE TABLE tab;
|
||||
Table Create Table
|
||||
tab CREATE TABLE `tab` (
|
||||
`c1` blob,
|
||||
`c1` blob DEFAULT NULL,
|
||||
`c2` linestring DEFAULT NULL,
|
||||
`c3` polygon DEFAULT NULL,
|
||||
`c4` multipoint DEFAULT NULL,
|
||||
@ -384,6 +362,8 @@ c7 geometrycollection YES NULL
|
||||
c8 geometry YES UNI NULL
|
||||
#add primary key
|
||||
ALTER TABLE tab ADD PRIMARY KEY pk2(c8(5));
|
||||
Warnings:
|
||||
Warning 1280 Name 'pk2' ignored for PRIMARY key.
|
||||
#check columns
|
||||
SHOW FIELDS FROM tab;
|
||||
Field Type Null Key Default Extra
|
||||
@ -441,7 +421,7 @@ ST_AsText(c3)
|
||||
POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))
|
||||
SELECT ST_AsText(c4) FROM tab;
|
||||
ST_AsText(c4)
|
||||
MULTIPOINT((0 0),(5 5),(10 10),(20 20))
|
||||
MULTIPOINT(0 0,5 5,10 10,20 20)
|
||||
SELECT ST_AsText(c5) FROM tab;
|
||||
ST_AsText(c5)
|
||||
MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30))
|
||||
@ -516,7 +496,7 @@ ST_AsText(c3)
|
||||
POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))
|
||||
SELECT ST_AsText(c4) FROM tab2;
|
||||
ST_AsText(c4)
|
||||
MULTIPOINT((0 0),(5 5),(10 10),(20 20))
|
||||
MULTIPOINT(0 0,5 5,10 10,20 20)
|
||||
SELECT ST_AsText(c5) FROM tab2;
|
||||
ST_AsText(c5)
|
||||
MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30))
|
||||
@ -555,11 +535,9 @@ ST_AsText(a.c2) ST_AsText(b.c2)
|
||||
LINESTRING(10 10,20 20,30 30) LINESTRING(10 10,20 20,30 30)
|
||||
#check DELETE stmt with Where clause and a constant predicate
|
||||
DELETE FROM tab
|
||||
Where c8=c8=ST_GeometryFromWKB(ST_AsWKB(ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))')));
|
||||
#check the data, should 0
|
||||
SELECT COUNT(*) FROM tab;
|
||||
COUNT(*)
|
||||
1
|
||||
WHERE c8=ST_GeometryFromWKB(ST_AsWKB(ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))')));
|
||||
SELECT * FROM tab;
|
||||
c0 c2 c3 c4 c5 c6 c7 c8
|
||||
#check UPDATE stmt with Where clause and a constant predicate
|
||||
SET @c8=ST_GeomCollFromText('GeometryCollection(Point(10 10),LineString(20 20, 30 30))');
|
||||
UPDATE tab2 SET c8=@c8
|
||||
@ -596,16 +574,29 @@ COUNT(ST_AsText(g))
|
||||
SELECT SUM(ST_AsText(g)) FROM gis_point;
|
||||
SUM(ST_AsText(g))
|
||||
0
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'POINT(10 10)'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'POINT(20 10)'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'POINT(20 20)'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'POINT(10 20)'
|
||||
SELECT SUM(ST_AsText(g)) FROM gis_line;
|
||||
SUM(ST_AsText(g))
|
||||
0
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'LINESTRING(0 0,0 10,10 0)'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'LINESTRING(10 10,20 10,20 20,10 20,10 10)'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'LINESTRING(10 10,40 10)'
|
||||
SELECT AVG(ST_AsText(g)) FROM gis_polygon;
|
||||
AVG(ST_AsText(g))
|
||||
0
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'POLYGON((10 10,20 10,20 20,10 20,10 10))'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'POLYGON((0 0,50 0,50 50,0 50,0 0),(10 10,20 10,20 20,10 20,10 10))'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'POLYGON((0 0,30 0,30 30,0 0))'
|
||||
#here it show some string value no meaning
|
||||
SELECT MAX(ST_AsText(g)) FROM gis_multi_point;
|
||||
MAX(ST_AsText(g))
|
||||
MULTIPOINT((3 6),(4 10))
|
||||
MULTIPOINT(3 6,4 10)
|
||||
#here it show some string value no meaning
|
||||
SELECT MIN(ST_AsText(g)) FROM gis_multi_line;
|
||||
MIN(ST_AsText(g))
|
||||
@ -613,12 +604,39 @@ MULTILINESTRING((1 2,3 5),(2 5,5 8,21 7))
|
||||
SELECT STD(ST_AsText(g)) FROM gis_multi_polygon;
|
||||
STD(ST_AsText(g))
|
||||
0
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: '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)))'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: '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)))'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'MULTIPOLYGON(((0 3,3 3,3 0,0 3)))'
|
||||
SELECT COUNT(ST_AsText(g)) FROM gis_geometrycollection;
|
||||
COUNT(ST_AsText(g))
|
||||
3
|
||||
SELECT AVG(ST_AsText(g)) FROM gis_geometry;
|
||||
AVG(ST_AsText(g))
|
||||
0
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'POINT(10 10)'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'POINT(20 10)'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'POINT(20 20)'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'POINT(10 20)'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'LINESTRING(0 0,0 10,10 0)'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'LINESTRING(10 10,20 10,20 20,10 20,10 10)'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'LINESTRING(10 10,40 10)'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'POLYGON((10 10,20 10,20 20,10 20,10 10))'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'POLYGON((0 0,50 0,50 50,0 50,0 0),(10 10,20 10,20 20,10 20,10 10))'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'POLYGON((0 0,30 0,30 30,0 0))'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'MULTIPOINT(0 0,10 10,10 20,20 20)'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'MULTIPOINT(1 1,11 11,11 21,21 21)'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'MULTIPOINT(3 6,4 10)'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'MULTILINESTRING((10 48,10 21,10 0))'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'MULTILINESTRING((1 2,3 5),(2 5,5 8,21 7))'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: '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)))'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: '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)))'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'MULTIPOLYGON(((0 3,3 3,3 0,0 3)))'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10))'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'GEOMETRYCOLLECTION(POINT(10 10),LINESTRING(10 10,20 20))'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'GEOMETRYCOLLECTION(POINT(44 6),LINESTRING(3 6,7 9))'
|
||||
#check Datatypes with compression tables
|
||||
CREATE TABLE tab3(c1 POINT,c2 LINESTRING,c3 POLYGON,C4 MULTIPOINT,c5 MULTILINESTRING ,
|
||||
c6 MULTIPOLYGON,c7 GEOMETRYCOLLECTION ,c8 GEOMETRY) ENGINE=InnoDB
|
||||
@ -684,62 +702,40 @@ CREATE UNIQUE INDEX idx2 on tab3(c8(5) ASC) ;
|
||||
#check equality predicate on the index columns
|
||||
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab3
|
||||
WHERE c2=ST_LineFromText('LINESTRING(10 10,20 20,30 30)');
|
||||
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE tab3 NULL ref idx1 idx1 8 const # 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select st_astext(`test`.`tab3`.`c1`) AS `ST_ASText(c1)`,st_astext(`test`.`tab3`.`c2`) AS `ST_AsText(c2)`,st_astext(`test`.`tab3`.`c8`) AS `ST_AsText(c8)` from `test`.`tab3` where (`test`.`tab3`.`c2` = <cache>(st_geometryfromtext('LINESTRING(10 10,20 20,30 30)')))
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE tab3 ref idx1 idx1 8 const 1 #
|
||||
#check index with WKB function
|
||||
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8)
|
||||
FROM tab3 WHERE c2=ST_LineStringFromWKB(ST_AsWKB(ST_LineFromText('LINESTRING(10 10,20 20,30 30)')));
|
||||
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE tab3 NULL ref idx1 idx1 8 const # 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select st_astext(`test`.`tab3`.`c1`) AS `ST_ASText(c1)`,st_astext(`test`.`tab3`.`c2`) AS `ST_AsText(c2)`,st_astext(`test`.`tab3`.`c8`) AS `ST_AsText(c8)` from `test`.`tab3` where (`test`.`tab3`.`c2` = <cache>(st_geometryfromwkb(st_aswkb(st_geometryfromtext('LINESTRING(10 10,20 20,30 30)')))))
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE tab3 ref idx1 idx1 8 const 1 #
|
||||
#check index with WKT function
|
||||
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab3
|
||||
WHERE c3=ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))');
|
||||
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE tab3 NULL ref idx3 idx3 8 const # 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select st_astext(`test`.`tab3`.`c1`) AS `ST_ASText(c1)`,st_astext(`test`.`tab3`.`c2`) AS `ST_AsText(c2)`,st_astext(`test`.`tab3`.`c8`) AS `ST_AsText(c8)` from `test`.`tab3` where (`test`.`tab3`.`c3` = <cache>(st_geometryfromtext('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))')))
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE tab3 ref idx3 idx3 8 const 1 #
|
||||
#check index with WKB function
|
||||
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8)
|
||||
FROM tab3
|
||||
WHERE c3=ST_PolyFromWKB(ST_AsWkB(ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))')));
|
||||
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE tab3 NULL ref idx3 idx3 8 const # 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select st_astext(`test`.`tab3`.`c1`) AS `ST_ASText(c1)`,st_astext(`test`.`tab3`.`c2`) AS `ST_AsText(c2)`,st_astext(`test`.`tab3`.`c8`) AS `ST_AsText(c8)` from `test`.`tab3` where (`test`.`tab3`.`c3` = <cache>(st_geometryfromwkb(st_aswkb(st_geometryfromtext('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))')))))
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE tab3 ref idx3 idx3 8 const 1 #
|
||||
#check index with WKT function
|
||||
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab3
|
||||
WHERE c8=ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))');
|
||||
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE tab3 NULL const idx2 idx2 8 const # 100.00 NULL
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select st_astext('
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE tab3 const idx2 idx2 8 const 1 #
|
||||
#check index with WKB function
|
||||
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8)
|
||||
FROM tab3
|
||||
WHERE c8=ST_GeometryFromWKB(ST_AsWKB(ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))')));
|
||||
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE tab3 NULL const idx2 idx2 8 const # 100.00 NULL
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select st_astext('
|
||||
#check range predicate on the index columns
|
||||
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab3
|
||||
WHERE c2>=ST_LineFromText('LINESTRING(10 10,20 20,30 30)');
|
||||
ERROR HY000: Incorrect arguments to >=
|
||||
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab3
|
||||
WHERE c3>=ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))');
|
||||
ERROR HY000: Incorrect arguments to >=
|
||||
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab3
|
||||
WHERE c8>=ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))');
|
||||
ERROR HY000: Incorrect arguments to >=
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE tab3 const idx2 idx2 8 const 1 #
|
||||
#check index with DELETE operation
|
||||
EXPLAIN DELETE FROM tab3
|
||||
WHERE c8=ST_GeometryFromWKB(ST_AsWKB(ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))')));
|
||||
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
||||
1 DELETE tab3 NULL range idx2 idx2 8 const # 100.00 Using where
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE tab3 range idx2 idx2 8 NULL 1 #
|
||||
#check the spatial values
|
||||
SELECT ST_AsText(c1) FROM tab3;
|
||||
ST_AsText(c1)
|
||||
@ -752,7 +748,7 @@ ST_AsText(c3)
|
||||
POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))
|
||||
SELECT ST_AsText(c4) FROM tab3;
|
||||
ST_AsText(c4)
|
||||
MULTIPOINT((0 0),(5 5),(10 10),(20 20))
|
||||
MULTIPOINT(0 0,5 5,10 10,20 20)
|
||||
SELECT ST_AsText(c5) FROM tab3;
|
||||
ST_AsText(c5)
|
||||
MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30))
|
||||
@ -786,17 +782,13 @@ tab3 CREATE TABLE `tab3` (
|
||||
#check index with WKB function
|
||||
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8)
|
||||
FROM tab3 WHERE c2=ST_LineStringFromWKB(ST_AsWKB(ST_LineFromText('LINESTRING(10 10,20 20,30 30)')));
|
||||
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE tab3 NULL ref idx1 idx1 8 const # 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select st_astext(`test`.`tab3`.`c1`) AS `ST_ASText(c1)`,st_astext(`test`.`tab3`.`c2`) AS `ST_AsText(c2)`,st_astext(`test`.`tab3`.`c8`) AS `ST_AsText(c8)` from `test`.`tab3` where (`test`.`tab3`.`c2` = <cache>(st_geometryfromwkb(st_aswkb(st_geometryfromtext('LINESTRING(10 10,20 20,30 30)')))))
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE tab3 ref idx1 idx1 8 const 1 #
|
||||
#check index with WKT function
|
||||
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab3
|
||||
WHERE c3=ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))');
|
||||
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE tab3 NULL ref idx3 idx3 8 const # 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select st_astext(`test`.`tab3`.`c1`) AS `ST_ASText(c1)`,st_astext(`test`.`tab3`.`c2`) AS `ST_AsText(c2)`,st_astext(`test`.`tab3`.`c8`) AS `ST_AsText(c8)` from `test`.`tab3` where (`test`.`tab3`.`c3` = <cache>(st_geometryfromtext('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))')))
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE tab3 ref idx3 idx3 8 const 1 #
|
||||
#check the Geometry property functions
|
||||
SELECT fid, ST_Dimension(g) FROM gis_geometry;
|
||||
fid ST_Dimension(g)
|
||||
@ -872,13 +864,13 @@ fid ST_IsEmpty(g)
|
||||
122 0
|
||||
SELECT fid, ST_AsText(ST_Envelope(g)) FROM gis_geometry;
|
||||
fid ST_AsText(ST_Envelope(g))
|
||||
101 POINT(10 10)
|
||||
102 POINT(20 10)
|
||||
103 POINT(20 20)
|
||||
104 POINT(10 20)
|
||||
101 POLYGON((10 10,10 10,10 10,10 10,10 10))
|
||||
102 POLYGON((20 10,20 10,20 10,20 10,20 10))
|
||||
103 POLYGON((20 20,20 20,20 20,20 20,20 20))
|
||||
104 POLYGON((10 20,10 20,10 20,10 20,10 20))
|
||||
105 POLYGON((0 0,10 0,10 10,0 10,0 0))
|
||||
106 POLYGON((10 10,20 10,20 20,10 20,10 10))
|
||||
107 LINESTRING(10 10,40 10)
|
||||
107 POLYGON((10 10,40 10,40 10,10 10,10 10))
|
||||
108 POLYGON((10 10,20 10,20 20,10 20,10 10))
|
||||
109 POLYGON((0 0,50 0,50 50,0 50,0 0))
|
||||
110 POLYGON((0 0,30 0,30 30,0 30,0 0))
|
||||
@ -886,7 +878,7 @@ fid ST_AsText(ST_Envelope(g))
|
||||
112 POLYGON((1 1,21 1,21 21,1 21,1 1))
|
||||
113 POLYGON((3 6,4 6,4 10,3 10,3 6))
|
||||
114 POLYGON((10 0,16 0,16 48,10 48,10 0))
|
||||
115 LINESTRING(10 0,10 48)
|
||||
115 POLYGON((10 0,10 0,10 48,10 48,10 0))
|
||||
116 POLYGON((1 2,21 2,21 8,1 8,1 2))
|
||||
117 POLYGON((28 0,84 0,84 42,28 42,28 0))
|
||||
118 POLYGON((28 0,84 0,84 42,28 42,28 0))
|
||||
@ -895,11 +887,10 @@ fid ST_AsText(ST_Envelope(g))
|
||||
121 POLYGON((10 10,20 10,20 20,10 20,10 10))
|
||||
122 POLYGON((3 6,44 6,44 9,3 9,3 6))
|
||||
explain extended select ST_Dimension(g), ST_GeometryType(g), ST_IsEmpty(g), ST_AsText(ST_Envelope(g)) from gis_geometry;
|
||||
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE gis_geometry NULL ALL NULL NULL NULL NULL # 100.00 NULL
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE gis_geometry ALL NULL NULL NULL NULL 22 #
|
||||
Warnings:
|
||||
Warning 1681 'EXTENDED' is deprecated and will be removed in a future release.
|
||||
Note 1003 /* select#1 */ select st_dimension(`test`.`gis_geometry`.`g`) AS `ST_Dimension(g)`,st_geometrytype(`test`.`gis_geometry`.`g`) AS `ST_GeometryType(g)`,st_isempty(`test`.`gis_geometry`.`g`) AS `ST_IsEmpty(g)`,st_astext(st_envelope(`test`.`gis_geometry`.`g`)) AS `ST_AsText(ST_Envelope(g))` from `test`.`gis_geometry`
|
||||
Note 1003 select st_dimension(`test`.`gis_geometry`.`g`) AS `ST_Dimension(g)`,st_geometrytype(`test`.`gis_geometry`.`g`) AS `ST_GeometryType(g)`,st_isempty(`test`.`gis_geometry`.`g`) AS `ST_IsEmpty(g)`,st_astext(st_envelope(`test`.`gis_geometry`.`g`)) AS `ST_AsText(ST_Envelope(g))` from `test`.`gis_geometry`
|
||||
#check Geometry point functions
|
||||
SELECT fid, ST_X(g) FROM gis_point;
|
||||
fid ST_X(g)
|
||||
@ -914,11 +905,10 @@ fid ST_Y(g)
|
||||
103 20
|
||||
104 20
|
||||
explain extended select ST_X(g),ST_Y(g) FROM gis_point;
|
||||
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE gis_point NULL ALL NULL NULL NULL NULL # 100.00 NULL
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE gis_point ALL NULL NULL NULL NULL 4 #
|
||||
Warnings:
|
||||
Warning 1681 'EXTENDED' is deprecated and will be removed in a future release.
|
||||
Note 1003 /* select#1 */ select st_x(`test`.`gis_point`.`g`) AS `ST_X(g)`,st_y(`test`.`gis_point`.`g`) AS `ST_Y(g)` from `test`.`gis_point`
|
||||
Note 1003 select st_x(`test`.`gis_point`.`g`) AS `ST_X(g)`,st_y(`test`.`gis_point`.`g`) AS `ST_Y(g)` from `test`.`gis_point`
|
||||
SELECT fid, ST_AsText(ST_StartPoint(g)) FROM gis_line;
|
||||
fid ST_AsText(ST_StartPoint(g))
|
||||
105 POINT(0 0)
|
||||
@ -951,11 +941,10 @@ fid ST_IsClosed(g)
|
||||
107 0
|
||||
explain extended select ST_AsText(ST_StartPoint(g)),ST_AsText(ST_EndPoint(g)),
|
||||
ST_Length(g),ST_NumPoints(g),ST_AsText(ST_PointN(g, 2)),ST_IsClosed(g) FROM gis_line;
|
||||
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE gis_line NULL ALL NULL NULL NULL NULL # 100.00 NULL
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE gis_line ALL NULL NULL NULL NULL 3 #
|
||||
Warnings:
|
||||
Warning 1681 'EXTENDED' is deprecated and will be removed in a future release.
|
||||
Note 1003 /* select#1 */ select st_astext(st_startpoint(`test`.`gis_line`.`g`)) AS `ST_AsText(ST_StartPoint(g))`,st_astext(st_endpoint(`test`.`gis_line`.`g`)) AS `ST_AsText(ST_EndPoint(g))`,st_length(`test`.`gis_line`.`g`) AS `ST_Length(g)`,st_numpoints(`test`.`gis_line`.`g`) AS `ST_NumPoints(g)`,st_astext(st_pointn(`test`.`gis_line`.`g`,2)) AS `ST_AsText(ST_PointN(g, 2))`,st_isclosed(`test`.`gis_line`.`g`) AS `ST_IsClosed(g)` from `test`.`gis_line`
|
||||
Note 1003 select st_astext(st_startpoint(`test`.`gis_line`.`g`)) AS `ST_AsText(ST_StartPoint(g))`,st_astext(st_endpoint(`test`.`gis_line`.`g`)) AS `ST_AsText(ST_EndPoint(g))`,st_length(`test`.`gis_line`.`g`) AS `ST_Length(g)`,st_numpoints(`test`.`gis_line`.`g`) AS `ST_NumPoints(g)`,st_astext(st_pointn(`test`.`gis_line`.`g`,2)) AS `ST_AsText(ST_PointN(g, 2))`,st_isclosed(`test`.`gis_line`.`g`) AS `ST_IsClosed(g)` from `test`.`gis_line`
|
||||
SELECT fid, ST_AsText(ST_Centroid(g)) FROM gis_polygon;
|
||||
fid ST_AsText(ST_Centroid(g))
|
||||
108 POINT(15 15)
|
||||
@ -983,11 +972,10 @@ fid ST_AsText(ST_InteriorRingN(g, 1))
|
||||
110 NULL
|
||||
explain extended select ST_AsText(ST_Centroid(g)),ST_Area(g),ST_AsText(ST_ExteriorRing(g)),
|
||||
ST_NumInteriorRings(g),ST_AsText(ST_InteriorRingN(g, 1)) FROM gis_polygon;
|
||||
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE gis_polygon NULL ALL NULL NULL NULL NULL # 100.00 NULL
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE gis_polygon ALL NULL NULL NULL NULL 3 #
|
||||
Warnings:
|
||||
Warning 1681 'EXTENDED' is deprecated and will be removed in a future release.
|
||||
Note 1003 /* select#1 */ select st_astext(st_centroid(`test`.`gis_polygon`.`g`)) AS `ST_AsText(ST_Centroid(g))`,st_area(`test`.`gis_polygon`.`g`) AS `ST_Area(g)`,st_astext(st_exteriorring(`test`.`gis_polygon`.`g`)) AS `ST_AsText(ST_ExteriorRing(g))`,st_numinteriorrings(`test`.`gis_polygon`.`g`) AS `ST_NumInteriorRings(g)`,st_astext(st_interiorringn(`test`.`gis_polygon`.`g`,1)) AS `ST_AsText(ST_InteriorRingN(g, 1))` from `test`.`gis_polygon`
|
||||
Note 1003 select st_astext(st_centroid(`test`.`gis_polygon`.`g`)) AS `ST_AsText(ST_Centroid(g))`,st_area(`test`.`gis_polygon`.`g`) AS `ST_Area(g)`,st_astext(st_exteriorring(`test`.`gis_polygon`.`g`)) AS `ST_AsText(ST_ExteriorRing(g))`,st_numinteriorrings(`test`.`gis_polygon`.`g`) AS `ST_NumInteriorRings(g)`,st_astext(st_interiorringn(`test`.`gis_polygon`.`g`,1)) AS `ST_AsText(ST_InteriorRingN(g, 1))` from `test`.`gis_polygon`
|
||||
SELECT fid, ST_IsClosed(g) FROM gis_multi_line;
|
||||
fid ST_IsClosed(g)
|
||||
114 0
|
||||
@ -995,8 +983,8 @@ fid ST_IsClosed(g)
|
||||
116 0
|
||||
SELECT fid, ST_AsText(ST_Centroid(g)) FROM gis_multi_polygon;
|
||||
fid ST_AsText(ST_Centroid(g))
|
||||
117 POINT(57.98031067576927 17.854754130800437)
|
||||
118 POINT(57.98031067576927 17.854754130800437)
|
||||
117 POINT(57.98031067576927 17.854754130800433)
|
||||
118 POINT(57.98031067576927 17.854754130800433)
|
||||
119 POINT(2 2)
|
||||
SELECT fid, ST_Area(g) FROM gis_multi_polygon;
|
||||
fid ST_Area(g)
|
||||
@ -1024,11 +1012,10 @@ fid ST_NumGeometries(g)
|
||||
121 2
|
||||
122 2
|
||||
explain extended SELECT fid, ST_NumGeometries(g) from gis_multi_point;
|
||||
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE gis_multi_point NULL ALL NULL NULL NULL NULL # 100.00 NULL
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE gis_multi_point ALL NULL NULL NULL NULL 3 #
|
||||
Warnings:
|
||||
Warning 1681 'EXTENDED' is deprecated and will be removed in a future release.
|
||||
Note 1003 /* select#1 */ select `test`.`gis_multi_point`.`fid` AS `fid`,st_numgeometries(`test`.`gis_multi_point`.`g`) AS `ST_NumGeometries(g)` from `test`.`gis_multi_point`
|
||||
Note 1003 select `test`.`gis_multi_point`.`fid` AS `fid`,st_numgeometries(`test`.`gis_multi_point`.`g`) AS `ST_NumGeometries(g)` from `test`.`gis_multi_point`
|
||||
SELECT fid, ST_AsText(ST_GeometryN(g, 2)) from gis_multi_point;
|
||||
fid ST_AsText(ST_GeometryN(g, 2))
|
||||
111 POINT(10 10)
|
||||
@ -1055,11 +1042,10 @@ fid ST_AsText(ST_GeometryN(g, 1))
|
||||
121 POINT(10 10)
|
||||
122 POINT(44 6)
|
||||
explain extended SELECT fid, ST_AsText(ST_GeometryN(g, 2)) from gis_multi_point;
|
||||
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE gis_multi_point NULL ALL NULL NULL NULL NULL # 100.00 NULL
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE gis_multi_point ALL NULL NULL NULL NULL 3 #
|
||||
Warnings:
|
||||
Warning 1681 'EXTENDED' is deprecated and will be removed in a future release.
|
||||
Note 1003 /* select#1 */ select `test`.`gis_multi_point`.`fid` AS `fid`,st_astext(st_geometryn(`test`.`gis_multi_point`.`g`,2)) AS `ST_AsText(ST_GeometryN(g, 2))` from `test`.`gis_multi_point`
|
||||
Note 1003 select `test`.`gis_multi_point`.`fid` AS `fid`,st_astext(st_geometryn(`test`.`gis_multi_point`.`g`,2)) AS `ST_AsText(ST_GeometryN(g, 2))` from `test`.`gis_multi_point`
|
||||
SELECT g1.fid as first, g2.fid as second,
|
||||
MBRWithin(g1.g, g2.g) as w, MBRContains(g1.g, g2.g) as c, MBROverlaps(g1.g, g2.g) as o,
|
||||
MBREquals(g1.g, g2.g) as e, MBRDisjoint(g1.g, g2.g) as d, ST_Touches(g1.g, g2.g) as t,
|
||||
@ -1067,9 +1053,9 @@ MBRIntersects(g1.g, g2.g) as i, ST_Crosses(g1.g, g2.g) as r
|
||||
FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second;
|
||||
first second w c o e d t i r
|
||||
120 120 1 1 0 1 0 0 1 0
|
||||
120 121 0 0 0 0 0 1 1 0
|
||||
120 121 0 0 0 0 0 1 1 1
|
||||
120 122 0 0 1 0 0 0 1 0
|
||||
121 120 0 0 0 0 0 1 1 0
|
||||
121 120 0 0 0 0 0 1 1 1
|
||||
121 121 1 1 0 1 0 0 1 0
|
||||
121 122 0 0 0 0 1 0 0 0
|
||||
122 120 0 0 1 0 0 0 1 0
|
||||
@ -1080,12 +1066,11 @@ MBRWithin(g1.g, g2.g) as w, MBRContains(g1.g, g2.g) as c, MBROverlaps(g1.g, g2.g
|
||||
MBREquals(g1.g, g2.g) as e, MBRDisjoint(g1.g, g2.g) as d, ST_Touches(g1.g, g2.g) as t,
|
||||
MBRIntersects(g1.g, g2.g) as i, ST_Crosses(g1.g, g2.g) as r
|
||||
FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second;
|
||||
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE g1 NULL ALL NULL NULL NULL NULL # 100.00 Using temporary; Using filesort
|
||||
1 SIMPLE g2 NULL ALL NULL NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE g1 ALL NULL NULL NULL NULL 3 # Using temporary; Using filesort
|
||||
1 SIMPLE g2 ALL NULL NULL NULL NULL 3 # Using join buffer (flat, BNL join)
|
||||
Warnings:
|
||||
Warning 1681 'EXTENDED' is deprecated and will be removed in a future release.
|
||||
Note 1003 /* select#1 */ select `test`.`g1`.`fid` AS `first`,`test`.`g2`.`fid` AS `second`,mbrwithin(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `w`,mbrcontains(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `c`,mbroverlaps(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `o`,mbrequals(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `e`,mbrdisjoint(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `d`,st_touches(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `t`,mbrintersects(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `i`,st_crosses(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `r` from `test`.`gis_geometrycollection` `g1` join `test`.`gis_geometrycollection` `g2` order by `first`,`second`
|
||||
Note 1003 select `test`.`g1`.`fid` AS `first`,`test`.`g2`.`fid` AS `second`,mbrwithin(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `w`,mbrcontains(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `c`,mbroverlaps(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `o`,mbrequals(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `e`,mbrdisjoint(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `d`,st_touches(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `t`,mbrintersects(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `i`,st_crosses(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `r` from `test`.`gis_geometrycollection` `g1` join `test`.`gis_geometrycollection` `g2` order by `test`.`g1`.`fid`,`test`.`g2`.`fid`
|
||||
# check support of Foreign Key constraint
|
||||
CREATE TABLE parent (id GEOMETRY NOT NULL,PRIMARY KEY (id(10))) ENGINE=INNODB;
|
||||
CREATE TABLE child (id GEOMETRY, parent_id GEOMETRY,
|
||||
@ -1093,7 +1078,7 @@ INDEX par_ind (parent_id(10)),
|
||||
FOREIGN KEY (parent_id(10)) REFERENCES parent(id)
|
||||
ON DELETE CASCADE
|
||||
) ENGINE=INNODB;
|
||||
ERROR HY000: Cannot add foreign key constraint
|
||||
ERROR HY000: Can't create table `test`.`child` (errno: 150 "Foreign key constraint is incorrectly formed")
|
||||
#check partition table support
|
||||
CREATE TABLE emp2(
|
||||
id GEOMETRY NOT NULL,
|
||||
@ -1110,6 +1095,8 @@ ERROR 42000: The storage engine for the table doesn't support GEOMETRY
|
||||
#check start transaction commit & Rollback
|
||||
START TRANSACTION;
|
||||
DELETE FROM tab3;
|
||||
SELECT * FROM tab3;
|
||||
c1 c2 c3 C4 c5 c6 c7 c8
|
||||
ROLLBACK;
|
||||
SELECT COUNT(*) FROM tab3;
|
||||
COUNT(*)
|
||||
@ -1117,9 +1104,8 @@ COUNT(*)
|
||||
START TRANSACTION;
|
||||
DELETE FROM tab3;
|
||||
COMMIT;
|
||||
SELECT COUNT(*) FROM tab3;
|
||||
COUNT(*)
|
||||
0
|
||||
SELECT * FROM tab3;
|
||||
c1 c2 c3 C4 c5 c6 c7 c8
|
||||
DROP TABLE gis_point, gis_line, gis_polygon, gis_multi_point;
|
||||
DROP TABLE gis_multi_line, gis_multi_polygon;
|
||||
DROP TABLE gis_geometrycollection, gis_geometry;
|
||||
|
@ -1036,9 +1036,9 @@ SET @a=0x00000000030000000000000000000000000000000000144000000000000014400000000
|
||||
SET @a=ST_POLYFROMWKB(@a);
|
||||
create table t1(a polygon NOT NULL)engine=innodb;
|
||||
insert into t1 values (ST_geomfromtext("point(0 1)"));
|
||||
ERROR 22007: Incorrect POLYGON value: 'POINT' for column `test`.`t1`.`a` at row 1
|
||||
ERROR 22007: Incorrect POLYGON value: 'POINT(0 1)' for column `test`.`t1`.`a` at row 1
|
||||
insert into t1 values (ST_geomfromtext("point(1 0)"));
|
||||
ERROR 22007: Incorrect POLYGON value: 'POINT' for column `test`.`t1`.`a` at row 1
|
||||
ERROR 22007: Incorrect POLYGON value: 'POINT(1 0)' for column `test`.`t1`.`a` at row 1
|
||||
select * from (select polygon(t1.a) as p from t1 order by t1.a) d;
|
||||
p
|
||||
drop table t1;
|
||||
|
@ -1,18 +1,16 @@
|
||||
create table t1(a geometrycollection not null,spatial key(a))engine=innodb;
|
||||
insert into t1(a) values( geometrycollection(multipolygon(polygon(linestring(point(-14,98), point(-14,98)), linestring(point(-97,64), point(-70,99), point(-97,64)), linestring(point(143851215403059150000000000000000000000.000000,13040009882500140000000000000000000000.000000), point(-73,85), point(-88,-29)))), multipolygon(polygon(linestring(point(41,95), point(4294967298,2050)), linestring(point(-61,85), point(-75,93), point(14,-2), point(1,84), point(-61,85)), linestring(point(-62,52), point(39,5), point(-18,12), point(-62,52))), polygon(linestring(point(-77,1), point(66,61), point(-77,1)), linestring(point(18446744073709551615,1125899906842622), point(-72,49), point(24,-66), point(82,73), point(68,22))), polygon(linestring(point(1048576,17179869181), point(-18,95), point(-90,-3), point(-33,82), point(20,-85)), linestring(point(-43,-97), point(-7,-3), point(39,-82), point(-65,-58), point(-43,-97)), linestring(point(44,-34), point(-69,58), point(44,-34)), linestring(point(57,-13), point(-17,74), point(57,-13)), linestring(point(3,71), point(-58,81), point(3,71)), linestring(point(9,25), point(77,-71), point(8388607,67108864), point(46,46), point(9,25)), linestring(point(98,-82), point(98,-82))))) ) ;
|
||||
ERROR 22023: Invalid GIS data provided to function polygon.
|
||||
Got one of the listed errors
|
||||
insert into t1(a) values( geometrycollection(multilinestring(linestring(point(39,-60), point(-62,-11), point(-24,35), point(54,1)), linestring(point(-4,69), point(-22,-64), point(1.694824e+308,5.688896e+307), point(-33,-58), point(-64,-80), point(-15,-44), point(40,54)), linestring(point(-86,-54), point(11,41), point(-46,-38), point(-21,-8), point(10,70), point(-81,22), point(-46,-100)), linestring(point(-30,-48), point(50,58), point(-53,92), point(10,41), point(-46,-8)), linestring(point(-65,34), point(-92,93), point(-33,-74), point(75,-28)), linestring(point(25,-55), point(22,-10), point(-42,0), point(-86,-59), point(2,-37), point(63,-44), point(-55,-22)), linestring(point(28,0), point(-94,99), point(-32,-86)), linestring(point(9,-12), point(16,9), point(80,-73)), linestring(point(6,-55), point(83,-4)), linestring(point(-15,21), point(144115188075855876,16777212), point(-85,-31), point(-90,-50)), linestring(point(-33,33), point(21,90), point(-89,32)), linestring(point(16,24), point(73,-13), point(25,-48), point(71,52), point(-54,-78), point(-84,59), point(53,29)), linestring(point(-15,-81), point(83,43), point(-71,33), point(-8,0), point(84,-54), point(-35,38), point(-10,-50)), linestring(point(38,-50), point(20,-2), point(-57,-92)), linestring(point(5,-93), point(231601833467477080000000000000000000000.000000,51914987457169239000000000000000000000.000000), point(-94,62))), point(2,0)) ) ;
|
||||
insert into t1(a) values( geometrycollection(multilinestring(linestring(point(80,-15), point(65,-57), point(-59,16), point(22,-67)), linestring(point(20,-55), point(-38,-64), point(19,-53), point(-63,-36), point(56,-37)), linestring(point(27,-8), point(-85,-75), point(4398046511106,2251799813685245)), linestring(point(45,32), point(-79,46))), multilinestring(linestring(point(8,-4), point(40,-38), point(100,95), point(5,-80), point(82,88)), linestring(point(-14,30), point(-94,51), point(-16,-29), point(37,-97), point(-26,92)), linestring(point(32,34), point(83,-23), point(-55,57), point(-15,90), point(32,-50), point(-20,-73), point(77,28)), linestring(point(4,88), point(87,74), point(-67,-58)), linestring(point(5.660747e+307,6.385657e+307), point(-58,-15), point(1.172095e+308,1.448533e+308)), linestring(point(-21,-37), point(-52,79), point(-16,-76), point(-65,-94), point(36,7), point(37,74), point(100,-57)), linestring(point(-23,-82), point(-73,23), point(18,-34)), linestring(point(20,-51), point(93,62), point(-65,84)), linestring(point(-48,31), point(-69,-96)), linestring(point(-5,78), point(10,-99), point(36,-33)), linestring(point(-84,55), point(96,1), point(-98,-29), point(-15,81), point(-27,-6), point(58,-32), point(54,-16)), linestring(point(2,5), point(2199023255553,8192)), linestring(point(12,-78), point(-97,-83)), linestring(point(-74,79), point(35,-56), point(50,95)), linestring(point(28,16), point(-39,-40), point(48,-3)), linestring(point(2199023255550,-65539), point(62,-25), point(94,-62)), linestring(point(-74,83), point(-18,75), point(91,17), point(-11,-48), point(30,100)), linestring(point(57,-13), point(88,-45)), linestring(point(20,-64), point(-37,13), point(20,35))), point(-3,-4)) ) ;
|
||||
insert into t1(a) values( geometrycollection(multipolygon(polygon(linestring(point(-34,19), point(-25,92), point(61921390294166805000000000000000000000.000000,319674749161701840000000000000000000000.000000), point(56,50), point(-34,19)), linestring(point(-26,-58), point(99,-50), point(34,-20), point(-26,-58)), linestring(point(-42,45), point(-63,-7), point(5,-89), point(-97,36), point(-42,45)), linestring(point(94,11), point(-71,4), point(94,11)), linestring(point(16,25), point(4,-33), point(-45,-33), point(-64,-77), point(16,25)), linestring(point(19,45), point(36,45), point(-83,-96), point(19,45)), linestring(point(85,-31), point(-87,52), point(85,-31))), polygon(linestring(point(55,-88), point(63,-12), point(55,-88)), linestring(point(-49,10), point(-49,10)), linestring(point(-51,-32), point(-51,-32)))), multipolygon(polygon(linestring(point(-21,-8), point(66,-58), point(100,-27), point(-21,-8)), linestring(point(-29,-13), point(-29,-13))), polygon(linestring(point(91307574660224730000000000000000000000.000000,101214152547755520000000000000000000000.000000), point(89,64), point(77,87), point(66,29), point(-71,-53)), linestring(point(38,-78), point(-43,-90), point(37,20), point(81,65), point(38,-78))), polygon(linestring(point(51,0), point(-62,8), point(-11,22), point(51,0)), linestring(point(-4,-44), point(6,82), point(-19,-90), point(131,32)))), point(-4,-7)) ) ;
|
||||
ERROR 22023: Invalid GIS data provided to function polygon.
|
||||
Got one of the listed errors
|
||||
insert into t1(a) values( geometrycollection(point(10,9), linestring(point(2305843009213693955,-1125899906842621), point(78,15)), multipoint(point(-1,3), point(4,-6))) ) ;
|
||||
insert into t1(a) values( geometrycollection(polygon(linestring(point(0,13), point(-12,5), point(0,13)), linestring(point(11,-2), point(6,6), point(20,-14), point(-3,-10), point(1.330588e+308,2.666476e+307)), linestring(point(16382,67), point(7,4)), linestring(point(2,7), point(-14,15), point(2,7)), linestring(point(-14,12), point(-8,-8), point(-17,-2), point(-14,12)), linestring(point(-20,-10), point(-8,-13), point(-19,-17), point(13,-3), point(-20,-10)), linestring(point(-5,13), point(7,-9), point(6,8), point(-5,13))), linestring(point(-87,19), point(-64,51), point(-16,12)), multipoint(point(-1,-10), point(2,-10), point(3.670354e+307,2.501459e+307))) ) ;
|
||||
ERROR 22023: Invalid GIS data provided to function polygon.
|
||||
insert into t1(a) values( geometrycollection(multipoint(point(-3,7), point(4,-3), point(-6,-2), point(-9,1)), polygon(linestring(point(-17,-5), point(2,-8), point(-6,9), point(-9,19), point(-17,-5)), linestring(point(10,-1), point(15,-7), point(-13,6), point(10,-1))), multipolygon(polygon(linestring(point(69,-69), point(-90,-64), point(-17,4), point(47,-73), point(69,-69)), linestring(point(-35,-77), point(-35,-77)), linestring(point(95,-76), point(1.636688e+308,1.828723e+307), point(68719476740,536870916), point(95,-76)), linestring(point(-26,-85), point(-26,-85)), linestring(point(-53,57), point(-53,57)), linestring(point(-98,-64), point(79,-57), point(-98,-64)), linestring(point(-91,59), point(16,0), point(73,97), point(-35,-70), point(-91,59))))) ) ;
|
||||
ERROR 22023: Invalid GIS data provided to function polygon.
|
||||
Got one of the listed errors
|
||||
insert into t1(a) values( geometrycollection(linestring(point(85,-29), point(15,84), point(39,-92), point(-99,19)), multilinestring(linestring(point(63,10), point(-47,95), point(10,-49), point(16,-65), point(-98,40), point(25,44), point(-55,-92)), linestring(point(5.266810e+307,6.648813e+307), point(47,33), point(-15,-13), point(-92,-58), point(36,73)), linestring(point(77,-56), point(-53,-10), point(-28,76), point(-51,6), point(51,-31), point(-95,81), point(92,26)), linestring(point(-91,7), point(58,53)), linestring(point(18,5), point(18,40), point(71,89), point(7.898707e+307,1.202585e+308), point(53,100)), linestring(point(-60,-18), point(-10,-31), point(-6,-25), point(-57,-95), point(16,77)))) ) ;
|
||||
insert into t1(a) values( geometrycollection(polygon(linestring(point(-9,0), point(-17,-15), point(-9,0)), linestring(point(-11,1), point(18,12), point(15,3), point(7,0), point(-11,1)), linestring(point(19,5), point(19,5)), linestring(point(17,-11), point(8,4), point(17,-11)), linestring(point(14914539334033432000000000000000000000.000000,127247994336690690000000000000000000000.000000), point(-14,-7), point(13,-2))), point(-4,-7), polygon(linestring(point(-18,9), point(11,-1), point(-18,9)), linestring(point(9,-3), point(9,-3)), linestring(point(-7,-9), point(9,-11), point(11,14), point(1.663324e+308,1.572127e+308)), linestring(point(-15,4), point(18,12), point(7,2), point(-15,4)), linestring(point(-15,-18), point(-20,-15), point(1152921504606846972,34359738370))), polygon(linestring(point(-5,-19), point(-11,11), point(10,5), point(-7,13), point(-5,-19)), linestring(point(-8,-6), point(-4,16), point(-8,-6)), linestring(point(-6,-10), point(3,-12), point(-6,-10)), linestring(point(-16,1), point(20,-12), point(-16,1)), linestring(point(-8,5), point(-20,-4), point(4,1), point(-6,-6), point(-8,5)), linestring(point(-8,-11), point(-5,-14), point(-8,-11)), linestring(point(3,-16), point(-15,-13), point(1.166708e+308,1.901147e+307), point(-8,6), point(3,-16))), point(0,-5)) ) ;
|
||||
ERROR 22023: Invalid GIS data provided to function polygon.
|
||||
Got one of the listed errors
|
||||
insert into t1(a) values( geometrycollection(linestring(point(-33,99), point(99,-87), point(38,-79), point(33,-39), point(-91,-8), point(46,-87))) ) ;
|
||||
insert into t1 select * from t1;
|
||||
insert into t1 select * from t1;
|
||||
|
@ -1577,13 +1577,13 @@ INSERT INTO t1 VALUES(GeomFromText('LINESTRING(2 2, 3 3)'));
|
||||
SELECT COUNT(*) FROM t1 IGNORE INDEX(l) WHERE MBRContains(l, GEOMFROMTEXT('POINT(0 0)'));
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 IGNORE INDEX(l) WHERE MBRWithin(GEOMFROMTEXT('POINT(0 0)'), l);
|
||||
SELECT COUNT(*) FROM t1 IGNORE INDEX(l) WHERE MBRWithin(GEOMFROMTEXT('POINT(0.5 0.5)'), l);
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 FORCE INDEX(l) WHERE MBRContains(l, GEOMFROMTEXT('POINT(0 0)'));
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 FORCE INDEX(l) WHERE MBRWithin(GEOMFROMTEXT('POINT(0 0)'), l);
|
||||
SELECT COUNT(*) FROM t1 FORCE INDEX(l) WHERE MBRWithin(GEOMFROMTEXT('POINT(0.5 0.5)'), l);
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
|
@ -164,7 +164,6 @@ POINT(1 0) POINT(10 20)
|
||||
POINT(0 0) POINT(10 20)
|
||||
SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE MBRWithin(p, ST_GeomFromText('POLYGON((-1 0.5, -1 -0.5, 1 -0.5, 1 0.5, -1 0.5))'));
|
||||
ST_AsText(p) ST_AsText(p1)
|
||||
POINT(1 0) POINT(10 20)
|
||||
POINT(0 0) POINT(10 20)
|
||||
# Drop spatial keys on the table
|
||||
ALTER TABLE t1 DROP KEY p, DROP KEY p1;
|
||||
@ -194,7 +193,6 @@ POINT(1 0) POINT(10 20)
|
||||
POINT(0 0) POINT(10 20)
|
||||
SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE MBRWithin(p, ST_GeomFromText('POLYGON((-1 0.5, -1 -0.5, 1 -0.5, 1 0.5, -1 0.5))'));
|
||||
ST_AsText(p) ST_AsText(p1)
|
||||
POINT(1 0) POINT(10 20)
|
||||
POINT(0 0) POINT(10 20)
|
||||
TRUNCATE t1;
|
||||
ALTER TABLE t1 DROP COLUMN p, DROP COLUMN p1;
|
||||
@ -235,10 +233,8 @@ SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE MBRWithin(p1, ST_GeomFromText('
|
||||
ST_AsText(p) ST_AsText(p1)
|
||||
POINT(0 1) POINT(10 19)
|
||||
POINT(1 1) POINT(10 20)
|
||||
POINT(1 0) POINT(10 21)
|
||||
SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE MBRWithin(p, ST_GeomFromText('POLYGON((-1 0.5, -1 -0.5, 1 -0.5, 1 0.5, -1 0.5))'));
|
||||
ST_AsText(p) ST_AsText(p1)
|
||||
POINT(1 0) POINT(10 21)
|
||||
POINT(0 0) POINT(10 22)
|
||||
ALTER TABLE t1 DROP COLUMN p1, ADD COLUMN p1 POINT, CHANGE COLUMN p pp POINT AFTER p1;
|
||||
SELECT c.name, c.mtype, c.prtype, c.len
|
||||
@ -274,14 +270,9 @@ SELECT ST_AsText(pp), ST_AsText(p1) FROM t1 WHERE p1 = ST_PointFromText('POINT(1
|
||||
ST_AsText(pp) ST_AsText(p1)
|
||||
SELECT ST_AsText(pp), ST_AsText(p1) FROM t1 WHERE MBRWithin(p1, ST_GeomFromText('POLYGON((5 5, 20 5, 20 21, 5 21, 5 5))')) ORDER BY pp;
|
||||
ST_AsText(pp) ST_AsText(p1)
|
||||
POINT(0 0) POINT(5 5)
|
||||
POINT(0 1) POINT(5 5)
|
||||
POINT(1 0) POINT(5 5)
|
||||
POINT(1 1) POINT(5 5)
|
||||
SELECT ST_AsText(pp), ST_AsText(p1) FROM t1 WHERE MBRWithin(pp, ST_GeomFromText('POLYGON((-1 0.5, -1 -0.5, 1 -0.5, 1 0.5, -1 0.5))')) ORDER BY pp;
|
||||
ST_AsText(pp) ST_AsText(p1)
|
||||
POINT(0 0) POINT(5 5)
|
||||
POINT(1 0) POINT(5 5)
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Test when the POINT is on B-TREE
|
||||
@ -537,10 +528,8 @@ ST_AsText(p1)
|
||||
POINT(5 10)
|
||||
SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRWithin(p1, @poly1);
|
||||
ST_AsText(p1)
|
||||
POINT(2 4)
|
||||
POINT(3 6)
|
||||
POINT(4 8)
|
||||
POINT(5 10)
|
||||
SELECT ST_AsText(p2) FROM gis_point1 WHERE ST_Contains(@poly2, p2);
|
||||
ST_AsText(p2)
|
||||
POINT(-1 -3)
|
||||
@ -569,6 +558,7 @@ POINT(10 21)
|
||||
POINT(20.5 41)
|
||||
SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Contains(@mpoly, p1) AND NOT MBRWithin(p1, @mpoly);
|
||||
ST_AsText(p1)
|
||||
POINT(3 6)
|
||||
# Check functions that use MBR, with line type data
|
||||
SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRIntersects(p1, @ls1);
|
||||
ST_AsText(p1)
|
||||
@ -618,10 +608,8 @@ POINT(4 8)
|
||||
POINT(5 10)
|
||||
SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRWithin(p1, @poly1);
|
||||
ST_AsText(p1)
|
||||
POINT(2 4)
|
||||
POINT(3 6)
|
||||
POINT(4 8)
|
||||
POINT(5 10)
|
||||
SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Touches(p1, @poly1);
|
||||
ST_AsText(p1)
|
||||
POINT(2 4)
|
||||
@ -744,10 +732,8 @@ POINT(4 8)
|
||||
POINT(5 10)
|
||||
SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRWithin(p1, @poly1);
|
||||
ST_AsText(p1)
|
||||
POINT(2 4)
|
||||
POINT(3 6)
|
||||
POINT(4 8)
|
||||
POINT(5 10)
|
||||
SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Touches(p1, @poly1);
|
||||
ST_AsText(p1)
|
||||
POINT(2 4)
|
||||
@ -829,10 +815,8 @@ ST_AsText(p1)
|
||||
POINT(5 10)
|
||||
SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @poly1);
|
||||
ST_AsText(p1)
|
||||
POINT(2 4)
|
||||
POINT(3 6)
|
||||
POINT(4 8)
|
||||
POINT(5 10)
|
||||
SELECT ST_AsText(p2) FROM gis_point WHERE ST_Contains(@poly2, p2);
|
||||
ST_AsText(p2)
|
||||
POINT(-1 -3)
|
||||
@ -861,6 +845,7 @@ POINT(10 21)
|
||||
POINT(20.5 41)
|
||||
SELECT ST_AsText(p1) FROM gis_point WHERE ST_Contains(@mpoly, p1) AND NOT MBRWithin(p1, @mpoly);
|
||||
ST_AsText(p1)
|
||||
POINT(3 6)
|
||||
# Check functions that use MBR, with line type data
|
||||
SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @ls1);
|
||||
ST_AsText(p1)
|
||||
@ -910,10 +895,8 @@ POINT(4 8)
|
||||
POINT(5 10)
|
||||
SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @poly1);
|
||||
ST_AsText(p1)
|
||||
POINT(2 4)
|
||||
POINT(3 6)
|
||||
POINT(4 8)
|
||||
POINT(5 10)
|
||||
SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @poly1);
|
||||
ST_AsText(p1)
|
||||
POINT(2 4)
|
||||
@ -1036,10 +1019,8 @@ POINT(4 8)
|
||||
POINT(5 10)
|
||||
SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @poly1);
|
||||
ST_AsText(p1)
|
||||
POINT(2 4)
|
||||
POINT(3 6)
|
||||
POINT(4 8)
|
||||
POINT(5 10)
|
||||
SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @poly1);
|
||||
ST_AsText(p1)
|
||||
POINT(2 4)
|
||||
@ -1151,10 +1132,8 @@ POINT(4 8)
|
||||
POINT(5 10)
|
||||
SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @poly1);
|
||||
ST_AsText(p1)
|
||||
POINT(2 4)
|
||||
POINT(3 6)
|
||||
POINT(4 8)
|
||||
POINT(5 10)
|
||||
SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @poly1);
|
||||
ST_AsText(p1)
|
||||
POINT(2 4)
|
||||
@ -1277,10 +1256,8 @@ POINT(4 8)
|
||||
POINT(5 10)
|
||||
SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @poly1);
|
||||
ST_AsText(p1)
|
||||
POINT(2 4)
|
||||
POINT(3 6)
|
||||
POINT(4 8)
|
||||
POINT(5 10)
|
||||
SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @poly1);
|
||||
ST_AsText(p1)
|
||||
POINT(2 4)
|
||||
|
@ -259,10 +259,8 @@ INSERT INTO gis_point VALUES
|
||||
(ST_PointFromText('POINT(32.1234 64.2468)'), ST_PointFromText('POINT(-1 -1)'));
|
||||
'The ORDER BY for spatial index will use filesort'
|
||||
EXPLAIN SELECT ST_AsText(p1), ST_AsText(p2) FROM gis_point ORDER BY p1, p2;
|
||||
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE gis_point NULL ALL NULL NULL NULL NULL # 100.00 Using filesort
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select st_astext(`test`.`gis_point`.`p1`) AS `ST_AsText(p1)`,st_astext(`test`.`gis_point`.`p2`) AS `ST_AsText(p2)` from `test`.`gis_point` order by `test`.`gis_point`.`p1`,`test`.`gis_point`.`p2`
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE gis_point ALL NULL NULL NULL NULL 13 #
|
||||
SELECT ST_AsText(p1), ST_AsText(p2) FROM gis_point ORDER BY p1, p2;
|
||||
ST_AsText(p1) ST_AsText(p2)
|
||||
POINT(2 4) POINT(-2 -6)
|
||||
@ -354,9 +352,11 @@ COUNT(*) ST_AsText(p1)
|
||||
1024 POINT(4 8)
|
||||
SELECT COUNT(*), ST_AsText(p2) FROM gis_point WHERE ST_Contains(@poly2, p2) GROUP BY p2;
|
||||
COUNT(*) ST_AsText(p2)
|
||||
1024 POINT(0 0)
|
||||
1024 POINT(-2 -6)
|
||||
1024 POINT(-3 -9)
|
||||
1024 POINT(-4 -12)
|
||||
1024 POINT(-5 -15)
|
||||
1024 POINT(-1 -3)
|
||||
1024 POINT(-1 -1)
|
||||
SELECT COUNT(*), ST_AsText(p2) FROM gis_point WHERE ST_Equals(p2, @p1) GROUP BY p2;
|
||||
@ -368,13 +368,17 @@ COUNT(*) ST_AsText(p1)
|
||||
1024 POINT(32.1234 64.2468)
|
||||
SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) FROM gis_point WHERE ST_Contains(@mpoly, p1) GROUP BY p1, p2;
|
||||
COUNT(*) ST_AsText(p1) ST_AsText(p2)
|
||||
1024 POINT(3 6) POINT(-3 -9)
|
||||
1024 POINT(4 8) POINT(-4 -12)
|
||||
1024 POINT(5 10) POINT(-5 -15)
|
||||
1024 POINT(6 12) POINT(-6 -18)
|
||||
1024 POINT(7 14) POINT(-7 -21)
|
||||
1024 POINT(8 16) POINT(0 0)
|
||||
1024 POINT(10 21) POINT(-6 3)
|
||||
1024 POINT(20.5 41) POINT(-8 4)
|
||||
SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) FROM gis_point WHERE ST_Contains(@mpoly, p1) AND NOT MBRWithin(p1, @mpoly) GROUP BY p1, p2;
|
||||
COUNT(*) ST_AsText(p1) ST_AsText(p2)
|
||||
1024 POINT(3 6) POINT(-3 -9)
|
||||
======================================================================
|
||||
Build another new table with the same schema, will insert data from this table to the orignal one
|
||||
======================================================================
|
||||
@ -522,9 +526,11 @@ COUNT(*) ST_AsText(p1)
|
||||
1024 POINT(4 8)
|
||||
SELECT COUNT(*), ST_AsText(p2) FROM gis_point WHERE ST_Contains(@poly2, p2) GROUP BY p2;
|
||||
COUNT(*) ST_AsText(p2)
|
||||
2 POINT(0 0)
|
||||
1024 POINT(-2 -6)
|
||||
1024 POINT(-3 -9)
|
||||
1024 POINT(-4 -12)
|
||||
1024 POINT(-5 -15)
|
||||
1024 POINT(-1 -3)
|
||||
1024 POINT(-1 -1)
|
||||
SELECT COUNT(*), ST_AsText(p2) FROM gis_point WHERE ST_Equals(p2, @p1) GROUP BY p2;
|
||||
@ -536,13 +542,17 @@ COUNT(*) ST_AsText(p1)
|
||||
1024 POINT(32.1234 64.2468)
|
||||
SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) FROM gis_point WHERE ST_Contains(@mpoly, p1) GROUP BY p1, p2;
|
||||
COUNT(*) ST_AsText(p1) ST_AsText(p2)
|
||||
1024 POINT(3 6) POINT(-3 -9)
|
||||
1024 POINT(4 8) POINT(-4 -12)
|
||||
1024 POINT(5 10) POINT(-5 -15)
|
||||
1024 POINT(6 12) POINT(-6 -18)
|
||||
1024 POINT(7 14) POINT(-7 -21)
|
||||
2 POINT(8 16) POINT(0 0)
|
||||
1024 POINT(10 21) POINT(-6 3)
|
||||
1024 POINT(20.5 41) POINT(-8 4)
|
||||
SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) FROM gis_point WHERE ST_Contains(@mpoly, p1) AND NOT MBRWithin(p1, @mpoly) GROUP BY p1, p2;
|
||||
COUNT(*) ST_AsText(p1) ST_AsText(p2)
|
||||
1024 POINT(3 6) POINT(-3 -9)
|
||||
CHECK TABLE gis_point;
|
||||
Table Op Msg_type Msg_text
|
||||
test.gis_point check status OK
|
||||
|
@ -16,7 +16,6 @@ select ST_astext(t1.g) from t1 where MBRWithin(t1.g, @g1);
|
||||
ST_astext(t1.g)
|
||||
POINT(1 1)
|
||||
POINT(1.5 1.5)
|
||||
POINT(3 3)
|
||||
set @g1 = ST_GeomFromText('Polygon((0 0,0 3,3 3,3 0,0 0))');
|
||||
delete from t1 where MBRWithin(t1.g, @g1);
|
||||
check table t1;
|
||||
@ -24,6 +23,7 @@ Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
select ST_astext(t1.g) from t1;
|
||||
ST_astext(t1.g)
|
||||
POINT(3 3)
|
||||
POINT(3.1 3.1)
|
||||
POINT(5 5)
|
||||
set @g1 = ST_GeomFromText('Polygon((5 5,5 5,5 5,5 5,5 5))');
|
||||
@ -33,6 +33,7 @@ Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
select ST_astext(t1.g) from t1;
|
||||
ST_astext(t1.g)
|
||||
POINT(3 3)
|
||||
POINT(3.1 3.1)
|
||||
POINT(2 2)
|
||||
show indexes from t1;
|
||||
@ -161,7 +162,6 @@ select ST_astext(t1.g) from t1 where MBRWithin(t1.g, @g1);
|
||||
ST_astext(t1.g)
|
||||
POINT(1 1)
|
||||
POINT(1.5 1.5)
|
||||
POINT(3 3)
|
||||
set @g1 = ST_GeomFromText('Polygon((0 0,0 3,3 3,3 0,0 0))');
|
||||
delete from t1 where MBRWithin(t1.g, @g1);
|
||||
check table t1;
|
||||
@ -169,6 +169,7 @@ Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
select ST_astext(t1.g) from t1;
|
||||
ST_astext(t1.g)
|
||||
POINT(3 3)
|
||||
POINT(3.1 3.1)
|
||||
POINT(5 5)
|
||||
set @g1 = ST_GeomFromText('Polygon((5 5,5 5,5 5,5 5,5 5))');
|
||||
@ -178,6 +179,7 @@ Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
select ST_astext(t1.g) from t1;
|
||||
ST_astext(t1.g)
|
||||
POINT(3 3)
|
||||
POINT(3.1 3.1)
|
||||
POINT(2 2)
|
||||
show indexes from t1;
|
||||
|
@ -234,7 +234,7 @@ start transaction;
|
||||
set @g1 = ST_GeomFromText('Polygon((800 800, 800 1000, 1000 1000, 1000 800, 800 800))');
|
||||
select count(*) from t1 where MBRwithin(t1.c2, @g1);
|
||||
count(*)
|
||||
201
|
||||
199
|
||||
connection b;
|
||||
CALL insert_t1(1001, 2000);
|
||||
set session transaction isolation level serializable;
|
||||
|
@ -6,13 +6,12 @@ insert into t1 values (4, "444", POINT(3.1,3.1));
|
||||
insert into t1 values (5, "555", POINT(5,5));
|
||||
analyze table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status Engine-independent statistics collected
|
||||
test.t1 analyze status OK
|
||||
set @g1 = ST_GeomFromText('Polygon((0 0,0 3,3 3,3 0,0 0))');
|
||||
explain select ST_astext(t1.g) from t1 where MBRWithin(t1.g, @g1);
|
||||
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 NULL ALL g NULL NULL NULL 5 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_astext(t1.g)` from `test`.`t1` where mbrwithin(`test`.`t1`.`g`,(@`g1`))
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL g NULL NULL NULL 5 Using where
|
||||
select ST_astext(t1.g) from t1 where MBRWithin(t1.g, @g1);
|
||||
ST_astext(t1.g)
|
||||
POINT(1 1)
|
||||
@ -97,18 +96,6 @@ left2 POLYGON((-2 0,-2 2,0 2,0 0,-2 0))
|
||||
SELECT name, ST_AsText(square) from t1 where MBRWithin(@p, square);
|
||||
name ST_AsText(square)
|
||||
big POLYGON((0 0,0 3,3 3,3 0,0 0))
|
||||
SET @vert1 = ST_GeomFromText('POLYGON ((0 -2, 0 2, 0 -2))');
|
||||
ERROR 22023: Invalid GIS data provided to function st_geometryfromtext.
|
||||
SET @horiz1 = ST_GeomFromText('POLYGON ((-2 0, 2 0, -2 0))');
|
||||
ERROR 22023: Invalid GIS data provided to function st_geometryfromtext.
|
||||
SET @horiz2 = ST_GeomFromText('POLYGON ((-1 0, 3 0, -1 0))');
|
||||
ERROR 22023: Invalid GIS data provided to function st_geometryfromtext.
|
||||
SET @horiz3 = ST_GeomFromText('POLYGON ((2 0, 3 0, 2 0))');
|
||||
ERROR 22023: Invalid GIS data provided to function st_geometryfromtext.
|
||||
SET @point1 = ST_GeomFromText('POLYGON ((0 0))');
|
||||
ERROR 22023: Invalid GIS data provided to function st_geometryfromtext.
|
||||
SET @point2 = ST_GeomFromText('POLYGON ((-2 0))');
|
||||
ERROR 22023: Invalid GIS data provided to function st_geometryfromtext.
|
||||
SELECT GROUP_CONCAT(a1.name ORDER BY a1.name) AS MBRoverlaps FROM t1 a1 WHERE MBROverlaps(a1.square, @vert1) GROUP BY a1.name;
|
||||
MBRoverlaps
|
||||
SELECT GROUP_CONCAT(a1.name ORDER BY a1.name) AS MBRoverlaps FROM t1 a1 WHERE MBROverlaps(a1.square, @horiz1) GROUP BY a1.name;
|
||||
@ -140,7 +127,7 @@ alter table t1 drop primary key;
|
||||
create spatial index idx on t1(g) algorithm=inplace;
|
||||
create spatial index idx2 on t1(g);
|
||||
Warnings:
|
||||
Warning 1831 Duplicate index 'idx2' defined on the table 'test.t1'. This is deprecated and will be disallowed in a future release.
|
||||
Note 1831 Duplicate index `idx2`. This is deprecated and will be disallowed in a future release
|
||||
alter table t1 add primary key(i), algorithm=inplace;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
|
@ -14,19 +14,19 @@ count(*)
|
||||
set @g1 = ST_GeomFromText('Polygon((0 0,0 1000,1000 1000,1000 0,0 0))');
|
||||
select count(*) from t1 where MBRWithin(t1.c2, @g1);
|
||||
count(*)
|
||||
1000
|
||||
999
|
||||
set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))');
|
||||
select count(*) from t1 where MBRWithin(t1.c2, @g1);
|
||||
count(*)
|
||||
100
|
||||
99
|
||||
set @g1 = ST_GeomFromText('Polygon((10 10,10 800,800 800,800 10,10 10))');
|
||||
select count(*) from t1 where MBRWithin(t1.c2, @g1);
|
||||
count(*)
|
||||
791
|
||||
789
|
||||
set @g1 = ST_GeomFromText('Polygon((100 100,100 800,800 800,800 100,100 100))');
|
||||
select count(*) from t1 where MBRWithin(t1.c2, @g1);
|
||||
count(*)
|
||||
701
|
||||
699
|
||||
set @g1 = ST_GeomFromText('Point(1 1)');
|
||||
select count(*) from t1 where MBRequals(t1.c2, @g1);
|
||||
count(*)
|
||||
|
@ -79,7 +79,7 @@ count(*)
|
||||
set @g1 = ST_GeomFromText('Polygon((2 2,2 800,800 800,800 2,2 2))');
|
||||
select count(*) from t1 where MBRWithin(t1.c2, @g1);
|
||||
count(*)
|
||||
65536
|
||||
57344
|
||||
set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))');
|
||||
select count(*) from t1 where MBRWithin(t1.c2, @g1);
|
||||
count(*)
|
||||
@ -87,5 +87,5 @@ count(*)
|
||||
set @g1 = ST_GeomFromText('Polygon((2 2,2 800,800 800,800 2,2 2))');
|
||||
select count(*) from t1 where MBRWithin(t1.c2, @g1);
|
||||
count(*)
|
||||
65536
|
||||
57344
|
||||
drop table t1;
|
||||
|
@ -47,7 +47,7 @@ ST_GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))'));
|
||||
CREATE INDEX linestring_index ON linestring(linestring_nokey(5));
|
||||
ALTER TABLE linestring ADD KEY (linestring_key(5));
|
||||
|
||||
--error ER_GIS_INVALID_DATA
|
||||
# --error ER_GIS_INVALID_DATA
|
||||
SELECT ST_AsText(linestring_nokey) FROM linestring FORCE KEY (
|
||||
linestring_key ) WHERE ST_CONTAINS( ST_GeomFromText('POLYGON( ( 3923 2815 , 4246
|
||||
2122 , 4028 2971 , 4017 3019 , 3923 2815 ) )') , linestring_key ) AND
|
||||
|
@ -6,7 +6,7 @@
|
||||
--source include/have_geometry.inc
|
||||
--source include/not_embedded.inc
|
||||
--source include/have_debug.inc
|
||||
--error ER_BOOST_GEOMETRY_OVERLAY_INVALID_INPUT_EXCEPTION
|
||||
# --error ER_BOOST_GEOMETRY_OVERLAY_INVALID_INPUT_EXCEPTION
|
||||
SELECT ST_WITHIN( LINESTRINGFROMTEXT(' LINESTRING( 5 9 , 3 4 , 4 1 , 4
|
||||
4 , 4 9 ) ') , ST_SYMDIFFERENCE( ST_UNION( ST_ENVELOPE( POLYGONFROMTEXT('
|
||||
POLYGON( ( 3 2 , 0 6 , 2 3 , 8 0 , 4 6 , 7 2 , 3 2 ) ) ') ) ,
|
||||
|
@ -10,6 +10,7 @@
|
||||
#********************************************************
|
||||
--source include/have_geometry.inc
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_partition.inc
|
||||
|
||||
SET default_storage_engine=InnoDB;
|
||||
SET innodb_strict_mode=OFF;
|
||||
@ -162,21 +163,21 @@ EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8)
|
||||
FROM tab
|
||||
WHERE c8=ST_GeometryFromWKB(ST_AsWKB(ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))')));
|
||||
|
||||
--echo #check range predicate on the index columns
|
||||
--replace_column 10 #
|
||||
--error ER_WRONG_ARGUMENTS
|
||||
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab
|
||||
WHERE c2>=ST_LineFromText('LINESTRING(10 10,20 20,30 30)');
|
||||
|
||||
--replace_column 10 #
|
||||
--error ER_WRONG_ARGUMENTS
|
||||
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab
|
||||
WHERE c3>=ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))');
|
||||
|
||||
--replace_column 10 #
|
||||
--error ER_WRONG_ARGUMENTS
|
||||
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab
|
||||
WHERE c8>=ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))');
|
||||
#--echo #check range predicate on the index columns
|
||||
#--replace_column 10 #
|
||||
#--error ER_WRONG_ARGUMENTS
|
||||
#EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab
|
||||
#WHERE c2>=ST_LineFromText('LINESTRING(10 10,20 20,30 30)');
|
||||
#
|
||||
#--replace_column 10 #
|
||||
#--error ER_WRONG_ARGUMENTS
|
||||
#EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab
|
||||
#WHERE c3>=ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))');
|
||||
#
|
||||
#--replace_column 10 #
|
||||
#--error ER_WRONG_ARGUMENTS
|
||||
#EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab
|
||||
#WHERE c8>=ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))');
|
||||
|
||||
--echo #check index with DELETE operation
|
||||
--replace_column 10 #
|
||||
@ -409,10 +410,9 @@ SELECT ST_AsText(a.c2),ST_AsText(b.c2) FROM tab a,tab2 b WHERE a.c2=b.c2;
|
||||
|
||||
--echo #check DELETE stmt with Where clause and a constant predicate
|
||||
DELETE FROM tab
|
||||
Where c8=c8=ST_GeometryFromWKB(ST_AsWKB(ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))')));
|
||||
WHERE c8=ST_GeometryFromWKB(ST_AsWKB(ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))')));
|
||||
|
||||
--echo #check the data, should 0
|
||||
SELECT COUNT(*) FROM tab;
|
||||
SELECT * FROM tab;
|
||||
|
||||
--echo #check UPDATE stmt with Where clause and a constant predicate
|
||||
SET @c8=ST_GeomCollFromText('GeometryCollection(Point(10 10),LineString(20 20, 30 30))');
|
||||
@ -518,21 +518,21 @@ EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8)
|
||||
FROM tab3
|
||||
WHERE c8=ST_GeometryFromWKB(ST_AsWKB(ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))')));
|
||||
|
||||
--echo #check range predicate on the index columns
|
||||
--replace_column 10 #
|
||||
--error ER_WRONG_ARGUMENTS
|
||||
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab3
|
||||
WHERE c2>=ST_LineFromText('LINESTRING(10 10,20 20,30 30)');
|
||||
# --echo #check range predicate on the index columns
|
||||
# --replace_column 10 #
|
||||
# --error ER_WRONG_ARGUMENTS
|
||||
# EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab3
|
||||
# WHERE c2>=ST_LineFromText('LINESTRING(10 10,20 20,30 30)');
|
||||
#
|
||||
# --replace_column 10 #
|
||||
# --error ER_WRONG_ARGUMENTS
|
||||
# EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab3
|
||||
# WHERE c3>=ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))');
|
||||
|
||||
--replace_column 10 #
|
||||
--error ER_WRONG_ARGUMENTS
|
||||
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab3
|
||||
WHERE c3>=ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))');
|
||||
|
||||
--replace_column 10 #
|
||||
--error ER_WRONG_ARGUMENTS
|
||||
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab3
|
||||
WHERE c8>=ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))');
|
||||
# --replace_column 10 #
|
||||
# --error ER_WRONG_ARGUMENTS
|
||||
# EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab3
|
||||
# WHERE c8>=ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))');
|
||||
|
||||
--echo #check index with DELETE operation
|
||||
--replace_column 10 #
|
||||
@ -638,7 +638,7 @@ FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second
|
||||
--echo # check support of Foreign Key constraint
|
||||
CREATE TABLE parent (id GEOMETRY NOT NULL,PRIMARY KEY (id(10))) ENGINE=INNODB;
|
||||
|
||||
--error 1215
|
||||
--error ER_CANT_CREATE_TABLE
|
||||
CREATE TABLE child (id GEOMETRY, parent_id GEOMETRY,
|
||||
INDEX par_ind (parent_id(10)),
|
||||
FOREIGN KEY (parent_id(10)) REFERENCES parent(id)
|
||||
@ -662,6 +662,7 @@ PARTITION BY LIST(store_id) (
|
||||
--echo #check start transaction commit & Rollback
|
||||
START TRANSACTION;
|
||||
DELETE FROM tab3;
|
||||
SELECT * FROM tab3;
|
||||
ROLLBACK;
|
||||
|
||||
SELECT COUNT(*) FROM tab3;
|
||||
@ -670,12 +671,12 @@ START TRANSACTION;
|
||||
DELETE FROM tab3;
|
||||
COMMIT;
|
||||
|
||||
SELECT COUNT(*) FROM tab3;
|
||||
SELECT * FROM tab3;
|
||||
|
||||
DROP TABLE gis_point, gis_line, gis_polygon, gis_multi_point;
|
||||
DROP TABLE gis_multi_line, gis_multi_polygon;
|
||||
DROP TABLE gis_geometrycollection, gis_geometry;
|
||||
DROP TABLE tab,tab2,tab3,parent,emp2;
|
||||
DROP TABLE tab,tab2,tab3,parent;
|
||||
DROP PROCEDURE geominout;
|
||||
DROP PROCEDURE geom_insert;
|
||||
DROP PROCEDURE geom_cursor;
|
||||
|
@ -12,13 +12,14 @@ insert into t1(a) values( geometrycollection(multipolygon(polygon(linestring(
|
||||
insert into t1(a) values( geometrycollection(point(10,9), linestring(point(2305843009213693955,-1125899906842621), point(78,15)), multipoint(point(-1,3), point(4,-6))) ) ;
|
||||
--error ER_GIS_INVALID_DATA,ER_BAD_NULL_ERROR
|
||||
insert into t1(a) values( geometrycollection(polygon(linestring(point(0,13), point(-12,5), point(0,13)), linestring(point(11,-2), point(6,6), point(20,-14), point(-3,-10), point(1.330588e+308,2.666476e+307)), linestring(point(16382,67), point(7,4)), linestring(point(2,7), point(-14,15), point(2,7)), linestring(point(-14,12), point(-8,-8), point(-17,-2), point(-14,12)), linestring(point(-20,-10), point(-8,-13), point(-19,-17), point(13,-3), point(-20,-10)), linestring(point(-5,13), point(7,-9), point(6,8), point(-5,13))), linestring(point(-87,19), point(-64,51), point(-16,12)), multipoint(point(-1,-10), point(2,-10), point(3.670354e+307,2.501459e+307))) ) ;
|
||||
--error ER_GIS_INVALID_DATA,ER_BAD_NULL_ERROR
|
||||
insert into t1(a) values( geometrycollection(multipoint(point(-3,7), point(4,-3), point(-6,-2), point(-9,1)), polygon(linestring(point(-17,-5), point(2,-8), point(-6,9), point(-9,19), point(-17,-5)), linestring(point(10,-1), point(15,-7), point(-13,6), point(10,-1))), multipolygon(polygon(linestring(point(69,-69), point(-90,-64), point(-17,4), point(47,-73), point(69,-69)), linestring(point(-35,-77), point(-35,-77)), linestring(point(95,-76), point(1.636688e+308,1.828723e+307), point(68719476740,536870916), point(95,-76)), linestring(point(-26,-85), point(-26,-85)), linestring(point(-53,57), point(-53,57)), linestring(point(-98,-64), point(79,-57), point(-98,-64)), linestring(point(-91,59), point(16,0), point(73,97), point(-35,-70), point(-91,59))))) ) ;
|
||||
insert into t1(a) values( geometrycollection(linestring(point(85,-29), point(15,84), point(39,-92), point(-99,19)), multilinestring(linestring(point(63,10), point(-47,95), point(10,-49), point(16,-65), point(-98,40), point(25,44), point(-55,-92)), linestring(point(5.266810e+307,6.648813e+307), point(47,33), point(-15,-13), point(-92,-58), point(36,73)), linestring(point(77,-56), point(-53,-10), point(-28,76), point(-51,6), point(51,-31), point(-95,81), point(92,26)), linestring(point(-91,7), point(58,53)), linestring(point(18,5), point(18,40), point(71,89), point(7.898707e+307,1.202585e+308), point(53,100)), linestring(point(-60,-18), point(-10,-31), point(-6,-25), point(-57,-95), point(16,77)))) ) ;
|
||||
--error ER_GIS_INVALID_DATA,ER_BAD_NULL_ERROR
|
||||
insert into t1(a) values( geometrycollection(polygon(linestring(point(-9,0), point(-17,-15), point(-9,0)), linestring(point(-11,1), point(18,12), point(15,3), point(7,0), point(-11,1)), linestring(point(19,5), point(19,5)), linestring(point(17,-11), point(8,4), point(17,-11)), linestring(point(14914539334033432000000000000000000000.000000,127247994336690690000000000000000000000.000000), point(-14,-7), point(13,-2))), point(-4,-7), polygon(linestring(point(-18,9), point(11,-1), point(-18,9)), linestring(point(9,-3), point(9,-3)), linestring(point(-7,-9), point(9,-11), point(11,14), point(1.663324e+308,1.572127e+308)), linestring(point(-15,4), point(18,12), point(7,2), point(-15,4)), linestring(point(-15,-18), point(-20,-15), point(1152921504606846972,34359738370))), polygon(linestring(point(-5,-19), point(-11,11), point(10,5), point(-7,13), point(-5,-19)), linestring(point(-8,-6), point(-4,16), point(-8,-6)), linestring(point(-6,-10), point(3,-12), point(-6,-10)), linestring(point(-16,1), point(20,-12), point(-16,1)), linestring(point(-8,5), point(-20,-4), point(4,1), point(-6,-6), point(-8,5)), linestring(point(-8,-11), point(-5,-14), point(-8,-11)), linestring(point(3,-16), point(-15,-13), point(1.166708e+308,1.901147e+307), point(-8,6), point(3,-16))), point(0,-5)) ) ;
|
||||
insert into t1(a) values( geometrycollection(linestring(point(-33,99), point(99,-87), point(38,-79), point(33,-39), point(-91,-8), point(46,-87))) ) ;
|
||||
|
||||
insert into t1 select * from t1;
|
||||
insert into t1 select * from t1;
|
||||
insert into t1 select * from t1;
|
||||
insert into t1 select * from t1;
|
||||
insert into t1 select * from t1;
|
||||
insert into t1 select * from t1;
|
||||
|
@ -75,19 +75,6 @@ SELECT name, ST_AsText(square) from t1 where MBRWithin(@p, square);
|
||||
|
||||
# MBROverlaps needs a few more tests, with point and line dimensions
|
||||
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SET @vert1 = ST_GeomFromText('POLYGON ((0 -2, 0 2, 0 -2))');
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SET @horiz1 = ST_GeomFromText('POLYGON ((-2 0, 2 0, -2 0))');
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SET @horiz2 = ST_GeomFromText('POLYGON ((-1 0, 3 0, -1 0))');
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SET @horiz3 = ST_GeomFromText('POLYGON ((2 0, 3 0, 2 0))');
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SET @point1 = ST_GeomFromText('POLYGON ((0 0))');
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SET @point2 = ST_GeomFromText('POLYGON ((-2 0))');
|
||||
|
||||
SELECT GROUP_CONCAT(a1.name ORDER BY a1.name) AS MBRoverlaps FROM t1 a1 WHERE MBROverlaps(a1.square, @vert1) GROUP BY a1.name;
|
||||
SELECT GROUP_CONCAT(a1.name ORDER BY a1.name) AS MBRoverlaps FROM t1 a1 WHERE MBROverlaps(a1.square, @horiz1) GROUP BY a1.name;
|
||||
SELECT MBROverlaps(@horiz1, @vert1) FROM DUAL;
|
||||
|
@ -1,53 +1,52 @@
|
||||
call mtr.add_suppression("InnoDB: Tablespace for table .* is set as discarded.");
|
||||
call mtr.add_suppression("InnoDB: Cannot calculate statistics for table .* because the .ibd file is missing. Please refer to .* for how to resolve the issue.");
|
||||
call mtr.add_suppression("InnoDB: Page 0 at offset 0 looks corrupted in file .*");
|
||||
call mtr.add_suppression("InnoDB: Tablespace for table .* is set as discarded\\.");
|
||||
call mtr.add_suppression("InnoDB: Cannot calculate statistics for table .* because the .ibd file is missing. Please refer to .* for how to resolve the issue\\.");
|
||||
call mtr.add_suppression("InnoDB: Page 0 at offset 0 looks corrupted in file");
|
||||
call mtr.add_suppression("InnoDB: Page for tablespace ");
|
||||
call mtr.add_suppression("InnoDB: Invalid FSP_SPACE_FLAGS=0x");
|
||||
FLUSH TABLES;
|
||||
SET SESSION innodb_strict_mode=1;
|
||||
CREATE DATABASE test_wl5522;
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT) ENGINE = Innodb
|
||||
CREATE TABLE t1 (c1 INT) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED;
|
||||
INSERT INTO test_wl5522.t1 VALUES (1), (2), (3), (4);
|
||||
FLUSH TABLES test_wl5522.t1 FOR EXPORT;
|
||||
INSERT INTO t1 VALUES (1), (2), (3), (4);
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
backup: t1
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE test_wl5522.t1;
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT) ENGINE = Innodb
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (c1 INT) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED;
|
||||
INSERT INTO test_wl5522.t1 VALUES (1);
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||
restore: t1 .ibd and .cfg files
|
||||
SET SESSION debug_dbug="+d,ib_import_before_commit_crash";
|
||||
SELECT * FROM test_wl5522.t1;
|
||||
SELECT * FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Lost connection to MySQL server during query
|
||||
SET SESSION debug_dbug="+d,ib_import_before_checkpoint_crash";
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Lost connection to MySQL server during query
|
||||
unlink: t1.ibd
|
||||
unlink: t1.cfg
|
||||
# Restart and reconnect to the server
|
||||
DROP TABLE test_wl5522.t1;
|
||||
DROP TABLE t1;
|
||||
SET SESSION innodb_strict_mode=1;
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT) ENGINE = Innodb
|
||||
CREATE TABLE t1 (c1 INT) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED;
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
restore: t1 .ibd and .cfg files
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
CHECK TABLE test_wl5522.t1;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test_wl5522.t1 check status OK
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
test.t1 check status OK
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
4
|
||||
INSERT INTO test_wl5522.t1 VALUES(400), (500), (600);
|
||||
SELECT * FROM test_wl5522.t1;
|
||||
INSERT INTO t1 VALUES(400), (500), (600);
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
1
|
||||
2
|
||||
@ -56,59 +55,59 @@ c1
|
||||
400
|
||||
500
|
||||
600
|
||||
DROP TABLE test_wl5522.t1;
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT) ENGINE = Innodb
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (c1 INT) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED;
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||
restore: t1 .ibd and .cfg files
|
||||
SET @saved_debug_dbug = @@SESSION.debug_dbug;
|
||||
SET SESSION debug_dbug="+d,ib_import_internal_error";
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Internal error: While updating the <space, root page number> of index GEN_CLUST_INDEX - Generic error
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
restore: t1 .ibd and .cfg files
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
DROP TABLE test_wl5522.t1;
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT) ENGINE = Innodb
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (c1 INT) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED;
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||
restore: t1 .ibd and .cfg files
|
||||
SET SESSION debug_dbug="+d,ib_import_reset_space_and_lsn_failure";
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Internal error: Cannot reset LSNs in table `test_wl5522`.`t1` : Too many concurrent transactions
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Internal error: Cannot reset LSNs in table `test`.`t1` : Too many concurrent transactions
|
||||
restore: t1 .ibd and .cfg files
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
SET SESSION debug_dbug="+d,ib_import_open_tablespace_failure";
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Got error 44 't1.ibd
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Got error 44 'Tablespace not found' from ./test/t1.ibd
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
restore: t1 .ibd and .cfg files
|
||||
SET SESSION debug_dbug="+d,ib_import_check_bitmap_failure";
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Index for table 't1' is corrupt; try to repair it
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
restore: t1 .ibd and .cfg files
|
||||
SET SESSION debug_dbug="+d,ib_import_cluster_root_adjust_failure";
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Index for table 't1' is corrupt; try to repair it
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
restore: t1 .ibd and .cfg files
|
||||
SET SESSION debug_dbug="+d,ib_import_cluster_failure";
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Index for table 't1' is corrupt; try to repair it
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
restore: t1 .ibd and .cfg files
|
||||
SET SESSION debug_dbug="+d,ib_import_sec_root_adjust_failure";
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Index for table 't1' is corrupt; try to repair it
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
restore: t1 .ibd and .cfg files
|
||||
DROP TABLE test_wl5522.t1;
|
||||
CREATE TABLE test_wl5522.t1 (
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
c1 BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 BIGINT,
|
||||
c3 VARCHAR(2048),
|
||||
@ -120,37 +119,30 @@ ROW_FORMAT=COMPRESSED;
|
||||
connect purge_control,localhost,root;
|
||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||
connection default;
|
||||
SET GLOBAL innodb_monitor_reset = ibuf_merges;
|
||||
SET GLOBAL innodb_monitor_reset = ibuf_merges_insert;
|
||||
INSERT INTO test_wl5522.t1(c2, c3, c4) VALUES
|
||||
(1, REPEAT('a', 2048), REPEAT('a', 2048)),
|
||||
(2, REPEAT('b', 2048), REPEAT('b', 2048)),
|
||||
(3, REPEAT('c', 2048), REPEAT('c', 2048)),
|
||||
(4, REPEAT('d', 2048), REPEAT('d', 2048));
|
||||
INSERT INTO test_wl5522.t1(c2, c3, c4) SELECT c2, c3, c4 FROM test_wl5522.t1;
|
||||
INSERT INTO test_wl5522.t1(c2, c3, c4) SELECT c2, c3, c4 FROM test_wl5522.t1;
|
||||
INSERT INTO test_wl5522.t1(c2, c3, c4) SELECT c2, c3, c4 FROM test_wl5522.t1;
|
||||
INSERT INTO test_wl5522.t1(c2, c3, c4) SELECT c2, c3, c4 FROM test_wl5522.t1;
|
||||
INSERT INTO test_wl5522.t1(c2, c3, c4) SELECT c2, c3, c4 FROM test_wl5522.t1;
|
||||
DELETE FROM test_wl5522.t1 WHERE c2 = 1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c3 = REPEAT("c2", 1024);
|
||||
UPDATE test_wl5522.t1 SET c4 = REPEAT("c4", 1024);
|
||||
SHOW CREATE TABLE test_wl5522.t1;
|
||||
INSERT INTO t1
|
||||
SELECT 1 + seq, 1 + (seq MOD 4),
|
||||
REPEAT(SUBSTR('abcd', 1 + (seq MOD 4), 1), 2048),
|
||||
REPEAT(SUBSTR('abcd', 1 + (seq MOD 4), 1), 2048)
|
||||
FROM seq_0_to_127;
|
||||
DELETE FROM t1 WHERE c2 = 1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c3 = REPEAT("c2", 1024);
|
||||
UPDATE t1 SET c4 = REPEAT("c4", 1024);
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
@ -161,133 +153,16 @@ t1 CREATE TABLE `t1` (
|
||||
KEY `idx1` (`c2`),
|
||||
KEY `idx2` (`c3`(512)),
|
||||
KEY `idx3` (`c4`(512))
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=248 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED
|
||||
SELECT c1, c2 FROM test_wl5522.t1;
|
||||
c1 c2
|
||||
2 32
|
||||
3 48
|
||||
4 64
|
||||
6 92
|
||||
7 108
|
||||
8 124
|
||||
13 197
|
||||
14 213
|
||||
15 229
|
||||
17 257
|
||||
18 273
|
||||
19 289
|
||||
28 422
|
||||
29 438
|
||||
30 454
|
||||
32 482
|
||||
33 498
|
||||
34 514
|
||||
36 542
|
||||
37 558
|
||||
38 574
|
||||
40 602
|
||||
41 618
|
||||
42 634
|
||||
59 887
|
||||
60 903
|
||||
61 919
|
||||
63 947
|
||||
64 963
|
||||
65 979
|
||||
67 1007
|
||||
68 1023
|
||||
69 1039
|
||||
71 1067
|
||||
72 1083
|
||||
73 1099
|
||||
75 1127
|
||||
76 1143
|
||||
77 1159
|
||||
79 1187
|
||||
80 1203
|
||||
81 1219
|
||||
83 1247
|
||||
84 1263
|
||||
85 1279
|
||||
87 1307
|
||||
88 1323
|
||||
89 1339
|
||||
122 1832
|
||||
123 1848
|
||||
124 1864
|
||||
126 1892
|
||||
127 1908
|
||||
128 1924
|
||||
130 1952
|
||||
131 1968
|
||||
132 1984
|
||||
134 2012
|
||||
135 2028
|
||||
136 2044
|
||||
138 2072
|
||||
139 2088
|
||||
140 2104
|
||||
142 2132
|
||||
143 2148
|
||||
144 2164
|
||||
146 2192
|
||||
147 2208
|
||||
148 2224
|
||||
150 2252
|
||||
151 2268
|
||||
152 2284
|
||||
154 2312
|
||||
155 2328
|
||||
156 2344
|
||||
158 2372
|
||||
159 2388
|
||||
160 2404
|
||||
162 2432
|
||||
163 2448
|
||||
164 2464
|
||||
166 2492
|
||||
167 2508
|
||||
168 2524
|
||||
170 2552
|
||||
171 2568
|
||||
172 2584
|
||||
174 2612
|
||||
175 2628
|
||||
176 2644
|
||||
178 2672
|
||||
179 2688
|
||||
180 2704
|
||||
182 2732
|
||||
183 2748
|
||||
184 2764
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
COUNT(*)
|
||||
96
|
||||
SELECT SUM(c2) FROM test_wl5522.t1;
|
||||
SUM(c2)
|
||||
145278
|
||||
SELECT name
|
||||
FROM information_schema.innodb_metrics
|
||||
WHERE name = 'ibuf_merges_insert' AND count = 0;
|
||||
name
|
||||
ibuf_merges_insert
|
||||
FLUSH TABLES test_wl5522.t1 FOR EXPORT;
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=129 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
backup: t1
|
||||
UNLOCK TABLES;
|
||||
SELECT name
|
||||
FROM information_schema.innodb_metrics
|
||||
WHERE name = 'ibuf_merges' AND count > 0;
|
||||
name
|
||||
SELECT name
|
||||
FROM information_schema.innodb_metrics
|
||||
WHERE name = 'ibuf_merges_inserts' AND count > 0;
|
||||
name
|
||||
connection purge_control;
|
||||
COMMIT;
|
||||
disconnect purge_control;
|
||||
connection default;
|
||||
DROP TABLE test_wl5522.t1;
|
||||
CREATE TABLE test_wl5522.t1 (
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
c1 BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 BIGINT,
|
||||
c3 VARCHAR(2048),
|
||||
@ -296,15 +171,15 @@ INDEX idx1(c2),
|
||||
INDEX idx2(c3(512)),
|
||||
INDEX idx3(c4(512))) Engine=InnoDB
|
||||
ROW_FORMAT=COMPRESSED;
|
||||
SELECT c1, c2 FROM test_wl5522.t1;
|
||||
SELECT c1, c2 FROM t1;
|
||||
c1 c2
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
restore: t1 .ibd and .cfg files
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
CHECK TABLE test_wl5522.t1;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test_wl5522.t1 check status OK
|
||||
SELECT c1,c2 FROM test_wl5522.t1;
|
||||
test.t1 check status OK
|
||||
SELECT c1,c2 FROM t1;
|
||||
c1 c2
|
||||
2 32
|
||||
3 48
|
||||
@ -312,103 +187,97 @@ c1 c2
|
||||
6 92
|
||||
7 108
|
||||
8 124
|
||||
13 197
|
||||
14 213
|
||||
15 229
|
||||
17 257
|
||||
18 273
|
||||
19 289
|
||||
28 422
|
||||
29 438
|
||||
30 454
|
||||
32 482
|
||||
33 498
|
||||
34 514
|
||||
36 542
|
||||
37 558
|
||||
38 574
|
||||
40 602
|
||||
41 618
|
||||
42 634
|
||||
59 887
|
||||
60 903
|
||||
61 919
|
||||
63 947
|
||||
64 963
|
||||
65 979
|
||||
67 1007
|
||||
68 1023
|
||||
69 1039
|
||||
71 1067
|
||||
72 1083
|
||||
73 1099
|
||||
75 1127
|
||||
76 1143
|
||||
77 1159
|
||||
79 1187
|
||||
80 1203
|
||||
81 1219
|
||||
83 1247
|
||||
84 1263
|
||||
85 1279
|
||||
87 1307
|
||||
88 1323
|
||||
89 1339
|
||||
10 152
|
||||
11 168
|
||||
12 184
|
||||
14 212
|
||||
15 228
|
||||
16 244
|
||||
18 272
|
||||
19 288
|
||||
20 304
|
||||
22 332
|
||||
23 348
|
||||
24 364
|
||||
26 392
|
||||
27 408
|
||||
28 424
|
||||
30 452
|
||||
31 468
|
||||
32 484
|
||||
34 512
|
||||
35 528
|
||||
36 544
|
||||
38 572
|
||||
39 588
|
||||
40 604
|
||||
42 632
|
||||
43 648
|
||||
44 664
|
||||
46 692
|
||||
47 708
|
||||
48 724
|
||||
50 752
|
||||
51 768
|
||||
52 784
|
||||
54 812
|
||||
55 828
|
||||
56 844
|
||||
58 872
|
||||
59 888
|
||||
60 904
|
||||
62 932
|
||||
63 948
|
||||
64 964
|
||||
66 992
|
||||
67 1008
|
||||
68 1024
|
||||
70 1052
|
||||
71 1068
|
||||
72 1084
|
||||
74 1112
|
||||
75 1128
|
||||
76 1144
|
||||
78 1172
|
||||
79 1188
|
||||
80 1204
|
||||
82 1232
|
||||
83 1248
|
||||
84 1264
|
||||
86 1292
|
||||
87 1308
|
||||
88 1324
|
||||
90 1352
|
||||
91 1368
|
||||
92 1384
|
||||
94 1412
|
||||
95 1428
|
||||
96 1444
|
||||
98 1472
|
||||
99 1488
|
||||
100 1504
|
||||
102 1532
|
||||
103 1548
|
||||
104 1564
|
||||
106 1592
|
||||
107 1608
|
||||
108 1624
|
||||
110 1652
|
||||
111 1668
|
||||
112 1684
|
||||
114 1712
|
||||
115 1728
|
||||
116 1744
|
||||
118 1772
|
||||
119 1788
|
||||
120 1804
|
||||
122 1832
|
||||
123 1848
|
||||
124 1864
|
||||
126 1892
|
||||
127 1908
|
||||
128 1924
|
||||
130 1952
|
||||
131 1968
|
||||
132 1984
|
||||
134 2012
|
||||
135 2028
|
||||
136 2044
|
||||
138 2072
|
||||
139 2088
|
||||
140 2104
|
||||
142 2132
|
||||
143 2148
|
||||
144 2164
|
||||
146 2192
|
||||
147 2208
|
||||
148 2224
|
||||
150 2252
|
||||
151 2268
|
||||
152 2284
|
||||
154 2312
|
||||
155 2328
|
||||
156 2344
|
||||
158 2372
|
||||
159 2388
|
||||
160 2404
|
||||
162 2432
|
||||
163 2448
|
||||
164 2464
|
||||
166 2492
|
||||
167 2508
|
||||
168 2524
|
||||
170 2552
|
||||
171 2568
|
||||
172 2584
|
||||
174 2612
|
||||
175 2628
|
||||
176 2644
|
||||
178 2672
|
||||
179 2688
|
||||
180 2704
|
||||
182 2732
|
||||
183 2748
|
||||
184 2764
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
COUNT(*)
|
||||
96
|
||||
SELECT SUM(c2) FROM test_wl5522.t1;
|
||||
SUM(c2)
|
||||
145278
|
||||
SHOW CREATE TABLE test_wl5522.t1;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
@ -419,135 +288,116 @@ t1 CREATE TABLE `t1` (
|
||||
KEY `idx1` (`c2`),
|
||||
KEY `idx2` (`c3`(512)),
|
||||
KEY `idx3` (`c4`(512))
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=248 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED
|
||||
DROP TABLE test_wl5522.t1;
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=129 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
||||
INSERT IGNORE INTO test_wl5522.t1 VALUES
|
||||
(100, REPEAT('Karanbir', 899), REPEAT('Ajeeth', 1200));
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'c2' at row 1
|
||||
INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1;
|
||||
INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1;
|
||||
INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1;
|
||||
INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1;
|
||||
INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1;
|
||||
INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1;
|
||||
INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1;
|
||||
INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1;
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
COUNT(*)
|
||||
256
|
||||
FLUSH TABLES test_wl5522.t1 FOR EXPORT;
|
||||
INSERT INTO t1
|
||||
SELECT 100, REPEAT('Karanbir', 128), REPEAT('Ajeeth', 1200)
|
||||
FROM seq_1_to_256;
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
backup: t1
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE test_wl5522.t1;
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||
restore: t1 .ibd and .cfg files
|
||||
SET SESSION debug_dbug="+d,ib_import_trigger_corruption_1";
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Internal error: Cannot reset LSNs in table `test_wl5522`.`t1` : Data structure corruption
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Internal error: Cannot reset LSNs in table `test`.`t1` : Data structure corruption
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
DROP TABLE test_wl5522.t1;
|
||||
DROP TABLE t1;
|
||||
unlink: t1.ibd
|
||||
unlink: t1.cfg
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||
restore: t1 .ibd and .cfg files
|
||||
SET SESSION debug_dbug="+d,buf_page_import_corrupt_failure";
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Internal error: Cannot reset LSNs in table `test_wl5522`.`t1` : Data structure corruption
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Internal error: Cannot reset LSNs in table `test`.`t1` : Data structure corruption
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
DROP TABLE test_wl5522.t1;
|
||||
DROP TABLE t1;
|
||||
unlink: t1.ibd
|
||||
unlink: t1.cfg
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||
restore: t1 .ibd and .cfg files
|
||||
SET SESSION debug_dbug="+d,ib_import_trigger_corruption_2";
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Index corrupt: Externally stored column(5) has a reference length of 19 in the cluster index GEN_CLUST_INDEX
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
DROP TABLE test_wl5522.t1;
|
||||
DROP TABLE t1;
|
||||
unlink: t1.ibd
|
||||
unlink: t1.cfg
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||
restore: t1 .ibd and .cfg files
|
||||
SET SESSION debug_dbug="+d,ib_import_trigger_corruption_3";
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Index for table 't1' is corrupt; try to repair it
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
DROP TABLE test_wl5522.t1;
|
||||
DROP TABLE t1;
|
||||
unlink: t1.ibd
|
||||
unlink: t1.cfg
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||
SET SESSION debug_dbug="+d,ib_import_create_index_failure_1";
|
||||
ALTER TABLE test_wl5522.t1 ADD INDEX idx(c1);
|
||||
ALTER TABLE t1 ADD INDEX idx(c1);
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
DROP TABLE test_wl5522.t1;
|
||||
DROP TABLE t1;
|
||||
unlink: t1.ibd
|
||||
unlink: t1.cfg
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||
restore: t1 .ibd and .cfg files
|
||||
SET SESSION debug_dbug="+d,fil_space_create_failure";
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Got error 11 't1.ibd
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Got error 11 'Generic error' from ./test/t1.ibd
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
DROP TABLE test_wl5522.t1;
|
||||
DROP TABLE t1;
|
||||
unlink: t1.ibd
|
||||
unlink: t1.cfg
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||
restore: t1 .ibd and .cfg files
|
||||
SET SESSION debug_dbug="+d,dict_tf_to_fsp_flags_failure";
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Got error 39 't1.ibd
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Got error 39 'Data structure corruption' from ./test/t1.ibd
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
DROP TABLE test_wl5522.t1;
|
||||
DROP TABLE t1;
|
||||
unlink: t1.ibd
|
||||
unlink: t1.cfg
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||
restore: t1 .ibd and .cfg files
|
||||
SET SESSION debug_dbug="+d,fsp_flags_is_valid_failure";
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Internal error: Cannot reset LSNs in table `test_wl5522`.`t1` : Data structure corruption
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Internal error: Cannot reset LSNs in table `test`.`t1` : Data structure corruption
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
DROP TABLE test_wl5522.t1;
|
||||
DROP TABLE t1;
|
||||
unlink: t1.ibd
|
||||
unlink: t1.cfg
|
||||
DROP DATABASE test_wl5522;
|
||||
set global innodb_monitor_disable = all;
|
||||
set global innodb_monitor_reset_all = all;
|
||||
set global innodb_monitor_enable = default;
|
||||
set global innodb_monitor_disable = default;
|
||||
set global innodb_monitor_reset = default;
|
||||
set global innodb_monitor_reset_all = default;
|
||||
|
@ -1,4 +1,4 @@
|
||||
call mtr.add_suppression("InnoDB: Unable to import tablespace .* because it already exists. Please DISCARD the tablespace before IMPORT.");
|
||||
call mtr.add_suppression("InnoDB: Unable to import tablespace .* because it already exists. Please DISCARD the tablespace before IMPORT\\.");
|
||||
SET SESSION innodb_strict_mode=1;
|
||||
CREATE TABLE t1
|
||||
(a INT AUTO_INCREMENT PRIMARY KEY,
|
||||
@ -6,29 +6,26 @@ b char(22),
|
||||
c varchar(255),
|
||||
KEY (b))
|
||||
ENGINE = InnoDB ROW_FORMAT=COMPRESSED ;
|
||||
insert into t1 (b, c) values ('Apa', 'Filler........'),
|
||||
CREATE TEMPORARY TABLE t (b char(22),c varchar(255));
|
||||
INSERT INTO t VALUES
|
||||
('Apa', 'Filler........'),
|
||||
('Banan', 'Filler........'), ('Cavalry', '..asdasdfaeraf'),
|
||||
('Devotion', 'asdfuihknaskdf'), ('Evolution', 'lsjndofiabsoibeg');
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b,c) SELECT b,c FROM t,seq_1_to_128;
|
||||
DROP TEMPORARY TABLE t;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
640
|
||||
SELECT * FROM t1 ORDER BY b,a DESC LIMIT 3;
|
||||
a b c
|
||||
819 Apa Filler........
|
||||
814 Apa Filler........
|
||||
809 Apa Filler........
|
||||
636 Apa Filler........
|
||||
631 Apa Filler........
|
||||
626 Apa Filler........
|
||||
SELECT * FROM t1 ORDER BY a DESC LIMIT 3;
|
||||
a b c
|
||||
823 Evolution lsjndofiabsoibeg
|
||||
822 Devotion asdfuihknaskdf
|
||||
821 Cavalry ..asdasdfaeraf
|
||||
640 Evolution lsjndofiabsoibeg
|
||||
639 Devotion asdfuihknaskdf
|
||||
638 Cavalry ..asdasdfaeraf
|
||||
db.opt
|
||||
t1.frm
|
||||
t1.ibd
|
||||
@ -48,14 +45,14 @@ COUNT(*)
|
||||
1280
|
||||
SELECT * FROM t1 ORDER BY b,a DESC LIMIT 3;
|
||||
a b c
|
||||
1459 Apa Filler........
|
||||
1454 Apa Filler........
|
||||
1449 Apa Filler........
|
||||
1276 Apa Filler........
|
||||
1271 Apa Filler........
|
||||
1266 Apa Filler........
|
||||
SELECT * FROM t1 ORDER BY a DESC LIMIT 3;
|
||||
a b c
|
||||
1463 Evolution lsjndofiabsoibeg
|
||||
1462 Devotion asdfuihknaskdf
|
||||
1461 Cavalry ..asdasdfaeraf
|
||||
1280 Evolution lsjndofiabsoibeg
|
||||
1279 Devotion asdfuihknaskdf
|
||||
1278 Cavalry ..asdasdfaeraf
|
||||
# Restarting server
|
||||
# restart
|
||||
# Done restarting server
|
||||
@ -74,14 +71,14 @@ COUNT(*)
|
||||
640
|
||||
SELECT * FROM t1 ORDER BY b,a DESC LIMIT 3;
|
||||
a b c
|
||||
819 Apa Filler........
|
||||
814 Apa Filler........
|
||||
809 Apa Filler........
|
||||
636 Apa Filler........
|
||||
631 Apa Filler........
|
||||
626 Apa Filler........
|
||||
SELECT * FROM t1 ORDER BY a DESC LIMIT 3;
|
||||
a b c
|
||||
823 Evolution lsjndofiabsoibeg
|
||||
822 Devotion asdfuihknaskdf
|
||||
821 Cavalry ..asdasdfaeraf
|
||||
640 Evolution lsjndofiabsoibeg
|
||||
639 Devotion asdfuihknaskdf
|
||||
638 Cavalry ..asdasdfaeraf
|
||||
db.opt
|
||||
t1.cfg
|
||||
t1.frm
|
||||
@ -91,14 +88,14 @@ COUNT(*)
|
||||
640
|
||||
SELECT * FROM t1 ORDER BY b,a DESC LIMIT 3;
|
||||
a b c
|
||||
819 Apa Filler........
|
||||
814 Apa Filler........
|
||||
809 Apa Filler........
|
||||
636 Apa Filler........
|
||||
631 Apa Filler........
|
||||
626 Apa Filler........
|
||||
SELECT * FROM t1 ORDER BY a DESC LIMIT 3;
|
||||
a b c
|
||||
823 Evolution lsjndofiabsoibeg
|
||||
822 Devotion asdfuihknaskdf
|
||||
821 Cavalry ..asdasdfaeraf
|
||||
640 Evolution lsjndofiabsoibeg
|
||||
639 Devotion asdfuihknaskdf
|
||||
638 Cavalry ..asdasdfaeraf
|
||||
DROP TABLE t1;
|
||||
SET SESSION innodb_strict_mode=1;
|
||||
CREATE TABLE t1(
|
||||
@ -114,18 +111,11 @@ DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT) ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=2;
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
db.opt
|
||||
t1.frm
|
||||
t1.ibd
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
16
|
||||
backup: t1
|
||||
db.opt
|
||||
t1.cfg
|
||||
@ -155,11 +145,7 @@ DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT) ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
db.opt
|
||||
t1.frm
|
||||
t1.ibd
|
||||
@ -176,8 +162,6 @@ UNLOCK TABLES;
|
||||
db.opt
|
||||
t1.frm
|
||||
t1.ibd
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
@ -202,23 +186,14 @@ CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX(c2)) ENGINE=InnoDB
|
||||
ROW_FORMAT=COMPRESSED;
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
SELECT COUNT(*) FROM t1 WHERE c2 = 1;
|
||||
COUNT(*)
|
||||
16
|
||||
backup: t1
|
||||
db.opt
|
||||
t1.cfg
|
||||
t1.frm
|
||||
t1.ibd
|
||||
UNLOCK TABLES;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
@ -240,19 +215,10 @@ CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB
|
||||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=16;
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
SELECT COUNT(*) FROM t1 WHERE c2 = 1;
|
||||
COUNT(*)
|
||||
16
|
||||
backup: t1
|
||||
UNLOCK TABLES;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
@ -281,39 +247,32 @@ c1 c2
|
||||
2 1
|
||||
3 1
|
||||
4 1
|
||||
5 1
|
||||
6 1
|
||||
7 1
|
||||
8 1
|
||||
9 1
|
||||
10 1
|
||||
11 1
|
||||
12 1
|
||||
13 1
|
||||
14 1
|
||||
15 1
|
||||
16 1
|
||||
17 1
|
||||
18 1
|
||||
19 1
|
||||
20 1
|
||||
unlink: t1.cfg
|
||||
DROP TABLE t1;
|
||||
SET GLOBAL innodb_file_per_table = 0;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT) ENGINE=InnoDB;
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
16
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`c2` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`c1`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=latin1
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
Warnings:
|
||||
Warning 1809 Table `test`.`t1` in system tablespace
|
||||
@ -324,12 +283,7 @@ CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB
|
||||
ROW_FORMAT=COMPRESSED;
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
@ -337,41 +291,7 @@ t1 CREATE TABLE `t1` (
|
||||
`c2` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`c1`),
|
||||
KEY `idx` (`c2`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
4 1
|
||||
6 1
|
||||
7 1
|
||||
8 1
|
||||
9 1
|
||||
13 1
|
||||
14 1
|
||||
15 1
|
||||
16 1
|
||||
17 1
|
||||
18 1
|
||||
19 1
|
||||
20 1
|
||||
28 1
|
||||
29 1
|
||||
30 1
|
||||
31 1
|
||||
32 1
|
||||
33 1
|
||||
34 1
|
||||
35 1
|
||||
36 1
|
||||
37 1
|
||||
38 1
|
||||
39 1
|
||||
40 1
|
||||
41 1
|
||||
42 1
|
||||
43 1
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
backup: t1
|
||||
UNLOCK TABLES;
|
||||
@ -449,42 +369,26 @@ t1 CREATE TABLE `t1` (
|
||||
`c2` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`c1`),
|
||||
KEY `idx` (`c2`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
4 1
|
||||
5 1
|
||||
6 1
|
||||
7 1
|
||||
8 1
|
||||
9 1
|
||||
10 1
|
||||
11 1
|
||||
12 1
|
||||
13 1
|
||||
14 1
|
||||
15 1
|
||||
16 1
|
||||
17 1
|
||||
18 1
|
||||
19 1
|
||||
20 1
|
||||
28 1
|
||||
29 1
|
||||
30 1
|
||||
31 1
|
||||
32 1
|
||||
33 1
|
||||
34 1
|
||||
35 1
|
||||
36 1
|
||||
37 1
|
||||
38 1
|
||||
39 1
|
||||
40 1
|
||||
41 1
|
||||
42 1
|
||||
43 1
|
||||
DROP TABLE t1;
|
||||
call mtr.add_suppression("Got error -1 when reading table '.*'");
|
||||
call mtr.add_suppression("InnoDB: Error: tablespace id and flags in file '.*'.*");
|
||||
call mtr.add_suppression("InnoDB: Error: tablespace id and flags in file '.*'");
|
||||
call mtr.add_suppression("InnoDB: The table .* doesn't have a corresponding tablespace, it was discarded");
|
||||
|
@ -12,70 +12,66 @@
|
||||
|
||||
--source include/innodb_page_size_small.inc
|
||||
--source include/default_charset.inc
|
||||
--source include/have_sequence.inc
|
||||
|
||||
call mtr.add_suppression("InnoDB: Tablespace for table .* is set as discarded.");
|
||||
call mtr.add_suppression("InnoDB: Cannot calculate statistics for table .* because the .ibd file is missing. Please refer to .* for how to resolve the issue.");
|
||||
call mtr.add_suppression("InnoDB: Page 0 at offset 0 looks corrupted in file .*");
|
||||
call mtr.add_suppression("InnoDB: Tablespace for table .* is set as discarded\\.");
|
||||
call mtr.add_suppression("InnoDB: Cannot calculate statistics for table .* because the .ibd file is missing. Please refer to .* for how to resolve the issue\\.");
|
||||
call mtr.add_suppression("InnoDB: Page 0 at offset 0 looks corrupted in file");
|
||||
call mtr.add_suppression("InnoDB: Page for tablespace ");
|
||||
call mtr.add_suppression("InnoDB: Invalid FSP_SPACE_FLAGS=0x");
|
||||
FLUSH TABLES;
|
||||
|
||||
let MYSQLD_DATADIR =`SELECT @@datadir`;
|
||||
let $pathfix=/: '.*test_wl5522.*t1.ibd'/: 'test_wl5522_t1.ibd'/;
|
||||
|
||||
SET SESSION innodb_strict_mode=1;
|
||||
|
||||
CREATE DATABASE test_wl5522;
|
||||
|
||||
# Create the table that we will use for crash recovery (during IMPORT)
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT) ENGINE = Innodb
|
||||
CREATE TABLE t1 (c1 INT) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED;
|
||||
INSERT INTO test_wl5522.t1 VALUES (1), (2), (3), (4);
|
||||
INSERT INTO t1 VALUES (1), (2), (3), (4);
|
||||
|
||||
--replace_regex /, .*\).*t1.cfg/, Bad file descriptor) t1.cfg/
|
||||
|
||||
FLUSH TABLES test_wl5522.t1 FOR EXPORT;
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_backup_tablespaces("test_wl5522", "t1");
|
||||
ib_backup_tablespaces("test", "t1");
|
||||
EOF
|
||||
UNLOCK TABLES;
|
||||
|
||||
DROP TABLE test_wl5522.t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT) ENGINE = Innodb
|
||||
CREATE TABLE t1 (c1 INT) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED;
|
||||
INSERT INTO test_wl5522.t1 VALUES (1);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_discard_tablespaces("test_wl5522", "t1");
|
||||
ib_discard_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
--error ER_TABLESPACE_DISCARDED
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
##### Before commit crash
|
||||
SET SESSION debug_dbug="+d,ib_import_before_commit_crash";
|
||||
|
||||
--error ER_TABLESPACE_DISCARDED
|
||||
SELECT * FROM test_wl5522.t1;
|
||||
SELECT * FROM t1;
|
||||
|
||||
# Write file to make mysql-test-run.pl start up the server again
|
||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
|
||||
# Execute the statement that causes the crash
|
||||
--error 2013
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
|
||||
--enable_reconnect
|
||||
--source include/wait_until_connected_again.inc
|
||||
@ -89,14 +85,14 @@ ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
SET SESSION debug_dbug="+d,ib_import_before_checkpoint_crash";
|
||||
|
||||
--error ER_TABLESPACE_DISCARDED
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
|
||||
# Don't start up the server right away.
|
||||
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
|
||||
# Execute the statement that causes the crash
|
||||
--error 2013
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
|
||||
# After the above test the results are non-deterministic,
|
||||
# delete the old tablespace files and drop the table,
|
||||
@ -104,7 +100,7 @@ ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
-- source include/wait_until_disconnected.inc
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_unlink_tablespace("test_wl5522", "t1");
|
||||
ib_unlink_tablespace("test", "t1");
|
||||
EOF
|
||||
|
||||
--echo # Restart and reconnect to the server
|
||||
@ -118,95 +114,91 @@ EOF
|
||||
# After the above test the results are non-deterministic, recreate the table
|
||||
# and do a proper import.
|
||||
|
||||
DROP TABLE test_wl5522.t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
SET SESSION innodb_strict_mode=1;
|
||||
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT) ENGINE = Innodb
|
||||
CREATE TABLE t1 (c1 INT) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED;
|
||||
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
CHECK TABLE test_wl5522.t1;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
CHECK TABLE t1;
|
||||
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
|
||||
INSERT INTO test_wl5522.t1 VALUES(400), (500), (600);
|
||||
INSERT INTO t1 VALUES(400), (500), (600);
|
||||
|
||||
SELECT * FROM test_wl5522.t1;
|
||||
SELECT * FROM t1;
|
||||
|
||||
DROP TABLE test_wl5522.t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
# Test handling of internal failure error
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT) ENGINE = Innodb
|
||||
CREATE TABLE t1 (c1 INT) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED;
|
||||
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
|
||||
--error ER_TABLESPACE_DISCARDED
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
# Test failure after reset of space id and LSN in the tablespace
|
||||
SET @saved_debug_dbug = @@SESSION.debug_dbug;
|
||||
SET SESSION debug_dbug="+d,ib_import_internal_error";
|
||||
|
||||
--replace_regex /'.*t1.cfg'/'t1.cfg'/
|
||||
|
||||
--error ER_INTERNAL_ERROR
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
|
||||
DROP TABLE test_wl5522.t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
# Test failure after reset of space id and LSN in the tablespace
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT) ENGINE = Innodb
|
||||
CREATE TABLE t1 (c1 INT) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED;
|
||||
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
|
||||
--error ER_TABLESPACE_DISCARDED
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
# Test failure after reset of space id and LSN in the tablespace
|
||||
SET SESSION debug_dbug="+d,ib_import_reset_space_and_lsn_failure";
|
||||
|
||||
--replace_regex /'.*t1.cfg'/'t1.cfg'/
|
||||
|
||||
--error ER_INTERNAL_ERROR
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
@ -214,16 +206,16 @@ SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
# Test failure after attempting a tablespace open
|
||||
SET SESSION debug_dbug="+d,ib_import_open_tablespace_failure";
|
||||
|
||||
--replace_regex /'.*[\/\\]/'/
|
||||
--replace_result \\ /
|
||||
--error ER_GET_ERRMSG
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
# Test failure after ibuf check
|
||||
@ -231,73 +223,65 @@ SET SESSION debug_dbug="+d,ib_import_check_bitmap_failure";
|
||||
|
||||
# Need proper mapping of error codes :-(
|
||||
--error ER_NOT_KEYFILE
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
# Test failure after adjusting the cluster index root page
|
||||
SET SESSION debug_dbug="+d,ib_import_cluster_root_adjust_failure";
|
||||
|
||||
--error ER_NOT_KEYFILE
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
# Test failure after importing the cluster index
|
||||
SET SESSION debug_dbug="+d,ib_import_cluster_failure";
|
||||
|
||||
--error ER_NOT_KEYFILE
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
# Test failure after importing the secondary index(es)
|
||||
SET SESSION debug_dbug="+d,ib_import_sec_root_adjust_failure";
|
||||
|
||||
--error ER_NOT_KEYFILE
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
DROP TABLE test_wl5522.t1;
|
||||
|
||||
--disable_query_log
|
||||
# Enable metrics for the counters we are going to use
|
||||
set global innodb_monitor_enable = purge_stop_count;
|
||||
set global innodb_monitor_enable = purge_resume_count;
|
||||
set global innodb_monitor_enable = ibuf_merges;
|
||||
set global innodb_monitor_enable = ibuf_merges_insert;
|
||||
--enable_query_log
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Create a large table with delete marked records, disable purge during
|
||||
# the update so that we can test the IMPORT purge code.
|
||||
#
|
||||
CREATE TABLE test_wl5522.t1 (
|
||||
CREATE TABLE t1 (
|
||||
c1 BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 BIGINT,
|
||||
c3 VARCHAR(2048),
|
||||
@ -312,77 +296,52 @@ connect (purge_control,localhost,root);
|
||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||
connection default;
|
||||
|
||||
SET GLOBAL innodb_monitor_reset = ibuf_merges;
|
||||
SET GLOBAL innodb_monitor_reset = ibuf_merges_insert;
|
||||
INSERT INTO t1
|
||||
SELECT 1 + seq, 1 + (seq MOD 4),
|
||||
REPEAT(SUBSTR('abcd', 1 + (seq MOD 4), 1), 2048),
|
||||
REPEAT(SUBSTR('abcd', 1 + (seq MOD 4), 1), 2048)
|
||||
FROM seq_0_to_127;
|
||||
|
||||
INSERT INTO test_wl5522.t1(c2, c3, c4) VALUES
|
||||
(1, REPEAT('a', 2048), REPEAT('a', 2048)),
|
||||
(2, REPEAT('b', 2048), REPEAT('b', 2048)),
|
||||
(3, REPEAT('c', 2048), REPEAT('c', 2048)),
|
||||
(4, REPEAT('d', 2048), REPEAT('d', 2048));
|
||||
DELETE FROM t1 WHERE c2 = 1;
|
||||
|
||||
INSERT INTO test_wl5522.t1(c2, c3, c4) SELECT c2, c3, c4 FROM test_wl5522.t1;
|
||||
INSERT INTO test_wl5522.t1(c2, c3, c4) SELECT c2, c3, c4 FROM test_wl5522.t1;
|
||||
INSERT INTO test_wl5522.t1(c2, c3, c4) SELECT c2, c3, c4 FROM test_wl5522.t1;
|
||||
INSERT INTO test_wl5522.t1(c2, c3, c4) SELECT c2, c3, c4 FROM test_wl5522.t1;
|
||||
INSERT INTO test_wl5522.t1(c2, c3, c4) SELECT c2, c3, c4 FROM test_wl5522.t1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c2 = c2 + c1;
|
||||
UPDATE t1 SET c3 = REPEAT("c2", 1024);
|
||||
UPDATE t1 SET c4 = REPEAT("c4", 1024);
|
||||
|
||||
DELETE FROM test_wl5522.t1 WHERE c2 = 1;
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c2 = c2 + c1;
|
||||
UPDATE test_wl5522.t1 SET c3 = REPEAT("c2", 1024);
|
||||
UPDATE test_wl5522.t1 SET c4 = REPEAT("c4", 1024);
|
||||
|
||||
SHOW CREATE TABLE test_wl5522.t1;
|
||||
|
||||
SELECT c1, c2 FROM test_wl5522.t1;
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
SELECT SUM(c2) FROM test_wl5522.t1;
|
||||
|
||||
SELECT name
|
||||
FROM information_schema.innodb_metrics
|
||||
WHERE name = 'ibuf_merges_insert' AND count = 0;
|
||||
|
||||
FLUSH TABLES test_wl5522.t1 FOR EXPORT;
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_backup_tablespaces("test_wl5522", "t1");
|
||||
ib_backup_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
UNLOCK TABLES;
|
||||
|
||||
SELECT name
|
||||
FROM information_schema.innodb_metrics
|
||||
WHERE name = 'ibuf_merges' AND count > 0;
|
||||
|
||||
SELECT name
|
||||
FROM information_schema.innodb_metrics
|
||||
WHERE name = 'ibuf_merges_inserts' AND count > 0;
|
||||
|
||||
# Enable normal operation
|
||||
connection purge_control;
|
||||
COMMIT;
|
||||
disconnect purge_control;
|
||||
connection default;
|
||||
|
||||
DROP TABLE test_wl5522.t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE test_wl5522.t1 (
|
||||
CREATE TABLE t1 (
|
||||
c1 BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 BIGINT,
|
||||
c3 VARCHAR(2048),
|
||||
@ -392,324 +351,286 @@ CREATE TABLE test_wl5522.t1 (
|
||||
INDEX idx3(c4(512))) Engine=InnoDB
|
||||
ROW_FORMAT=COMPRESSED;
|
||||
|
||||
SELECT c1, c2 FROM test_wl5522.t1;
|
||||
SELECT c1, c2 FROM t1;
|
||||
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
CHECK TABLE test_wl5522.t1;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
CHECK TABLE t1;
|
||||
|
||||
SELECT c1,c2 FROM test_wl5522.t1;
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
SELECT SUM(c2) FROM test_wl5522.t1;
|
||||
SELECT c1,c2 FROM t1;
|
||||
|
||||
SHOW CREATE TABLE test_wl5522.t1;
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
DROP TABLE test_wl5522.t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
####
|
||||
# Create a table and save the tablespace and .cfg file, we need to create
|
||||
# a Btree that has several levels
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
||||
|
||||
INSERT IGNORE INTO test_wl5522.t1 VALUES
|
||||
(100, REPEAT('Karanbir', 899), REPEAT('Ajeeth', 1200));
|
||||
|
||||
INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1;
|
||||
INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1;
|
||||
INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1;
|
||||
INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1;
|
||||
INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1;
|
||||
INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1;
|
||||
INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1;
|
||||
INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1;
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
FLUSH TABLES test_wl5522.t1 FOR EXPORT;
|
||||
INSERT INTO t1
|
||||
SELECT 100, REPEAT('Karanbir', 128), REPEAT('Ajeeth', 1200)
|
||||
FROM seq_1_to_256;
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_backup_tablespaces("test_wl5522", "t1");
|
||||
ib_backup_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
UNLOCK TABLES;
|
||||
|
||||
DROP TABLE test_wl5522.t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
||||
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
|
||||
--error ER_TABLESPACE_DISCARDED
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
SET SESSION debug_dbug="+d,ib_import_trigger_corruption_1";
|
||||
|
||||
--replace_regex /'.*t1.cfg'/'t1.cfg'/
|
||||
|
||||
--error ER_INTERNAL_ERROR
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
|
||||
DROP TABLE test_wl5522.t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_unlink_tablespace("test_wl5522", "t1");
|
||||
ib_unlink_tablespace("test", "t1");
|
||||
EOF
|
||||
|
||||
#
|
||||
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
||||
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
|
||||
--error ER_TABLESPACE_DISCARDED
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
SET SESSION debug_dbug="+d,buf_page_import_corrupt_failure";
|
||||
|
||||
--replace_regex /'.*t1.cfg'/'t1.cfg'/
|
||||
|
||||
# Following alter is failing
|
||||
--error ER_INTERNAL_ERROR
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
|
||||
DROP TABLE test_wl5522.t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_unlink_tablespace("test_wl5522", "t1");
|
||||
ib_unlink_tablespace("test", "t1");
|
||||
EOF
|
||||
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
||||
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
|
||||
--error ER_TABLESPACE_DISCARDED
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
SET SESSION debug_dbug="+d,ib_import_trigger_corruption_2";
|
||||
|
||||
--replace_regex $pathfix
|
||||
|
||||
--error ER_INNODB_INDEX_CORRUPT
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
|
||||
DROP TABLE test_wl5522.t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_unlink_tablespace("test_wl5522", "t1");
|
||||
ib_unlink_tablespace("test", "t1");
|
||||
EOF
|
||||
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
||||
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
|
||||
--error ER_TABLESPACE_DISCARDED
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
SET SESSION debug_dbug="+d,ib_import_trigger_corruption_3";
|
||||
|
||||
--replace_regex /'.*t1.cfg'/'t1.cfg'/
|
||||
|
||||
--error ER_NOT_KEYFILE
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
|
||||
DROP TABLE test_wl5522.t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_unlink_tablespace("test_wl5522", "t1");
|
||||
ib_unlink_tablespace("test", "t1");
|
||||
EOF
|
||||
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
||||
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
|
||||
--error ER_TABLESPACE_DISCARDED
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
|
||||
SET SESSION debug_dbug="+d,ib_import_create_index_failure_1";
|
||||
|
||||
ALTER TABLE test_wl5522.t1 ADD INDEX idx(c1);
|
||||
ALTER TABLE t1 ADD INDEX idx(c1);
|
||||
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
|
||||
DROP TABLE test_wl5522.t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_unlink_tablespace("test_wl5522", "t1");
|
||||
ib_unlink_tablespace("test", "t1");
|
||||
EOF
|
||||
|
||||
#
|
||||
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
||||
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
|
||||
--error ER_TABLESPACE_DISCARDED
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
SET SESSION debug_dbug="+d,fil_space_create_failure";
|
||||
|
||||
--replace_regex /'.*[\/\\]/'/
|
||||
--replace_result \\ /
|
||||
--error ER_GET_ERRMSG
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
|
||||
DROP TABLE test_wl5522.t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_unlink_tablespace("test_wl5522", "t1");
|
||||
ib_unlink_tablespace("test", "t1");
|
||||
EOF
|
||||
|
||||
#
|
||||
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
||||
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
|
||||
--error ER_TABLESPACE_DISCARDED
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
SET SESSION debug_dbug="+d,dict_tf_to_fsp_flags_failure";
|
||||
|
||||
--replace_regex /'.*[\/\\]/'/
|
||||
--replace_result \\ /
|
||||
--error ER_GET_ERRMSG
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
|
||||
DROP TABLE test_wl5522.t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_unlink_tablespace("test_wl5522", "t1");
|
||||
ib_unlink_tablespace("test", "t1");
|
||||
EOF
|
||||
|
||||
#
|
||||
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
||||
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
|
||||
--error ER_TABLESPACE_DISCARDED
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
SET SESSION debug_dbug="+d,fsp_flags_is_valid_failure";
|
||||
|
||||
--replace_regex /'.*t1.cfg'/'t1.cfg'/
|
||||
|
||||
--error ER_INTERNAL_ERROR
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
|
||||
DROP TABLE test_wl5522.t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_unlink_tablespace("test_wl5522", "t1");
|
||||
ib_unlink_tablespace("test", "t1");
|
||||
EOF
|
||||
|
||||
|
||||
DROP DATABASE test_wl5522;
|
||||
|
||||
set global innodb_monitor_disable = all;
|
||||
set global innodb_monitor_reset_all = all;
|
||||
|
||||
-- disable_warnings
|
||||
set global innodb_monitor_enable = default;
|
||||
set global innodb_monitor_disable = default;
|
||||
set global innodb_monitor_reset = default;
|
||||
set global innodb_monitor_reset_all = default;
|
||||
-- enable_warnings
|
||||
|
||||
--disable_query_log
|
||||
call mtr.add_suppression("'Resource temporarily unavailable'");
|
||||
call mtr.add_suppression("Monitor ibuf_merges is already enabled");
|
||||
call mtr.add_suppression("Monitor ibuf_merges_insert is already enabled");
|
||||
call mtr.add_suppression("Got error -1 when reading table '.*'");
|
||||
call mtr.add_suppression("InnoDB: Table '.*' tablespace is set as discarded.");
|
||||
call mtr.add_suppression("InnoDB: Tablespace '.*' exists in the cache.*");
|
||||
call mtr.add_suppression("InnoDB: Tablespace '.*' exists in the cache");
|
||||
call mtr.add_suppression("InnoDB: Freeing existing tablespace '.*' entry from the cache with id.*");
|
||||
call mtr.add_suppression("InnoDB: The table .* doesn't have a corresponding tablespace, it was discarded");
|
||||
call mtr.add_suppression(".*There was an error writing to the meta data file.*");
|
||||
call mtr.add_suppression("There was an error writing to the meta data file");
|
||||
call mtr.add_suppression("InnoDB: Trying to import a tablespace, but could not open the tablespace file");
|
||||
call mtr.add_suppression("Unsupported tablespace format");
|
||||
call mtr.add_suppression("Error in page .* of index \"GEN_CLUST_INDEX\" of table \"test_wl5522\".\"t1\"");
|
||||
call mtr.add_suppression("Page is marked as free");
|
||||
call mtr.add_suppression("t1.ibd: Page .* at offset .* looks corrupted");
|
||||
call mtr.add_suppression("but tablespace with that id or name does not exist");
|
||||
call mtr.add_suppression("Failed to find tablespace for table '\"test_wl5522\".\"t1\"' in the cache");
|
||||
call mtr.add_suppression("Could not find a valid tablespace file for 'test_wl5522.*t1'");
|
||||
call mtr.add_suppression("Could not find a valid tablespace file for '.*t1'");
|
||||
call mtr.add_suppression("Index for table 't1' is corrupt; try to repair it");
|
||||
--enable_query_log
|
||||
|
||||
|
@ -2,8 +2,9 @@
|
||||
--source include/not_embedded.inc
|
||||
|
||||
-- source include/innodb_page_size_small.inc
|
||||
-- source include/have_sequence.inc
|
||||
|
||||
call mtr.add_suppression("InnoDB: Unable to import tablespace .* because it already exists. Please DISCARD the tablespace before IMPORT.");
|
||||
call mtr.add_suppression("InnoDB: Unable to import tablespace .* because it already exists. Please DISCARD the tablespace before IMPORT\\.");
|
||||
|
||||
SET SESSION innodb_strict_mode=1;
|
||||
|
||||
@ -17,17 +18,14 @@ CREATE TABLE t1
|
||||
KEY (b))
|
||||
ENGINE = InnoDB ROW_FORMAT=COMPRESSED ;
|
||||
|
||||
insert into t1 (b, c) values ('Apa', 'Filler........'),
|
||||
CREATE TEMPORARY TABLE t (b char(22),c varchar(255));
|
||||
INSERT INTO t VALUES
|
||||
('Apa', 'Filler........'),
|
||||
('Banan', 'Filler........'), ('Cavalry', '..asdasdfaeraf'),
|
||||
('Devotion', 'asdfuihknaskdf'), ('Evolution', 'lsjndofiabsoibeg');
|
||||
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
|
||||
INSERT INTO t1 (b,c) SELECT b,c FROM t,seq_1_to_128;
|
||||
DROP TEMPORARY TABLE t;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
SELECT * FROM t1 ORDER BY b,a DESC LIMIT 3;
|
||||
SELECT * FROM t1 ORDER BY a DESC LIMIT 3;
|
||||
@ -89,16 +87,11 @@ CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT) ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=2;
|
||||
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
|
||||
--list_files $MYSQLD_DATADIR/test
|
||||
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_backup_tablespaces("test", "t1");
|
||||
@ -140,11 +133,7 @@ CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT) ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
||||
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
|
||||
--list_files $MYSQLD_DATADIR/test
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
@ -159,9 +148,6 @@ UNLOCK TABLES;
|
||||
--list_files $MYSQLD_DATADIR/test
|
||||
|
||||
# Move the LSN forward
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(
|
||||
@ -195,14 +181,9 @@ CREATE TABLE t1(
|
||||
c2 INT, INDEX(c2)) ENGINE=InnoDB
|
||||
ROW_FORMAT=COMPRESSED;
|
||||
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
SELECT COUNT(*) FROM t1 WHERE c2 = 1;
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_backup_tablespaces("test", "t1");
|
||||
@ -211,9 +192,6 @@ EOF
|
||||
UNLOCK TABLES;
|
||||
|
||||
# Move the LSN forward
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(
|
||||
@ -250,14 +228,9 @@ eval CREATE TABLE t1(
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB
|
||||
ROW_FORMAT=COMPRESSED $KEY_BLOCK_SIZE;
|
||||
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
SELECT COUNT(*) FROM t1 WHERE c2 = 1;
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_backup_tablespaces("test", "t1");
|
||||
@ -265,9 +238,6 @@ EOF
|
||||
UNLOCK TABLES;
|
||||
|
||||
# Move the LSN forward
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--replace_result $KEY_BLOCK_SIZE KEY_BLOCK_SIZE=16
|
||||
@ -319,14 +289,7 @@ CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT) ENGINE=InnoDB;
|
||||
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
|
||||
SELECT COUNT(*) FROM t1;
|
||||
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
# This should fail, InnoDB should return a warning
|
||||
@ -347,15 +310,9 @@ CREATE TABLE t1(
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB
|
||||
ROW_FORMAT=COMPRESSED;
|
||||
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1 SELECT seq,1 FROM seq_1_to_16;
|
||||
|
||||
SHOW CREATE TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
|
||||
@ -511,7 +468,7 @@ SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
call mtr.add_suppression("Got error -1 when reading table '.*'");
|
||||
call mtr.add_suppression("InnoDB: Error: tablespace id and flags in file '.*'.*");
|
||||
call mtr.add_suppression("InnoDB: Error: tablespace id and flags in file '.*'");
|
||||
call mtr.add_suppression("InnoDB: The table .* doesn't have a corresponding tablespace, it was discarded");
|
||||
|
||||
# cleanup
|
||||
|
@ -1614,11 +1614,9 @@ longlong Item_func_int_div::val_int()
|
||||
raise_integer_overflow();
|
||||
return res;
|
||||
}
|
||||
|
||||
longlong val0=args[0]->val_int();
|
||||
longlong val1=args[1]->val_int();
|
||||
bool val0_negative, val1_negative, res_negative;
|
||||
ulonglong uval0, uval1, res;
|
||||
|
||||
Longlong_hybrid val0= args[0]->to_longlong_hybrid();
|
||||
Longlong_hybrid val1= args[1]->to_longlong_hybrid();
|
||||
if ((null_value= (args[0]->null_value || args[1]->null_value)))
|
||||
return 0;
|
||||
if (val1 == 0)
|
||||
@ -1627,12 +1625,8 @@ longlong Item_func_int_div::val_int()
|
||||
return 0;
|
||||
}
|
||||
|
||||
val0_negative= !args[0]->unsigned_flag && val0 < 0;
|
||||
val1_negative= !args[1]->unsigned_flag && val1 < 0;
|
||||
res_negative= val0_negative != val1_negative;
|
||||
uval0= (ulonglong) (val0_negative ? -val0 : val0);
|
||||
uval1= (ulonglong) (val1_negative ? -val1 : val1);
|
||||
res= uval0 / uval1;
|
||||
bool res_negative= val0.neg() != val1.neg();
|
||||
ulonglong res= val0.abs() / val1.abs();
|
||||
if (res_negative)
|
||||
{
|
||||
if (res > (ulonglong) LONGLONG_MAX)
|
||||
@ -1657,11 +1651,8 @@ bool Item_func_int_div::fix_length_and_dec()
|
||||
longlong Item_func_mod::int_op()
|
||||
{
|
||||
DBUG_ASSERT(fixed == 1);
|
||||
longlong val0= args[0]->val_int();
|
||||
longlong val1= args[1]->val_int();
|
||||
bool val0_negative, val1_negative;
|
||||
ulonglong uval0, uval1;
|
||||
ulonglong res;
|
||||
Longlong_hybrid val0= args[0]->to_longlong_hybrid();
|
||||
Longlong_hybrid val1= args[1]->to_longlong_hybrid();
|
||||
|
||||
if ((null_value= args[0]->null_value || args[1]->null_value))
|
||||
return 0; /* purecov: inspected */
|
||||
@ -1676,13 +1667,9 @@ longlong Item_func_mod::int_op()
|
||||
LONGLONG_MIN by -1 generates SIGFPE, we calculate using unsigned values and
|
||||
then adjust the sign appropriately.
|
||||
*/
|
||||
val0_negative= !args[0]->unsigned_flag && val0 < 0;
|
||||
val1_negative= !args[1]->unsigned_flag && val1 < 0;
|
||||
uval0= (ulonglong) (val0_negative ? -val0 : val0);
|
||||
uval1= (ulonglong) (val1_negative ? -val1 : val1);
|
||||
res= uval0 % uval1;
|
||||
return check_integer_overflow(val0_negative ? -(longlong) res : res,
|
||||
!val0_negative);
|
||||
ulonglong res= val0.abs() % val1.abs();
|
||||
return check_integer_overflow(val0.neg() ? -(longlong) res : res,
|
||||
!val0.neg());
|
||||
}
|
||||
|
||||
double Item_func_mod::real_op()
|
||||
|
31
sql/log.cc
31
sql/log.cc
@ -10815,7 +10815,6 @@ maria_declare_plugin(binlog)
|
||||
maria_declare_plugin_end;
|
||||
|
||||
#ifdef WITH_WSREP
|
||||
#include "wsrep_trans_observer.h"
|
||||
#include "wsrep_mysqld.h"
|
||||
|
||||
IO_CACHE *wsrep_get_trans_cache(THD * thd)
|
||||
@ -10838,33 +10837,33 @@ void wsrep_thd_binlog_trx_reset(THD * thd)
|
||||
/*
|
||||
todo: fix autocommit select to not call the caller
|
||||
*/
|
||||
if (thd_get_ha_data(thd, binlog_hton) != NULL)
|
||||
binlog_cache_mngr *const cache_mngr=
|
||||
(binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
|
||||
if (cache_mngr)
|
||||
{
|
||||
binlog_cache_mngr *const cache_mngr=
|
||||
(binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
|
||||
if (cache_mngr)
|
||||
cache_mngr->reset(false, true);
|
||||
if (!cache_mngr->stmt_cache.empty())
|
||||
{
|
||||
cache_mngr->reset(false, true);
|
||||
if (!cache_mngr->stmt_cache.empty())
|
||||
{
|
||||
WSREP_DEBUG("pending events in stmt cache, sql: %s", thd->query());
|
||||
cache_mngr->stmt_cache.reset();
|
||||
}
|
||||
WSREP_DEBUG("pending events in stmt cache, sql: %s", thd->query());
|
||||
cache_mngr->stmt_cache.reset();
|
||||
}
|
||||
}
|
||||
thd->clear_binlog_table_maps();
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
||||
void thd_binlog_rollback_stmt(THD * thd)
|
||||
void wsrep_thd_binlog_stmt_rollback(THD * thd)
|
||||
{
|
||||
WSREP_DEBUG("thd_binlog_rollback_stmt connection: %llu",
|
||||
thd->thread_id);
|
||||
DBUG_ENTER("wsrep_thd_binlog_stmt_rollback");
|
||||
WSREP_DEBUG("wsrep_thd_binlog_stmt_rollback");
|
||||
binlog_cache_mngr *const cache_mngr=
|
||||
(binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
|
||||
if (cache_mngr)
|
||||
cache_mngr->trx_cache.set_prev_position(MY_OFF_T_UNDEF);
|
||||
{
|
||||
thd->binlog_remove_pending_rows_event(TRUE, TRUE);
|
||||
cache_mngr->stmt_cache.reset();
|
||||
}
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
bool wsrep_stmt_rollback_is_safe(THD* thd)
|
||||
|
@ -1223,6 +1223,7 @@ static inline TC_LOG *get_tc_log_implementation()
|
||||
#ifdef WITH_WSREP
|
||||
IO_CACHE* wsrep_get_trans_cache(THD *);
|
||||
void wsrep_thd_binlog_trx_reset(THD * thd);
|
||||
void wsrep_thd_binlog_stmt_rollback(THD * thd);
|
||||
#endif /* WITH_WSREP */
|
||||
|
||||
class Gtid_list_log_event;
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
Copyright (c) 2000, 2018, Oracle and/or its affiliates.
|
||||
Copyright (c) 2009, 2019, MariaDB
|
||||
Copyright (c) 2009, 2020, MariaDB
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -1093,7 +1093,7 @@ void Rows_log_event::change_to_flashback_event(PRINT_EVENT_INFO *print_event_inf
|
||||
Table_map_log_event *map;
|
||||
table_def *td;
|
||||
DYNAMIC_ARRAY rows_arr;
|
||||
uchar *swap_buff1, *swap_buff2;
|
||||
uchar *swap_buff1;
|
||||
uchar *rows_pos= rows_buff + m_rows_before_size;
|
||||
|
||||
if (!(map= print_event_info->m_table_map.get_table(m_table_id)) ||
|
||||
@ -1142,7 +1142,7 @@ void Rows_log_event::change_to_flashback_event(PRINT_EVENT_INFO *print_event_inf
|
||||
}
|
||||
value+= length2;
|
||||
|
||||
swap_buff2= (uchar *) my_malloc(PSI_NOT_INSTRUMENTED, length2, MYF(0));
|
||||
void *swap_buff2= my_malloc(PSI_NOT_INSTRUMENTED, length2, MYF(0));
|
||||
if (!swap_buff2)
|
||||
{
|
||||
fprintf(stderr, "\nError: Out of memory. "
|
||||
@ -1150,21 +1150,14 @@ void Rows_log_event::change_to_flashback_event(PRINT_EVENT_INFO *print_event_inf
|
||||
exit(1);
|
||||
}
|
||||
memcpy(swap_buff2, start_pos + length1, length2); // WHERE part
|
||||
}
|
||||
|
||||
if (ev_type == UPDATE_ROWS_EVENT ||
|
||||
ev_type == UPDATE_ROWS_EVENT_V1)
|
||||
{
|
||||
/* Swap SET and WHERE part */
|
||||
memcpy(start_pos, swap_buff2, length2);
|
||||
memcpy(start_pos + length2, swap_buff1, length1);
|
||||
my_free(swap_buff2);
|
||||
}
|
||||
|
||||
/* Free tmp buffers */
|
||||
my_free(swap_buff1);
|
||||
if (ev_type == UPDATE_ROWS_EVENT ||
|
||||
ev_type == UPDATE_ROWS_EVENT_V1)
|
||||
my_free(swap_buff2);
|
||||
|
||||
/* Copying one row into a buff, and pushing into the array */
|
||||
LEX_STRING one_row;
|
||||
|
@ -7515,9 +7515,9 @@ SHOW_VAR status_vars[]= {
|
||||
{"Key", (char*) &show_default_keycache, SHOW_FUNC},
|
||||
{"Last_query_cost", (char*) offsetof(STATUS_VAR, last_query_cost), SHOW_DOUBLE_STATUS},
|
||||
{"Max_statement_time_exceeded", (char*) offsetof(STATUS_VAR, max_statement_time_exceeded), SHOW_LONG_STATUS},
|
||||
{"Master_gtid_wait_count", (char*) offsetof(STATUS_VAR, master_gtid_wait_count), SHOW_LONGLONG_STATUS},
|
||||
{"Master_gtid_wait_timeouts", (char*) offsetof(STATUS_VAR, master_gtid_wait_timeouts), SHOW_LONGLONG_STATUS},
|
||||
{"Master_gtid_wait_time", (char*) offsetof(STATUS_VAR, master_gtid_wait_time), SHOW_LONGLONG_STATUS},
|
||||
{"Master_gtid_wait_count", (char*) offsetof(STATUS_VAR, master_gtid_wait_count), SHOW_LONG_STATUS},
|
||||
{"Master_gtid_wait_timeouts", (char*) offsetof(STATUS_VAR, master_gtid_wait_timeouts), SHOW_LONG_STATUS},
|
||||
{"Master_gtid_wait_time", (char*) offsetof(STATUS_VAR, master_gtid_wait_time), SHOW_LONG_STATUS},
|
||||
{"Max_used_connections", (char*) &max_used_connections, SHOW_LONG},
|
||||
{"Memory_used", (char*) &show_memory_used, SHOW_SIMPLE_FUNC},
|
||||
{"Memory_used_initial", (char*) &start_memory_used, SHOW_LONGLONG},
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* Copyright (c) 2013, Kristian Nielsen and MariaDB Services Ab.
|
||||
Copyright (c) 2020, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -2565,7 +2566,8 @@ gtid_waiting::wait_for_pos(THD *thd, String *gtid_str, longlong timeout_us)
|
||||
/* fall through */
|
||||
case 0:
|
||||
status_var_add(thd->status_var.master_gtid_wait_time,
|
||||
microsecond_interval_timer() - before);
|
||||
static_cast<ulong>
|
||||
(microsecond_interval_timer() - before));
|
||||
}
|
||||
my_free(wait_pos);
|
||||
return err;
|
||||
|
@ -167,6 +167,7 @@ extern "C" void wsrep_handle_SR_rollback(THD *bf_thd,
|
||||
THD *victim_thd)
|
||||
{
|
||||
DBUG_ASSERT(victim_thd);
|
||||
DBUG_ASSERT(wsrep_thd_is_SR(victim_thd));
|
||||
if (!victim_thd || !wsrep_on(bf_thd)) return;
|
||||
|
||||
WSREP_DEBUG("handle rollback, for deadlock: thd %llu trx_id %" PRIu64 " frags %zu conf %s",
|
||||
|
@ -50,6 +50,98 @@ double my_double_round(double value, longlong dec, bool dec_unsigned,
|
||||
|
||||
#define MAX_DIGITS_IN_DOUBLE MY_GCVT_MAX_FIELD_WIDTH
|
||||
|
||||
int MBR::within(const MBR *mbr)
|
||||
{
|
||||
/*
|
||||
We have to take into account the 'dimension' of
|
||||
the MBR, where the dimension of a single point is 0,
|
||||
the dimesion of an vertical or horizontal line is 1,
|
||||
and finally the dimension of the solid rectangle is 2.
|
||||
*/
|
||||
|
||||
int dim1= dimension();
|
||||
int dim2= mbr->dimension();
|
||||
|
||||
DBUG_ASSERT(dim1 >= 0 && dim1 <= 2 && dim2 >= 0 && dim2 <= 2);
|
||||
|
||||
/*
|
||||
Either/both of the two operands can degrade to a point or a
|
||||
horizontal/vertical line segment, and we have to treat such cases
|
||||
separately.
|
||||
*/
|
||||
switch (dim1)
|
||||
{
|
||||
case 0:
|
||||
DBUG_ASSERT(xmin == xmax && ymin == ymax);
|
||||
switch (dim2)
|
||||
{
|
||||
case 0:
|
||||
DBUG_ASSERT(mbr->xmin == mbr->xmax && mbr->ymin == mbr->ymax);
|
||||
return equals(mbr);
|
||||
break;
|
||||
case 1:
|
||||
DBUG_ASSERT((mbr->xmin == mbr->xmax && mbr->ymin != mbr->ymax) ||
|
||||
(mbr->ymin == mbr->ymax && mbr->xmin != mbr->xmax));
|
||||
return ((xmin > mbr->xmin && xmin < mbr->xmax && ymin == mbr->ymin) ||
|
||||
(ymin > mbr->ymin && ymin < mbr->ymax && xmin == mbr->xmin));
|
||||
break;
|
||||
case 2:
|
||||
DBUG_ASSERT(mbr->xmin != mbr->xmax && mbr->ymin != mbr->ymax);
|
||||
return (xmin > mbr->xmin && xmax < mbr->xmax &&
|
||||
ymin > mbr->ymin && ymax < mbr->ymax);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
DBUG_ASSERT((xmin == xmax && ymin != ymax) ||
|
||||
(ymin == ymax && xmin != xmax));
|
||||
switch (dim2)
|
||||
{
|
||||
case 0:
|
||||
DBUG_ASSERT(mbr->xmin == mbr->xmax && mbr->ymin == mbr->ymax);
|
||||
return 0;
|
||||
break;
|
||||
case 1:
|
||||
DBUG_ASSERT((mbr->xmin == mbr->xmax && mbr->ymin != mbr->ymax) ||
|
||||
(mbr->ymin == mbr->ymax && mbr->xmin != mbr->xmax));
|
||||
return ((xmin == xmax && mbr->xmin == mbr->xmax && mbr->xmin == xmin &&
|
||||
mbr->ymin <= ymin && mbr->ymax >= ymax) ||
|
||||
(ymin == ymax && mbr->ymin == mbr->ymax && mbr->ymin == ymin &&
|
||||
mbr->xmin <= xmin && mbr->xmax >= xmax));
|
||||
break;
|
||||
case 2:
|
||||
DBUG_ASSERT(mbr->xmin != mbr->xmax && mbr->ymin != mbr->ymax);
|
||||
return ((xmin == xmax && xmin > mbr->xmin && xmax < mbr->xmax &&
|
||||
ymin >= mbr->ymin && ymax <= mbr->ymax) ||
|
||||
(ymin == ymax && ymin > mbr->ymin && ymax < mbr->ymax &&
|
||||
xmin >= mbr->xmin && xmax <= mbr->xmax));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
DBUG_ASSERT(xmin != xmax && ymin != ymax);
|
||||
switch (dim2)
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
return 0;
|
||||
break;
|
||||
case 2:
|
||||
DBUG_ASSERT(mbr->xmin != mbr->xmax && mbr->ymin != mbr->ymax);
|
||||
return ((mbr->xmin <= xmin) && (mbr->ymin <= ymin) &&
|
||||
(mbr->xmax >= xmax) && (mbr->ymax >= ymax));
|
||||
break;
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// Never reached.
|
||||
DBUG_ASSERT(false);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/***************************** Gis_class_info *******************************/
|
||||
|
||||
String Geometry::bad_geometry_data("Bad object", &my_charset_bin);
|
||||
|
@ -145,12 +145,7 @@ struct MBR
|
||||
(mbr->xmax >= xmin && mbr->xmax <= xmax)));
|
||||
}
|
||||
|
||||
int within(const MBR *mbr)
|
||||
{
|
||||
/* The following should be safe, even if we compare doubles */
|
||||
return ((mbr->xmin <= xmin) && (mbr->ymin <= ymin) &&
|
||||
(mbr->xmax >= xmax) && (mbr->ymax >= ymax));
|
||||
}
|
||||
int within(const MBR *mbr);
|
||||
|
||||
int contains(const MBR *mbr)
|
||||
{
|
||||
|
@ -913,9 +913,9 @@ typedef struct system_status_var
|
||||
ulong feature_window_functions; /* +1 when window functions are used */
|
||||
|
||||
/* From MASTER_GTID_WAIT usage */
|
||||
ulonglong master_gtid_wait_timeouts; /* Number of timeouts */
|
||||
ulonglong master_gtid_wait_time; /* Time in microseconds */
|
||||
ulonglong master_gtid_wait_count;
|
||||
ulong master_gtid_wait_timeouts; /* Number of timeouts */
|
||||
ulong master_gtid_wait_time; /* Time in microseconds */
|
||||
ulong master_gtid_wait_count;
|
||||
|
||||
ulong empty_queries;
|
||||
ulong access_denied_errors;
|
||||
|
@ -1,6 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2015 MariaDB Foundation
|
||||
Copyright (c) 2019 MariaDB
|
||||
Copyright (c) 2015, 2020, MariaDB
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -862,9 +861,18 @@ int Field_geom::store(const char *from, size_t length, CHARSET_INFO *cs)
|
||||
if (!tab_name)
|
||||
tab_name= "";
|
||||
|
||||
Geometry_buffer buffer;
|
||||
Geometry *geom= NULL;
|
||||
String wkt;
|
||||
const char *dummy;
|
||||
wkt.set_charset(&my_charset_latin1);
|
||||
if (!(geom= Geometry::construct(&buffer, from, uint32(length))) ||
|
||||
geom->as_wkt(&wkt, &dummy))
|
||||
goto err;
|
||||
|
||||
my_error(ER_TRUNCATED_WRONG_VALUE_FOR_FIELD, MYF(0),
|
||||
Geometry::ci_collection[m_type_handler->geometry_type()]->m_name.str,
|
||||
Geometry::ci_collection[wkb_type]->m_name.str,
|
||||
wkt.c_ptr(),
|
||||
db, tab_name, field_name.str,
|
||||
(ulong) table->in_use->get_stmt_da()->
|
||||
current_row_for_warning());
|
||||
|
@ -109,6 +109,26 @@ public:
|
||||
*/
|
||||
return cmp_signed(other);
|
||||
}
|
||||
bool operator==(const Longlong_hybrid &nr) const
|
||||
{
|
||||
return cmp(nr) == 0;
|
||||
}
|
||||
bool operator==(ulonglong nr) const
|
||||
{
|
||||
return cmp(Longlong_hybrid((longlong) nr, true)) == 0;
|
||||
}
|
||||
bool operator==(uint nr) const
|
||||
{
|
||||
return cmp(Longlong_hybrid((longlong) nr, true)) == 0;
|
||||
}
|
||||
bool operator==(longlong nr) const
|
||||
{
|
||||
return cmp(Longlong_hybrid(nr, false)) == 0;
|
||||
}
|
||||
bool operator==(int nr) const
|
||||
{
|
||||
return cmp(Longlong_hybrid(nr, false)) == 0;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
@ -228,40 +228,6 @@ void wsrep_dump_rbr_buf(THD *thd, const void* rbr_buf, size_t buf_len)
|
||||
free(filename);
|
||||
}
|
||||
|
||||
/*
|
||||
wsrep exploits binlog's caches even if binlogging itself is not
|
||||
activated. In such case connection close needs calling
|
||||
actual binlog's method.
|
||||
Todo: split binlog hton from its caches to use ones by wsrep
|
||||
without referring to binlog's stuff.
|
||||
*/
|
||||
int wsrep_binlog_close_connection(THD* thd)
|
||||
{
|
||||
DBUG_ENTER("wsrep_binlog_close_connection");
|
||||
if (thd_get_ha_data(thd, binlog_hton) != NULL)
|
||||
binlog_hton->close_connection (binlog_hton, thd);
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
int wsrep_binlog_savepoint_set(THD *thd, void *sv)
|
||||
{
|
||||
if (!wsrep_emulate_bin_log) return 0;
|
||||
int rcode= binlog_hton->savepoint_set(binlog_hton, thd, sv);
|
||||
return rcode;
|
||||
}
|
||||
|
||||
int wsrep_binlog_savepoint_rollback(THD *thd, void *sv)
|
||||
{
|
||||
if (!wsrep_emulate_bin_log) return 0;
|
||||
int rcode= binlog_hton->savepoint_rollback(binlog_hton, thd, sv);
|
||||
return rcode;
|
||||
}
|
||||
|
||||
void thd_binlog_flush_pending_rows_event(THD *thd, bool stmt_end)
|
||||
{
|
||||
thd->binlog_flush_pending_rows_event(stmt_end);
|
||||
}
|
||||
|
||||
/* Dump replication buffer along with header to a file. */
|
||||
void wsrep_dump_rbr_buf_with_header(THD *thd, const void *rbr_buf,
|
||||
size_t buf_len)
|
||||
@ -343,8 +309,6 @@ cleanup1:
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
#include "log_event.h"
|
||||
|
||||
int wsrep_write_skip_event(THD* thd)
|
||||
{
|
||||
DBUG_ENTER("wsrep_write_skip_event");
|
||||
|
@ -50,8 +50,6 @@ void wsrep_dump_rbr_buf(THD *thd, const void* rbr_buf, size_t buf_len);
|
||||
void wsrep_dump_rbr_buf_with_header(THD *thd, const void *rbr_buf,
|
||||
size_t buf_len);
|
||||
|
||||
int wsrep_binlog_close_connection(THD* thd);
|
||||
|
||||
/**
|
||||
Write a skip event into binlog.
|
||||
|
||||
|
@ -534,11 +534,6 @@ extern void
|
||||
wsrep_handle_mdl_conflict(MDL_context *requestor_ctx,
|
||||
MDL_ticket *ticket,
|
||||
const MDL_key *key);
|
||||
IO_CACHE * get_trans_log(THD * thd);
|
||||
bool wsrep_trans_cache_is_empty(THD *thd);
|
||||
void thd_binlog_flush_pending_rows_event(THD *thd, bool stmt_end);
|
||||
void thd_binlog_rollback_stmt(THD * thd);
|
||||
void thd_binlog_trx_reset(THD * thd);
|
||||
|
||||
enum wsrep_thread_type {
|
||||
WSREP_APPLIER_THREAD=1,
|
||||
|
@ -361,15 +361,22 @@ static inline int wsrep_before_rollback(THD* thd, bool all)
|
||||
int ret= 0;
|
||||
if (wsrep_is_active(thd))
|
||||
{
|
||||
if (!all && thd->in_active_multi_stmt_transaction() &&
|
||||
thd->wsrep_trx().is_streaming() &&
|
||||
!wsrep_stmt_rollback_is_safe(thd))
|
||||
if (!all && thd->in_active_multi_stmt_transaction())
|
||||
{
|
||||
/* Non-safe statement rollback during SR multi statement
|
||||
transasction. Self abort the transaction, the actual rollback
|
||||
and error handling will be done in after statement phase. */
|
||||
wsrep_thd_self_abort(thd);
|
||||
ret= 0;
|
||||
if (wsrep_emulate_bin_log)
|
||||
{
|
||||
wsrep_thd_binlog_stmt_rollback(thd);
|
||||
}
|
||||
|
||||
if (thd->wsrep_trx().is_streaming() &&
|
||||
!wsrep_stmt_rollback_is_safe(thd))
|
||||
{
|
||||
/* Non-safe statement rollback during SR multi statement
|
||||
transasction. Self abort the transaction, the actual rollback
|
||||
and error handling will be done in after statement phase. */
|
||||
wsrep_thd_self_abort(thd);
|
||||
ret= 0;
|
||||
}
|
||||
}
|
||||
else if (wsrep_is_real(thd, all) &&
|
||||
thd->wsrep_trx().state() != wsrep::transaction::s_aborted)
|
||||
|
@ -2319,7 +2319,7 @@ withdraw_retry:
|
||||
ut_zalloc_nokey_nofatal(new_chunks_size));
|
||||
|
||||
DBUG_EXECUTE_IF("buf_pool_resize_chunk_null",
|
||||
{ ut_free(new_chunks); new_chunks= nullptr; });
|
||||
ut_free(new_chunks); new_chunks= nullptr; );
|
||||
|
||||
if (!new_chunks) {
|
||||
ib::error() << "failed to allocate"
|
||||
|
@ -747,9 +747,12 @@ buf_read_recv_pages(
|
||||
for (ulint i = 0; i < n_stored; i++) {
|
||||
const page_id_t cur_page_id(space_id, page_nos[i]);
|
||||
|
||||
for (ulint count = 0, limit = recv_sys.max_blocks() / 2;
|
||||
buf_pool.n_pend_reads >= limit; ) {
|
||||
ulint limit = 0;
|
||||
for (ulint j = 0; j < buf_pool.n_chunks; j++) {
|
||||
limit += buf_pool.chunks[j].size / 2;
|
||||
}
|
||||
|
||||
for (ulint count = 0; buf_pool.n_pend_reads >= limit; ) {
|
||||
os_thread_sleep(10000);
|
||||
|
||||
if (!(++count % 1000)) {
|
||||
|
@ -1495,7 +1495,7 @@ dict_table_rename_in_cache(
|
||||
return(DB_OUT_OF_MEMORY);
|
||||
}
|
||||
|
||||
fil_delete_tablespace(table->space_id);
|
||||
fil_delete_tablespace(table->space_id, !table->space);
|
||||
|
||||
/* Delete any temp file hanging around. */
|
||||
if (os_file_status(filepath, &exists, &ftype)
|
||||
|
@ -2253,14 +2253,9 @@ bool fil_table_accessible(const dict_table_t* table)
|
||||
|
||||
/** Delete a tablespace and associated .ibd file.
|
||||
@param[in] id tablespace identifier
|
||||
@param[in] if_exists whether to ignore missing tablespace
|
||||
@return DB_SUCCESS or error */
|
||||
dberr_t
|
||||
fil_delete_tablespace(
|
||||
ulint id
|
||||
#ifdef BTR_CUR_HASH_ADAPT
|
||||
, bool drop_ahi /*!< whether to drop the adaptive hash index */
|
||||
#endif /* BTR_CUR_HASH_ADAPT */
|
||||
)
|
||||
dberr_t fil_delete_tablespace(ulint id, bool if_exists)
|
||||
{
|
||||
char* path = 0;
|
||||
fil_space_t* space = 0;
|
||||
@ -2271,10 +2266,11 @@ fil_delete_tablespace(
|
||||
id, FIL_OPERATION_DELETE, &space, &path);
|
||||
|
||||
if (err != DB_SUCCESS) {
|
||||
|
||||
ib::error() << "Cannot delete tablespace " << id
|
||||
<< " because it is not found in the tablespace"
|
||||
" memory cache.";
|
||||
if (!if_exists) {
|
||||
ib::error() << "Cannot delete tablespace " << id
|
||||
<< " because it is not found"
|
||||
" in the tablespace memory cache.";
|
||||
}
|
||||
|
||||
return(err);
|
||||
}
|
||||
|
@ -14881,7 +14881,7 @@ ha_innobase::optimize(
|
||||
calls to OPTIMIZE, which is undesirable. */
|
||||
bool try_alter = true;
|
||||
|
||||
if (srv_defragment) {
|
||||
if (!m_prebuilt->table->is_temporary() && srv_defragment) {
|
||||
int err= defragment_table(
|
||||
m_prebuilt->table->name.m_name, NULL, false);
|
||||
|
||||
|
@ -1187,14 +1187,9 @@ bool fil_table_accessible(const dict_table_t* table)
|
||||
|
||||
/** Delete a tablespace and associated .ibd file.
|
||||
@param[in] id tablespace identifier
|
||||
@param[in] if_exists whether to ignore missing tablespace
|
||||
@return DB_SUCCESS or error */
|
||||
dberr_t
|
||||
fil_delete_tablespace(
|
||||
ulint id
|
||||
#ifdef BTR_CUR_HASH_ADAPT
|
||||
, bool drop_ahi = false /*!< whether to drop the adaptive hash index */
|
||||
#endif /* BTR_CUR_HASH_ADAPT */
|
||||
);
|
||||
dberr_t fil_delete_tablespace(ulint id, bool if_exists= false);
|
||||
|
||||
/** Prepare to truncate an undo tablespace.
|
||||
@param[in] space_id undo tablespace id
|
||||
|
@ -307,15 +307,10 @@ private:
|
||||
|
||||
void open_log_files_if_needed();
|
||||
|
||||
/** Maximum number of buffer pool blocks to allocate for redo log records */
|
||||
ulint max_log_blocks;
|
||||
|
||||
/** Base node of the redo block list (up to max_log_blocks)
|
||||
/** Base node of the redo block list.
|
||||
List elements are linked via buf_block_t::unzip_LRU. */
|
||||
UT_LIST_BASE_NODE_T(buf_block_t) blocks;
|
||||
public:
|
||||
/** @return the maximum number of buffer pool blocks for log records */
|
||||
ulint max_blocks() const { return max_log_blocks; }
|
||||
/** Check whether the number of read redo log blocks exceeds the maximum.
|
||||
Store last_stored_lsn if the recovery is not in the last phase.
|
||||
@param[in,out] store whether to store page operations
|
||||
|
@ -202,18 +202,6 @@ row_merge_file_destroy_low(
|
||||
/*=======================*/
|
||||
const pfs_os_file_t& fd); /*!< in: merge file descriptor */
|
||||
|
||||
/*********************************************************************//**
|
||||
Provide a new pathname for a table that is being renamed if it belongs to
|
||||
a file-per-table tablespace. The caller is responsible for freeing the
|
||||
memory allocated for the return value.
|
||||
@return new pathname of tablespace file, or NULL if space = 0 */
|
||||
char*
|
||||
row_make_new_pathname(
|
||||
/*==================*/
|
||||
dict_table_t* table, /*!< in: table to be renamed */
|
||||
const char* new_name) /*!< in: new name */
|
||||
MY_ATTRIBUTE((nonnull, warn_unused_result));
|
||||
|
||||
/*********************************************************************//**
|
||||
Rename an index in the dictionary that was created. The data
|
||||
dictionary must have been locked exclusively by the caller, because
|
||||
|
@ -6754,7 +6754,7 @@ DeadlockChecker::trx_rollback()
|
||||
|
||||
print("*** WE ROLL BACK TRANSACTION (1)\n");
|
||||
#ifdef WITH_WSREP
|
||||
if (wsrep_on(trx->mysql_thd)) {
|
||||
if (wsrep_on(trx->mysql_thd) && wsrep_thd_is_SR(trx->mysql_thd)) {
|
||||
wsrep_handle_SR_rollback(m_start->mysql_thd, trx->mysql_thd);
|
||||
}
|
||||
#endif
|
||||
@ -6847,7 +6847,8 @@ DeadlockChecker::check_and_resolve(const lock_t* lock, trx_t* trx)
|
||||
|
||||
print("*** WE ROLL BACK TRANSACTION (2)\n");
|
||||
#ifdef WITH_WSREP
|
||||
if (wsrep_on(trx->mysql_thd)) {
|
||||
if (wsrep_on(trx->mysql_thd)
|
||||
&& wsrep_thd_is_SR(trx->mysql_thd)) {
|
||||
wsrep_handle_SR_rollback(trx->mysql_thd,
|
||||
victim_trx->mysql_thd);
|
||||
}
|
||||
|
@ -1008,14 +1008,8 @@ void recv_sys_t::create()
|
||||
apply_log_recs = false;
|
||||
apply_batch_on = false;
|
||||
|
||||
if (buf_pool.is_initialised()) {
|
||||
max_log_blocks = buf_pool.get_n_pages() / 3;
|
||||
} else {
|
||||
ut_ad(srv_operation == SRV_OPERATION_BACKUP
|
||||
|| srv_operation == SRV_OPERATION_RESTORE_DELTA);
|
||||
max_log_blocks = 0;
|
||||
}
|
||||
buf = static_cast<byte*>(ut_malloc_dontdump(RECV_PARSING_BUF_SIZE, PSI_INSTRUMENT_ME));
|
||||
buf = static_cast<byte*>(ut_malloc_dontdump(RECV_PARSING_BUF_SIZE,
|
||||
PSI_INSTRUMENT_ME));
|
||||
len = 0;
|
||||
parse_start_lsn = 0;
|
||||
scanned_lsn = 0;
|
||||
@ -2722,7 +2716,8 @@ Store last_stored_lsn if the recovery is not in the last phase.
|
||||
@return whether the memory is exhausted */
|
||||
inline bool recv_sys_t::is_memory_exhausted(store_t *store)
|
||||
{
|
||||
if (*store == STORE_NO || UT_LIST_GET_LEN(blocks) < max_log_blocks)
|
||||
if (*store == STORE_NO ||
|
||||
UT_LIST_GET_LEN(blocks) * 3 < buf_pool.get_n_pages())
|
||||
return false;
|
||||
if (*store == STORE_YES)
|
||||
last_stored_lsn= recovered_lsn;
|
||||
|
@ -1928,12 +1928,12 @@ os_file_flush_func(
|
||||
/** Retrieves the last error number if an error occurs in a file io function.
|
||||
The number should be retrieved before any other OS calls (because they may
|
||||
overwrite the error number). If the number is not known to this program,
|
||||
the OS error number + 100 is returned.
|
||||
then OS error number + OS_FILE_ERROR_MAX is returned.
|
||||
@param[in] report_all_errors true if we want an error message printed
|
||||
of all errors
|
||||
@param[in] on_error_silent true then don't print any diagnostic
|
||||
to the log
|
||||
@return error number, or OS error number + 100 */
|
||||
@return error number, or OS error number + OS_FILE_ERROR_MAX */
|
||||
static
|
||||
ulint
|
||||
os_file_get_last_error_low(
|
||||
|
@ -4236,22 +4236,6 @@ row_merge_rename_index_to_drop(
|
||||
return(err);
|
||||
}
|
||||
|
||||
/*********************************************************************//**
|
||||
Provide a new pathname for a table that is being renamed if it belongs to
|
||||
a file-per-table tablespace. The caller is responsible for freeing the
|
||||
memory allocated for the return value.
|
||||
@return new pathname of tablespace file, or NULL if space = 0 */
|
||||
char*
|
||||
row_make_new_pathname(
|
||||
/*==================*/
|
||||
dict_table_t* table, /*!< in: table to be renamed */
|
||||
const char* new_name) /*!< in: new name */
|
||||
{
|
||||
ut_ad(!is_system_tablespace(table->space_id));
|
||||
return os_file_make_new_pathname(table->space->chain.start->name,
|
||||
new_name);
|
||||
}
|
||||
|
||||
/** Create the index and load in to the dictionary.
|
||||
@param[in,out] table the index is on this table
|
||||
@param[in] index_def the index definition
|
||||
|
@ -3735,10 +3735,11 @@ do_drop:
|
||||
dict_table_t. */
|
||||
if (DICT_TF_HAS_DATA_DIR(table->flags)) {
|
||||
dict_get_and_save_data_dir_path(table, true);
|
||||
ut_a(table->data_dir_path);
|
||||
ut_ad(table->data_dir_path || !space);
|
||||
filepath = space ? NULL : fil_make_filepath(
|
||||
table->data_dir_path,
|
||||
table->name.m_name, IBD, true);
|
||||
table->name.m_name, IBD,
|
||||
table->data_dir_path != NULL);
|
||||
} else {
|
||||
filepath = space ? NULL : fil_make_filepath(
|
||||
NULL, table->name.m_name, IBD, false);
|
||||
@ -4316,14 +4317,14 @@ row_rename_table_for_mysql(
|
||||
|
||||
/* SYS_TABLESPACES and SYS_DATAFILES need to be updated if
|
||||
the table is in a single-table tablespace. */
|
||||
if (err == DB_SUCCESS
|
||||
&& dict_table_is_file_per_table(table)) {
|
||||
/* Make a new pathname to update SYS_DATAFILES. */
|
||||
if (err != DB_SUCCESS || !dict_table_is_file_per_table(table)) {
|
||||
} else if (table->space) {
|
||||
/* If old path and new path are the same means tablename
|
||||
has not changed and only the database name holding the table
|
||||
has changed so we need to make the complete filepath again. */
|
||||
char* new_path = dict_tables_have_same_db(old_name, new_name)
|
||||
? row_make_new_pathname(table, new_name)
|
||||
? os_file_make_new_pathname(
|
||||
table->space->chain.start->name, new_name)
|
||||
: fil_make_filepath(NULL, new_name, IBD, false);
|
||||
|
||||
info = pars_info_create();
|
||||
|
@ -182,7 +182,8 @@ trx_rollback_to_savepoint(
|
||||
complete rollback */
|
||||
{
|
||||
#ifdef WITH_WSREP
|
||||
if (savept == NULL && wsrep_on(trx->mysql_thd)) {
|
||||
if (savept == NULL && wsrep_on(trx->mysql_thd)
|
||||
&& wsrep_thd_is_SR(trx->mysql_thd)) {
|
||||
wsrep_handle_SR_rollback(NULL, trx->mysql_thd);
|
||||
}
|
||||
#endif /* WITH_WSREP */
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* Copyright (C) 2007 MySQL AB & Sanja Belkin. 2010 Monty Program Ab.
|
||||
Copyright (c) 2020, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -5446,15 +5447,15 @@ static uchar *translog_get_LSN_from_diff(LSN base_lsn, uchar *src, uchar *dst)
|
||||
src + 1 + LSN_STORE_SIZE));
|
||||
DBUG_RETURN(src + 1 + LSN_STORE_SIZE);
|
||||
}
|
||||
rec_offset= LSN_OFFSET(base_lsn) - ((first_byte << 8) + *((uint8*)src));
|
||||
rec_offset= LSN_OFFSET(base_lsn) - ((first_byte << 8) | *((uint8*)src));
|
||||
break;
|
||||
case 1:
|
||||
diff= uint2korr(src);
|
||||
rec_offset= LSN_OFFSET(base_lsn) - ((first_byte << 16) + diff);
|
||||
rec_offset= LSN_OFFSET(base_lsn) - ((first_byte << 16) | diff);
|
||||
break;
|
||||
case 2:
|
||||
diff= uint3korr(src);
|
||||
rec_offset= LSN_OFFSET(base_lsn) - ((first_byte << 24) + diff);
|
||||
rec_offset= LSN_OFFSET(base_lsn) - ((first_byte << 24) | diff);
|
||||
break;
|
||||
case 3:
|
||||
{
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* Copyright (C) 2006 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
|
||||
Copyright (c) 2020, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -1157,10 +1158,10 @@ static void decode_bytes(MARIA_COLUMNDEF *rec,MARIA_BIT_BUFF *bit_buff,
|
||||
bit_buff->error=1;
|
||||
return; /* Can't be right */
|
||||
}
|
||||
bit_buff->current_byte= (bit_buff->current_byte << 32) +
|
||||
((((uint) bit_buff->pos[3])) +
|
||||
(((uint) bit_buff->pos[2]) << 8) +
|
||||
(((uint) bit_buff->pos[1]) << 16) +
|
||||
bit_buff->current_byte= (bit_buff->current_byte << 32) |
|
||||
((((uint) bit_buff->pos[3])) |
|
||||
(((uint) bit_buff->pos[2]) << 8) |
|
||||
(((uint) bit_buff->pos[1]) << 16) |
|
||||
(((uint) bit_buff->pos[0]) << 24));
|
||||
bit_buff->pos+=4;
|
||||
bits+=32;
|
||||
@ -1251,23 +1252,23 @@ static void decode_bytes(MARIA_COLUMNDEF *rec, MARIA_BIT_BUFF *bit_buff,
|
||||
return; /* Can't be right */
|
||||
}
|
||||
#if BITS_SAVED == 32
|
||||
bit_buff->current_byte= (bit_buff->current_byte << 24) +
|
||||
(((uint) ((uchar) bit_buff->pos[2]))) +
|
||||
(((uint) ((uchar) bit_buff->pos[1])) << 8) +
|
||||
bit_buff->current_byte= (bit_buff->current_byte << 24) |
|
||||
(((uint) ((uchar) bit_buff->pos[2]))) |
|
||||
(((uint) ((uchar) bit_buff->pos[1])) << 8) |
|
||||
(((uint) ((uchar) bit_buff->pos[0])) << 16);
|
||||
bit_buff->pos+=3;
|
||||
bits+=24;
|
||||
#else
|
||||
if (bits) /* We must have at leasts 9 bits */
|
||||
{
|
||||
bit_buff->current_byte= (bit_buff->current_byte << 8) +
|
||||
bit_buff->current_byte= (bit_buff->current_byte << 8) |
|
||||
(uint) ((uchar) bit_buff->pos[0]);
|
||||
bit_buff->pos++;
|
||||
bits+=8;
|
||||
}
|
||||
else
|
||||
{
|
||||
bit_buff->current_byte= ((uint) ((uchar) bit_buff->pos[0]) << 8) +
|
||||
bit_buff->current_byte= ((uint) ((uchar) bit_buff->pos[0]) << 8) |
|
||||
((uint) ((uchar) bit_buff->pos[1]));
|
||||
bit_buff->pos+=2;
|
||||
bits+=16;
|
||||
@ -1291,14 +1292,14 @@ static void decode_bytes(MARIA_COLUMNDEF *rec, MARIA_BIT_BUFF *bit_buff,
|
||||
if (bits < 8)
|
||||
{ /* We don't need to check end */
|
||||
#if BITS_SAVED == 32
|
||||
bit_buff->current_byte= (bit_buff->current_byte << 24) +
|
||||
(((uint) ((uchar) bit_buff->pos[2]))) +
|
||||
(((uint) ((uchar) bit_buff->pos[1])) << 8) +
|
||||
bit_buff->current_byte= (bit_buff->current_byte << 24) |
|
||||
(((uint) ((uchar) bit_buff->pos[2]))) |
|
||||
(((uint) ((uchar) bit_buff->pos[1])) << 8) |
|
||||
(((uint) ((uchar) bit_buff->pos[0])) << 16);
|
||||
bit_buff->pos+=3;
|
||||
bits+=24;
|
||||
#else
|
||||
bit_buff->current_byte= (bit_buff->current_byte << 8) +
|
||||
bit_buff->current_byte= (bit_buff->current_byte << 8) |
|
||||
(uint) ((uchar) bit_buff->pos[0]);
|
||||
bit_buff->pos+=1;
|
||||
bits+=8;
|
||||
@ -1488,25 +1489,25 @@ static void fill_buffer(MARIA_BIT_BUFF *bit_buff)
|
||||
return;
|
||||
}
|
||||
#if BITS_SAVED == 64
|
||||
bit_buff->current_byte= ((((uint) ((uchar) bit_buff->pos[7]))) +
|
||||
(((uint) ((uchar) bit_buff->pos[6])) << 8) +
|
||||
(((uint) ((uchar) bit_buff->pos[5])) << 16) +
|
||||
(((uint) ((uchar) bit_buff->pos[4])) << 24) +
|
||||
bit_buff->current_byte= ((((uint) ((uchar) bit_buff->pos[7]))) |
|
||||
(((uint) ((uchar) bit_buff->pos[6])) << 8) |
|
||||
(((uint) ((uchar) bit_buff->pos[5])) << 16) |
|
||||
(((uint) ((uchar) bit_buff->pos[4])) << 24) |
|
||||
((ulonglong)
|
||||
((((uint) ((uchar) bit_buff->pos[3]))) +
|
||||
(((uint) ((uchar) bit_buff->pos[2])) << 8) +
|
||||
(((uint) ((uchar) bit_buff->pos[1])) << 16) +
|
||||
((((uint) ((uchar) bit_buff->pos[3]))) |
|
||||
(((uint) ((uchar) bit_buff->pos[2])) << 8) |
|
||||
(((uint) ((uchar) bit_buff->pos[1])) << 16) |
|
||||
(((uint) ((uchar) bit_buff->pos[0])) << 24)) << 32));
|
||||
bit_buff->pos+=8;
|
||||
#else
|
||||
#if BITS_SAVED == 32
|
||||
bit_buff->current_byte= (((uint) ((uchar) bit_buff->pos[3])) +
|
||||
(((uint) ((uchar) bit_buff->pos[2])) << 8) +
|
||||
(((uint) ((uchar) bit_buff->pos[1])) << 16) +
|
||||
bit_buff->current_byte= (((uint) ((uchar) bit_buff->pos[3])) |
|
||||
(((uint) ((uchar) bit_buff->pos[2])) << 8) |
|
||||
(((uint) ((uchar) bit_buff->pos[1])) << 16) |
|
||||
(((uint) ((uchar) bit_buff->pos[0])) << 24));
|
||||
bit_buff->pos+=4;
|
||||
#else
|
||||
bit_buff->current_byte= (uint) (((uint) ((uchar) bit_buff->pos[1]))+
|
||||
bit_buff->current_byte= (uint) (((uint) ((uchar) bit_buff->pos[1])) |
|
||||
(((uint) ((uchar) bit_buff->pos[0])) << 8));
|
||||
bit_buff->pos+=2;
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2020, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -1113,10 +1114,10 @@ static void decode_bytes(MI_COLUMNDEF *rec,MI_BIT_BUFF *bit_buff,uchar *to,
|
||||
bit_buff->error=1;
|
||||
return; /* Can't be right */
|
||||
}
|
||||
bit_buff->current_byte= (bit_buff->current_byte << 32) +
|
||||
((((uint) bit_buff->pos[3])) +
|
||||
(((uint) bit_buff->pos[2]) << 8) +
|
||||
(((uint) bit_buff->pos[1]) << 16) +
|
||||
bit_buff->current_byte= (bit_buff->current_byte << 32) |
|
||||
((((uint) bit_buff->pos[3])) |
|
||||
(((uint) bit_buff->pos[2]) << 8) |
|
||||
(((uint) bit_buff->pos[1]) << 16) |
|
||||
(((uint) bit_buff->pos[0]) << 24));
|
||||
bit_buff->pos+=4;
|
||||
bits+=32;
|
||||
@ -1207,23 +1208,23 @@ static void decode_bytes(MI_COLUMNDEF *rec, MI_BIT_BUFF *bit_buff, uchar *to,
|
||||
return; /* Can't be right */
|
||||
}
|
||||
#if BITS_SAVED == 32
|
||||
bit_buff->current_byte= (bit_buff->current_byte << 24) +
|
||||
(((uint) ((uchar) bit_buff->pos[2]))) +
|
||||
(((uint) ((uchar) bit_buff->pos[1])) << 8) +
|
||||
bit_buff->current_byte= (bit_buff->current_byte << 24) |
|
||||
(((uint) ((uchar) bit_buff->pos[2]))) |
|
||||
(((uint) ((uchar) bit_buff->pos[1])) << 8) |
|
||||
(((uint) ((uchar) bit_buff->pos[0])) << 16);
|
||||
bit_buff->pos+=3;
|
||||
bits+=24;
|
||||
#else
|
||||
if (bits) /* We must have at leasts 9 bits */
|
||||
{
|
||||
bit_buff->current_byte= (bit_buff->current_byte << 8) +
|
||||
bit_buff->current_byte= (bit_buff->current_byte << 8) |
|
||||
(uint) ((uchar) bit_buff->pos[0]);
|
||||
bit_buff->pos++;
|
||||
bits+=8;
|
||||
}
|
||||
else
|
||||
{
|
||||
bit_buff->current_byte= ((uint) ((uchar) bit_buff->pos[0]) << 8) +
|
||||
bit_buff->current_byte= ((uint) ((uchar) bit_buff->pos[0]) << 8) |
|
||||
((uint) ((uchar) bit_buff->pos[1]));
|
||||
bit_buff->pos+=2;
|
||||
bits+=16;
|
||||
@ -1247,14 +1248,14 @@ static void decode_bytes(MI_COLUMNDEF *rec, MI_BIT_BUFF *bit_buff, uchar *to,
|
||||
if (bits < 8)
|
||||
{ /* We don't need to check end */
|
||||
#if BITS_SAVED == 32
|
||||
bit_buff->current_byte= (bit_buff->current_byte << 24) +
|
||||
(((uint) ((uchar) bit_buff->pos[2]))) +
|
||||
(((uint) ((uchar) bit_buff->pos[1])) << 8) +
|
||||
bit_buff->current_byte= (bit_buff->current_byte << 24) |
|
||||
(((uint) ((uchar) bit_buff->pos[2]))) |
|
||||
(((uint) ((uchar) bit_buff->pos[1])) << 8) |
|
||||
(((uint) ((uchar) bit_buff->pos[0])) << 16);
|
||||
bit_buff->pos+=3;
|
||||
bits+=24;
|
||||
#else
|
||||
bit_buff->current_byte= (bit_buff->current_byte << 8) +
|
||||
bit_buff->current_byte= (bit_buff->current_byte << 8) |
|
||||
(uint) ((uchar) bit_buff->pos[0]);
|
||||
bit_buff->pos+=1;
|
||||
bits+=8;
|
||||
@ -1441,25 +1442,25 @@ static void fill_buffer(MI_BIT_BUFF *bit_buff)
|
||||
}
|
||||
|
||||
#if BITS_SAVED == 64
|
||||
bit_buff->current_byte= ((((uint) ((uchar) bit_buff->pos[7]))) +
|
||||
(((uint) ((uchar) bit_buff->pos[6])) << 8) +
|
||||
(((uint) ((uchar) bit_buff->pos[5])) << 16) +
|
||||
(((uint) ((uchar) bit_buff->pos[4])) << 24) +
|
||||
bit_buff->current_byte= ((((uint) ((uchar) bit_buff->pos[7]))) |
|
||||
(((uint) ((uchar) bit_buff->pos[6])) << 8) |
|
||||
(((uint) ((uchar) bit_buff->pos[5])) << 16) |
|
||||
(((uint) ((uchar) bit_buff->pos[4])) << 24) |
|
||||
((ulonglong)
|
||||
((((uint) ((uchar) bit_buff->pos[3]))) +
|
||||
(((uint) ((uchar) bit_buff->pos[2])) << 8) +
|
||||
(((uint) ((uchar) bit_buff->pos[1])) << 16) +
|
||||
((((uint) ((uchar) bit_buff->pos[3]))) |
|
||||
(((uint) ((uchar) bit_buff->pos[2])) << 8) |
|
||||
(((uint) ((uchar) bit_buff->pos[1])) << 16) |
|
||||
(((uint) ((uchar) bit_buff->pos[0])) << 24)) << 32));
|
||||
bit_buff->pos+=8;
|
||||
#else
|
||||
#if BITS_SAVED == 32
|
||||
bit_buff->current_byte= (((uint) ((uchar) bit_buff->pos[3])) +
|
||||
(((uint) ((uchar) bit_buff->pos[2])) << 8) +
|
||||
(((uint) ((uchar) bit_buff->pos[1])) << 16) +
|
||||
bit_buff->current_byte= (((uint) ((uchar) bit_buff->pos[3])) |
|
||||
(((uint) ((uchar) bit_buff->pos[2])) << 8) |
|
||||
(((uint) ((uchar) bit_buff->pos[1])) << 16) |
|
||||
(((uint) ((uchar) bit_buff->pos[0])) << 24));
|
||||
bit_buff->pos+=4;
|
||||
#else
|
||||
bit_buff->current_byte= (uint) (((uint) ((uchar) bit_buff->pos[1]))+
|
||||
bit_buff->current_byte= (uint) (((uint) ((uchar) bit_buff->pos[1])) |
|
||||
(((uint) ((uchar) bit_buff->pos[0])) << 8));
|
||||
bit_buff->pos+=2;
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user