1. 22 May, 2007 1 commit
    • unknown's avatar
      Bug #28476: force index on a disabled myisam index gives error 124 · 0174c9f1
      unknown authored
      When processing the USE/FORCE index hints
      the optimizer was not checking if the indexes 
      specified are enabled (see ALTER TABLE).
      Fixed by:
       Backporting the fix for bug 20604 to 5.0
      
      
      mysql-test/r/key.result:
        Test for BUG 20604.
        The important part of the test is the explain output that 
        tests what indexes are used.
      mysql-test/r/myisam.result:
        Bug #28476: test cases
      mysql-test/t/key.test:
        Bug 20604: 
        The minimal test case that reveals the bug. The optimizer for 
        aggregates relies on keys disabled with ALTER TABLE ... DISABLE KEYS
        not being in the set TABLE::keys_in_use_for_query.
        When the execution engine tries to use a disabled index, MyISAM
        returns an error.
      mysql-test/t/myisam.test:
        Bug #28476: test cases
      sql/sql_base.cc:
        Bug #28476: 
         - Ignore disabled indexes in USE/FORCE index
      sql/sql_select.cc:
        Bug 20604 : The intersection operation between table->s->keys_in_use 
        and table->keys_in_use_for_query is no longer necessary.
        We can trust that the latter is a subset of the former.
      sql/table.h:
        Bug 20604:
        Added comments to TABLE_SHARE::keys_in_use and
        TABLE::keys_in_use_for_query.
      0174c9f1
  2. 16 May, 2007 4 commits
    • unknown's avatar
      Merge abotchkov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 7b1fff4e
      unknown authored
      into  mysql.com:/home/hf/work/8663/my50-8663
      
      7b1fff4e
    • unknown's avatar
      Merge bk@192.168.21.1:mysql-5.0-opt · 5c2e2f73
      unknown authored
      into  mysql.com:/home/hf/work/8663/my50-8663
      
      5c2e2f73
    • unknown's avatar
      Merge mhansson@bk-internal:/home/bk/mysql-5.0-opt · a7ac4153
      unknown authored
      into  linux-st28.site:/home/martin/mysql/src/5.0o-bug27573
      
      
      mysql-test/r/func_group.result:
        Auto merged
      mysql-test/t/func_group.test:
        bug#27573: hand merged test case
      a7ac4153
    • unknown's avatar
      bug #8663 cant use bigint unsigned as input to cast · 83f03a5f
      unknown authored
      in the case of the overflow in the decimal->integer conversion
      we didn't return the proper boundary value, but just the result
      of the conversion we calculated on the moment of the error
      
      
      mysql-test/r/bigint.result:
        bug #8663 cant use bigint unsigned as input to cast
        test result fixed
      mysql-test/t/bigint.test:
        bug #8663 cant use bigint unsigned as input to cast
        test case
      strings/decimal.c:
        bug #8663 cant use bigint unsigned as input to cast
        decimal->int conversion fixed to return proper boundary value
        in the case of overflow
      83f03a5f
  3. 15 May, 2007 7 commits
    • unknown's avatar
      Merge olga.mysql.com:/home/igor/mysql-5.0-opt · 83504b0d
      unknown authored
      into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug28272
      
      83504b0d
    • unknown's avatar
      Bug#28208: Wrong result of a non-const STRING function with a const DATETIME · d68be9ba
      unknown authored
      function.
      
      A wrong  condition was used to check that the
      Arg_comparator::can_compare_as_dates() function calculated the value of the
      string constant. When comparing a non-const STRING function with a constant
      DATETIME function it leads to saving an arbitrary value as a cached value of
      the DATETIME function.
      
      Now the Arg_comparator::set_cmp_func() function initializes the const_value
      variable to the impossible DATETIME value (-1) and this const_value is
      cached only if it was changed by the Arg_comparator::can_compare_as_dates()
      function.
      
      
      mysql-test/t/type_datetime.test:
        Added a test case for the bug#28208: Wrong result of a non-const STRING function with a const DATETIME function.
      mysql-test/r/type_datetime.result:
        Added a test case for the bug#28208: Wrong result of a non-const STRING function with a const DATETIME function.
      sql/item_cmpfunc.cc:
        Bug#28208: Wrong result of a non-const STRING function with a const DATETIME
        function.
        Now the Arg_comparator::set_cmp_func() function initializes the const_value
        variable to the impossible DATETIME value (-1) and this const_value is
        cached only if it was changed by the Arg_comparator::can_compare_as_dates()
        function.
      d68be9ba
    • unknown's avatar
      Merge olga.mysql.com:/home/igor/dev-opt/mysql-4.1-opt-bug28272 · d9f910ee
      unknown authored
      into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug28272
      
      
      mysql-test/r/innodb_mysql.result:
        Auto merged
      mysql-test/t/innodb_mysql.test:
        Auto merged
      sql/sql_select.cc:
        Manual merge
      d9f910ee
    • unknown's avatar
      Bug#27573: MIN() on an indexed column which is always NULL sets _other_ results · d8b8e817
      unknown authored
      to NULL
      
      For queries of the form SELECT MIN(key_part_k) FROM t1 
      WHERE key_part_1 = const and ... and key_part_k-1 = const,
      the opt_sum_query optimization tries to
      use an index to substitute MIN/MAX functions with their values according
      to the following rules:
      1) Insert the minimum non-null values where the WHERE clause still matches, or
      3) A row of nulls
      
      However, the correct semantics requires that there is a third case 2)
      such that a NULL value is substituted if there are only NULL values for 
      key_part_k.
      
      The patch modifies opt_sum_query() to handle this missing case.
      
      
      mysql-test/r/func_group.result:
        Bug #27573: Correct result
      mysql-test/t/func_group.test:
        Bug #27573: test case
      sql/opt_sum.cc:
        Bug #27573:
        Added code that will try to read the
        first non-null value for a given complete-field prefix, second
        choice is to read the null, and lastly set the error code if no row
        is found.
      d8b8e817
    • unknown's avatar
      Fixed bug #28272: crash that occurs when running an EXPLAIN command · 577ffdb2
      unknown authored
      for a query over an empty table right after its creation. 
      The crash is the result of an attempt made by JOIN::optimize to evaluate
      the WHERE condition when no records have been actually read.
      The added test case can reproduce the crash only with InnoDB tables and
      only with 5.0.x.
       
      
      
      mysql-test/r/innodb_mysql.result:
        Added a test case for bug #28272.
      mysql-test/t/innodb_mysql.test:
        Added a test case for bug #28272.
      sql/sql_select.cc:
        Fixed bug #28272: crash that occurs when running an EXPLAIN command
        for a query over an empty table right after its creation. 
        The crash is the result of an attempt made by JOIN::optimize to evaluate
        the WHERE condition when no records have been actually read.
        Such attempts could be observed only with EXPLAIN commands.
        Now at the optimization phase the WHERE condition is never evaluated if 
        there is no record previously read from the table.
      577ffdb2
    • unknown's avatar
      Post-merge fix. · 6d6a03ce
      unknown authored
      6d6a03ce
    • unknown's avatar
      Merge olga.mysql.com:/home/igor/dev-opt/mysql-4.1-opt-bug27937 · bc3473b8
      unknown authored
      into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug27937
      
      
      mysql-test/r/ps.result:
        Manual merge
      mysql-test/t/ps.test:
        Manual merge
      sql/sql_union.cc:
        Manual merge
      bc3473b8
  4. 14 May, 2007 2 commits
    • unknown's avatar
      Fixed bug #27937: crash for the the second execution of a prepared · a6124de3
      unknown authored
      statement from a UNION query with ORDER BY an expression containing
      RAND().
      The crash happened because the global order by list in the union query
      was not re-initialized for execution.
      (Local order by lists were re-initialized though).
      
      
      
      mysql-test/r/ps.result:
        Added a test case for bug #27937.
      mysql-test/t/ps.test:
        Added a test case for bug #27937.
      sql/sql_union.cc:
        Fixed bug #27937: crash for the the second execution of a prepared
        statement from a UNION query with ORDER BY an expression containing
        RAND().
        The crash happened because the global order by list in the union query
        was not re-initialized for execution.
        (Local order by lists were re-initialized though).
        Added re-initialization of the global order by list in the function
        st_select_lex_unit::init_prepare_fake_select_lex.
      a6124de3
    • unknown's avatar
      Merge mhansson@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 7f8398bb
      unknown authored
      into  dl145s.mysql.com:/users/mhansson/mysql/autopush/5.0o-5.0o-bug28273
      
      7f8398bb
  5. 12 May, 2007 2 commits
    • unknown's avatar
      Merge bk-internal.mysql.com:/data0/bk/mysql-5.0 · de34385a
      unknown authored
      into  bk-internal.mysql.com:/data0/bk/mysql-5.0-opt
      
      de34385a
    • unknown's avatar
      Fixed bug #28375: a query with an NOT IN subquery predicate may cause · 3d501aec
      unknown authored
      a crash when the left operand of the predicate is evaluated to NULL.
      It happens when the rows from the inner tables (tables from the subquery)
      are accessed by index methods with key values obtained by evaluation of
      the left operand of the subquery predicate. When this predicate is
      evaluated to NULL an alternative access with full table scan is used
      to check whether the result set returned by the subquery is empty or not.
      The crash was due to the fact the info about the access methods used for
      regular key values was not properly restored after a switch back from the
      full scan access method had occurred.
      The patch restores this info properly.
      The same problem existed for queries with IN subquery predicates if they
      were used not at the top level of the queries.
      
      
      mysql-test/r/subselect3.result:
        Added a test case for bug #28375.
      mysql-test/t/subselect3.test:
        Added a test case for bug #28375.
      sql/item_subselect.cc:
        Fixed bug #28375: a query with an NOT IN subquery predicate may cause
        a crash when the left operand of the predicate is evaluated to NULL.
        It happens when the rows from the inner tables (tables from the subquery)
        are accessed by index methods with key values obtained by evaluation of
        the left operand of the subquery predicate. When this predicate is
        evaluated to NULL an alternative access with full table scan is used
        to check whether the result set returned by the subquery is empty or not.
        The crash was due to the fact the info about the access methods used for
        regular key values was not properly restored after a switch back from the
        full scan access method had occurred.
        The patch restores this info properly.
      sql/sql_select.h:
        Fixed bug #28375: a query with an NOT IN subquery predicate may cause
        a crash when the left operand of the predicate is evaluated to NULL.
        In the JOIN_TAB structure two fields have been added to save info about
        index methods used to access the subquery rows. The saved info is used
        after a switch back from the alternative full scan access method has 
        occurred. The full scan is used when the left operand of the subquery
        predicate is evaluated to NULL.
      3d501aec
  6. 11 May, 2007 9 commits
    • unknown's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 038c0d3a
      unknown authored
      into  moonbone.local:/mnt/gentoo64/work/27878-bug-5.0-opt-mysql
      
      038c0d3a
    • unknown's avatar
      grant.result, grant.test: · 08ef68cf
      unknown authored
        Corrected test case for the bug#27878.
      
      
      mysql-test/t/grant.test:
        Corrected test case for the bug#27878.
      mysql-test/r/grant.result:
        Corrected test case for the bug#27878.
      08ef68cf
    • unknown's avatar
      Merge bk@192.168.21.1:mysql-5.0-opt · 80a1386e
      unknown authored
      into  mysql.com:/home/hf/work/27957/my50-27957
      
      80a1386e
    • unknown's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · b290fa22
      unknown authored
      into  moonbone.local:/mnt/gentoo64/work/27878-bug-5.0-opt-mysql
      
      b290fa22
    • unknown's avatar
      Bug#27878: Unchecked privileges on a view referring to a table from another · 1fab38c5
      unknown authored
      database.
      
      If a user has a right to update anything in the current database then the 
      access was granted and further checks of access rights for underlying tables
      wasn't done correctly. The check is done before a view is opened and thus no
      check of access rights for underlying tables can be carried out.
      This allows a user to update through a view a table from another database for
      which he hasn't enough rights.
      
      Now the mysql_update() and the mysql_test_update() functions are forces
      re-checking of access rights after a view is opened.
      
      
      mysql-test/t/grant.test:
        Added a test case for the bug#27878: Unchecked privileges on a view referring to a table from another database.
      mysql-test/r/grant.result:
        Added a test case for the bug#27878: Unchecked privileges on a view referring to a table from another database.
      sql/sql_update.cc:
        Bug#27878: Unchecked privileges on a view referring to a table from another 
        database.
        Now the mysql_update() function forces re-checking of access rights after 
        the view is opened.
      sql/sql_prepare.cc:
        Bug#27878: Unchecked privileges on a view referring to a table from another 
        database.
        Now the mysql_test_update() function forces re-checking of access rights after
        the view is opened.
      1fab38c5
    • unknown's avatar
      merging fixes · 87f7d168
      unknown authored
      
      mysql-test/r/type_datetime.result:
        result fixed
      mysql-test/t/type_datetime.test:
        testcase fixed
      sql/item_func.cc:
        my_decimal_length_to_precision used
      sql/my_decimal.h:
        merging fix
      87f7d168
    • unknown's avatar
      Merge mysql.com:/home/hf/work/27921/my50-27921 · 3838978e
      unknown authored
      into  mysql.com:/home/hf/work/27957/my50-27957
      
      
      mysql-test/r/cast.result:
        Auto merged
      sql/item_func.cc:
        Auto merged
      sql/item_func.h:
        Auto merged
      sql/my_decimal.h:
        merging
      3838978e
    • unknown's avatar
      bug#28273: GROUP_CONCAT and ORDER BY: No warning when result gets truncated. · a40eac9e
      unknown authored
      When using GROUP_CONCAT with ORDER BY, a tree is used for the sorting, as 
      opposed to normal nested loops join used when there is no ORDER BY. 
      
      The tree traversal that generates the result counts the lines that have been 
      cut down. (as they get cut down to the field's max_size)
      But the check of that count was before the tree traversal, so no 
      warning was generated if the output is truncated.
      
      Fixed by moving the check to after the tree traversal.
      
      
      mysql-test/r/func_gconcat.result:
        bug#28273: correct result
      mysql-test/t/func_gconcat.test:
        bug#28273: test case
      sql/item_sum.cc:
        bug#28273: the fix
        
        Moved the code that outputs a warning to after temporary table (tree) is traversed.
      a40eac9e
    • unknown's avatar
      Merge bk@192.168.21.1:mysql-5.0-opt · 684a43aa
      unknown authored
      into  mysql.com:/home/hf/work/27957/my50-27957
      
      
      sql/item_func.cc:
        Auto merged
      684a43aa
  7. 10 May, 2007 6 commits
    • unknown's avatar
      Fixed bug #28000. · 8f159772
      unknown authored
      Bug occurs in INSERT IGNORE ... SELECT ... ON DUPLICATE KEY UPDATE
      statements, when SELECT returns duplicated values and UPDATE clause
      tries to assign NULL values to NOT NULL fields.
      NOTE: By current design MySQL server treats INSERT IGNORE ... ON
      DUPLICATE statements as INSERT ... ON DUPLICATE with update of
      duplicated records, but MySQL manual lacks this information.
      After this fix such behaviour becomes legalized.
      
      The write_record() function was returning error values even within
      INSERT IGNORE, because ignore_errors parameter of
      the fill_record_n_invoke_before_triggers() function call was
      always set to FALSE. FALSE is replaced by info->ignore.
      
      
      sql/sql_insert.cc:
        Fixed bug #28000:
        The write_record() function was returning error values even within
        INSERT IGNORE, because ignore_errors parameter of
        the fill_record_n_invoke_before_triggers() function call was
        always set to FALSE. FALSE is replaced by info->ignore.
      mysql-test/t/insert_update.test:
        Added test case for bug #28000.
      mysql-test/r/insert_update.result:
        Added test case for bug #28000.
      8f159772
    • unknown's avatar
      Merge whalegate.ndb.mysql.com:/home/tomas/mysql-4.1-ndb · 0f6e518a
      unknown authored
      into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
      
      
      ndb/src/mgmclient/CommandInterpreter.cpp:
        Auto merged
      0f6e518a
    • unknown's avatar
      Fixed bug #28189: in some rare cases optimizer preferred a more expensive · aef98789
      unknown authored
      ref access to a less expensive range access. 
      This occurred only with InnoDB tables.
      
      
      mysql-test/r/innodb_mysql.result:
        Added a test case for bug #28189.
      mysql-test/t/innodb_mysql.test:
        Added a test case for bug #28189.
      aef98789
    • unknown's avatar
      Merge tulin@bk-internal.mysql.com:/home/bk/mysql-4.1 · 83019599
      unknown authored
      into  whalegate.ndb.mysql.com:/home/tomas/mysql-4.1-ndb
      
      83019599
    • unknown's avatar
      Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-opt · 4b0cd131
      unknown authored
      into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
      
      4b0cd131
    • unknown's avatar
      bug 27921 (Views ignore precision for CAST) · 6187c15d
      unknown authored
      test result fixed
      
      6187c15d
  8. 09 May, 2007 6 commits
    • unknown's avatar
      Bug #27921 View ignores precision for CAST() · eb0d604c
      unknown authored
      Item_decimal_typecast::print properly implemented
      
      
      mysql-test/r/view.result:
        Bug #27921 View ignores precision for CAST()
        test result
      mysql-test/t/view.test:
        Bug #27921 View ignores precision for CAST()
        test case
      sql/field.cc:
        zero decimals handling unified
      sql/item_create.cc:
        Bug #27921 View ignores precision for CAST()
        create_func_cast parameters changed, zero precision handling unified
      sql/item_create.h:
        Bug #27921 View ignores precision for CAST()
        create_func_cast parameters changed
      sql/item_func.cc:
        Bug #27921 View ignores precision for CAST() 
        Item_decimal_typecast::print properly implemented
      sql/item_func.h:
        Bug #27921 View ignores precision for CAST()
        max_length counting fixed
      sql/my_decimal.h:
        Bug #27921 View ignores precision for CAST()
        my_decimal_trim() implemented to unify zero precision handling
      sql/sql_yacc.yy:
        Bug #27921 View ignores precision for CAST()
        create_func_cast calls simplified
      eb0d604c
    • unknown's avatar
      enable setting api reg req frequency to be higher than heartbeat setting to... · bd0754f8
      unknown authored
      enable setting api reg req frequency to be higher than heartbeat setting to ensure we have reasonably up-to-date info from ndb nodes
      + do this for management server
      
      
      bd0754f8
    • unknown's avatar
      Bug #28287 Sign problem in test "ndb_restore_print" · 0a12c16e
      unknown authored
        - corrected previous patch
        - some platforms do strange things with char... use Int8 to be sure of signedness
      
      0a12c16e
    • unknown's avatar
      Bug #27957 cast as decimal does not check overflow, also inconsistent with group, subselect · a271c7dc
      unknown authored
      Missing check for overflow added to the Item_decimal_typecast::val_decimal
      
      
      include/decimal.h:
        Bug #27957 cast as decimal does not check overflow, also inconsistent with group, subselect
        decimal_intg() declaration
      mysql-test/r/cast.result:
        Bug #27957 cast as decimal does not check overflow, also inconsistent with group, subselect
        result fixed
      mysql-test/r/type_newdecimal.result:
        Bug #27957 cast as decimal does not check overflow, also inconsistent with group, subselect
        test result
      mysql-test/t/type_newdecimal.test:
        Bug #27957 cast as decimal does not check overflow, also inconsistent with group, subselect
        test case added
      sql/item_func.cc:
        Bug #27957 cast as decimal does not check overflow, also inconsistent with group, subselect
        now we check for possible ovreflow in Item_decimal_typecast::val_decimal
      sql/my_decimal.h:
        Bug #27957 cast as decimal does not check overflow, also inconsistent with group, subselect
        my_decimal_intg() implemented
      strings/decimal.c:
        Bug #27957 cast as decimal does not check overflow, also inconsistent with group, subselect
        decimal_intg() implemented
      a271c7dc
    • unknown's avatar
      loaddata.result, loaddata.test: · bc8d9473
      unknown authored
        A test case is corrected.
      
      
      mysql-test/t/loaddata.test:
        A test case is corrected.
      mysql-test/r/loaddata.result:
        A test case is corrected.
      bc8d9473
    • unknown's avatar
      Bug #28287 Sign problem in test "ndb_restore_print" · e91b7660
      unknown authored
      - some platforms do strange things with char... use Int8 to be sure of signedness
      
      e91b7660
  9. 08 May, 2007 3 commits
    • unknown's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 18cfcd76
      unknown authored
      into  moonbone.local:/mnt/gentoo64/work/27670-bug-5.0-opt-mysql
      
      18cfcd76
    • unknown's avatar
      Bug#27670: LOAD DATA does not set CURRENT_TIMESTAMP default value for a · dcede16e
      unknown authored
      TIMESTAMP field when no value has been provided.
      
      The LOAD DATA sets the current time in the TIMESTAMP field with
      CURRENT_TIMESTAMP default value when the field is detected as a null.
      But when the LOAD DATA command loads data from a file that doesn't contain
      enough data for all fields then the rest of fields are simply set to null
      without any check. This leads to no value being inserted to such TIMESTAMP
      field.
      
      Now the read_sep_field() and the read_fixed_length() functions set current
      time to the TIMESTAMP field with CURRENT_TIMESTAMP default value in all cases
      when a NULL value is loaded to the field.
      
      
      mysql-test/t/loaddata.test:
        Added a test case for the bug#27670: LOAD DATA does not set CURRENT_TIMESTAMP
        default value for a TIMESTAMP field when no value has been provided.
      mysql-test/r/loaddata.result:
        Added a test case for the bug#27670: LOAD DATA does not set CURRENT_TIMESTAMP
        default value for a TIMESTAMP field when no value has been provided.
      sql/sql_load.cc:
        Bug#27670: LOAD DATA does not set CURRENT_TIMESTAMP default value for a
        TIMESTAMP field when no value has been provided.
        Now the read_sep_field() and the read_fixed_length() functions set current
        time to the TIMESTAMP field with CURRENT_TIMESTAMP default value in all cases
        when a NULL value is loaded to the field.
      dcede16e
    • unknown's avatar