diff options
author | Sergei Golubchik <serg@mariadb.org> | 2018-10-31 18:18:48 +0100 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2018-11-01 16:18:17 +0100 |
commit | c32f7ed235f12d4e63f3145d09d5a57fb948d947 (patch) | |
tree | f2704c5fee9a72d844cea1af9913ba512a5c061e | |
parent | 9ff9d2303dc6ccb856a66664af625990efaf172b (diff) | |
download | mariadb-git-c32f7ed235f12d4e63f3145d09d5a57fb948d947.tar.gz |
MDEV-17377 invalid gap in auto-increment values after LOAD DATA
reset lex->many_values for LOAD DATA, as it's used for
auto-inc range size estimation.
-rw-r--r-- | mysql-test/r/auto_increment_ranges_innodb.result | 14 | ||||
-rw-r--r-- | mysql-test/t/auto_increment_ranges_innodb.test | 11 | ||||
-rw-r--r-- | sql/sql_yacc.yy | 1 |
3 files changed, 26 insertions, 0 deletions
diff --git a/mysql-test/r/auto_increment_ranges_innodb.result b/mysql-test/r/auto_increment_ranges_innodb.result index fb936ddfd2b..961f8b870ec 100644 --- a/mysql-test/r/auto_increment_ranges_innodb.result +++ b/mysql-test/r/auto_increment_ranges_innodb.result @@ -264,3 +264,17 @@ delete from t1 where a=32767; insert into t1 values(NULL); ERROR 22003: Out of range value for column 'a' at row 1 drop table t1; +create table t1 (pk int auto_increment primary key, f varchar(20)); +insert t1 (f) values ('a'), ('b'), ('c'), ('d'); +select null, f into outfile 'load.data' from t1 limit 1; +load data infile 'load.data' into table t1; +insert t1 (f) values ('<==='); +select * from t1; +pk f +1 a +2 b +3 c +4 d +5 a +6 <=== +drop table t1; diff --git a/mysql-test/t/auto_increment_ranges_innodb.test b/mysql-test/t/auto_increment_ranges_innodb.test index c2afee7ac66..3317153c31a 100644 --- a/mysql-test/t/auto_increment_ranges_innodb.test +++ b/mysql-test/t/auto_increment_ranges_innodb.test @@ -5,3 +5,14 @@ --source include/have_innodb.inc set default_storage_engine=innodb; --source auto_increment_ranges.inc + +# +# MDEV-17377 invalid gap in auto-increment values after LOAD DATA +# +create table t1 (pk int auto_increment primary key, f varchar(20)); +insert t1 (f) values ('a'), ('b'), ('c'), ('d'); +select null, f into outfile 'load.data' from t1 limit 1; +load data infile 'load.data' into table t1; +insert t1 (f) values ('<==='); +select * from t1; +drop table t1; diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index bf47153c0c1..34f7c6e3481 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -12073,6 +12073,7 @@ load: lex->field_list.empty(); lex->update_list.empty(); lex->value_list.empty(); + lex->many_values.empty(); } opt_load_data_charset { Lex->exchange->cs= $14; } |