Commit c4140721 authored by Marko Mäkelä's avatar Marko Mäkelä

Merge 10.1 into 10.2

parents 56976e60 70a5fb49
...@@ -48,8 +48,8 @@ static char *add_load_option(char *ptr,const char *object, ...@@ -48,8 +48,8 @@ static char *add_load_option(char *ptr,const char *object,
const char *statement); const char *statement);
static my_bool verbose=0,lock_tables=0,ignore_errors=0,opt_delete=0, static my_bool verbose=0,lock_tables=0,ignore_errors=0,opt_delete=0,
replace=0,silent=0,ignore=0,opt_compress=0, replace, silent, ignore, ignore_foreign_keys,
opt_low_priority= 0, tty_password= 0; opt_compress, opt_low_priority, tty_password;
static my_bool debug_info_flag= 0, debug_check_flag= 0; static my_bool debug_info_flag= 0, debug_check_flag= 0;
static uint opt_use_threads=0, opt_local_file=0, my_end_arg= 0; static uint opt_use_threads=0, opt_local_file=0, my_end_arg= 0;
static char *opt_password=0, *current_user=0, static char *opt_password=0, *current_user=0,
...@@ -123,6 +123,10 @@ static struct my_option my_long_options[] = ...@@ -123,6 +123,10 @@ static struct my_option my_long_options[] =
&current_host, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, &current_host, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"ignore", 'i', "If duplicate unique key was found, keep old row.", {"ignore", 'i', "If duplicate unique key was found, keep old row.",
&ignore, &ignore, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, &ignore, &ignore, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"ignore-foreign-keys", 'k',
"Disable foreign key checks while importing the data.",
&ignore_foreign_keys, &ignore_foreign_keys, 0, GET_BOOL, NO_ARG,
0, 0, 0, 0, 0, 0},
{"ignore-lines", OPT_IGN_LINES, "Ignore first n lines of data infile.", {"ignore-lines", OPT_IGN_LINES, "Ignore first n lines of data infile.",
&opt_ignore_lines, &opt_ignore_lines, 0, GET_LL, &opt_ignore_lines, &opt_ignore_lines, 0, GET_LL,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
...@@ -489,6 +493,9 @@ static MYSQL *db_connect(char *host, char *database, ...@@ -489,6 +493,9 @@ static MYSQL *db_connect(char *host, char *database,
ignore_errors=0; ignore_errors=0;
db_error(mysql); db_error(mysql);
} }
if (ignore_foreign_keys)
mysql_query(mysql, "set foreign_key_checks= 0;");
return mysql; return mysql;
} }
......
...@@ -5629,6 +5629,24 @@ DROP FUNCTION f; ...@@ -5629,6 +5629,24 @@ DROP FUNCTION f;
DROP VIEW v1; DROP VIEW v1;
DROP FUNCTION f; DROP FUNCTION f;
# #
# MDEV-788 New option to ignore foreign key contraints in mysqlimport
#
create table t1 (
id int primary key
) engine=InnoDB;
create table t2 (
t1_id int,
CONSTRAINT fk
FOREIGN KEY (t1_id) REFERENCES t1 (id)
) ENGINE = InnoDB;
select count(*) from t2;
count(*)
1
select count(*) from t2;
count(*)
2
drop tables t2, t1;
#
# Test for --add-drop-trigger # Test for --add-drop-trigger
# #
use test; use test;
......
...@@ -707,8 +707,38 @@ ERROR 42S02: Table 'test.x' doesn't exist ...@@ -707,8 +707,38 @@ ERROR 42S02: Table 'test.x' doesn't exist
select * from information_schema.tables where table_name='v'; select * from information_schema.tables where table_name='v';
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT
def test v VIEW NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL VIEW def test v VIEW NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL VIEW
set @@optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity;
drop table t1,t2; drop table t1,t2;
drop view v; drop view v;
#
# MDEV-19407: Assertion `field->table->stats_is_read' failed in is_eits_usable
#
set @save_optimizer_use_condition_selectivity= @@optimizer_use_condition_selectivity;
set @@optimizer_use_condition_selectivity= 1;
set @@use_stat_tables='never';
create table t1(pk int);
insert into t1 values (4),(3);
set @@optimizer_use_condition_selectivity= 4;
set use_stat_tables='preferably';
INSERT INTO t1 SELECT * FROM x;
ERROR 42S02: Table 'test.x' doesn't exist
CREATE TABLE t2 SELECT pk FROM t1 WHERE pk>2;
select * from t2;
pk
4
3
drop table t1,t2;
create table t1(a int,b int, key k1(a) );
insert into t1 values(1,1),(2,2),(3,3);
analyze table t1;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status OK
select * from mysql.index_stats, t1 where index_name='k1' and t1.a > 1 and t1.b > 1;
db_name table_name index_name prefix_arity avg_frequency a b
test t1 k1 1 1.0000 2 2
test t1 k1 1 1.0000 3 3
drop table t1;
set @@optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity; set @@optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity;
set @save_optimizer_switch=@@optimizer_switch; set @save_optimizer_switch=@@optimizer_switch;
set use_stat_tables=@save_use_stat_tables; set use_stat_tables=@save_use_stat_tables;
......
...@@ -734,8 +734,38 @@ ERROR 42S02: Table 'test.x' doesn't exist ...@@ -734,8 +734,38 @@ ERROR 42S02: Table 'test.x' doesn't exist
select * from information_schema.tables where table_name='v'; select * from information_schema.tables where table_name='v';
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT
def test v VIEW NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL VIEW def test v VIEW NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL VIEW
set @@optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity;
drop table t1,t2; drop table t1,t2;
drop view v; drop view v;
#
# MDEV-19407: Assertion `field->table->stats_is_read' failed in is_eits_usable
#
set @save_optimizer_use_condition_selectivity= @@optimizer_use_condition_selectivity;
set @@optimizer_use_condition_selectivity= 1;
set @@use_stat_tables='never';
create table t1(pk int);
insert into t1 values (4),(3);
set @@optimizer_use_condition_selectivity= 4;
set use_stat_tables='preferably';
INSERT INTO t1 SELECT * FROM x;
ERROR 42S02: Table 'test.x' doesn't exist
CREATE TABLE t2 SELECT pk FROM t1 WHERE pk>2;
select * from t2;
pk
4
3
drop table t1,t2;
create table t1(a int,b int, key k1(a) );
insert into t1 values(1,1),(2,2),(3,3);
analyze table t1;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status OK
select * from mysql.index_stats, t1 where index_name='k1' and t1.a > 1 and t1.b > 1;
db_name table_name index_name prefix_arity avg_frequency a b
test t1 k1 1 1.0000 2 2
test t1 k1 1 1.0000 3 3
drop table t1;
set @@optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity; set @@optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity;
set @save_optimizer_switch=@@optimizer_switch; set @save_optimizer_switch=@@optimizer_switch;
set use_stat_tables=@save_use_stat_tables; set use_stat_tables=@save_use_stat_tables;
......
...@@ -2489,6 +2489,7 @@ DROP TABLE t1; ...@@ -2489,6 +2489,7 @@ DROP TABLE t1;
DROP TABLE t2; DROP TABLE t2;
DROP DATABASE db_20772273; DROP DATABASE db_20772273;
USE test; USE test;
--remove_file $MYSQLTEST_VARDIR/tmp/t2.txt
--echo # --echo #
--echo # Bug #25717383: MYSQLDUMP MAY EXECUTE ANY ARBITRARY QUERY --echo # Bug #25717383: MYSQLDUMP MAY EXECUTE ANY ARBITRARY QUERY
...@@ -2657,6 +2658,34 @@ DROP FUNCTION f; ...@@ -2657,6 +2658,34 @@ DROP FUNCTION f;
DROP VIEW v1; DROP VIEW v1;
DROP FUNCTION f; DROP FUNCTION f;
--echo #
--echo # MDEV-788 New option to ignore foreign key contraints in mysqlimport
--echo #
create table t1 (
id int primary key
) engine=InnoDB;
create table t2 (
t1_id int,
CONSTRAINT fk
FOREIGN KEY (t1_id) REFERENCES t1 (id)
) ENGINE = InnoDB;
--write_file $MYSQLTEST_VARDIR/tmp/t2.txt
0
EOF
--error 1
--exec $MYSQL_IMPORT --silent test $MYSQLTEST_VARDIR/tmp/t2.txt
--exec $MYSQL_IMPORT --silent -k test $MYSQLTEST_VARDIR/tmp/t2.txt
select count(*) from t2;
--exec $MYSQL_IMPORT --silent --ignore-foreign-keys test $MYSQLTEST_VARDIR/tmp/t2.txt
select count(*) from t2;
--remove_file $MYSQLTEST_VARDIR/tmp/t2.txt
drop tables t2, t1;
--echo # --echo #
--echo # Test for --add-drop-trigger --echo # Test for --add-drop-trigger
--echo # --echo #
......
...@@ -469,9 +469,35 @@ CREATE VIEW v AS SELECT * FROM t1 JOIN t2; ...@@ -469,9 +469,35 @@ CREATE VIEW v AS SELECT * FROM t1 JOIN t2;
INSERT INTO t2 SELECT * FROM x; INSERT INTO t2 SELECT * FROM x;
select * from information_schema.tables where table_name='v'; select * from information_schema.tables where table_name='v';
set @@optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity;
drop table t1,t2; drop table t1,t2;
drop view v; drop view v;
--echo #
--echo # MDEV-19407: Assertion `field->table->stats_is_read' failed in is_eits_usable
--echo #
set @save_optimizer_use_condition_selectivity= @@optimizer_use_condition_selectivity;
set @@optimizer_use_condition_selectivity= 1;
set @@use_stat_tables='never';
create table t1(pk int);
insert into t1 values (4),(3);
set @@optimizer_use_condition_selectivity= 4;
set use_stat_tables='preferably';
--error ER_NO_SUCH_TABLE
INSERT INTO t1 SELECT * FROM x;
CREATE TABLE t2 SELECT pk FROM t1 WHERE pk>2;
select * from t2;
drop table t1,t2;
create table t1(a int,b int, key k1(a) );
insert into t1 values(1,1),(2,2),(3,3);
analyze table t1;
select * from mysql.index_stats, t1 where index_name='k1' and t1.a > 1 and t1.b > 1;
drop table t1;
set @@optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity; set @@optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity;
set @save_optimizer_switch=@@optimizer_switch; set @save_optimizer_switch=@@optimizer_switch;
......
...@@ -3038,7 +3038,7 @@ bool calculate_cond_selectivity_for_table(THD *thd, TABLE *table, Item **cond) ...@@ -3038,7 +3038,7 @@ bool calculate_cond_selectivity_for_table(THD *thd, TABLE *table, Item **cond)
if (thd->variables.optimizer_use_condition_selectivity > 2 && if (thd->variables.optimizer_use_condition_selectivity > 2 &&
!bitmap_is_clear_all(used_fields) && !bitmap_is_clear_all(used_fields) &&
thd->variables.use_stat_tables > 0) thd->variables.use_stat_tables > 0 && table->stats_is_read)
{ {
PARAM param; PARAM param;
MEM_ROOT alloc; MEM_ROOT alloc;
......
...@@ -2201,6 +2201,9 @@ inline bool statistics_for_command_is_needed(THD *thd) ...@@ -2201,6 +2201,9 @@ inline bool statistics_for_command_is_needed(THD *thd)
case SQLCOM_DELETE_MULTI: case SQLCOM_DELETE_MULTI:
case SQLCOM_REPLACE: case SQLCOM_REPLACE:
case SQLCOM_REPLACE_SELECT: case SQLCOM_REPLACE_SELECT:
case SQLCOM_CREATE_TABLE:
case SQLCOM_SET_OPTION:
case SQLCOM_DO:
break; break;
default: default:
return FALSE; return FALSE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment