1. 01 Nov, 2005 1 commit
    • unknown's avatar
      Reverting patch for BUG #14009 (use of abs() on null value causes problems with filesort · 5bd8c9de
      unknown authored
      Fix for bug #14536: SELECT @A,@A:=... fails with prepared statements
      
      
      mysql-test/r/func_sapdb.result:
        Correct tests after reverting patch for BUG #14009 (use of abs() on null value causes problems with filesort)
      mysql-test/r/type_newdecimal.result:
        Correct tests after reverting patch for BUG #14009 (use of abs() on null value causes problems with filesort)
      mysql-test/r/user_var.result:
        More test with SELECT @A:=
      mysql-test/t/disabled.def:
        Enable user_var.test for
      mysql-test/t/user_var.test:
        More test with SELECT @A:=
      sql/item.cc:
        Simple optimization during review of new code
      sql/item_func.cc:
        Reverting patch for BUG #14009 (use of abs() on null value causes problems with filesort)
      sql/item_timefunc.h:
        timediff() can return NULL for not NULL arguments
      sql/sql_base.cc:
        Remove usage of current_thd() in mysql_make_view()
      sql/sql_lex.h:
        Remove usage of current_thd() in mysql_make_view()
      sql/sql_select.cc:
        Fix for bug #14536: SELECT @A,@A:=... fails with prepared statements
      sql/sql_view.cc:
        Remove usage of current_thd() in mysql_make_view()
        Simple optimization of new code
      sql/sql_view.h:
        Remove usage of current_thd() in mysql_make_view()
      sql/table.cc:
        Simple optimization of new code
      5bd8c9de
  2. 28 Oct, 2005 2 commits
    • unknown's avatar
      sql_select.cc: · 99316726
      unknown authored
        After merge fix
      
      
      sql/sql_select.cc:
        After merge fix
      99316726
    • unknown's avatar
      Fix bug #14138 ROLLUP and PROCEDURE ANALYSE() hang server · b5fccb70
      unknown authored
      Procedure analyse() redefines select's fields_list. setup_copy_fields() assumes
      that fields_list is a part of all_fields_list. Because select have only 
      3 columns and analyse() redefines it to have 10 columns, int overrun in
      setup_copy_fields() occurs and server goes to almost infinite loop.
      
      Because fields_list used not only to send data ad fields types, it's wrong 
      to allow procedure redefine it. This patch separates select's fileds_list 
      and procedure's one. Now if procedure is present, copy of fields_list is 
      created in procedure_fields_list and it is used for sending data and fields.
      
      
      mysql-test/t/analyse.test:
        Test case for bug #14138  ROLLUP and PROCEDURE ANALYSE() hang server
      mysql-test/r/analyse.result:
        Test case for bug #14138  ROLLUP and PROCEDURE ANALYSE() hang server
      sql/sql_select.h:
        Fix bug #14138  ROLLUP and PROCEDURE ANALYSE() hang server
        To JOIN  Added separate fields_list for procedure.
      sql/sql_select.cc:
        Fix bug #141...
      b5fccb70
  3. 13 Oct, 2005 5 commits
    • unknown's avatar
      Fix bug #13855 select distinct with group by caused server crash · df9653ef
      unknown authored
      DISTINCT wasn't optimized away and caused creation of tmp table in wrong
      case. This result in integer overrun and running out of memory.
      
      Fix backported from 4.1. Now if optimizer founds that in result be only 1
      row it removes distinct.
      
      
      sql/sql_select.cc:
        Fix bug #13855 select distinct with group by caused server crash
      mysql-test/r/select.result:
        Test case for bug#13855 select distinct with group by caused server crash
      mysql-test/t/select.test:
         Test case for bug#13855 select distinct with group by caused server crash
      df9653ef
    • unknown's avatar
      Move handling of suffix_length from strnxfrm_bin() to filesort to ensure... · 55a21a33
      unknown authored
      Move handling of suffix_length from strnxfrm_bin() to filesort to ensure proper sorting of all kind of binary objects
      field::sort_key() now adds length last for varbinary/blob
      VARBINARY/BLOB is now sorted by filesort so that shorter strings comes before longer ones
      Fixed issues in test cases from last merge
      
      
      
      mysql-test/r/select.result:
        Change column name in test to get GROUP BY to use the alias
      mysql-test/r/type_blob.result:
        Test BLOB and VARCHAR sorting
      mysql-test/t/select.test:
        Change column name in test to get GROUP BY to use the alias
        Drop used tables at start of test
        Don't use table names 'a', 'b' or 'c'
      mysql-test/t/type_blob.test:
        Test BLOB and VARCHAR sorting
      sql/field.cc:
        Store length last in VARBINARY() and BLOB() columns to get shorter strings sorted before longer onces
      sql/field.h:
        Added method 'sort_length()' to allow one to have length bytes last for VARBINARY/BLOB to get these to sort properly
      sql/filesort.cc:
        Use 'sort_length()' instead of 'pack_length()' to get length o...
      55a21a33
    • unknown's avatar
      Fix for bug #3874 (Group by field is not considered) · a0ea514e
      unknown authored
      mysql-test/r/select.result:
        test result fixed
      mysql-test/t/select.test:
        test case added
      sql/sql_select.cc:
        do the same for nullable
      a0ea514e
    • unknown's avatar
      A post-review fix (Bug#12736) · 1c4eab2d
      unknown authored
      1c4eab2d
    • unknown's avatar
      A fix and a test case for Bug#12736 "Server crash during a select". · 9dc7b8c0
      unknown authored
      The bug was in JOIN::join_free which was wrongly determining that
      all joins have been already executed and therefore all used tables
      can be closed.
      
      
      mysql-test/r/subselect_innodb.result:
        - test results fixed (Bug#12736 "Server crash during a select
      mysql-test/t/subselect_innodb.test:
        - a test case for Bug#12736 "Server crash during a select": test
        that ha_index_or_rnd_end and mysql_unlock_tables are called
        for all used tables in proper order.
      sql/item_subselect.cc:
        - implement subselect_union_engine::is_executed
      sql/item_subselect.h:
        - implement Item_subselect::is_evaluated. This function is used
        to check whether we can clean up a non-correlated join of a subquery
        when cleaning up the join of the outer query
      sql/sql_lex.h:
        - declare st_select_lex::cleanup_all_joins
      sql/sql_select.cc:
        - remove an argument from JOIN::join_free, it's now not used
        - reimplement JOIN::join_free to not unlock tables if there
          is a subquery that has not yet been evaluated. Make sure that the
          new implementation calls ha_index_or_rnd_end for every table in
          the join and inner joins, because all table cursors must be closed
          before mysql_unlock_tables.
      sql/sql_select.h:
        - JOIN::join_free signature changed
      sql/sql_union.cc:
        - implement a helper method st_select_lex::cleanup_all_joins, which
          recursively walks over a tree of joins and calls cleanup() for
          each join.
      9dc7b8c0
  4. 12 Oct, 2005 1 commit
    • unknown's avatar
      select.test, sql_select.cc, sql_lex.cc, item.cc: · 5e2ad874
      unknown authored
        Bug #7672 after merge fix
      
      
      sql/item.cc:
        Bug #7672 after merge fix
      sql/sql_lex.cc:
        Bug #7672 after merge fix
      sql/sql_select.cc:
        Bug #7672 after merge fix
      mysql-test/t/select.test:
        Bug #7672 after merge fix
      5e2ad874
  5. 11 Oct, 2005 1 commit
    • unknown's avatar
      Reviewing new pushed code · d6ccd7c7
      unknown authored
      - CHAR() now returns binary string as default
      - CHAR(X*65536+Y*256+Z) is now equal to CHAR(X,Y,Z) independent of the character set for CHAR()
      - Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
        (Some old systems returns ETIME and it's safer to test for both values
         than to try to write a wrapper for each old system)
      - Fixed new introduced bug in NOT BETWEEN X and X
      - Ensure we call commit_by_xid or rollback_by_xid for all engines, even if one engine has failed
      - Use octet2hex() for all conversion of string to hex
      - Simplify and optimize code
      
      
      client/mysqldump.c:
        Simple optimizations of new code
        Indentation fixes
      client/mysqltest.c:
        Removed not needed variable
      include/mysql_com.h:
        Made octec2hex() more usable
      mysql-test/r/ctype_utf8.result:
        CHAR() now returns binary string as default
      mysql-test/r/func_str.result:
        CHAR() now returns binary string as default
      mysql-test/r/range.result:
        Added test to verify new introduced bug in NOT BETWEEN X and X
      mysql-test/r/user_var-binlog.result:
        CHAR() now returns binary string as default
      mysql-test/r/view.result:
        More tests of view rename
      mysql-test/t/ctype_utf8.test:
        CHAR() now returns binary string as default
      mysql-test/t/func_str.test:
        CHAR() now returns binary string as default
      mysql-test/t/range.test:
        Added test to verify new introduced bug in NOT BETWEEN X and X
      mysql-test/t/view.test:
        More tests of view rename
      mysys/mf_keycache.c:
        Indentation changes
        Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
      mysys/my_os2cond.c:
        Fix to MySQL coding style
        Optimized functions
      mysys/thr_lock.c:
        Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
      mysys/thr_mutex.c:
        Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
      server-tools/instance-manager/instance.cc:
        Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
      server-tools/instance-manager/thread_registry.cc:
        Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
      sql/ha_federated.cc:
        Use octet2hex()
      sql/ha_ndbcluster.cc:
        Removed not used variable
      sql/handler.cc:
        Simplify code
        Use *NONE* instead of 'none' for not existing storage engine
        Ensure we call commit_by_xid or rollback_by_xid for all engines, even if one engine has failed
      sql/item.h:
        Remove not needed test for *ref.  (If ref is set, it should never point at 0)
      sql/item_func.cc:
        Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
        Simplify code
        More comments
        Require that last argument to find_and_check_access() is given
        (Made code shorter and faster)
      sql/item_strfunc.cc:
        Changed CHAR() to return result in binary collation
        CHAR(X*65536+Y*256+Z) is now equal to CHAR(X,Y,Z) independent of the character set for CHAR()
        
        Bar will shortly add the following syntax:
        CHAR(.... USING character_set)
        and ensure that
        CONVERT(CHAR(....) USING utf8) cuts not legal utf8 strings
        Use ocet2hex()
      sql/item_strfunc.h:
        CHAR() now returns a binary string
      sql/log_event.cc:
        Use octet2hex()
        Simplify code
      sql/parse_file.cc:
        Indentation fixes
        Use for() instead of while()
      sql/password.c:
        Make octet2hex() more generally usable by returning pointer to end 0
      sql/slave.cc:
        Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
      sql/sql_base.cc:
        Indentation fixes
      sql/sql_insert.cc:
        Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
      sql/sql_manager.cc:
        Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
      sql/sql_parse.cc:
        Don't check thd->db when checking for function privileges
      sql/sql_prepare.cc:
        Fixed wrong merge
      sql/sql_select.cc:
        Fixed new bug for NOT BETWEEN X and X
      sql/sql_show.cc:
        Removed not used variable
      sql/sql_table.cc:
        Indentation fixed
        Removed DBUG_PRINT that is obvious from context
      sql/sql_view.cc:
        Simplify code
      sql/unireg.cc:
        Use octet2hex()
      d6ccd7c7
  6. 10 Oct, 2005 1 commit
    • unknown's avatar
      Fix bug#13327 check_equality() wasn't checking view's fields · 1e13b2de
      unknown authored
      check_equality() finds equalities among field items. It checks input items
      to be Item_fields thus skipping view's fields, which are represented by
      Item_direct_view_ref. Because of this index wasn't applied in all cases
      it can be.
      
      To fix this problem check_equality() now takes real item of
      Item_direct_view_ref, except outer view refs (with depended_from set).
      
      
      sql/sql_select.cc:
        Fix bug #13327 VIEW performs index scan
         For proper views fields handling check_equality() now takes real item from Item_direct_view_ref, with exception of outer view refs.
      mysql-test/r/view.result:
        Test case for bug#13327 VIEW performs index scan
      mysql-test/t/view.test:
        Test case for bug#13327 VIEW performs index scan
      1e13b2de
  7. 09 Oct, 2005 1 commit
    • unknown's avatar
      Fix bug#7672 Unknown column error in order clause · 76235f4f
      unknown authored
      When fixing Item_func_plus in ORDER BY clause field c is searched in all
      opened tables, but because c is an alias it wasn't found there.
      
      This patch adds a flag to select_lex which allows Item_field::fix_fields() 
      to look up in select's item_list to find aliased fields.
      
      
      sql/item.cc:
        Fix bug#7672 Unknown column error in order clause
        When fixing fields in ORDER BY clause allow Item_field::fix_fields() to look up items in select's item list to find aliased fields.
      sql/sql_lex.cc:
         Fix bug#7672 Unknown column error in order clause
      sql/sql_lex.h:
        Fix bug#7672 Unknown column error in order clause
        Added flag to select_lex allowing Item_field::fix_fields to look up items in select's item list.
      sql/sql_select.cc:
        Fix bug#7672 Unknown column error in order clause
      mysql-test/t/select.test:
        Test case for bug#7672 Unknown column error in order clause
      mysql-test/r/select.result:
        Test case for bug#7672 Unknown column error in order clause
      76235f4f
  8. 29 Sep, 2005 1 commit
    • unknown's avatar
      Fix for BUG#13455: Make "ref" optimizer able to make this inference: · 14792b5e
      unknown authored
      "t.key BETWEEN c1 AND c2" and c1 = c2 -> can access table t using "t.key = c1".
      
      
      mysql-test/r/heap.result:
        BUG#13455: updated test results
      mysql-test/r/innodb.result:
        BUG#13455: updated test results
      mysql-test/r/myisam.result:
        BUG#13455: updated test results
      mysql-test/r/range.result:
        Testcase for BUG#13455
      mysql-test/t/range.test:
        Testcase for BUG#13455
      14792b5e
  9. 23 Sep, 2005 1 commit
    • unknown's avatar
      Fix for BUG#13419: In "ref" optimizer, take into account that item=Item_func_in(x,y) is · 970e3930
      unknown authored
      not equivalent to "x=y" when item->negated == TRUE.
      
      
      mysql-test/r/func_in.result:
        Testcase for BUG#13419
      mysql-test/t/func_in.test:
        Testcase for BUG#13419
      sql/sql_select.cc:
        Fix for BUG#13419:
        * Take into account that item=Item_func_in(x,y) is not equivalent to "x=y" when 
          item->negated == TRUE.
        * Removed comment that is no longer true.
      970e3930
  10. 22 Sep, 2005 1 commit
    • unknown's avatar
      Fixed problems found by valgrind · b762e55c
      unknown authored
      Fixed problems in test suite where some test failed
      Fixed access to not initialized memory in federated
      Fixed access to not initialized memory when using BIT fields in internal temporary tables
      
      
      BitKeeper/etc/ignore:
        added libmysqld/sql_cursor.h
      mysql-test/r/information_schema.result:
        Change view names to 'v#' to not cause massive conflict with other tests if test dies in the middlecd
      mysql-test/r/information_schema_inno.result:
        Remove used tables at start
      mysql-test/r/multi_statement.result:
        Remove used tables at start
      mysql-test/r/temp_table.result:
        Change view names to 'v#' to not cause massive conflict with other tests if test dies in the middle
      mysql-test/r/type_bit.result:
        More tests
      mysql-test/t/information_schema.test:
        Change view names to 'v#' to not cause massive conflict with other tests if test dies in the middle
      mysql-test/t/information_schema_inno.test:
        Remove used tables at start
      mysql-test/t/multi_statement.test:
        Remove used tables at start
      mysql-test/t/temp_table.test:
        Change view names to 'v#' to not cause massive conflict with other tests if test dies in the middle
      mysql-test/t/type_bit.test:
        More tests
      mysql-test/valgrind.supp:
        Removed some valgrind warnings that isn't errors
      sql/ha_federated.cc:
        Fixed errors discovered by valgrind:
        - Socket was not initialized
        - share->scheme was deleted while there was still pointer into it from the hash
      sql/item_func.h:
        Remove access to table object from cleanup() as the table object may have been dropped earlier (In case of temporary tables or of close_thread_tables() is run before cleanup())
        This fixed a bug with access to already freed memory
      sql/sql_base.cc:
        Reset variables used by fulltext
      sql/sql_select.cc:
        Fixed various problems with bit fields when used in internal temporary tables.
        Calculate space needed for bit fields correctly (previously we allocated more space than needed for rows in heap/myisam tables)
      b762e55c
  11. 21 Sep, 2005 1 commit
    • unknown's avatar
      A fix and a test case for Bug#6513 "Test Suite: Values inserted by using · d68878c3
      unknown authored
      cursor is interpreted latin1 character and Bug#9819 "Cursors: Mysql Server
      Crash while fetching from table with 5 million records."
      A fix for a possible memory leak when fetching into an SP cursor
      in a long loop.
      The patch uses a common implementation of cursors in the binary protocol and 
      in stored procedures and implements materialized cursors.
      For implementation details, see comments in sql_cursor.cc
      
      
      include/my_sys.h:
        - declaration for multi_alloc_root
      libmysqld/Makefile.am:
        - drop protocol_cursor.cc, add sql_cursor.cc (replaces the old
        implementation of cursors with a new one)
      mysql-test/r/ctype_ujis.result:
        - test results fixed (a test case for Bug#6513)
      mysql-test/r/sp-big.result:
        - test results fixed (a test case for Bug#9819)
      mysql-test/t/ctype_ujis.test:
        Add a test case for Bug#6513 "Test Suite: Values inserted by using cursor is
         interpreted latin1 character"
      mysql-test/t/sp-big.test:
        Add a restricted test case for Bug#9819 "Cursors: Mysql Server Crash
        while fetching from table with 5 million records."
      mysys/my_alloc.c:
        - an implementation of multi_alloc_root; this is largely a copy-paste
          from mulalloc.c, but the function is small and there is no easy way
          to reuse the existing C function.
      sql/Makefile.am:
        - add sql_cursor.h, sql_cursor.cc (a new implementation of stored procedure
        cursors) and drop protocol_cursor.cc (the old one)
      sql/handler.cc:
        - now TABLE object has its mem_root always initialized.
          Adjust the implementation handler::ha_open
      sql/item_subselect.cc:
        - adjust to the changed declaration of st_select_lex_unit::prepare
      sql/protocol.h:
        - drop Protocol_cursor
      sql/sp_head.cc:
        - move juggling with Query_arena::free_list and Item::next to
          sp_eval_func_item, as this is needed in 3 places already.
      sql/sp_head.h:
        - declare a no-op implementation for cleanup_stmt in sp_instr_cpush.
          This method is needed for non-materializing cursors, which are yet not 
          used in stored procedures.
        - declaration for sp_eval_func_item
      sql/sp_rcontext.cc:
        - reimplement sp_cursor using the new implementation of server side cursors.
        - use sp_eval_func_item to assign values of SP variables from the
          row fetched from a cursor. This should fix a possible memory leak in 
          the old implementation of sp_cursor::fetch
      sql/sp_rcontext.h:
        - reimplement sp_cursor using the new implementation of server side cursors.
      sql/sql_class.cc:
        - disable the functionality that closes transient cursors at commit/rollback;
          transient cursors are not used in 5.0, instead we use materialized ones.
          To be enabled in a later version.
      sql/sql_class.h:
        - adjust to the rename Cursor -> Server_side_cursor
        - additional declarations of select_union used in materialized cursors
      sql/sql_derived.cc:
        - reuse bits of tmp table code in UNION, derived tables, and materialized
          cursors
        - cleanup comments
      sql/sql_lex.h:
        - declarations of auxiliary methods used by materialized cursors
        - a cleanup in st_select_lex_unit interface
      sql/sql_list.h:
        - add an array operator new[] to class Sql_alloc
      sql/sql_prepare.cc:
        - split the tight coupling of cursors and prepared statements to reuse 
          the same implementation in stored procedures
        - cleanups of error processing in Prepared_statement::{prepare,execute}
      sql/sql_select.cc:
        - move the implementation of sensitive (non-materializing) cursors to 
          sql_cursor.cc
        - make temporary tables self-contained: the table, its record and fields
          are allocated in TABLE::mem_root. This implementation is not clean
          and resets thd->mem_root several times because of the way create_tmp_table 
          works (many additional things are done inside it).
        - adjust to the changed declaration of st_select_lex_unit::prepare
      sql/sql_select.h:
        - move the declaration of sensitive (non-materializing) cursors to 
          sql_cursor.cc
      sql/sql_union.cc:
        - move pieces of st_select_unit::prepare to select_union and st_table
          methods to be able to reuse code in the implementation of materialized
          cursors
      sql/sql_view.cc:
        - adjust to the changed signature of st_select_lex_unit::prepare
      sql/table.cc:
        - implement auxiliary st_table methods for use with temporary tables
      sql/table.h:
        - add declarations for auxiliary methods of st_table used to work with 
         temporary tables
      tests/mysql_client_test.c:
        - if cursors are materialized, a parallel update of the table used
          in the cursor may go through: update the test.
      sql/sql_cursor.cc:
        New BitKeeper file ``sql/sql_cursor.cc'' -- implementation of server side
        cursors
      sql/sql_cursor.h:
        New BitKeeper file ``sql/sql_cursor.h'' - declarations for
        server side cursors.
      d68878c3
  12. 15 Sep, 2005 1 commit
    • unknown's avatar
      Fix bug#12887 Distinct is not always applied after rollup · 9ca76cbc
      unknown authored
      For queries with GROUP BY and without hidden GROUP BY fields DISTINCT is
      optimized away becuase such queries produce result set without duplicates.
      But ROLLUP can add rows which may be same to some rows and this fact was
      ignored.
      
      Added check so if ROLLUP is present DISTINCT can't be optimized away.
      
      
      sql/sql_select.cc:
        Fix bug #12887 Distinct is not always applied after rollup
      mysql-test/r/olap.result:
        Test case for bug #12887 Distinct is not always applied after rollup
      mysql-test/t/olap.test:
        Test case for bug #12887 Distinct is not always applied after rollup
      9ca76cbc
  13. 12 Sep, 2005 1 commit
    • unknown's avatar
      Review fixes since last pull · d860c0f0
      unknown authored
      Fix for bug #13025; Server crash in filesort because wrong call to handler::position()
      
      
      client/mysqltest.c:
        Code cleanup during review
      mysql-test/r/innodb.result:
        Added test case for bug #13025; Server crash in filesort because wrong call to handler::position()
      mysql-test/t/innodb.test:
        Added test case for bug #13025; Server crash in filesort because wrong call to handler::position()
      sql/filesort.cc:
        Don't call handler::position() if row was not found
      sql/item_cmpfunc.cc:
        Indentation changes
      sql/sql_select.cc:
        Moved variable to outer level
      d860c0f0
  14. 10 Sep, 2005 1 commit
  15. 08 Sep, 2005 1 commit
    • unknown's avatar
      sql_select.cc: · f75e98c0
      unknown authored
        Fixed bug #12885.
        Forced inheritence of the maybe_null flag for the expressions
        containing GROUP BY attributes in selects with ROLLUP.
      olap.test, olap.result:
        Added test case for bug #12885.
      
      
      mysql-test/r/olap.result:
        Added test case for bug #12885.
      mysql-test/t/olap.test:
        Added test case for bug #12885.
      sql/sql_select.cc:
        Fixed bug #12885.
        Forced inheritence of the maybe_null flag for the expressions
        containing GROUP BY attributes in selects with ROLLUP.
      f75e98c0
  16. 07 Sep, 2005 2 commits
    • unknown's avatar
      join_outer.result, opt_range.cc, item_cmpfunc.cc: · 43904698
      unknown authored
        Post merge changes
      sql_yacc.yy:
        Post merge changes
      sql_select.cc:
        Fixed bugs #12101, #12102: wrong calculation of not_null_tables()
         for some expressions (post merge changes).
         The function add_key_fields() is modified. There cannot be NOT before
         BETWEEN/IN anymore. Rather Item_func_between/in objects can represent
         now [NOT]BETWEEN/IN expressions.
      
      
      sql/item_cmpfunc.cc:
        Post merge changes
      sql/opt_range.cc:
        Post merge changes
      sql/sql_select.cc:
        Fixed bugs #12101, #12102: wrong calculation of not_null_tables()
         for some expressions (post merge changes).
         The function add_key_fields() is modified. There cannot be NOT before
         BETWEEN/IN anymore. Rather Item_func_between/in objects can represent
         now [NOT]BETWEEN/IN expressions.
      sql/sql_yacc.yy:
        Post merge changes.
      mysql-test/r/join_outer.result:
        Post merge changes
      43904698
    • unknown's avatar
      Fix for BUG#12941: in create_tmp_field(), if the passed item is an Item_ref, put newly · bebc6647
      unknown authored
      created item into item->result_field, not *(item->ref)->result_field.
      
      
      mysql-test/r/view.result:
        Tescase for BUG#12941
      mysql-test/t/view.test:
        Tescase for BUG#12941
      bebc6647
  17. 02 Sep, 2005 1 commit
    • unknown's avatar
      Rename: · 8857d641
      unknown authored
      - current_arena to stmt_arena: the thread may have more than one
      'current' arenas: one for runtime data, and one for the parsed 
      tree of a statement. Only one of them is active at any moment.
      - set_item_arena -> set_query_arena, because Item_arena was renamed to 
      Query_arena a while ago
      - set_n_backup_item_arena -> set_n_backup_active_arena;
      the active arena is the arena thd->mem_root and thd->free_list
      are currently pointing at.
      - restore_backup_item_arena -> restore_active_arena (with the same
      rationale)
      - change_arena_if_needed -> activate_stmt_arena_if_needed; this
      method sets thd->stmt_arena active if it's not done yet.
      
      
      sql/item.cc:
        Rename.
      sql/item_cmpfunc.cc:
        Rename.
      sql/item_func.cc:
        Rename.
      sql/item_subselect.cc:
        Rename.
      sql/item_subselect.h:
        Remove an unused forward declaration.
      sql/item_sum.h:
        Remove an unused forward declaration.
      sql/mysql_priv.h:
        Remove an unused forward declaration.
      sql/sp.cc:
        Rename.
      sql/sp_head.cc:
        Rename.
      sql/sql_base.cc:
        Rename.
      sql/sql_class.cc:
        Rename.
      sql/sql_class.h:
        Rename.
      sql/sql_lex.cc:
        Rename.
      sql/sql_parse.cc:
        Rename.
      sql/sql_prepare.cc:
        Rename.
      sql/sql_select.cc:
        Rename.
      sql/sql_show.cc:
        Rename.
      sql/sql_union.cc:
        Rename.
      sql/sql_view.cc:
        Rename.
      sql/table.cc:
        Rename.
      8857d641
  18. 01 Sep, 2005 2 commits
    • unknown's avatar
      a fix (bug #10303: Misleading Last_query_cost value). · 385e3043
      unknown authored
      sql/sql_select.cc:
        a fix (bug #10303: Misleading Last_query_cost value).
        reset last_query_cost in the very beginning.
      385e3043
    • unknown's avatar
      Bug10213 mysqldump crashes when dumping VIEWs · b592c8d2
      unknown authored
       - Added testcase for this bug
       - Check if compact view format can be used
       - Clean up mysqld_show_create
      
      
      mysql-test/r/mysqldump.result:
        Updated test result
      mysql-test/t/mysqldump.test:
        Added testcase
      sql/item.cc:
        Check if compact format can be used
      sql/sql_select.cc:
        Check if compact format can be used
      sql/sql_show.cc:
        Cleanup of mysqld_show_create
         -remove extra invocation of view_store_create_info
         -Remove unused vars
         -Remove unused codes
        Check if compact show view format can be used 
          - if user has db of this view as current db
          - if this view only references table inside it's own db
      sql/table.h:
        Add variable for compact_view_format indicator
      b592c8d2
  19. 31 Aug, 2005 1 commit
    • unknown's avatar
      create.test, create.result, sql_select.cc, item.cc: · a664f3df
      unknown authored
        After merge fix for bug #12537
      
      
      sql/item.cc:
        After merge fix for bug #12537
      sql/sql_select.cc:
        After merge fix for bug #12537
      mysql-test/r/create.result:
        After merge fix for bug #12537
      mysql-test/t/create.test:
        After merge fix for bug #12537
      a664f3df
  20. 30 Aug, 2005 1 commit
    • unknown's avatar
      Fix bug #12537 UNION produces longtext instead of varchar · f118f3eb
      unknown authored
      Item::tmp_table_field_from_field_type() and create_tmp_field_from_item()
      was converting string field to blob depending on byte-wise length instead of
      character length, which results in converting valid varchar string with
      length == 86 to longtext.
      
      Made that functions above take into account max width of character when
      converting string fields to blobs.
      
      
      sql/item.cc:
        Fix bug #12537 UNION produces longtext instead of varchar
        Item::tmp_table_field_from_field_type() now taking into account max char width when creating tmp field for string fields.
      sql/sql_select.cc:
        Fix bug #12537 UNION produces longtext instead of varchar
         create_tmp_field_from_item()now taking into account max char width when creating tmp field for string fields.
      mysql-test/r/create.result:
        Test case for bug #12537 UNION produces longtext instead of varchar
      mysql-test/t/create.test:
        Test case for bug #12537 UNION produces longtext instead of varchar
      f118f3eb
  21. 26 Aug, 2005 1 commit
    • unknown's avatar
      fix for bug #11904 (select statement, cursor, grouping wrong results) · 380493f2
      unknown authored
      sql/sql_select.cc:
        reset the group functions and copy the values of the first row before exiting because of
        maximal number of rows has been read for this cursor fetch. the additional variable is needed
        to save code duplication.
      tests/mysql_client_test.c:
        test for bug #11904 (cursor grouping wrong result)
      380493f2
  22. 19 Aug, 2005 1 commit
    • unknown's avatar
      distinct.test, distinct.result: · 87190222
      unknown authored
        Added test cases for bug #12625.
      sql_select.cc:
        Fixed bug #12625.
        Fixed invalid removal of constant items from the DISTINCT
        list in the function create_distinct_group.
      
      
      sql/sql_select.cc:
        Fixed bug #12625.
      mysql-test/r/distinct.result:
        Added test cases for bug #12625.
      mysql-test/t/distinct.test:
        Added test cases for bug #12625.
      87190222
  23. 17 Aug, 2005 1 commit
    • unknown's avatar
      Fix bug #11718 query with function, join and order by returns wrong type. · 572495a5
      unknown authored
      create_tmp_field_from_item() was creating tmp field without regard to
      original field type of Item. This results in wrong type being reported to
      client.
      
      To create_tmp_field_from_item() added special handling for Items with 
      DATE/TIME field types to preserve their type.
      
      
      sql/sql_select.cc:
        Fix bug #11718 query with function, join and order by returns wrong type.
      tests/mysql_client_test.c:
        Test case for bug #11718: query with function, join and order by returns wrong type
      572495a5
  24. 16 Aug, 2005 1 commit
    • unknown's avatar
      sql_select.cc: · 37a8584f
      unknown authored
        Fixed bug #11479.
        The JOIN::reinit method cannot call setup_tables
        after the optimization phase since this function
        removes some optimization settings for joined
        tables. E.g. it resets values of the null_row flag to 0.
      subselect.result, subselect.test:
        Added a test case for bug #11479.
      
      
      mysql-test/t/subselect.test:
        Added a test case for bug #11479.
      mysql-test/r/subselect.result:
        Added a test case for bug #11479.
      sql/sql_select.cc:
        Fixed bug #11479.
        The JOIN::reinit method cannot call setup_tables
        after the optimization phase since this function
        removes some optimization settings for joined
        tables. E.g. it resets values of the null_row flag to 0.
      37a8584f
  25. 13 Aug, 2005 1 commit
    • unknown's avatar
      fixed convertion and handling IN subqueries with rows (BUG#11867) · cc28684b
      unknown authored
      mysql-test/r/subselect.result:
        testst of IN subqueries with row
      mysql-test/t/subselect.test:
        tests of ion subqueries with row
      sql/item.h:
        add method to prevent of removing Item_ref_null_helper from HAVING
      sql/item_cmpfunc.h:
        Prevented removing of Item_test_isnotnull from HAVING
      sql/item_subselect.cc:
        fixed converting row IN subqueries
      sql/sql_select.cc:
        fixed debug print
      cc28684b
  26. 12 Aug, 2005 2 commits
    • unknown's avatar
      Implementation of WL#2486 - · bcc00c1f
      unknown authored
      "Process NATURAL and USING joins according to SQL:2003".
      
      * Some of the main problems fixed by the patch:
        - in "select *" queries the * expanded correctly according to
          ANSI for arbitrary natural/using joins
        - natural/using joins are correctly transformed into JOIN ... ON
          for any number/nesting of the joins.
        - column references are correctly resolved against natural joins
          of any nesting and combined with arbitrary other joins.
      
      * This patch also contains a fix for name resolution of items
        inside the ON condition of JOIN ... ON - in this case items must
        be resolved only against the JOIN operands. To support such
        'local' name resolution, the patch introduces a stack of
        name resolution contexts used at parse time.
      
      NOTICE:
      - This patch is not complete in the sense that
        - there are 2 test cases that still do not pass -
          one in join.test, one in select.test. Both are marked
          with a comment "TODO: WL#2486".
        - it does not include a new test specific for the task
      
      
      mysql-test/include/ps_query.inc:
        Adjusted according to standard NATURAL/USING join semantics.,
      mysql-test/r/bdb.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/derived.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/errors.result:
        The column as a whole cannot be resolved, so different error message.
      mysql-test/r/fulltext.result:
        Adjusted according to standard JOIN ... ON semantics =>
        the ON condition can refer only to the join operands.
      mysql-test/r/fulltext_order_by.result:
        More detailed error message.
      mysql-test/r/innodb.result:
        Adjusted according to standard NATURAL/USING join semantics.
        This test doesn't pass completetly yet!
      mysql-test/r/insert_select.result:
        More detailed error message.
      mysql-test/r/join.result:
        Adjusted according to standard NATURAL/USING join semantics.
        
        NOTICE: there is one test case that still fails, and it is
        commeted out and marked with WL#2486 in the test file.
      mysql-test/r/join_crash.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/join_nested.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/join_outer.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/multi_update.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/null_key.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/order_by.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/ps_2myisam.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/ps_3innodb.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/ps_4heap.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/ps_5merge.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/ps_6bdb.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/ps_7ndb.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/select.result:
        Adjusted according to standard NATURAL/USING join semantics.
        
        NOTICE: there is one failing test case which is commented with
        WL#2486 in the test file.
      mysql-test/r/subselect.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/type_ranges.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/union.result:
        More detailed error message.
      mysql-test/t/bdb.test:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/t/errors.test:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/t/fulltext.test:
        Adjusted according to standard JOIN ... ON semantics =>
        the ON condition can refer only to the join operands.
      mysql-test/t/fulltext_order_by.test:
        More detailed error message.
      mysql-test/t/innodb.test:
        Adjusted according to standard NATURAL/USING join semantics.
        This test doesn't pass completetly yet!
      mysql-test/t/insert_select.test:
        More detailed error message.
      mysql-test/t/join.test:
        Adjusted according to standard NATURAL/USING join semantics.
        
        NOTICE: there is one test case that still fails, and it is
        commeted out and marked with WL#2486 in the test file.
      mysql-test/t/join_crash.test:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/t/join_nested.test:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/t/join_outer.test:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/t/null_key.test:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/t/order_by.test:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/t/select.test:
        Adjusted according to standard NATURAL/USING join semantics.
        
        NOTICE: there is one test case that still fails, and it is
        commeted out and marked with WL#2486 in the test file.
      mysql-test/t/subselect.test:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/t/type_ranges.test:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/t/union.test:
        More detailed error message.
      sql/item.cc:
        - extra parameter to find_field_in_tables
        - find_field_in_real_table renamed to find_field_in_table
        - fixed comments/typos
      sql/item.h:
        - added [first | last]_name_resolution_table to class
          Name_resolution_context
        - commented old code
        - standardized formatting
      sql/mysql_priv.h:
        - refactored the find_field_in_XXX procedures,
        - added a new procedure for natural join table references,
        - renamed the find_field_in_XXX procedures to clearer names
      sql/sp.cc:
        - pass the top-most list of the FROM clause to setup_tables
        - extra parameter to find_field_in_tables
      sql/sql_acl.cc:
        - renamed find_field_in_table => find_field_in_table_ref
        - extra parameter to find_field_in_table_ref
        - commented old code
      sql/sql_base.cc:
        This file contains the core of the implementation of the processing
        of NATURAL/USING joins (WL#2486).
        - added many comments to old code
        - refactored the group of find_field_in_XXX procedures, and added a
          new procedure for natural joins. There is one find_field_in_XXX procedure
          per each type of table reference (stored table, merge view, or natural
          join); one meta-procedure that selects the correct one depeneding on the
          table reference; and one procedure that goes over a list of table
          referenes.
        - NATURAL/USING joins are processed through the procedures:
            mark_common_columns, store_natural_using_join_columns,
            store_top_level_join_columns, setup_natural_join_row_types.
          The entry point to processing NATURAL/USING joins is the
          procedure 'setup_natural_join_row_types'.
        - Replaced the specialized Field_iterator_XXX iterators with one
          generic iterator over the fields of a table reference.
        - Simplified 'insert_fields' and 'setup_conds' due to encapsulation of
          the processing of natural joins in a separate set of procedures.
      sql/sql_class.h:
        - Commented old code.
      sql/sql_delete.cc:
        - Pass the FROM clause to setup_tables.
      sql/sql_help.cc:
        - pass the end name resolution table to find_field_in_tables
        - adjust the list of tables for name resolution
      sql/sql_insert.cc:
        - Changed the code that saves and restores the current context to
          support the list of tables for name resolution -
          context->first_name_resolution_table, and
          table_list->next_name_resolution_table.
          Needed to support an ugly trick to resolve inserted columns only in
          the first table.
        - Added Name_resolution_context::[first | last]_name_resolution_table.
        - Commented old code
      sql/sql_lex.cc:
        - set select_lex.parent_lex correctly
        - set correct state of the current name resolution context
      sql/sql_lex.h:
        - Added a stack of name resolution contexts to support local
          contexts for JOIN ... ON conditions.
        - Commented old code.
      sql/sql_load.cc:
        - Pass the FROM clause to setup_tables.
      sql/sql_olap.cc:
        - Pass the FROM clause to setup_tables.
      sql/sql_parse.cc:
        - correctly set SELECT_LEX::parent_lex
        - set the first table of the current name resoltion context
        - added support for NATURAL/USING joins
        - commented old code
      sql/sql_select.cc:
        - Pass the FROM clause to setup_tables.
        - Pass the end table to find_field_in_tables
        - Improved comments
      sql/sql_show.cc:
        - Set SELECT_LEX::parent_lex.
      sql/sql_update.cc:
        - Pass the FROM clause to setup_tables.
      sql/sql_yacc.yy:
        - Added support for a stack of name resolution contexts needed to
          implement name resolution for JOIN ... ON. A context is pushed
          for each new JOIN ... ON, and popped afterwards.
        - Added support for NATURAL/USING joins.
      sql/table.cc:
        - Added new class Natural_join_column to hide the heterogeneous
          representation of column references for stored tables and for
          views.
        - Added a new list TABLE_LIST::next_name_resolution_table to
          support name resolution with NATURAL/USING joins. Also added
          other members to TABLE_LIST to support NATURAL/USING joins.
        - Added a generic iterator over the fields of table references
          of various types - class Field_iterator_table_ref
      sql/table.h:
        - Added new class Natural_join_column to hide the heterogeneous
          representation of column references for stored tables and for
          views.
        - Added a new list TABLE_LIST::next_name_resolution_table to
          support name resolution with NATURAL/USING joins. Also added
          other members to TABLE_LIST to support NATURAL/USING joins.
        - Added a generic iterator over the fields of table references
          of various types - class Field_iterator_table_ref
      tests/mysql_client_test.c:
        Adjusted according to standard NATURAL JOIN syntax.
      bcc00c1f
    • unknown's avatar
      Fixes during review of new pushed code · efcca089
      unknown authored
      Removed duplicate usage of TMP_TABLE_FORCE_MYISAM by making 'options' longlong
      
      
      sql/ha_berkeley.cc:
        Removed not used variable (and options)
      sql/ha_berkeley.h:
        Removed not used argument
      sql/ha_ndbcluster.cc:
        Remove compiler warning
      sql/init.cc:
        Simplify code
      sql/item_sum.cc:
        Removed duplicate usage of TMP_TABLE_FORCE_MYISAM by making 'options' longlong
      sql/mysql_priv.h:
        Removed duplicate usage of TMP_TABLE_FORCE_MYISAM by making 'options' longlong
      sql/mysqld.cc:
        Removed duplicate usage of TMP_TABLE_FORCE_MYISAM by making 'options' longlong
      sql/sql_class.h:
        Removed duplicate usage of TMP_TABLE_FORCE_MYISAM by making 'options' longlong
      sql/sql_delete.cc:
        Removed duplicate usage of TMP_TABLE_FORCE_MYISAM by making 'options' longlong
      sql/sql_derived.cc:
        Removed duplicate usage of TMP_TABLE_FORCE_MYISAM by making 'options' longlong
      sql/sql_lex.h:
        Removed duplicate usage of TMP_TABLE_FORCE_MYISAM by making 'options' longlong
      sql/sql_parse.cc:
        Indenta...
      efcca089
  27. 10 Aug, 2005 1 commit
    • unknown's avatar
      A fix for Bug#11901 "mysql_stmt_attr_set CURSOR_TYPE_READ_ONLY join in · 33e8f20c
      unknown authored
      subqry order by server crash": failing DBUG_ASSERT(curr_join == this)
      when opening a cursor.
      Ensure that for top-level join curr_join == join (always), 
      and thus fix the failing assert.
      curr_join is a hack to ensure that uncacheable subqueries can be
      re-evaluated safely, and should be never different from main join
      in case of top-level join.
      
      
      sql/sql_select.cc:
        - utilize tmp_join only if we evaluate an uncacheable subquery.
      sql/sql_select.h:
        - implement JOIN::is_top_level_join()
      tests/mysql_client_test.c:
        A test case for Bug#11901 "mysql_stmt_attr_set CURSOR_TYPE_READ_ONLY
         join in subqry order by server crash"
      33e8f20c
  28. 08 Aug, 2005 2 commits
    • unknown's avatar
      Review of new pushed code · 62011d16
      unknown authored
      - Fixed some error condtion when handling dates with 'T'
      - Added extra test for bug #11867 (Wrong result with "... WHERE ROW( a, b ) IN ( SELECT DISTINCT a, b WHERE ...)" to show it's not yet fixed
      - Safety fixes and cleanups
      
      
      mysql-test/r/subselect.result:
        Added extra test case to test case for bug #11867
        (Result shows that current code is not yet right and needs to be fixed)
      mysql-test/r/type_datetime.result:
        More tests for dates of type CCYYMMDDTHHMMSS
      mysql-test/t/subselect.test:
        Added extra test case to test case for bug #11867
      mysql-test/t/type_datetime.test:
        More tests for dates of type CCYYMMDDTHHMMSS
      sql-common/my_time.c:
        Fixed handling of dates of type CCYYMMDDTHHMMSS
        (Old code couldn't handle 2003-0304 or 2003-0003-02)
      sql/slave.cc:
        Indentation cleanup
      sql/sql_parse.cc:
        Added test of return value of get_system_var()
      sql/sql_select.cc:
        Removed unnecessary call to field->table->maybe_null
      sql/sql_union.cc:
        Indentation fixes
      62011d16
    • unknown's avatar
      A fix and a test case for Bug#11909 "mysql_stmt_attr_set · cccf551b
      unknown authored
      CURSOR_TYPE_READ_ONLY nested queries corrupt result"
      
      
      sql/sql_prepare.cc:
        If there is a cursor, use its protocol for fetch: 
        Protocol instances have a state and thd->protocol_prep can't
        be used for multiple cursors.
      sql/sql_select.cc:
        - init Cursor::protocol
      sql/sql_select.h:
        - add Cursor::protocol
      tests/mysql_client_test.c:
        A test case for Bug#11909 "mysql_stmt_attr_set CURSOR_TYPE_READ_ONLY
         nested queries corrupt result"
      cccf551b
  29. 07 Aug, 2005 1 commit
    • unknown's avatar
      BUG#11869:part 2: post-review fixes: merging into 5.0 · 8b6185c3
      unknown authored
      We're out of bits in st_select_lex->options so make TMP_TABLE_FORCE_MYISAM ==
      OPTION_FOUND_COMMENT (the latter is not used by create_tmp_table).
      
      
      mysql-test/r/create.result:
        Updated the test result
      mysql-test/r/fulltext_order_by.result:
        Drop all tables this test uses
      mysql-test/t/fulltext_order_by.test:
        Drop all tables this test uses
      8b6185c3
  30. 06 Aug, 2005 1 commit
    • unknown's avatar
      BUG#11869 (cont'd, eliminating "table type doesn't support FULLTEXT" error): · 432ea422
      unknown authored
      When creating temporary table for UNION, pass TMP_TABLE_FORCE_MYISAM flag to 
      create_tmp_table if we will be using fulltext function(s) when reading from the 
      temp. table.
      
      
      mysql-test/r/fulltext_order_by.result:
        Testcase for BUG#11869 (cont'd, eliminating "table type doesn't support FULLTEXT" error)
      mysql-test/t/fulltext_order_by.test:
        Testcase for BUG#11869 (cont'd, eliminating "table type doesn't support FULLTEXT" error)
      sql/mysql_priv.h:
        BUG#11869 (cont'd, eliminating "table type doesn't support FULLTEXT" error):
        Added TMP_TABLE_FORCE_MYISAM flag
      sql/sql_select.cc:
        BUG#11869 (cont'd, eliminating "table type doesn't support FULLTEXT" error):
        In create_tmp_table(), honor the TMP_TABLE_FORCE_MYISAM flag
      432ea422
  31. 02 Aug, 2005 1 commit
    • unknown's avatar
      sql_select.cc, sql_class.h: · 89b8763d
      unknown authored
        Reversed the changes to fix bug #12095 after review
        done by SergeyG. Applied a fix suggested by him.
      
      
      sql/sql_class.h:
        Reversed the changes to fix bug #12095 after review
        done by SergeyG. Applied a fix suggested by him.
      sql/sql_select.cc:
        Reversed the changes to fix bug #12095 after review
        done by SergeyG. Applied a fix suggested by him.
      89b8763d