From: Jorgen Loland Date: November 3 2010 1:48pm Subject: bzr commit into mysql-5.5-bugteam branch (jorgen.loland:3120) Bug#57882 List-Archive: http://lists.mysql.com/commits/122684 X-Bug: 57882 Message-Id: <20101103134806.B2D9A1470@atum21.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0660557356077653638==" --===============0660557356077653638== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///export/home/jl208045/mysql/mysql-5.5-bugteam/ based on revid:alexander.nozdrin@stripped 3120 Jorgen Loland 2010-11-03 Bug#57882 - Item_func_conv_charset::val_str(String*): Assertion `fixed == 1' failed (also fixes duplicate bug 57515) agg_item_set_converter() (item.cc) handles conversion of character sets by creating a new Item. fix_fields() is then called on this newly created item. Prior to this patch, it was not checked whether fix_fields() was successful or not. Thus, agg_item_set_converter() would return success even when an error occured. This patch makes it return error (TRUE) if fix_fields() fails. @ mysql-test/r/errors.result Add test for BUG#57882 @ mysql-test/t/errors.test Add test for BUG#57882 @ sql/item.cc Make agg_item_set_converter() return with error if fix_fields() on the newly created converted item fails. modified: mysql-test/r/errors.result mysql-test/t/errors.test sql/item.cc === modified file 'mysql-test/r/errors.result' --- a/mysql-test/r/errors.result 2010-05-27 16:01:43 +0000 +++ b/mysql-test/r/errors.result 2010-11-03 13:47:59 +0000 @@ -134,3 +134,15 @@ INSERT INTO t1 VALUES ('abc\0\0'); INSERT INTO t1 VALUES ('abc\0\0'); ERROR 23000: Duplicate entry 'abc\x00\x00' for key 'PRIMARY' DROP TABLE t1; +# +# Bug#57882: Item_func_conv_charset::val_str(String*): +# Assertion `fixed == 1' failed +# +select (convert('0' using latin1) in (char(cot('v') using utf8),'')); +ERROR 22003: DOUBLE value is out of range in 'cot('v')' +set names utf8 collate utf8_latvian_ci ; +select updatexml(-73 * -2465717823867977728,@@global.slave_net_timeout,null); +ERROR 22003: BIGINT value is out of range in '(-(73) * -(2465717823867977728))' +# +# End Bug#57882 +# === modified file 'mysql-test/t/errors.test' --- a/mysql-test/t/errors.test 2010-05-27 16:01:43 +0000 +++ b/mysql-test/t/errors.test 2010-11-03 13:47:59 +0000 @@ -155,3 +155,19 @@ INSERT INTO t1 VALUES ('abc\0\0'); --error ER_DUP_ENTRY INSERT INTO t1 VALUES ('abc\0\0'); DROP TABLE t1; + +--echo # +--echo # Bug#57882: Item_func_conv_charset::val_str(String*): +--echo # Assertion `fixed == 1' failed +--echo # + +--error ER_DATA_OUT_OF_RANGE +select (convert('0' using latin1) in (char(cot('v') using utf8),'')); + +set names utf8 collate utf8_latvian_ci ; +--error ER_DATA_OUT_OF_RANGE +select updatexml(-73 * -2465717823867977728,@@global.slave_net_timeout,null); + +--echo # +--echo # End Bug#57882 +--echo # === modified file 'sql/item.cc' --- a/sql/item.cc 2010-10-08 14:06:31 +0000 +++ b/sql/item.cc 2010-11-03 13:47:59 +0000 @@ -1857,7 +1857,11 @@ bool agg_item_set_converter(DTCollation We do not check conv->fixed, because Item_func_conv_charset which can be return by safe_charset_converter can't be fixed at creation */ - conv->fix_fields(thd, arg); + if (conv->fix_fields(thd, arg)) + { + res= TRUE; + break; // we cannot return here, we need to restore "arena". + } } if (arena) thd->restore_active_arena(arena, &backup); --===============0660557356077653638== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/jorgen.loland@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: jorgen.loland@stripped\ # k6pbwr0nbeq4kvur # target_branch: file:///export/home/jl208045/mysql/mysql-5.5-bugteam/ # testament_sha1: 947999f59560dc2b247294e2b3a68c5a8900c110 # timestamp: 2010-11-03 14:48:06 +0100 # base_revision_id: alexander.nozdrin@stripped\ # zhhkrkthubkeqyig # # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWXbniccAA/lfgHBQWPf//3e3 3gD////6YAkO+vZl603bS92dvPcle19p2vObt2xRat7thJKaSenqNU3iKfqnmj1TyT1TyeqZNGTy J6ajE09QAPUElJop4m00GSaNTaImnij1BoAAAAAGRU9NGmmTVPU2o00GaQAAAAAAAEiRBKf6Qmaj CGptRkxo1Gmg0aAAAARUEAJoRmqn6Yp6p+qfpDyU9qTEBggBoAEkgEGpiU80p4CU8amk9TEGQGmQ eoPSaaL21igTI25eSVTOphoODG/fXZ9iQljwwdwnsM2J2IqdeiJzIsyhdJukyK2AxidhriyyVW7u Tjvz+9tvThd1eEgOi68/ezaYgExWnDalM2sU8TC01mfasuxfoupMaap8gpOnSpxKjJNdpqlP47a5 VRFRrDf3SDOSkFH3uMEtSSBTHCuiuNL9wvR/Ss/ouQ/GKk4437oj3hRBG2DjQ4dXGBkY81eU/lqW l0SzxiRonGRjMnokE7KRICe9pwjM8hQmaC88PPOXs01vaHd19Xp7JWnmOyXbqUMs+nWirohJPobG MbbedesZebFcZiv+LhOwk1ejViY26tZzklZjaIGV6cXNQzvPxZSRiGWRfbAz0rGLNVSVefbvkWGo oX+RBioC84BEqaSZnqzS2CYU4bZLZl1iJlAhxkeTLLpWa4xnrkl13UyitKrRKVSCRVPwTSGcm6Zh Gsp0sUIpqimC+li7kMomCrFyq9SUIqX4LYkNzTQmoTTEpDW/wGoeAPHER5xTh67qR9EIvRNSCxMP Tt+Rus3BYbmpjkIu0hok4WZhBfaKuSmvayAwYVULWZTYTLWQ5NQnpql23X1EirobodpZW4RRq5Il KRh+n4WGha1wCdjKSwtG9Ab9RpOF1A0y41mrAJHAhAtlOlIzrBTGAOFi2mgyNZusLV0tLN8B1JZM asZ/4TK0RVqpvcYQJRMGnPYWFeS1qwqGVzrBrRhQboSzlciSkyE8wwJuEWjh22RwGJpjIrA+SqZJ +zvvwz0BmxZdHHdEfvHGBydMwiaVHZaInMuk8bkxAxC1UG5rajSNnP5vTELUtivWSYo7WXXZNID1 LXBUT668KlkeeY4WRnCDzMQHqsvkM/HIUKlTxL3pOyDnICKTaHZuvnsEZphkM0zHxR63hlGVtjVs 2wggVS7aaqLMhjmuZY2QHPKp4yluNHT0CG7Fmup6YxZJ1Q1NHLm5zi3UQjA6NAXp0RDKQrV1uBOi hLLHFSTLPRLGkUTxkYllp1p1D5lcZbCGlwyJPVFamCo41ahMYFsQ0lznit7pQDBiTSCVUSeqgmqp ELyhQtElTbgjctK+pZC4oO6OJSLJXNRh0yHNYaPAyQMG4qkiFFcEMK5ynaKyp8quOvNA9fjCPMt6 mS9QMoKpKRXdaqt2HkWvT0jYdxvO4yHkqaGZmZk1H9Y2sSY+Q3tPGRShEPiQPifD2WSC57neJG8y MnErhxAwMhj7FW0dTQMWUKjhxYTPgalmfUupfejktivRqJfFMK4Ydp8JE4XuTLED7wHT1Hiupxg6 +zUt0lyS4tZRswkvavOdpMPDALnxtOiX+ZNxBdC3V80Zfzo4VmaOILmuTy7N5ob18EFr14FTSRLL zA5kFGBBjkYurOUjJmd8ooz4Wbe8hbaYDGIf6e9Sfqrd6BEWoDXwrkDgOaziQNauUTSTX7CKfZ1f AWk1TmZoLFNBby+3uK+taLknHcvNODhKJigONlFBwzk48HqYT1Jj2qDE9iYMRjEkOGKkyNJHjfm8 7Bmdk1BaiihxnuSopqWCnN4nE4HoKHHQ0hRPxYt6W5d035jPo9/X9Fq9R0H8Ym2kxBzKQa0YdnAy hrdvecYnzxXoVLcIsbxsHqY41Qcx4LOoMGD0apQJW9tkyV5y6bp2b3t0Qup2VN8PCGn4x4J5g0K9 uENcVLUiwSxyOQiZSXwuDNE6yVZxcrDarvFmnSqkVdk1Bjpg4GoEOaAqAbzS54aVk4UVepoNhZ0v THl5oOTugxDEocVhKJ06LB5ptDCcYVdKP2ujQmWEImNPBRfRXYE98mFup0WqpDRqhZ+FQZMjHVCU QJQvgc5x73LTbHByJp5AMsCkZYja5xsUux8y6VYlmMdSr1ruppJvfF5uVZGOzTtEhrSzT/cM4cGh HalIUJAtdI57Z5BQ+vlsqpaVpytIEOwYB1tuevY7fHShc3rJpOx5KDLFjz5zKnqcRlI5udO5lotK Ra8ypVMgjvxVLzA1oqNENiorBS5xXVReoFE4mRQuVfLajmGsWCEQg2YXuTujvbTjnJy6HNS4nNMS +RWceag1ClcY7gBgWRAt3SprCMvCDRTqMGyywKPcu/WcazvQ6xNYOZhzov1EEh0TzxenqY6OCOh9 AljSe8rGKtNfkIsxJmGUa3bmq2vqNmnQt8E/MxCTBbnrs1Lx3krHd5DP6s0X8pqcgTENVER5zUqO TC8g0wp4C5l/z4qVNIeWh2pcwyv34GozJLXmCtUuxkyGGWwRtJBJX33rWSuMHUtdRozCZ3NjgODA 8ruwi1txckYPCMZBFtZnGT6KHAdIk3o1WCwgPjrJsqJ5NhUJ7K+9IBr4RCiy0GDj4Oh/2L3tL3Zg 61V5akPpb1bAwYqRB03m5u1EGcaEX9C0LFMlZz7LgrHUGtQTi1YrXDZWE1jCvIKS6sSMugv8i4nS IiIjWsPWEmZUdqaE8TVWkcjvIdRt3ZkjM1wkOylmRUh6gr+MfJE4UVzVaneJyHNEuSLnOmE+bE01 jrWm80BnLSO4TGXYNk366DGBxfCjVhrMibJnnazSupsZyf+Z30SIe0NBZeuSpNsDyb12vahkp342 ElKTE9dxYDprdyDW3AMpheDC5er3LCIy3qRcYQEZUuICwXFIjWuLE+SXR1CXO9v7tqWMWIRO1yZM loK9xIY1P5l1pq7otUywxURwPVDmEbvOf8XckU4UJB254nHA --===============0660557356077653638==--