Merge lp:~percona-toolkit-dev/percona-toolkit/fix-i26211-1058285-821722-implicit-ansi_quotes into lp:percona-toolkit/2.1
- fix-i26211-1058285-821722-implicit-ansi_quotes
- Merge into 2.1
Proposed by
Daniel Nichter
Status: | Merged | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Approved by: | Brian Fraser | ||||||||||||
Approved revision: | 415 | ||||||||||||
Merged at revision: | 446 | ||||||||||||
Proposed branch: | lp:~percona-toolkit-dev/percona-toolkit/fix-i26211-1058285-821722-implicit-ansi_quotes | ||||||||||||
Merge into: | lp:percona-toolkit/2.1 | ||||||||||||
Prerequisite: | lp:~percona-toolkit-dev/percona-toolkit/portable-test-suite | ||||||||||||
Diff against target: |
692 lines (+402/-91) 18 files modified
bin/pt-archiver (+7/-6) bin/pt-duplicate-key-checker (+7/-6) bin/pt-find (+7/-6) bin/pt-heartbeat (+7/-6) bin/pt-index-usage (+7/-6) bin/pt-kill (+7/-6) bin/pt-online-schema-change (+10/-10) bin/pt-query-advisor (+7/-6) bin/pt-query-digest (+7/-6) bin/pt-table-checksum (+7/-6) bin/pt-table-sync (+7/-6) bin/pt-table-usage (+7/-6) bin/pt-upgrade (+7/-6) lib/TableParser.pm (+13/-8) t/pt-online-schema-change/ansi_quotes.t (+144/-0) t/pt-online-schema-change/bugs.t (+0/-1) t/pt-online-schema-change/samples/issue-26211.sql (+118/-0) t/pt-online-schema-change/samples/sql-mode-bug-1058285.sql (+33/-0) |
||||||||||||
To merge this branch: | bzr merge lp:~percona-toolkit-dev/percona-toolkit/fix-i26211-1058285-821722-implicit-ansi_quotes | ||||||||||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Brian Fraser (community) | Approve | ||
Daniel Nichter | Approve | ||
Review via email: mp+132602@code.launchpad.net |
This proposal supersedes a proposal from 2012-10-04.
Commit message
Description of the change
To post a comment you must log in.
Revision history for this message
Brian Fraser (fraserbn) : Posted in a previous version of this proposal | # |
review:
Approve
Revision history for this message
Daniel Nichter (daniel-nichter) wrote : Posted in a previous version of this proposal | # |
- 414. By Daniel Nichter
-
Test that SQL_MODE isn't changed.
Revision history for this message
Daniel Nichter (daniel-nichter) wrote : | # |
Passes tests.
review:
Approve
- 415. By Brian Fraser
-
Added a test for the second bug in customer issue 26211
Revision history for this message
Brian Fraser (fraserbn) : | # |
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'bin/pt-archiver' | |||
2 | --- bin/pt-archiver 2012-10-31 01:12:57 +0000 | |||
3 | +++ bin/pt-archiver 2012-11-01 20:30:30 +0000 | |||
4 | @@ -1564,13 +1564,14 @@ | |||
5 | 1564 | my $q = $self->{Quoter}; | 1564 | my $q = $self->{Quoter}; |
6 | 1565 | 1565 | ||
7 | 1566 | my $new_sql_mode | 1566 | my $new_sql_mode |
12 | 1567 | = '/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, ' | 1567 | = q{/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, } |
13 | 1568 | . q{@@SQL_MODE := REPLACE(REPLACE(@@SQL_MODE, 'ANSI_QUOTES', ''), ',,', ','), } | 1568 | . q{@@SQL_MODE := '', } |
14 | 1569 | . '@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, ' | 1569 | . q{@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, } |
15 | 1570 | . '@@SQL_QUOTE_SHOW_CREATE := 1 */'; | 1570 | . q{@@SQL_QUOTE_SHOW_CREATE := 1 */}; |
16 | 1571 | 1571 | ||
19 | 1572 | my $old_sql_mode = '/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, ' | 1572 | my $old_sql_mode |
20 | 1573 | . '@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */'; | 1573 | = q{/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, } |
21 | 1574 | . q{@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */}; | ||
22 | 1574 | 1575 | ||
23 | 1575 | PTDEBUG && _d($new_sql_mode); | 1576 | PTDEBUG && _d($new_sql_mode); |
24 | 1576 | eval { $dbh->do($new_sql_mode); }; | 1577 | eval { $dbh->do($new_sql_mode); }; |
25 | 1577 | 1578 | ||
26 | === modified file 'bin/pt-duplicate-key-checker' | |||
27 | --- bin/pt-duplicate-key-checker 2012-10-31 09:18:34 +0000 | |||
28 | +++ bin/pt-duplicate-key-checker 2012-11-01 20:30:30 +0000 | |||
29 | @@ -206,13 +206,14 @@ | |||
30 | 206 | my $q = $self->{Quoter}; | 206 | my $q = $self->{Quoter}; |
31 | 207 | 207 | ||
32 | 208 | my $new_sql_mode | 208 | my $new_sql_mode |
37 | 209 | = '/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, ' | 209 | = q{/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, } |
38 | 210 | . q{@@SQL_MODE := REPLACE(REPLACE(@@SQL_MODE, 'ANSI_QUOTES', ''), ',,', ','), } | 210 | . q{@@SQL_MODE := '', } |
39 | 211 | . '@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, ' | 211 | . q{@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, } |
40 | 212 | . '@@SQL_QUOTE_SHOW_CREATE := 1 */'; | 212 | . q{@@SQL_QUOTE_SHOW_CREATE := 1 */}; |
41 | 213 | 213 | ||
44 | 214 | my $old_sql_mode = '/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, ' | 214 | my $old_sql_mode |
45 | 215 | . '@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */'; | 215 | = q{/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, } |
46 | 216 | . q{@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */}; | ||
47 | 216 | 217 | ||
48 | 217 | PTDEBUG && _d($new_sql_mode); | 218 | PTDEBUG && _d($new_sql_mode); |
49 | 218 | eval { $dbh->do($new_sql_mode); }; | 219 | eval { $dbh->do($new_sql_mode); }; |
50 | 219 | 220 | ||
51 | === modified file 'bin/pt-find' | |||
52 | --- bin/pt-find 2012-10-31 09:18:34 +0000 | |||
53 | +++ bin/pt-find 2012-11-01 20:30:30 +0000 | |||
54 | @@ -1607,13 +1607,14 @@ | |||
55 | 1607 | my $q = $self->{Quoter}; | 1607 | my $q = $self->{Quoter}; |
56 | 1608 | 1608 | ||
57 | 1609 | my $new_sql_mode | 1609 | my $new_sql_mode |
62 | 1610 | = '/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, ' | 1610 | = q{/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, } |
63 | 1611 | . q{@@SQL_MODE := REPLACE(REPLACE(@@SQL_MODE, 'ANSI_QUOTES', ''), ',,', ','), } | 1611 | . q{@@SQL_MODE := '', } |
64 | 1612 | . '@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, ' | 1612 | . q{@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, } |
65 | 1613 | . '@@SQL_QUOTE_SHOW_CREATE := 1 */'; | 1613 | . q{@@SQL_QUOTE_SHOW_CREATE := 1 */}; |
66 | 1614 | 1614 | ||
69 | 1615 | my $old_sql_mode = '/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, ' | 1615 | my $old_sql_mode |
70 | 1616 | . '@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */'; | 1616 | = q{/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, } |
71 | 1617 | . q{@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */}; | ||
72 | 1617 | 1618 | ||
73 | 1618 | PTDEBUG && _d($new_sql_mode); | 1619 | PTDEBUG && _d($new_sql_mode); |
74 | 1619 | eval { $dbh->do($new_sql_mode); }; | 1620 | eval { $dbh->do($new_sql_mode); }; |
75 | 1620 | 1621 | ||
76 | === modified file 'bin/pt-heartbeat' | |||
77 | --- bin/pt-heartbeat 2012-10-31 09:18:34 +0000 | |||
78 | +++ bin/pt-heartbeat 2012-11-01 20:30:30 +0000 | |||
79 | @@ -2545,13 +2545,14 @@ | |||
80 | 2545 | my $q = $self->{Quoter}; | 2545 | my $q = $self->{Quoter}; |
81 | 2546 | 2546 | ||
82 | 2547 | my $new_sql_mode | 2547 | my $new_sql_mode |
87 | 2548 | = '/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, ' | 2548 | = q{/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, } |
88 | 2549 | . q{@@SQL_MODE := REPLACE(REPLACE(@@SQL_MODE, 'ANSI_QUOTES', ''), ',,', ','), } | 2549 | . q{@@SQL_MODE := '', } |
89 | 2550 | . '@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, ' | 2550 | . q{@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, } |
90 | 2551 | . '@@SQL_QUOTE_SHOW_CREATE := 1 */'; | 2551 | . q{@@SQL_QUOTE_SHOW_CREATE := 1 */}; |
91 | 2552 | 2552 | ||
94 | 2553 | my $old_sql_mode = '/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, ' | 2553 | my $old_sql_mode |
95 | 2554 | . '@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */'; | 2554 | = q{/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, } |
96 | 2555 | . q{@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */}; | ||
97 | 2555 | 2556 | ||
98 | 2556 | PTDEBUG && _d($new_sql_mode); | 2557 | PTDEBUG && _d($new_sql_mode); |
99 | 2557 | eval { $dbh->do($new_sql_mode); }; | 2558 | eval { $dbh->do($new_sql_mode); }; |
100 | 2558 | 2559 | ||
101 | === modified file 'bin/pt-index-usage' | |||
102 | --- bin/pt-index-usage 2012-10-31 09:18:34 +0000 | |||
103 | +++ bin/pt-index-usage 2012-11-01 20:30:30 +0000 | |||
104 | @@ -2805,13 +2805,14 @@ | |||
105 | 2805 | my $q = $self->{Quoter}; | 2805 | my $q = $self->{Quoter}; |
106 | 2806 | 2806 | ||
107 | 2807 | my $new_sql_mode | 2807 | my $new_sql_mode |
112 | 2808 | = '/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, ' | 2808 | = q{/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, } |
113 | 2809 | . q{@@SQL_MODE := REPLACE(REPLACE(@@SQL_MODE, 'ANSI_QUOTES', ''), ',,', ','), } | 2809 | . q{@@SQL_MODE := '', } |
114 | 2810 | . '@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, ' | 2810 | . q{@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, } |
115 | 2811 | . '@@SQL_QUOTE_SHOW_CREATE := 1 */'; | 2811 | . q{@@SQL_QUOTE_SHOW_CREATE := 1 */}; |
116 | 2812 | 2812 | ||
119 | 2813 | my $old_sql_mode = '/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, ' | 2813 | my $old_sql_mode |
120 | 2814 | . '@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */'; | 2814 | = q{/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, } |
121 | 2815 | . q{@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */}; | ||
122 | 2815 | 2816 | ||
123 | 2816 | PTDEBUG && _d($new_sql_mode); | 2817 | PTDEBUG && _d($new_sql_mode); |
124 | 2817 | eval { $dbh->do($new_sql_mode); }; | 2818 | eval { $dbh->do($new_sql_mode); }; |
125 | 2818 | 2819 | ||
126 | === modified file 'bin/pt-kill' | |||
127 | --- bin/pt-kill 2012-10-31 09:18:34 +0000 | |||
128 | +++ bin/pt-kill 2012-11-01 20:30:30 +0000 | |||
129 | @@ -2495,13 +2495,14 @@ | |||
130 | 2495 | my $q = $self->{Quoter}; | 2495 | my $q = $self->{Quoter}; |
131 | 2496 | 2496 | ||
132 | 2497 | my $new_sql_mode | 2497 | my $new_sql_mode |
137 | 2498 | = '/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, ' | 2498 | = q{/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, } |
138 | 2499 | . q{@@SQL_MODE := REPLACE(REPLACE(@@SQL_MODE, 'ANSI_QUOTES', ''), ',,', ','), } | 2499 | . q{@@SQL_MODE := '', } |
139 | 2500 | . '@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, ' | 2500 | . q{@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, } |
140 | 2501 | . '@@SQL_QUOTE_SHOW_CREATE := 1 */'; | 2501 | . q{@@SQL_QUOTE_SHOW_CREATE := 1 */}; |
141 | 2502 | 2502 | ||
144 | 2503 | my $old_sql_mode = '/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, ' | 2503 | my $old_sql_mode |
145 | 2504 | . '@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */'; | 2504 | = q{/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, } |
146 | 2505 | . q{@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */}; | ||
147 | 2505 | 2506 | ||
148 | 2506 | PTDEBUG && _d($new_sql_mode); | 2507 | PTDEBUG && _d($new_sql_mode); |
149 | 2507 | eval { $dbh->do($new_sql_mode); }; | 2508 | eval { $dbh->do($new_sql_mode); }; |
150 | 2508 | 2509 | ||
151 | === modified file 'bin/pt-online-schema-change' | |||
152 | --- bin/pt-online-schema-change 2012-10-31 09:18:34 +0000 | |||
153 | +++ bin/pt-online-schema-change 2012-11-01 20:30:30 +0000 | |||
154 | @@ -2729,13 +2729,14 @@ | |||
155 | 2729 | my $q = $self->{Quoter}; | 2729 | my $q = $self->{Quoter}; |
156 | 2730 | 2730 | ||
157 | 2731 | my $new_sql_mode | 2731 | my $new_sql_mode |
162 | 2732 | = '/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, ' | 2732 | = q{/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, } |
163 | 2733 | . q{@@SQL_MODE := REPLACE(REPLACE(@@SQL_MODE, 'ANSI_QUOTES', ''), ',,', ','), } | 2733 | . q{@@SQL_MODE := '', } |
164 | 2734 | . '@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, ' | 2734 | . q{@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, } |
165 | 2735 | . '@@SQL_QUOTE_SHOW_CREATE := 1 */'; | 2735 | . q{@@SQL_QUOTE_SHOW_CREATE := 1 */}; |
166 | 2736 | 2736 | ||
169 | 2737 | my $old_sql_mode = '/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, ' | 2737 | my $old_sql_mode |
170 | 2738 | . '@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */'; | 2738 | = q{/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, } |
171 | 2739 | . q{@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */}; | ||
172 | 2739 | 2740 | ||
173 | 2740 | PTDEBUG && _d($new_sql_mode); | 2741 | PTDEBUG && _d($new_sql_mode); |
174 | 2741 | eval { $dbh->do($new_sql_mode); }; | 2742 | eval { $dbh->do($new_sql_mode); }; |
175 | @@ -8232,10 +8233,9 @@ | |||
176 | 8232 | # the user specified --chunk-size=N on the cmd line, in which | 8233 | # the user specified --chunk-size=N on the cmd line, in which |
177 | 8233 | # case the max child table size is their specified chunk size | 8234 | # case the max child table size is their specified chunk size |
178 | 8234 | # times the fudge factor. | 8235 | # times the fudge factor. |
183 | 8235 | my $max_rows | 8236 | my $max_rows = $o->get('dry-run') ? $o->get('chunk-size') * $limit |
184 | 8236 | = $o->get('dry-run') ? $o->get('chunk-size') * $limit | 8237 | : $chunk_time && $avg_rate ? $avg_rate * $chunk_time * $limit |
185 | 8237 | : $chunk_time ? $avg_rate * $chunk_time * $limit | 8238 | : $o->get('chunk-size') * $limit; |
182 | 8238 | : $o->get('chunk-size') * $limit; | ||
186 | 8239 | PTDEBUG && _d('Max allowed child table size:', $max_rows); | 8239 | PTDEBUG && _d('Max allowed child table size:', $max_rows); |
187 | 8240 | 8240 | ||
188 | 8241 | $alter_fk_method = determine_alter_fk_method( | 8241 | $alter_fk_method = determine_alter_fk_method( |
189 | 8242 | 8242 | ||
190 | === modified file 'bin/pt-query-advisor' | |||
191 | --- bin/pt-query-advisor 2012-10-31 09:18:34 +0000 | |||
192 | +++ bin/pt-query-advisor 2012-11-01 20:30:30 +0000 | |||
193 | @@ -5307,13 +5307,14 @@ | |||
194 | 5307 | my $q = $self->{Quoter}; | 5307 | my $q = $self->{Quoter}; |
195 | 5308 | 5308 | ||
196 | 5309 | my $new_sql_mode | 5309 | my $new_sql_mode |
201 | 5310 | = '/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, ' | 5310 | = q{/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, } |
202 | 5311 | . q{@@SQL_MODE := REPLACE(REPLACE(@@SQL_MODE, 'ANSI_QUOTES', ''), ',,', ','), } | 5311 | . q{@@SQL_MODE := '', } |
203 | 5312 | . '@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, ' | 5312 | . q{@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, } |
204 | 5313 | . '@@SQL_QUOTE_SHOW_CREATE := 1 */'; | 5313 | . q{@@SQL_QUOTE_SHOW_CREATE := 1 */}; |
205 | 5314 | 5314 | ||
208 | 5315 | my $old_sql_mode = '/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, ' | 5315 | my $old_sql_mode |
209 | 5316 | . '@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */'; | 5316 | = q{/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, } |
210 | 5317 | . q{@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */}; | ||
211 | 5317 | 5318 | ||
212 | 5318 | PTDEBUG && _d($new_sql_mode); | 5319 | PTDEBUG && _d($new_sql_mode); |
213 | 5319 | eval { $dbh->do($new_sql_mode); }; | 5320 | eval { $dbh->do($new_sql_mode); }; |
214 | 5320 | 5321 | ||
215 | === modified file 'bin/pt-query-digest' | |||
216 | --- bin/pt-query-digest 2012-10-31 09:18:34 +0000 | |||
217 | +++ bin/pt-query-digest 2012-11-01 20:30:30 +0000 | |||
218 | @@ -8124,13 +8124,14 @@ | |||
219 | 8124 | my $q = $self->{Quoter}; | 8124 | my $q = $self->{Quoter}; |
220 | 8125 | 8125 | ||
221 | 8126 | my $new_sql_mode | 8126 | my $new_sql_mode |
226 | 8127 | = '/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, ' | 8127 | = q{/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, } |
227 | 8128 | . q{@@SQL_MODE := REPLACE(REPLACE(@@SQL_MODE, 'ANSI_QUOTES', ''), ',,', ','), } | 8128 | . q{@@SQL_MODE := '', } |
228 | 8129 | . '@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, ' | 8129 | . q{@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, } |
229 | 8130 | . '@@SQL_QUOTE_SHOW_CREATE := 1 */'; | 8130 | . q{@@SQL_QUOTE_SHOW_CREATE := 1 */}; |
230 | 8131 | 8131 | ||
233 | 8132 | my $old_sql_mode = '/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, ' | 8132 | my $old_sql_mode |
234 | 8133 | . '@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */'; | 8133 | = q{/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, } |
235 | 8134 | . q{@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */}; | ||
236 | 8134 | 8135 | ||
237 | 8135 | PTDEBUG && _d($new_sql_mode); | 8136 | PTDEBUG && _d($new_sql_mode); |
238 | 8136 | eval { $dbh->do($new_sql_mode); }; | 8137 | eval { $dbh->do($new_sql_mode); }; |
239 | 8137 | 8138 | ||
240 | === modified file 'bin/pt-table-checksum' | |||
241 | --- bin/pt-table-checksum 2012-10-31 18:20:54 +0000 | |||
242 | +++ bin/pt-table-checksum 2012-11-01 20:30:30 +0000 | |||
243 | @@ -3709,13 +3709,14 @@ | |||
244 | 3709 | my $q = $self->{Quoter}; | 3709 | my $q = $self->{Quoter}; |
245 | 3710 | 3710 | ||
246 | 3711 | my $new_sql_mode | 3711 | my $new_sql_mode |
251 | 3712 | = '/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, ' | 3712 | = q{/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, } |
252 | 3713 | . q{@@SQL_MODE := REPLACE(REPLACE(@@SQL_MODE, 'ANSI_QUOTES', ''), ',,', ','), } | 3713 | . q{@@SQL_MODE := '', } |
253 | 3714 | . '@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, ' | 3714 | . q{@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, } |
254 | 3715 | . '@@SQL_QUOTE_SHOW_CREATE := 1 */'; | 3715 | . q{@@SQL_QUOTE_SHOW_CREATE := 1 */}; |
255 | 3716 | 3716 | ||
258 | 3717 | my $old_sql_mode = '/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, ' | 3717 | my $old_sql_mode |
259 | 3718 | . '@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */'; | 3718 | = q{/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, } |
260 | 3719 | . q{@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */}; | ||
261 | 3719 | 3720 | ||
262 | 3720 | PTDEBUG && _d($new_sql_mode); | 3721 | PTDEBUG && _d($new_sql_mode); |
263 | 3721 | eval { $dbh->do($new_sql_mode); }; | 3722 | eval { $dbh->do($new_sql_mode); }; |
264 | 3722 | 3723 | ||
265 | === modified file 'bin/pt-table-sync' | |||
266 | --- bin/pt-table-sync 2012-10-30 23:04:22 +0000 | |||
267 | +++ bin/pt-table-sync 2012-11-01 20:30:30 +0000 | |||
268 | @@ -2383,13 +2383,14 @@ | |||
269 | 2383 | my $q = $self->{Quoter}; | 2383 | my $q = $self->{Quoter}; |
270 | 2384 | 2384 | ||
271 | 2385 | my $new_sql_mode | 2385 | my $new_sql_mode |
276 | 2386 | = '/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, ' | 2386 | = q{/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, } |
277 | 2387 | . q{@@SQL_MODE := REPLACE(REPLACE(@@SQL_MODE, 'ANSI_QUOTES', ''), ',,', ','), } | 2387 | . q{@@SQL_MODE := '', } |
278 | 2388 | . '@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, ' | 2388 | . q{@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, } |
279 | 2389 | . '@@SQL_QUOTE_SHOW_CREATE := 1 */'; | 2389 | . q{@@SQL_QUOTE_SHOW_CREATE := 1 */}; |
280 | 2390 | 2390 | ||
283 | 2391 | my $old_sql_mode = '/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, ' | 2391 | my $old_sql_mode |
284 | 2392 | . '@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */'; | 2392 | = q{/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, } |
285 | 2393 | . q{@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */}; | ||
286 | 2393 | 2394 | ||
287 | 2394 | PTDEBUG && _d($new_sql_mode); | 2395 | PTDEBUG && _d($new_sql_mode); |
288 | 2395 | eval { $dbh->do($new_sql_mode); }; | 2396 | eval { $dbh->do($new_sql_mode); }; |
289 | 2396 | 2397 | ||
290 | === modified file 'bin/pt-table-usage' | |||
291 | --- bin/pt-table-usage 2012-10-30 23:04:22 +0000 | |||
292 | +++ bin/pt-table-usage 2012-11-01 20:30:30 +0000 | |||
293 | @@ -5655,13 +5655,14 @@ | |||
294 | 5655 | my $q = $self->{Quoter}; | 5655 | my $q = $self->{Quoter}; |
295 | 5656 | 5656 | ||
296 | 5657 | my $new_sql_mode | 5657 | my $new_sql_mode |
301 | 5658 | = '/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, ' | 5658 | = q{/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, } |
302 | 5659 | . q{@@SQL_MODE := REPLACE(REPLACE(@@SQL_MODE, 'ANSI_QUOTES', ''), ',,', ','), } | 5659 | . q{@@SQL_MODE := '', } |
303 | 5660 | . '@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, ' | 5660 | . q{@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, } |
304 | 5661 | . '@@SQL_QUOTE_SHOW_CREATE := 1 */'; | 5661 | . q{@@SQL_QUOTE_SHOW_CREATE := 1 */}; |
305 | 5662 | 5662 | ||
308 | 5663 | my $old_sql_mode = '/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, ' | 5663 | my $old_sql_mode |
309 | 5664 | . '@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */'; | 5664 | = q{/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, } |
310 | 5665 | . q{@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */}; | ||
311 | 5665 | 5666 | ||
312 | 5666 | PTDEBUG && _d($new_sql_mode); | 5667 | PTDEBUG && _d($new_sql_mode); |
313 | 5667 | eval { $dbh->do($new_sql_mode); }; | 5668 | eval { $dbh->do($new_sql_mode); }; |
314 | 5668 | 5669 | ||
315 | === modified file 'bin/pt-upgrade' | |||
316 | --- bin/pt-upgrade 2012-10-31 01:12:57 +0000 | |||
317 | +++ bin/pt-upgrade 2012-11-01 20:30:30 +0000 | |||
318 | @@ -482,13 +482,14 @@ | |||
319 | 482 | my $q = $self->{Quoter}; | 482 | my $q = $self->{Quoter}; |
320 | 483 | 483 | ||
321 | 484 | my $new_sql_mode | 484 | my $new_sql_mode |
326 | 485 | = '/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, ' | 485 | = q{/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, } |
327 | 486 | . q{@@SQL_MODE := REPLACE(REPLACE(@@SQL_MODE, 'ANSI_QUOTES', ''), ',,', ','), } | 486 | . q{@@SQL_MODE := '', } |
328 | 487 | . '@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, ' | 487 | . q{@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, } |
329 | 488 | . '@@SQL_QUOTE_SHOW_CREATE := 1 */'; | 488 | . q{@@SQL_QUOTE_SHOW_CREATE := 1 */}; |
330 | 489 | 489 | ||
333 | 490 | my $old_sql_mode = '/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, ' | 490 | my $old_sql_mode |
334 | 491 | . '@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */'; | 491 | = q{/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, } |
335 | 492 | . q{@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */}; | ||
336 | 492 | 493 | ||
337 | 493 | PTDEBUG && _d($new_sql_mode); | 494 | PTDEBUG && _d($new_sql_mode); |
338 | 494 | eval { $dbh->do($new_sql_mode); }; | 495 | eval { $dbh->do($new_sql_mode); }; |
339 | 495 | 496 | ||
340 | === modified file 'lib/TableParser.pm' | |||
341 | --- lib/TableParser.pm 2012-10-19 23:14:07 +0000 | |||
342 | +++ lib/TableParser.pm 2012-11-01 20:30:30 +0000 | |||
343 | @@ -56,16 +56,21 @@ | |||
344 | 56 | my $q = $self->{Quoter}; | 56 | my $q = $self->{Quoter}; |
345 | 57 | 57 | ||
346 | 58 | # To ensure a consistent output, we save the current (old) SQL mode, | 58 | # To ensure a consistent output, we save the current (old) SQL mode, |
349 | 59 | # then set it to the new SQL mode that what we need. When done, even | 59 | # then set it to the new SQL mode that what we need, which is the |
350 | 60 | # if an error occurs, we restore the old SQL mode. | 60 | # default sql_mode=''. When done, even if an error occurs, we restore |
351 | 61 | # the old SQL mode. The main thing is that we do not want ANSI_QUOTES | ||
352 | 62 | # because there's code all throughout the tools that expect backtick ` | ||
353 | 63 | # quoted idents, not double-quote " quoted idents. For example: | ||
354 | 64 | # https://bugs.launchpad.net/percona-toolkit/+bug/1058285 | ||
355 | 61 | my $new_sql_mode | 65 | my $new_sql_mode |
360 | 62 | = '/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, ' | 66 | = q{/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, } |
361 | 63 | . q{@@SQL_MODE := REPLACE(REPLACE(@@SQL_MODE, 'ANSI_QUOTES', ''), ',,', ','), } | 67 | . q{@@SQL_MODE := '', } |
362 | 64 | . '@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, ' | 68 | . q{@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, } |
363 | 65 | . '@@SQL_QUOTE_SHOW_CREATE := 1 */'; | 69 | . q{@@SQL_QUOTE_SHOW_CREATE := 1 */}; |
364 | 66 | 70 | ||
367 | 67 | my $old_sql_mode = '/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, ' | 71 | my $old_sql_mode |
368 | 68 | . '@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */'; | 72 | = q{/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, } |
369 | 73 | . q{@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */}; | ||
370 | 69 | 74 | ||
371 | 70 | # Set new SQL mode. | 75 | # Set new SQL mode. |
372 | 71 | PTDEBUG && _d($new_sql_mode); | 76 | PTDEBUG && _d($new_sql_mode); |
373 | 72 | 77 | ||
374 | === added file 't/pt-online-schema-change/ansi_quotes.t' | |||
375 | --- t/pt-online-schema-change/ansi_quotes.t 1970-01-01 00:00:00 +0000 | |||
376 | +++ t/pt-online-schema-change/ansi_quotes.t 2012-11-01 20:30:30 +0000 | |||
377 | @@ -0,0 +1,144 @@ | |||
378 | 1 | #!/usr/bin/env perl | ||
379 | 2 | |||
380 | 3 | BEGIN { | ||
381 | 4 | die "The PERCONA_TOOLKIT_BRANCH environment variable is not set.\n" | ||
382 | 5 | unless $ENV{PERCONA_TOOLKIT_BRANCH} && -d $ENV{PERCONA_TOOLKIT_BRANCH}; | ||
383 | 6 | unshift @INC, "$ENV{PERCONA_TOOLKIT_BRANCH}/lib"; | ||
384 | 7 | }; | ||
385 | 8 | |||
386 | 9 | use strict; | ||
387 | 10 | use warnings FATAL => 'all'; | ||
388 | 11 | use English qw(-no_match_vars); | ||
389 | 12 | use Test::More; | ||
390 | 13 | |||
391 | 14 | use Data::Dumper; | ||
392 | 15 | use PerconaTest; | ||
393 | 16 | use Sandbox; | ||
394 | 17 | |||
395 | 18 | require "$trunk/bin/pt-online-schema-change"; | ||
396 | 19 | |||
397 | 20 | diag(`$trunk/sandbox/stop-sandbox 12348 >/dev/null`); | ||
398 | 21 | diag(`MODE_ANSI=1 $trunk/sandbox/start-sandbox master 12348 >/dev/null`); | ||
399 | 22 | |||
400 | 23 | my $dp = new DSNParser(opts=>$dsn_opts); | ||
401 | 24 | my $sb = new Sandbox(basedir => '/tmp', DSNParser => $dp); | ||
402 | 25 | my $dbh = $sb->get_dbh_for('master1'); | ||
403 | 26 | |||
404 | 27 | if ( !$dbh ) { | ||
405 | 28 | plan skip_all => 'Cannot connect to sandbox master 12348'; | ||
406 | 29 | } | ||
407 | 30 | |||
408 | 31 | # The sandbox servers run with lock_wait_timeout=3 and it's not dynamic | ||
409 | 32 | # so we need to specify --lock-wait-timeout=3 else the tool will die. | ||
410 | 33 | my $master_dsn = 'h=127.1,P=12348,u=msandbox,p=msandbox'; | ||
411 | 34 | my @args = (qw(--lock-wait-timeout 3)); | ||
412 | 35 | my $output; | ||
413 | 36 | my $exit_status; | ||
414 | 37 | my $sample = "t/pt-online-schema-change/samples/"; | ||
415 | 38 | |||
416 | 39 | # ############################################################################ | ||
417 | 40 | # pt-online-schema-change doesn't work with ANSI_QUOTES + some other sql_modes | ||
418 | 41 | # https://bugs.launchpad.net/percona-toolkit/+bug/1058285 | ||
419 | 42 | # ############################################################################ | ||
420 | 43 | $sb->load_file('master1', "$sample/sql-mode-bug-1058285.sql"); | ||
421 | 44 | |||
422 | 45 | my ($orig_sql_mode) = $dbh->selectrow_array(q{SELECT @@SQL_MODE}); | ||
423 | 46 | is( | ||
424 | 47 | $orig_sql_mode, | ||
425 | 48 | "REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI,NO_AUTO_VALUE_ON_ZERO", | ||
426 | 49 | "SQL_MODE set" | ||
427 | 50 | ); | ||
428 | 51 | |||
429 | 52 | ($output, $exit_status) = full_output( | ||
430 | 53 | sub { pt_online_schema_change::main(@args, | ||
431 | 54 | "$master_dsn,D=issue26211,t=process_model_inst", | ||
432 | 55 | "--alter", "ADD COLUMN foo int", | ||
433 | 56 | qw(--dry-run --print --alter-foreign-keys-method auto)) }, | ||
434 | 57 | ); | ||
435 | 58 | |||
436 | 59 | is( | ||
437 | 60 | $exit_status, | ||
438 | 61 | 0, | ||
439 | 62 | "--dry-run exit 0 (bug 1058285)" | ||
440 | 63 | ); | ||
441 | 64 | |||
442 | 65 | unlike( | ||
443 | 66 | $output, | ||
444 | 67 | qr/errno: 121/, | ||
445 | 68 | "No error 121 (bug 1058285)" | ||
446 | 69 | ); | ||
447 | 70 | |||
448 | 71 | my ($sql_mode) = $dbh->selectrow_array(q{SELECT @@SQL_MODE}); | ||
449 | 72 | is( | ||
450 | 73 | $sql_mode, | ||
451 | 74 | $orig_sql_mode, | ||
452 | 75 | "--dry-run SQL_MODE not changed" | ||
453 | 76 | ); | ||
454 | 77 | |||
455 | 78 | ($output, $exit_status) = full_output( | ||
456 | 79 | sub { pt_online_schema_change::main(@args, | ||
457 | 80 | "$master_dsn,D=issue26211,t=process_model_inst", | ||
458 | 81 | "--alter", "ADD COLUMN foo int", | ||
459 | 82 | qw(--execute --alter-foreign-keys-method auto)) }, | ||
460 | 83 | ); | ||
461 | 84 | |||
462 | 85 | is( | ||
463 | 86 | $exit_status, | ||
464 | 87 | 0, | ||
465 | 88 | "--execute exit 0 (bug 1058285)" | ||
466 | 89 | ); | ||
467 | 90 | |||
468 | 91 | unlike( | ||
469 | 92 | $output, | ||
470 | 93 | qr/\QI need a max_rows argument/, | ||
471 | 94 | "No 'I need a max_rows' error message (bug 1073996)" | ||
472 | 95 | ); | ||
473 | 96 | |||
474 | 97 | # ANSI_QUOTES are on, so it's "foo" not `foo`. | ||
475 | 98 | my $rows = $dbh->selectrow_arrayref("SHOW CREATE TABLE issue26211.process_model_inst"); | ||
476 | 99 | like( | ||
477 | 100 | $rows->[1], | ||
478 | 101 | qr/"foo"\s+int/i, | ||
479 | 102 | "--alter actually worked (bug 1058285)" | ||
480 | 103 | ); | ||
481 | 104 | |||
482 | 105 | ($sql_mode) = $dbh->selectrow_array(q{SELECT @@SQL_MODE}); | ||
483 | 106 | is( | ||
484 | 107 | $sql_mode, | ||
485 | 108 | $orig_sql_mode, | ||
486 | 109 | "--execute SQL_MODE not changed" | ||
487 | 110 | ); | ||
488 | 111 | |||
489 | 112 | # ############################################################################ | ||
490 | 113 | # pt-online-schema-change foreign key error | ||
491 | 114 | # Customer issue 26211 | ||
492 | 115 | # ############################################################################ | ||
493 | 116 | $sb->load_file('master1', "$sample/issue-26211.sql"); | ||
494 | 117 | |||
495 | 118 | my $retval; | ||
496 | 119 | ($output, $retval) = full_output(sub { pt_online_schema_change::main(@args, | ||
497 | 120 | '--alter-foreign-keys-method', 'auto', | ||
498 | 121 | '--no-check-replication-filters', | ||
499 | 122 | '--alter', "ENGINE=InnoDB", | ||
500 | 123 | '--execute', "$master_dsn,D=bug_26211,t=prm_inst")}); | ||
501 | 124 | |||
502 | 125 | is( | ||
503 | 126 | $retval, | ||
504 | 127 | 0, | ||
505 | 128 | "Issue 26211: Lives ok" | ||
506 | 129 | ) or diag($output); | ||
507 | 130 | |||
508 | 131 | unlike( | ||
509 | 132 | $output, | ||
510 | 133 | qr/\QI need a max_rows argument/, | ||
511 | 134 | "Issue 26211: No error message" | ||
512 | 135 | ); | ||
513 | 136 | |||
514 | 137 | $dbh->do(q{DROP DATABASE IF EXISTS `bug_26211`}); | ||
515 | 138 | |||
516 | 139 | # ############################################################################# | ||
517 | 140 | # Done. | ||
518 | 141 | # ############################################################################# | ||
519 | 142 | diag(`$trunk/sandbox/stop-sandbox 12348 >/dev/null`); | ||
520 | 143 | ok($sb->ok(), "Sandbox servers") or BAIL_OUT(__FILE__ . " broke the sandbox"); | ||
521 | 144 | done_testing; | ||
522 | 0 | 145 | ||
523 | === modified file 't/pt-online-schema-change/bugs.t' | |||
524 | --- t/pt-online-schema-change/bugs.t 2012-10-11 21:20:53 +0000 | |||
525 | +++ t/pt-online-schema-change/bugs.t 2012-11-01 20:30:30 +0000 | |||
526 | @@ -240,5 +240,4 @@ | |||
527 | 240 | # ############################################################################# | 240 | # ############################################################################# |
528 | 241 | $sb->wipe_clean($master_dbh); | 241 | $sb->wipe_clean($master_dbh); |
529 | 242 | ok($sb->ok(), "Sandbox servers") or BAIL_OUT(__FILE__ . " broke the sandbox"); | 242 | ok($sb->ok(), "Sandbox servers") or BAIL_OUT(__FILE__ . " broke the sandbox"); |
530 | 243 | |||
531 | 244 | done_testing; | 243 | done_testing; |
532 | 245 | 244 | ||
533 | === added file 't/pt-online-schema-change/samples/issue-26211.sql' | |||
534 | --- t/pt-online-schema-change/samples/issue-26211.sql 1970-01-01 00:00:00 +0000 | |||
535 | +++ t/pt-online-schema-change/samples/issue-26211.sql 2012-11-01 20:30:30 +0000 | |||
536 | @@ -0,0 +1,118 @@ | |||
537 | 1 | /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; | ||
538 | 2 | /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; | ||
539 | 3 | /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; | ||
540 | 4 | /*!40101 SET NAMES utf8 */; | ||
541 | 5 | /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; | ||
542 | 6 | /*!40103 SET TIME_ZONE='+00:00' */; | ||
543 | 7 | /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; | ||
544 | 8 | /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; | ||
545 | 9 | /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; | ||
546 | 10 | /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; | ||
547 | 11 | |||
548 | 12 | |||
549 | 13 | DROP DATABASE IF EXISTS `bug_26211`; | ||
550 | 14 | CREATE DATABASE `bug_26211`; | ||
551 | 15 | USE `bug_26211`; | ||
552 | 16 | |||
553 | 17 | DROP TABLE IF EXISTS `mref`; | ||
554 | 18 | /*!40101 SET @saved_cs_client = @@character_set_client */; | ||
555 | 19 | /*!40101 SET character_set_client = utf8 */; | ||
556 | 20 | CREATE TABLE `mref` ( | ||
557 | 21 | `M_ID` decimal(10,0) NOT NULL , | ||
558 | 22 | `PR_M_INST_ID` decimal(10,0) NOT NULL , | ||
559 | 23 | KEY `I_M_ID` (`M_ID`), | ||
560 | 24 | KEY `I_PR_M_` (`PR_M_INST_ID`), | ||
561 | 25 | CONSTRAINT `FK_MREF_REF_PM` FOREIGN KEY (`M_ID`) REFERENCES `pm` (`M_ID`) ON DELETE CASCADE, | ||
562 | 26 | CONSTRAINT `FK_MREF_REF_PRMI` FOREIGN KEY (`PR_M_INST_ID`) REFERENCES `prm_inst` (`PR_M_INST_ID`) ON DELETE CASCADE | ||
563 | 27 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1; | ||
564 | 28 | /*!40101 SET character_set_client = @saved_cs_client */; | ||
565 | 29 | |||
566 | 30 | DROP TABLE IF EXISTS `pm`; | ||
567 | 31 | /*!40101 SET @saved_cs_client = @@character_set_client */; | ||
568 | 32 | /*!40101 SET character_set_client = utf8 */; | ||
569 | 33 | CREATE TABLE `pm` ( | ||
570 | 34 | `M_ID` decimal(10,0) NOT NULL , | ||
571 | 35 | `P_MR_NUM` varchar(64) NOT NULL , | ||
572 | 36 | `P_NUM` varchar(50) NOT NULL , | ||
573 | 37 | `TYPE` varchar(50) DEFAULT NULL , | ||
574 | 38 | `VERSION` decimal(10,0) NOT NULL , | ||
575 | 39 | `XML` longtext NOT NULL , | ||
576 | 40 | PRIMARY KEY (`M_ID`), | ||
577 | 41 | UNIQUE KEY `UK_PM` (`P_MR_NUM`,`P_NUM`), | ||
578 | 42 | KEY `I_PM_P_NUM` (`P_NUM`), | ||
579 | 43 | CONSTRAINT `FK_PM_REF_P` FOREIGN KEY (`P_NUM`) REFERENCES `p` (`P_NUM`) | ||
580 | 44 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1; | ||
581 | 45 | /*!40101 SET character_set_client = @saved_cs_client */; | ||
582 | 46 | |||
583 | 47 | DROP TABLE IF EXISTS `p`; | ||
584 | 48 | /*!40101 SET @saved_cs_client = @@character_set_client */; | ||
585 | 49 | /*!40101 SET character_set_client = utf8 */; | ||
586 | 50 | CREATE TABLE `p` ( | ||
587 | 51 | `P_NUM` varchar(50) NOT NULL , | ||
588 | 52 | `VERSION` decimal(10,0) NOT NULL , | ||
589 | 53 | `TYPE` varchar(32) NOT NULL , | ||
590 | 54 | `PROTECTED` decimal(1,0) NOT NULL , | ||
591 | 55 | `DESCRIPTIONS` varchar(4000) DEFAULT NULL , | ||
592 | 56 | PRIMARY KEY (`P_NUM`) | ||
593 | 57 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1; | ||
594 | 58 | /*!40101 SET character_set_client = @saved_cs_client */; | ||
595 | 59 | |||
596 | 60 | |||
597 | 61 | DROP TABLE IF EXISTS `pr`; | ||
598 | 62 | /*!40101 SET @saved_cs_client = @@character_set_client */; | ||
599 | 63 | /*!40101 SET character_set_client = utf8 */; | ||
600 | 64 | CREATE TABLE `pr` ( | ||
601 | 65 | `PR_ID` decimal(10,0) NOT NULL , | ||
602 | 66 | `NUM` varchar(64) NOT NULL , | ||
603 | 67 | `HUB_RQD` decimal(1,0) NOT NULL , | ||
604 | 68 | `TP_RQD` decimal(1,0) NOT NULL , | ||
605 | 69 | `TRANS_TYPE_RQD` decimal(1,0) NOT NULL , | ||
606 | 70 | `HUB_LABEL` varchar(255) DEFAULT NULL , | ||
607 | 71 | `TP_LABEL` varchar(255) DEFAULT NULL , | ||
608 | 72 | `TRANS_TYPE_LABEL` varchar(255) DEFAULT NULL , | ||
609 | 73 | `TYPE` varchar(32) NOT NULL , | ||
610 | 74 | `PR_M_FLAG` decimal(1,0) NOT NULL , | ||
611 | 75 | `USER_DEFINED` decimal(1,0) NOT NULL , | ||
612 | 76 | `DESCRIPTIONS` varchar(4000) DEFAULT NULL , | ||
613 | 77 | `SIGNATURE` longtext , | ||
614 | 78 | PRIMARY KEY (`PR_ID`), | ||
615 | 79 | KEY `pr_num_index` (`NUM`) | ||
616 | 80 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1; | ||
617 | 81 | /*!40101 SET character_set_client = @saved_cs_client */; | ||
618 | 82 | |||
619 | 83 | DROP TABLE IF EXISTS `prm`; | ||
620 | 84 | /*!40101 SET @saved_cs_client = @@character_set_client */; | ||
621 | 85 | /*!40101 SET character_set_client = utf8 */; | ||
622 | 86 | CREATE TABLE `prm` ( | ||
623 | 87 | `PR_M_ID` decimal(10,0) NOT NULL , | ||
624 | 88 | `M_ID` decimal(10,0) NOT NULL , | ||
625 | 89 | `PR_ID` decimal(10,0) DEFAULT NULL , | ||
626 | 90 | `ACTIVE_VERSION` decimal(10,0) DEFAULT NULL , | ||
627 | 91 | `CURRENT_VERSION` decimal(10,0) DEFAULT NULL , | ||
628 | 92 | `ENABLED` decimal(1,0) NOT NULL , | ||
629 | 93 | `NUM` varchar(64) NOT NULL , | ||
630 | 94 | PRIMARY KEY (`PR_M_ID`), | ||
631 | 95 | KEY `I_PRM_M_ID` (`M_ID`), | ||
632 | 96 | KEY `I_PRM_PR_ID` (`PR_ID`), | ||
633 | 97 | KEY `prm_num_indx` (`NUM`), | ||
634 | 98 | CONSTRAINT `FK_PMOD_REF_PR` FOREIGN KEY (`PR_ID`) REFERENCES `pr` (`PR_ID`), | ||
635 | 99 | CONSTRAINT `FK_PRM_REF_PM` FOREIGN KEY (`M_ID`) REFERENCES `pm` (`M_ID`) ON DELETE CASCADE | ||
636 | 100 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1; | ||
637 | 101 | /*!40101 SET character_set_client = @saved_cs_client */; | ||
638 | 102 | |||
639 | 103 | DROP TABLE IF EXISTS `prm_inst`; | ||
640 | 104 | /*!40101 SET @saved_cs_client = @@character_set_client */; | ||
641 | 105 | /*!40101 SET character_set_client = utf8 */; | ||
642 | 106 | CREATE TABLE `prm_inst` ( | ||
643 | 107 | `PR_M_INST_ID` decimal(10,0) NOT NULL, | ||
644 | 108 | `VERSION` decimal(10,0) NOT NULL, | ||
645 | 109 | `PR_M_ID` decimal(10,0) NOT NULL, | ||
646 | 110 | PRIMARY KEY (`PR_M_INST_ID`), | ||
647 | 111 | UNIQUE KEY `UK_PRM_INST` (`VERSION`,`PR_M_ID`), | ||
648 | 112 | KEY `I_PRM_INST_PR_MODE` (`PR_M_ID`), | ||
649 | 113 | CONSTRAINT `FK_PRMI_REF_PRM` FOREIGN KEY (`PR_M_ID`) REFERENCES `prm` (`PR_M_ID`) ON DELETE CASCADE | ||
650 | 114 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1; | ||
651 | 115 | /*!40101 SET character_set_client = @saved_cs_client */; | ||
652 | 116 | |||
653 | 117 | |||
654 | 118 | |||
655 | 0 | 119 | ||
656 | === added file 't/pt-online-schema-change/samples/sql-mode-bug-1058285.sql' | |||
657 | --- t/pt-online-schema-change/samples/sql-mode-bug-1058285.sql 1970-01-01 00:00:00 +0000 | |||
658 | +++ t/pt-online-schema-change/samples/sql-mode-bug-1058285.sql 2012-11-01 20:30:30 +0000 | |||
659 | @@ -0,0 +1,33 @@ | |||
660 | 1 | DROP DATABASE IF EXISTS `issue26211`; | ||
661 | 2 | CREATE DATABASE `issue26211`; | ||
662 | 3 | USE `issue26211`; | ||
663 | 4 | |||
664 | 5 | CREATE TABLE `process_model` ( | ||
665 | 6 | `PROC_MODEL_ID` decimal(10,0) NOT NULL, | ||
666 | 7 | `PKG_MEM_ID` decimal(10,0) NOT NULL, | ||
667 | 8 | `PROC_ID` decimal(10,0) DEFAULT NULL, | ||
668 | 9 | `ACTIVE_VERSION` decimal(10,0) DEFAULT NULL, | ||
669 | 10 | `CURRENT_VERSION` decimal(10,0) DEFAULT NULL, | ||
670 | 11 | `ENABLED` decimal(1,0) NOT NULL, | ||
671 | 12 | `NAME` varchar(64) NOT NULL, | ||
672 | 13 | `COMMENTS` varchar(4000) DEFAULT NULL, | ||
673 | 14 | PRIMARY KEY (`PROC_MODEL_ID`), | ||
674 | 15 | KEY `I_PROCESS_MODEL_PKG_MEM_ID` (`PKG_MEM_ID`), | ||
675 | 16 | KEY `I_PROCESS_MODEL_PROC_ID` (`PROC_ID`), | ||
676 | 17 | KEY `procmodel_name_indx` (`NAME`) | ||
677 | 18 | ) ENGINE=InnoDB; | ||
678 | 19 | |||
679 | 20 | CREATE TABLE `process_model_inst` ( | ||
680 | 21 | `PROC_MODEL_INST_ID` decimal(10,0) NOT NULL, | ||
681 | 22 | `VERSION` decimal(10,0) NOT NULL, | ||
682 | 23 | `PROC_MODEL_ID` decimal(10,0) NOT NULL, | ||
683 | 24 | `DATE_CREATED` datetime NOT NULL, | ||
684 | 25 | `CHANGE_NOTE` varchar(4000) DEFAULT NULL, | ||
685 | 26 | `XML` longtext NOT NULL, | ||
686 | 27 | `AUTHOR` varchar(50) DEFAULT NULL, | ||
687 | 28 | `CHECKSUM` varchar(64) DEFAULT NULL, | ||
688 | 29 | PRIMARY KEY (`PROC_MODEL_INST_ID`), | ||
689 | 30 | UNIQUE KEY `UK_PROCMODEL_INST` (`VERSION`,`PROC_MODEL_ID`), | ||
690 | 31 | KEY `I_PROCESS_MODEL_INST_PROC_MODE` (`PROC_MODEL_ID`), | ||
691 | 32 | CONSTRAINT `FK_PROCMODINST_REF_PROCMOD` FOREIGN KEY (`PROC_MODEL_ID`) REFERENCES `process_model` (`PROC_MODEL_ID`) ON DELETE CASCADE | ||
692 | 33 | ) ENGINE=InnoDB; |
I think the customer's particular issue was already fixed in 2.1.4. I've asked someone to verify this.