summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2014-11-18 15:42:32 +0100
committerSergei Golubchik <sergii@pisem.net>2014-11-18 15:42:32 +0100
commit84f25c25f260373b54941d9239e8b0d758990601 (patch)
tree5541f659c4aabcfa1af2dbf055bbf93ecfeda92b /mysql-test
parent241294b53a0ee815a1c349820b8c9a69f36f4164 (diff)
downloadmariadb-git-84f25c25f260373b54941d9239e8b0d758990601.tar.gz
MDEV-3940 Server crash or assertion `item->type() == Item::STRING_ITEM' failure on LOAD DATA through a view with statement binary logging
A "field" could be either an Item_field or (if loading into a view) an Item_direct_ref that references Item_field. Also: when iterating fields, use fields of the TABLE_LIST (table or view), not fields of a TABLE (actual underlying table - might have more columns).
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/suite/binlog/r/load_data_stm_view.result22
-rw-r--r--mysql-test/suite/binlog/t/load_data_stm_view.test20
2 files changed, 42 insertions, 0 deletions
diff --git a/mysql-test/suite/binlog/r/load_data_stm_view.result b/mysql-test/suite/binlog/r/load_data_stm_view.result
new file mode 100644
index 00000000000..39756de8435
--- /dev/null
+++ b/mysql-test/suite/binlog/r/load_data_stm_view.result
@@ -0,0 +1,22 @@
+create table t1 (i int, j int);
+create view v1 as select i from t1;
+LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/3940.data' INTO TABLE v1 (i);
+LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/3940.data' INTO TABLE v1;
+select * from v1;
+i
+1
+1
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; create table t1 (i int, j int)
+master-bin.000001 # Query # # use `test`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select i from t1
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=#
+master-bin.000001 # Execute_load_query # # use `test`; LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/3940.data' IGNORE INTO TABLE `v1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`i`) ;file_id=#
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=#
+master-bin.000001 # Execute_load_query # # use `test`; LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/3940.data' IGNORE INTO TABLE `v1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`i`) ;file_id=#
+master-bin.000001 # Query # # COMMIT
+drop view v1;
+drop table t1;
diff --git a/mysql-test/suite/binlog/t/load_data_stm_view.test b/mysql-test/suite/binlog/t/load_data_stm_view.test
new file mode 100644
index 00000000000..b70651b4e2d
--- /dev/null
+++ b/mysql-test/suite/binlog/t/load_data_stm_view.test
@@ -0,0 +1,20 @@
+#
+# MDEV-3940 Server crash or assertion `item->type() == Item::STRING_ITEM' failure on LOAD DATA through a view with statement binary logging
+#
+
+--source include/have_binlog_format_statement.inc
+
+--write_file $MYSQLTEST_VARDIR/3940.data
+1
+EOF
+
+create table t1 (i int, j int);
+create view v1 as select i from t1;
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+--eval LOAD DATA LOCAL INFILE '$MYSQLTEST_VARDIR/3940.data' INTO TABLE v1 (i)
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+--eval LOAD DATA LOCAL INFILE '$MYSQLTEST_VARDIR/3940.data' INTO TABLE v1
+select * from v1;
+--source include/show_binlog_events.inc
+drop view v1;
+drop table t1;