Merge sita.local:/Users/tsmith/m/bk/51
into sita.local:/Users/tsmith/m/bk/maint/51 This merge requires a post-merge fix to remove rpl_udf from suite/rpl/t/disabled.def.
This commit is contained in:
commit
5f12f35c34
@ -38,9 +38,9 @@
|
||||
*/.libs/*
|
||||
*/.pure
|
||||
*/debug/*
|
||||
*/minsizerel/*
|
||||
*/release/*
|
||||
*/relwithdebinfo/*
|
||||
*/minsizerel/*
|
||||
*~
|
||||
.*.swp
|
||||
./CMakeCache.txt
|
||||
@ -584,6 +584,7 @@ heap/hp_test2
|
||||
help
|
||||
help.c
|
||||
help.h
|
||||
include/abi_check
|
||||
include/check_abi
|
||||
include/link_sources
|
||||
include/my_config.h
|
||||
@ -1021,8 +1022,8 @@ libmysqld/.deps/unireg.Po
|
||||
libmysqld/backup_dir
|
||||
libmysqld/client.c
|
||||
libmysqld/client_settings.h
|
||||
libmysqld/convert.cc
|
||||
libmysqld/cmake_dummy.c
|
||||
libmysqld/convert.cc
|
||||
libmysqld/derror.cc
|
||||
libmysqld/discover.cc
|
||||
libmysqld/emb_qcache.cpp
|
||||
|
@ -26,8 +26,9 @@ export LDFLAGS="-fprofile-arcs -ftest-coverage"
|
||||
|
||||
# The -fprofile-arcs and -ftest-coverage options cause GCC to instrument the
|
||||
# code with profiling information used by gcov.
|
||||
# the -DDISABLE_TAO_ASM is needed to avoid build failures in Yassl.
|
||||
extra_flags="$pentium_cflags -fprofile-arcs -ftest-coverage -DDISABLE_TAO_ASM -DHAVE_MUTEX_THREAD_ONLY $debug_extra_flags $debug_cflags $max_cflags -DMYSQL_SERVER_SUFFIX=-gcov"
|
||||
# The -DDISABLE_TAO_ASM is needed to avoid build failures in Yassl.
|
||||
# The -DHAVE_gcov enables code to write out coverage info even when crashing.
|
||||
extra_flags="$pentium_cflags -fprofile-arcs -ftest-coverage -DDISABLE_TAO_ASM -DHAVE_MUTEX_THREAD_ONLY $debug_extra_flags $debug_cflags $max_cflags -DMYSQL_SERVER_SUFFIX=-gcov -DHAVE_gcov"
|
||||
extra_configs="$pentium_configs $debug_configs --disable-shared $static_link"
|
||||
extra_configs="$extra_configs $max_configs"
|
||||
c_warnings="$c_warnings $debug_extra_warnings"
|
||||
|
16
configure.in
16
configure.in
@ -71,14 +71,22 @@ AC_SUBST(AVAILABLE_LANGUAGES)
|
||||
|
||||
|
||||
# Canonicalize the configuration name.
|
||||
SYSTEM_TYPE="$host_vendor-$host_os"
|
||||
MACHINE_TYPE="$host_cpu"
|
||||
|
||||
# Check whether --with-system-type or --without-system-type was given.
|
||||
AC_ARG_WITH(system-type,
|
||||
[ --with-system-type Set the system type, like "sun-solaris10"],
|
||||
[SYSTEM_TYPE="$withval"],
|
||||
[SYSTEM_TYPE="$host_vendor-$host_os"])
|
||||
AC_ARG_WITH(machine-type,
|
||||
[ --with-machine-type Set the machine type, like "powerpc"],
|
||||
[MACHINE_TYPE="$withval"],
|
||||
[MACHINE_TYPE="$host_cpu"])
|
||||
AC_SUBST(SYSTEM_TYPE)
|
||||
AC_DEFINE_UNQUOTED([SYSTEM_TYPE], ["$SYSTEM_TYPE"],
|
||||
[Name of system, eg solaris])
|
||||
[Name of system, eg sun-solaris])
|
||||
AC_SUBST(MACHINE_TYPE)
|
||||
AC_DEFINE_UNQUOTED([MACHINE_TYPE], ["$MACHINE_TYPE"],
|
||||
[Machine type name, eg sun10])
|
||||
[Machine type name, eg sparc])
|
||||
|
||||
# Detect intel x86 like processor
|
||||
BASE_MACHINE_TYPE=$MACHINE_TYPE
|
||||
|
@ -180,7 +180,12 @@ enum ha_extra_function {
|
||||
These flags are reset by the handler::extra(HA_EXTRA_RESET) call.
|
||||
*/
|
||||
HA_EXTRA_DELETE_CANNOT_BATCH,
|
||||
HA_EXTRA_UPDATE_CANNOT_BATCH
|
||||
HA_EXTRA_UPDATE_CANNOT_BATCH,
|
||||
/*
|
||||
Inform handler that an "INSERT...ON DUPLICATE KEY UPDATE" will be
|
||||
executed. This condition is unset by HA_EXTRA_NO_IGNORE_DUP_KEY.
|
||||
*/
|
||||
HA_EXTRA_INSERT_WITH_UPDATE
|
||||
};
|
||||
|
||||
/* The following is parameter to ha_panic() */
|
||||
|
@ -103,6 +103,17 @@ extern void bitmap_lock_invert(MY_BITMAP *map);
|
||||
&= ~ (1 << ((BIT) & 7)))
|
||||
#define _bitmap_is_set(MAP, BIT) (uint) (((uchar*)(MAP)->bitmap)[(BIT) / 8] \
|
||||
& (1 << ((BIT) & 7)))
|
||||
/*
|
||||
WARNING!
|
||||
|
||||
The below symbols are inline functions in DEBUG builds and macros in
|
||||
non-DEBUG builds. The latter evaluate their 'bit' argument twice.
|
||||
|
||||
NEVER use an increment/decrement operator with the 'bit' argument.
|
||||
It would work with DEBUG builds, but fails later in production builds!
|
||||
|
||||
FORBIDDEN: bitmap_set_bit($my_bitmap, (field++)->field_index);
|
||||
*/
|
||||
#ifndef DBUG_OFF
|
||||
static inline void
|
||||
bitmap_set_bit(MY_BITMAP *map,uint bit)
|
||||
|
@ -168,8 +168,23 @@ int STDCALL mysql_server_init(int argc __attribute__((unused)),
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Free all memory and resources used by the client library
|
||||
|
||||
NOTES
|
||||
When calling this there should not be any other threads using
|
||||
the library.
|
||||
|
||||
To make things simpler when used with windows dll's (which calls this
|
||||
function automaticly), it's safe to call this function multiple times.
|
||||
*/
|
||||
|
||||
|
||||
void STDCALL mysql_server_end()
|
||||
{
|
||||
if (!mysql_client_init)
|
||||
return;
|
||||
|
||||
#ifdef EMBEDDED_LIBRARY
|
||||
end_embedded_server();
|
||||
#endif
|
||||
|
@ -164,8 +164,8 @@ CREATE TABLE t1 (word CHAR(20) NOT NULL PRIMARY KEY) ENGINE=INNODB;
|
||||
--error ER_DUP_ENTRY
|
||||
LOAD DATA INFILE "../std_data_ln/words.dat" INTO TABLE t1;
|
||||
|
||||
--disable warnings
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable warnings
|
||||
--enable_warnings
|
||||
|
||||
# End of 4.1 tests
|
||||
|
@ -28,7 +28,7 @@
|
||||
eval SET SESSION STORAGE_ENGINE = $engine_type;
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2,t1m,t1i,t2m,t2i,t4;
|
||||
drop table if exists t1,t2,t3,t1m,t1i,t2m,t2i,t4;
|
||||
--enable_warnings
|
||||
|
||||
|
||||
@ -672,6 +672,20 @@ SELECT * FROM t3 WHERE a = 'uk';
|
||||
|
||||
DROP TABLE t1,t2,t3;
|
||||
|
||||
#
|
||||
# Test bug when trying to drop data file which no InnoDB directory entry
|
||||
#
|
||||
|
||||
create table t1 (a int) engine=innodb;
|
||||
copy_file $MYSQLTEST_VARDIR/master-data/test/t1.frm $MYSQLTEST_VARDIR/master-data/test/t2.frm;
|
||||
--error 1146
|
||||
select * from t2;
|
||||
drop table t1;
|
||||
--error 1051
|
||||
drop table t2;
|
||||
create table t2 (a int);
|
||||
drop table t2;
|
||||
|
||||
|
||||
#
|
||||
# Bug #29154: LOCK TABLES is not atomic when >1 InnoDB tables are locked
|
||||
@ -707,6 +721,64 @@ DISCONNECT c2;
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
|
||||
#
|
||||
# Bug #25798: a query with forced index merge returns wrong result
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (
|
||||
id int NOT NULL auto_increment PRIMARY KEY,
|
||||
b int NOT NULL,
|
||||
c datetime NOT NULL,
|
||||
INDEX idx_b(b),
|
||||
INDEX idx_c(c)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE t2 (
|
||||
b int NOT NULL auto_increment PRIMARY KEY,
|
||||
c datetime NOT NULL
|
||||
) ENGINE= MyISAM;
|
||||
|
||||
INSERT INTO t2(c) VALUES ('2007-01-01');
|
||||
INSERT INTO t2(c) SELECT c FROM t2;
|
||||
INSERT INTO t2(c) SELECT c FROM t2;
|
||||
INSERT INTO t2(c) SELECT c FROM t2;
|
||||
INSERT INTO t2(c) SELECT c FROM t2;
|
||||
INSERT INTO t2(c) SELECT c FROM t2;
|
||||
INSERT INTO t2(c) SELECT c FROM t2;
|
||||
INSERT INTO t2(c) SELECT c FROM t2;
|
||||
INSERT INTO t2(c) SELECT c FROM t2;
|
||||
INSERT INTO t2(c) SELECT c FROM t2;
|
||||
INSERT INTO t2(c) SELECT c FROM t2;
|
||||
|
||||
INSERT INTO t1(b,c) SELECT b,c FROM t2;
|
||||
UPDATE t2 SET c='2007-01-02';
|
||||
INSERT INTO t1(b,c) SELECT b,c FROM t2;
|
||||
UPDATE t2 SET c='2007-01-03';
|
||||
INSERT INTO t1(b,c) SELECT b,c FROM t2;
|
||||
|
||||
set @@sort_buffer_size=8192;
|
||||
|
||||
SELECT COUNT(*) FROM t1;
|
||||
|
||||
--replace_column 9 #
|
||||
EXPLAIN
|
||||
SELECT COUNT(*) FROM t1
|
||||
WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1;
|
||||
SELECT COUNT(*) FROM t1
|
||||
WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1;
|
||||
|
||||
--replace_column 9 #
|
||||
EXPLAIN
|
||||
SELECT COUNT(*) FROM t1 FORCE INDEX(idx_b, idx_c)
|
||||
WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1;
|
||||
SELECT COUNT(*) FROM t1 FORCE INDEX(idx_b, idx_c)
|
||||
WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1;
|
||||
|
||||
set @@sort_buffer_size=default;
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
#
|
||||
|
@ -345,6 +345,10 @@ sub mtr_report_stats ($) {
|
||||
/skip-name-resolve mode/ or
|
||||
/slave SQL thread aborted/ or
|
||||
/Slave: .*Duplicate entry/ or
|
||||
# Special case for Bug #26402 in show_check.test
|
||||
# Question marks are not valid file name parts
|
||||
# on Windows platforms. Ignore this error message.
|
||||
/\QCan't find file: '.\test\????????.frm'\E/ or
|
||||
# Special case, made as specific as possible, for:
|
||||
# Bug #28436: Incorrect position in SHOW BINLOG EVENTS causes
|
||||
# server coredump
|
||||
|
19
mysql-test/r/archive-big.result
Normal file
19
mysql-test/r/archive-big.result
Normal file
@ -0,0 +1,19 @@
|
||||
CREATE TABLE t1(a BLOB) ENGINE=ARCHIVE;
|
||||
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;
|
||||
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;
|
||||
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;
|
||||
DROP TABLE t1;
|
@ -12675,3 +12675,10 @@ select * from t1;
|
||||
i
|
||||
1
|
||||
drop table t1;
|
||||
create table t1(a longblob) engine=archive;
|
||||
insert into t1 set a='';
|
||||
insert into t1 set a='a';
|
||||
check table t1 extended;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
drop table t1;
|
||||
|
@ -36,7 +36,7 @@ restore table t1 from '../bogus';
|
||||
Table Op Msg_type Msg_text
|
||||
t1 restore error Failed copying .frm file
|
||||
Warnings:
|
||||
Warning 1543 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead
|
||||
Warning 1287 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead
|
||||
Error 29 File 'MYSQLTEST_VARDIR/bogus/t1.frm' not found (Errcode: X)
|
||||
restore table t1 from '../tmp';
|
||||
Table Op Msg_type Msg_text
|
||||
|
@ -5259,6 +5259,14 @@ CREATE TABLE `bug21328` (
|
||||
insert into bug21328 values (1,NULL,NULL);
|
||||
alter table bug21328 engine=myisam;
|
||||
drop table bug21328;
|
||||
create table t1(a blob, b int) engine=csv;
|
||||
insert into t1 values('a', 1);
|
||||
flush tables;
|
||||
update t1 set b=2;
|
||||
select * from t1;
|
||||
a b
|
||||
a 2
|
||||
drop table t1;
|
||||
create table t1(a int) engine=csv;
|
||||
insert into t1 values(-1), (-123.34), (2), (-23);
|
||||
select * from t1;
|
||||
|
@ -31,7 +31,7 @@ create event e_55 on schedule at 10000101000000 do drop table t;
|
||||
ERROR HY000: Incorrect AT value: '10000101000000'
|
||||
create event e_55 on schedule at 20000101000000 do drop table t;
|
||||
Warnings:
|
||||
Note 1584 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been created
|
||||
Note 1585 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been created
|
||||
show events;
|
||||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
||||
create event e_55 on schedule at 20200101000000 starts 10000101000000 do drop table t;
|
||||
@ -457,22 +457,22 @@ CREATE EVENT e4 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
||||
DO
|
||||
SELECT 1;
|
||||
Warnings:
|
||||
Note 1584 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been created
|
||||
Note 1585 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been created
|
||||
CREATE EVENT e4 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
||||
ENDS '1999-01-02 00:00:00' DISABLE
|
||||
DO
|
||||
SELECT 1;
|
||||
Warnings:
|
||||
Note 1584 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been created
|
||||
Note 1585 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been created
|
||||
CREATE EVENT e4 ON SCHEDULE AT '1999-01-01 00:00:00' DO
|
||||
SELECT 1;
|
||||
Warnings:
|
||||
Note 1584 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been created
|
||||
Note 1585 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been created
|
||||
CREATE EVENT e4 ON SCHEDULE AT '1999-01-01 00:00:00' DISABLE
|
||||
DO
|
||||
SELECT 1;
|
||||
Warnings:
|
||||
Note 1584 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been created
|
||||
Note 1585 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been created
|
||||
SHOW EVENTS;
|
||||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
||||
events_test e1 root@localhost +05:00 RECURRING NULL 1 DAY 2006-01-01 00:00:00 NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
@ -482,19 +482,19 @@ The following should succeed giving a warning.
|
||||
ALTER EVENT e1 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
||||
ENDS '1999-01-02 00:00:00' ON COMPLETION PRESERVE;
|
||||
Warnings:
|
||||
Note 1533 Event execution time is in the past. Event has been disabled
|
||||
Note 1541 Event execution time is in the past. Event has been disabled
|
||||
CREATE EVENT e4 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
||||
ENDS '1999-01-02 00:00:00' ON COMPLETION PRESERVE
|
||||
DO
|
||||
SELECT 1;
|
||||
Warnings:
|
||||
Note 1533 Event execution time is in the past. Event has been disabled
|
||||
Note 1541 Event execution time is in the past. Event has been disabled
|
||||
CREATE EVENT e5 ON SCHEDULE AT '1999-01-01 00:00:00'
|
||||
ON COMPLETION PRESERVE
|
||||
DO
|
||||
SELECT 1;
|
||||
Warnings:
|
||||
Note 1533 Event execution time is in the past. Event has been disabled
|
||||
Note 1541 Event execution time is in the past. Event has been disabled
|
||||
The following should succeed without warnings.
|
||||
ALTER EVENT e2 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00';
|
||||
ALTER EVENT e3 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
||||
|
@ -63,7 +63,7 @@ begin work;
|
||||
insert into t1 (a) values ("OK: create event if not exists");
|
||||
create event if not exists e1 on schedule every 2 day do select 2;
|
||||
Warnings:
|
||||
Note 1526 Event 'e1' already exists
|
||||
Note 1534 Event 'e1' already exists
|
||||
rollback work;
|
||||
select * from t1;
|
||||
a
|
||||
|
@ -1843,6 +1843,45 @@ C3A4C3B6C3BCC39F
|
||||
D18DD184D184D0B5D0BAD182D0B8D0B2D0BDD183D18E
|
||||
drop table federated.t1;
|
||||
drop table federated.t1;
|
||||
create table federated.t1 (a int primary key, b varchar(64))
|
||||
DEFAULT CHARSET=utf8;
|
||||
create table federated.t1 (a int primary key, b varchar(64))
|
||||
ENGINE=FEDERATED
|
||||
connection='mysql://root@127.0.0.1:SLAVE_PORT/federated/t1'
|
||||
DEFAULT CHARSET=utf8;
|
||||
insert ignore into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe");
|
||||
select * from federated.t1;
|
||||
a b
|
||||
1 Larry
|
||||
2 Curly
|
||||
truncate federated.t1;
|
||||
replace into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe");
|
||||
select * from federated.t1;
|
||||
a b
|
||||
1 Moe
|
||||
2 Curly
|
||||
update ignore federated.t1 set a=a+1;
|
||||
select * from federated.t1;
|
||||
a b
|
||||
1 Moe
|
||||
3 Curly
|
||||
drop table federated.t1;
|
||||
drop table federated.t1;
|
||||
create table federated.t1 (a int primary key, b varchar(64))
|
||||
DEFAULT CHARSET=utf8;
|
||||
create table federated.t1 (a int primary key, b varchar(64))
|
||||
ENGINE=FEDERATED
|
||||
connection='mysql://root@127.0.0.1:SLAVE_PORT/federated/t1'
|
||||
DEFAULT CHARSET=utf8;
|
||||
insert into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe")
|
||||
on duplicate key update a=a+100;
|
||||
ERROR 23000: Can't write; duplicate key in table 't1'
|
||||
select * from federated.t1;
|
||||
a b
|
||||
1 Larry
|
||||
2 Curly
|
||||
drop table federated.t1;
|
||||
drop table federated.t1;
|
||||
DROP TABLE IF EXISTS federated.t1;
|
||||
DROP DATABASE IF EXISTS federated;
|
||||
DROP TABLE IF EXISTS federated.t1;
|
||||
|
34
mysql-test/r/federated_innodb.result
Normal file
34
mysql-test/r/federated_innodb.result
Normal file
@ -0,0 +1,34 @@
|
||||
stop slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
stop slave;
|
||||
DROP DATABASE IF EXISTS federated;
|
||||
CREATE DATABASE federated;
|
||||
DROP DATABASE IF EXISTS federated;
|
||||
CREATE DATABASE federated;
|
||||
create table federated.t1 (a int primary key, b varchar(64))
|
||||
engine=myisam;
|
||||
create table federated.t1 (a int primary key, b varchar(64))
|
||||
engine=federated
|
||||
connection='mysql://root@127.0.0.1:SLAVE_PORT/federated/t1';
|
||||
insert into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe");
|
||||
ERROR 23000: Can't write; duplicate key in table 't1'
|
||||
select * from federated.t1;
|
||||
a b
|
||||
1 Larry
|
||||
2 Curly
|
||||
truncate federated.t1;
|
||||
alter table federated.t1 engine=innodb;
|
||||
insert into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe");
|
||||
ERROR 23000: Can't write; duplicate key in table 't1'
|
||||
select * from federated.t1;
|
||||
a b
|
||||
drop table federated.t1;
|
||||
drop table federated.t1;
|
||||
DROP TABLE IF EXISTS federated.t1;
|
||||
DROP DATABASE IF EXISTS federated;
|
||||
DROP TABLE IF EXISTS federated.t1;
|
||||
DROP DATABASE IF EXISTS federated;
|
13
mysql-test/r/fulltext3.result
Normal file
13
mysql-test/r/fulltext3.result
Normal file
@ -0,0 +1,13 @@
|
||||
DROP TABLE IF EXISTS t1;
|
||||
CREATE TABLE t1(a VARCHAR(255) CHARACTER SET gbk, FULLTEXT(a));
|
||||
SET NAMES utf8;
|
||||
INSERT INTO t1 VALUES(0xF043616161),(0xBEF361616197C22061616161);
|
||||
SELECT HEX(a) FROM t1 WHERE MATCH(a) AGAINST(0x97C22061616161 IN BOOLEAN MODE);
|
||||
HEX(a)
|
||||
BEF361616197C22061616161
|
||||
DELETE FROM t1 LIMIT 1;
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
SET NAMES latin1;
|
||||
DROP TABLE t1;
|
@ -886,6 +886,9 @@ AsText(a)
|
||||
POINT(1 1)
|
||||
LINESTRING(0 0,1 1,2 2)
|
||||
drop table t1, t2;
|
||||
SELECT 1;
|
||||
1
|
||||
1
|
||||
End of 5.0 tests
|
||||
create table t1 (f1 tinyint(1), f2 char(1), f3 varchar(1), f4 geometry, f5 datetime);
|
||||
create view v1 as select * from t1;
|
||||
|
@ -1,5 +1,5 @@
|
||||
SET SESSION STORAGE_ENGINE = InnoDB;
|
||||
drop table if exists t1,t2,t1m,t1i,t2m,t2i,t4;
|
||||
drop table if exists t1,t2,t3,t1m,t1i,t2m,t2i,t4;
|
||||
create table t1 (
|
||||
c_id int(11) not null default '0',
|
||||
org_id int(11) default null,
|
||||
@ -665,6 +665,14 @@ UPDATE t3 SET a = 'us' WHERE a = 'uk';
|
||||
SELECT * FROM t3 WHERE a = 'uk';
|
||||
a
|
||||
DROP TABLE t1,t2,t3;
|
||||
create table t1 (a int) engine=innodb;
|
||||
select * from t2;
|
||||
ERROR 42S02: Table 'test.t2' doesn't exist
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
ERROR 42S02: Unknown table 't2'
|
||||
create table t2 (a int);
|
||||
drop table t2;
|
||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||
switch to connection c1
|
||||
@ -680,6 +688,57 @@ INSERT INTO t1 VALUES (1);
|
||||
switch to connection default
|
||||
SET AUTOCOMMIT=default;
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (
|
||||
id int NOT NULL auto_increment PRIMARY KEY,
|
||||
b int NOT NULL,
|
||||
c datetime NOT NULL,
|
||||
INDEX idx_b(b),
|
||||
INDEX idx_c(c)
|
||||
) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 (
|
||||
b int NOT NULL auto_increment PRIMARY KEY,
|
||||
c datetime NOT NULL
|
||||
) ENGINE= MyISAM;
|
||||
INSERT INTO t2(c) VALUES ('2007-01-01');
|
||||
INSERT INTO t2(c) SELECT c FROM t2;
|
||||
INSERT INTO t2(c) SELECT c FROM t2;
|
||||
INSERT INTO t2(c) SELECT c FROM t2;
|
||||
INSERT INTO t2(c) SELECT c FROM t2;
|
||||
INSERT INTO t2(c) SELECT c FROM t2;
|
||||
INSERT INTO t2(c) SELECT c FROM t2;
|
||||
INSERT INTO t2(c) SELECT c FROM t2;
|
||||
INSERT INTO t2(c) SELECT c FROM t2;
|
||||
INSERT INTO t2(c) SELECT c FROM t2;
|
||||
INSERT INTO t2(c) SELECT c FROM t2;
|
||||
INSERT INTO t1(b,c) SELECT b,c FROM t2;
|
||||
UPDATE t2 SET c='2007-01-02';
|
||||
INSERT INTO t1(b,c) SELECT b,c FROM t2;
|
||||
UPDATE t2 SET c='2007-01-03';
|
||||
INSERT INTO t1(b,c) SELECT b,c FROM t2;
|
||||
set @@sort_buffer_size=8192;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
3072
|
||||
EXPLAIN
|
||||
SELECT COUNT(*) FROM t1
|
||||
WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL idx_b,idx_c NULL NULL NULL # Using where
|
||||
SELECT COUNT(*) FROM t1
|
||||
WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1;
|
||||
COUNT(*)
|
||||
3072
|
||||
EXPLAIN
|
||||
SELECT COUNT(*) FROM t1 FORCE INDEX(idx_b, idx_c)
|
||||
WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index_merge idx_b,idx_c idx_c,idx_b 8,4 NULL # Using sort_union(idx_c,idx_b); Using where
|
||||
SELECT COUNT(*) FROM t1 FORCE INDEX(idx_b, idx_c)
|
||||
WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1;
|
||||
COUNT(*)
|
||||
3072
|
||||
set @@sort_buffer_size=default;
|
||||
DROP TABLE t1,t2;
|
||||
End of 5.0 tests
|
||||
CREATE TABLE t1 (a int, b int);
|
||||
insert into t1 values (1,1),(1,2);
|
||||
|
@ -86,6 +86,60 @@ field1 field2
|
||||
a"b cd"ef
|
||||
a"b c"d"e
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
c1 VARCHAR(255)
|
||||
);
|
||||
CREATE TABLE t2 (
|
||||
id INT,
|
||||
c2 VARCHAR(255)
|
||||
);
|
||||
INSERT INTO t1 (c1) VALUES
|
||||
('r'), ('rr'), ('rrr'), ('rrrr'),
|
||||
('.r'), ('.rr'), ('.rrr'), ('.rrrr'),
|
||||
('r.'), ('rr.'), ('rrr.'), ('rrrr.'),
|
||||
('.r.'), ('.rr.'), ('.rrr.'), ('.rrrr.');
|
||||
SELECT * FROM t1;
|
||||
id c1
|
||||
1 r
|
||||
2 rr
|
||||
3 rrr
|
||||
4 rrrr
|
||||
5 .r
|
||||
6 .rr
|
||||
7 .rrr
|
||||
8 .rrrr
|
||||
9 r.
|
||||
10 rr.
|
||||
11 rrr.
|
||||
12 rrrr.
|
||||
13 .r.
|
||||
14 .rr.
|
||||
15 .rrr.
|
||||
16 .rrrr.
|
||||
SELECT * INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/t1' FIELDS ENCLOSED BY 'r' FROM t1;
|
||||
r1r rrrr
|
||||
r2r rrrrrr
|
||||
r3r rrrrrrrr
|
||||
r4r rrrrrrrrrr
|
||||
r5r r.rrr
|
||||
r6r r.rrrrr
|
||||
r7r r.rrrrrrr
|
||||
r8r r.rrrrrrrrr
|
||||
r9r rrr.r
|
||||
r10r rrrrr.r
|
||||
r11r rrrrrrr.r
|
||||
r12r rrrrrrrrr.r
|
||||
r13r r.rr.r
|
||||
r14r r.rrrr.r
|
||||
r15r r.rrrrrr.r
|
||||
r16r r.rrrrrrrr.r
|
||||
LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/t1' INTO TABLE t2 FIELDS ENCLOSED BY 'r';
|
||||
SELECT t1.id, c1, c2 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE c1 != c2;
|
||||
id c1 c2
|
||||
SELECT t1.id, c1, c2 FROM t1 RIGHT JOIN t2 ON t1.id=t2.id WHERE c1 != c2;
|
||||
id c1 c2
|
||||
DROP TABLE t1,t2;
|
||||
create table t1 (a int default 100, b int, c varchar(60));
|
||||
load data infile '../std_data_ln/rpl_loaddata.dat' into table t1 (a, @b) set b=@b+10, c=concat("b=",@b);
|
||||
select * from t1;
|
||||
@ -193,6 +247,20 @@ f1
|
||||
1
|
||||
2
|
||||
drop table t1,t2;
|
||||
CREATE TABLE t1 (c1 INT, c2 TIMESTAMP, c3 REAL, c4 DOUBLE);
|
||||
INSERT INTO t1 (c1, c2, c3, c4) VALUES (10, '1970-02-01 01:02:03', 1.1E-100, 1.1E+100);
|
||||
SELECT * FROM t1;
|
||||
c1 c2 c3 c4
|
||||
10 1970-02-01 01:02:03 1.1e-100 1.1e+100
|
||||
SELECT * INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/t1' FIELDS ENCLOSED BY '-' FROM t1;
|
||||
-10- -1970\-02\-01 01:02:03- -1.1e\-100- -1.1e+100-
|
||||
EOF
|
||||
TRUNCATE t1;
|
||||
LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/t1' INTO TABLE t1 FIELDS ENCLOSED BY '-';
|
||||
SELECT * FROM t1;
|
||||
c1 c2 c3 c4
|
||||
10 1970-02-01 01:02:03 1.1e-100 1.1e+100
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a int);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
SET NAMES latin1;
|
||||
|
@ -1267,14 +1267,4 @@ ALTER TABLE general_log PARTITION BY RANGE (TO_DAYS(event_time))
|
||||
ERROR HY000: Incorrect usage of PARTITION and log table
|
||||
ALTER TABLE general_log ENGINE = CSV;
|
||||
SET GLOBAL general_log = default;
|
||||
CREATE TABLE `t1` ( `a` varchar(1)) ENGINE=MyISAM
|
||||
PARTITION BY LIST (CASE a WHEN 'a' THEN 1
|
||||
WHEN 'b' THEN 2
|
||||
WHEN 'c' THEN 3
|
||||
END) (
|
||||
PARTITION a VALUES IN (1),
|
||||
PARTITION b VALUES IN (2),
|
||||
PARTITION c VALUES IN (3)
|
||||
);
|
||||
DROP TABLE t1;
|
||||
End of 5.1 tests
|
||||
|
173
mysql-test/r/partition_bug18198.result
Normal file
173
mysql-test/r/partition_bug18198.result
Normal file
@ -0,0 +1,173 @@
|
||||
drop table if exists t1;
|
||||
create table t1 (col1 datetime)
|
||||
partition by range(datediff(col1,col1))
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
drop table t1;
|
||||
create table t1 (col1 int)
|
||||
partition by range(greatest(col1,10))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 int)
|
||||
partition by range(isnull(col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 int)
|
||||
partition by range(least(col1,12))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 int)
|
||||
partition by range(case when col1>0 then 10 else 20 end)
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 int)
|
||||
partition by range(ifnull(col1,5))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 int)
|
||||
partition by range(nullif(col1,5))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 int)
|
||||
partition by range(bit_length(col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 char(5))
|
||||
partition by range(bit_length(col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 int)
|
||||
partition by range(char_length(col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 char(5))
|
||||
partition by range(char_length(col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 char(5))
|
||||
partition by range(character_length(col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 int)
|
||||
partition by range(find_in_set(col1,1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 char(5))
|
||||
partition by range(find_in_set(col1,'1'))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 int)
|
||||
partition by range(instr(col1,3))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 char(5))
|
||||
partition by range(instr(col1,'3'))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 char(5))
|
||||
partition by range(length(col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 char(5))
|
||||
partition by range(locate(1,col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 int)
|
||||
partition by range(locate(1,col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 char(5))
|
||||
partition by range(octet_length(col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 char(5))
|
||||
partition by range(position(1 in col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 int)
|
||||
partition by range(position(1 in col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 char(5))
|
||||
partition by range(strcmp(col1,2))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 int)
|
||||
partition by range(strcmp(col1,2))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 int)
|
||||
partition by range(crc32(col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 int)
|
||||
partition by range(round(col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 int)
|
||||
partition by range(sign(col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 datetime)
|
||||
partition by range(period_add(col1,5))
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 datetime, col2 datetime)
|
||||
partition by range(period_diff(col1,col2))
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 int, col2 int)
|
||||
partition by range(period_diff(col1,col2))
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 datetime)
|
||||
partition by range(timestampdiff(day,5,col1))
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 date)
|
||||
partition by range(unix_timestamp(col1))
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 datetime)
|
||||
partition by range(week(col1))
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 varchar(25))
|
||||
partition by range(cast(col1 as signed))
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 varchar(25))
|
||||
partition by range(convert(col1,unsigned))
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 int)
|
||||
partition by range(col1 | 20)
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 int)
|
||||
partition by range(col1 & 20)
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 int)
|
||||
partition by range(col1 ^ 20)
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 int)
|
||||
partition by range(col1 << 20)
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 int)
|
||||
partition by range(col1 >> 20)
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 int)
|
||||
partition by range(~col1)
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 int)
|
||||
partition by range(bit_count(col1))
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (col1 int)
|
||||
partition by range(inet_aton(col1))
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
ERROR HY000: This partition function is not allowed
|
@ -16,3 +16,7 @@ s1
|
||||
1
|
||||
3
|
||||
drop table t1;
|
||||
create table t1 (a varchar(1), primary key (a))
|
||||
partition by list (ascii(a))
|
||||
(partition p1 values in (65));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
|
@ -25,7 +25,7 @@ partitions 3
|
||||
(partition x1 values in (1,2,9,4) tablespace ts1,
|
||||
partition x2 values in (3, 11, 5, 7) tablespace ts2,
|
||||
partition x3 values in (16, 8, 5+19, 70-43) tablespace ts3);
|
||||
ERROR HY000: The PARTITION function returns the wrong type
|
||||
ERROR HY000: This partition function is not allowed
|
||||
CREATE TABLE t1 (
|
||||
a int not null,
|
||||
b int not null,
|
||||
@ -89,7 +89,7 @@ partitions 3
|
||||
(partition x1 tablespace ts1,
|
||||
partition x2 tablespace ts2,
|
||||
partition x3 tablespace ts3);
|
||||
ERROR HY000: The PARTITION function returns the wrong type
|
||||
ERROR HY000: This partition function is not allowed
|
||||
CREATE TABLE t1 (
|
||||
a int not null,
|
||||
b int not null,
|
||||
@ -422,7 +422,7 @@ partition by range (sin(a))
|
||||
partitions 2
|
||||
(partition x1 values less than (4),
|
||||
partition x2 values less than (5));
|
||||
ERROR HY000: The PARTITION function returns the wrong type
|
||||
ERROR HY000: This partition function is not allowed
|
||||
CREATE TABLE t1 (
|
||||
a int not null,
|
||||
b int not null,
|
||||
@ -600,7 +600,7 @@ ERROR HY000: Partition constant is out of partition function domain
|
||||
create table t1 (v varchar(12))
|
||||
partition by range (ascii(v))
|
||||
(partition p0 values less than (10));
|
||||
drop table t1;
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (a int)
|
||||
partition by hash (rand(a));
|
||||
ERROR 42000: Constant/Random expression in (sub)partitioning function is not allowed near ')' at line 2
|
||||
@ -619,4 +619,4 @@ partition by range (a + (select count(*) from t1))
|
||||
ERROR HY000: This partition function is not allowed
|
||||
create table t1 (a char(10))
|
||||
partition by hash (extractvalue(a,'a'));
|
||||
ERROR HY000: The PARTITION function returns the wrong type
|
||||
ERROR HY000: This partition function is not allowed
|
||||
|
@ -1,18 +1,4 @@
|
||||
drop table if exists t1;
|
||||
create table t1 (a varchar(10) charset latin1 collate latin1_bin)
|
||||
partition by hash(length(a))
|
||||
partitions 10;
|
||||
insert into t1 values (''),(' '),('a'),('a '),('a ');
|
||||
explain partitions select * from t1 where a='a ';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 5 Using where
|
||||
explain partitions select * from t1 where a='a';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 5 Using where
|
||||
explain partitions select * from t1 where a='a ' OR a='a';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 5 Using where
|
||||
drop table t1;
|
||||
create table t1 (a int unsigned)
|
||||
partition by hash(a div 2)
|
||||
partitions 4;
|
||||
|
@ -295,3 +295,7 @@ select * from t1;
|
||||
a
|
||||
100
|
||||
drop table t1;
|
||||
create table t1 (a char(1))
|
||||
partition by list (ascii(ucase(a)))
|
||||
(partition p1 values in (2));
|
||||
ERROR HY000: This partition function is not allowed
|
||||
|
@ -10,13 +10,13 @@ subpartition sp01, subpartition sp02));
|
||||
ERROR HY000: Wrong number of subpartitions defined, mismatch with previous setting
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (f_date DATE, f_varchar VARCHAR(30))
|
||||
PARTITION BY HASH(CAST(YEAR(f_date) AS SIGNED INTEGER)) PARTITIONS 2;
|
||||
PARTITION BY HASH(YEAR(f_date)) PARTITIONS 2;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`f_date` date DEFAULT NULL,
|
||||
`f_varchar` varchar(30) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (CAST(YEAR(f_date) AS SIGNED INTEGER)) PARTITIONS 2 */
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (YEAR(f_date)) PARTITIONS 2 */
|
||||
hello/master-data/test/t1#P#p0.MYD
|
||||
hello/master-data/test/t1#P#p0.MYI
|
||||
hello/master-data/test/t1#P#p1.MYD
|
||||
@ -29,7 +29,7 @@ Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`f_date` date DEFAULT NULL,
|
||||
`f_varchar` varchar(30) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (CAST(YEAR(f_date) AS SIGNED INTEGER)) PARTITIONS 1 */
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (YEAR(f_date)) PARTITIONS 1 */
|
||||
hello/master-data/test/t1#P#p0.MYD
|
||||
hello/master-data/test/t1#P#p0.MYI
|
||||
hello/master-data/test/t1.frm
|
||||
|
@ -676,25 +676,6 @@ f_int1 f_int2
|
||||
8 8
|
||||
9 9
|
||||
drop table t1;
|
||||
create table t1 (a char(10) binary)
|
||||
partition by list(length(a))
|
||||
(partition p1 values in (1),
|
||||
partition p2 values in (2),
|
||||
partition p3 values in (3),
|
||||
partition p4 values in (4),
|
||||
partition p5 values in (5)
|
||||
);
|
||||
insert into t1 values ('a'),('bb'),('ccc'),('dddd'),('eeEee');
|
||||
select * from t1 where a>='a' and a <= 'dddd';
|
||||
a
|
||||
a
|
||||
bb
|
||||
ccc
|
||||
dddd
|
||||
explain partitions select * from t1 where a>='a' and a <= 'dddd';
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p1,p2,p3,p4,p5 ALL NULL NULL NULL NULL 5 Using where
|
||||
drop table t1;
|
||||
create table t1 (f_int1 integer) partition by list(abs(mod(f_int1,2)))
|
||||
subpartition by hash(f_int1) subpartitions 2
|
||||
(
|
||||
@ -847,23 +828,58 @@ explain partitions select * from t1 where a = 18446744073709551614;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
drop table t1;
|
||||
create table t1 (a int)
|
||||
partition by range((a & 0xFF) << 56) (
|
||||
partition p0 values less than (0x40 << 56),
|
||||
partition p1 values less than (0x80 << 56),
|
||||
partition p2 values less than (0xFF << 56)
|
||||
create table t1 (a int)
|
||||
partition by range(a) (
|
||||
partition p0 values less than (64),
|
||||
partition p1 values less than (128),
|
||||
partition p2 values less than (255)
|
||||
);
|
||||
create table t2 (a int)
|
||||
partition by range(a+0) (
|
||||
partition p0 values less than (64),
|
||||
partition p1 values less than (128),
|
||||
partition p2 values less than (255)
|
||||
);
|
||||
insert into t1 values (0x20), (0x20), (0x41), (0x41), (0xFE), (0xFE);
|
||||
insert into t2 values (0x20), (0x20), (0x41), (0x41), (0xFE), (0xFE);
|
||||
explain partitions select * from t1 where a=0;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 2 Using where
|
||||
explain partitions select * from t2 where a=0;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 p0 ALL NULL NULL NULL NULL 2 Using where
|
||||
explain partitions select * from t1 where a=0xFE;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p2 ALL NULL NULL NULL NULL 2 Using where
|
||||
explain partitions select * from t1 where a>0xFE and a<= 0xFF;
|
||||
explain partitions select * from t2 where a=0xFE;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 p2 ALL NULL NULL NULL NULL 2 Using where
|
||||
explain partitions select * from t1 where a > 0xFE AND a <= 0xFF;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
explain partitions select * from t2 where a > 0xFE AND a <= 0xFF;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
explain partitions select * from t1 where a >= 0xFE AND a <= 0xFF;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p2 ALL NULL NULL NULL NULL 2 Using where
|
||||
explain partitions select * from t2 where a >= 0xFE AND a <= 0xFF;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 p2 ALL NULL NULL NULL NULL 2 Using where
|
||||
explain partitions select * from t1 where a < 64 AND a >= 63;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 2 Using where
|
||||
explain partitions select * from t2 where a < 64 AND a >= 63;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 p0 ALL NULL NULL NULL NULL 2 Using where
|
||||
explain partitions select * from t1 where a <= 64 AND a >= 63;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p0,p1 ALL NULL NULL NULL NULL 4 Using where
|
||||
explain partitions select * from t2 where a <= 64 AND a >= 63;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 p0,p1 ALL NULL NULL NULL NULL 4 Using where
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
create table t1(a bigint unsigned not null) partition by range(a+0) (
|
||||
partition p1 values less than (10),
|
||||
partition p2 values less than (20),
|
||||
|
@ -1,38 +1,4 @@
|
||||
drop table if exists t1;
|
||||
create table t1 (a varchar(10) charset latin1 collate latin1_bin, b int)
|
||||
partition by range (length(a) * b)
|
||||
(partition p0 values less than (2), partition p1 values less than (400));
|
||||
insert into t1 values ('a ', 2),('a',3);
|
||||
drop table t1;
|
||||
create table t1 (a varchar(10) charset latin1 collate latin1_bin, b int)
|
||||
partition by range (b* length(a) * b)
|
||||
(partition p0 values less than (2), partition p1 values less than (400));
|
||||
insert into t1 values ('a ', 2),('a',3);
|
||||
drop table t1;
|
||||
create table t1 (a varchar(10) charset latin1 collate latin1_bin,
|
||||
b varchar(10) charset latin1 collate latin1_bin)
|
||||
partition by range (length(b) * length(a))
|
||||
(partition p0 values less than (2), partition p1 values less than (400));
|
||||
insert into t1 values ('a ', 'b '),('a','b');
|
||||
drop table t1;
|
||||
create table t1 (a varchar(10) charset latin1 collate latin1_bin,
|
||||
b varchar(10) charset latin1 collate latin1_bin)
|
||||
partition by range (length(a) * length(b))
|
||||
(partition p0 values less than (2), partition p1 values less than (400));
|
||||
insert into t1 values ('a ', 'b '),('a','b');
|
||||
drop table t1;
|
||||
create table t1 (a varchar(10) charset latin1 collate latin1_bin,
|
||||
b varchar(10) charset latin1 collate latin1_bin, c int)
|
||||
partition by range (length(a) * c)
|
||||
(partition p0 values less than (2), partition p1 values less than (400));
|
||||
insert into t1 values ('a ', 'b ', 2),('a','b', 3);
|
||||
drop table t1;
|
||||
create table t1 (a varchar(10) charset latin1 collate latin1_bin,
|
||||
b varchar(10) charset latin1 collate latin1_bin, c int)
|
||||
partition by range (c * length(a))
|
||||
(partition p0 values less than (2), partition p1 values less than (400));
|
||||
insert into t1 values ('a ', 'b ', 2),('a','b', 3);
|
||||
drop table t1;
|
||||
create table t1 (a int unsigned)
|
||||
partition by range (a)
|
||||
(partition pnull values less than (0),
|
||||
@ -109,7 +75,7 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 pnull_pnullsp0,pnull_pnullsp1,p0_p0sp0,p0_p0sp1 ALL NULL NULL NULL NULL 4 Using where
|
||||
explain partitions select * from t1 where a > 1;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p1_p1sp0,p1_p1sp1 ALL NULL NULL NULL NULL 2 Using where
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (
|
||||
a int not null,
|
||||
@ -743,45 +709,3 @@ WHERE (a >= '2004-07-01' AND a <= '2004-09-30') OR
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p407,p408,p409,p507,p508,p509 ALL NULL NULL NULL NULL 18 Using where
|
||||
DROP TABLE t1;
|
||||
create table t1 (a varchar(20))
|
||||
partition by range (crc32(md5(a)))
|
||||
(partition p0 values less than (100),
|
||||
partition p1 values less than maxvalue);
|
||||
insert into t1 values ("12345678901234567890");
|
||||
insert into t1 values ("A2345678901234567890");
|
||||
insert into t1 values ("B2345678901234567890");
|
||||
insert into t1 values ("1234567890123456789");
|
||||
insert into t1 values ("1234567890123456");
|
||||
select * from t1;
|
||||
a
|
||||
12345678901234567890
|
||||
A2345678901234567890
|
||||
B2345678901234567890
|
||||
1234567890123456789
|
||||
1234567890123456
|
||||
explain partitions select * from t1 where a = "12345678901234567890";
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p1 ALL NULL NULL NULL NULL 5 Using where
|
||||
explain partitions select * from t1 where a = "12345678901234567890" OR
|
||||
a = "A2345678901234567890" OR
|
||||
a = "B2345678901234567890" OR
|
||||
a = "C2345678901234567890";
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p1 ALL NULL NULL NULL NULL 5 Using where
|
||||
explain partitions select * from t1 where a = "01234567890123456";
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 p1 ALL NULL NULL NULL NULL 5 Using where
|
||||
select * from t1 where a = "01234567890123456";
|
||||
a
|
||||
select * from t1 where a = "12345678901234567890" OR
|
||||
a = "A2345678901234567890" OR
|
||||
a = "B2345678901234567890" OR
|
||||
a = "C2345678901234567890";
|
||||
a
|
||||
12345678901234567890
|
||||
A2345678901234567890
|
||||
B2345678901234567890
|
||||
select * from t1 where a = "12345678901234567890";
|
||||
a
|
||||
12345678901234567890
|
||||
drop table t1;
|
||||
|
@ -3492,7 +3492,7 @@ SELECT 0.9888889889 * 1.011111411911;
|
||||
0.9998769417899202067879
|
||||
prepare stmt from 'select 1 as " a "';
|
||||
Warnings:
|
||||
Warning 1548 Leading spaces are removed from name ' a '
|
||||
Warning 1466 Leading spaces are removed from name ' a '
|
||||
execute stmt;
|
||||
a
|
||||
1
|
||||
|
@ -1198,7 +1198,7 @@ drop database mysqltest;
|
||||
show full plugin;
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Warning 1543 The syntax 'SHOW PLUGIN' is deprecated and will be removed in MySQL 5.2. Please use 'SHOW PLUGINS' instead
|
||||
Warning 1287 The syntax 'SHOW PLUGIN' is deprecated and will be removed in MySQL 5.2. Please use 'SHOW PLUGINS' instead
|
||||
show plugin;
|
||||
show plugins;
|
||||
create database `mysqlttest\1`;
|
||||
|
@ -5665,7 +5665,7 @@ drop function if exists pi;
|
||||
create function pi() returns varchar(50)
|
||||
return "pie, my favorite desert.";
|
||||
Warnings:
|
||||
Note 1581 This function 'pi' has the same name as a native function
|
||||
Note 1582 This function 'pi' has the same name as a native function
|
||||
SET @save_sql_mode=@@sql_mode;
|
||||
SET SQL_MODE='IGNORE_SPACE';
|
||||
select pi(), pi ();
|
||||
@ -5714,15 +5714,15 @@ use test;
|
||||
create function `database`() returns varchar(50)
|
||||
return "Stored function database";
|
||||
Warnings:
|
||||
Note 1581 This function 'database' has the same name as a native function
|
||||
Note 1582 This function 'database' has the same name as a native function
|
||||
create function `current_user`() returns varchar(50)
|
||||
return "Stored function current_user";
|
||||
Warnings:
|
||||
Note 1581 This function 'current_user' has the same name as a native function
|
||||
Note 1582 This function 'current_user' has the same name as a native function
|
||||
create function md5(x varchar(50)) returns varchar(50)
|
||||
return "Stored function md5";
|
||||
Warnings:
|
||||
Note 1581 This function 'md5' has the same name as a native function
|
||||
Note 1582 This function 'md5' has the same name as a native function
|
||||
SET SQL_MODE='IGNORE_SPACE';
|
||||
select database(), database ();
|
||||
database() database ()
|
||||
|
@ -7,11 +7,11 @@ return 1;
|
||||
create function x() returns int
|
||||
return 2;
|
||||
Warnings:
|
||||
Note 1581 This function 'x' has the same name as a native function
|
||||
Note 1582 This function 'x' has the same name as a native function
|
||||
create function y() returns int
|
||||
return 3;
|
||||
Warnings:
|
||||
Note 1581 This function 'y' has the same name as a native function
|
||||
Note 1582 This function 'y' has the same name as a native function
|
||||
select a();
|
||||
a()
|
||||
1
|
||||
|
@ -535,7 +535,7 @@ use db_bug7787|
|
||||
CREATE PROCEDURE p1()
|
||||
SHOW INNODB STATUS; |
|
||||
Warnings:
|
||||
Warning 1543 The syntax 'SHOW INNODB STATUS' is deprecated and will be removed in MySQL 5.2. Please use 'SHOW ENGINE INNODB STATUS' instead
|
||||
Warning 1287 The syntax 'SHOW INNODB STATUS' is deprecated and will be removed in MySQL 5.2. Please use 'SHOW ENGINE INNODB STATUS' instead
|
||||
GRANT EXECUTE ON PROCEDURE p1 TO user_bug7787@localhost|
|
||||
DROP DATABASE db_bug7787|
|
||||
drop user user_bug7787@localhost|
|
||||
|
@ -1481,6 +1481,34 @@ drop table t1;
|
||||
SELECT 1.000000000000 * 99.999999999998 / 100 a,1.000000000000 * (99.999999999998 / 100) b;
|
||||
a b
|
||||
0.9999999999999800000000000000 0.9999999999999800000000000000
|
||||
SELECT CAST(1 AS decimal(65,10));
|
||||
CAST(1 AS decimal(65,10))
|
||||
1.0000000000
|
||||
SELECT CAST(1 AS decimal(66,10));
|
||||
ERROR 42000: Too big precision 66 specified for column '1'. Maximum is 65.
|
||||
SELECT CAST(1 AS decimal(65,30));
|
||||
CAST(1 AS decimal(65,30))
|
||||
1.000000000000000000000000000000
|
||||
SELECT CAST(1 AS decimal(65,31));
|
||||
ERROR 42000: Too big scale 31 specified for column '1'. Maximum is 30.
|
||||
CREATE TABLE t1 (a int DEFAULT NULL, b int DEFAULT NULL);
|
||||
INSERT INTO t1 VALUES (3,30), (1,10), (2,10);
|
||||
SELECT a+CAST(1 AS decimal(65,30)) AS aa, SUM(b) FROM t1 GROUP BY aa;
|
||||
aa SUM(b)
|
||||
2.000000000000000000000000000000 10
|
||||
3.000000000000000000000000000000 10
|
||||
4.000000000000000000000000000000 30
|
||||
SELECT a+CAST(1 AS decimal(65,31)) AS aa, SUM(b) FROM t1 GROUP BY aa;
|
||||
ERROR 42000: Too big scale 31 specified for column '1'. Maximum is 30.
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a int DEFAULT NULL, b int DEFAULT NULL);
|
||||
INSERT INTO t1 VALUES (3,30), (1,10), (2,10);
|
||||
SET @a= CAST(1 AS decimal);
|
||||
SELECT 1 FROM t1 GROUP BY @b := @a, @b;
|
||||
1
|
||||
1
|
||||
1
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
select cast(143.481 as decimal(4,1));
|
||||
cast(143.481 as decimal(4,1))
|
||||
|
@ -101,13 +101,13 @@ create table t1 (t2 timestamp(2), t4 timestamp(4), t6 timestamp(6),
|
||||
t8 timestamp(8), t10 timestamp(10), t12 timestamp(12),
|
||||
t14 timestamp(14));
|
||||
Warnings:
|
||||
Warning 1543 The syntax 'TIMESTAMP(2)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
||||
Warning 1543 The syntax 'TIMESTAMP(4)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
||||
Warning 1543 The syntax 'TIMESTAMP(6)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
||||
Warning 1543 The syntax 'TIMESTAMP(8)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
||||
Warning 1543 The syntax 'TIMESTAMP(10)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
||||
Warning 1543 The syntax 'TIMESTAMP(12)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
||||
Warning 1543 The syntax 'TIMESTAMP(14)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
||||
Warning 1287 The syntax 'TIMESTAMP(2)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
||||
Warning 1287 The syntax 'TIMESTAMP(4)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
||||
Warning 1287 The syntax 'TIMESTAMP(6)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
||||
Warning 1287 The syntax 'TIMESTAMP(8)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
||||
Warning 1287 The syntax 'TIMESTAMP(10)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
||||
Warning 1287 The syntax 'TIMESTAMP(12)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
||||
Warning 1287 The syntax 'TIMESTAMP(14)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
||||
insert t1 values (0,0,0,0,0,0,0),
|
||||
("1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59",
|
||||
"1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59",
|
||||
|
@ -3497,6 +3497,53 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using where
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
person_id int NOT NULL PRIMARY KEY,
|
||||
username varchar(40) default NULL,
|
||||
status_flg char(1) NOT NULL default 'A'
|
||||
);
|
||||
CREATE TABLE t2 (
|
||||
person_role_id int NOT NULL auto_increment PRIMARY KEY,
|
||||
role_id int NOT NULL,
|
||||
person_id int NOT NULL,
|
||||
INDEX idx_person_id (person_id),
|
||||
INDEX idx_role_id (role_id)
|
||||
);
|
||||
CREATE TABLE t3 (
|
||||
role_id int NOT NULL auto_increment PRIMARY KEY,
|
||||
role_name varchar(100) default NULL,
|
||||
app_name varchar(40) NOT NULL,
|
||||
INDEX idx_app_name(app_name)
|
||||
);
|
||||
CREATE VIEW v1 AS
|
||||
SELECT profile.person_id AS person_id
|
||||
FROM t1 profile, t2 userrole, t3 role
|
||||
WHERE userrole.person_id = profile.person_id AND
|
||||
role.role_id = userrole.role_id AND
|
||||
profile.status_flg = 'A'
|
||||
ORDER BY profile.person_id,role.app_name,role.role_name;
|
||||
INSERT INTO t1 VALUES
|
||||
(6,'Sw','A'), (-1136332546,'ols','e'), (0,' *\n','0'),
|
||||
(-717462680,'ENTS Ta','0'), (-904346964,'ndard SQL\n','0');
|
||||
INSERT INTO t2 VALUES
|
||||
(1,3,6),(2,4,7),(3,5,8),(4,6,9),(5,1,6),(6,1,7),(7,1,8),(8,1,9),(9,1,10);
|
||||
INSERT INTO t3 VALUES
|
||||
(1,'NUCANS_APP_USER','NUCANSAPP'),(2,'NUCANS_TRGAPP_USER','NUCANSAPP'),
|
||||
(3,'IA_INTAKE_COORDINATOR','IACANS'),(4,'IA_SCREENER','IACANS'),
|
||||
(5,'IA_SUPERVISOR','IACANS'),(6,'IA_READONLY','IACANS'),
|
||||
(7,'SOC_USER','SOCCANS'),(8,'CAYIT_USER','CAYITCANS'),
|
||||
(9,'RTOS_DCFSPOS_SUPERVISOR','RTOS');
|
||||
EXPLAIN SELECT t.person_id AS a, t.person_id AS b FROM v1 t WHERE t.person_id=6;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE profile const PRIMARY PRIMARY 4 const 1 Using temporary; Using filesort
|
||||
1 SIMPLE userrole ref idx_person_id,idx_role_id idx_person_id 4 const 2
|
||||
1 SIMPLE role eq_ref PRIMARY PRIMARY 4 test.userrole.role_id 1
|
||||
SELECT t.person_id AS a, t.person_id AS b FROM v1 t WHERE t.person_id=6;
|
||||
a b
|
||||
6 6
|
||||
6 6
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1,t2,t3;
|
||||
End of 5.0 tests.
|
||||
DROP DATABASE IF EXISTS `d-1`;
|
||||
CREATE DATABASE `d-1`;
|
||||
|
@ -168,7 +168,7 @@ max_error_count 10
|
||||
drop table t1;
|
||||
set table_type=MYISAM;
|
||||
Warnings:
|
||||
Warning 1543 The syntax 'table_type' is deprecated and will be removed in MySQL 5.2. Please use 'storage_engine' instead
|
||||
Warning 1287 The syntax 'table_type' is deprecated and will be removed in MySQL 5.2. Please use 'storage_engine' instead
|
||||
create table t1 (a int);
|
||||
insert into t1 (a) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
|
||||
update t1 set a='abc';
|
||||
|
@ -647,32 +647,32 @@ select extractValue('<a>a','/a');
|
||||
extractValue('<a>a','/a')
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1513 Incorrect XML value: 'parse error at line 1 pos 5: unexpected END-OF-INPUT'
|
||||
Warning 1522 Incorrect XML value: 'parse error at line 1 pos 5: unexpected END-OF-INPUT'
|
||||
select extractValue('<a>a<','/a');
|
||||
extractValue('<a>a<','/a')
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1513 Incorrect XML value: 'parse error at line 1 pos 6: END-OF-INPUT unexpected (ident or '/' wanted)'
|
||||
Warning 1522 Incorrect XML value: 'parse error at line 1 pos 6: END-OF-INPUT unexpected (ident or '/' wanted)'
|
||||
select extractValue('<a>a</','/a');
|
||||
extractValue('<a>a</','/a')
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1513 Incorrect XML value: 'parse error at line 1 pos 7: END-OF-INPUT unexpected (ident wanted)'
|
||||
Warning 1522 Incorrect XML value: 'parse error at line 1 pos 7: END-OF-INPUT unexpected (ident wanted)'
|
||||
select extractValue('<a>a</a','/a');
|
||||
extractValue('<a>a</a','/a')
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1513 Incorrect XML value: 'parse error at line 1 pos 8: END-OF-INPUT unexpected ('>' wanted)'
|
||||
Warning 1522 Incorrect XML value: 'parse error at line 1 pos 8: END-OF-INPUT unexpected ('>' wanted)'
|
||||
select extractValue('<a>a</a></b>','/a');
|
||||
extractValue('<a>a</a></b>','/a')
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1513 Incorrect XML value: 'parse error at line 1 pos 12: '</b>' unexpected (END-OF-INPUT wanted)'
|
||||
Warning 1522 Incorrect XML value: 'parse error at line 1 pos 12: '</b>' unexpected (END-OF-INPUT wanted)'
|
||||
select extractValue('<a b=>a</a>','/a');
|
||||
extractValue('<a b=>a</a>','/a')
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1513 Incorrect XML value: 'parse error at line 1 pos 7: '>' unexpected (ident or string wanted)'
|
||||
Warning 1522 Incorrect XML value: 'parse error at line 1 pos 7: '>' unexpected (ident or string wanted)'
|
||||
select extractValue('<e>1</e>','position()');
|
||||
ERROR HY000: XPATH syntax error: ''
|
||||
select extractValue('<e>1</e>','last()');
|
||||
@ -723,17 +723,17 @@ select extractValue('<zot><tim0><01>10:39:15</01><02>140</02></tim0></zot>','//*
|
||||
extractValue('<zot><tim0><01>10:39:15</01><02>140</02></tim0></zot>','//*')
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1513 Incorrect XML value: 'parse error at line 1 pos 13: unknown token unexpected (ident or '/' wanted)'
|
||||
Warning 1522 Incorrect XML value: 'parse error at line 1 pos 13: unknown token unexpected (ident or '/' wanted)'
|
||||
select extractValue('<.>test</.>','//*');
|
||||
extractValue('<.>test</.>','//*')
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1513 Incorrect XML value: 'parse error at line 1 pos 2: unknown token unexpected (ident or '/' wanted)'
|
||||
Warning 1522 Incorrect XML value: 'parse error at line 1 pos 2: unknown token unexpected (ident or '/' wanted)'
|
||||
select extractValue('<->test</->','//*');
|
||||
extractValue('<->test</->','//*')
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1513 Incorrect XML value: 'parse error at line 1 pos 2: unknown token unexpected (ident or '/' wanted)'
|
||||
Warning 1522 Incorrect XML value: 'parse error at line 1 pos 2: unknown token unexpected (ident or '/' wanted)'
|
||||
select extractValue('<:>test</:>','//*');
|
||||
extractValue('<:>test</:>','//*')
|
||||
test
|
||||
|
@ -5,20 +5,20 @@ INITIAL_SIZE 16M
|
||||
UNDO_BUFFER_SIZE = 1M
|
||||
ENGINE=MYISAM;
|
||||
Warnings:
|
||||
Error 1466 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
|
||||
Error 1475 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
|
||||
ALTER LOGFILE GROUP lg1
|
||||
ADD UNDOFILE 'undofile02.dat'
|
||||
INITIAL_SIZE = 4M
|
||||
ENGINE=XYZ;
|
||||
Warnings:
|
||||
Warning 1286 Unknown table engine 'XYZ'
|
||||
Error 1466 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
|
||||
Error 1475 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
|
||||
CREATE TABLESPACE ts1
|
||||
ADD DATAFILE 'datafile.dat'
|
||||
USE LOGFILE GROUP lg1
|
||||
INITIAL_SIZE 12M;
|
||||
Warnings:
|
||||
Error 1466 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
|
||||
Error 1475 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
|
||||
set storage_engine=ndb;
|
||||
CREATE LOGFILE GROUP lg1
|
||||
ADD UNDOFILE 'undofile.dat'
|
||||
|
@ -16,7 +16,7 @@ ERROR HY000: Failed to create LOGFILE GROUP
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Error 1296 Got error 1514 'Currently there is a limit of one logfile group' from NDB
|
||||
Error 1516 Failed to create LOGFILE GROUP
|
||||
Error 1525 Failed to create LOGFILE GROUP
|
||||
CREATE LOGFILE GROUP lg1
|
||||
ADD UNDOFILE 'undofile.dat'
|
||||
INITIAL_SIZE 1M
|
||||
|
@ -463,7 +463,7 @@ drop table t1;
|
||||
End of 4.1 tests
|
||||
CREATE TABLE t1 (name VARCHAR(100), square GEOMETRY);
|
||||
Warnings:
|
||||
Error 1466 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK'
|
||||
Error 1475 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK'
|
||||
INSERT INTO t1 VALUES("center", GeomFromText('POLYGON (( 0 0, 0 2, 2 2, 2 0, 0 0))'));
|
||||
INSERT INTO t1 VALUES("small", GeomFromText('POLYGON (( 0 0, 0 1, 1 1, 1 0, 0 0))'));
|
||||
INSERT INTO t1 VALUES("big", GeomFromText('POLYGON (( 0 0, 0 3, 3 3, 3 0, 0 0))'));
|
||||
@ -1013,7 +1013,7 @@ drop table t1;
|
||||
End of 4.1 tests
|
||||
CREATE TABLE t1 (name VARCHAR(100), square GEOMETRY);
|
||||
Warnings:
|
||||
Error 1466 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK'
|
||||
Error 1475 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK'
|
||||
INSERT INTO t1 VALUES("center", GeomFromText('POLYGON (( 0 0, 0 2, 2 2, 2 0, 0 0))'));
|
||||
INSERT INTO t1 VALUES("small", GeomFromText('POLYGON (( 0 0, 0 1, 1 1, 1 0, 0 0))'));
|
||||
INSERT INTO t1 VALUES("big", GeomFromText('POLYGON (( 0 0, 0 3, 3 3, 3 0, 0 0))'));
|
||||
|
@ -8,7 +8,7 @@ ENGINE=NDB;
|
||||
ERROR HY000: Can't create table 'test.t1' (errno: 138)
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Error 1466 Table storage engine 'ndbcluster' does not support the create option 'Row format FIXED incompatible with variable sized attribute'
|
||||
Error 1475 Table storage engine 'ndbcluster' does not support the create option 'Row format FIXED incompatible with variable sized attribute'
|
||||
Error 1005 Can't create table 'test.t1' (errno: 138)
|
||||
CREATE TABLE t1
|
||||
( a INT KEY,
|
||||
|
@ -11,7 +11,7 @@ ERROR HY000: Failed to create LOGFILE GROUP
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB
|
||||
Error 1516 Failed to create LOGFILE GROUP
|
||||
Error 1525 Failed to create LOGFILE GROUP
|
||||
create table t1 (a int key, b int unique, c int) engine ndb;
|
||||
CREATE LOGFILE GROUP lg1
|
||||
ADD UNDOFILE 'undofile.dat'
|
||||
@ -27,14 +27,14 @@ ERROR HY000: Failed to create TABLESPACE
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB
|
||||
Error 1516 Failed to create TABLESPACE
|
||||
Error 1525 Failed to create TABLESPACE
|
||||
DROP LOGFILE GROUP lg1
|
||||
ENGINE =NDB;
|
||||
ERROR HY000: Failed to drop LOGFILE GROUP
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB
|
||||
Error 1517 Failed to drop LOGFILE GROUP
|
||||
Error 1526 Failed to drop LOGFILE GROUP
|
||||
CREATE TABLESPACE ts1
|
||||
ADD DATAFILE 'datafile.dat'
|
||||
USE LOGFILE GROUP lg1
|
||||
@ -47,7 +47,7 @@ ERROR HY000: Failed to alter: DROP DATAFILE
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB
|
||||
Error 1521 Failed to alter: DROP DATAFILE
|
||||
Error 1530 Failed to alter: DROP DATAFILE
|
||||
ALTER TABLESPACE ts1
|
||||
DROP DATAFILE 'datafile.dat'
|
||||
ENGINE NDB;
|
||||
@ -57,7 +57,7 @@ ERROR HY000: Failed to drop TABLESPACE
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB
|
||||
Error 1517 Failed to drop TABLESPACE
|
||||
Error 1526 Failed to drop TABLESPACE
|
||||
DROP TABLESPACE ts1
|
||||
ENGINE NDB;
|
||||
DROP LOGFILE GROUP lg1
|
||||
|
@ -25,7 +25,7 @@ drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
|
||||
create table t1 (a int key, b int unique, c int) engine ndb;
|
||||
# Bug #27712 Single user mode. Creating logfile group and tablespace is allowed
|
||||
# - before bug fix these would succeed
|
||||
--error 1516
|
||||
--error ER_CREATE_FILEGROUP_FAILED
|
||||
CREATE LOGFILE GROUP lg1
|
||||
ADD UNDOFILE 'undofile.dat'
|
||||
INITIAL_SIZE 16M
|
||||
|
@ -72,7 +72,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -90,7 +90,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -134,7 +134,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -152,7 +152,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -196,7 +196,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -214,7 +214,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -257,7 +257,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -275,7 +275,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3;
|
||||
*** Drop t6 ***
|
||||
@ -369,7 +369,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -387,7 +387,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -430,7 +430,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -448,7 +448,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -755,7 +755,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -773,7 +773,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
|
@ -72,7 +72,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -90,7 +90,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -134,7 +134,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -152,7 +152,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -196,7 +196,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -214,7 +214,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -257,7 +257,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -275,7 +275,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3;
|
||||
*** Drop t6 ***
|
||||
@ -369,7 +369,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -387,7 +387,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -430,7 +430,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -448,7 +448,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -755,7 +755,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -773,7 +773,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
|
@ -44,7 +44,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1586
|
||||
Last_Errno 1587
|
||||
Last_Error The incident LOST_EVENTS occured on the master. Message: <none>
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -62,7 +62,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1586
|
||||
Last_SQL_Errno 1587
|
||||
Last_SQL_Error The incident LOST_EVENTS occured on the master. Message: <none>
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
|
||||
START SLAVE;
|
||||
|
@ -165,7 +165,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Table width mismatch - received 2 columns, test.t2 has 1 columns
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -183,7 +183,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Table width mismatch - received 2 columns, test.t2 has 1 columns
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -208,7 +208,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 3, test.t4 has type 4
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -226,7 +226,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 3, test.t4 has type 4
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -251,7 +251,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Column 1 type mismatch - received type 3, test.t5 has type 4
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -269,7 +269,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Column 1 type mismatch - received type 3, test.t5 has type 4
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -294,7 +294,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 3, test.t6 has type 4
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -312,7 +312,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 3, test.t6 has type 4
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
|
@ -165,7 +165,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Table width mismatch - received 2 columns, test.t2 has 1 columns
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -183,7 +183,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Table width mismatch - received 2 columns, test.t2 has 1 columns
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -208,7 +208,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 3, test.t4 has type 4
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -226,7 +226,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 3, test.t4 has type 4
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -251,7 +251,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Column 1 type mismatch - received type 3, test.t5 has type 4
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -269,7 +269,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Column 1 type mismatch - received type 3, test.t5 has type 4
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -294,7 +294,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 3, test.t6 has type 4
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -312,7 +312,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 3, test.t6 has type 4
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
|
@ -193,7 +193,7 @@ end|
|
||||
ERROR HY000: You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
|
||||
set global log_bin_trust_routine_creators=1;
|
||||
Warnings:
|
||||
Warning 1543 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead
|
||||
Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead
|
||||
set global log_bin_trust_function_creators=0;
|
||||
set global log_bin_trust_function_creators=1;
|
||||
set global log_bin_trust_function_creators=1;
|
||||
|
@ -72,7 +72,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -90,7 +90,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -134,7 +134,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -152,7 +152,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -196,7 +196,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -214,7 +214,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -257,7 +257,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -275,7 +275,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3;
|
||||
*** Drop t6 ***
|
||||
@ -369,7 +369,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -387,7 +387,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -430,7 +430,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -448,7 +448,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -756,7 +756,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1523
|
||||
Last_Errno 1532
|
||||
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -774,7 +774,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1523
|
||||
Last_SQL_Errno 1532
|
||||
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
|
25
mysql-test/t/archive-big.test
Normal file
25
mysql-test/t/archive-big.test
Normal file
File diff suppressed because one or more lines are too long
@ -1550,3 +1550,12 @@ insert into t1 values (1);
|
||||
repair table t1 use_frm;
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# BUG#29207 - archive table reported as corrupt by check table
|
||||
#
|
||||
create table t1(a longblob) engine=archive;
|
||||
insert into t1 set a='';
|
||||
insert into t1 set a='a';
|
||||
check table t1 extended;
|
||||
drop table t1;
|
||||
|
@ -307,7 +307,7 @@ select -(9223372036854775808);
|
||||
select -((9223372036854775808));
|
||||
select -(-(9223372036854775808));
|
||||
--disable_metadata
|
||||
--endble_ps_protocol
|
||||
--enable_ps_protocol
|
||||
select --9223372036854775808, ---9223372036854775808, ----9223372036854775808;
|
||||
select -(-9223372036854775808), -(-(-9223372036854775808));
|
||||
|
||||
|
@ -1675,6 +1675,17 @@ insert into bug21328 values (1,NULL,NULL);
|
||||
alter table bug21328 engine=myisam;
|
||||
drop table bug21328;
|
||||
|
||||
#
|
||||
# BUG#28971 - ALTER TABLE followed by UPDATE for a CSV table make server
|
||||
# crash
|
||||
#
|
||||
create table t1(a blob, b int) engine=csv;
|
||||
insert into t1 values('a', 1);
|
||||
flush tables;
|
||||
update t1 set b=2;
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #29353: negative values
|
||||
#
|
||||
|
@ -24,3 +24,4 @@ ctype_big5 : BUG#26711 2007-06-21 Lars Test has never worked on Do
|
||||
|
||||
|
||||
mysql_upgrade : Bug#28560 test links to /usr/local/mysql/lib libraries, causes non-determinism and failures on ABI breakage
|
||||
federated_innodb : Bug#29522 failed assertion in binlog_close_connection()
|
||||
|
@ -1630,4 +1630,57 @@ connection slave;
|
||||
drop table federated.t1;
|
||||
|
||||
|
||||
#
|
||||
# BUG#21019 Federated Engine does not support REPLACE/INSERT IGNORE/UPDATE IGNORE
|
||||
#
|
||||
connection slave;
|
||||
create table federated.t1 (a int primary key, b varchar(64))
|
||||
DEFAULT CHARSET=utf8;
|
||||
connection master;
|
||||
--replace_result $SLAVE_MYPORT SLAVE_PORT
|
||||
eval create table federated.t1 (a int primary key, b varchar(64))
|
||||
ENGINE=FEDERATED
|
||||
connection='mysql://root@127.0.0.1:$SLAVE_MYPORT/federated/t1'
|
||||
DEFAULT CHARSET=utf8;
|
||||
|
||||
insert ignore into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe");
|
||||
select * from federated.t1;
|
||||
|
||||
truncate federated.t1;
|
||||
replace into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe");
|
||||
select * from federated.t1;
|
||||
|
||||
update ignore federated.t1 set a=a+1;
|
||||
select * from federated.t1;
|
||||
|
||||
drop table federated.t1;
|
||||
connection slave;
|
||||
drop table federated.t1;
|
||||
|
||||
#
|
||||
# BUG#25511 Federated Insert failures.
|
||||
#
|
||||
# When the user performs a INSERT...ON DUPLICATE KEY UPDATE, we want
|
||||
# it to fail if a duplicate key exists instead of ignoring it.
|
||||
#
|
||||
connection slave;
|
||||
create table federated.t1 (a int primary key, b varchar(64))
|
||||
DEFAULT CHARSET=utf8;
|
||||
connection master;
|
||||
--replace_result $SLAVE_MYPORT SLAVE_PORT
|
||||
eval create table federated.t1 (a int primary key, b varchar(64))
|
||||
ENGINE=FEDERATED
|
||||
connection='mysql://root@127.0.0.1:$SLAVE_MYPORT/federated/t1'
|
||||
DEFAULT CHARSET=utf8;
|
||||
|
||||
--error ER_DUP_KEY
|
||||
insert into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe")
|
||||
on duplicate key update a=a+100;
|
||||
select * from federated.t1;
|
||||
|
||||
drop table federated.t1;
|
||||
connection slave;
|
||||
drop table federated.t1;
|
||||
|
||||
|
||||
source include/federated_cleanup.inc;
|
||||
|
1
mysql-test/t/federated_innodb-slave.opt
Normal file
1
mysql-test/t/federated_innodb-slave.opt
Normal file
@ -0,0 +1 @@
|
||||
--innodb
|
34
mysql-test/t/federated_innodb.test
Normal file
34
mysql-test/t/federated_innodb.test
Normal file
@ -0,0 +1,34 @@
|
||||
source include/federated.inc;
|
||||
source include/have_innodb.inc;
|
||||
|
||||
#
|
||||
# Bug#25513 Federated transaction failures
|
||||
#
|
||||
connection slave;
|
||||
create table federated.t1 (a int primary key, b varchar(64))
|
||||
engine=myisam;
|
||||
connection master;
|
||||
--replace_result $SLAVE_MYPORT SLAVE_PORT
|
||||
eval create table federated.t1 (a int primary key, b varchar(64))
|
||||
engine=federated
|
||||
connection='mysql://root@127.0.0.1:$SLAVE_MYPORT/federated/t1';
|
||||
|
||||
--error ER_DUP_KEY
|
||||
insert into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe");
|
||||
select * from federated.t1;
|
||||
|
||||
connection slave;
|
||||
truncate federated.t1;
|
||||
alter table federated.t1 engine=innodb;
|
||||
connection master;
|
||||
|
||||
--error ER_DUP_KEY
|
||||
insert into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe");
|
||||
select * from federated.t1;
|
||||
|
||||
drop table federated.t1;
|
||||
connection slave;
|
||||
drop table federated.t1;
|
||||
|
||||
|
||||
source include/federated_cleanup.inc;
|
24
mysql-test/t/fulltext3.test
Normal file
24
mysql-test/t/fulltext3.test
Normal file
@ -0,0 +1,24 @@
|
||||
--source include/have_gbk.inc
|
||||
#
|
||||
# test of new fulltext search features
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
|
||||
#
|
||||
# BUG#29299 - repeatable myisam fulltext index corruption
|
||||
#
|
||||
CREATE TABLE t1(a VARCHAR(255) CHARACTER SET gbk, FULLTEXT(a));
|
||||
SET NAMES utf8;
|
||||
INSERT INTO t1 VALUES(0xF043616161),(0xBEF361616197C22061616161);
|
||||
SELECT HEX(a) FROM t1 WHERE MATCH(a) AGAINST(0x97C22061616161 IN BOOLEAN MODE);
|
||||
DELETE FROM t1 LIMIT 1;
|
||||
CHECK TABLE t1;
|
||||
SET NAMES latin1;
|
||||
DROP TABLE t1;
|
||||
|
||||
# End of 5.0 tests
|
||||
|
@ -571,6 +571,26 @@ create table t2 as select f2 as a from t1 union select f3 from t1;
|
||||
desc t2;
|
||||
select AsText(a) from t2;
|
||||
drop table t1, t2;
|
||||
|
||||
#
|
||||
# Bug #29166: MYsql crash when query is run
|
||||
#
|
||||
|
||||
# The test query itself is not logged : too large output.
|
||||
# The real test is the second query : see if the first hasn't crashed the
|
||||
# server
|
||||
--disable_query_log
|
||||
--disable_result_log
|
||||
SELECT AsText(GeometryFromText(CONCAT(
|
||||
'MULTIPOLYGON(((',
|
||||
REPEAT ('-0.00000000001234567890123456789012 -0.123456789012345678,', 1000),
|
||||
'-0.00000000001234567890123456789012 -0.123456789012345678',
|
||||
')))'
|
||||
))) AS a;
|
||||
--enable_result_log
|
||||
--enable_query_log
|
||||
SELECT 1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
|
||||
|
@ -1271,6 +1271,6 @@ grant select on test.* to юзер_юзер@localhost;
|
||||
--exec $MYSQL --default-character-set=utf8 --user=юзер_юзер -e "select user()"
|
||||
revoke all on test.* from юзер_юзер@localhost;
|
||||
drop user юзер_юзер@localhost;
|
||||
--error 1573
|
||||
--error ER_WRONG_STRING_LENGTH
|
||||
grant select on test.* to очень_длинный_юзер@localhost;
|
||||
set names default;
|
||||
|
@ -67,6 +67,41 @@ load data infile '../std_data_ln/loaddata_dq.dat' into table t1 fields terminate
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #29294 SELECT INTO OUTFILE/LOAD DATA INFILE with special
|
||||
# characters in the FIELDS ENCLOSED BY clause
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
c1 VARCHAR(255)
|
||||
);
|
||||
|
||||
CREATE TABLE t2 (
|
||||
id INT,
|
||||
c2 VARCHAR(255)
|
||||
);
|
||||
|
||||
INSERT INTO t1 (c1) VALUES
|
||||
('r'), ('rr'), ('rrr'), ('rrrr'),
|
||||
('.r'), ('.rr'), ('.rrr'), ('.rrrr'),
|
||||
('r.'), ('rr.'), ('rrr.'), ('rrrr.'),
|
||||
('.r.'), ('.rr.'), ('.rrr.'), ('.rrrr.');
|
||||
SELECT * FROM t1;
|
||||
|
||||
--exec rm -f $MYSQLTEST_VARDIR/tmp/t1
|
||||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||
eval SELECT * INTO OUTFILE '$MYSQLTEST_VARDIR/tmp/t1' FIELDS ENCLOSED BY 'r' FROM t1;
|
||||
--exec cat $MYSQLTEST_VARDIR/tmp/t1
|
||||
|
||||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||
eval LOAD DATA INFILE '$MYSQLTEST_VARDIR/tmp/t1' INTO TABLE t2 FIELDS ENCLOSED BY 'r';
|
||||
SELECT t1.id, c1, c2 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE c1 != c2;
|
||||
SELECT t1.id, c1, c2 FROM t1 RIGHT JOIN t2 ON t1.id=t2.id WHERE c1 != c2;
|
||||
|
||||
--exec rm $MYSQLTEST_VARDIR/tmp/t1
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
#
|
||||
@ -182,6 +217,31 @@ select f1 from t1 where f2 <> '0000-00-00 00:00:00' order by f1;
|
||||
--exec rm $MYSQLTEST_VARDIR/tmp/t2
|
||||
drop table t1,t2;
|
||||
|
||||
#
|
||||
# Bug#29442: SELECT INTO OUTFILE FIELDS ENCLOSED BY digit, minus sign etc
|
||||
# corrupts non-string fields containing this character.
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (c1 INT, c2 TIMESTAMP, c3 REAL, c4 DOUBLE);
|
||||
|
||||
INSERT INTO t1 (c1, c2, c3, c4) VALUES (10, '1970-02-01 01:02:03', 1.1E-100, 1.1E+100);
|
||||
SELECT * FROM t1;
|
||||
|
||||
--exec rm -f $MYSQLTEST_VARDIR/tmp/t1
|
||||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||
eval SELECT * INTO OUTFILE '$MYSQLTEST_VARDIR/tmp/t1' FIELDS ENCLOSED BY '-' FROM t1;
|
||||
--exec cat $MYSQLTEST_VARDIR/tmp/t1
|
||||
--exec echo EOF
|
||||
|
||||
TRUNCATE t1;
|
||||
|
||||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||
eval LOAD DATA INFILE '$MYSQLTEST_VARDIR/tmp/t1' INTO TABLE t1 FIELDS ENCLOSED BY '-';
|
||||
SELECT * FROM t1;
|
||||
|
||||
--exec rm $MYSQLTEST_VARDIR/tmp/t1
|
||||
DROP TABLE t1;
|
||||
|
||||
# End of 5.0 tests
|
||||
|
||||
|
||||
|
@ -1496,17 +1496,7 @@ SET GLOBAL general_log = default;
|
||||
|
||||
#
|
||||
# Bug #27084 partitioning by list seems failing when using case
|
||||
# BUG #18198: Case no longer supported, test case removed
|
||||
#
|
||||
CREATE TABLE `t1` ( `a` varchar(1)) ENGINE=MyISAM
|
||||
PARTITION BY LIST (CASE a WHEN 'a' THEN 1
|
||||
WHEN 'b' THEN 2
|
||||
WHEN 'c' THEN 3
|
||||
END) (
|
||||
PARTITION a VALUES IN (1),
|
||||
PARTITION b VALUES IN (2),
|
||||
PARTITION c VALUES IN (3)
|
||||
);
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
219
mysql-test/t/partition_bug18198.test
Normal file
219
mysql-test/t/partition_bug18198.test
Normal file
@ -0,0 +1,219 @@
|
||||
-- source include/have_partition.inc
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
create table t1 (col1 datetime)
|
||||
partition by range(datediff(col1,col1))
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
drop table t1;
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 int)
|
||||
partition by range(greatest(col1,10))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 int)
|
||||
partition by range(isnull(col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 int)
|
||||
partition by range(least(col1,12))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 int)
|
||||
partition by range(case when col1>0 then 10 else 20 end)
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 int)
|
||||
partition by range(ifnull(col1,5))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 int)
|
||||
partition by range(nullif(col1,5))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 int)
|
||||
partition by range(bit_length(col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 char(5))
|
||||
partition by range(bit_length(col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 int)
|
||||
partition by range(char_length(col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 char(5))
|
||||
partition by range(char_length(col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 char(5))
|
||||
partition by range(character_length(col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 int)
|
||||
partition by range(find_in_set(col1,1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 char(5))
|
||||
partition by range(find_in_set(col1,'1'))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 int)
|
||||
partition by range(instr(col1,3))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 char(5))
|
||||
partition by range(instr(col1,'3'))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 char(5))
|
||||
partition by range(length(col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 char(5))
|
||||
partition by range(locate(1,col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 int)
|
||||
partition by range(locate(1,col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 char(5))
|
||||
partition by range(octet_length(col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 char(5))
|
||||
partition by range(position(1 in col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 int)
|
||||
partition by range(position(1 in col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 char(5))
|
||||
partition by range(strcmp(col1,2))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 int)
|
||||
partition by range(strcmp(col1,2))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 int)
|
||||
partition by range(crc32(col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 int)
|
||||
partition by range(round(col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 int)
|
||||
partition by range(sign(col1))
|
||||
(partition p0 values less than (2), partition p1 values less than (6));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 datetime)
|
||||
partition by range(period_add(col1,5))
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 datetime, col2 datetime)
|
||||
partition by range(period_diff(col1,col2))
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 int, col2 int)
|
||||
partition by range(period_diff(col1,col2))
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 datetime)
|
||||
partition by range(timestampdiff(day,5,col1))
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 date)
|
||||
partition by range(unix_timestamp(col1))
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 datetime)
|
||||
partition by range(week(col1))
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 varchar(25))
|
||||
partition by range(cast(col1 as signed))
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 varchar(25))
|
||||
partition by range(convert(col1,unsigned))
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 int)
|
||||
partition by range(col1 | 20)
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 int)
|
||||
partition by range(col1 & 20)
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 int)
|
||||
partition by range(col1 ^ 20)
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 int)
|
||||
partition by range(col1 << 20)
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 int)
|
||||
partition by range(col1 >> 20)
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 int)
|
||||
partition by range(~col1)
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 int)
|
||||
partition by range(bit_count(col1))
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (col1 int)
|
||||
partition by range(inet_aton(col1))
|
||||
(partition p0 values less than (10), partition p1 values less than (30));
|
@ -19,3 +19,11 @@ flush tables;
|
||||
set names latin1;
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (a varchar(1), primary key (a))
|
||||
partition by list (ascii(a))
|
||||
(partition p1 values in (65));
|
||||
#insert into t1 values ('A');
|
||||
#replace into t1 values ('A');
|
||||
#drop table t1;
|
||||
|
@ -33,7 +33,7 @@ partitions 2;
|
||||
#
|
||||
# Partition by key list, wrong result type
|
||||
#
|
||||
--error ER_PARTITION_FUNC_NOT_ALLOWED_ERROR
|
||||
--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
CREATE TABLE t1 (
|
||||
a int not null,
|
||||
b int not null,
|
||||
@ -109,7 +109,7 @@ partitions 3
|
||||
#
|
||||
# Partition by hash, invalid result type
|
||||
#
|
||||
--error ER_PARTITION_FUNC_NOT_ALLOWED_ERROR
|
||||
--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
CREATE TABLE t1 (
|
||||
a int not null,
|
||||
b int not null,
|
||||
@ -533,7 +533,7 @@ partitions 2
|
||||
#
|
||||
# Partition by range, wrong result type of partition function
|
||||
#
|
||||
--error ER_PARTITION_FUNC_NOT_ALLOWED_ERROR
|
||||
--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
CREATE TABLE t1 (
|
||||
a int not null,
|
||||
b int not null,
|
||||
@ -769,10 +769,11 @@ partition by range (a)
|
||||
#
|
||||
# Bug 18198 Partitions: Verify that erroneus partition functions doesn't work
|
||||
#
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (v varchar(12))
|
||||
partition by range (ascii(v))
|
||||
(partition p0 values less than (10));
|
||||
drop table t1;
|
||||
#drop table t1;
|
||||
|
||||
-- error 1064
|
||||
create table t1 (a int)
|
||||
@ -790,7 +791,7 @@ partition by hash (extract(hour from convert_tz(a, '+00:00', '+00:00')));
|
||||
create table t1 (a int)
|
||||
partition by range (a + (select count(*) from t1))
|
||||
(partition p1 values less than (1));
|
||||
-- error ER_PARTITION_FUNC_NOT_ALLOWED_ERROR
|
||||
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (a char(10))
|
||||
partition by hash (extractvalue(a,'a'));
|
||||
|
||||
|
@ -63,13 +63,13 @@ insert into t1 values (1);
|
||||
grant alter on mysqltest_1.* to mysqltest_1@localhost;
|
||||
connect (conn4,localhost,mysqltest_1,,mysqltest_1);
|
||||
connection conn4;
|
||||
--error 1514
|
||||
--error ER_NO_PARTITION_FOR_GIVEN_VALUE
|
||||
alter table t1 partition by list (s1) (partition p1 values in (2));
|
||||
connection default;
|
||||
grant select, alter on mysqltest_1.* to mysqltest_1@localhost;
|
||||
disconnect conn4;
|
||||
connect (conn5,localhost,mysqltest_1,,mysqltest_1);
|
||||
--error 1514
|
||||
--error ER_NO_PARTITION_FOR_GIVEN_VALUE
|
||||
alter table t1 partition by list (s1) (partition p1 values in (2));
|
||||
disconnect conn5;
|
||||
connection default;
|
||||
|
@ -9,18 +9,6 @@
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
# BUG 18198: Partition functions handling
|
||||
#
|
||||
create table t1 (a varchar(10) charset latin1 collate latin1_bin)
|
||||
partition by hash(length(a))
|
||||
partitions 10;
|
||||
insert into t1 values (''),(' '),('a'),('a '),('a ');
|
||||
explain partitions select * from t1 where a='a ';
|
||||
explain partitions select * from t1 where a='a';
|
||||
explain partitions select * from t1 where a='a ' OR a='a';
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# More partition pruning tests, especially on interval walking
|
||||
#
|
||||
|
@ -179,4 +179,8 @@ insert into t1 values (null);
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
create table t1 (a char(1))
|
||||
partition by list (ascii(ucase(a)))
|
||||
(partition p1 values in (2));
|
||||
|
||||
|
@ -20,7 +20,7 @@ subpartition sp01, subpartition sp02));
|
||||
drop table t1;
|
||||
|
||||
CREATE TABLE t1 (f_date DATE, f_varchar VARCHAR(30))
|
||||
PARTITION BY HASH(CAST(YEAR(f_date) AS SIGNED INTEGER)) PARTITIONS 2;
|
||||
PARTITION BY HASH(YEAR(f_date)) PARTITIONS 2;
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
--replace_result $MYSQLTEST_VARDIR "hello"
|
||||
|
@ -538,18 +538,17 @@ select * from t1 where f_int1 between 5 and 15 order by f_int1;
|
||||
drop table t1;
|
||||
|
||||
# part2: bug in pruning code
|
||||
create table t1 (a char(10) binary)
|
||||
partition by list(length(a))
|
||||
(partition p1 values in (1),
|
||||
partition p2 values in (2),
|
||||
partition p3 values in (3),
|
||||
partition p4 values in (4),
|
||||
partition p5 values in (5)
|
||||
);
|
||||
insert into t1 values ('a'),('bb'),('ccc'),('dddd'),('eeEee');
|
||||
select * from t1 where a>='a' and a <= 'dddd';
|
||||
explain partitions select * from t1 where a>='a' and a <= 'dddd';
|
||||
drop table t1;
|
||||
#create table t1 (a char(10) binary)
|
||||
#partition by list(ascii(a))
|
||||
# (partition p1 values in (ascii('a')),
|
||||
# partition p2 values in (ascii('b')),
|
||||
# partition p3 values in (ascii('c')),
|
||||
# partition p4 values in (ascii('d')),
|
||||
# partition p5 values in (ascii('e')));
|
||||
#insert into t1 values ('a'),('bb'),('ccc'),('dddd'),('eeEee');
|
||||
#select * from t1 where a>='a' and a <= 'dddd';
|
||||
#explain partitions select * from t1 where a>='a' and a <= 'dddd';
|
||||
#drop table t1;
|
||||
|
||||
# BUG#18659: Assertion failure when subpartitioning is used and partition is
|
||||
# "IS NULL"
|
||||
@ -692,20 +691,47 @@ explain partitions select * from t1 where a = 18446744073709551000;
|
||||
explain partitions select * from t1 where a = 18446744073709551613;
|
||||
explain partitions select * from t1 where a = 18446744073709551614;
|
||||
drop table t1;
|
||||
|
||||
create table t1 (a int)
|
||||
partition by range((a & 0xFF) << 56) (
|
||||
partition p0 values less than (0x40 << 56),
|
||||
partition p1 values less than (0x80 << 56),
|
||||
partition p2 values less than (0xFF << 56)
|
||||
#
|
||||
# Test all variants of usage for interval_via_mapping
|
||||
# and interval_via_walking
|
||||
#
|
||||
# t1 will use interval_via_mapping since it uses a
|
||||
# monotonic function, whereas t2 will use
|
||||
# interval_via_walking since the intervals are short
|
||||
# and the function isn't monotonic (it is, but it isn't
|
||||
# discovered in this version).
|
||||
#
|
||||
create table t1 (a int)
|
||||
partition by range(a) (
|
||||
partition p0 values less than (64),
|
||||
partition p1 values less than (128),
|
||||
partition p2 values less than (255)
|
||||
);
|
||||
|
||||
insert into t1 values (0x20), (0x20), (0x41), (0x41), (0xFE), (0xFE);
|
||||
create table t2 (a int)
|
||||
partition by range(a+0) (
|
||||
partition p0 values less than (64),
|
||||
partition p1 values less than (128),
|
||||
partition p2 values less than (255)
|
||||
);
|
||||
|
||||
insert into t1 values (0x20), (0x20), (0x41), (0x41), (0xFE), (0xFE);
|
||||
insert into t2 values (0x20), (0x20), (0x41), (0x41), (0xFE), (0xFE);
|
||||
explain partitions select * from t1 where a=0;
|
||||
explain partitions select * from t2 where a=0;
|
||||
explain partitions select * from t1 where a=0xFE;
|
||||
explain partitions select * from t1 where a>0xFE and a<= 0xFF;
|
||||
explain partitions select * from t2 where a=0xFE;
|
||||
explain partitions select * from t1 where a > 0xFE AND a <= 0xFF;
|
||||
explain partitions select * from t2 where a > 0xFE AND a <= 0xFF;
|
||||
explain partitions select * from t1 where a >= 0xFE AND a <= 0xFF;
|
||||
explain partitions select * from t2 where a >= 0xFE AND a <= 0xFF;
|
||||
explain partitions select * from t1 where a < 64 AND a >= 63;
|
||||
explain partitions select * from t2 where a < 64 AND a >= 63;
|
||||
explain partitions select * from t1 where a <= 64 AND a >= 63;
|
||||
explain partitions select * from t2 where a <= 64 AND a >= 63;
|
||||
drop table t1;
|
||||
|
||||
drop table t2;
|
||||
|
||||
create table t1(a bigint unsigned not null) partition by range(a+0) (
|
||||
partition p1 values less than (10),
|
||||
partition p2 values less than (20),
|
||||
|
@ -12,45 +12,45 @@ drop table if exists t1;
|
||||
#
|
||||
# BUG 18198: Various tests for partition functions
|
||||
#
|
||||
create table t1 (a varchar(10) charset latin1 collate latin1_bin, b int)
|
||||
partition by range (length(a) * b)
|
||||
(partition p0 values less than (2), partition p1 values less than (400));
|
||||
insert into t1 values ('a ', 2),('a',3);
|
||||
drop table t1;
|
||||
#create table t1 (a varchar(10) charset latin1 collate latin1_bin, b int)
|
||||
#partition by range (ascii(a) * b)
|
||||
#(partition p0 values less than (2), partition p1 values less than (4000));
|
||||
#insert into t1 values ('a ', 2),('a',3);
|
||||
#drop table t1;
|
||||
|
||||
create table t1 (a varchar(10) charset latin1 collate latin1_bin, b int)
|
||||
partition by range (b* length(a) * b)
|
||||
(partition p0 values less than (2), partition p1 values less than (400));
|
||||
insert into t1 values ('a ', 2),('a',3);
|
||||
drop table t1;
|
||||
#create table t1 (a varchar(10) charset latin1 collate latin1_bin, b int)
|
||||
#partition by range (b* ascii(a) * b)
|
||||
#(partition p0 values less than (2), partition p1 values less than (4000));
|
||||
#insert into t1 values ('a ', 2),('a',3);
|
||||
#drop table t1;
|
||||
|
||||
create table t1 (a varchar(10) charset latin1 collate latin1_bin,
|
||||
b varchar(10) charset latin1 collate latin1_bin)
|
||||
partition by range (length(b) * length(a))
|
||||
(partition p0 values less than (2), partition p1 values less than (400));
|
||||
insert into t1 values ('a ', 'b '),('a','b');
|
||||
drop table t1;
|
||||
#create table t1 (a varchar(10) charset latin1 collate latin1_bin,
|
||||
# b varchar(10) charset latin1 collate latin1_bin)
|
||||
#partition by range (ascii(b) * ascii(a))
|
||||
#(partition p0 values less than (2), partition p1 values less than (40000));
|
||||
#insert into t1 values ('a ', 'b '),('a','b');
|
||||
#drop table t1;
|
||||
|
||||
create table t1 (a varchar(10) charset latin1 collate latin1_bin,
|
||||
b varchar(10) charset latin1 collate latin1_bin)
|
||||
partition by range (length(a) * length(b))
|
||||
(partition p0 values less than (2), partition p1 values less than (400));
|
||||
insert into t1 values ('a ', 'b '),('a','b');
|
||||
drop table t1;
|
||||
#create table t1 (a varchar(10) charset latin1 collate latin1_bin,
|
||||
# b varchar(10) charset latin1 collate latin1_bin)
|
||||
#partition by range (ascii(a) * ascii(b))
|
||||
#(partition p0 values less than (2), partition p1 values less than (40000));
|
||||
#insert into t1 values ('a ', 'b '),('a','b');
|
||||
#drop table t1;
|
||||
|
||||
create table t1 (a varchar(10) charset latin1 collate latin1_bin,
|
||||
b varchar(10) charset latin1 collate latin1_bin, c int)
|
||||
partition by range (length(a) * c)
|
||||
(partition p0 values less than (2), partition p1 values less than (400));
|
||||
insert into t1 values ('a ', 'b ', 2),('a','b', 3);
|
||||
drop table t1;
|
||||
#create table t1 (a varchar(10) charset latin1 collate latin1_bin,
|
||||
# b varchar(10) charset latin1 collate latin1_bin, c int)
|
||||
#partition by range (ascii(a) * c)
|
||||
#(partition p0 values less than (2), partition p1 values less than (4000));
|
||||
#insert into t1 values ('a ', 'b ', 2),('a','b', 3);
|
||||
#drop table t1;
|
||||
|
||||
create table t1 (a varchar(10) charset latin1 collate latin1_bin,
|
||||
b varchar(10) charset latin1 collate latin1_bin, c int)
|
||||
partition by range (c * length(a))
|
||||
(partition p0 values less than (2), partition p1 values less than (400));
|
||||
insert into t1 values ('a ', 'b ', 2),('a','b', 3);
|
||||
drop table t1;
|
||||
#create table t1 (a varchar(10) charset latin1 collate latin1_bin,
|
||||
# b varchar(10) charset latin1 collate latin1_bin, c int)
|
||||
#partition by range (c * ascii(a))
|
||||
#(partition p0 values less than (2), partition p1 values less than (4000));
|
||||
#insert into t1 values ('a ', 'b ', 2),('a','b', 3);
|
||||
#drop table t1;
|
||||
|
||||
#
|
||||
# More checks for partition pruning
|
||||
@ -733,29 +733,27 @@ DROP TABLE t1;
|
||||
#
|
||||
# Bug 18198: Try with a couple of cases using VARCHAR fields in
|
||||
# partition function.
|
||||
create table t1 (a varchar(20))
|
||||
partition by range (crc32(md5(a)))
|
||||
(partition p0 values less than (100),
|
||||
partition p1 values less than maxvalue);
|
||||
#create table t1 (a varchar(20))
|
||||
#partition by range (ascii(a))
|
||||
#(partition p0 values less than (100),
|
||||
# partition p1 values less than maxvalue);
|
||||
|
||||
insert into t1 values ("12345678901234567890");
|
||||
insert into t1 values ("A2345678901234567890");
|
||||
insert into t1 values ("B2345678901234567890");
|
||||
insert into t1 values ("1234567890123456789");
|
||||
insert into t1 values ("1234567890123456");
|
||||
select * from t1;
|
||||
explain partitions select * from t1 where a = "12345678901234567890";
|
||||
explain partitions select * from t1 where a = "12345678901234567890" OR
|
||||
a = "A2345678901234567890" OR
|
||||
a = "B2345678901234567890" OR
|
||||
a = "C2345678901234567890";
|
||||
explain partitions select * from t1 where a = "01234567890123456";
|
||||
select * from t1 where a = "01234567890123456";
|
||||
select * from t1 where a = "12345678901234567890" OR
|
||||
a = "A2345678901234567890" OR
|
||||
a = "B2345678901234567890" OR
|
||||
a = "C2345678901234567890";
|
||||
select * from t1 where a = "12345678901234567890";
|
||||
|
||||
|
||||
drop table t1;
|
||||
#insert into t1 values ("12345678901234567890");
|
||||
#insert into t1 values ("A2345678901234567890");
|
||||
#insert into t1 values ("B2345678901234567890");
|
||||
#insert into t1 values ("1234567890123456789");
|
||||
#insert into t1 values ("1234567890123456");
|
||||
#select * from t1;
|
||||
#explain partitions select * from t1 where a = "12345678901234567890";
|
||||
#explain partitions select * from t1 where a = "12345678901234567890" OR
|
||||
# a = "A2345678901234567890" OR
|
||||
# a = "B2345678901234567890" OR
|
||||
# a = "C2345678901234567890";
|
||||
#explain partitions select * from t1 where a = "01234567890123456";
|
||||
#select * from t1 where a = "01234567890123456";
|
||||
#select * from t1 where a = "12345678901234567890" OR
|
||||
# a = "A2345678901234567890" OR
|
||||
# a = "B2345678901234567890" OR
|
||||
# a = "C2345678901234567890";
|
||||
#select * from t1 where a = "12345678901234567890";
|
||||
#drop table t1;
|
||||
|
@ -1172,6 +1172,39 @@ drop table t1;
|
||||
#
|
||||
|
||||
SELECT 1.000000000000 * 99.999999999998 / 100 a,1.000000000000 * (99.999999999998 / 100) b;
|
||||
|
||||
#
|
||||
# Bug #29415: CAST AS DECIMAL(P,S) with too big precision/scale
|
||||
#
|
||||
|
||||
SELECT CAST(1 AS decimal(65,10));
|
||||
--error ER_TOO_BIG_PRECISION
|
||||
SELECT CAST(1 AS decimal(66,10));
|
||||
|
||||
SELECT CAST(1 AS decimal(65,30));
|
||||
--error ER_TOO_BIG_SCALE
|
||||
SELECT CAST(1 AS decimal(65,31));
|
||||
|
||||
CREATE TABLE t1 (a int DEFAULT NULL, b int DEFAULT NULL);
|
||||
INSERT INTO t1 VALUES (3,30), (1,10), (2,10);
|
||||
SELECT a+CAST(1 AS decimal(65,30)) AS aa, SUM(b) FROM t1 GROUP BY aa;
|
||||
--error ER_TOO_BIG_SCALE
|
||||
SELECT a+CAST(1 AS decimal(65,31)) AS aa, SUM(b) FROM t1 GROUP BY aa;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #29417: assertion abort for a grouping query with decimal user variable
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a int DEFAULT NULL, b int DEFAULT NULL);
|
||||
INSERT INTO t1 VALUES (3,30), (1,10), (2,10);
|
||||
|
||||
SET @a= CAST(1 AS decimal);
|
||||
SELECT 1 FROM t1 GROUP BY @b := @a, @b;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
#
|
||||
|
@ -3348,6 +3348,60 @@ EXPLAIN SELECT a, SUM(b) FROM v1 WHERE a=1 GROUP BY a;
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #29392: SELECT over a multi-table view with ORDER BY
|
||||
# selecting the same view column with two different aliases
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (
|
||||
person_id int NOT NULL PRIMARY KEY,
|
||||
username varchar(40) default NULL,
|
||||
status_flg char(1) NOT NULL default 'A'
|
||||
);
|
||||
|
||||
CREATE TABLE t2 (
|
||||
person_role_id int NOT NULL auto_increment PRIMARY KEY,
|
||||
role_id int NOT NULL,
|
||||
person_id int NOT NULL,
|
||||
INDEX idx_person_id (person_id),
|
||||
INDEX idx_role_id (role_id)
|
||||
);
|
||||
|
||||
CREATE TABLE t3 (
|
||||
role_id int NOT NULL auto_increment PRIMARY KEY,
|
||||
role_name varchar(100) default NULL,
|
||||
app_name varchar(40) NOT NULL,
|
||||
INDEX idx_app_name(app_name)
|
||||
);
|
||||
|
||||
CREATE VIEW v1 AS
|
||||
SELECT profile.person_id AS person_id
|
||||
FROM t1 profile, t2 userrole, t3 role
|
||||
WHERE userrole.person_id = profile.person_id AND
|
||||
role.role_id = userrole.role_id AND
|
||||
profile.status_flg = 'A'
|
||||
ORDER BY profile.person_id,role.app_name,role.role_name;
|
||||
|
||||
INSERT INTO t1 VALUES
|
||||
(6,'Sw','A'), (-1136332546,'ols','e'), (0,' *\n','0'),
|
||||
(-717462680,'ENTS Ta','0'), (-904346964,'ndard SQL\n','0');
|
||||
|
||||
INSERT INTO t2 VALUES
|
||||
(1,3,6),(2,4,7),(3,5,8),(4,6,9),(5,1,6),(6,1,7),(7,1,8),(8,1,9),(9,1,10);
|
||||
|
||||
INSERT INTO t3 VALUES
|
||||
(1,'NUCANS_APP_USER','NUCANSAPP'),(2,'NUCANS_TRGAPP_USER','NUCANSAPP'),
|
||||
(3,'IA_INTAKE_COORDINATOR','IACANS'),(4,'IA_SCREENER','IACANS'),
|
||||
(5,'IA_SUPERVISOR','IACANS'),(6,'IA_READONLY','IACANS'),
|
||||
(7,'SOC_USER','SOCCANS'),(8,'CAYIT_USER','CAYITCANS'),
|
||||
(9,'RTOS_DCFSPOS_SUPERVISOR','RTOS');
|
||||
|
||||
EXPLAIN SELECT t.person_id AS a, t.person_id AS b FROM v1 t WHERE t.person_id=6;
|
||||
SELECT t.person_id AS a, t.person_id AS b FROM v1 t WHERE t.person_id=6;
|
||||
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1,t2,t3;
|
||||
|
||||
--echo End of 5.0 tests.
|
||||
|
||||
#
|
||||
|
19
mysys/hash.c
19
mysys/hash.c
@ -593,6 +593,25 @@ my_bool hash_update(HASH *hash, uchar *record, uchar *old_key,
|
||||
previous->next=pos->next; /* unlink pos */
|
||||
|
||||
/* Move data to correct position */
|
||||
if (new_index == empty)
|
||||
{
|
||||
/*
|
||||
At this point record is unlinked from the old chain, thus it holds
|
||||
random position. By the chance this position is equal to position
|
||||
for the first element in the new chain. That means updated record
|
||||
is the only record in the new chain.
|
||||
*/
|
||||
if (empty != idx)
|
||||
{
|
||||
/*
|
||||
Record was moved while unlinking it from the old chain.
|
||||
Copy data to a new position.
|
||||
*/
|
||||
data[empty]= org_link;
|
||||
}
|
||||
data[empty].next= NO_RECORD;
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
pos=data+new_index;
|
||||
new_pos_index=hash_rec_mask(hash,pos,blength,records);
|
||||
if (new_index != new_pos_index)
|
||||
|
@ -2328,6 +2328,7 @@ Field_new_decimal::Field_new_decimal(uchar *ptr_arg,
|
||||
unireg_check_arg, field_name_arg, dec_arg, zero_arg, unsigned_arg)
|
||||
{
|
||||
precision= my_decimal_length_to_precision(len_arg, dec_arg, unsigned_arg);
|
||||
set_if_smaller(precision, DECIMAL_MAX_PRECISION);
|
||||
DBUG_ASSERT((precision <= DECIMAL_MAX_PRECISION) &&
|
||||
(dec <= DECIMAL_MAX_SCALE));
|
||||
bin_size= my_decimal_get_binary_size(precision, dec);
|
||||
@ -2344,6 +2345,7 @@ Field_new_decimal::Field_new_decimal(uint32 len_arg,
|
||||
NONE, name, dec_arg, 0, unsigned_arg)
|
||||
{
|
||||
precision= my_decimal_length_to_precision(len_arg, dec_arg, unsigned_arg);
|
||||
set_if_smaller(precision, DECIMAL_MAX_PRECISION);
|
||||
DBUG_ASSERT((precision <= DECIMAL_MAX_PRECISION) &&
|
||||
(dec <= DECIMAL_MAX_SCALE));
|
||||
bin_size= my_decimal_get_binary_size(precision, dec);
|
||||
@ -6469,6 +6471,7 @@ Field *Field_string::new_field(MEM_ROOT *root, struct st_table *new_table,
|
||||
is 2.
|
||||
****************************************************************************/
|
||||
|
||||
const uint Field_varstring::MAX_SIZE= UINT_MAX16;
|
||||
|
||||
int Field_varstring::store(const char *from,uint length,CHARSET_INFO *cs)
|
||||
{
|
||||
|
@ -1185,7 +1185,7 @@ public:
|
||||
The maximum space available in a Field_varstring, in bytes. See
|
||||
length_bytes.
|
||||
*/
|
||||
static const uint MAX_SIZE= UINT_MAX16;
|
||||
static const uint MAX_SIZE;
|
||||
/* Store number of bytes used to store length (1 or 2) */
|
||||
uint32 length_bytes;
|
||||
Field_varstring(uchar *ptr_arg,
|
||||
|
@ -1128,6 +1128,7 @@ int merge_buffers(SORTPARAM *param, IO_CACHE *from_file,
|
||||
BUFFPEK *buffpek;
|
||||
QUEUE queue;
|
||||
qsort2_cmp cmp;
|
||||
void *first_cmp_arg;
|
||||
volatile THD::killed_state *killed= ¤t_thd->killed;
|
||||
THD::killed_state not_killable;
|
||||
DBUG_ENTER("merge_buffers");
|
||||
@ -1152,9 +1153,18 @@ int merge_buffers(SORTPARAM *param, IO_CACHE *from_file,
|
||||
/* The following will fire if there is not enough space in sort_buffer */
|
||||
DBUG_ASSERT(maxcount!=0);
|
||||
|
||||
if (param->unique_buff)
|
||||
{
|
||||
cmp= param->compare;
|
||||
first_cmp_arg= (void *) ¶m->cmp_context;
|
||||
}
|
||||
else
|
||||
{
|
||||
cmp= get_ptr_compare(sort_length);
|
||||
first_cmp_arg= (void*) &sort_length;
|
||||
}
|
||||
if (init_queue(&queue, (uint) (Tb-Fb)+1, offsetof(BUFFPEK,key), 0,
|
||||
(queue_compare) (cmp= get_ptr_compare(sort_length)),
|
||||
(void*) &sort_length))
|
||||
(queue_compare) cmp, first_cmp_arg))
|
||||
DBUG_RETURN(1); /* purecov: inspected */
|
||||
for (buffpek= Fb ; buffpek <= Tb ; buffpek++)
|
||||
{
|
||||
@ -1207,7 +1217,7 @@ int merge_buffers(SORTPARAM *param, IO_CACHE *from_file,
|
||||
buffpek= (BUFFPEK*) queue_top(&queue);
|
||||
if (cmp) // Remove duplicates
|
||||
{
|
||||
if (!(*cmp)(&sort_length, &(param->unique_buff),
|
||||
if (!(*cmp)(first_cmp_arg, &(param->unique_buff),
|
||||
(uchar**) &buffpek->key))
|
||||
goto skip_duplicate;
|
||||
memcpy(param->unique_buff, (uchar*) buffpek->key, rec_length);
|
||||
@ -1259,7 +1269,7 @@ int merge_buffers(SORTPARAM *param, IO_CACHE *from_file,
|
||||
*/
|
||||
if (cmp)
|
||||
{
|
||||
if (!(*cmp)(&sort_length, &(param->unique_buff), (uchar**) &buffpek->key))
|
||||
if (!(*cmp)(first_cmp_arg, &(param->unique_buff), (uchar**) &buffpek->key))
|
||||
{
|
||||
buffpek->key+= rec_length; // Remove duplicate
|
||||
--buffpek->mem_count;
|
||||
|
@ -2961,8 +2961,34 @@ int ha_partition::rnd_init(bool scan)
|
||||
uint32 part_id;
|
||||
DBUG_ENTER("ha_partition::rnd_init");
|
||||
|
||||
include_partition_fields_in_used_fields();
|
||||
|
||||
/*
|
||||
For operations that may need to change data, we may need to extend
|
||||
read_set.
|
||||
*/
|
||||
if (m_lock_type == F_WRLCK)
|
||||
{
|
||||
/*
|
||||
If write_set contains any of the fields used in partition and
|
||||
subpartition expression, we need to set all bits in read_set because
|
||||
the row may need to be inserted in a different [sub]partition. In
|
||||
other words update_row() can be converted into write_row(), which
|
||||
requires a complete record.
|
||||
*/
|
||||
if (bitmap_is_overlapping(&m_part_info->full_part_field_set,
|
||||
table->write_set))
|
||||
bitmap_set_all(table->read_set);
|
||||
else
|
||||
{
|
||||
/*
|
||||
Some handlers only read fields as specified by the bitmap for the
|
||||
read set. For partitioned handlers we always require that the
|
||||
fields of the partition functions are read such that we can
|
||||
calculate the partition id to place updated and deleted records.
|
||||
*/
|
||||
bitmap_union(table->read_set, &m_part_info->full_part_field_set);
|
||||
}
|
||||
}
|
||||
|
||||
/* Now we see what the index of our first important partition is */
|
||||
DBUG_PRINT("info", ("m_part_info->used_partitions: 0x%lx",
|
||||
(long) m_part_info->used_partitions.bitmap));
|
||||
@ -3118,7 +3144,7 @@ int ha_partition::rnd_next(uchar *buf)
|
||||
continue; // Probably MyISAM
|
||||
|
||||
if (result != HA_ERR_END_OF_FILE)
|
||||
break; // Return error
|
||||
goto end_dont_reset_start_part; // Return error
|
||||
|
||||
/* End current partition */
|
||||
late_extra_no_cache(part_id);
|
||||
@ -3144,6 +3170,7 @@ int ha_partition::rnd_next(uchar *buf)
|
||||
|
||||
end:
|
||||
m_part_spec.start_part= NO_CURRENT_PART_ID;
|
||||
end_dont_reset_start_part:
|
||||
table->status= STATUS_NOT_FOUND;
|
||||
DBUG_RETURN(result);
|
||||
}
|
||||
@ -3275,7 +3302,15 @@ int ha_partition::index_init(uint inx, bool sorted)
|
||||
m_start_key.length= 0;
|
||||
m_ordered= sorted;
|
||||
m_curr_key_info= table->key_info+inx;
|
||||
include_partition_fields_in_used_fields();
|
||||
/*
|
||||
Some handlers only read fields as specified by the bitmap for the
|
||||
read set. For partitioned handlers we always require that the
|
||||
fields of the partition functions are read such that we can
|
||||
calculate the partition id to place updated and deleted records.
|
||||
But this is required for operations that may need to change data only.
|
||||
*/
|
||||
if (m_lock_type == F_WRLCK)
|
||||
bitmap_union(table->read_set, &m_part_info->full_part_field_set);
|
||||
file= m_file;
|
||||
do
|
||||
{
|
||||
@ -4144,35 +4179,6 @@ int ha_partition::handle_ordered_prev(uchar *buf)
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Set fields in partition functions in read set for underlying handlers
|
||||
|
||||
SYNOPSIS
|
||||
include_partition_fields_in_used_fields()
|
||||
|
||||
RETURN VALUE
|
||||
NONE
|
||||
|
||||
DESCRIPTION
|
||||
Some handlers only read fields as specified by the bitmap for the
|
||||
read set. For partitioned handlers we always require that the
|
||||
fields of the partition functions are read such that we can
|
||||
calculate the partition id to place updated and deleted records.
|
||||
*/
|
||||
|
||||
void ha_partition::include_partition_fields_in_used_fields()
|
||||
{
|
||||
Field **ptr= m_part_field_array;
|
||||
DBUG_ENTER("ha_partition::include_partition_fields_in_used_fields");
|
||||
|
||||
do
|
||||
{
|
||||
bitmap_set_bit(table->read_set, (*ptr)->field_index);
|
||||
} while (*(++ptr));
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
MODULE information calls
|
||||
****************************************************************************/
|
||||
@ -4714,6 +4720,12 @@ void ha_partition::get_dynamic_partition_info(PARTITION_INFO *stat_info,
|
||||
HA_EXTRA_KEY_CACHE:
|
||||
HA_EXTRA_NO_KEY_CACHE:
|
||||
This parameters are no longer used and could be removed.
|
||||
|
||||
7) Parameters only used by federated tables for query processing
|
||||
----------------------------------------------------------------
|
||||
HA_EXTRA_INSERT_WITH_UPDATE:
|
||||
Inform handler that an "INSERT...ON DUPLICATE KEY UPDATE" will be
|
||||
executed. This condition is unset by HA_EXTRA_NO_IGNORE_DUP_KEY.
|
||||
*/
|
||||
|
||||
int ha_partition::extra(enum ha_extra_function operation)
|
||||
@ -4795,6 +4807,9 @@ int ha_partition::extra(enum ha_extra_function operation)
|
||||
*/
|
||||
break;
|
||||
}
|
||||
/* Category 7), used by federated handlers */
|
||||
case HA_EXTRA_INSERT_WITH_UPDATE:
|
||||
DBUG_RETURN(loop_extra(operation));
|
||||
default:
|
||||
{
|
||||
/* Temporary crash to discover what is wrong */
|
||||
|
@ -449,7 +449,6 @@ private:
|
||||
int handle_ordered_next(uchar * buf, bool next_same);
|
||||
int handle_ordered_prev(uchar * buf);
|
||||
void return_top_record(uchar * buf);
|
||||
void include_partition_fields_in_used_fields();
|
||||
public:
|
||||
/*
|
||||
-------------------------------------------------------------------------
|
||||
|
16
sql/item.h
16
sql/item.h
@ -843,8 +843,7 @@ public:
|
||||
german character for double s is equal to 2 s.
|
||||
|
||||
The default is that an item is not allowed
|
||||
in a partition function. However all mathematical functions, string
|
||||
manipulation functions, date functions are allowed. Allowed functions
|
||||
in a partition function. Allowed functions
|
||||
can never depend on server version, they cannot depend on anything
|
||||
related to the environment. They can also only depend on a set of
|
||||
fields in the table itself. They cannot depend on other tables and
|
||||
@ -1633,6 +1632,7 @@ public:
|
||||
uint decimal_precision() const
|
||||
{ return (uint)(max_length - test(value < 0)); }
|
||||
bool eq(const Item *, bool binary_cmp) const;
|
||||
bool check_partition_func_processor(uchar *bool_arg) { return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -1650,6 +1650,7 @@ public:
|
||||
void print(String *str);
|
||||
Item_num *neg ();
|
||||
uint decimal_precision() const { return max_length; }
|
||||
bool check_partition_func_processor(uchar *bool_arg) { return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -1692,6 +1693,7 @@ public:
|
||||
uint decimal_precision() const { return decimal_value.precision(); }
|
||||
bool eq(const Item *, bool binary_cmp) const;
|
||||
void set_decimal_value(my_decimal *value_par);
|
||||
bool check_partition_func_processor(uchar *bool_arg) { return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -1752,7 +1754,6 @@ public:
|
||||
{}
|
||||
void print(String *str) { str->append(func_name); }
|
||||
Item *safe_charset_converter(CHARSET_INFO *tocs);
|
||||
bool check_partition_func_processor(uchar *int_arg) {return TRUE;}
|
||||
};
|
||||
|
||||
|
||||
@ -1861,7 +1862,6 @@ public:
|
||||
CHARSET_INFO *cs= NULL):
|
||||
Item_string(name, length, cs)
|
||||
{}
|
||||
bool check_partition_func_processor(uchar *int_arg) {return TRUE;}
|
||||
};
|
||||
|
||||
|
||||
@ -1915,7 +1915,6 @@ public:
|
||||
unsigned_flag=1;
|
||||
}
|
||||
enum_field_types field_type() const { return int_field_type; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return TRUE;}
|
||||
};
|
||||
|
||||
|
||||
@ -2116,6 +2115,12 @@ public:
|
||||
|
||||
bool fix_fields(THD *, Item **);
|
||||
bool eq(const Item *item, bool binary_cmp) const;
|
||||
Item *get_tmp_table_item(THD *thd)
|
||||
{
|
||||
Item *item= Item_ref::get_tmp_table_item(thd);
|
||||
item->name= name;
|
||||
return item;
|
||||
}
|
||||
virtual Ref_Type ref_type() { return VIEW_REF; }
|
||||
};
|
||||
|
||||
@ -2237,7 +2242,6 @@ public:
|
||||
}
|
||||
Item *clone_item();
|
||||
virtual Item *real_item() { return ref; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return TRUE;}
|
||||
};
|
||||
|
||||
#ifdef MYSQL_SERVER
|
||||
|
@ -355,7 +355,6 @@ public:
|
||||
}
|
||||
Item *neg_transformer(THD *thd);
|
||||
virtual Item *negated_item();
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
bool subst_argument_checker(uchar **arg) { return TRUE; }
|
||||
};
|
||||
|
||||
@ -367,7 +366,6 @@ public:
|
||||
enum Functype functype() const { return NOT_FUNC; }
|
||||
const char *func_name() const { return "not"; }
|
||||
Item *neg_transformer(THD *thd);
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
void print(String *str);
|
||||
};
|
||||
|
||||
@ -598,7 +596,6 @@ public:
|
||||
bool is_bool_func() { return 1; }
|
||||
CHARSET_INFO *compare_collation() { return cmp_collation.collation; }
|
||||
uint decimal_precision() const { return 1; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -610,7 +607,6 @@ public:
|
||||
optimize_type select_optimize() const { return OPTIMIZE_NONE; }
|
||||
const char *func_name() const { return "strcmp"; }
|
||||
void print(String *str) { Item_func::print(str); }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -673,7 +669,6 @@ public:
|
||||
const char *func_name() const { return "ifnull"; }
|
||||
Field *tmp_table_field(TABLE *table);
|
||||
uint decimal_precision() const;
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -714,7 +709,6 @@ public:
|
||||
void print(String *str) { Item_func::print(str); }
|
||||
table_map not_null_tables() const { return 0; }
|
||||
bool is_null();
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
/* Functions to handle the optimized IN */
|
||||
@ -1141,7 +1135,6 @@ public:
|
||||
void print(String *str);
|
||||
Item *find_item(String *str);
|
||||
CHARSET_INFO *compare_collation() { return cmp_collation.collation; }
|
||||
bool check_partition_func_processor(uchar *bool_arg) { return FALSE;}
|
||||
void cleanup();
|
||||
};
|
||||
|
||||
@ -1211,7 +1204,6 @@ public:
|
||||
bool nulls_in_row();
|
||||
bool is_bool_func() { return 1; }
|
||||
CHARSET_INFO *compare_collation() { return cmp_collation.collation; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
class cmp_item_row :public cmp_item
|
||||
@ -1283,7 +1275,6 @@ public:
|
||||
optimize_type select_optimize() const { return OPTIMIZE_NULL; }
|
||||
Item *neg_transformer(THD *thd);
|
||||
CHARSET_INFO *compare_collation() { return args[0]->collation.collation; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
/* Functions used by HAVING for rewriting IN subquery */
|
||||
@ -1310,7 +1301,6 @@ public:
|
||||
*/
|
||||
table_map used_tables() const
|
||||
{ return used_tables_cache | RAND_TABLE_BIT; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return TRUE;}
|
||||
};
|
||||
|
||||
|
||||
@ -1333,7 +1323,6 @@ public:
|
||||
void print(String *str);
|
||||
CHARSET_INFO *compare_collation() { return args[0]->collation.collation; }
|
||||
void top_level_item() { abort_on_null=1; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -1372,7 +1361,6 @@ public:
|
||||
const char *func_name() const { return "like"; }
|
||||
bool fix_fields(THD *thd, Item **ref);
|
||||
void cleanup();
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
#ifdef USE_REGEX
|
||||
@ -1395,7 +1383,6 @@ public:
|
||||
const char *func_name() const { return "regexp"; }
|
||||
void print(String *str) { print_op(str); }
|
||||
CHARSET_INFO *compare_collation() { return cmp_collation.collation; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
#else
|
||||
@ -1452,7 +1439,6 @@ public:
|
||||
Item *transform(Item_transformer transformer, uchar *arg);
|
||||
void traverse_cond(Cond_traverser, void *arg, traverse_order order);
|
||||
void neg_arguments(THD *thd);
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
bool subst_argument_checker(uchar **arg) { return TRUE; }
|
||||
Item *compile(Item_analyzer analyzer, uchar **arg_p,
|
||||
Item_transformer transformer, uchar *arg_t);
|
||||
|
@ -5039,6 +5039,18 @@ create_func_cast(THD *thd, Item *a, Cast_target cast_type,
|
||||
my_error(ER_M_BIGGER_THAN_D, MYF(0), "");
|
||||
return 0;
|
||||
}
|
||||
if (len > DECIMAL_MAX_PRECISION)
|
||||
{
|
||||
my_error(ER_TOO_BIG_PRECISION, MYF(0), len, a->name,
|
||||
DECIMAL_MAX_PRECISION);
|
||||
return 0;
|
||||
}
|
||||
if (dec > DECIMAL_MAX_SCALE)
|
||||
{
|
||||
my_error(ER_TOO_BIG_SCALE, MYF(0), dec, a->name,
|
||||
DECIMAL_MAX_SCALE);
|
||||
return 0;
|
||||
}
|
||||
res= new (thd->mem_root) Item_decimal_typecast(a, len, dec);
|
||||
break;
|
||||
}
|
||||
|
@ -253,7 +253,6 @@ public:
|
||||
void fix_num_length_and_dec();
|
||||
void find_num_type();
|
||||
String *str_op(String *str) { DBUG_ASSERT(0); return 0; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -311,7 +310,6 @@ public:
|
||||
{ max_length=args[0]->max_length; unsigned_flag=0; }
|
||||
void print(String *str);
|
||||
uint decimal_precision() const { return args[0]->decimal_precision(); }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -345,7 +343,6 @@ public:
|
||||
void fix_length_and_dec() {};
|
||||
const char *func_name() const { return "decimal_typecast"; }
|
||||
void print(String *);
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -442,6 +439,7 @@ public:
|
||||
void fix_length_and_dec();
|
||||
void fix_num_length_and_dec();
|
||||
uint decimal_precision() const { return args[0]->decimal_precision(); }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -454,6 +452,7 @@ public:
|
||||
my_decimal *decimal_op(my_decimal *);
|
||||
const char *func_name() const { return "abs"; }
|
||||
void fix_length_and_dec();
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
// A class to handle logarithmic and trigonometric functions
|
||||
@ -488,7 +487,6 @@ public:
|
||||
Item_func_exp(Item *a) :Item_dec_func(a) {}
|
||||
double val_real();
|
||||
const char *func_name() const { return "exp"; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -498,7 +496,6 @@ public:
|
||||
Item_func_ln(Item *a) :Item_dec_func(a) {}
|
||||
double val_real();
|
||||
const char *func_name() const { return "ln"; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -509,7 +506,6 @@ public:
|
||||
Item_func_log(Item *a,Item *b) :Item_dec_func(a,b) {}
|
||||
double val_real();
|
||||
const char *func_name() const { return "log"; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -519,7 +515,6 @@ public:
|
||||
Item_func_log2(Item *a) :Item_dec_func(a) {}
|
||||
double val_real();
|
||||
const char *func_name() const { return "log2"; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -529,7 +524,6 @@ public:
|
||||
Item_func_log10(Item *a) :Item_dec_func(a) {}
|
||||
double val_real();
|
||||
const char *func_name() const { return "log10"; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -539,7 +533,6 @@ public:
|
||||
Item_func_sqrt(Item *a) :Item_dec_func(a) {}
|
||||
double val_real();
|
||||
const char *func_name() const { return "sqrt"; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -549,7 +542,6 @@ public:
|
||||
Item_func_pow(Item *a,Item *b) :Item_dec_func(a,b) {}
|
||||
double val_real();
|
||||
const char *func_name() const { return "pow"; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -559,7 +551,6 @@ public:
|
||||
Item_func_acos(Item *a) :Item_dec_func(a) {}
|
||||
double val_real();
|
||||
const char *func_name() const { return "acos"; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
class Item_func_asin :public Item_dec_func
|
||||
@ -568,7 +559,6 @@ public:
|
||||
Item_func_asin(Item *a) :Item_dec_func(a) {}
|
||||
double val_real();
|
||||
const char *func_name() const { return "asin"; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
class Item_func_atan :public Item_dec_func
|
||||
@ -578,7 +568,6 @@ public:
|
||||
Item_func_atan(Item *a,Item *b) :Item_dec_func(a,b) {}
|
||||
double val_real();
|
||||
const char *func_name() const { return "atan"; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
class Item_func_cos :public Item_dec_func
|
||||
@ -587,7 +576,6 @@ public:
|
||||
Item_func_cos(Item *a) :Item_dec_func(a) {}
|
||||
double val_real();
|
||||
const char *func_name() const { return "cos"; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
class Item_func_sin :public Item_dec_func
|
||||
@ -596,7 +584,6 @@ public:
|
||||
Item_func_sin(Item *a) :Item_dec_func(a) {}
|
||||
double val_real();
|
||||
const char *func_name() const { return "sin"; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
class Item_func_tan :public Item_dec_func
|
||||
@ -605,7 +592,6 @@ public:
|
||||
Item_func_tan(Item *a) :Item_dec_func(a) {}
|
||||
double val_real();
|
||||
const char *func_name() const { return "tan"; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
class Item_func_integer :public Item_int_func
|
||||
@ -633,6 +619,7 @@ public:
|
||||
longlong int_op();
|
||||
double real_op();
|
||||
my_decimal *decimal_op(my_decimal *);
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -644,6 +631,7 @@ public:
|
||||
longlong int_op();
|
||||
double real_op();
|
||||
my_decimal *decimal_op(my_decimal *);
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
/* This handles round and truncate */
|
||||
@ -684,7 +672,6 @@ public:
|
||||
Item_func_sign(Item *a) :Item_int_func(a) {}
|
||||
const char *func_name() const { return "sign"; }
|
||||
longlong val_int();
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -699,7 +686,6 @@ public:
|
||||
const char *func_name() const { return name; }
|
||||
void fix_length_and_dec()
|
||||
{ decimals= NOT_FIXED_DEC; max_length= float_length(decimals); }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -725,7 +711,6 @@ public:
|
||||
void fix_length_and_dec();
|
||||
enum Item_result result_type () const { return cmp_type; }
|
||||
bool result_as_longlong() { return compare_as_dates; };
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
uint cmp_datetimes(ulonglong *value);
|
||||
};
|
||||
|
||||
@ -781,7 +766,6 @@ public:
|
||||
longlong val_int();
|
||||
const char *func_name() const { return "length"; }
|
||||
void fix_length_and_dec() { max_length=10; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
class Item_func_bit_length :public Item_func_length
|
||||
@ -801,7 +785,6 @@ public:
|
||||
longlong val_int();
|
||||
const char *func_name() const { return "char_length"; }
|
||||
void fix_length_and_dec() { max_length=10; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
class Item_func_coercibility :public Item_int_func
|
||||
@ -825,7 +808,6 @@ public:
|
||||
longlong val_int();
|
||||
void fix_length_and_dec();
|
||||
void print(String *str);
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -850,7 +832,6 @@ public:
|
||||
longlong val_int();
|
||||
const char *func_name() const { return "ascii"; }
|
||||
void fix_length_and_dec() { max_length=3; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
class Item_func_ord :public Item_int_func
|
||||
@ -860,7 +841,6 @@ public:
|
||||
Item_func_ord(Item *a) :Item_int_func(a) {}
|
||||
longlong val_int();
|
||||
const char *func_name() const { return "ord"; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
class Item_func_find_in_set :public Item_int_func
|
||||
@ -874,7 +854,6 @@ public:
|
||||
longlong val_int();
|
||||
const char *func_name() const { return "find_in_set"; }
|
||||
void fix_length_and_dec();
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
/* Base class for all bit functions: '~', '|', '^', '&', '>>', '<<' */
|
||||
@ -886,7 +865,6 @@ public:
|
||||
Item_func_bit(Item *a) :Item_int_func(a) {}
|
||||
void fix_length_and_dec() { unsigned_flag= 1; }
|
||||
void print(String *str) { print_op(str); }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
class Item_func_bit_or :public Item_func_bit
|
||||
@ -912,7 +890,6 @@ public:
|
||||
longlong val_int();
|
||||
const char *func_name() const { return "bit_count"; }
|
||||
void fix_length_and_dec() { max_length=2; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
class Item_func_shift_left :public Item_func_bit
|
||||
@ -1363,7 +1340,6 @@ public:
|
||||
longlong val_int();
|
||||
const char *func_name() const { return "inet_aton"; }
|
||||
void fix_length_and_dec() { decimals= 0; max_length= 21; maybe_null= 1; unsigned_flag= 1;}
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
|
@ -50,7 +50,6 @@ public:
|
||||
String *val_str(String *);
|
||||
void fix_length_and_dec();
|
||||
const char *func_name() const { return "md5"; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -94,7 +93,6 @@ public:
|
||||
String *val_str(String *);
|
||||
void fix_length_and_dec();
|
||||
const char *func_name() const { return "concat"; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
class Item_func_concat_ws :public Item_str_func
|
||||
@ -116,7 +114,6 @@ public:
|
||||
String *val_str(String *);
|
||||
void fix_length_and_dec();
|
||||
const char *func_name() const { return "reverse"; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -154,7 +151,6 @@ protected:
|
||||
public:
|
||||
Item_str_conv(Item *item) :Item_str_func(item) {}
|
||||
String *val_str(String *);
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -455,7 +451,6 @@ public:
|
||||
String *val_str(String *);
|
||||
void fix_length_and_dec();
|
||||
const char *func_name() const { return "soundex"; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -549,7 +544,6 @@ public:
|
||||
String *val_str(String *);
|
||||
void fix_length_and_dec();
|
||||
const char *func_name() const { return "rpad"; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -562,7 +556,6 @@ public:
|
||||
String *val_str(String *);
|
||||
void fix_length_and_dec();
|
||||
const char *func_name() const { return "lpad"; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -577,7 +570,6 @@ public:
|
||||
collation.set(default_charset());
|
||||
max_length= 64;
|
||||
}
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -594,7 +586,6 @@ public:
|
||||
decimals=0;
|
||||
max_length=args[0]->max_length*2*collation.collation->mbmaxlen;
|
||||
}
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
class Item_func_unhex :public Item_str_func
|
||||
@ -614,7 +605,6 @@ public:
|
||||
decimals=0;
|
||||
max_length=(1+args[0]->max_length)/2;
|
||||
}
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -638,7 +628,6 @@ public:
|
||||
}
|
||||
void print(String *str);
|
||||
const char *func_name() const { return "cast_as_binary"; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -678,7 +667,6 @@ public:
|
||||
String* val_str(String* str);
|
||||
const char *func_name() const { return "inet_ntoa"; }
|
||||
void fix_length_and_dec() { decimals = 0; max_length=3*8+7; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
class Item_func_quote :public Item_str_func
|
||||
@ -693,7 +681,6 @@ public:
|
||||
collation.set(args[0]->collation);
|
||||
max_length= args[0]->max_length * 2 + 2;
|
||||
}
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
class Item_func_conv_charset :public Item_str_func
|
||||
@ -794,7 +781,6 @@ public:
|
||||
const char *func_name() const { return "crc32"; }
|
||||
void fix_length_and_dec() { max_length=10; }
|
||||
longlong val_int();
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
class Item_func_uncompressed_length : public Item_int_func
|
||||
|
@ -38,7 +38,6 @@ public:
|
||||
{
|
||||
max_length=6*MY_CHARSET_BIN_MB_MAXLEN;
|
||||
}
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -53,7 +52,6 @@ public:
|
||||
decimals=0;
|
||||
max_length=6*MY_CHARSET_BIN_MB_MAXLEN;
|
||||
}
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -129,6 +127,7 @@ public:
|
||||
max_length=10*my_charset_bin.mbmaxlen;
|
||||
maybe_null=1;
|
||||
}
|
||||
bool check_partition_func_processor(uchar *int_arg) {return TRUE;}
|
||||
};
|
||||
|
||||
|
||||
@ -224,7 +223,6 @@ public:
|
||||
max_length=2*MY_CHARSET_BIN_MB_MAXLEN;
|
||||
maybe_null=1;
|
||||
}
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
class Item_func_yearweek :public Item_int_func
|
||||
@ -303,6 +301,7 @@ class Item_func_dayname :public Item_func_weekday
|
||||
max_length=9*MY_CHARSET_BIN_MB_MAXLEN;
|
||||
maybe_null=1;
|
||||
}
|
||||
bool check_partition_func_processor(uchar *int_arg) {return TRUE;}
|
||||
};
|
||||
|
||||
|
||||
@ -319,7 +318,6 @@ public:
|
||||
decimals=0;
|
||||
max_length=10*MY_CHARSET_BIN_MB_MAXLEN;
|
||||
}
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -603,7 +601,6 @@ public:
|
||||
void fix_length_and_dec();
|
||||
uint format_length(const String *format);
|
||||
bool eq(const Item *item, bool binary_cmp) const;
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -617,7 +614,6 @@ class Item_func_from_unixtime :public Item_date_func
|
||||
const char *func_name() const { return "from_unixtime"; }
|
||||
void fix_length_and_dec();
|
||||
bool get_date(MYSQL_TIME *res, uint fuzzy_date);
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -676,7 +672,6 @@ public:
|
||||
}
|
||||
const char *func_name() const { return "sec_to_time"; }
|
||||
bool result_as_longlong() { return TRUE; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -698,7 +693,6 @@ public:
|
||||
bool get_date(MYSQL_TIME *res, uint fuzzy_date);
|
||||
bool eq(const Item *item, bool binary_cmp) const;
|
||||
void print(String *str);
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -753,7 +747,6 @@ public:
|
||||
max_length=args[0]->max_length;
|
||||
maybe_null= 1;
|
||||
}
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -773,7 +766,6 @@ public:
|
||||
String *val_str(String *a);
|
||||
void fix_length_and_dec();
|
||||
void print(String *str);
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -884,7 +876,6 @@ public:
|
||||
max_length=MAX_DATE_WIDTH*MY_CHARSET_BIN_MB_MAXLEN;
|
||||
}
|
||||
longlong val_int();
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -907,7 +898,6 @@ public:
|
||||
}
|
||||
void print(String *str);
|
||||
const char *func_name() const { return "add_time"; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
double val_real() { return val_real_from_decimal(); }
|
||||
my_decimal *val_decimal(my_decimal *decimal_value)
|
||||
{
|
||||
@ -949,7 +939,6 @@ public:
|
||||
:Item_str_timefunc(a, b ,c) {}
|
||||
String *val_str(String *str);
|
||||
const char *func_name() const { return "maketime"; }
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
class Item_func_microsecond :public Item_int_func
|
||||
@ -981,7 +970,6 @@ public:
|
||||
maybe_null=1;
|
||||
}
|
||||
void print(String *str);
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
@ -1028,7 +1016,6 @@ public:
|
||||
{
|
||||
return tmp_table_field_from_field_type(table, 1);
|
||||
}
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
|
@ -41,7 +41,6 @@ public:
|
||||
Item_func_xml_extractvalue(Item *a,Item *b) :Item_xml_str_func(a,b) {}
|
||||
const char *func_name() const { return "extractvalue"; }
|
||||
String *val_str(String *);
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
};
|
||||
|
||||
|
||||
|
@ -1445,7 +1445,7 @@ static int binlog_close_connection(handlerton *hton, THD *thd)
|
||||
{
|
||||
binlog_trx_data *const trx_data=
|
||||
(binlog_trx_data*) thd->ha_data[binlog_hton->slot];
|
||||
DBUG_ASSERT(mysql_bin_log.is_open() && trx_data->empty());
|
||||
DBUG_ASSERT(trx_data->empty());
|
||||
thd->ha_data[binlog_hton->slot]= 0;
|
||||
trx_data->~binlog_trx_data();
|
||||
my_free((uchar*)trx_data, MYF(0));
|
||||
@ -1570,7 +1570,6 @@ static int binlog_commit(handlerton *hton, THD *thd, bool all)
|
||||
DBUG_ENTER("binlog_commit");
|
||||
binlog_trx_data *const trx_data=
|
||||
(binlog_trx_data*) thd->ha_data[binlog_hton->slot];
|
||||
DBUG_ASSERT(mysql_bin_log.is_open());
|
||||
|
||||
if (trx_data->empty())
|
||||
{
|
||||
@ -1598,7 +1597,6 @@ static int binlog_rollback(handlerton *hton, THD *thd, bool all)
|
||||
int error=0;
|
||||
binlog_trx_data *const trx_data=
|
||||
(binlog_trx_data*) thd->ha_data[binlog_hton->slot];
|
||||
DBUG_ASSERT(mysql_bin_log.is_open());
|
||||
|
||||
if (trx_data->empty()) {
|
||||
trx_data->reset();
|
||||
@ -1659,7 +1657,6 @@ static int binlog_savepoint_set(handlerton *hton, THD *thd, void *sv)
|
||||
static int binlog_savepoint_rollback(handlerton *hton, THD *thd, void *sv)
|
||||
{
|
||||
DBUG_ENTER("binlog_savepoint_rollback");
|
||||
DBUG_ASSERT(mysql_bin_log.is_open());
|
||||
|
||||
/*
|
||||
Write ROLLBACK TO SAVEPOINT to the binlog cache if we have updated some
|
||||
|
@ -98,7 +98,7 @@ char* query_table_status(THD *thd,const char *db,const char *table_name);
|
||||
DBUG_ASSERT(strncmp(Ver, MYSQL_SERVER_VERSION, sizeof(Ver)-1) > 0); \
|
||||
if (((uchar*)Thd) != NULL) \
|
||||
push_warning_printf(((THD *)Thd), MYSQL_ERROR::WARN_LEVEL_WARN, \
|
||||
ER_WARN_DEPRECATED_SYNTAX, ER(ER_WARN_DEPRECATED_SYNTAX), \
|
||||
ER_WARN_DEPRECATED_SYNTAX, ER(ER_WARN_DEPRECATED_SYNTAX_WITH_VER), \
|
||||
(Old), (Ver), (New)); \
|
||||
else \
|
||||
sql_print_warning("The syntax '%s' is deprecated and will be removed " \
|
||||
|
@ -905,7 +905,6 @@ bool partition_info::set_up_charset_field_preps()
|
||||
Field *field, **ptr;
|
||||
uchar **char_ptrs;
|
||||
unsigned i;
|
||||
bool found;
|
||||
size_t size;
|
||||
uint tot_fields= 0;
|
||||
uint tot_part_fields= 0;
|
||||
@ -918,7 +917,6 @@ bool partition_info::set_up_charset_field_preps()
|
||||
{
|
||||
ptr= part_field_array;
|
||||
/* Set up arrays and buffers for those fields */
|
||||
i= 0;
|
||||
while ((field= *(ptr++)))
|
||||
{
|
||||
if (field_is_partition_charset(field))
|
||||
@ -954,7 +952,7 @@ bool partition_info::set_up_charset_field_preps()
|
||||
}
|
||||
part_charset_field_array[i]= NULL;
|
||||
}
|
||||
if (is_sub_partitioned() && list_of_subpart_fields &&
|
||||
if (is_sub_partitioned() && !list_of_subpart_fields &&
|
||||
check_part_func_fields(subpart_field_array, FALSE))
|
||||
{
|
||||
/* Set up arrays and buffers for those fields */
|
||||
@ -962,7 +960,10 @@ bool partition_info::set_up_charset_field_preps()
|
||||
while ((field= *(ptr++)))
|
||||
{
|
||||
if (field_is_partition_charset(field))
|
||||
{
|
||||
tot_subpart_fields++;
|
||||
tot_fields++;
|
||||
}
|
||||
}
|
||||
size= tot_subpart_fields * sizeof(char*);
|
||||
if (!(char_ptrs= (uchar**) sql_calloc(size)))
|
||||
@ -975,10 +976,10 @@ bool partition_info::set_up_charset_field_preps()
|
||||
if (!(char_ptrs= (uchar**) sql_alloc(size)))
|
||||
goto error;
|
||||
subpart_charset_field_array= (Field**)char_ptrs;
|
||||
ptr= subpart_field_array;
|
||||
i= 0;
|
||||
while ((field= *(ptr++)))
|
||||
{
|
||||
unsigned j= 0;
|
||||
CHARSET_INFO *cs;
|
||||
uchar *field_buf;
|
||||
LINT_INIT(field_buf);
|
||||
@ -987,28 +988,16 @@ bool partition_info::set_up_charset_field_preps()
|
||||
continue;
|
||||
cs= ((Field_str*)field)->charset();
|
||||
size= field->pack_length();
|
||||
found= FALSE;
|
||||
for (j= 0; j < tot_part_fields; j++)
|
||||
{
|
||||
if (field == part_charset_field_array[i])
|
||||
found= TRUE;
|
||||
}
|
||||
if (!found)
|
||||
{
|
||||
tot_fields++;
|
||||
if (!(field_buf= (uchar*) sql_calloc(size)))
|
||||
goto error;
|
||||
}
|
||||
if (!(field_buf= (uchar*) sql_calloc(size)))
|
||||
goto error;
|
||||
subpart_charset_field_array[i]= field;
|
||||
subpart_field_buffers[i++]= field_buf;
|
||||
}
|
||||
if (!(char_ptrs= (uchar**) sql_calloc(size)))
|
||||
goto error;
|
||||
restore_subpart_field_ptrs= char_ptrs;
|
||||
subpart_charset_field_array[i]= NULL;
|
||||
}
|
||||
if (tot_fields)
|
||||
{
|
||||
uint j,k,l;
|
||||
|
||||
uint k;
|
||||
size= tot_fields*sizeof(char**);
|
||||
if (!(char_ptrs= (uchar**)sql_calloc(size)))
|
||||
goto error;
|
||||
@ -1026,11 +1015,12 @@ bool partition_info::set_up_charset_field_preps()
|
||||
full_part_field_buffers[i]= part_field_buffers[i];
|
||||
}
|
||||
k= tot_part_fields;
|
||||
l= 0;
|
||||
for (i= 0; i < tot_subpart_fields; i++)
|
||||
{
|
||||
uint j;
|
||||
bool found= FALSE;
|
||||
field= subpart_charset_field_array[i];
|
||||
found= FALSE;
|
||||
|
||||
for (j= 0; j < tot_part_fields; j++)
|
||||
{
|
||||
if (field == part_charset_field_array[i])
|
||||
@ -1038,12 +1028,12 @@ bool partition_info::set_up_charset_field_preps()
|
||||
}
|
||||
if (!found)
|
||||
{
|
||||
full_part_charset_field_array[l]= subpart_charset_field_array[k];
|
||||
full_part_field_buffers[l]= subpart_field_buffers[k];
|
||||
k++; l++;
|
||||
full_part_charset_field_array[k]= subpart_charset_field_array[i];
|
||||
full_part_field_buffers[k]= subpart_field_buffers[i];
|
||||
k++;
|
||||
}
|
||||
}
|
||||
full_part_charset_field_array[tot_fields]= NULL;
|
||||
full_part_charset_field_array[k]= NULL;
|
||||
}
|
||||
DBUG_RETURN(FALSE);
|
||||
error:
|
||||
|
@ -81,6 +81,13 @@ public:
|
||||
*/
|
||||
Field **full_part_field_array;
|
||||
Field **full_part_charset_field_array;
|
||||
/*
|
||||
Set of all fields used in partition and subpartition expression.
|
||||
Required for testing of partition fields in write_set when
|
||||
updating. We need to set all bits in read_set because the row may
|
||||
need to be inserted in a different [sub]partition.
|
||||
*/
|
||||
MY_BITMAP full_part_field_set;
|
||||
|
||||
/*
|
||||
When we have a field that requires transformation before calling the
|
||||
|
@ -1478,6 +1478,8 @@ ER_DUP_KEYNAME 42000 S1009
|
||||
spa "Nombre de clave duplicado '%-.192s'"
|
||||
swe "Nyckelnamn '%-.192s' finns flera gånger"
|
||||
ukr "äÕÂÌÀÀÞÅ ¦Í'Ñ ËÌÀÞÁ '%-.192s'"
|
||||
# When using this error code, please use ER(ER_DUP_ENTRY_WITH_KEY_NAME)
|
||||
# for the message string. See, for example, code in handler.cc.
|
||||
ER_DUP_ENTRY 23000 S1009
|
||||
cze "Zdvojen-Bý klíè '%-.192s' (èíslo klíèe %d)"
|
||||
dan "Ens værdier '%-.192s' for indeks %d"
|
||||
@ -5022,7 +5024,9 @@ ER_UNKNOWN_STORAGE_ENGINE 42000
|
||||
ger "Unbekannte Speicher-Engine '%s'"
|
||||
por "Motor de tabela desconhecido '%s'"
|
||||
spa "Desconocido motor de tabla '%s'"
|
||||
ER_UNUSED_1
|
||||
# When using this error code, use ER(ER_WARN_DEPRECATED_SYNTAX_WITH_VER)
|
||||
# for the message string. See, for example, code in mysql_priv.h.
|
||||
ER_WARN_DEPRECATED_SYNTAX
|
||||
eng "'%s' is deprecated; use '%s' instead"
|
||||
ger "'%s' ist veraltet. Bitte benutzen Sie '%s'"
|
||||
por "'%s' é desatualizado. Use '%s' em seu lugar"
|
||||
@ -5606,8 +5610,6 @@ ER_SP_RECURSION_LIMIT
|
||||
ER_SP_PROC_TABLE_CORRUPT
|
||||
eng "Failed to load routine %-.192s. The table mysql.proc is missing, corrupt, or contains bad data (internal code %d)"
|
||||
ger "Routine %-.192s konnte nicht geladen werden. Die Tabelle mysql.proc fehlt, ist beschädigt, oder enthält fehlerhaften Daten (interner Code: %d)"
|
||||
ER_FOREIGN_SERVER_EXISTS
|
||||
eng "The foreign server, %s, you are trying to create already exists."
|
||||
ER_SP_WRONG_NAME 42000
|
||||
eng "Incorrect routine name '%-.192s'"
|
||||
ger "Ungültiger Routinenname '%-.192s'"
|
||||
@ -5629,6 +5631,34 @@ ER_NON_GROUPING_FIELD_USED 42000
|
||||
ER_TABLE_CANT_HANDLE_SPKEYS
|
||||
eng "The used table type doesn't support SPATIAL indexes"
|
||||
ger "Der verwendete Tabellentyp unterstützt keine SPATIAL-Indizes"
|
||||
ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA
|
||||
eng "Triggers can not be created on system tables"
|
||||
ger "Trigger können nicht auf Systemtabellen erzeugt werden"
|
||||
ER_REMOVED_SPACES
|
||||
eng "Leading spaces are removed from name '%s'"
|
||||
ger "Führende Leerzeichen werden aus dem Namen '%s' entfernt"
|
||||
ER_AUTOINC_READ_FAILED
|
||||
eng "Failed to read auto-increment value from storage engine"
|
||||
ger "Lesen des Autoincrement-Werts von der Speicher-Engine fehlgeschlagen"
|
||||
ER_USERNAME
|
||||
eng "user name"
|
||||
ger "Benutzername"
|
||||
ER_HOSTNAME
|
||||
eng "host name"
|
||||
ger "Hostname"
|
||||
ER_WRONG_STRING_LENGTH
|
||||
eng "String '%-.70s' is too long for %s (should be no longer than %d)"
|
||||
ger "String '%-.70s' ist zu lang für %s (sollte nicht länger sein als %d)"
|
||||
ER_NON_INSERTABLE_TABLE
|
||||
eng "The target table %-.100s of the %s is not insertable-into"
|
||||
ger "Die Zieltabelle %-.100s von %s ist nicht einfügbar"
|
||||
ER_ADMIN_WRONG_MRG_TABLE
|
||||
eng "Table '%-.64s' is differently defined or of non-MyISAM type or doesn't exist"
|
||||
ER_FOREIGN_SERVER_EXISTS
|
||||
eng "The foreign server, %s, you are trying to create already exists."
|
||||
ER_FOREIGN_SERVER_DOESNT_EXIST
|
||||
eng "The foreign server name you are trying to reference does not exist. Data source error: %-.64s"
|
||||
ger "Die externe Verbindung, auf die Sie zugreifen wollen, existiert nicht. Datenquellenfehlermeldung: %-.64s"
|
||||
ER_ILLEGAL_HA_CREATE_OPTION
|
||||
eng "Table storage engine '%-.64s' does not support the create option '%.64s'"
|
||||
ger "Speicher-Engine '%-.64s' der Tabelle unterstützt die Option '%.64s' nicht"
|
||||
@ -5848,9 +5878,6 @@ ER_BINLOG_ROW_WRONG_TABLE_DEF
|
||||
ER_BINLOG_ROW_RBR_TO_SBR
|
||||
eng "Slave running with --log-slave-updates must use row-based binary logging to be able to replicate row-based binary log events"
|
||||
ger "Slave, die mit --log-slave-updates laufen, müssen zeilenbasiertes Loggen verwenden, um zeilenbasierte Binärlog-Ereignisse loggen zu können"
|
||||
ER_FOREIGN_SERVER_DOESNT_EXIST
|
||||
eng "The foreign server name you are trying to reference does not exist. Data source error: %-.64s"
|
||||
ger "Die externe Verbindung, auf die Sie zugreifen wollen, existiert nicht. Datenquellenfehlermeldung: %-.64s"
|
||||
ER_EVENT_ALREADY_EXISTS
|
||||
eng "Event '%-.192s' already exists"
|
||||
ger "Event '%-.192s' existiert bereits"
|
||||
@ -5901,7 +5928,9 @@ ER_EVENT_DATA_TOO_LONG
|
||||
ER_DROP_INDEX_FK
|
||||
eng "Cannot drop index '%-.192s': needed in a foreign key constraint"
|
||||
ger "Kann Index '%-.192s' nicht löschen: wird für einen Fremdschlüssel benötigt"
|
||||
ER_WARN_DEPRECATED_SYNTAX
|
||||
# When using this error message, use the ER_WARN_DEPRECATED_SYNTAX error
|
||||
# code. See, for example, code in mysql_priv.h.
|
||||
ER_WARN_DEPRECATED_SYNTAX_WITH_VER
|
||||
eng "The syntax '%s' is deprecated and will be removed in MySQL %s. Please use %s instead"
|
||||
ger "Die Syntax '%s' ist veraltet und wird in MySQL %s entfernt. Bitte benutzen Sie statt dessen %s"
|
||||
ER_CANT_WRITE_LOCK_LOG_TABLE
|
||||
@ -5916,9 +5945,6 @@ ER_FOREIGN_DUPLICATE_KEY 23000 S1009
|
||||
ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE
|
||||
eng "Column count of mysql.%s is wrong. Expected %d, found %d. Created with MySQL %d, now running %d. Please use mysql_upgrade to fix this error."
|
||||
ger "Spaltenanzahl von mysql.%s falsch. %d erwartet, aber %d erhalten. Erzeugt mit MySQL %d, jetzt unter %d. Bitte benutzen Sie mysql_upgrade, um den Fehler zu beheben"
|
||||
ER_REMOVED_SPACES
|
||||
eng "Leading spaces are removed from name '%s'"
|
||||
ger "Führende Leerzeichen werden aus dem Namen '%s' entfernt"
|
||||
ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR
|
||||
eng "Cannot switch out of the row-based binary log format when the session has open temporary tables"
|
||||
ger "Kann nicht aus dem zeilenbasierten Binärlog-Format herauswechseln, wenn die Sitzung offene temporäre Tabellen hat"
|
||||
@ -5975,9 +6001,6 @@ ER_BASE64_DECODE_ERROR
|
||||
eng "Decoding of base64 string failed"
|
||||
swe "Avkodning av base64 sträng misslyckades"
|
||||
ger "Der Server hat keine zeilenbasierte Replikation"
|
||||
ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA
|
||||
eng "Triggers can not be created on system tables"
|
||||
ger "Trigger können nicht auf Systemtabellen erzeugt werden"
|
||||
ER_EVENT_RECURSION_FORBIDDEN
|
||||
eng "Recursion of EVENT DDL statements is forbidden when body is present"
|
||||
ger "Rekursivität von EVENT-DDL-Anweisungen ist unzulässig wenn ein Hauptteil (Body) existiert"
|
||||
@ -5987,27 +6010,12 @@ ER_EVENTS_DB_ERROR
|
||||
ER_ONLY_INTEGERS_ALLOWED
|
||||
eng "Only integers allowed as number here"
|
||||
ger "An dieser Stelle sind nur Ganzzahlen zulässig"
|
||||
ER_AUTOINC_READ_FAILED
|
||||
eng "Failed to read auto-increment value from storage engine"
|
||||
ger "Lesen des Autoincrement-Werts von der Speicher-Engine fehlgeschlagen"
|
||||
ER_USERNAME
|
||||
eng "user name"
|
||||
ger "Benutzername"
|
||||
ER_HOSTNAME
|
||||
eng "host name"
|
||||
ger "Hostname"
|
||||
ER_WRONG_STRING_LENGTH
|
||||
eng "String '%-.70s' is too long for %s (should be no longer than %d)"
|
||||
ger "String '%-.70s' ist zu lang für %s (sollte nicht länger sein als %d)"
|
||||
ER_UNSUPORTED_LOG_ENGINE
|
||||
eng "This storage engine cannot be used for log tables""
|
||||
ger "Diese Speicher-Engine kann für Logtabellen nicht verwendet werden"
|
||||
ER_BAD_LOG_STATEMENT
|
||||
eng "You cannot '%s' a log table if logging is enabled"
|
||||
ger "Sie können eine Logtabelle nicht '%s', wenn Loggen angeschaltet ist"
|
||||
ER_NON_INSERTABLE_TABLE
|
||||
eng "The target table %-.100s of the %s is not insertable-into"
|
||||
ger "Die Zieltabelle %-.100s von %s ist nicht einfügbar"
|
||||
ER_CANT_RENAME_LOG_TABLE
|
||||
eng "Cannot rename '%s'. When logging enabled, rename to/from log table must rename two tables: the log table to an archive table and another table back to '%s'"
|
||||
ger "Kann '%s' nicht umbenennen. Wenn Loggen angeschaltet ist, müssen beim Umbenennen zu/von einer Logtabelle zwei Tabellen angegeben werden: die Logtabelle zu einer Archivtabelle und eine weitere Tabelle zurück zu '%s'"
|
||||
@ -6023,6 +6031,8 @@ ER_WRONG_PARAMETERS_TO_STORED_FCT 42000
|
||||
ER_NATIVE_FCT_NAME_COLLISION
|
||||
eng "This function '%-.192s' has the same name as a native function"
|
||||
ger "Die Funktion '%-.192s' hat denselben Namen wie eine native Funktion"
|
||||
# When using this error message, use the ER_DUP_ENTRY error code. See, for
|
||||
# example, code in handler.cc.
|
||||
ER_DUP_ENTRY_WITH_KEY_NAME 23000 S1009
|
||||
cze "Zvojen-Bý klíè '%-.64s' (èíslo klíèe '%-.192s')"
|
||||
dan "Ens værdier '%-.64s' for indeks '%-.192s'"
|
||||
@ -6059,8 +6069,6 @@ ER_SLAVE_INCIDENT
|
||||
eng "The incident %s occured on the master. Message: %-.64s"
|
||||
ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT
|
||||
eng "Table has no partition for some existing values"
|
||||
ER_ADMIN_WRONG_MRG_TABLE
|
||||
eng "Table '%-.64s' is differently defined or of non-MyISAM type or doesn't exist"
|
||||
ER_BINLOG_UNSAFE_STATEMENT
|
||||
eng "Statement is not safe to log in statement format."
|
||||
swe "Detta är inte säkert att logga i statement-format."
|
||||
|
@ -17,7 +17,28 @@
|
||||
|
||||
#ifdef HAVE_SPATIAL
|
||||
|
||||
#define MAX_DIGITS_IN_DOUBLE 16
|
||||
/*
|
||||
exponential notation :
|
||||
1 sign
|
||||
1 number before the decimal point
|
||||
1 decimal point
|
||||
14 number of significant digits (see String::qs_append(double))
|
||||
1 'e' sign
|
||||
1 exponent sign
|
||||
3 exponent digits
|
||||
==
|
||||
22
|
||||
|
||||
"f" notation :
|
||||
1 optional 0
|
||||
1 sign
|
||||
14 number significant digits (see String::qs_append(double) )
|
||||
1 decimal point
|
||||
==
|
||||
17
|
||||
*/
|
||||
|
||||
#define MAX_DIGITS_IN_DOUBLE 22
|
||||
|
||||
/***************************** Gis_class_info *******************************/
|
||||
|
||||
|
@ -1542,6 +1542,8 @@ select_export::prepare(List<Item> &list, SELECT_LEX_UNIT *u)
|
||||
field_sep_char= (exchange->enclosed->length() ? (*exchange->enclosed)[0] :
|
||||
field_term_length ? (*exchange->field_term)[0] : INT_MAX);
|
||||
escape_char= (exchange->escaped->length() ? (*exchange->escaped)[0] : -1);
|
||||
is_ambiguous_field_sep= test(strchr(ESCAPE_CHARS, field_sep_char));
|
||||
is_unsafe_field_sep= test(strchr(NUMERIC_CHARS, field_sep_char));
|
||||
line_sep_char= (exchange->line_term->length() ?
|
||||
(*exchange->line_term)[0] : INT_MAX);
|
||||
if (!field_term_length)
|
||||
@ -1616,7 +1618,8 @@ bool select_export::send_data(List<Item> &items)
|
||||
used_length=min(res->length(),item->max_length);
|
||||
else
|
||||
used_length=res->length();
|
||||
if (result_type == STRING_RESULT && escape_char != -1)
|
||||
if ((result_type == STRING_RESULT || is_unsafe_field_sep) &&
|
||||
escape_char != -1)
|
||||
{
|
||||
char *pos, *start, *end;
|
||||
CHARSET_INFO *res_charset= res->charset();
|
||||
@ -1682,7 +1685,9 @@ bool select_export::send_data(List<Item> &items)
|
||||
NEED_ESCAPING(pos[1])))
|
||||
{
|
||||
char tmp_buff[2];
|
||||
tmp_buff[0]= escape_char;
|
||||
tmp_buff[0]= ((int) *pos == field_sep_char &&
|
||||
is_ambiguous_field_sep) ?
|
||||
field_sep_char : escape_char;
|
||||
tmp_buff[1]= *pos ? *pos : '0';
|
||||
if (my_b_write(&cache,(uchar*) start,(uint) (pos-start)) ||
|
||||
my_b_write(&cache,(uchar*) tmp_buff,2))
|
||||
|
@ -1944,9 +1944,30 @@ public:
|
||||
};
|
||||
|
||||
|
||||
#define ESCAPE_CHARS "ntrb0ZN" // keep synchronous with READ_INFO::unescape
|
||||
|
||||
|
||||
/*
|
||||
List of all possible characters of a numeric value text representation.
|
||||
*/
|
||||
#define NUMERIC_CHARS ".0123456789e+-"
|
||||
|
||||
|
||||
class select_export :public select_to_file {
|
||||
uint field_term_length;
|
||||
int field_sep_char,escape_char,line_sep_char;
|
||||
/*
|
||||
The is_ambiguous_field_sep field is true if a value of the field_sep_char
|
||||
field is one of the 'n', 't', 'r' etc characters
|
||||
(see the READ_INFO::unescape method and the ESCAPE_CHARS constant value).
|
||||
*/
|
||||
bool is_ambiguous_field_sep;
|
||||
/*
|
||||
The is_unsafe_field_sep field is true if a value of the field_sep_char
|
||||
field is one of the '0'..'9', '+', '-', '.' and 'e' characters
|
||||
(see the NUMERIC_CHARS constant value).
|
||||
*/
|
||||
bool is_unsafe_field_sep;
|
||||
bool fixed_row_size;
|
||||
public:
|
||||
select_export(sql_exchange *ex) :select_to_file(ex) {}
|
||||
|
@ -695,6 +695,8 @@ bool mysql_insert(THD *thd,TABLE_LIST *table_list,
|
||||
if (duplic == DUP_REPLACE &&
|
||||
(!table->triggers || !table->triggers->has_delete_triggers()))
|
||||
table->file->extra(HA_EXTRA_WRITE_CAN_REPLACE);
|
||||
if (duplic == DUP_UPDATE)
|
||||
table->file->extra(HA_EXTRA_INSERT_WITH_UPDATE);
|
||||
/*
|
||||
let's *try* to start bulk inserts. It won't necessary
|
||||
start them as values_list.elements should be greater than
|
||||
@ -2546,6 +2548,8 @@ bool Delayed_insert::handle_inserts(void)
|
||||
table->file->extra(HA_EXTRA_WRITE_CAN_REPLACE);
|
||||
using_opt_replace= 1;
|
||||
}
|
||||
if (info.handle_duplicates == DUP_UPDATE)
|
||||
table->file->extra(HA_EXTRA_INSERT_WITH_UPDATE);
|
||||
thd.clear_error(); // reset error for binlog
|
||||
if (write_record(&thd, table, &info))
|
||||
{
|
||||
@ -2890,6 +2894,8 @@ select_insert::prepare(List<Item> &values, SELECT_LEX_UNIT *u)
|
||||
if (info.handle_duplicates == DUP_REPLACE &&
|
||||
(!table->triggers || !table->triggers->has_delete_triggers()))
|
||||
table->file->extra(HA_EXTRA_WRITE_CAN_REPLACE);
|
||||
if (info.handle_duplicates == DUP_UPDATE)
|
||||
table->file->extra(HA_EXTRA_INSERT_WITH_UPDATE);
|
||||
thd->no_trans_update.stmt= FALSE;
|
||||
thd->abort_on_warning= (!info.ignore &&
|
||||
(thd->variables.sql_mode &
|
||||
@ -3481,6 +3487,8 @@ select_create::prepare(List<Item> &values, SELECT_LEX_UNIT *u)
|
||||
if (info.handle_duplicates == DUP_REPLACE &&
|
||||
(!table->triggers || !table->triggers->has_delete_triggers()))
|
||||
table->file->extra(HA_EXTRA_WRITE_CAN_REPLACE);
|
||||
if (info.handle_duplicates == DUP_UPDATE)
|
||||
table->file->extra(HA_EXTRA_INSERT_WITH_UPDATE);
|
||||
if (!thd->prelocked_mode)
|
||||
table->file->ha_start_bulk_insert((ha_rows) 0);
|
||||
thd->no_trans_update.stmt= FALSE;
|
||||
|
@ -851,6 +851,7 @@ continue_loop:;
|
||||
char
|
||||
READ_INFO::unescape(char chr)
|
||||
{
|
||||
/* keep this switch synchornous with the ESCAPE_CHARS macro */
|
||||
switch(chr) {
|
||||
case 'n': return '\n';
|
||||
case 't': return '\t';
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user