mirror of
https://github.com/MariaDB/server.git
synced 2026-05-16 20:07:13 +02:00
Merge branch '10.4' into 10.5
This commit is contained in:
commit
1d74927c58
79 changed files with 2124 additions and 594 deletions
|
|
@ -1,15 +1,28 @@
|
|||
drop table if exists t1;
|
||||
#
|
||||
# test mysqld in bootstrap mode
|
||||
#
|
||||
#
|
||||
# Check that --bootstrap reads from stdin
|
||||
#
|
||||
# Kill the server
|
||||
# restart
|
||||
drop table t1;
|
||||
#
|
||||
# Check that --bootstrap of file with SQL error returns error
|
||||
#
|
||||
# Kill the server
|
||||
# restart
|
||||
drop table t1;
|
||||
ERROR 42S02: Unknown table 'test.t1'
|
||||
#
|
||||
# Bootstrap with a large thd->net.max_packet
|
||||
#
|
||||
# Kill the server
|
||||
# restart
|
||||
drop table t1;
|
||||
End of 5.1 tests
|
||||
#
|
||||
# End of 5.1 tests
|
||||
#
|
||||
#
|
||||
# Bug #11766306: 59393: HAVE_INNODB=YES WHEN MYSQLD
|
||||
# STARTED WITH --SKIP-INNODB
|
||||
|
|
@ -18,9 +31,23 @@ SELECT 'bug' as '' FROM INFORMATION_SCHEMA.ENGINES WHERE engine='innodb'
|
|||
and SUPPORT='YES';
|
||||
|
||||
# Kill the server
|
||||
#
|
||||
# MDEV-13063 Server crashes in intern_plugin_lock or assertion `plugin_ptr->ref_count == 1' fails in plugin_init
|
||||
#
|
||||
#
|
||||
# MDEV-19349 mysql_install_db: segfault at tmp_file_prefix check
|
||||
#
|
||||
# restart
|
||||
End of 5.5 tests
|
||||
#
|
||||
# End of 5.5 tests
|
||||
#
|
||||
#
|
||||
# Check that --bootstrap can install and uninstall plugins
|
||||
#
|
||||
# Kill the server
|
||||
#
|
||||
# Check that installed plugins are *not* automatically loaded in --bootstrap
|
||||
#
|
||||
# restart
|
||||
flush tables;
|
||||
show create table t1;
|
||||
|
|
@ -34,4 +61,16 @@ name dl
|
|||
EXAMPLE ha_example.so
|
||||
truncate table mysql.plugin;
|
||||
# Kill the server
|
||||
#
|
||||
# MDEV-9969 mysql_install_db error processing ignore_db_dirs.
|
||||
#
|
||||
#
|
||||
# MDEV-13397 MariaDB upgrade fail when using default_time_zone
|
||||
#
|
||||
#
|
||||
# MDEV-30818 invalid ssl prevents bootstrap
|
||||
#
|
||||
# restart
|
||||
#
|
||||
# End of 10.3 tests
|
||||
#
|
||||
|
|
|
|||
|
|
@ -1,17 +1,20 @@
|
|||
--echo #
|
||||
--echo # test mysqld in bootstrap mode
|
||||
--echo #
|
||||
--source include/not_embedded.inc
|
||||
#
|
||||
# test mysqld in bootstrap mode
|
||||
#
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
--source include/have_example_plugin.inc
|
||||
|
||||
--let test_bootstrap=$MYSQLTEST_VARDIR/tmp/test_bootstrap.sql
|
||||
--write_file $test_bootstrap
|
||||
use test;
|
||||
EOF
|
||||
|
||||
# Add the datadir to the bootstrap command
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
let $MYSQLD_BOOTSTRAP_CMD= $MYSQLD_BOOTSTRAP_CMD --datadir=$MYSQLD_DATADIR --tmpdir=$MYSQL_TMP_DIR --default-storage-engine=MyISAM --loose-skip-innodb --plugin-maturity=unknown;
|
||||
#
|
||||
# Check that --bootstrap reads from stdin
|
||||
#
|
||||
--echo #
|
||||
--echo # Check that --bootstrap reads from stdin
|
||||
--echo #
|
||||
--write_file $MYSQLTEST_VARDIR/tmp/bootstrap_test.sql
|
||||
use test;
|
||||
CREATE TABLE t1(a int);
|
||||
|
|
@ -21,9 +24,9 @@ EOF
|
|||
--source include/start_mysqld.inc
|
||||
drop table t1;
|
||||
remove_file $MYSQLTEST_VARDIR/tmp/bootstrap_test.sql;
|
||||
#
|
||||
# Check that --bootstrap of file with SQL error returns error
|
||||
#
|
||||
--echo #
|
||||
--echo # Check that --bootstrap of file with SQL error returns error
|
||||
--echo #
|
||||
--write_file $MYSQLTEST_VARDIR/tmp/bootstrap_error.sql
|
||||
use test;
|
||||
CREATE TABLE t1;
|
||||
|
|
@ -37,9 +40,9 @@ EOF
|
|||
drop table t1;
|
||||
remove_file $MYSQLTEST_VARDIR/tmp/bootstrap_error.sql;
|
||||
|
||||
#
|
||||
# Bootstrap with a large thd->net.max_packet
|
||||
#
|
||||
--echo #
|
||||
--echo # Bootstrap with a large thd->net.max_packet
|
||||
--echo #
|
||||
--disable_query_log
|
||||
create table t1 select 2 as a, concat(repeat('MySQL', @@max_allowed_packet/10), ';') as b;
|
||||
eval select * into outfile '$MYSQLTEST_VARDIR/tmp/long_query.sql' from t1;
|
||||
|
|
@ -51,7 +54,9 @@ remove_file $MYSQLTEST_VARDIR/tmp/long_query.sql;
|
|||
--source include/start_mysqld.inc
|
||||
drop table t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
--echo #
|
||||
--echo # End of 5.1 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # Bug #11766306: 59393: HAVE_INNODB=YES WHEN MYSQLD
|
||||
|
|
@ -63,29 +68,25 @@ SELECT 'bug' as '' FROM INFORMATION_SCHEMA.ENGINES WHERE engine='innodb'
|
|||
and SUPPORT='YES';
|
||||
|
||||
--source include/kill_mysqld.inc
|
||||
#
|
||||
# MDEV-13063 Server crashes in intern_plugin_lock or assertion `plugin_ptr->ref_count == 1' fails in plugin_init
|
||||
#
|
||||
--echo #
|
||||
--echo # MDEV-13063 Server crashes in intern_plugin_lock or assertion `plugin_ptr->ref_count == 1' fails in plugin_init
|
||||
--echo #
|
||||
--error 1
|
||||
--exec $MYSQLD_BOOTSTRAP_CMD --myisam_recover_options=NONE
|
||||
|
||||
#
|
||||
# MDEV-19349 mysql_install_db: segfault at tmp_file_prefix check
|
||||
#
|
||||
--write_file $MYSQLTEST_VARDIR/tmp/1
|
||||
use test;
|
||||
EOF
|
||||
--exec $MYSQLD_BOOTSTRAP_CMD < $MYSQLTEST_VARDIR/tmp/1 >> $MYSQLTEST_VARDIR/tmp/bootstrap.log 2>&1
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/1
|
||||
--echo #
|
||||
--echo # MDEV-19349 mysql_install_db: segfault at tmp_file_prefix check
|
||||
--echo #
|
||||
--exec $MYSQLD_BOOTSTRAP_CMD < $test_bootstrap >> $MYSQLTEST_VARDIR/tmp/bootstrap.log 2>&1
|
||||
|
||||
--source include/start_mysqld.inc
|
||||
--echo End of 5.5 tests
|
||||
--echo #
|
||||
--echo # End of 5.5 tests
|
||||
--echo #
|
||||
|
||||
--source include/not_windows_embedded.inc
|
||||
--source include/have_example_plugin.inc
|
||||
#
|
||||
# Check that --bootstrap can install and uninstall plugins
|
||||
#
|
||||
--echo #
|
||||
--echo # Check that --bootstrap can install and uninstall plugins
|
||||
--echo #
|
||||
let $PLUGIN_DIR=`select @@plugin_dir`;
|
||||
--source include/kill_mysqld.inc
|
||||
--write_file $MYSQLTEST_VARDIR/tmp/install_plugin.sql
|
||||
|
|
@ -95,9 +96,9 @@ EOF
|
|||
--exec $MYSQLD_BOOTSTRAP_CMD --plugin-dir=$PLUGIN_DIR < $MYSQLTEST_VARDIR/tmp/install_plugin.sql >> $MYSQLTEST_VARDIR/tmp/bootstrap.log 2>&1
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/install_plugin.sql
|
||||
|
||||
#
|
||||
# Check that installed plugins are *not* automatically loaded in --bootstrap
|
||||
#
|
||||
--echo #
|
||||
--echo # Check that installed plugins are *not* automatically loaded in --bootstrap
|
||||
--echo #
|
||||
--write_file $MYSQLTEST_VARDIR/tmp/bootstrap_plugins.sql
|
||||
SET SQL_MODE="";
|
||||
use test;
|
||||
|
|
@ -113,24 +114,24 @@ drop table t1;
|
|||
select * from mysql.plugin;
|
||||
truncate table mysql.plugin;
|
||||
|
||||
|
||||
#
|
||||
# MDEV-9969 mysql_install_db error processing ignore_db_dirs.
|
||||
#
|
||||
--write_file $MYSQLTEST_VARDIR/tmp/bootstrap_9969.sql
|
||||
use test;
|
||||
EOF
|
||||
--source include/kill_mysqld.inc
|
||||
--exec $MYSQLD_BOOTSTRAP_CMD --ignore-db-dirs='some_dir' --ignore-db-dirs='some_dir' < $MYSQLTEST_VARDIR/tmp/bootstrap_9969.sql >> $MYSQLTEST_VARDIR/tmp/bootstrap.log 2>&1
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/bootstrap_9969.sql
|
||||
--echo #
|
||||
--echo # MDEV-9969 mysql_install_db error processing ignore_db_dirs.
|
||||
--echo #
|
||||
--exec $MYSQLD_BOOTSTRAP_CMD --ignore-db-dirs='some_dir' --ignore-db-dirs='some_dir' < $test_bootstrap >> $MYSQLTEST_VARDIR/tmp/bootstrap.log 2>&1
|
||||
|
||||
#
|
||||
# MDEV-13397 MariaDB upgrade fail when using default_time_zone
|
||||
#
|
||||
--write_file $MYSQLTEST_VARDIR/tmp/bootstrap_9969.sql
|
||||
use test;
|
||||
EOF
|
||||
--exec $MYSQLD_BOOTSTRAP_CMD --default-time-zone=Europe/Moscow < $MYSQLTEST_VARDIR/tmp/bootstrap_9969.sql >> $MYSQLTEST_VARDIR/tmp/bootstrap.log 2>&1
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/bootstrap_9969.sql
|
||||
--echo #
|
||||
--echo # MDEV-13397 MariaDB upgrade fail when using default_time_zone
|
||||
--echo #
|
||||
--exec $MYSQLD_BOOTSTRAP_CMD --default-time-zone=Europe/Moscow < $test_bootstrap >> $MYSQLTEST_VARDIR/tmp/bootstrap.log 2>&1
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-30818 invalid ssl prevents bootstrap
|
||||
--echo #
|
||||
--exec $MYSQLD_BOOTSTRAP_CMD --ssl-ca=/dev/nonexistent < $test_bootstrap >> $MYSQLTEST_VARDIR/tmp/bootstrap.log 2>&1
|
||||
|
||||
--source include/start_mysqld.inc
|
||||
--echo #
|
||||
--echo # End of 10.3 tests
|
||||
--echo #
|
||||
--remove_file $test_bootstrap
|
||||
|
|
|
|||
|
|
@ -84,3 +84,43 @@ O
|
|||
P
|
||||
Y
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Start of 10.4 tests
|
||||
#
|
||||
#
|
||||
# MDEV-30072 Wrong ORDER BY for a partitioned prefix key + NOPAD
|
||||
#
|
||||
SET NAMES utf8mb4;
|
||||
CREATE TABLE t1
|
||||
(
|
||||
id INT,
|
||||
data VARCHAR(20),
|
||||
KEY data_id (data,id)
|
||||
) COLLATE utf8mb3_unicode_nopad_ci ENGINE=MyISAM
|
||||
PARTITION BY RANGE COLUMNS (id)
|
||||
(
|
||||
PARTITION p10 VALUES LESS THAN (20),
|
||||
PARTITION p20 VALUES LESS THAN MAXVALUE
|
||||
);
|
||||
INSERT INTO t1 VALUES (30, 'ss '), (10, 'ß ');
|
||||
SELECT id FROM t1 WHERE data='ss ' ORDER BY id;
|
||||
id
|
||||
10
|
||||
30
|
||||
SELECT id FROM t1 WHERE data='ss ' ORDER BY id DESC;
|
||||
id
|
||||
30
|
||||
10
|
||||
ALTER TABLE t1 DROP KEY data_id, ADD KEY data_id2(data(10),id);
|
||||
SELECT id FROM t1 WHERE data='ss ' ORDER BY id;
|
||||
id
|
||||
10
|
||||
30
|
||||
SELECT id FROM t1 WHERE data='ss ' ORDER BY id DESC;
|
||||
id
|
||||
30
|
||||
10
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of 10.4 tests
|
||||
#
|
||||
|
|
|
|||
|
|
@ -36,3 +36,35 @@ SELECT * FROM t1 PARTITION (p0) ORDER BY c1;
|
|||
SELECT * FROM t1 PARTITION (p1) ORDER BY c1;
|
||||
SELECT * FROM t1 PARTITION (p2) ORDER BY c1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Start of 10.4 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-30072 Wrong ORDER BY for a partitioned prefix key + NOPAD
|
||||
--echo #
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
CREATE TABLE t1
|
||||
(
|
||||
id INT,
|
||||
data VARCHAR(20),
|
||||
KEY data_id (data,id)
|
||||
) COLLATE utf8mb3_unicode_nopad_ci ENGINE=MyISAM
|
||||
PARTITION BY RANGE COLUMNS (id)
|
||||
(
|
||||
PARTITION p10 VALUES LESS THAN (20),
|
||||
PARTITION p20 VALUES LESS THAN MAXVALUE
|
||||
);
|
||||
INSERT INTO t1 VALUES (30, 'ss '), (10, 'ß ');
|
||||
SELECT id FROM t1 WHERE data='ss ' ORDER BY id;
|
||||
SELECT id FROM t1 WHERE data='ss ' ORDER BY id DESC;
|
||||
ALTER TABLE t1 DROP KEY data_id, ADD KEY data_id2(data(10),id);
|
||||
SELECT id FROM t1 WHERE data='ss ' ORDER BY id;
|
||||
SELECT id FROM t1 WHERE data='ss ' ORDER BY id DESC;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.4 tests
|
||||
--echo #
|
||||
|
|
|
|||
|
|
@ -1330,5 +1330,28 @@ a b
|
|||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-28616: derived table over union with order by clause that
|
||||
# contains subquery with unresolvable column reference
|
||||
#
|
||||
SELECT 1 FROM (
|
||||
SELECT 1 UNION SELECT 2 ORDER BY (SELECT 1 FROM DUAL WHERE xxx = 0)
|
||||
) dt;
|
||||
ERROR 42S22: Unknown column 'xxx' in 'where clause'
|
||||
create table t1 (a int, b int);
|
||||
insert into t1 values (3,8), (7,2), (1,4), (5,9);
|
||||
create table t2 (a int, b int);
|
||||
insert into t2 values (9,1), (7,3), (2,6);
|
||||
create table t3 (c int, d int);
|
||||
insert into t3 values (7,8), (1,2), (3,8);
|
||||
select * from
|
||||
(
|
||||
select a,b from t1 where t1.a > 3
|
||||
union
|
||||
select a,b from t2 where t2.b < 6
|
||||
order by (a - b / (select a + max(c) from t3 where d = x))
|
||||
) dt;
|
||||
ERROR 42S22: Unknown column 'x' in 'where clause'
|
||||
drop table t1,t2,t3;
|
||||
#
|
||||
# End of 10.3 tests
|
||||
#
|
||||
|
|
|
|||
|
|
@ -1141,6 +1141,36 @@ SELECT * FROM v1 WHERE b > 0;
|
|||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-28616: derived table over union with order by clause that
|
||||
--echo # contains subquery with unresolvable column reference
|
||||
--echo #
|
||||
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
SELECT 1 FROM (
|
||||
SELECT 1 UNION SELECT 2 ORDER BY (SELECT 1 FROM DUAL WHERE xxx = 0)
|
||||
) dt;
|
||||
|
||||
create table t1 (a int, b int);
|
||||
insert into t1 values (3,8), (7,2), (1,4), (5,9);
|
||||
|
||||
create table t2 (a int, b int);
|
||||
insert into t2 values (9,1), (7,3), (2,6);
|
||||
|
||||
create table t3 (c int, d int);
|
||||
insert into t3 values (7,8), (1,2), (3,8);
|
||||
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
select * from
|
||||
(
|
||||
select a,b from t1 where t1.a > 3
|
||||
union
|
||||
select a,b from t2 where t2.b < 6
|
||||
order by (a - b / (select a + max(c) from t3 where d = x))
|
||||
) dt;
|
||||
|
||||
drop table t1,t2,t3;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.3 tests
|
||||
--echo #
|
||||
|
|
|
|||
|
|
@ -8469,6 +8469,362 @@ SELECT a FROM t1 WHERE (a,b) in (SELECT @c,@d);
|
|||
a
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-31085: multi-update using view with optimizer trace enabled
|
||||
#
|
||||
SET SESSION optimizer_trace = 'enabled=on';
|
||||
CREATE TABLE t (a int, b int);
|
||||
CREATE VIEW v AS SELECT 1 AS c UNION SELECT 2 AS c;
|
||||
INSERT INTO t VALUES (0,4),(5,6);
|
||||
UPDATE t, v SET t.b = t.a, t.a = v.c WHERE v.c < t.a;
|
||||
SELECT * FROM information_schema.optimizer_trace;
|
||||
QUERY TRACE MISSING_BYTES_BEYOND_MAX_MEM_SIZE INSUFFICIENT_PRIVILEGES
|
||||
UPDATE t, v SET t.b = t.a, t.a = v.c WHERE v.c < t.a {
|
||||
"steps": [
|
||||
{
|
||||
"view": {
|
||||
"table": "v",
|
||||
"select_id": 2,
|
||||
"algorithm": "materialized"
|
||||
}
|
||||
},
|
||||
{
|
||||
"join_preparation": {
|
||||
"select_id": 2,
|
||||
"steps": [
|
||||
{
|
||||
"expanded_query": "/* select#2 */ select 1 AS c"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"join_preparation": {
|
||||
"select_id": 3,
|
||||
"steps": [
|
||||
{
|
||||
"expanded_query": "/* select#3 */ select 2 AS c"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"join_preparation": {
|
||||
"select_id": 1,
|
||||
"steps": [
|
||||
{
|
||||
"expanded_query": "/* select#1 */ update t join v set t.b = t.a,t.a = v.c where v.c < t.a"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"join_optimization": {
|
||||
"select_id": 1,
|
||||
"steps": [
|
||||
{
|
||||
"condition_processing": {
|
||||
"condition": "WHERE",
|
||||
"original_condition": "v.c < t.a",
|
||||
"steps": [
|
||||
{
|
||||
"transformation": "equality_propagation",
|
||||
"resulting_condition": "v.c < t.a"
|
||||
},
|
||||
{
|
||||
"transformation": "constant_propagation",
|
||||
"resulting_condition": "v.c < t.a"
|
||||
},
|
||||
{
|
||||
"transformation": "trivial_condition_removal",
|
||||
"resulting_condition": "v.c < t.a"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"join_optimization": {
|
||||
"select_id": 2,
|
||||
"steps": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"join_optimization": {
|
||||
"select_id": 3,
|
||||
"steps": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"table_dependencies": [
|
||||
{
|
||||
"table": "t",
|
||||
"row_may_be_null": false,
|
||||
"map_bit": 0,
|
||||
"depends_on_map_bits": []
|
||||
},
|
||||
{
|
||||
"table": "<derived2>",
|
||||
"row_may_be_null": false,
|
||||
"map_bit": 1,
|
||||
"depends_on_map_bits": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ref_optimizer_key_uses": []
|
||||
},
|
||||
{
|
||||
"rows_estimation": [
|
||||
{
|
||||
"table": "t",
|
||||
"table_scan": {
|
||||
"rows": 2,
|
||||
"cost": 2.004394531
|
||||
}
|
||||
},
|
||||
{
|
||||
"table": "<derived2>",
|
||||
"table_scan": {
|
||||
"rows": 2,
|
||||
"cost": 2
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"considered_execution_plans": [
|
||||
{
|
||||
"plan_prefix": [],
|
||||
"table": "t",
|
||||
"best_access_path": {
|
||||
"considered_access_paths": [
|
||||
{
|
||||
"access_type": "scan",
|
||||
"resulting_rows": 2,
|
||||
"cost": 2.004394531,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
"chosen_access_method": {
|
||||
"type": "scan",
|
||||
"records": 2,
|
||||
"cost": 2.004394531,
|
||||
"uses_join_buffering": false
|
||||
}
|
||||
},
|
||||
"rows_for_plan": 2,
|
||||
"cost_for_plan": 2.404394531,
|
||||
"rest_of_plan": [
|
||||
{
|
||||
"plan_prefix": ["t"],
|
||||
"table": "<derived2>",
|
||||
"best_access_path": {
|
||||
"considered_access_paths": [
|
||||
{
|
||||
"access_type": "scan",
|
||||
"resulting_rows": 2,
|
||||
"cost": 2,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
"chosen_access_method": {
|
||||
"type": "scan",
|
||||
"records": 2,
|
||||
"cost": 2,
|
||||
"uses_join_buffering": true
|
||||
}
|
||||
},
|
||||
"rows_for_plan": 4,
|
||||
"cost_for_plan": 5.204394531,
|
||||
"estimated_join_cardinality": 4
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"plan_prefix": [],
|
||||
"table": "<derived2>",
|
||||
"best_access_path": {
|
||||
"considered_access_paths": [
|
||||
{
|
||||
"access_type": "scan",
|
||||
"resulting_rows": 2,
|
||||
"cost": 2,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
"chosen_access_method": {
|
||||
"type": "scan",
|
||||
"records": 2,
|
||||
"cost": 2,
|
||||
"uses_join_buffering": false
|
||||
}
|
||||
},
|
||||
"rows_for_plan": 2,
|
||||
"cost_for_plan": 2.4,
|
||||
"rest_of_plan": [
|
||||
{
|
||||
"plan_prefix": ["<derived2>"],
|
||||
"table": "t",
|
||||
"best_access_path": {
|
||||
"considered_access_paths": [
|
||||
{
|
||||
"access_type": "scan",
|
||||
"resulting_rows": 2,
|
||||
"cost": 2.004394531,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
"chosen_access_method": {
|
||||
"type": "scan",
|
||||
"records": 2,
|
||||
"cost": 2.004394531,
|
||||
"uses_join_buffering": true
|
||||
}
|
||||
},
|
||||
"rows_for_plan": 4,
|
||||
"cost_for_plan": 5.204394531,
|
||||
"pruned_by_cost": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"best_join_order": ["t", "<derived2>"]
|
||||
},
|
||||
{
|
||||
"attaching_conditions_to_tables": {
|
||||
"original_condition": "v.c < t.a",
|
||||
"attached_conditions_computation": [],
|
||||
"attached_conditions_summary": [
|
||||
{
|
||||
"table": "t",
|
||||
"attached": null
|
||||
},
|
||||
{
|
||||
"table": "<derived2>",
|
||||
"attached": "v.c < t.a"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"join_execution": {
|
||||
"select_id": 1,
|
||||
"steps": [
|
||||
{
|
||||
"join_execution": {
|
||||
"select_id": 2,
|
||||
"steps": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"join_execution": {
|
||||
"select_id": 3,
|
||||
"steps": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"join_preparation": {
|
||||
"select_id": "fake",
|
||||
"steps": [
|
||||
{
|
||||
"expanded_query": "select c AS c from dual"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"join_optimization": {
|
||||
"select_id": "fake",
|
||||
"steps": [
|
||||
{
|
||||
"table_dependencies": [
|
||||
{
|
||||
"table": "union",
|
||||
"row_may_be_null": false,
|
||||
"map_bit": 0,
|
||||
"depends_on_map_bits": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rows_estimation": [
|
||||
{
|
||||
"table": "union",
|
||||
"table_scan": {
|
||||
"rows": 2,
|
||||
"cost": 10.1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"considered_execution_plans": [
|
||||
{
|
||||
"plan_prefix": [],
|
||||
"table": "union",
|
||||
"best_access_path": {
|
||||
"considered_access_paths": [
|
||||
{
|
||||
"access_type": "scan",
|
||||
"resulting_rows": 2,
|
||||
"cost": 10.1,
|
||||
"chosen": true
|
||||
}
|
||||
],
|
||||
"chosen_access_method": {
|
||||
"type": "scan",
|
||||
"records": 2,
|
||||
"cost": 10.1,
|
||||
"uses_join_buffering": false
|
||||
}
|
||||
},
|
||||
"rows_for_plan": 2,
|
||||
"cost_for_plan": 10.5,
|
||||
"estimated_join_cardinality": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"best_join_order": ["union"]
|
||||
},
|
||||
{
|
||||
"attaching_conditions_to_tables": {
|
||||
"original_condition": null,
|
||||
"attached_conditions_computation": [],
|
||||
"attached_conditions_summary": [
|
||||
{
|
||||
"table": "union",
|
||||
"attached": null
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"join_execution": {
|
||||
"select_id": "fake",
|
||||
"steps": []
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
} 0 0
|
||||
SELECT * FROM t;
|
||||
a b
|
||||
0 4
|
||||
1 5
|
||||
SET optimizer_trace=DEFAULT;
|
||||
DROP VIEW v;
|
||||
DROP TABLE t;
|
||||
#
|
||||
# End of 10.4 tests
|
||||
#
|
||||
set optimizer_trace='enabled=on';
|
||||
|
|
|
|||
|
|
@ -677,6 +677,25 @@ INSERT INTO t1 VALUES (0,0);
|
|||
SELECT a FROM t1 WHERE (a,b) in (SELECT @c,@d);
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-31085: multi-update using view with optimizer trace enabled
|
||||
--echo #
|
||||
|
||||
SET SESSION optimizer_trace = 'enabled=on';
|
||||
|
||||
CREATE TABLE t (a int, b int);
|
||||
CREATE VIEW v AS SELECT 1 AS c UNION SELECT 2 AS c;
|
||||
INSERT INTO t VALUES (0,4),(5,6);
|
||||
UPDATE t, v SET t.b = t.a, t.a = v.c WHERE v.c < t.a;
|
||||
SELECT * FROM information_schema.optimizer_trace;
|
||||
|
||||
SELECT * FROM t;
|
||||
|
||||
SET optimizer_trace=DEFAULT;
|
||||
|
||||
DROP VIEW v;
|
||||
DROP TABLE t;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.4 tests
|
||||
--echo #
|
||||
|
|
|
|||
|
|
@ -1910,12 +1910,32 @@ SET @@sql_mode=@save_sql_mode;
|
|||
#
|
||||
# MDEV-30151 parse error 1=2 not between/in
|
||||
#
|
||||
select 1=2 not in (3,4);
|
||||
1=2 not in (3,4)
|
||||
SELECT 1=2 NOT IN (3,4);
|
||||
1=2 NOT IN (3,4)
|
||||
1
|
||||
select 1=2 not between 3 and 4;
|
||||
1=2 not between 3 and 4
|
||||
SELECT 1=2 NOT BETWEEN 3 AND 4;
|
||||
1=2 NOT BETWEEN 3 AND 4
|
||||
1
|
||||
CREATE TABLE t1 ( f INT AS ( 1 IN ( 2 NOT BETWEEN 3 AND 4 ) ) );
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`f` int(11) GENERATED ALWAYS AS (1 = 2 not between 3 and 4) VIRTUAL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 ( f INT, CHECK ( 1 IN ( 2 NOT BETWEEN 3 AND 4 ) ) );
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`f` int(11) DEFAULT NULL,
|
||||
CONSTRAINT `CONSTRAINT_1` CHECK (1 = 2 not between 3 and 4)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
||||
DROP TABLE t1;
|
||||
CREATE VIEW v1 AS SELECT 1 IN ( 2 NOT BETWEEN 3 AND 4 );
|
||||
SHOW CREATE VIEW v1;
|
||||
View Create View character_set_client collation_connection
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 = 2 not between 3 and 4 AS `1 IN ( 2 NOT BETWEEN 3 AND 4 )` latin1 latin1_swedish_ci
|
||||
DROP VIEW v1;
|
||||
#
|
||||
# End of 10.3 tests
|
||||
#
|
||||
|
|
|
|||
|
|
@ -1683,8 +1683,21 @@ SET @@sql_mode=@save_sql_mode;
|
|||
--echo #
|
||||
--echo # MDEV-30151 parse error 1=2 not between/in
|
||||
--echo #
|
||||
select 1=2 not in (3,4);
|
||||
select 1=2 not between 3 and 4;
|
||||
|
||||
SELECT 1=2 NOT IN (3,4);
|
||||
SELECT 1=2 NOT BETWEEN 3 AND 4;
|
||||
|
||||
CREATE TABLE t1 ( f INT AS ( 1 IN ( 2 NOT BETWEEN 3 AND 4 ) ) );
|
||||
SHOW CREATE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 ( f INT, CHECK ( 1 IN ( 2 NOT BETWEEN 3 AND 4 ) ) );
|
||||
SHOW CREATE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE VIEW v1 AS SELECT 1 IN ( 2 NOT BETWEEN 3 AND 4 );
|
||||
SHOW CREATE VIEW v1;
|
||||
DROP VIEW v1;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.3 tests
|
||||
|
|
|
|||
94
mysql-test/main/sql_mode_pad_char_to_full_length.result
Normal file
94
mysql-test/main/sql_mode_pad_char_to_full_length.result
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
#
|
||||
# Start of 10.4 tests
|
||||
#
|
||||
#
|
||||
# MDEV-28190 sql_mode makes MDEV-371 virtual column expressions nondeterministic
|
||||
#
|
||||
SET default_storage_engine=MyISAM;
|
||||
#
|
||||
# MDEV-28190 sql_mode makes MDEV-371 virtual column expressions nondeterministic
|
||||
#
|
||||
CREATE TABLE t1 (a INT,b CHAR(20));
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL,
|
||||
`b` char(20) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
||||
CREATE UNIQUE INDEX bi USING HASH ON t1 (b);
|
||||
INSERT INTO t1 VALUES (0,0);
|
||||
SET sql_mode='pad_char_to_full_length';
|
||||
DELETE FROM t1;
|
||||
DROP TABLE t1;
|
||||
SET sql_mode='';
|
||||
CREATE TABLE t1 (a INT,b CHAR(20));
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL,
|
||||
`b` char(20) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
||||
CREATE UNIQUE INDEX bi USING HASH ON t1 (b);
|
||||
SET sql_mode='pad_char_to_full_length';
|
||||
INSERT INTO t1 VALUES (0,0);
|
||||
DELETE FROM t1;
|
||||
DROP TABLE t1;
|
||||
SET sql_mode='';
|
||||
CREATE OR REPLACE TABLE t1 (a CHAR(20),b CHAR(20));
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` char(20) DEFAULT NULL,
|
||||
`b` char(20) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
||||
CREATE UNIQUE INDEX bi USING HASH ON t1 (b);
|
||||
INSERT INTO t1 VALUES (0,0);
|
||||
SET sql_mode='pad_char_to_full_length';
|
||||
DELETE FROM t1;
|
||||
DROP TABLE t1;
|
||||
SET default_storage_engine=MEMORY;
|
||||
#
|
||||
# MDEV-28190 sql_mode makes MDEV-371 virtual column expressions nondeterministic
|
||||
#
|
||||
CREATE TABLE t1 (a INT,b CHAR(20));
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL,
|
||||
`b` char(20) DEFAULT NULL
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
||||
CREATE UNIQUE INDEX bi USING HASH ON t1 (b);
|
||||
INSERT INTO t1 VALUES (0,0);
|
||||
SET sql_mode='pad_char_to_full_length';
|
||||
DELETE FROM t1;
|
||||
DROP TABLE t1;
|
||||
SET sql_mode='';
|
||||
CREATE TABLE t1 (a INT,b CHAR(20));
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL,
|
||||
`b` char(20) DEFAULT NULL
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
||||
CREATE UNIQUE INDEX bi USING HASH ON t1 (b);
|
||||
SET sql_mode='pad_char_to_full_length';
|
||||
INSERT INTO t1 VALUES (0,0);
|
||||
DELETE FROM t1;
|
||||
DROP TABLE t1;
|
||||
SET sql_mode='';
|
||||
CREATE OR REPLACE TABLE t1 (a CHAR(20),b CHAR(20));
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` char(20) DEFAULT NULL,
|
||||
`b` char(20) DEFAULT NULL
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
||||
CREATE UNIQUE INDEX bi USING HASH ON t1 (b);
|
||||
INSERT INTO t1 VALUES (0,0);
|
||||
SET sql_mode='pad_char_to_full_length';
|
||||
DELETE FROM t1;
|
||||
DROP TABLE t1;
|
||||
SET default_storage_engine=DEFAULT;
|
||||
#
|
||||
# End of 10.4 tests
|
||||
#
|
||||
19
mysql-test/main/sql_mode_pad_char_to_full_length.test
Normal file
19
mysql-test/main/sql_mode_pad_char_to_full_length.test
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
--echo #
|
||||
--echo # Start of 10.4 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-28190 sql_mode makes MDEV-371 virtual column expressions nondeterministic
|
||||
--echo #
|
||||
|
||||
SET default_storage_engine=MyISAM;
|
||||
--source include/sql_mode_pad_char_to_full_length.inc
|
||||
|
||||
SET default_storage_engine=MEMORY;
|
||||
--source include/sql_mode_pad_char_to_full_length.inc
|
||||
|
||||
SET default_storage_engine=DEFAULT;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.4 tests
|
||||
--echo #
|
||||
|
|
@ -734,3 +734,32 @@ UPDATE t1,t2 SET t1.i1 = -39 WHERE t2.d1 <> t1.i1 AND t2.d1 = t1.d2;
|
|||
ERROR 22007: Incorrect datetime value: '19' for column `test`.`t1`.`i1` at row 1
|
||||
DROP TABLE t1,t2;
|
||||
# End of MariaDB 10.2 tests
|
||||
#
|
||||
# MDEV-20773: UPDATE with LIKE predicate over non-indexed column
|
||||
# of VARCHAR type
|
||||
#
|
||||
create table t1 (a1 varchar(30), a2 varchar(30) collate utf8_bin);
|
||||
insert into t1 values
|
||||
('aa','zzz'), ('b','xxaa'), ('ccc','yyy'), ('ddd','xxb');
|
||||
analyze table t1 persistent for all;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status Engine-independent statistics collected
|
||||
test.t1 analyze status OK
|
||||
explain extended
|
||||
update t1 set a1 = 'u'
|
||||
where a2 like 'xx%' and exists(select 1 from t1 where t1.a1 < 'c');
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 4 49.22 Using where
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 4 50.00 Using where
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ update `test`.`t1` set `test`.`t1`.`a1` = 'u' where `test`.`t1`.`a2` like 'xx%'
|
||||
update t1 set a1 = 'u'
|
||||
where a2 like 'xx%' and exists(select 1 from t1 where t1.a1 < 'c');
|
||||
select * from t1;
|
||||
a1 a2
|
||||
aa zzz
|
||||
u xxaa
|
||||
ccc yyy
|
||||
u xxb
|
||||
drop table t1;
|
||||
# End of MariaDB 10.4 tests
|
||||
|
|
|
|||
|
|
@ -676,3 +676,26 @@ UPDATE t1,t2 SET t1.i1 = -39 WHERE t2.d1 <> t1.i1 AND t2.d1 = t1.d2;
|
|||
DROP TABLE t1,t2;
|
||||
|
||||
--echo # End of MariaDB 10.2 tests
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-20773: UPDATE with LIKE predicate over non-indexed column
|
||||
--echo # of VARCHAR type
|
||||
--echo #
|
||||
|
||||
create table t1 (a1 varchar(30), a2 varchar(30) collate utf8_bin);
|
||||
insert into t1 values
|
||||
('aa','zzz'), ('b','xxaa'), ('ccc','yyy'), ('ddd','xxb');
|
||||
analyze table t1 persistent for all;
|
||||
|
||||
explain extended
|
||||
update t1 set a1 = 'u'
|
||||
where a2 like 'xx%' and exists(select 1 from t1 where t1.a1 < 'c');
|
||||
|
||||
update t1 set a1 = 'u'
|
||||
where a2 like 'xx%' and exists(select 1 from t1 where t1.a1 < 'c');
|
||||
|
||||
select * from t1;
|
||||
|
||||
drop table t1;
|
||||
|
||||
--echo # End of MariaDB 10.4 tests
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue