diff options
Diffstat (limited to 'mysql-test')
-rw-r--r-- | mysql-test/r/loadxml.result | 79 | ||||
-rw-r--r-- | mysql-test/std_data/loadxml.dat | 64 | ||||
-rw-r--r-- | mysql-test/std_data/loadxml2.dat | 19 | ||||
-rw-r--r-- | mysql-test/t/loadxml.test | 106 |
4 files changed, 268 insertions, 0 deletions
diff --git a/mysql-test/r/loadxml.result b/mysql-test/r/loadxml.result new file mode 100644 index 00000000000..dc2392e5593 --- /dev/null +++ b/mysql-test/r/loadxml.result @@ -0,0 +1,79 @@ +drop table if exists t1, t2; +create table t1 (a int, b varchar(64)); +-- Load a static XML file +load xml infile '../../std_data/loadxml.dat' into table t1 +rows identified by '<row>'; +select * from t1 order by a; +a b +1 b1 +2 b2 +3 b3 +11 b11 +111 b111 +112 b112 & < > " ' &unknown; -- check entities +212 b212 +213 b213 +214 b214 +215 b215 +216 &bb b; +delete from t1; +-- Load a static XML file with 'IGNORE num ROWS' +load xml infile '../../std_data/loadxml.dat' into table t1 +rows identified by '<row>' ignore 4 rows; +select * from t1 order by a; +a b +111 b111 +112 b112 & < > " ' &unknown; -- check entities +212 b212 +213 b213 +214 b214 +215 b215 +216 &bb b; +-- Check 'mysqldump --xml' + 'LOAD XML' round trip +delete from t1; +load xml infile 'MYSQLTEST_VARDIR/tmp/loadxml-dump.xml' into table t1 rows identified by '<row>';; +select * from t1 order by a; +a b +111 b111 +112 b112 & < > " ' &unknown; -- check entities +212 b212 +213 b213 +214 b214 +215 b215 +216 &bb b; +--Check that default row tag is '<row> +delete from t1; +load xml infile 'MYSQLTEST_VARDIR/tmp/loadxml-dump.xml' into table t1;; +select * from t1 order by a; +a b +111 b111 +112 b112 & < > " ' &unknown; -- check entities +212 b212 +213 b213 +214 b214 +215 b215 +216 &bb b; +-- Check that 'xml' is not a keyword +select 1 as xml; +xml +1 +create table t2(fl text); +LOAD XML LOCAL INFILE "$MYSQLTEST_VARDIR/tmp/loadxml-dump.xml" INTO TABLE t2 ROWS IDENTIFIED BY '<person>';; +show processlist; +Id User Host db Command Time State Info +2 root localhost test Query 0 NULL show processlist +5 root localhost test Query 3 Reading from net LOAD XML LOCAL INFILE "$MYSQLTEST_VARDIR/tmp/loadxml-dump.xml" INTO TABLE t2 ROWS IDENTIFIED BY '<p +drop table t1; +drop table t2; +create table t1 ( +id int(11) not null, +text text, +primary key (id) +) engine=MyISAM default charset=latin1; +load xml infile '../../std_data/loadxml2.dat' into table t1; +select * from t1; +id text +1 line1
+line2
+line3 +drop table t1; diff --git a/mysql-test/std_data/loadxml.dat b/mysql-test/std_data/loadxml.dat new file mode 100644 index 00000000000..b72fac9da74 --- /dev/null +++ b/mysql-test/std_data/loadxml.dat @@ -0,0 +1,64 @@ +<?xml version="1.0"?> +<mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> +<database name="test"> + <table_structure name="t1"> + <field Field="a" Type="int(11)" Null="YES" Key="" Extra="" /> + <field Field="b" Type="varchar(128)" Null="YES" Key="" Extra="" /> + <options Name="t1" Engine="MyISAM" Version="10" Row_format="Dynamic" Rows="3" Avg_row_length="20" Data_length="60" Max_data_length="281474976710655" Index_length="1024" Data_free="0" Create_time="2007-02-09 09:08:36" Update_time="2007-02-09 09:08:54" Collation="latin1_swedish_ci" Create_options="" Comment="" /> + </table_structure> + <table_data name="t1"> + <row> + <field name="a">1</field> + <field name="b">b1</field> + </row> + <row> + <field name="a">2</field> + <field name="b">b2</field> + </row> + <row> + <field name="a">3</field> + <field name="b">b3</field> + </row> + <row> + <field name="a">11</field> + <field name="b">b11</field> + </row> + + <!-- Check field values as tags --> + <row> + <a>111</a> + <b>b111</b> + </row> + + <row> + <a>112</a> + <b>b112 & < > " ' &unknown; -- check entities</b> + </row> + + + <!-- Check field values in attributes --> + <row a=212 b="b212"></row> + + <!-- Bug#29752 Linefeeds break LOAD XML INFILE --> + <!-- Check varios combinations of TAB and NL --> + + <row + a=213 b="b213"> + </row> + + <row + a=214 + b="b214"> + </row> + + <row a=215 b="b215"></row> + + <row a=216 b="&bb +b;"></row> + + <!-- End of bug#29752 --> + + </table_data> +</database> +</mysqldump> + diff --git a/mysql-test/std_data/loadxml2.dat b/mysql-test/std_data/loadxml2.dat new file mode 100644 index 00000000000..f0d966cf9b6 --- /dev/null +++ b/mysql-test/std_data/loadxml2.dat @@ -0,0 +1,19 @@ +<?xml version="1.0"?> +<mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> +<database name="test_of_xml_import"> + <table_structure name="t1"> + <field Field="id" Type="int(11)" Null="NO" Key="PRI" Extra="" /> + <field Field="text" Type="text" Null="YES" Key="" Extra="" /> + <key Table="t1" Non_unique="0" Key_name="PRIMARY" Seq_in_index="1" Column_name="id" Collation="A" Cardinality="1" Null="" Index_type="BTREE" Comment="" Index_Comment="" /> + <options Name="t1" Engine="MyISAM" Version="10" Row_format="Dynamic" Rows="1" Avg_row_length="32" Data_length="32" Max_data_length="281474976710655" Index_length="2048" Data_free="0" Create_time="2009-06-18 10:02:37" Update_time="2009-06-18 10:02:43" Collation="latin1_swedish_ci" Create_options="" Comment="" /> + </table_structure> + <table_data name="t1"> + <row> + <field name="id">1</field> + <field name="text">line1
+line2
+line3</field> + </row> + </table_data> +</database> +</mysqldump> diff --git a/mysql-test/t/loadxml.test b/mysql-test/t/loadxml.test new file mode 100644 index 00000000000..bb088559ae2 --- /dev/null +++ b/mysql-test/t/loadxml.test @@ -0,0 +1,106 @@ +# +# Tests for "LOAD XML" - a contributed patch from Erik Wetterberg. +# + +# Running the $MYSQL_DUMP tool against an embedded server does not work. +--source include/not_embedded.inc + +--disable_warnings +drop table if exists t1, t2; +--enable_warnings + +create table t1 (a int, b varchar(64)); + + +--echo -- Load a static XML file +load xml infile '../../std_data/loadxml.dat' into table t1 +rows identified by '<row>'; +select * from t1 order by a; +delete from t1; + + +--echo -- Load a static XML file with 'IGNORE num ROWS' +load xml infile '../../std_data/loadxml.dat' into table t1 +rows identified by '<row>' ignore 4 rows; +select * from t1 order by a; + + +--echo -- Check 'mysqldump --xml' + 'LOAD XML' round trip +--exec $MYSQL_DUMP --xml test t1 > "$MYSQLTEST_VARDIR/tmp/loadxml-dump.xml" 2>&1 +delete from t1; +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +--eval load xml infile '$MYSQLTEST_VARDIR/tmp/loadxml-dump.xml' into table t1 rows identified by '<row>'; +select * from t1 order by a; + +--echo --Check that default row tag is '<row> +delete from t1; +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +--eval load xml infile '$MYSQLTEST_VARDIR/tmp/loadxml-dump.xml' into table t1; +select * from t1 order by a; + +--echo -- Check that 'xml' is not a keyword +select 1 as xml; + + +# +# Bug #42520 killing load .. infile Assertion failed: ! is_set(), file .\sql_error.cc, line 8 +# + +--disable_query_log +delete from t1; +insert into t1 values (1, '12345678900987654321'), (2, 'asdfghjkl;asdfghjkl;'); +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +--exec $MYSQL_DUMP --xml test t1 > "$MYSQLTEST_VARDIR/tmp/loadxml-dump.xml" 2>&1 +--enable_query_log + +connect (addconroot, localhost, root,,); +connection addconroot; +create table t2(fl text); +--let $PSEUDO_THREAD_ID=`select @@pseudo_thread_id ` + +--send LOAD XML LOCAL INFILE "$MYSQLTEST_VARDIR/tmp/loadxml-dump.xml" INTO TABLE t2 ROWS IDENTIFIED BY '<person>'; + +sleep 3; + + +connection default; +show processlist; + +--disable_query_log +--eval kill $PSEUDO_THREAD_ID +--enable_query_log + +disconnect addconroot; + +# +# Clean up +# +remove_file $MYSQLTEST_VARDIR/tmp/loadxml-dump.xml; +drop table t1; +drop table t2; + +# +# Bug #36750 LOAD XML doesn't understand new line (feed) characters in multi line text fields +# + +create table t1 ( + id int(11) not null, + text text, + primary key (id) +) engine=MyISAM default charset=latin1; +load xml infile '../../std_data/loadxml2.dat' into table t1; +select * from t1; +drop table t1; + |