1. 12 May, 2008 1 commit
    • unknown's avatar
      Fixed bug #36055: mysql_upgrade doesn't really 'upgrade' tables · 32425d4c
      unknown authored
      The REPAIR TABLE ... USE_FRM query silently corrupts data of tables
      with old .FRM file version.
      The mysql_upgrade client program or the REPAIR TABLE query (without
      the USE_FRM clause) can't prevent this trouble, because in the
      common case they don't upgrade .FRM file to compatible structure.
      
      1. Evaluation of the REPAIR TABLE ... USE_FRM query has been
         modified to reject such tables with the message:
         "Failed repairing incompatible .FRM file".
      
      2. REPAIR TABLE query (without USE_FRM clause) evaluation has been
         modified to upgrade .FRM files to current version.
      
      3. CHECK TABLE ... FOR UPGRADE query evaluation has been modified
         to return error status when .FRM file has incompatible version.
      
      4. mysql_upgrade and mysqlcheck client programs call CHECK TABLE
         FOR UPGRADE and REPAIR TABLE queries, so their behaviors have
         been changed too to upgrade .FRM files with incompatible
         version numbers.
      
      
      mysql-test/std_data/bug36055.MYD:
        Added test data for bug #36055.
      mysql-test/std_data/bug36055.MYI:
        Added test data for bug #36055.
      mysql-test/std_data/bug36055.frm:
        Added test data for bug #36055.
      mysql-test/r/repair.result:
        Added test case for bug# 36055.
      mysql-test/t/repair.test:
        Added test case for bug# 36055.
      sql/handler.cc:
        Fixed bug #36055: mysql_upgrade doesn't really 'upgrade' tables
        
        The handler::ha_check_for_upgrade method has been modified to
        return error if .FRM file has incompatible version number.
      sql/sql_table.cc:
        Fixed bug #36055: mysql_upgrade doesn't really 'upgrade' tables
        
        The prepare_for_repair function has been modified to reject
        REPAIR TABLE ... USE_FRM queries on incompatible .FRM files
        with the message: "Failed repairing incompatible .FRM file".
      32425d4c
  2. 24 Apr, 2008 1 commit
    • unknown's avatar
      Bug#36023: Incorrect handling of zero length caused an assertion to fail. · 51b980ad
      unknown authored
      When a zero length is provided to the my_decimal_length_to_precision
      function along with unsigned_flag set to false it returns a negative value.
      For queries that employs temporary tables may cause failed assertion or
      excessive memory consumption while temporary table creation.
      
      Now the my_decimal_length_to_precision and the my_decimal_precision_to_length
      functions take unsigned_flag into account only if the length/precision
      argument is non-zero.
      
      
      mysql-test/t/type_decimal.test:
        Added a test case for the bug#36023: Incorrect handling of zero length caused
         an assertion to fail.
      mysql-test/r/type_decimal.result:
        Added a test case for the bug#36023: Incorrect handling of zero length caused
         an assertion to fail.
      sql/my_decimal.h:
        Bug#36023: Incorrect handling of zero length caused an assertion to fail.
        Now the my_decimal_length_to_precision and the my_decimal_precision_to_length
        functions take unsigned_flag into account only if the length/precision
        argument is non-zero.
      51b980ad
  3. 23 Apr, 2008 1 commit
    • unknown's avatar
      subselect.test, subselect.result: · e3445f7f
      unknown authored
        Post-commit minor cleanup of testcase (bug#36139).
      
      
      mysql-test/r/subselect.result:
        Post-commit minor cleanup of testcase (bug#36139).
      mysql-test/t/subselect.test:
        Post-commit minor cleanup of testcase (bug#36139).
      e3445f7f
  4. 22 Apr, 2008 3 commits
    • unknown's avatar
      Merge host.loc:/home/uchum/work/5.0-bugteam-35993 · dee04cb5
      unknown authored
      into  host.loc:/home/uchum/work/5.0-bugteam
      
      dee04cb5
    • unknown's avatar
      Fixed bug#36005: server crashes inside NOT IN clause subquery with · 5bb4282e
      unknown authored
                       impossible WHERE/HAVING clause
                       (subselect_single_select_engine::exec).
      
      Allocation and initialization of joined table list t1, t2... of
      subqueries like:
      
          NOT IN (SELECT ... FROM t1,t2,... WHERE 0)
      
      is optimized out, however server tries to traverse this list.
      
      
      mysql-test/r/subselect3.result:
        Added test case for bug#36005.
      mysql-test/t/subselect3.test:
        Added test case for bug#36005.
      sql/sql_select.cc:
        Fixed bug#36005.
        
        1. JOIN::prepare initializes JOIN::table counter (actually a size
           of the JOIN::join_tab array) and sets it to a number of joined tables.
        
        2. The make_join_statistics function (when called from JOIN::optimize)
           allocates and fills the JOIN::join_tab array.
           However, when optimizing subselect has impossible (definite false)
           WHERE or HAVING clause, optimizer skips call to make_join_statistics
           and leaves JOIN::join_tab == NULL.
        
        3. subselect_single_select_engine::exec does traversal of the JOIN::join_tab
           array and the server dies because array is not allocated but array
           counter is greater than 0.
        
        The JOIN::optimize method has been modified to reset the JOIN::table
        counter to 0 in cause of impossible WHERE/HAVING clause.
      5bb4282e
    • unknown's avatar
      Fixed bug #35993: memory corruption and crash with multibyte conversion. · 39e9cf67
      unknown authored
      Grouping or ordering of long values in not indexed BLOB/TEXT columns
      with GBK or BIG5 charsets crashes the server.
      
      MySQL server uses sorting (the filesort procedure) in the temporary
      table to evaluate the GROUP BY clause in case of lack of suitable index.
      That procedure takes into account only first @max_sort_length bytes
      (system variable, usually 1024) of TEXT/BLOB sorting key string.
      The my_strnxfrm_gbk and my_strnxfrm_big5 fill temporary keys
      with data of whole blob length instead of @max_sort_length bytes
      length. That buffer overrun has been fixed.
      
      
      mysql-test/r/ctype_gbk.result:
        Added test case for bug #35993.
      mysql-test/t/ctype_gbk.test:
        Added test case for bug #35993.
      strings/ctype-big5.c:
        Fixed bug #35993: memory corruption and crash with multibyte conversion.
        
        Buffer overrun has been fixed in the my_strnxfrm_big5 function.
      strings/ctype-gbk.c:
        Fixed bug #35993: memory corruption and crash with multibyte conversion.
        
        Buffer overrun has been fixed in the my_strnxfrm_gbk function.
      39e9cf67
  5. 21 Apr, 2008 1 commit
    • unknown's avatar
      BUG#36139 "float, zerofill, crash with subquery" · 84182140
      unknown authored
      - Make convert_zerofill_number_to_string() take into account that the 
        constant it is converting may evaluate to NULL.
      
      
      mysql-test/r/subselect.result:
        BUG#36139 "float, zerofill, crash with subquery"
        - Testcase
      mysql-test/t/subselect.test:
        BUG#36139 "float, zerofill, crash with subquery"
        - Testcase
      84182140
  6. 30 Mar, 2008 1 commit
  7. 29 Mar, 2008 3 commits
  8. 28 Mar, 2008 12 commits
    • unknown's avatar
      Merge amd64.(none):/src/mysql-5.0-bugteam · 57f92977
      unknown authored
      into  amd64.(none):/src/bug26243/my50-bug26243
      
      57f92977
    • unknown's avatar
      Fix tree: · fdf7e6f5
      unknown authored
        1. Use 'dat' extension, because it is handled in Makefile.am;
        2. Fix typo: the bug id is 35469, not 35649.
      
      
      mysql-test/std_data/bug35469.dat:
        Rename: mysql-test/std_data/bug35649.data -> mysql-test/std_data/bug35469.dat
      mysql-test/r/loaddata.result:
        Update result file.
      mysql-test/t/loaddata.test:
        1. Use 'dat' extension, because it is handled in Makefile.am;
        2. Fix typo: the bug id is 35469, not 35649.
      fdf7e6f5
    • unknown's avatar
      Merge amd64.(none):/src/mysql-5.0-bugteam · 2b99ccb6
      unknown authored
      into  amd64.(none):/src/bug26243/my50-bug26243
      
      
      libmysql/libmysql.c:
        Auto merged
      myisam/mi_open.c:
        Auto merged
      sql/ha_federated.cc:
        Auto merged
      sql/ha_myisammrg.cc:
        Auto merged
      sql/slave.cc:
        Auto merged
      sql/sql_select.cc:
        Auto merged
      tests/mysql_client_test.c:
        Auto merged
      2b99ccb6
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.0-bugteam · 59ad7fdb
      unknown authored
      into  quad.opbmk:/mnt/raid/alik/MySQL/devel/5.0-bt
      
      59ad7fdb
    • unknown's avatar
      Bug#26243 mysql command line crash after control-c · 17065f97
      unknown authored
      - Backported the 5.1 DBUG to 5.0.
      - Avoid memory cleanup race on Windows client for CTRL-C
      
      
      client/mysql.cc:
        Bug#26243 mysql command line crash after control-c
        - On Windows, the sigint handler shouldn't call mysql_end
        because the main thread will do so automatically.
        - Remove unnecessary signal call from the sigint handler.
        - Call my_end with proper value.
      dbug/dbug.c:
        Bug#26243 mysql command line crash after control-c
        - Backported the 5.1 DBUG library. The old version uses a non-thread 
        safe global variable 'static struct state *stack'.
      dbug/factorial.c:
        Bug#26243 mysql command line crash after control-c
        - Backported the 5.1 DBUG library. The old version uses a non-thread 
        safe global variable 'static struct state *stack'.
      dbug/user.r:
        Bug#26243 mysql command line crash after control-c
        - Backported the 5.1 DBUG library. The old version uses a non-thread 
        safe global variable 'static struct state *stack'.
      include/my_dbug.h:
        Bug#26243 mysql command line crash after control-c
        - Backported the 5.1 DBUG library. The old version uses a non-thread 
        safe global variable 'static struct state *stack'.
      libmysql/libmysql.c:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      myisam/mi_open.c:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      sql/ha_federated.cc:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      sql/ha_innodb.cc:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      sql/ha_myisammrg.cc:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      sql/item_cmpfunc.cc:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      sql/mysqld.cc:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      sql/net_serv.cc:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      sql/opt_range.cc:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      sql/set_var.cc:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      sql/slave.cc:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      sql/sql_cache.cc:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      sql/sql_select.cc:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      tests/mysql_client_test.c:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      17065f97
    • unknown's avatar
      Fix for Bug#35469: server crash with LOAD DATA INFILE to a VIEW. · a6f04bb3
      unknown authored
      The problem was that LOAD DATA code (sql_load.cc) didn't take into
      account that there may be items, representing references to other
      columns. This is a usual case in views. The crash happened because
      Item_direct_view_ref was casted to Item_user_var_as_out_param,
      which is not a base class.
      
      The fix is to
        1) Handle references properly;
        2) Ensure that an item is treated as a user variable only when
           it is a user variable indeed;
        3) Report an error if LOAD DATA is used to load data into
           non-updatable column.
      
      
      mysql-test/r/loaddata.result:
        Update result file.
      mysql-test/t/loaddata.test:
        Add a test case form Bug#35469: server crash with
        LOAD DATA INFILE to a VIEW.
      sql/share/errmsg.txt:
        Introduce a new error.
      sql/sql_load.cc:
        Handle reference-items properly.
      mysql-test/std_data/bug35649.data:
        Add a data file for the test case.
      a6f04bb3
    • unknown's avatar
      Merge witty.:/Users/mattiasj/clones/bug21413-50-engines · ec43246d
      unknown authored
      into  witty.:/Users/mattiasj/clones/bug21413-50-bugteam
      
      ec43246d
    • unknown's avatar
      Merge witty.:/Users/mattiasj/Public/shared-vms/bug21413-41-engines · 5e7d2481
      unknown authored
      into  witty.:/Users/mattiasj/clones/bug21413-50-engines
      
      
      sql/sql_insert.cc:
        Manual merge
      5e7d2481
    • unknown's avatar
      Bug#21413 - Engine table handler used by multiple threads · 97b3c330
      unknown authored
                  in REPLACE DELAYED
          
      post push patch, removing the optimization for
      copying delayed_insert variables.
      
      
      sql/sql_insert.cc:
        Bug#21413 - Engine table handler used by multiple threads
                    in REPLACE DELAYED
        
        post push patch, removing the optimization for
        copying delayed_insert variables.
        (restored some parts which caused errors)
      97b3c330
    • unknown's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-bugteam · 22cd570b
      unknown authored
      into  moonbone.local:/work/27219-5.0-opt-mysql
      
      
      sql/item.cc:
        Auto merged
      sql/item_subselect.cc:
        Auto merged
      sql/item_sum.cc:
        Auto merged
      sql/mysql_priv.h:
        Auto merged
      sql/sql_select.cc:
        Auto merged
      22cd570b
    • unknown's avatar
      Merge bk-internal:/home/bk/mysql-5.0 · 04735c04
      unknown authored
      into  magare.gmz:/home/kgeorge/mysql/work/merge-5.0-bugteam
      
      
      sql/sql_acl.cc:
        Auto merged
      04735c04
    • unknown's avatar
      Merge bk-internal:/home/bk/mysql-5.0 · 1a512292
      unknown authored
      into  magare.gmz:/home/kgeorge/mysql/work/merge-5.0-bugteam
      
      1a512292
  9. 27 Mar, 2008 15 commits
    • unknown's avatar
      Merge mysql.com:/misc/mysql/mysql-5.0 · f723dec4
      unknown authored
      into  mysql.com:/misc/mysql/mysql-5.0-opt
      
      
      CMakeLists.txt:
        Auto merged
      configure.in:
        Auto merged
      include/config-win.h:
        Auto merged
      include/my_global.h:
        Auto merged
      f723dec4
    • unknown's avatar
      Bug#27219: Aggregate functions in ORDER BY. · 9e65582b
      unknown authored
      Mixing aggregate functions and non-grouping columns is not allowed in the
      ONLY_FULL_GROUP_BY mode. However in some cases the error wasn't thrown because
      of insufficient check.
      
      In order to check more thoroughly the new algorithm employs a list of outer
      fields used in a sum function and a SELECT_LEX::full_group_by_flag.
      Each non-outer field checked to find out whether it's aggregated or not and
      the current select is marked accordingly.
      All outer fields that are used under an aggregate function are added to the
      Item_sum::outer_fields list and later checked by the Item_sum::check_sum_func
      function.
      
      
      mysql-test/t/group_by.test:
        Added a test case for the bug#27219: Aggregate functions in ORDER BY.
      mysql-test/r/group_by.result:
        Added a test case for the bug#27219: Aggregate functions in ORDER BY.
      sql/sql_select.cc:
        Bug#27219: Aggregate functions in ORDER BY.
        Implementation of new check for mixing non aggregated fields and aggregation
        function in the ONLY_FULL_GROUP_BY mode.
      sql/sql_lex.cc:
        Bug#27219: Aggregate functions in ORDER BY.
        Initialization of the full_group_by_flag bitmap.
        SELECT_LEX::test_limit function doesn't reset ORDER BY
        clause anymore.
      sql/sql_lex.h:
        Bug#27219: Aggregate functions in ORDER BY.
        The full_group_by_flag is added to the SELECT_LEX class.
      sql/item_sum.h:
        Bug#27219: Aggregate functions in ORDER BY.
        The outer_fields list is added to the Item_sum class.
      sql/mysql_priv.h:
        Bug#27219: Aggregate functions in ORDER BY.
        Defined a set of constants used in the new check for mixing non aggregated
        fields and sum functions in the ONLY_FULL_GROUP_BY_MODE.
      sql/item_subselect.cc:
        Bug#27219: Aggregate functions in ORDER BY.
        The Item_in_subselect::select_in_like_transformer function now drops
        ORDER BY clause in all selects in a subquery.
      sql/item_sum.cc:
        Bug#27219: Aggregate functions in ORDER BY.
        Now the Item_sum::check_sum_func function now checks whether fields in the
        outer_fields list are aggregated or not and marks selects accordingly.
      sql/item.cc:
        Bug#27219: Aggregate functions in ORDER BY.
        Now the Item_field::fix_fields function checks whether the field is aggregated
        or not and marks its select_lex accordingly.
      9e65582b
    • unknown's avatar
      Merge host.loc:/home/uchum/work/mysql-5.0 · abd0aeb8
      unknown authored
      into  host.loc:/home/uchum/work/5.0-opt
      
      
      configure.in:
        Auto merged
      sql/item.cc:
        Auto merged
      abd0aeb8
    • unknown's avatar
      Merge witty.:/Users/mattiasj/Public/shared-vms/bug21413-41-engines · 09edf843
      unknown authored
      into  witty.:/Users/mattiasj/clones/bug21413-50-engines
      
      
      sql/sql_insert.cc:
        Manual merge
      09edf843
    • unknown's avatar
      Patch clean up. · d71bd5fa
      unknown authored
      Fixed interference between tests: Users were added but not properly removed.
      This caused later tests to fail.
      
      
      mysql-test/r/grant.result:
        Fixed interference between tests: Users were added but not properly removed.
        This caused later tests to fail.
      mysql-test/t/grant.test:
        Fixed interference between tests: Users were added but not properly removed.
        This caused later tests to fail.
      d71bd5fa
    • unknown's avatar
      Merge jbruehe@bk-internal.mysql.com:/home/bk/mysql-5.0-build · afc05e63
      unknown authored
      into  trift2.:/MySQL/M50/push-5.0
      
      afc05e63
    • unknown's avatar
      Merge mysql.com:/Users/davi/mysql/mysql-5.1-bug33201 · d455ee29
      unknown authored
      into  mysql.com:/Users/davi/mysql/mysql-5.0-bugteam
      
      
      sql/sql_acl.cc:
        Auto merged
      d455ee29
    • unknown's avatar
      BUG#25340 · b68bddae
      unknown authored
      b68bddae
    • unknown's avatar
      Merge host.loc:/home/uchum/work/4.1-opt · 9f8619d7
      unknown authored
      into  host.loc:/home/uchum/work/5.0-opt
      
      
      configure.in:
        Merge with 4.1-opt.
      9f8619d7
    • unknown's avatar
      Merge host.loc:/home/uchum/work/mysql-5.0 · 15b8b221
      unknown authored
      into  host.loc:/home/uchum/work/5.0-opt
      
      
      sql/sql_delete.cc:
        Auto merged
      sql/sql_prepare.cc:
        Auto merged
      sql/sql_update.cc:
        Auto merged
      15b8b221
    • unknown's avatar
      Merge trift2.:/MySQL/M50/mysql-5.0 · 774bd919
      unknown authored
      into  trift2.:/MySQL/M50/push-5.0
      
      
      configure.in:
        Auto merged
      774bd919
    • unknown's avatar
      Merge tsmith@bk-internal.mysql.com:/home/bk/mysql-5.0 · 288394f5
      unknown authored
      into  rhel5-ia64-a.mysql.com:/data0/tsmith/build/50
      
      288394f5
    • unknown's avatar
      Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.0-bugteam · 5d66282e
      unknown authored
      into  mysql.com:/misc/mysql/34731/50-34731
      
      5d66282e
    • unknown's avatar
      Merge mysql.com:/misc/mysql/34731_/50-34731 · 35ef5948
      unknown authored
      into  mysql.com:/misc/mysql/34731/50-34731
      
      
      sql/opt_range.cc:
        Auto merged
      mysql-test/r/range.result:
        manual merge
      mysql-test/t/range.test:
        manual merge
      35ef5948
    • unknown's avatar
      Recommit of antonys previous commit. · edbd7e57
      unknown authored
      Bug#21413
      "Engine table handler used by multiple threads in REPLACE DELAYED"
      When executing a REPLACE DELAYED statement, the storage engine
      ::extra() method was invoked by a different thread than the thread
      which has acquired the handler instance.
      
      This did not cause problems within the current server and with
      the current storage engines.
      But it has the potential to confuse future storage engines.
      
      Added code to avoid surplus calls to extra() method in case of DELAYED
      which avoids calling storage engine from a different thread than
      expected.
      
      No test case.
      This change does not change behavior in conjunction with current
      storage engines. So it cannot be tested by the regression test suite.
      
      
      sql/sql_insert.cc:
        Bug#21413
        When performing DELAYED operations, we should not call
        the storage engine methods from the 'wrong' context.
        Ensure that the calls to the methods are appropiately guarded
        by either moving calls to sections where the lock_type is checked.
        No need to copy all elements of TABLE_LIST when opening table
        using open_ltable().
      edbd7e57
  10. 26 Mar, 2008 2 commits
    • unknown's avatar
      Merge host.loc:/home/uchum/work/5.0-opt-35193 · e7efc8b9
      unknown authored
      into  host.loc:/home/uchum/work/5.0-opt
      
      e7efc8b9
    • unknown's avatar
      Fixed bug #35193. · b6bf896b
      unknown authored
      View definition as SELECT ... FROM DUAL WHERE ... has
      valid syntax, but use of such view in SELECT or
      SHOW CREATE VIEW syntax causes unexpected syntax error.
      
      Server omits FROM DUAL clause when storing view body
      string in a .frm file for further evaluation.
      However, syntax of SELECT-witout-FROM query is more
      restrictive than SELECT FROM DUAL syntax, and doesn't
      allow the WHERE clause.
      
      NOTE: this syntax difference is not documented.
      
      
      View registration procedure has been modified to
      preserve original structure of view's body.
      
      
      
      mysql-test/r/view.result:
        Added test case for bug #35193.
      mysql-test/t/view.test:
        Added test case for bug #35193.
      sql/sql_select.cc:
        Fixed bug #35193.
        The st_select_lex::print function always omits FROM DUAL clause,
        even if original SELECT query has the WHERE clause.
        
        The mysql_register_view function uses this function to reconstruct
        a body of view's AS clause for further evaluation and stores that
        reconstructed clause in a .frm file.
        
        SELECT without FROM syntax is more restrictive than 
        SELECT FROM DUAL syntax: second one allows
        the WHERE clause, but first one is not.
        
        Use of this view in SELECT or SHOW CREATE VIEW queries
        causes unexpected syntax errors.
        
        
        The st_select_lex::print function has been modified to
        reconstruct FROM DUAL clause in queries when needed.
        
        
        TODO: Syntax difference is not documented and should be
        eliminated, however improvement of
        the SELECT-without-FROM syntax is not trivial and leads to
        significant modification of grammar file because of additional
        shift/reduce conflicts.
      b6bf896b