Bug #35570 | CHECKSUM TABLE unreliable if LINESTRING field (same content / differen checksum) | ||
---|---|---|---|
Submitted: | 26 Mar 2008 11:23 | Modified: | 18 Dec 2009 20:32 |
Reporter: | Guilhem Bichot | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: GIS | Severity: | S3 (Non-critical) |
Version: | 5.1-bk/5.0 | OS: | Linux |
Assigned to: | Kristofer Pettersson | CPU Architecture: | Any |
[26 Mar 2008 11:23]
Guilhem Bichot
[26 Mar 2008 11:31]
Guilhem Bichot
Affects InnoDB and Maria too.
[26 Mar 2008 12:24]
MySQL Verification Team
Thank you for the bug report.
[26 Mar 2008 17:20]
Sergei Golubchik
This is essentially a duplicate of Bug#30041. With the difference that there's no workaround (in Bug#30041 one could've switch to using DECIMAL). This should be fixed in 6.0
[26 Mar 2008 20:04]
Sergei Golubchik
No, it's a different bug. The bug is in mysql_checksum_table(): if ((f->type() == MYSQL_TYPE_BLOB) || (f->type() == MYSQL_TYPE_VARCHAR)) should also check for geometry data
[26 Mar 2008 20:57]
Guilhem Bichot
Thanks Serg; after this patch --- 1.456/sql/sql_table.cc 2008-03-20 16:04:18 +01:00 +++ edited/../sql/sql_table.cc 2008-03-26 21:55:31 +01:00 @@ -7261,8 +7261,10 @@ bool mysql_checksum_table(THD *thd, TABL if (! thd->variables.old_mode && f->is_real_null(0)) continue; - if ((f->type() == MYSQL_TYPE_BLOB) || - (f->type() == MYSQL_TYPE_VARCHAR)) + enum_field_types field_type= f->type(); + if ((field_type == MYSQL_TYPE_BLOB) || + (field_type == MYSQL_TYPE_VARCHAR) || + (field_type == MYSQL_TYPE_GEOMETRY)) { String tmp; f->val_str(&tmp); the checksums are identical as expected.
[27 Mar 2008 9:09]
Guilhem Bichot
will push once the important 5.1 ongoing merges are completed (in a few days).
[2 Apr 2008 16:37]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/44800 ChangeSet@1.2624, 2008-04-02 18:37:01+02:00, guilhem@gbichot4.local +3 -0 Fix for BUG#35570 "CHECKSUM TABLE unreliable if LINESTRING field (same content / differen checksum)" This will be back-ported to 5.x trees but the work for R-tree logging critically needs this patch in Maria now.
[10 Apr 2008 14:50]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/45198 ChangeSet@1.2605, 2008-04-10 16:50:08+02:00, guilhem@gbichot4.local +3 -0 Fix for BUG#35570 "CHECKSUM TABLE unreliable if LINESTRING field (same content/ differen checksum)" The problem was that checksum of GEOMETRY type used memory addresses in the computation, making it un-repeatable thus useless.
[10 Apr 2008 15:00]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/45200 ChangeSet@1.2573, 2008-04-10 17:00:03+02:00, guilhem@gbichot4.local +2 -0 Manual merge from 5.0 of the test for the fix for BUG#35570 "CHECKSUM TABLE unreliable if LINESTRING field (same content/ differen checksum)"
[10 Apr 2008 17:53]
Guilhem Bichot
queued to 5.0-opt,5.1-opt,6.0-opt
[28 May 2008 10:02]
Bugs System
Pushed into 6.0.6-alpha
[30 May 2008 19:11]
Paul DuBois
Noted in 6.0.6 changelog. Different invocations of CHECKSUM TABLE could return different results for a table containing columns with spatial data types. Setting report to Patch queued pending push into 5.0.x and 5.1.x.
[1 Jul 2008 21:18]
Marc ALFF
The code was pushed into bitkeeper mysql-5.0-opt and mysql-5.1-opt, but was never merged to a main tree or any bazaar team tree. Setting back to verified: the fix and/or test is missing from 5.0 and 5.1.
[18 Dec 2008 13:37]
Guilhem Bichot
So testing and inspection of code as well as revision history shows that bugfix is in 6.0 but not in 5.1: in 5.1 I still get different checksums: checksum table t1; Table Checksum test.t1 3783522773 checksum table t1; Table Checksum test.t1 2370095220 checksum table t2; Table Checksum test.t2 2569580433 checksum table t3; Table Checksum test.t3 3255057450 checksum table t4; Table Checksum test.t4 2098957064 I asked Igor to explain what happened to my bugfix. I'm de-assigning from me (yes, I fix bugs only once :( ). If someone wants to re-push the fix into 5.1, you can find the patch in this revision of 6.0: sp1r-guilhem@gbichot4.local-20080402163701-47894
[6 Aug 2009 12:31]
Guilhem Bichot
got the reason why it didn't end in 5.1. Fix is in 6.0 and thus in the 6.0-based azalea, case closed.
[21 Sep 2009 9:58]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/83870 3117 Kristofer Pettersson 2009-09-21 Fix for BUG#35570 "CHECKSUM TABLE unreliable if LINESTRING field (same content/ differen checksum)" The problem was that checksum of GEOMETRY type used memory addresses in the computation, making it un-repeatable thus useless. (This patch is a backport from 6.0 branch) @ mysql-test/r/myisam.result test case for bug35570 that same tables give same checksums @ mysql-test/t/myisam.test test case for bug35570 that same tables give same checksums @ sql/sql_table.cc Type GEOMETRY is implemented on top of type BLOB, so, just like for BLOB, its 'field' contains pointers which it does not make sense to include in the checksum; it rather has to be converted to a string and then we can compute the checksum.
[30 Sep 2009 8:18]
Bugs System
Pushed into 6.0.14-alpha (revid:alik@sun.com-20090929093622-1mooerbh12e97zux) (version source revid:jperkin@sun.com-20090921190349-0rw35ei70cvpdvw6) (merge vers: 6.0.14-alpha) (pib:11)
[1 Oct 2009 0:26]
Paul DuBois
Noted in 6.0.14 changelog. Setting report to NDI pending push into 5.1.x, 5.4.x.
[6 Oct 2009 9:00]
Bugs System
Pushed into 5.1.40 (revid:joro@sun.com-20091006073316-lea2cpijh9r6on7c) (version source revid:joro@sun.com-20090923082712-i6jc8tuy0uk1eakt) (merge vers: 5.1.40) (pib:11)
[7 Oct 2009 0:56]
Paul DuBois
Noted in 5.1.40 changelog. Setting report to NDI pending push into 5.4.x.
[22 Oct 2009 7:08]
Bugs System
Pushed into 5.5.0-beta (revid:alik@sun.com-20091022060553-znkmxm0g0gm6ckvw) (version source revid:alik@sun.com-20091013094238-g67x6tgdm9a7uik0) (merge vers: 5.5.0-beta) (pib:13)
[22 Oct 2009 20:02]
Paul DuBois
Noted in 5.5.0 changelog.
[23 Oct 2009 3:05]
Roel Van de Paar
Summary: This bug was fixed in 5.1.40, 5.5.0, 6.0.14 Workaround: none (except upgrade)
[18 Dec 2009 10:36]
Bugs System
Pushed into 5.1.41-ndb-7.1.0 (revid:jonas@mysql.com-20091218102229-64tk47xonu3dv6r6) (version source revid:jonas@mysql.com-20091218095730-26gwjidfsdw45dto) (merge vers: 5.1.41-ndb-7.1.0) (pib:15)
[18 Dec 2009 10:51]
Bugs System
Pushed into 5.1.41-ndb-6.2.19 (revid:jonas@mysql.com-20091218100224-vtzr0fahhsuhjsmt) (version source revid:jonas@mysql.com-20091217101452-qwzyaig50w74xmye) (merge vers: 5.1.41-ndb-6.2.19) (pib:15)
[18 Dec 2009 11:06]
Bugs System
Pushed into 5.1.41-ndb-6.3.31 (revid:jonas@mysql.com-20091218100616-75d9tek96o6ob6k0) (version source revid:jonas@mysql.com-20091217154335-290no45qdins5bwo) (merge vers: 5.1.41-ndb-6.3.31) (pib:15)
[18 Dec 2009 11:21]
Bugs System
Pushed into 5.1.41-ndb-7.0.11 (revid:jonas@mysql.com-20091218101303-ga32mrnr15jsa606) (version source revid:jonas@mysql.com-20091218064304-ezreonykd9f4kelk) (merge vers: 5.1.41-ndb-7.0.11) (pib:15)