summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2018-10-31 18:18:48 +0100
committerSergei Golubchik <serg@mariadb.org>2018-11-01 16:18:17 +0100
commitc32f7ed235f12d4e63f3145d09d5a57fb948d947 (patch)
treef2704c5fee9a72d844cea1af9913ba512a5c061e
parent9ff9d2303dc6ccb856a66664af625990efaf172b (diff)
downloadmariadb-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.result14
-rw-r--r--mysql-test/t/auto_increment_ranges_innodb.test11
-rw-r--r--sql/sql_yacc.yy1
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; }