Merge lp:~linuxjedi/drizzle/trunk-drizzledump-bugs-part2 into lp:drizzle/7.0

Proposed by Andrew Hutchings
Status: Merged
Approved by: Brian Aker
Approved revision: 1981
Merged at revision: 1981
Proposed branch: lp:~linuxjedi/drizzle/trunk-drizzledump-bugs-part2
Merge into: lp:drizzle/7.0
Diff against target: 138 lines (+20/-21)
5 files modified
client/drizzledump.cc (+5/-6)
client/drizzledump_data.cc (+5/-0)
client/drizzledump_data.h (+1/-0)
client/drizzledump_drizzle.cc (+2/-2)
client/drizzledump_mysql.cc (+7/-13)
To merge this branch: bzr merge lp:~linuxjedi/drizzle/trunk-drizzledump-bugs-part2
Reviewer Review Type Date Requested Status
Lee Bieber (community) Needs Fixing
Review via email: mp+42831@code.launchpad.net

Description of the change

General Drizzledump fixes:
* column comments were missing from dump files
* --databases option was broken

Migration fixes:
* FLOAT UNSIGNED without any precision and scale failed to migrate
* FLOAT with only precision and no scale lost the precision during migrate

To post a comment you must log in.
Revision history for this message
Lee Bieber (kalebral-deactivatedaccount) wrote :

Getting merge conflicts, please re-merge with trunk

Text conflict in client/drizzledump_mysql.cc

review: Needs Fixing
1982. By Andrew Hutchings

Merge trunk into branch

Revision history for this message
Andrew Hutchings (linuxjedi) wrote :

Fixed

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-12-02 00:10:36 +0000
3+++ client/drizzledump.cc 2010-12-08 07:39:23 +0000
4@@ -801,10 +801,8 @@
5 dump_selected_tables(database_used, vm["Table-used"].as< vector<string> >());
6 }
7
8- if (vm.count("Table-used") && opt_databases)
9+ if (vm.count("Table-used") and opt_databases)
10 {
11-/*
12- * This is not valid!
13 vector<string> database_used= vm["database-used"].as< vector<string> >();
14 vector<string> table_used= vm["Table-used"].as< vector<string> >();
15
16@@ -814,16 +812,17 @@
17 {
18 database_used.insert(database_used.end(), *it);
19 }
20+
21 dump_databases(database_used);
22- dump_tables();
23-*/
24+ dump_all_tables();
25 }
26-
27+
28 if (vm.count("database-used") && ! vm.count("Table-used"))
29 {
30 dump_databases(vm["database-used"].as< vector<string> >());
31 dump_all_tables();
32 }
33+
34 if (opt_destination == DESTINATION_STDOUT)
35 generate_dump();
36 else
37
38=== modified file 'client/drizzledump_data.cc'
39--- client/drizzledump_data.cc 2010-12-06 09:41:28 +0000
40+++ client/drizzledump_data.cc 2010-12-08 07:39:23 +0000
41@@ -186,6 +186,11 @@
42 os << " DEFAULT NULL";
43 }
44
45+ if (not obj.comment.empty())
46+ {
47+ os << " COMMENT '" << DrizzleDumpData::escape(obj.comment.c_str(), obj.comment.length()) << "'";
48+ }
49+
50 return os;
51 }
52
53
54=== modified file 'client/drizzledump_data.h'
55--- client/drizzledump_data.h 2010-12-06 22:58:27 +0000
56+++ client/drizzledump_data.h 2010-12-08 07:39:23 +0000
57@@ -113,6 +113,7 @@
58 bool rangeCheck;
59 std::string defaultValue;
60 std::string collation;
61+ std::string comment;
62
63 /* For enum type */
64 std::string enumValues;
65
66=== modified file 'client/drizzledump_drizzle.cc'
67--- client/drizzledump_drizzle.cc 2010-12-02 00:10:36 +0000
68+++ client/drizzledump_drizzle.cc 2010-12-08 07:39:23 +0000
69@@ -171,7 +171,7 @@
70 if (verbose)
71 std::cerr << _("-- Retrieving fields for ") << tableName << "..." << std::endl;
72
73- query= "SELECT COLUMN_NAME, DATA_TYPE, COLUMN_DEFAULT, COLUMN_DEFAULT_IS_NULL, IS_NULLABLE, CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE, COLLATION_NAME, IS_AUTO_INCREMENT, ENUM_VALUES FROM DATA_DICTIONARY.COLUMNS WHERE TABLE_SCHEMA='";
74+ query= "SELECT COLUMN_NAME, DATA_TYPE, COLUMN_DEFAULT, COLUMN_DEFAULT_IS_NULL, IS_NULLABLE, CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE, COLLATION_NAME, IS_AUTO_INCREMENT, ENUM_VALUES, COLUMN_COMMENT FROM DATA_DICTIONARY.COLUMNS WHERE TABLE_SCHEMA='";
75 query.append(database->databaseName);
76 query.append("' AND TABLE_NAME='");
77 query.append(tableName);
78@@ -202,7 +202,7 @@
79 field->length= (row[5]) ? boost::lexical_cast<uint32_t>(row[5]) : 0;
80 field->decimalPrecision= (row[6]) ? boost::lexical_cast<uint32_t>(row[6]) : 0;
81 field->decimalScale= (row[7]) ? boost::lexical_cast<uint32_t>(row[7]) : 0;
82-
83+ field->comment= (row[11]) ? row[11] : "";
84
85 fields.push_back(field);
86 }
87
88=== modified file 'client/drizzledump_mysql.cc'
89--- client/drizzledump_mysql.cc 2010-12-06 09:41:28 +0000
90+++ client/drizzledump_mysql.cc 2010-12-08 07:39:23 +0000
91@@ -167,7 +167,7 @@
92 if (verbose)
93 std::cerr << _("-- Retrieving fields for ") << tableName << "..." << std::endl;
94
95- query="SELECT COLUMN_NAME, COLUMN_TYPE, COLUMN_DEFAULT, IS_NULLABLE, CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE, COLLATION_NAME, EXTRA FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='";
96+ query="SELECT COLUMN_NAME, COLUMN_TYPE, COLUMN_DEFAULT, IS_NULLABLE, CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE, COLLATION_NAME, EXTRA, COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='";
97 query.append(database->databaseName);
98 query.append("' AND TABLE_NAME='");
99 query.append(tableName);
100@@ -205,6 +205,7 @@
101
102 field->isAutoIncrement= (strcmp(row[8], "auto_increment") == 0) ? true : false;
103 field->defaultIsNull= field->isNull;
104+
105 /* Seriously MySQL, why is BIT length in NUMERIC_PRECISION? */
106 if ((strncmp(row[1], "bit", 3) == 0) and (row[5] != NULL))
107 field->length= ((boost::lexical_cast<uint32_t>(row[5]) - 1) / 8) + 1;
108@@ -219,17 +220,9 @@
109 field->length= 1;
110 }
111
112- if ((row[5] != NULL) and (row[6] != NULL))
113- {
114- field->decimalPrecision= boost::lexical_cast<uint32_t>(row[5]);
115- field->decimalScale= boost::lexical_cast<uint32_t>(row[6]);
116- }
117- else
118- {
119- field->decimalPrecision= 0;
120- field->decimalScale= 0;
121- }
122-
123+ field->decimalPrecision= (row[5]) ? boost::lexical_cast<uint32_t>(row[5]) : 0;
124+ field->decimalScale= (row[6]) ? boost::lexical_cast<uint32_t>(row[6]) : 0;
125+ field->comment= (row[9]) ? row[9] : "";
126 fields.push_back(field);
127 }
128
129@@ -382,7 +375,8 @@
130 std::string extra;
131 size_t pos;
132
133- if ((pos= old_type.find("(")) != std::string::npos)
134+ if (((pos= old_type.find("(")) != std::string::npos) or
135+ ((pos= old_type.find(" ")) != std::string::npos))
136 {
137 extra= old_type.substr(pos);
138 old_type.erase(pos, std::string::npos);

Subscribers

People subscribed via source and target branches