Merge lp:~linuxjedi/drizzle/drizzle-drizzledump-mysql-bugs into lp:~drizzle-trunk/drizzle/development

Proposed by Andrew Hutchings
Status: Merged
Approved by: Brian Aker
Approved revision: 1788
Merged at revision: 1785
Proposed branch: lp:~linuxjedi/drizzle/drizzle-drizzledump-mysql-bugs
Merge into: lp:~drizzle-trunk/drizzle/development
Diff against target: 279 lines (+52/-18)
8 files modified
client/drizzledump.cc (+4/-7)
plugin/schema_dictionary/columns.cc (+27/-0)
plugin/schema_dictionary/tests/r/data_dictionary.result (+11/-1)
tests/r/data_dictionary_like_info.result (+5/-5)
tests/r/information_schema.result (+2/-2)
tests/r/randgen_queries.result (+1/-1)
tests/t/drizzledump.test (+1/-1)
tests/t/drizzledump_restore.test (+1/-1)
To merge this branch: bzr merge lp:~linuxjedi/drizzle/drizzle-drizzledump-mysql-bugs
Reviewer Review Type Date Requested Status
Drizzle Merge Team Pending
Review via email: mp+36194@code.launchpad.net

Description of the change

Show stoppers for the new drizzledump:

1. data_dictionary.columns did not show auto_increment
2. data_dictionary.columns did not show possible enum values
Also (not a show-stopper):
3. get rid of --hex-blob (aka. corrupt my data by default) and implicitly turn it on

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'client/drizzledump.cc'
2--- client/drizzledump.cc 2010-09-16 01:41:35 +0000
3+++ client/drizzledump.cc 2010-09-21 18:57:45 +0000
4@@ -106,7 +106,6 @@
5 static bool opt_single_transaction= false;
6 static bool opt_comments;
7 static bool opt_compact;
8-static bool opt_hex_blob= false;
9 static bool opt_order_by_primary=false;
10 static bool opt_ignore= false;
11 static bool opt_complete_insert= false;
12@@ -1568,7 +1567,7 @@
13 we have not a BLOB but a TEXT column.
14 we'll dump in hex only BLOB columns.
15 */
16- is_blob= (opt_hex_blob && drizzle_column_charset(column) == 63 &&
17+ is_blob= (drizzle_column_charset(column) == 63 &&
18 (drizzle_column_type(column) == DRIZZLE_COLUMN_TYPE_VARCHAR ||
19 drizzle_column_type(column) == DRIZZLE_COLUMN_TYPE_BLOB)) ? 1 : 0;
20 if (extended_insert && !opt_xml)
21@@ -1597,7 +1596,7 @@
22 */
23 char * tmp_str= (char *)malloc(length * 2 + 2 + 1);
24 memset(tmp_str, '\0', length * 2 + 2 + 1);
25- if (opt_hex_blob && is_blob)
26+ if (is_blob)
27 {
28 extended_row.append("0x");
29 drizzle_hex_string(tmp_str, row[i], length);
30@@ -1644,7 +1643,7 @@
31 {
32 if (opt_xml)
33 {
34- if (opt_hex_blob && is_blob && length)
35+ if (is_blob && length)
36 {
37 /* Define xsi:type="xs:hexBinary" for hex encoded data */
38 print_xml_tag(md_result_file, "\t\t", "", "field", "name=",
39@@ -1659,7 +1658,7 @@
40 }
41 fputs("</field>\n", md_result_file);
42 }
43- else if (opt_hex_blob && is_blob && length)
44+ else if (is_blob && length)
45 {
46 fputs("0x", md_result_file);
47 print_blob_as_hex(md_result_file, row[i], length);
48@@ -2453,8 +2452,6 @@
49 N_("Fields in the i.file are opt. enclosed by ..."))
50 ("fields-escaped-by", po::value<string>(&escaped)->default_value(""),
51 N_("Fields in the i.file are escaped by ..."))
52- ("hex-blob", po::value<bool>(&opt_hex_blob)->default_value(false)->zero_tokens(),
53- "Dump binary strings (BINARY, VARBINARY, BLOB) in hexadecimal format.")
54 ("ignore-table", po::value<string>(),
55 N_("Do not dump the specified table. To specify more than one table to ignore, use the directive multiple times, once for each table. Each table must be specified with both database and table names, e.g. --ignore-table=database.table"))
56 ("insert-ignore", po::value<bool>(&opt_ignore)->default_value(false)->zero_tokens(),
57
58=== modified file 'plugin/schema_dictionary/columns.cc'
59--- plugin/schema_dictionary/columns.cc 2010-07-30 19:21:23 +0000
60+++ plugin/schema_dictionary/columns.cc 2010-09-21 18:57:45 +0000
61@@ -37,6 +37,7 @@
62 add_field("COLUMN_DEFAULT", plugin::TableFunction::VARBINARY, 65535, true);
63 add_field("COLUMN_DEFAULT_IS_NULL", plugin::TableFunction::BOOLEAN, 0, false);
64 add_field("COLUMN_DEFAULT_UPDATE");
65+ add_field("IS_AUTO_INCREMENT", plugin::TableFunction::BOOLEAN, 0, false);
66 add_field("IS_NULLABLE", plugin::TableFunction::BOOLEAN, 0, false);
67 add_field("IS_INDEXED", plugin::TableFunction::BOOLEAN, 0, false);
68 add_field("IS_USED_IN_PRIMARY", plugin::TableFunction::BOOLEAN, 0, false);
69@@ -51,6 +52,8 @@
70 add_field("NUMERIC_PRECISION", plugin::TableFunction::NUMBER);
71 add_field("NUMERIC_SCALE", plugin::TableFunction::NUMBER);
72
73+ add_field("ENUM_VALUES", plugin::TableFunction::STRING, 1024, true);
74+
75 add_field("COLLATION_NAME");
76
77 add_field("COLUMN_COMMENT", plugin::TableFunction::STRING, 1024, true);
78@@ -155,6 +158,9 @@
79 /* COLUMN_DEFAULT_UPDATE */
80 push(column.options().update_expression());
81
82+ /* IS_AUTO_INCREMENT */
83+ push(column.numeric_options().is_autoincrement());
84+
85 /* IS_NULLABLE */
86 push(column.constraints().is_nullable());
87
88@@ -219,6 +225,27 @@
89 /* "NUMERIC_SCALE" */
90 push(static_cast<int64_t>(column.numeric_options().scale()));
91
92+ /* "ENUM_VALUES" */
93+ if (column.type() == drizzled::message::Table::Field::ENUM)
94+ {
95+ string destination;
96+ size_t num_field_values= column.enumeration_values().field_value_size();
97+ for (size_t x= 0; x < num_field_values; ++x)
98+ {
99+ const string &type= column.enumeration_values().field_value(x);
100+
101+ if (x != 0)
102+ destination.push_back(',');
103+
104+ destination.push_back('\'');
105+ destination.append(type);
106+ destination.push_back('\'');
107+ }
108+ push(destination);
109+ }
110+ else
111+ push();
112+
113 /* "COLLATION_NAME" */
114 push(column.string_options().collation());
115
116
117=== modified file 'plugin/schema_dictionary/tests/r/data_dictionary.result'
118--- plugin/schema_dictionary/tests/r/data_dictionary.result 2010-09-10 16:41:50 +0000
119+++ plugin/schema_dictionary/tests/r/data_dictionary.result 2010-09-21 18:57:45 +0000
120@@ -1,7 +1,7 @@
121 use data_dictionary;
122 SELECT count(*) FROM columns;
123 count(*)
124-497
125+499
126 SELECT count(*) FROM indexes;
127 count(*)
128 0
129@@ -196,6 +196,7 @@
130 Default_is_NULL
131 ENGINE
132 ENGINE
133+ENUM_VALUES
134 EXECUTION_TIME_NSEC
135 EXTERNAL_LANGUAGE
136 EXTERNAL_NAME
137@@ -222,6 +223,7 @@
138 INTERVAL_TYPE
139 IP
140 IS_ACTIVE
141+IS_AUTO_INCREMENT
142 IS_BUILTIN
143 IS_COMPILED
144 IS_DEFAULT
145@@ -530,6 +532,7 @@
146 `COLUMN_DEFAULT` VARBINARY(65535) DEFAULT NULL,
147 `COLUMN_DEFAULT_IS_NULL` VARCHAR(5) NOT NULL,
148 `COLUMN_DEFAULT_UPDATE` VARCHAR(256) NOT NULL,
149+ `IS_AUTO_INCREMENT` VARCHAR(5) NOT NULL,
150 `IS_NULLABLE` VARCHAR(5) NOT NULL,
151 `IS_INDEXED` VARCHAR(5) NOT NULL,
152 `IS_USED_IN_PRIMARY` VARCHAR(5) NOT NULL,
153@@ -542,6 +545,7 @@
154 `CHARACTER_OCTET_LENGTH` BIGINT DEFAULT NULL,
155 `NUMERIC_PRECISION` BIGINT DEFAULT NULL,
156 `NUMERIC_SCALE` BIGINT DEFAULT NULL,
157+ `ENUM_VALUES` VARCHAR(1024) DEFAULT NULL,
158 `COLLATION_NAME` VARCHAR(256) NOT NULL,
159 `COLUMN_COMMENT` VARCHAR(1024) DEFAULT NULL
160 ) ENGINE=FunctionEngine COLLATE = utf8_general_ci
161@@ -647,7 +651,9 @@
162 DATA_DICTIONARY COLUMNS COLUMN_NAME
163 DATA_DICTIONARY COLUMNS COLUMN_TYPE
164 DATA_DICTIONARY COLUMNS DATA_TYPE
165+DATA_DICTIONARY COLUMNS ENUM_VALUES
166 DATA_DICTIONARY COLUMNS INDEXES_FOUND_IN
167+DATA_DICTIONARY COLUMNS IS_AUTO_INCREMENT
168 DATA_DICTIONARY COLUMNS IS_FIRST_IN_MULTI
169 DATA_DICTIONARY COLUMNS IS_INDEXED
170 DATA_DICTIONARY COLUMNS IS_MULTI
171@@ -1150,7 +1156,9 @@
172 COLUMNS DATA_DICTIONARY COLUMN_NAME
173 COLUMNS DATA_DICTIONARY COLUMN_TYPE
174 COLUMNS DATA_DICTIONARY DATA_TYPE
175+COLUMNS DATA_DICTIONARY ENUM_VALUES
176 COLUMNS DATA_DICTIONARY INDEXES_FOUND_IN
177+COLUMNS DATA_DICTIONARY IS_AUTO_INCREMENT
178 COLUMNS DATA_DICTIONARY IS_FIRST_IN_MULTI
179 COLUMNS DATA_DICTIONARY IS_INDEXED
180 COLUMNS DATA_DICTIONARY IS_MULTI
181@@ -1650,7 +1658,9 @@
182 COLUMNS DATA_DICTIONARY COLUMN_NAME
183 COLUMNS DATA_DICTIONARY COLUMN_TYPE
184 COLUMNS DATA_DICTIONARY DATA_TYPE
185+COLUMNS DATA_DICTIONARY ENUM_VALUES
186 COLUMNS DATA_DICTIONARY INDEXES_FOUND_IN
187+COLUMNS DATA_DICTIONARY IS_AUTO_INCREMENT
188 COLUMNS DATA_DICTIONARY IS_FIRST_IN_MULTI
189 COLUMNS DATA_DICTIONARY IS_INDEXED
190 COLUMNS DATA_DICTIONARY IS_MULTI
191
192=== modified file 'tests/r/data_dictionary_like_info.result'
193--- tests/r/data_dictionary_like_info.result 2010-09-10 16:41:50 +0000
194+++ tests/r/data_dictionary_like_info.result 2010-09-21 18:57:45 +0000
195@@ -39,8 +39,8 @@
196 a INTEGER YES YES
197 select * from data_dictionary.COLUMNS where table_name="t1"
198 and column_name= "a";
199-TABLE_SCHEMA TABLE_NAME COLUMN_NAME COLUMN_TYPE ORDINAL_POSITION COLUMN_DEFAULT COLUMN_DEFAULT_IS_NULL COLUMN_DEFAULT_UPDATE IS_NULLABLE IS_INDEXED IS_USED_IN_PRIMARY IS_UNIQUE IS_MULTI IS_FIRST_IN_MULTI INDEXES_FOUND_IN DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE COLLATION_NAME COLUMN_COMMENT
200-mysqltest t1 a INTEGER 0 NULL YES YES NO NO NO NO NO 0 INTEGER 0 0 0 0 NULL
201+TABLE_SCHEMA TABLE_NAME COLUMN_NAME COLUMN_TYPE ORDINAL_POSITION COLUMN_DEFAULT COLUMN_DEFAULT_IS_NULL COLUMN_DEFAULT_UPDATE IS_AUTO_INCREMENT IS_NULLABLE IS_INDEXED IS_USED_IN_PRIMARY IS_UNIQUE IS_MULTI IS_FIRST_IN_MULTI INDEXES_FOUND_IN DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE ENUM_VALUES COLLATION_NAME COLUMN_COMMENT
202+mysqltest t1 a INTEGER 0 NULL YES NO YES NO NO NO NO NO 0 INTEGER 0 0 0 0 NULL NULL
203 select table_name, column_name from data_dictionary.columns
204 where table_schema = 'mysqltest' and table_name = 't1';
205 table_name column_name
206@@ -191,7 +191,7 @@
207 or DATA_TYPE = 'varchar')
208 group by DATA_TYPE order by DATA_TYPE, num;
209 DATA_TYPE a num
210-VARCHAR # 166
211+VARCHAR # 168
212 Warnings:
213 Warning # 1 line(s) were cut by GROUP_CONCAT()
214 create table t1(f1 char(1) not null, f2 char(9) not null);
215@@ -331,9 +331,9 @@
216 WHERE TABLE_SCHEMA='mysql' and TABLE_NAME= 'db';
217 TABLE_COLLATION
218 select * from data_dictionary.columns where table_schema = NULL;
219-TABLE_SCHEMA TABLE_NAME COLUMN_NAME COLUMN_TYPE ORDINAL_POSITION COLUMN_DEFAULT COLUMN_DEFAULT_IS_NULL COLUMN_DEFAULT_UPDATE IS_NULLABLE IS_INDEXED IS_USED_IN_PRIMARY IS_UNIQUE IS_MULTI IS_FIRST_IN_MULTI INDEXES_FOUND_IN DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE COLLATION_NAME COLUMN_COMMENT
220+TABLE_SCHEMA TABLE_NAME COLUMN_NAME COLUMN_TYPE ORDINAL_POSITION COLUMN_DEFAULT COLUMN_DEFAULT_IS_NULL COLUMN_DEFAULT_UPDATE IS_AUTO_INCREMENT IS_NULLABLE IS_INDEXED IS_USED_IN_PRIMARY IS_UNIQUE IS_MULTI IS_FIRST_IN_MULTI INDEXES_FOUND_IN DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE ENUM_VALUES COLLATION_NAME COLUMN_COMMENT
221 select * from `data_dictionary`.`COLUMNS` where `TABLE_NAME` = NULL;
222-TABLE_SCHEMA TABLE_NAME COLUMN_NAME COLUMN_TYPE ORDINAL_POSITION COLUMN_DEFAULT COLUMN_DEFAULT_IS_NULL COLUMN_DEFAULT_UPDATE IS_NULLABLE IS_INDEXED IS_USED_IN_PRIMARY IS_UNIQUE IS_MULTI IS_FIRST_IN_MULTI INDEXES_FOUND_IN DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE COLLATION_NAME COLUMN_COMMENT
223+TABLE_SCHEMA TABLE_NAME COLUMN_NAME COLUMN_TYPE ORDINAL_POSITION COLUMN_DEFAULT COLUMN_DEFAULT_IS_NULL COLUMN_DEFAULT_UPDATE IS_AUTO_INCREMENT IS_NULLABLE IS_INDEXED IS_USED_IN_PRIMARY IS_UNIQUE IS_MULTI IS_FIRST_IN_MULTI INDEXES_FOUND_IN DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE ENUM_VALUES COLLATION_NAME COLUMN_COMMENT
224 select * from `data_dictionary`.`INDEXES` where `TABLE_SCHEMA` = NULL;
225 TABLE_SCHEMA TABLE_NAME INDEX_NAME IS_USED_IN_PRIMARY IS_UNIQUE IS_NULLABLE KEY_LENGTH INDEX_TYPE INDEX_COMMENT
226 select * from `data_dictionary`.`INDEXES` where `TABLE_NAME` = NULL;
227
228=== modified file 'tests/r/information_schema.result'
229--- tests/r/information_schema.result 2010-09-10 16:41:50 +0000
230+++ tests/r/information_schema.result 2010-09-21 18:57:45 +0000
231@@ -27,8 +27,8 @@
232 a INTEGER YES YES
233 select * from data_dictionary.columns where table_name="t1"
234 and column_name= "a";
235-TABLE_SCHEMA TABLE_NAME COLUMN_NAME COLUMN_TYPE ORDINAL_POSITION COLUMN_DEFAULT COLUMN_DEFAULT_IS_NULL COLUMN_DEFAULT_UPDATE IS_NULLABLE IS_INDEXED IS_USED_IN_PRIMARY IS_UNIQUE IS_MULTI IS_FIRST_IN_MULTI INDEXES_FOUND_IN DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE COLLATION_NAME COLUMN_COMMENT
236-mysqltest t1 a INTEGER 0 NULL YES YES NO NO NO NO NO 0 INTEGER 0 0 0 0 NULL
237+TABLE_SCHEMA TABLE_NAME COLUMN_NAME COLUMN_TYPE ORDINAL_POSITION COLUMN_DEFAULT COLUMN_DEFAULT_IS_NULL COLUMN_DEFAULT_UPDATE IS_AUTO_INCREMENT IS_NULLABLE IS_INDEXED IS_USED_IN_PRIMARY IS_UNIQUE IS_MULTI IS_FIRST_IN_MULTI INDEXES_FOUND_IN DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE ENUM_VALUES COLLATION_NAME COLUMN_COMMENT
238+mysqltest t1 a INTEGER 0 NULL YES NO YES NO NO NO NO NO 0 INTEGER 0 0 0 0 NULL NULL
239 select table_name, column_name from data_dictionary.columns
240 where table_schema = 'mysqltest' and table_name = 't1';
241 table_name column_name
242
243=== modified file 'tests/r/randgen_queries.result'
244--- tests/r/randgen_queries.result 2010-07-21 19:15:45 +0000
245+++ tests/r/randgen_queries.result 2010-09-21 18:57:45 +0000
246@@ -79,7 +79,7 @@
247 DATA_DICTIONARY COLUMNS function COLUMN_DEFAULT indexed
248 DATA_DICTIONARY COLUMNS function COLUMN_DEFAULT_IS_NULL indexed
249 DATA_DICTIONARY COLUMNS function COLUMN_DEFAULT_UPDATE indexed
250-DATA_DICTIONARY COLUMNS function IS_NULLABLE indexed
251+DATA_DICTIONARY COLUMNS function IS_AUTO_INCREMENT indexed
252 CREATE SCHEMA randgen_query_test;
253 USE randgen_query_test;
254 CREATE TABLE t1 (a INT);
255
256=== modified file 'tests/t/drizzledump.test'
257--- tests/t/drizzledump.test 2010-09-14 22:20:42 +0000
258+++ tests/t/drizzledump.test 2010-09-21 18:57:45 +0000
259@@ -88,7 +88,7 @@
260
261 CREATE TABLE t1 (`b` blob);
262 INSERT INTO `t1` VALUES (0x602010000280100005E71A);
263---exec $DRIZZLE_DUMP --skip-extended-insert --hex-blob test --skip-comments t1
264+--exec $DRIZZLE_DUMP --skip-extended-insert test --skip-comments t1
265 DROP TABLE t1;
266
267 --echo #
268
269=== modified file 'tests/t/drizzledump_restore.test'
270--- tests/t/drizzledump_restore.test 2010-07-02 16:14:31 +0000
271+++ tests/t/drizzledump_restore.test 2010-09-21 18:57:45 +0000
272@@ -79,7 +79,7 @@
273 --echo #
274 CREATE TABLE t1 (`b` blob);
275 INSERT INTO `t1` VALUES (0x602010000280100005E71A);
276---exec $DRIZZLE_DUMP --skip-extended-insert --hex-blob test --skip-comments t1 > $drizzledumpfile
277+--exec $DRIZZLE_DUMP --skip-extended-insert test --skip-comments t1 > $drizzledumpfile
278 let $table_name = test.t1;
279 --source include/drizzledump.inc
280