List:Internals« Previous MessageNext Message »
From:msvensson Date:June 22 2005 8:24pm
Subject:bk commit into 5.0 tree (msvensson:1.1994)
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of msvensson. When msvensson does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet
  1.1994 05/06/22 20:24:10 msvensson@neptunus.(none) +3 -0
  Merge neptunus.(none):/home/msvensson/mysql/mysql-4.1
  into neptunus.(none):/home/msvensson/mysql/mysql-5.0

  mysql-test/t/mysqldump.test
    1.45 05/06/22 20:24:09 msvensson@neptunus.(none) +13 -106
    Auto merged

  mysql-test/r/mysqldump.result
    1.51 05/06/22 20:24:09 msvensson@neptunus.(none) +56 -143
    Auto merged

  client/mysqldump.c
    1.186 05/06/22 20:24:09 msvensson@neptunus.(none) +0 -0
    Auto merged

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	msvensson
# Host:	neptunus.(none)
# Root:	/home/msvensson/mysql/mysql-5.0/RESYNC

--- 1.185/client/mysqldump.c	2005-06-22 20:12:17 +02:00
+++ 1.186/client/mysqldump.c	2005-06-22 20:24:09 +02:00
@@ -469,7 +469,10 @@
   if (opt_xml)
   {
     fputs("<?xml version=\"1.0\"?>\n", sql_file);
-    fputs("<mysqldump>\n", sql_file);
+    fputs("<mysqldump ", sql_file);
+    fputs("xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"",
+          sql_file);
+    fputs(">\n", sql_file);
     check_io(sql_file);
   }
   else if (!opt_compact)
@@ -1076,6 +1079,40 @@
 
 
 /*
+  Print xml tag with for a field that is null
+
+  SYNOPSIS
+    print_xml_null_tag()
+    xml_file	- output file
+    sbeg	- line beginning
+    stag_atr	- tag and attribute
+    sval	- value of attribute
+    send	- line ending
+
+  DESCRIPTION
+    Print tag with one attribute to the xml_file. Format is:
+      <stag_atr="sval" xsi:nil="true"/>
+  NOTE
+    sval MUST be a NULL terminated string.
+    sval string will be qouted before output.
+*/
+
+static void print_xml_null_tag(FILE * xml_file, const char* sbeg,
+                               const char* stag_atr, const char* sval,
+                               const char* send)
+{
+  fputs(sbeg, xml_file);
+  fputs("<", xml_file);
+  fputs(stag_atr, xml_file);
+  fputs("\"", xml_file);
+  print_quoted_xml(xml_file, sval, strlen(sval));
+  fputs("\" xsi:nil=\"true\" />", xml_file);
+  fputs(send, xml_file);
+  check_io(xml_file);
+}
+
+
+/*
   Print xml tag with many attributes.
 
   SYNOPSIS
@@ -1935,7 +1972,14 @@
 	    }
 	  }
 	  else
-            fputs("NULL", md_result_file);
+          {
+            /* The field value is NULL */
+            if (!opt_xml)
+              fputs("NULL", md_result_file);
+            else
+              print_xml_null_tag(md_result_file, "\t\t", "field name=",
+                                 field->name, "\n");
+          }
           check_io(md_result_file);
 	}
       }

--- 1.50/mysql-test/r/mysqldump.result	2005-06-22 20:12:17 +02:00
+++ 1.51/mysql-test/r/mysqldump.result	2005-06-22 20:24:09 +02:00
@@ -5,7 +5,7 @@
 CREATE TABLE t1(a int);
 INSERT INTO t1 VALUES (1), (2);
 <?xml version="1.0"?>
-<mysqldump>
+<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="" />
@@ -108,7 +108,7 @@
 CREATE TABLE t1(a int, b text, c varchar(3));
 INSERT INTO t1 VALUES (1, "test", "tes"), (2, "TEST", "TES");
 <?xml version="1.0"?>
-<mysqldump>
+<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="" />
@@ -133,7 +133,7 @@
 CREATE TABLE t1 (`a"b"` char(2));
 INSERT INTO t1 VALUES ("1\""), ("\"2");
 <?xml version="1.0"?>
-<mysqldump>
+<mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <database name="test">
 	<table_structure name="t1">
 		<field Field="a&quot;b&quot;" Type="char(2)" Null="YES" Key="" Extra=""
/>
@@ -1580,3 +1580,59 @@
 mysqldump: Got error: 1102: Incorrect database name 'mysqld\ump_test_db' when selecting
the database
 drop table t1, t2, t3;
 drop database mysqldump_test_db;
+create table t1 (a int(10));
+create table t2 (pk int primary key auto_increment,
+a int(10), b varchar(30), c datetime, d blob, e text);
+insert into t1 values (NULL), (10), (20);
+insert into t2 (a, b) values (NULL, NULL),(10, NULL),(NULL, "twenty"),(30, "thirty");
+<?xml version="1.0"?>
+<mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<database name="test">
+	<table_data name="t1">
+	<row>
+		<field name="a" xsi:nil="true" />
+	</row>
+	<row>
+		<field name="a">10</field>
+	</row>
+	<row>
+		<field name="a">20</field>
+ 	</row>
+	</table_data>
+	<table_data name="t2">
+	<row>
+		<field name="pk">1</field>
+		<field name="a" xsi:nil="true" />
+		<field name="b" xsi:nil="true" />
+		<field name="c" xsi:nil="true" />
+		<field name="d" xsi:nil="true" />
+		<field name="e" xsi:nil="true" />
+	</row>
+	<row>
+		<field name="pk">2</field>
+		<field name="a">10</field>
+		<field name="b" xsi:nil="true" />
+		<field name="c" xsi:nil="true" />
+		<field name="d" xsi:nil="true" />
+		<field name="e" xsi:nil="true" />
+	</row>
+	<row>
+		<field name="pk">3</field>
+		<field name="a" xsi:nil="true" />
+		<field name="b">twenty</field>
+		<field name="c" xsi:nil="true" />
+		<field name="d" xsi:nil="true" />
+		<field name="e" xsi:nil="true" />
+	</row>
+	<row>
+		<field name="pk">4</field>
+		<field name="a">30</field>
+		<field name="b">thirty</field>
+		<field name="c" xsi:nil="true" />
+		<field name="d" xsi:nil="true" />
+		<field name="e" xsi:nil="true" />
+	</row>
+	</table_data>
+</database>
+</mysqldump>
+drop table t1, t2;

--- 1.44/mysql-test/t/mysqldump.test	2005-06-22 20:12:17 +02:00
+++ 1.45/mysql-test/t/mysqldump.test	2005-06-22 20:24:09 +02:00
@@ -666,3 +666,16 @@
 drop table t1, t2, t3;
 drop database mysqldump_test_db;
 
+
+#
+# Bug #9657 mysqldump xml ( -x ) does not format NULL fields correctly
+#
+
+create table t1 (a int(10));
+create table t2 (pk int primary key auto_increment,
+a int(10), b varchar(30), c datetime, d blob, e text);
+insert into t1 values (NULL), (10), (20);
+insert into t2 (a, b) values (NULL, NULL),(10, NULL),(NULL, "twenty"),(30, "thirty");
+--exec $MYSQL_DUMP  --skip-comments --xml --no-create-info test
+drop table t1, t2;
+
Thread
bk commit into 5.0 tree (msvensson:1.1994)msvensson22 Jun