From: kevin.lewis Date: December 9 2010 3:59pm Subject: bzr commit into mysql-5.5-innodb branch (kevin.lewis:3258) Bug#55222 List-Archive: http://lists.mysql.com/commits/126448 X-Bug: 55222 Message-Id: <20101209155934.13D3A86E0E7@kevin-lewis-macbook.local> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1803509194==" --===============1803509194== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///Users/kevinlewis/Work/Mysql/55222.push/mysql-5.5-innodb/ based on revid:jimmy.yang@stripped 3258 kevin.lewis@stripped 2010-12-09 Bug#55222 - Previous patch had a bug in unused code which was reactivated in mysql-trunk-innodb in rev revno: 3367 timestamped Tue 2010-12-07 02:25:25-0800. The crash happens only when lower_case_table_names=2, such as on MacOS, when running the new testcase innodb-system-table-view. Specifically, it crashes when any query is made against the INFORMATION_SCHEMA.INNODB_SYS_FOREIGN table. The function dict_process_sys_foreign_rec() is only used for displaying SYS_FOREIGN records so it does not need a lookup version of those names to be allocated. In this patch, those new function calls are deleted. modified: storage/innobase/dict/dict0load.c === modified file 'storage/innobase/dict/dict0load.c' --- a/storage/innobase/dict/dict0load.c revid:jimmy.yang@stripped +++ b/storage/innobase/dict/dict0load.c revid:kevin.lewis@stripped @@ -441,7 +441,7 @@ dict_process_sys_fields_rec( /********************************************************************//** This function parses a SYS_FOREIGN record and populate a dict_foreign_t structure with the information from the record. For detail information -about SYS_FOREIGN fields, please refer to dict_load_foreign() function +about SYS_FOREIGN fields, please refer to dict_load_foreign() function. @return error message, or NULL on success */ UNIV_INTERN const char* @@ -469,6 +469,11 @@ dict_process_sys_foreign_rec( err_len: return("incorrect column length in SYS_FOREIGN"); } + + /* This recieves a dict_foreign_t* that points to a stack variable. + So mem_heap_free(foreign->heap) is not used as elsewhere. + Since the heap used here is freed elsewhere, foreign->heap + is not assigned. */ foreign->id = mem_heap_strdupl(heap, (const char*) field, len); rec_get_nth_field_offs_old(rec, 1/*DB_TRX_ID*/, &len); @@ -480,22 +485,22 @@ err_len: goto err_len; } + /* The _lookup versions of the referenced and foreign table names + are not assigned since they are not used in this dict_foreign_t */ + field = rec_get_nth_field_old(rec, 3/*FOR_NAME*/, &len); if (UNIV_UNLIKELY(len < 1 || len == UNIV_SQL_NULL)) { goto err_len; } foreign->foreign_table_name = mem_heap_strdupl( heap, (const char*) field, len); - dict_mem_foreign_table_name_lookup_set(foreign, TRUE); field = rec_get_nth_field_old(rec, 4/*REF_NAME*/, &len); if (UNIV_UNLIKELY(len < 1 || len == UNIV_SQL_NULL)) { goto err_len; } - foreign->referenced_table_name = mem_heap_strdupl( heap, (const char*) field, len); - dict_mem_referenced_table_name_lookup_set(foreign, TRUE); field = rec_get_nth_field_old(rec, 5/*N_COLS*/, &len); if (UNIV_UNLIKELY(len != 4)) { --===============1803509194== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/kevin.lewis@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: kevin.lewis@stripped # target_branch: file:///Users/kevinlewis/Work/Mysql/55222.push/mysql-\ # 5.5-innodb/ # testament_sha1: 6ac8f082bfd8676940c25a62d3e70090c4ae35f0 # timestamp: 2010-12-09 09:59:33 -0600 # base_revision_id: jimmy.yang@stripped\ # 2zfqbeedyqqq0i8j # # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWRyPbuQAAhNfgAAwWnf/93/j 3CC////wUAWO53ebbVdd7ZM2BoUMMkIYkZqank01PUZGmgNAMQBp6mIBlNTKn4mJPTU1PUB6gGgN GgANAGgQIynpKeBRpkwNI9QxAGCabUAPUBo0QiaaJ6aTEyHqZNAaAAZNAACSIIBpMmiNqaEzUwp6 ZT1ND1ANA0aEJouoZMNcKuBi3L17Bpw1lKUcFtIfPiWQlqoR2yKZa5vkz4LlKqqJ70a0mhPbpOl6 ZZWZRBRSuVYz3rzyUWqruWezHyhvYqiwuA4Pq/X+vADWMkEKCKv2sS7GcGf4kW1a5gNh9y4nAyhH PRRI462CghQSJ5DShgyxuClgaILTmWNa3WuF0YT+UcEfwRE2Onypegvax8MnCH4ceTMQijSwxidr 8eXtoTrDYhHgon3tca+bEadwI6azmO7OcIqMqqK75OzO3C7arMX93IhaffBSSGmBauw8Tr5pSq9L t01yZJ3fzIvzHps50ifYmEa1SsIvVWubzg1C5BgqKxdKtliW950HA5QWA2TKRQPmnJUSM08Bsbsw XNWxDNRAalFFM/WfILHQ+cGTN5FotHhgm7Wux0wD0NgwrfY6Kzsbhq5xEEFc4RrnS/nxFmsIULJ7 KYLmuzpINfg3sjatnkDccS65XGFQuM2z0mQoai04ZUiYERogqO1IxUN+CcjgOiubSNhmrct3Cw2Y 8WFXrIls0wKln1q5pR9shOXQvBrawaZQLtlYxteO2GgFsccKSTWMqWmxQCjeKUwqJG+Zao8JqUFX orrlLR3vvLJPRNHmUaFUmDAUDg+PjlqGFIq0BMgFZQExMeFHoZE6ME5KzSI2FzY5XtHRMVaRVbpq 2kSCqtq17HdtLNp4w6uHZwMFH4pifoXnlAnt74tF0Ww3fh9piNhulPN07lLeraZA6+itoHRHBBSQ v4moNrXAFF8JRo7rMmYeXqcm+oBoJaPewLB4BJeQ3T5ngvNj/rj4sad+yGaRS/7Azh45baghfHpN AlEbPgo4C9oWZiNihdLIjgwTuRobGvVbawoPCz10acmoyDIIayuoHxZ38RAQVwPnKuU+he7Hw58t JgeI/TEjkRj3nYK4gyRdkkbZwJCKlOLMJ2SdNt5PvnwqWZsK1wjNW5G+sf8V4koYvNYZ+qPzmHIY 7u2l2i4dxuzM0xGFmIZgTYIzQiqhEqGqwY4/z8mLRxxzDMbcgFquVIGOdcSrKuQKgzmwEUQSR5s8 XwpZWp3i4gqJjtVpZUocFvCMEVZfUg6ihpbJv52mKtodCVeRUiTWKN62eK4BxbiGBICas22XGa4j bzjzrQr8mKLn+ni+bHk3zdOfDpUIQZbZ9DMy5e4W3BBxNWXUJnC01P0TLD6RbHsUGKp+cHK2NEb3 OC9xrvfdtEXUTTry7Zj3JYk1NdyyRWB90/eGXpjStuHTy69bMS8ZgpmLfeezDmoEg3xO7IVtvfmL 1WKlQqBofweoznEND4nSGAYOHa3LzC9IceMfQDjqx4N71S7mdnrG2jbBDB86TOxS9dTFAo7hXQwe ElCkqeI6VKOCAFQqSviTsomgEydTEFFa0xFWFQ01xkq0StkyGGU3Vnf0Ln7vUV25G51q/Xia7CQK FAPJx7Csp80jEK4CLYLkYIvt6rszaNxbHizJiBo2Ftot0yNdnRb1rJVjrwVn1X26odJZbh4xYYne xcMSSjJEP6nKyPCaSbGFi6O4ESyhRs1zKjLgYm+WXJPEGsuA8dxGdoxWjG4g/W2MKynRgDSvKNKV ChYYygo3BBrL2qpiWjQo5op3upMOx9pda06wqJMYQpNZMIldljFrw9oKwKBJUepliLOfpDXh+GoW Iv+ss2QvZPo90U5CjIB5MnGYD3iwcLSrRP1JvBZwZ66S6DQjIDlMX+LuSKcKEgOR7dyA --===============1803509194==--