1. 12 Jan, 2007 2 commits
    • unknown's avatar
      BUG#24127: (a,b) IN (SELECT c,d ...) can produce wrong results if a and/or b are NULLs: · 5f97dc6e
      unknown authored
      - Make the code produce correct result: use an array of triggers to turn on/off equalities for each
        compared column. Also turn on/off optimizations based on those equalities.
      - Make EXPLAIN output show "Full scan on NULL key" for tables for which we switch between
        ref/unique_subquery/index_subquery and ALL access.
      - index_subquery engine now has HAVING clause when it is needed, and it is
        displayed in EXPLAIN EXTENDED
      - Fix incorrect presense of "Using index" for index/unique-based subqueries (BUG#22930)
      // bk trigger note: this commit refers to BUG#24127
      
      
      mysql-test/r/ndb_subquery.result:
        BUG#24127: wrong result for (null,not-null) IN (SELECT a,b ...)
        - Updated test results (checked)
      mysql-test/r/subselect.result:
        BUG#24127: wrong result for (null,not-null) IN (SELECT a,b ...)
        - Updated test results (checked)
      mysql-test/r/subselect2.result:
        BUG#24127: wrong result for (null,not-null) IN (SELECT a,b ...)
        - Updated test results (checked)
      mysql-test/r/subselect3.result:
        BUG#24127: wrong result for (null,not-null) IN (SELECT a,b ...)
        - Testcases
      mysql-test/t/subselect3.test:
        BUG#24127: wrong result for (null,not-null) IN (SELECT a,b ...)
        - Testcases
      sql/item_cmpfunc.cc:
        BUG#24127: wrong result for (null,not-null) IN (SELECT a,b ...)
        - For row-based IN subqueries, use one flag per each column. Set the flags appropriately before
          running the subquery.
      sql/item_cmpfunc.h:
        BUG#24127: wrong result for (null,not-null) IN (SELECT a,b ...)
         - Added Item_func_trig_cond::get_triv_var()
      sql/item_subselect.cc:
        BUG#24127: wrong result for (null,not-null) IN (SELECT a,b ...)
        - Item_subselect::exec() and subselect_*_engine::exec() don't have parameter
          anymore - now Item_subselect owns the pushed down predicates guard flags.
        - A correct set of conditional predicates is now pushed into row-based IN 
          subquery.
        - select_indexsubquery_engine now has "HAVING clause" (needed for correct query
          results), and it is shown in EXPLAIN EXTENDED
      sql/item_subselect.h:
        BUG#24127: wrong result for (null,not-null) IN (SELECT a,b ...)
        - Item_subselect::exec() and subselect_*_engine::exec() don't have parameter
          anymore - now Item_subselect owns the pushed down predicates guard flags.
        - A correct set of conditional predicates is now pushed into row-based IN 
          subquery.
        - select_indexsubquery_engine now has "HAVING clause" (needed for correct query
          results), and it is shown in EXPLAIN EXTENDED
      sql/mysql_priv.h:
        BUG#24127: wrong result for (null,not-null) IN (SELECT a,b ...)
        - Added "in_having_cond" special Item name
      sql/mysqld.cc:
        BUG#24127: wrong result for (null,not-null) IN (SELECT a,b ...)
        - Added "in_having_cond" special Item name
      sql/sql_lex.h:
        BUG#24127: wrong result for (null,not-null) IN (SELECT a,b ...)
      sql/sql_select.cc:
        BUG#24127: wrong result for (null,not-null) IN (SELECT a,b ...)
        - Make "ref" analyzer be able to work with conditional equalities
        - Fix subquery optimization code to match the changes in what kinds of 
          conditions are pushed down into subqueries 
        - Fix wrong EXPLAIN output in some queries with subquery (BUG#22390)
      sql/sql_select.h:
        BUG#24127: wrong result for (null,not-null) IN (SELECT a,b ...)
        - Make "ref" analyzer be able to work with conditional equalities
        - Fix wrong EXPLAIN output in some queries with subquery (BUG#22390)
      5f97dc6e
    • unknown's avatar
      BUG#24085: Wrong result for NULL IN (SELECT not_null_val FROM ...) · b671815c
      unknown authored
      When transforming "oe IN (SELECT ie ...)" wrap the pushed-down predicates
      iff "oe can be null", not "ie can be null".
      The fix doesn't cover row-based subqueries, those will be fixed in #24127.
      
      
      mysql-test/r/subselect.result:
        BUG#24085: Wrong result for NULL IN (SELECT not_null_val FROM ...)
        Update the test results (checked)
      mysql-test/r/subselect3.result:
        BUG#24085: Wrong result for NULL IN (SELECT not_null_val FROM ...)
        - Testcase
      mysql-test/t/subselect3.test:
        BUG#24085: Wrong result for NULL IN (SELECT not_null_val FROM ...)
        - Testcase
      sql/item_subselect.cc:
        BUG#24085: Wrong result for NULL IN (SELECT not_null_val FROM ...)
        When transforming "oe IN (SELECT ie ...)" we should make special 
        provisions (wrap the pushed predicates) if we can encounter 
        NULL IN (SELECT ...), i.e. when oe->maybe_null. The code was checking
        for ie->maybe_null instead, fixed it for single value based subqueries.
        
        Row-based subqueries (e.g. (a,b) IN (SELECT c,d ...)) are not fixed 
        because they won't produce correct results for several other reasons 
        (filed as #24085)
      b671815c
  2. 10 Jan, 2007 6 commits
    • unknown's avatar
      Merge olga.mysql.com:/home/igor/mysql-4.1-opt · 6943153e
      unknown authored
      into  olga.mysql.com:/home/igor/mysql-5.0-opt
      
      
      sql/item.cc:
        Auto merged
      mysql-test/r/order_by.result:
        Manual merge
      mysql-test/t/order_by.test:
        Manual merge
      6943153e
    • unknown's avatar
      after merge fix · 53c9b0d0
      unknown authored
      53c9b0d0
    • unknown's avatar
      Merge mysql.com:/home/gluh/MySQL/Merge/4.1-opt · f5005095
      unknown authored
      into  mysql.com:/home/gluh/MySQL/Merge/5.0-opt
      
      
      sql/mysqld.cc:
        Auto merged
      sql/sql_base.cc:
        Auto merged
      sql/mysql_priv.h:
        manual merge
      f5005095
    • unknown's avatar
      Fix for bug#20867 InnoDB Bug - create temporary table+crash => mysqld needs to clean up · ac71a8fa
      unknown authored
      2nd version
      During tmp tables cleanup we get the handler for temporary table
      and delete table using handler method.
      
      
      sql/mysql_priv.h:
        added function prototype
      sql/mysqld.cc:
        added call of mysql_rm_tmp_tables() function
      sql/sql_base.cc:
        mysql_rm_tmp_tables()
        -removed from table_cache_init
        -During tmp tables cleanup we get the handler for temporary table
         and delete table using handler method. 
         it allows to remove orphan records from data dictionary(InnoDB)
      ac71a8fa
    • unknown's avatar
      Fixed bug #25427. · 6fc17dab
      unknown authored
      In the method Item_field::fix_fields we try to resolve the name of
      the field against the names of the aliases that occur in the select
      list. This is done by a call of the function find_item_in_list.
      When this function finds several occurrences of the field name
      it sends an error message to the error queue and returns 0.
      Yet the code did not take into account that find_item_in_list
      could return 0 and tried to dereference the returned value.
      
      
      mysql-test/r/order_by.result:
        Added a test case for bug #25427.
      mysql-test/t/order_by.test:
        Added a test case for bug #25427.
      sql/item.cc:
        Fixed bug #25427.
        In the method Item_field::fix_fields we try to resolve the name of
        the field against the names of the aliases that occur in the select
        list. This is done by a call of the function find_item_in_list.
        When this function finds several occurrences of the field name 
        it sends an error message to the error queue and returns 0.
        Yet the code did not take into account that find_item_in_list
        could return 0 and tried to dereference the returned value.
      6fc17dab
    • unknown's avatar
      Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · b04652e2
      unknown authored
      into  olga.mysql.com:/home/igor/mysql-5.0-opt
      
      
      b04652e2
  3. 09 Jan, 2007 9 commits
    • unknown's avatar
      Fixed bug#16861: User defined variable can have a wrong value if a tmp table was · f094fe55
      unknown authored
      used.
      
      The Item::save_in_field() function is called from fill_record() to fill the 
      new row with data while execution of the CREATE TABLE ... SELECT statement.
      Item::save_in_field() calls val_xxx() methods in order to get values.
      val_xxx() methods do not take into account the result field. Due to this
      Item_func_set_user_var::val_xxx() methods returns values from the original
      table, not from the temporary one.
      
      The save_in_field() member function is added to the Item_func_set_user_var
      class. It detects whether the result field should be used and properly updates
      the value of the user variable.
      
      
      sql/item_func.cc:
        Bug#16861: User defined variable can have a wrong value if a tmp table was used.
        Added the save_in_field() member function to the Item_func_set_user_var class.
      sql/item_func.h:
        Bug#16861: User defined variable can have a wrong value if a tmp table was used.
        Added the save_in_field() member function to the Item_func_set_user_var class.
      mysql-test/r/user_var.result:
        Extended the test case for bug#18681: User defined variable can have a wrong value if
        a tmp table was used.
      mysql-test/t/user_var.test:
        Extended the test case for bug#18681: User defined variable can have a wrong value if
        a tmp table was used.
      f094fe55
    • unknown's avatar
      Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 15bb22c0
      unknown authored
      into  olga.mysql.com:/home/igor/mysql-5.0-opt
      
      
      sql/item_cmpfunc.cc:
        Auto merged
      15bb22c0
    • unknown's avatar
      Bug#14171: Wrong internal default value for a BINARY field. · 78dff026
      unknown authored
      A BINARY field is represented by the Field_string class. The space character
      is used as the filler for unused characters in such a field. But a BINARY field 
      should use \x00 instead.
      
      Field_string:reset() now detects whether the current field is a BINARY one
      and if so uses the \x00 character as a default value filler.
      
      
      sql/field.h:
        Bug#14171: Wrong internal default value for a BINARY field.
        Field_string:reset() now detects whether the current field is a BINARY one
        and if so uses the \x00 character as a default value filler.
      mysql-test/r/type_binary.result:
        Added a test case for the bug#14171: Wrong internal default value for a BINARY field.
      mysql-test/t/type_binary.test:
        Added a test case for the bug#14171: Wrong internal default value for a BINARY field.
      78dff026
    • unknown's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · f831f46a
      unknown authored
      into  moonbone.local:/home/evgen/bk-trees/mysql-5.0-opt
      
      
      f831f46a
    • unknown's avatar
      Merge olga.mysql.com:/home/igor/mysql-5.0-opt · eca431f3
      unknown authored
      into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug25027
      
      
      sql/item_cmpfunc.cc:
        Auto merged
      sql/item_cmpfunc.h:
        Auto merged
      sql/sql_lex.cc:
        Auto merged
      eca431f3
    • unknown's avatar
      Merge bk@192.168.21.1:mysql-5.0-opt · 48451b86
      unknown authored
      into  mysql.com:/d2/hf/opt/my50-opt
      
      
      48451b86
    • unknown's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 4b8d44ef
      unknown authored
      into  moonbone.local:/home/evgen/bk-trees/mysql-5.0-opt
      
      
      sql/filesort.cc:
        Auto merged
      sql/handler.cc:
        Auto merged
      sql/item_cmpfunc.cc:
        Auto merged
      sql/item_subselect.cc:
        Auto merged
      sql/item_timefunc.cc:
        Auto merged
      sql/sql_class.h:
        Auto merged
      sql/sql_parse.cc:
        Auto merged
      sql-common/client.c:
        Auto merged
      sql-common/my_time.c:
        Auto merged
      sql/sql_select.cc:
        Auto merged
      sql/table.cc:
        Auto merged
      strings/decimal.c:
        Auto merged
      4b8d44ef
    • unknown's avatar
      Merge olga.mysql.com:/home/igor/mysql-5.0-opt · 470ea99c
      unknown authored
      into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug24345
      
      
      sql/sql_select.cc:
        Auto merged
      470ea99c
    • unknown's avatar
      Merge bk@192.168.21.1:mysql-5.0-opt · e3d81238
      unknown authored
      into  mysql.com:/d2/hf/opt/my50-opt
      
      
      e3d81238
  4. 05 Jan, 2007 1 commit
    • unknown's avatar
      Bug #15881: cast problems · 42e31f7a
      unknown authored
        The optimizer removes expressions from GROUP BY/DISTINCT
        if they happen to participate in a <expression> = <const>
        predicates of the WHERE clause (the idea being that if
        it's always equal to a constant it can't have multiple 
        values).
        However for predicates where the expression and the 
        constant item are of different result type this is not
        valid (e.g. a string column compared to 0).
        Fixed by additional check of the result types of the 
        expression and the constant and if they differ the 
        expression don't get removed from the group by list.
      
      
      mysql-test/r/distinct.result:
        Bug #15881: cast problems
          - test case
      mysql-test/t/distinct.test:
        Bug #15881: cast problems
          - test case
      sql/sql_select.cc:
        Bug #15881: cast problems
          - can't use <expr>=<const> to remove GROUP BY/DISTINCT cols
            if they're not of the same type.
      42e31f7a
  5. 04 Jan, 2007 2 commits
  6. 03 Jan, 2007 5 commits
    • unknown's avatar
      Fixed bug #24345. · 42010cde
      unknown authored
      This bug appeared after the patch for bug 21390 that had added some code
      to handle outer joins with no matches after substitution of a const
      table in an efficient way. That code as it is cannot be applied to the case
      of nested outer join operations. Being applied to the queries with
      nested outer joins the code can cause crashes or wrong result sets.
      The fix blocks row substitution for const inner tables of an outer join
      if the inner operand is not a single table.  
      
      
      mysql-test/r/join_nested.result:
        Added a test case for bug #24345.
      mysql-test/t/join_nested.test:
        Added a test case for bug #24345.
      42010cde
    • unknown's avatar
      Merge bk-internal:/home/bk/mysql-5.0-opt · 5df7d39e
      unknown authored
      into  rakia.gmz:/home/kgeorge/mysql/work/B15439-5.0-opt
      
      
      sql/sql_udf.cc:
        Auto merged
      5df7d39e
    • unknown's avatar
      sql_udf.cc: · ea5557aa
      unknown authored
        Addendum to the fix for bug#15439 : valgrind pb failed
      
      
      sql/sql_udf.cc:
        Addendum to the fix for bug#15439 : valgrind pb failed
      ea5557aa
    • unknown's avatar
      Merge mysql.com:/d2/hf/common/my41-common · 8e0eea0d
      unknown authored
      into  mysql.com:/d2/hf/opt/my41-opt
      
      
      8e0eea0d
    • unknown's avatar
      Merge mysql.com:/d2/hf/common/my50-common · 6a4fbf09
      unknown authored
      into  mysql.com:/d2/hf/opt/my50-opt
      
      
      myisam/mi_check.c:
        Auto merged
      sql/item_subselect.cc:
        Auto merged
      sql/item_subselect.h:
        Auto merged
      sql/sql_lex.cc:
        Auto merged
      sql/sql_udf.cc:
        Auto merged
      6a4fbf09
  7. 02 Jan, 2007 11 commits
  8. 31 Dec, 2006 4 commits
    • unknown's avatar
      Merge mysql.com:/d2/hf/clean/my50-clean · 84d0cda4
      unknown authored
      into  mysql.com:/d2/hf/common/my50-common
      
      
      mysql-test/mysql-test-run.pl:
        Auto merged
      sql/item_func.cc:
        Auto merged
      sql/item_strfunc.cc:
        Auto merged
      84d0cda4
    • unknown's avatar
      Merge mysql.com:/d2/hf/clean/my41-clean · 62576974
      unknown authored
      into  mysql.com:/d2/hf/common/my41-common
      
      
      sql/item_func.cc:
        Auto merged
      62576974
    • unknown's avatar
      Merge mysql.com:/d2/hf/common/my41-common · 44e02393
      unknown authored
      into  mysql.com:/d2/hf/common/my50-common
      
      
      libmysqld/lib_sql.cc:
        Auto merged
      sql/item_func.cc:
        Auto merged
      44e02393
    • unknown's avatar
      Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-5.0 · 27ecbeec
      unknown authored
      into  mysql.com:/home/kent/bk/main/mysql-5.0
      
      
      myisam/mi_check.c:
        Auto merged
      myisam/mi_dynrec.c:
        Auto merged
      myisam/mi_packrec.c:
        Auto merged
      myisam/mi_range.c:
        Auto merged
      myisam/mi_test1.c:
        Auto merged
      myisam/mi_write.c:
        Auto merged
      myisam/rt_split.c:
        Auto merged
      sql/opt_range.cc:
        Auto merged
      sql/sql_class.h:
        Auto merged
      sql/sql_insert.cc:
        Auto merged
      27ecbeec