From: Guilhem Bichot Date: January 14 2011 1:17pm Subject: bzr commit into mysql-5.5 branch (guilhem.bichot:3246) Bug#59432 List-Archive: http://lists.mysql.com/commits/128749 X-Bug: 59432 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============3773370197089566063==" --===============3773370197089566063== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/mysql_src/bzrrepos_new/5.5-bugteam/ based on revid:luis.soares@stripped 3246 Guilhem Bichot 2011-01-14 Fix for BUG#59432 "--autocommit=on does not work (@@global.autocommit is 0)" @ mysql-test/r/mysqld--help-notwin.result consequence of introducing opt_autocommit and its default @ mysql-test/suite/sys_vars/r/autocommit_func4.result Before this fix, this test would have shown @@global.autocommit == 0 in spite of --autocommit=on. @ mysql-test/suite/sys_vars/r/autocommit_func5.result result unchanged by the fix @ sql/mysqld.cc atoi(argument) was reliable for =0|1 parameters. Now that boolean options must support =on/off/true/false, atoi(argument) is wrong (being always 0 for those strings). Instead, let the internal logic of my_getopt (in particular get_bool_argument()) set a boolean opt_autocommit properly, and use that to set global_system_variables.option_bits. added: mysql-test/suite/sys_vars/r/autocommit_func4.result mysql-test/suite/sys_vars/r/autocommit_func5.result mysql-test/suite/sys_vars/t/autocommit_func4-master.opt mysql-test/suite/sys_vars/t/autocommit_func4.test mysql-test/suite/sys_vars/t/autocommit_func5-master.opt mysql-test/suite/sys_vars/t/autocommit_func5.test modified: mysql-test/r/mysqld--help-notwin.result sql/mysqld.cc sql/mysqld.h === modified file 'mysql-test/r/mysqld--help-notwin.result' --- a/mysql-test/r/mysqld--help-notwin.result 2010-12-03 01:06:56 +0000 +++ b/mysql-test/r/mysqld--help-notwin.result 2011-01-14 13:17:33 +0000 @@ -20,6 +20,7 @@ The following options may be given as th Offset added to Auto-increment columns. Used when auto-increment-increment != 1 --autocommit Set default value for autocommit (0 or 1) + (Defaults to on; use --skip-autocommit to disable.) --automatic-sp-privileges Creating and dropping stored procedures alters ACLs (Defaults to on; use --skip-automatic-sp-privileges to disable.) @@ -732,6 +733,7 @@ abort-slave-event-count 0 allow-suspicious-udfs FALSE auto-increment-increment 1 auto-increment-offset 1 +autocommit TRUE automatic-sp-privileges TRUE back-log 50 big-tables FALSE === added file 'mysql-test/suite/sys_vars/r/autocommit_func4.result' --- a/mysql-test/suite/sys_vars/r/autocommit_func4.result 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/sys_vars/r/autocommit_func4.result 2011-01-14 13:17:33 +0000 @@ -0,0 +1,46 @@ +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name varchar(30) +) ENGINE = INNODB; +SELECT @@global.autocommit; +@@global.autocommit +1 +SELECT @@autocommit; +@@autocommit +1 +INSERT into t1(name) values('Record_1'); +INSERT into t1(name) values('Record_2'); +SELECT * from t1; +id name +1 Record_1 +2 Record_2 +ROLLBACK; +SELECT * from t1; +id name +1 Record_1 +2 Record_2 +set @@global.autocommit = 1-@@global.autocommit; +set @@autocommit = 1-@@autocommit; +SELECT @@global.autocommit; +@@global.autocommit +0 +SELECT @@autocommit; +@@autocommit +0 +INSERT into t1(name) values('Record_1'); +INSERT into t1(name) values('Record_2'); +SELECT * from t1; +id name +1 Record_1 +2 Record_2 +3 Record_1 +4 Record_2 +ROLLBACK; +SELECT * from t1; +id name +1 Record_1 +2 Record_2 +DROP TABLE t1; +set @@global.autocommit = 1-@@global.autocommit; === added file 'mysql-test/suite/sys_vars/r/autocommit_func5.result' --- a/mysql-test/suite/sys_vars/r/autocommit_func5.result 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/sys_vars/r/autocommit_func5.result 2011-01-14 13:17:33 +0000 @@ -0,0 +1,42 @@ +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name varchar(30) +) ENGINE = INNODB; +SELECT @@global.autocommit; +@@global.autocommit +0 +SELECT @@autocommit; +@@autocommit +0 +INSERT into t1(name) values('Record_1'); +INSERT into t1(name) values('Record_2'); +SELECT * from t1; +id name +1 Record_1 +2 Record_2 +ROLLBACK; +SELECT * from t1; +id name +set @@global.autocommit = 1-@@global.autocommit; +set @@autocommit = 1-@@autocommit; +SELECT @@global.autocommit; +@@global.autocommit +1 +SELECT @@autocommit; +@@autocommit +1 +INSERT into t1(name) values('Record_1'); +INSERT into t1(name) values('Record_2'); +SELECT * from t1; +id name +3 Record_1 +4 Record_2 +ROLLBACK; +SELECT * from t1; +id name +3 Record_1 +4 Record_2 +DROP TABLE t1; +set @@global.autocommit = 1-@@global.autocommit; === added file 'mysql-test/suite/sys_vars/t/autocommit_func4-master.opt' --- a/mysql-test/suite/sys_vars/t/autocommit_func4-master.opt 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/sys_vars/t/autocommit_func4-master.opt 2011-01-14 13:17:33 +0000 @@ -0,0 +1 @@ +--autocommit=on === added file 'mysql-test/suite/sys_vars/t/autocommit_func4.test' --- a/mysql-test/suite/sys_vars/t/autocommit_func4.test 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/sys_vars/t/autocommit_func4.test 2011-01-14 13:17:33 +0000 @@ -0,0 +1 @@ +--source suite/sys_vars/inc/autocommit_func2.inc === added file 'mysql-test/suite/sys_vars/t/autocommit_func5-master.opt' --- a/mysql-test/suite/sys_vars/t/autocommit_func5-master.opt 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/sys_vars/t/autocommit_func5-master.opt 2011-01-14 13:17:33 +0000 @@ -0,0 +1 @@ +--autocommit=off === added file 'mysql-test/suite/sys_vars/t/autocommit_func5.test' --- a/mysql-test/suite/sys_vars/t/autocommit_func5.test 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/sys_vars/t/autocommit_func5.test 2011-01-14 13:17:33 +0000 @@ -0,0 +1 @@ +--source suite/sys_vars/inc/autocommit_func2.inc === modified file 'sql/mysqld.cc' --- a/sql/mysqld.cc 2010-12-29 00:26:31 +0000 +++ b/sql/mysqld.cc 2011-01-14 13:17:33 +0000 @@ -283,6 +283,7 @@ const char *first_keyword= "first", *bin const char *my_localhost= "localhost", *delayed_user= "DELAYED"; bool opt_large_files= sizeof(my_off_t) > 4; +static my_bool opt_autocommit; ///< for --autocommit command-line option /* Used with --help for detailed option @@ -5655,8 +5656,9 @@ struct my_option my_long_options[]= Because Sys_var_bit does not support command-line options, we need to explicitely add one for --autocommit */ - {"autocommit", OPT_AUTOCOMMIT, "Set default value for autocommit (0 or 1)", - NULL, NULL, 0, GET_BOOL, OPT_ARG, 0, 0, 0, 0, 0, NULL}, + {"autocommit", 0, "Set default value for autocommit (0 or 1)", + &opt_autocommit, &opt_autocommit, 0, + GET_BOOL, OPT_ARG, 1, 0, 0, 0, 0, NULL}, {"bind-address", OPT_BIND_ADDRESS, "IP address to bind to.", &my_bind_addr_str, &my_bind_addr_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, @@ -7111,13 +7113,6 @@ mysqld_get_one_option(int optid, if (argument == NULL) /* no argument */ log_error_file_ptr= const_cast(""); break; - case OPT_AUTOCOMMIT: - const ulonglong turn_bit_on= (argument && (atoi(argument) == 0)) ? - OPTION_NOT_AUTOCOMMIT : OPTION_AUTOCOMMIT; - global_system_variables.option_bits= - (global_system_variables.option_bits & - ~(OPTION_NOT_AUTOCOMMIT | OPTION_AUTOCOMMIT)) | turn_bit_on; - break; } return 0; } @@ -7268,10 +7263,12 @@ static int get_options(int *argc_ptr, ch else global_system_variables.option_bits&= ~OPTION_BIG_SELECTS; - if (global_system_variables.option_bits & OPTION_AUTOCOMMIT) - global_system_variables.option_bits&= ~OPTION_NOT_AUTOCOMMIT; - else - global_system_variables.option_bits|= OPTION_NOT_AUTOCOMMIT; + // Synchronize @@global.autocommit on --autocommit + const ulonglong turn_bit_on= opt_autocommit ? + OPTION_AUTOCOMMIT : OPTION_NOT_AUTOCOMMIT; + global_system_variables.option_bits= + (global_system_variables.option_bits & + ~(OPTION_NOT_AUTOCOMMIT | OPTION_AUTOCOMMIT)) | turn_bit_on; global_system_variables.sql_mode= expand_sql_mode(global_system_variables.sql_mode); === modified file 'sql/mysqld.h' --- a/sql/mysqld.h 2010-12-17 11:11:34 +0000 +++ b/sql/mysqld.h 2011-01-14 13:17:33 +0000 @@ -394,8 +394,7 @@ enum options_mysqld OPT_UPDATE_LOG, OPT_WANT_CORE, OPT_ENGINE_CONDITION_PUSHDOWN, - OPT_LOG_ERROR, - OPT_AUTOCOMMIT + OPT_LOG_ERROR }; --===============3773370197089566063== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/guilhem.bichot@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: guilhem.bichot@stripped\ # bvams2ac7jwosvxu # target_branch: file:///home/mysql_src/bzrrepos_new/5.5-bugteam/ # testament_sha1: 0df56debc8cde8f3505661fcbe97567f09331ea7 # timestamp: 2011-01-14 14:17:37 +0100 # source_branch: file:///home/mysql_src/bzrrepos_new/mysql-5.1-\ # bugteam/ # base_revision_id: luis.soares@stripped\ # 83o6y6bz3h11j5eo # # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWfXE1roAB0ffgGAwWff///+v 3iC/////YA1Pnezvb3sfQAPQegB4dhnkzR9K0UbaiuQKKy+EoiQxMk2ozTKep6nqZqDNQDQHqABo A0ASlTU/KanplPDSamJiGI0wCMQNNBowRiMQSlMj1TxTU8p6mm1GgND1NB6QYhkAAAABIkmkZEeo xqm0RptT1NPU9Qek8gmJpggADTQRURM1DTKZNT03pUegjNR5QPKAAAAAASRAQBNNABEwEptTJpPS eiNoRtEGTE9HIlrViF5LxfFVSsCevwVnTpz0UkjvG0mV7b8e72NIpX0113NGBm3rp8fP5aF1n/mm EFDeODh1QwOh8mdPuyYIQaoHiqsaRfTSmDHKbNYGREHAiRHBqgksQiQRLVmxB6hJExYkVorwKhjl k9ZSiDwWibVQVIbbCi7VRFXyp+HWVdQGT75de/ZnQWePfVqY22zAQ0Fd/IRtnljOwXKJLlw42jRO LKMZQ6NA7s9aupxjDq02dhuGSXoZuiAMGzhAI/9eBy1Pc+zsVCRv5la7luneRGJbJ2EWZzQV9dbd jjQGryr9Lkz8wEL9uAbnAWl0Vs/LMu0gRTBTkcfPOmNqqRVnkBTzQhC7xrlI9RIgfIBytRB/anCr 7cIUbx2OfTe+YFgzlOPGPzPi3uV3479a1tWxHiimS77sB2/BgyRrbvEgTyixqVFELVSJVx3SAJtA vjQtgL4cQHEbYF6neGd+IjnZcdoH3bTdItz7gO9J49/Az/ADAD8vitxcO5C6C3N/p8ZYfbebC14j QOgdhjumOZkl4n0W4UBhhh0CkvE+wccGDVB+8/uwe+Akep7xPtw361peoPdnebRdNjWcDe58Q7XV o4Ko5sufEoaFTPkTCVwEd8F8HvmXrNYJms1TQhFOOm+/sMMg6nWxkzGNnB0FpLSZOJsgxMOmfYL8 mSOLC9mJMvbvZyIpQTdlWBEKIGCIeG9ROqZTU3SQXwEkW3jEJ2lSlFIkVEmCEf9XmNaZdFeKDWFC pYKJEdVHXEtSIKIWFoOGANFVPqfRDeJfoajB/YBiUwcNjZ6/bZaVsC0CpgmFZ6YqKKJIGLE37GXl F9p2G8qksWaYCHvzgJb1ESxGUEC4kvvuvY9lH+/8nrj3UrhKKNGJbaNidux2iJYmgkTBd7zLPqam JgTUEhkCmbmZOe254EcOdrZYiRxPsgo+rxWyoXDg3YRkg2HAkHDeX8f8blQsL7ztJXEFvEvTLyRs 0+XI6uKFkMtXlxmVpykHQgRQhNTsdYIowgvgxzg94t5zpHLmc/DhYSDKy/DEuUGQWabCJQIwriIQ DhiUSyQgRFSSQuE9I2T4+JHSmREjh7nIDluEnGHDSZUtE4pCRvniJDEBOv0uLXxHzYcllIoJZaFx rZavPLGKqYDhYHE0V4SJEj8luKLZvULSOLvLOSMDGCTAXKRMcEFavu6ZZ2xKTNo8OZOT+pQtIqIx 3y3kJDMvX5N9eIjidS+G4zI+xRRPy4y4CzbXN988rPFgJ0bgdXXtQzZQeOV14uE9MY8so7KLaikx mUufpjnp5NNBXkBrhuOJ2NpaObS09FL89XOe223Phi26l8bDGi31LtaG8sN7mkKs5ycex9bTZI7C W/hikXt4GJ9Yq6Oo2kDEdw+i32xlwjqJOqBOOapupeKJiXFBIcgZWZFgxgN8oRBtm/wwmcDThiDF vXPJpJEb8QYyL7YHIfUiajjk2OhzVBIwV2ttxPG7iXCpeVJq4aszI27sFYdFjdsJimXhk+RKZHAm VvIGhiTJMSy2anLAuDYOFRyIdF1UdluyFC1xlsncZKGQZBA+SpLbWBJaF5gnphG036jWVd9fnR8y 4qWHO0MC0uJjlt5ESx6ttqrGDbOWyyhSkaOncKWOPOdXUURETkqRSJA7weAidWBVo24t5IA1I/bG NxtDvgMY6eHOg2Xo4ZATpxq62MGMxtttttwFCCJJgpkweStB4pXgYshAQjgchgz7JJZfVsK8kjRa GENP8OsgMJYmA2NL9HKH5CezczRQHcF0mAQQYu//FheDYPtAHAAeH2gPaoQuuNuj61DYsfAlHIDA f/AMYljBqGgBgRBs5fkWBIHJjGRYUICHUga4JFY4heFAvgfhZqyhYFTIZKw3f0IhwKZoMpn/4H4g wDBQAuA88LwNjARMS8CKkFpiG4IPMxemliqEiJ6ALOTMxwZz7u4syOiECe8IkySGw6CAULL1QILi zqgMPHymk0lQI5SRQcZhLjOc5pDLDhOQ7PY9hqQkdvaC1+UhcYvPYXGNJA2DO4U33cPgQ4sY3SUc V9QpSUVE9NF/hoNEiCJ1HvbilaftiWs6QsaQhr62HAscjm5jsGMsokSRLU5yHqkSJgwYyKA9xNut wMbG4cDG7LRbOjGZBmUzbu+ZjzHSF3zCh4CRAJHsHItuL/G8oUOCSOCPkirnQjx5JIhevM6pL0MP Lc6kYkPAganEJQQRGSMwg5qurMwpUaQmPXMJMgfUqNCW5NZce+kzZNkKDimWcGtHAT2aQYEqXoS5 d0kBvH7gKNh+NiRHyaJAtiQtTgZGyBmdu2pxOPMMYHQ8Bjtu0RsSOkY3GlqxSNCJWobC4uSDkAsT UYjwIaGBcTGIS2ZoWQTpYKUexgS1QIGyuszJRgqdaLgfEGPCJWMgqHibz1DPqem2J6+YQ6HIv7ta xx3uULaheQ8w5FpCZyQbkHjPV0D3IVAVhK9onE8/Pf9gCPWLjqMLdJdfa5HfXYNclK5CrEYbuJMN y0tE6Z2uzIIt6cr3Q+xkFyZI4Lj51NuD2x94DcIgWCiHdO9FqUrCgSS+uFVmCFo1A8zJQwdWx1ap DyOCnrA0tp7HnEvDkR7DnHZP+KsMDuXFgwx9dqvD4HGMwWhmchHQuP/kHx9EDB9SRzVy9SASwcn2 cB/rAU8UwcC9andklGla/Sdn6Eg/RMrktw/p1FmdsSCFujI3m5zxdIR6ASDEugWYdxyswHqJTPzC WgntAV3s/p38EBM6Ho5yJGG4Iyf8/okjGVojseK1YENHURgAG8BQOFK+JzOpcfUC0nht37fIWzFB i3ftbrp0SGTNlTqNuV3UF80kBKatgGWVHP6YtJDCgYHDczVI3GIhJKRQkeoCQU0Tu8Xj5+BIqEKQ vFkPDkpH2Sk3yGGES2D2UObNoCToMBMhWEV0tiAr/KHjf7CRRnmiTg2ZY0IWt4sb5xGVwIQVMtFF DPaTMpJrUV6oXo0i1gCC8uQIPglMRYOJG3aRXz92xTuzM0IWK/4ewgOZOOS3pwV4wN/ADA+YGKCo WALS5/1RIJkLnc5g7jRZ0oQhWBHAwJFrD1WAFSEGBBTXF53ZxbVKY6WZScryCkVQFMS5eei/HtRV Y2BUDxEgU8qu7M3vBoIXxOocrhtolqGXvQVruGQna2GoEpgqgFLBuQpcBgpXppEh6GkiiCWMjnnM wYUblwVh52gaQ2CAiZ9DyEp4nqTPesOasEvBQzLFkwItN1SqPUZj5neR4plIBEvDngQIoF33dCKE dhMtroG1kIurMT4dYwZal5D7yRiB232bi2twOzuV3ur4fHZ2nR4NAD4YRui6ioB0EiMU1AlajYJX ze9u+G7cLcOLswaIIXgnQRxXowHFQOq6tZZcpGiiwl02Izm64AyM4TUSgKz9SYvKiPKU8QkWqkMK xSYiucJY3WJt0OBm1ESltFMQqONLJDGoSUgiMsAR90bBLNVSTsFqSLRXQAVqBi2wQMOh352p0cZ0 4hgxxVICBuqxCCXqPk2huNiJq8DkgQdFQxzBSTMcNSxl+hIis1ijdtBVWjGChBqsLC/dnv56APLp 6LySIq8PLL02R3sJmTUTxAUXI4zOxYJTPSaBDCWaJVIWikDmWvhamIzHXAHps8opjxXUO+eYq5Wv 5ikDW0nG5HHXgLXYLOpQ7gpJrHwXTjc5AXmup+vjvCCAZcl8i1b53CwEZpo55L1ITpSmTw/v8Xck U4UJD1xNa6A= --===============3773370197089566063==--