An error occurred fetching the project authors.
  1. 18 Jul, 2005 1 commit
  2. 14 Jul, 2005 1 commit
    • unknown's avatar
      Implement MarkM optimization request to avoid redundnat packet exchange · de290880
      unknown authored
      in cursors.
      
      
      libmysql/libmysql.c:
        - reset_stmt_handle(): don't reset the server side just because we have 
          an open cursor: the server will close the cursor automatically if 
          needed
      sql/sql_prepare.cc:
        - implement Prepared_statement::close_cursor,
        - implicitly close an open cursor in mysql_stmt_execute instead of 
          issuing an error (to reduce the need to explicitly close cursors
          and save network bandwidth).
        - cleanup
      sql/sql_select.cc:
        Remove a destructor: cursor destruction can not be done by simply
        calling a destructor, because of cross-references between cursor
        and statement memory.
      sql/sql_select.h:
        - add an empty Cursor destructor
      tests/mysql_client_test.c:
        - remove a test for dropped functionality
      de290880
  3. 01 Jul, 2005 1 commit
    • unknown's avatar
      A fix and a test case for Bug#11172 "mysql_stmt_attr_set · 12cf1bec
      unknown authored
      CURSOR_TYPE_READ_ONLY date/datetime filter server crash".
      The fix adds support for Item_change_list in cursors (proper rollback
      of the modified item tree). 
      
      
      sql/sql_class.cc:
        No need to call fatal_error() twice.
      sql/sql_prepare.cc:
        - implement proper cleanup of the prepared statement in mysql_stmt_reset
          if there is a cursor.
        - take into account thd->change_list when fetching data through a
          cursor.
      sql/sql_select.cc:
        - take into account thd->change_list when fetching data from a cursor:
          grab it when we open a cursor, and rollback the changes to the parsed
          tree when we close it.
      sql/sql_select.h:
        - Cursor::change_list added
      tests/mysql_client_test.c:
        - a test case for Bug#11172 "mysql_stmt_attr_set CURSOR_TYPE_READ_ONLY date/datetime
         filter server crash"
      12cf1bec
  4. 24 Jun, 2005 1 commit
    • unknown's avatar
      - don't call JOIN::join_free(1) twice for every join in JOIN::cleanup(). · d662c283
      unknown authored
      The reason it happened was that both, JOIN::cleanup() and JOIN::join_free(),
      went over all nested joins and called cleanup/join_free for them.
      For that:
      - split recursive and non-recursive parts of JOIN::cleanup() and
      JOIN::join_free()
      - rename JOIN::cleanup to JOIN::destroy, as it actually destroys its
        argument
      - move the recursive part of JOIN::cleanup to st_select_lex::cleanup
      - move the non-recursive part of JOIN::join_free to the introduced
        method JOIN::cleanup().
      
      
      sql/sql_lex.h:
        Add st_select_lex::cleanup, a counterpart of st_select_lex_unit::cleanup()
      sql/sql_select.cc:
        - remove two unused arguments from return_zero_rows
        - split JOIN::join_free and JOIN::cleanup to recursive and non-recursive
          parts.
        - note, the assert in JOIN::join_free _does_ fail in having.test.
          We have two options: a) propagate `full' flag to the nested joins.
          We did it before, and this patch didn't change it. If so, we 
          can end up cleaning up an uncacheable JOIN (that is, the join that
          we might need again).
          b) evaluate own 'full' flag on every level. In this case, we might
          end up with tables freed in mysql_unlock_read_tables, but not
          cleaned up properly, and this may be even worse. The test suite
          passes with both approaches, but not with the assert.
      sql/sql_select.h:
        - declarations for JOIN::cleanup() and JOIN::join_free()
      sql/sql_union.cc:
        Add st_select_lex::cleanup, a counterpart of st_select_lex_unit::cleanup():
        move the recursive part of JOIN::cleanup to it.
      d662c283
  5. 23 Jun, 2005 1 commit
    • unknown's avatar
      func_str.result, func_str.test: · d4303ec4
      unknown authored
        Added a test case for bug #10124.
      sql_select.h, item_subselect.cc, sql_select.cc:
        Fixed bug #10124.
        The copy method of the store_key classes can return
        STORE_KEY_OK=0, STORE_KEY_FATAL=1, STORE_KEY_CONV=2 now.
      field.cc:
        Fixed bug #10124.
        When ussuing a warning the store methods return 2 instead of 1 now.
      
      
      sql/field.cc:
        Fixed bug #10124.
        When ussuing a warning the store methods return 2 instead of 1 now.
      sql/sql_select.cc:
        Fixed bug #10124.
        The copy method of the store_key classes can return
        STORE_KEY_OK=0, STORE_KEY_FATAL=1, STORE_KEY_CONV=2 now.
      sql/item_subselect.cc:
        Fixed bug #10124.
        The copy method of the store_key classes can return
        STORE_KEY_OK=0, STORE_KEY_FATAL=1, STORE_KEY_CONV=2 now.
      sql/sql_select.h:
        Fixed bug #10124.
        The copy method of the store_key classes can return
        STORE_KEY_OK=0, STORE_KEY_FATAL=1, STORE_KEY_CONV=2 now.
      mysql-test/t/func_str.test:
        Added a test case for bug #10124.
      mysql-test/r/func_str.result:
        Added a test case for bug #10124.
      d4303ec4
  6. 22 Jun, 2005 1 commit
    • unknown's avatar
      Adjust to the changed Query_arena constructor: · 8d256fa9
      unknown authored
      main_mem_root is moved out of class Query_arena.
      
      
      sql/sp_head.cc:
        Adjust to the changed Query_arena constructor. 
        main_mem_root is moved out of class Query_arena.
      sql/sp_head.h:
        main_mem_root is moved out of class Query_arena: add it to class sp_head.
      sql/sql_class.cc:
        main_mem_root is moved out of class Query_arena: remove
        constructors no longer relevant, remove dead code.
      sql/sql_class.h:
        main_mem_root is moved out of class Query_arena.
      sql/sql_prepare.cc:
        It's better to not use main_mem_root anywhere: logically, it's not
        a public member (can't fix sp_head::make_field and Item_subselect::exec
        to make it protected)
      sql/sql_select.cc:
        New Cursor constructor, which avoids unneeded memory allocation
        when initializign main_mem_root.
      sql/sql_select.h:
        main_mem_root is moved out of class Query_arena.
      8d256fa9
  7. 15 Jun, 2005 1 commit
    • unknown's avatar
      renamed: · bb7b0c05
      unknown authored
        Item_buff -> Cached_item
        Item_arena -> Query_arena
        TEST_ASSERT -> YYERROR_UNLESS
      
      
      sql/item.h:
        renamed:
          Item_buff -> Cached_item
      sql/item_buff.cc:
        renamed:
          Item_buff -> Cached_item
      sql/item_func.cc:
        renamed:
          Item_arena -> Query_arena
      sql/item_subselect.cc:
        renamed:
          Item_arena -> Query_arena
      sql/sp_head.cc:
        renamed:
          Item_arena -> Query_arena
      sql/sp_head.h:
        renamed:
          Item_arena -> Query_arena
      sql/sql_base.cc:
        renamed:
          Item_arena -> Query_arena
      sql/sql_class.cc:
        renamed:
          Item_arena -> Query_arena
      sql/sql_class.h:
        renamed:
          Item_arena -> Query_arena
      sql/sql_lex.cc:
        renamed:
          Item_arena -> Query_arena
      sql/sql_prepare.cc:
        renamed:
          Item_arena -> Query_arena
      sql/sql_select.cc:
        renamed:
          Item_arena -> Query_arena
      sql/sql_select.h:
        renamed:
          Item_buff -> Cached_item
          Item_arena -> Query_arena
      sql/sql_union.cc:
        renamed:
          Item_arena -> Query_arena
      sql/sql_view.cc:
        renamed:
          Item_arena -> Query_arena
      sql/sql_yacc.yy:
        renamed:
          TEST_ASSERT -> YYERROR_UNLESS
      sql/table.cc:
        renamed:
          Item_arena -> Query_arena
      bb7b0c05
  8. 09 Jun, 2005 1 commit
    • unknown's avatar
      A fix and test case for Bug#10729 "mysql_stmt_attr_set · 591e542e
      unknown authored
      CURSOR_TYPE_READ_ONLY". The bug was that we (me) don't perform proper
      cleanups of the prepared statement when done fetching from a cursor.
      Another patch.
      
      
      sql/mysql_priv.h:
        Rename reset_stmt_for_execute to init_stmt_before_use (to correspond to
        cleanup_stmt_and_thd_after_use).
      sql/sp_head.cc:
        Rename.
      sql/sql_prepare.cc:
        Move common cleanup code to a cleanup function, call it when we close
        a cursor.
      sql/sql_select.cc:
        Cleanup.
      sql/sql_select.h:
        No need for init_thd, this code has been inlined in Cursor::open.
      tests/mysql_client_test.c:
        Add a test case for Bug#10729 "mysql_stmt_attr_set CURSOR_TYPE_READ_ONLY"
        (problem reusing a prepared statemnt if there was a cursor)
      591e542e
  9. 12 May, 2005 1 commit
    • unknown's avatar
      A fix and test case for Bug#9478 "mysql_stmt_attr_set mysql_stmt_execute" · 459f384b
      unknown authored
      (crash on attempt to re-execute a statement with an open cursor) + 
      post-review fixes.
      
      
      include/errmsg.h:
        Add a special error message when we attempt to mysql_stmt_fetch
        from a statement which has no result set.
      libmysql/errmsg.c:
        Error message text for CR_NO_RESULT_SET
      libmysql/libmysql.c:
        Move the code which frees result sets on client and closes the cursor
        on server, resets long data state on client and server.
        This makes one function out of two (mysql_stmt_reset and
        mysql_stmt_free_result), thus aggregating all related reset work
        in one place.
      sql-common/client.c:
        Fix one place where we flushed the pending result set of a statement,
        but didn't set unbuffered_fetch_cancelled flag.
      sql/share/errmsg.txt:
        Fix format of ER_UNKNOWN_STMT_HANDLER error message (needs to
        be fixed separately in 4.1). Add two new error messages 
        for the case when we fetch from when there is no cursor
        and for the case when we attempt to execute a statement while there is
        a cursor.
      sql/sql_prepare.cc:
        Return error when we fetch while there is no open cursor and
        when we call execute while there is a pending cursor.
        Fix mysql_stmt_reset to close the open cursor if there is any.
      sql/sql_select.cc:
        free_items and free_root moved to Cursor::close().
      sql/sql_select.h:
        A comment added.
      tests/mysql_client_test.c:
        A test case for Bug#9478, test the case of mysql_stmt_reset
        called for client-side cached result set and for the case with open cursor.
        All strcpy replaced with strmov (review request).
      459f384b
  10. 04 May, 2005 1 commit
    • unknown's avatar
      BUG#10241 cygwin port: invalid pragma interface directives · 2dc5e271
      unknown authored
       - Introduce ifdefs so we can control when to use #pragma interface on cygwin
      
      
      include/my_global.h:
        Turn on use of #pragma implementation and #pragma interface if compiled with GCC and platform != Cygwin
      include/raid.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/examples/ha_archive.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/examples/ha_example.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/field.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/ha_berkeley.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/ha_blackhole.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/ha_heap.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/ha_innodb.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/ha_isam.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/ha_isammrg.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/ha_myisam.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/ha_myisammrg.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/ha_ndbcluster.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/handler.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/item.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/item_cmpfunc.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/item_func.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/item_geofunc.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/item_strfunc.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/item_subselect.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/item_sum.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/item_timefunc.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/opt_range.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/procedure.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/protocol.h:
        replace __GNUC__ with USE_PRAGMA_IMPLEMENTATION
      sql/set_var.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/sql_class.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/sql_list.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/sql_select.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/sql_string.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/sql_udf.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      sql/tztime.h:
        replace __GNUC__ with USE_PRAGMA_INTERFACE
      2dc5e271
  11. 30 Apr, 2005 1 commit
    • unknown's avatar
      A fix and a test case for Bug#9520 "SELECT DISTINCT crashes server · d20d0013
      unknown authored
      with cursor". The patch refactors do_select/sub_select
      functions, which implement the nested loop algorithm, and reuses them to
      fetch rows for cursors as well.
      Pushing with view.test failing (--ps-protocol).
      
      
      sql/sql_prepare.cc:
         Cursor::fetch() now returns void
      sql/sql_select.cc:
        A fix for Bug#9520 "SELECT DISTINCT crashes server with cursor":
        * rename sub_select returns codes to be able to track down what's going
          on in which case.
        * move record processing and outer join record processing to a separate
          function, out of sub_select read-record loop.
        * use generalized sub_select() nested loop function for
        cursors instead of own loop implementation used in Cursor::fetch() before
      sql/sql_select.h:
        Replace all return values of sub_select family with enum.
        Add JOIN::resume_nested_loop flag to indicate we are restarting the nested loop
        for execution of next chunk of cursor's rows.
      tests/mysql_client_test.c:
        A test case for Bug#9520 "SELECT DISTINCT crashes server with cursor"
      d20d0013
  12. 18 Apr, 2005 1 commit
    • unknown's avatar
      Fix for BUG#9103: · 11493b88
      unknown authored
      Don't produce data truncation warnings from within cp_buffer_from_ref(). This function
      is only used to make index search tuples and data truncation that occurs here has no
      relation with truncated values being saved into tables.
      
      
      mysql-test/r/update.result:
        Testcase for BUG#9103
      mysql-test/t/update.test:
        Testcase for BUG#9103
      sql/opt_range.cc:
        cp_buffer_from_ref now has THD* parameter
      sql/sql_select.h:
        cp_buffer_from_ref now has THD* parameter
      11493b88
  13. 04 Apr, 2005 1 commit
    • unknown's avatar
      Fix for BUG#8877: Implementation of · b17a06e8
      unknown authored
      "Early NULL-values filtering for ref access" (attempt2+post-review fixes)
      1. update_ref_and_keys() accumulates info about null-rejecting
      predicates in in KEY_FIELD::null_rejecting, add_key_part saves
      these to KEYUSE.
      2. create_ref_for_key copies them to TABLE_REF.
      3. add_not_null_conds adds "x IS NOT NULL" to join_tab->select_cond of
      appropiate JOIN_TAB members.
      
      Includes code cleanups: 
      * add_key_field() params: s/COND/Item_func/ (as only Item_funcs are
      passed to it)
      * add_key_fields() params: JOIN_TAB *stat removed (wasn't used)
      
      
      sql/sql_select.cc:
        Fix for BUG#8877: Implementation of 
        "Early NULL-values filtering for ref access"
        1. update_ref_and_keys() accumulates info about null-rejecting
        predicates in in KEY_FIELD::null_rejecting, add_key_part saves
        these to KEYUSE.
        2. create_ref_for_key copies them to TABLE_REF.
        3. add_not_null_conds adds "x IS NOT NULL" to join_tab->select_cond
        of appropiate JOIN_TAB members.
        
        Includes code cleanups: 
        * add_key_field() params: s/COND/Item_func/ (as only Item_funcs are
        passed to it)
        * add_key_fields() params: JOIN_TAB *stat removed (wasn't used)
      sql/sql_select.h:
        Fix for BUG#8877: Implementation of 
        "Early NULL-values filtering for ref access" (attempt2)
      b17a06e8
  14. 30 Mar, 2005 1 commit
  15. 24 Mar, 2005 1 commit
    • unknown's avatar
      Fixes and test cases for Bug#8880 "Commands out of sync error with cursors" · 3551c90a
      unknown authored
       and Bug#9159 "Server crash during mysql_stmt_close".
      The patch adds support for single-row result sets in cursors.
      
      
      libmysql/libmysql.c:
        If we wanted a cursor, and the server wasn't able to create one,
        buffer all rows on client. Currently this is possible only for
        single row result sets and some SHOW commands.
      sql/sql_prepare.cc:
        Properly free resources if there was a request to open a cursor which
        wasn't fullfilled.
        Give error on attempt to open a cursor for a statement not returning
        a result set.
      sql/sql_select.h:
        Initialize Item_arena of Cursor object. A case when a cursor object
        is created but not used is possible with single-row result sets.
      tests/mysql_client_test.c:
        Test cases for Bug#8880 and Bug#9159
      3551c90a
  16. 19 Mar, 2005 1 commit
    • unknown's avatar
      Eliminate warnings noticed by VC7. This includes fixing my_mmap() on · 22234f31
      unknown authored
      Windows to call CreateFileMapping() with correct arguments, and
      propogating the introduction of query_id_t to everywhere query ids are
      passed around. (Bug #8826)
      
      
      libmysql/libmysql.c:
        Make implicit cast explicit
      myisam/mi_open.c:
        Make cast of value to smaller data size explicit
      myisam/mi_packrec.c:
        Cast file size (my_off_t) to size_t for mmap
      mysys/my_mmap.c:
        Fix Windows version of my_mmap() to use the right parameters
        for call to CreateFileMapping()
      sql/field.cc:
        Use temporary value of correct type
      sql/field.h:
        Use query_id_t for query_id value
      sql/ha_berkeley.cc:
        Fix flag check
      sql/ha_innodb.h:
        Use query_id_t for query_id value
      sql/handler.cc:
        Explain opt_using_transactions calculation, and add cast
      sql/handler.h:
        Fix forward declaration of COND
      sql/item.cc:
        Fix val_bool() tests of val_int() to avoid implicit cast
      sql/item_cmpfunc.cc:
        Fix typo in switch label
      sql/item_func.cc:
        Make implicit cast explicit
      sql/item_strfunc.cc:
        Now that query_id is a query_id_t, need to cast it to a ulong here
      sql/item_subselect.cc:
        Fix test of value
      sql/log.cc:
        Cast my_off_t used for file size to size_t for memory allocation
        Also cast my_off_t when using it to calculate the number of pages for TC log
        Cast total_ha_2pc to uchar when saving it
      sql/mysql_priv.h:
        Move up query_id definition so it can be used more widely
      sql/opt_range.cc:
        Add unused delete operator to prevent compiler warning
      sql/set_var.cc:
        Cast value for max_user_connections
      sql/sql_cache.cc:
        Remove unused label
      sql/sql_class.h:
        Fix query id values to be of type query_id_t
      sql/sql_db.cc:
        Move variable only used inside #ifdef within the #ifdef
      sql/sql_help.cc:
        Remove unused label
      sql/sql_insert.cc:
        Use query_id_t for query id values
      sql/sql_lex.h:
        Add unused delete operator to prevent compiler warning
      sql/sql_select.cc:
        Remove unused variable
        Make cast of value explicit
      sql/sql_select.h:
        Use query_id_t for query id values
      sql/sql_table.cc:
        Make comparison to function pointer explicit
      sql/sql_update.cc:
        Use query_id_t for query id values
      sql/table.h:
        Use query_id_t for query id values
      strings/ctype-simple.c:
        Add cast of long value to (char) in expression
      strings/ctype-ucs2.c:
        Add cast of long value to (char) in expression
      strings/ctype-utf8.c:
        Make cast to smaller size explicit
      22234f31
  17. 16 Mar, 2005 1 commit
    • unknown's avatar
      olap.result, olap.test: · 870ea169
      unknown authored
        Added a test case for bug #8616.
      item.h:
        Fixed bug #8616.
        Added class Item_null_result used in rollup processing.
      sql_select.h, sql_select.cc:
        Fixed bug #8616.
        Added JOIN::rollup_write_data to cover rollup queries
        with DISTINCT. Modified other rollup methods.
      
      
      sql/sql_select.cc:
        Fixed bug #8616.
        Added JOIN::rollup_write_data to cover rollup queries
        with DISTINCT. Modified other rollup methods.
      sql/sql_select.h:
        Fixed bug #8616.
        Added JOIN::rollup_write_data to cover rollup queries
        with DISTINCT. Modified other rollup methods.
      sql/item.h:
        Fixed bug #8616.
        Added class Item_null_result used in rollup processing.
      mysql-test/t/olap.test:
        Added a test case for bug #8616.
      mysql-test/r/olap.result:
        Added a test case for bug #8616.
      870ea169
  18. 13 Mar, 2005 1 commit
    • unknown's avatar
      WL#926 "SUM(DISTINCT) and AVG(DISTINCT)": improvement of SUM(DISTINCT) and · 56012000
      unknown authored
       implementation of AVG(DISTINCT) which utilizes the approach with Fields.
      The patch implemented in October is portede to the up-to-date tree 
      containing DECIMAL type.
      Tests for AVG(DISTINCT) (although there is not much to test provided
      that SUM(DISTINCT) works), cleanups for COUNT(DISTINCT) and GROUP_CONCAT()
      will follow in another changeset.
      
      
      sql/field.cc:
        A handy way to init create_field used for use with virtual tmp tables.
        Feel free to extend it for your own needs.
      sql/field.h:
        Declaration for create_field::init_for_tmp_table()
      sql/item.cc:
        Implementation for a framework used to easily handle different result
        types of SQL expressions. Instead of having instances of each possible 
        result type (integer, decimal, double) in every item, variables
        of all used types are moved to struct Hybrid_type.
        Hybrid_type can change its dynamic type in runtime, and become,
        for instance, DECIMAL from INTEGER.
        All type-specific Item operations are moved to the class hierarchy
        Hybrid_type_traits. Item::decimals and Item::max_length can
        be moved to Hybrid_type as well.
      sql/item.h:
        Declaration for Hybrid_type framework. See also comments for item.cc
        in this changeset.
      sql/item_sum.cc:
        Rewritten implementation for Item_sum_sum_distinct (SUM(DISTINCT))
        and added implementation for Item_sum_avg_distinct (AVG(DISTINCT)).
        The classes utilize Hybrid_type class hierarchy and Fields to
        convert SUM/AVG arguments to binary representation and store in a RB-tree.
      sql/item_sum.h:
        Declarations for Item_sum_distinct (the new intermediate class used
        for SUM and AVG distinct), Item_sum_sum_distinct, Item_sum_avg_distinct.
      sql/sql_select.cc:
        Implementatio of create_virtual_tmp_table().
      sql/sql_select.h:
        Declaration for create_virtual_tmp_table.
      sql/sql_yacc.yy:
        Grammar support for Item_sum_avg_distinct.
      56012000
  19. 01 Mar, 2005 1 commit
    • unknown's avatar
      Fix for Bug#5615 and merge from 4.1 · da3cf29b
      unknown authored
      
      mysql-test/r/func_group.result:
        Added some tests and fix for Bug#5615.
      mysql-test/r/show_check.result:
        Fix for Bug#5615.
      mysql-test/t/func_group.test:
        Added some tests.
      sql/item_sum.cc:
        Fix for Bug#5615.
      sql/item_sum.h:
        Fix for Bug#5615.
      sql/sql_select.cc:
        Fix for Bug#5615.
      sql/sql_select.h:
        Fix for Bug#5615.
      da3cf29b
  20. 19 Dec, 2004 1 commit
    • unknown's avatar
      Merge with global tree · 50ceaaca
      unknown authored
      Fixed some found bugs in BIT fields
      Added more test cases for BIT fields and varchar
      
      
      include/my_base.h:
        Merge
        Added HA_BIT_PART for easier test in key.cc
      innobase/os/os0proc.c:
        Fixed typo
      myisam/mi_dbug.c:
        Add printing of BIT types when debugging
      mysql-test/r/show_check.result:
        Set 'Avg_row_length' to # as this value is different between 32 and 64 bit machines
      mysql-test/r/type_bit.result:
        More tests
      mysql-test/r/type_varchar.result:
        More tests
      mysql-test/t/show_check.test:
        Set 'Avg_row_length' to # as this value is different between 32 and 64 bit machines
      mysql-test/t/type_bit.test:
        More tests
      mysql-test/t/type_varchar.test:
        More tests
      sql/field.cc:
        Added Field::val_int_as_str() to get better logging of bit fields
        Merged new_key_field with move_field() to fix some problems with bit fields
        Fixed some bugs with bit fields
      sql/field.h:
        Added Field::val_int_as_str() to get better logging of bit fields
        Merged new_key_field with move_field() to fix some problems with bit fields
        Fixed some bugs with bit fields
      sql/ha_myisam.cc:
        Fixed problem with unintialized memory (not critical)
      sql/key.cc:
        Fix so that 'key_cmp_if_same' works with bit fields.
      sql/opt_range.cc:
        Move declarations first in function
        Nice printing of bit fields in debug log
      sql/sql_prepare.cc:
        Fixed old merge error (not critical)
      sql/sql_select.cc:
        Use new interface to new_key_field
      sql/sql_select.h:
        Use new interface to new_key_fields()
        This fixes a bug with BIT fields where the upper bit of the data was not stored in the key buffer
      sql/structs.h:
        Extend key_part_flag to be able to add HA_BIT_PART to it
      sql/table.cc:
        Mark BIT key parts with HA_BIT_PART to make test in key.cc simpler
      50ceaaca
  21. 18 Dec, 2004 1 commit
    • unknown's avatar
      Add 0x before pointers (to help with debugging) · d63ef7e9
      unknown authored
      Add support for VARCHAR with 1 or 2 length bytes
      Enable VARCHAR packing in MyISAM files (previous patch didn't pack data properly)
      Give error if we got problems in temporary tables during a SELECT
      Don't use new table generated by ALTER TABLE if index generation fails
      Fixed wrong call by range_end() (Could cause an ASSERT in debug mode)
      
      
      BUILD/SETUP.sh:
        Add flags for Intel 64
      dbug/dbug.c:
        Add 0x before pointers (to help with debugging)
      heap/_check.c:
        Add 0x before pointers (to help with debugging)
      heap/hp_create.c:
        Add support for VARCHAR with 1 or 2 length bytes
      heap/hp_delete.c:
        Add 0x before pointers
      heap/hp_hash.c:
        Add support for VARCHAR with 1 or 2 length bytes
        Added more debugging
      heap/hp_open.c:
        Add 0x before pointers
      heap/hp_rkey.c:
        Add 0x before pointers
      heap/hp_rrnd.c:
        Add 0x before pointers
      heap/hp_write.c:
        Add 0x before pointers
      include/my_base.h:
        Add support for VARCHAR with 1 or 2 length bytes
      myisam/ft_static.c:
        Add support for VARCHAR with 1 or 2 length bytes
      myisam/ft_test1.c:
        Add support for VARCHAR with 1 or 2 length bytes
        Fixed indentation
        (This file should probably be deleted as it doesn't compile)
      myisam/ft_update.c:
        Add support for VARCHAR with 1 or 2 length bytes
        Fixed indentation
        Removed some not needed 'else'
      myisam/mi_check.c:
        Don't give an error for tables packed with myisampack
      myisam/mi_checksum.c:
        Add support for VARCHAR with 1 or 2 length bytes
      myisam/mi_create.c:
        Add support for VARCHAR with 1 or 2 length bytes
        Store in number of pack-length-bytes in keyseg->bit_start
      myisam/mi_dbug.c:
        Add support for VARCHAR with 1 or 2 length bytes
      myisam/mi_dynrec.c:
        Add support for VARCHAR with 1 or 2 length bytes
        (old code in _mi_rec_unpack() didn't really work with VARCHAR's)
      myisam/mi_key.c:
        Add support for VARCHAR with 1 or 2 length bytes
      myisam/mi_open.c:
        Add support for VARCHAR with 1 or 2 length bytes
      myisam/mi_packrec.c:
        Add support for VARCHAR with 1 or 2 length bytes
      myisam/mi_search.c:
        Add support for VARCHAR with 1 or 2 length bytes
      myisam/mi_test1.c:
        Add support for VARCHAR with 1 or 2 length bytes
      myisam/mi_test3.c:
        Add support for VARCHAR with 1 or 2 length bytes
      myisam/mi_test_all.res:
        Update results
      myisam/mi_unique.c:
        Add support for VARCHAR with 1 or 2 length bytes
      myisam/myisampack.c:
        Add support for VARCHAR with 1 or 2 length bytes
      mysql-test/include/varchar.inc:
        Added more tests
      mysql-test/r/bdb.result:
        Update results after new tests
      mysql-test/r/information_schema.result:
        Update results
      mysql-test/r/innodb.result:
        Update results
      mysql-test/r/myisam.result:
        Update results after new tests
      mysql-test/r/ps_1general.result:
        Update results
      mysql-test/t/bdb.test:
        Shorter comments
      mysys/list.c:
        Add 0x before pointers
      mysys/my_handler.c:
        Add support for VARCHAR with 1 or 2 length bytes
      mysys/raid.cc:
        Add 0x before pointers
      sql/field.cc:
        Add support for VARCHAR with 1 or 2 length bytes
      sql/field.h:
        Add support for VARCHAR with 1 or 2 length bytes
      sql/field_conv.cc:
        Add support for VARCHAR with 1 or 2 length bytes
      sql/ha_berkeley.cc:
        Add support for VARCHAR with 1 or 2 length bytes
      sql/ha_heap.cc:
        Add support for VARCHAR with 1 or 2 length bytes
      sql/ha_myisam.cc:
        Ensure that enable_indexes() will report an error if it fails
        Enable VARCHAR packing for MyISAM files
      sql/item_sum.cc:
        Change key_cmp -> cmp() as we are comparing fields, not key segements
      sql/opt_range.cc:
        Add support for VARCHAR with 1 or 2 length bytes
        Change range_end to call ha_index_or_rnd_end() as in some error cases we may be in rnd mode when we abort
      sql/sql_base.cc:
        Remove compiler warning
      sql/sql_parse.cc:
        Move length checking code to sql_table.cc (as we don't have character set for fields at this stage)
      sql/sql_select.cc:
        Add support for VARCHAR with 1 or 2 length bytes
        Ensure that we report an error if we get an error while writing to internal temporary tables
      sql/sql_select.h:
        Add support for VARCHAR with 1 or 2 length bytes
      sql/sql_show.cc:
        Fix typo in comment
      sql/sql_table.cc:
        Don't use new table generated by ALTER TABLE if index generation fails
      vio/vio.c:
        Fixed DBUG info
      vio/viosocket.c:
        Fixed DBUG info
      vio/viossl.c:
        Fixed DBUG info
      vio/viosslfactories.c:
        Fixed DBUG info
      d63ef7e9
  22. 24 Nov, 2004 1 commit
  23. 07 Nov, 2004 1 commit
    • unknown's avatar
      Simpler arena swapping code · dda7a6a9
      unknown authored
      Now thd->mem_root is a pointer to thd->main_mem_root and THR_MALLOC is a pointer to thd->mem_root.
      This gives us the following benefits:
      - Allow us to easily detect if arena has already been swapped before (this fixes a bug in setup_conds() where arena was swaped twice in some cases)
      - Faster swaps of arenas (as we don't have to copy the whole MEM_ROOT)
      - We don't anymore have to call my_pthread_setspecific_ptr(THR_MALLOC,...) to change where memory is alloced. Now it's enough to set thd->mem_root
      
      
      
      client/mysqltest.c:
        Remove some not needed defines
        (Things like this should be done in config-win.h)
      include/config-win.h:
        Added popen() and pclose() compatibility macros
      mysql-test/t/rpl_failed_optimize-master.opt:
        Portability fix
      sql/ha_berkeley.cc:
        New thd->memroot handling
      sql/item_cmpfunc.cc:
        Simpler arena swapping code
      sql/item_func.cc:
        Simpler arena swapping code
      sql/item_subselect.cc:
        Simpler arena swapping code
        New thd->mem_root handling
      sql/item_sum.cc:
        New thd->mem_root handling
      sql/item_timefunc.cc:
        Fixed not-initalized usage errors found by valgrind
      sql/log_event.cc:
        New thd->mem_root handling
      sql/mysql_priv.h:
        New thd->mem_root handling
      sql/mysqld.cc:
        New thd->mem_root handling
      sql/opt_range.cc:
        New thd->mem_root handling
      sql/repl_failsafe.cc:
        New thd->mem_root handling
      sql/set_var.cc:
        New thd->mem_root handling
      sql/sql_acl.cc:
        New thd->mem_root handling
      sql/sql_base.cc:
        Simpler arena swapping code
        New thd->mem_root handling
      sql/sql_class.cc:
        New thd->mem_root handling
      sql/sql_class.h:
        Simpler arena swapping code
        New thd->mem_root handling
      sql/sql_db.cc:
        New thd->mem_root handling
      sql/sql_error.cc:
        New thd->mem_root handling
      sql/sql_help.cc:
        New thd->mem_root handling
      sql/sql_insert.cc:
        New thd->mem_root handling
      sql/sql_parse.cc:
        New thd->mem_root handling
        Added some extra checking of return value of new
      sql/sql_prepare.cc:
        New thd->mem_root handling
      sql/sql_select.cc:
        New thd->mem_root handling
      sql/sql_select.h:
        New thd->mem_root handling
      sql/sql_union.cc:
        Simpler arena swapping code
      sql/sql_yacc.yy:
        New thd->mem_root handling
      sql/table.cc:
        New thd->mem_root handling
      sql/thr_malloc.cc:
        New thd->mem_root handling
      tests/client_test.c:
        Added drop table to some tests
        Changed some table names to 't1'
      dda7a6a9
  24. 20 Oct, 2004 1 commit
    • unknown's avatar
      errors without code removed · 9d3fe09b
      unknown authored
      net_printf/send_error calls replaced by my_error family functions
      -1/1 (sent/unsent) error reporting removed
      (WL#2133)
      
      
      include/mysqld_error.h:
        new errors added.
      mysql-test/r/rpl_charset.result:
        new error
      mysql-test/r/rpl_timezone.result:
        new error
      mysql-test/r/sp-security.result:
        more clean error message
      mysql-test/r/sp.result:
        now error state intercepted correctly
      mysql-test/t/connect.test:
        new error message
      mysql-test/t/rpl_charset.test:
        new error message
      mysql-test/t/rpl_timezone.test:
        new error
      mysql-test/t/sp-security.test:
        more correct error handling
      mysql-test/t/sp.test:
        now error state intercepted correctly
      sql/ha_innodb.cc:
        -1/1 (sent/unsent) error reporting removed
      sql/ha_innodb.h:
        -1/1 (sent/unsent) error reporting removed
      sql/item.cc:
        only boolean values should be returned by fix_fields()
      sql/item_cmpfunc.cc:
        only boolean values should be returned by fix_fields()
      sql/item_func.cc:
        only boolean values should be returned by fix_fields()
        net_printf/send_error calls replaced by my_error family functions
      sql/item_row.cc:
        only boolean values should be returned by fix_fields()
      sql/item_subselect.cc:
        only boolean values should be returned by fix_fields()
        -1/1 (sent/unsent) error reporting removed
      sql/item_subselect.h:
        -1/1 (sent/unsent) error reporting removed
      sql/item_sum.cc:
        only boolean values should be returned by fix_fields()
      sql/item_timefunc.cc:
        only boolean values should be returned by fix_fields()
      sql/item_uniq.h:
        only boolean values should be returned by fix_fields()
      sql/mysql_priv.h:
        -1/1 (sent/unsent) error reporting removed
      sql/mysqld.cc:
        net_printf/send_error calls replaced by my_error family functions
        changes in my_message_sql to support error handling correctly
      sql/protocol.cc:
        net_printf/send_error calls replaced by my_error family functions
      sql/protocol_cursor.cc:
        net_printf/send_error calls replaced by my_error family functions
      sql/repl_failsafe.cc:
        net_printf/send_error calls replaced by my_error family functions
        -1/1 (sent/unsent) error reporting removed
      sql/repl_failsafe.h:
        -1/1 (sent/unsent) error reporting removed
      sql/set_var.cc:
        net_printf/send_error calls replaced by my_error family functions
      sql/share/czech/errmsg.txt:
        new error messages
      sql/share/danish/errmsg.txt:
        new error messages
      sql/share/dutch/errmsg.txt:
        new error messages
      sql/share/english/errmsg.txt:
        new error messages
      sql/share/estonian/errmsg.txt:
        new error messages
      sql/share/french/errmsg.txt:
        new error messages
      sql/share/german/errmsg.txt:
        new error messages
      sql/share/greek/errmsg.txt:
        new error messages
      sql/share/hungarian/errmsg.txt:
        new error messages
      sql/share/italian/errmsg.txt:
        new error messages
      sql/share/japanese/errmsg.txt:
        new error messages
      sql/share/korean/errmsg.txt:
        new error messages
      sql/share/norwegian-ny/errmsg.txt:
        new error messages
      sql/share/norwegian/errmsg.txt:
        new error messages
      sql/share/polish/errmsg.txt:
        new error messages
      sql/share/portuguese/errmsg.txt:
        new error messages
      sql/share/romanian/errmsg.txt:
        new error messages
      sql/share/russian/errmsg.txt:
        new error messages
      sql/share/serbian/errmsg.txt:
        new error messages
      sql/share/slovak/errmsg.txt:
        new error messages
      sql/share/spanish/errmsg.txt:
        new error messages
      sql/share/swedish/errmsg.txt:
        new error messages
      sql/share/ukrainian/errmsg.txt:
        new error messages
      sql/slave.cc:
        net_printf/send_error calls replaced by my_error family functions
        -1/1 (sent/unsent) error reporting removed
      sql/slave.h:
        -1/1 (sent/unsent) error reporting removed
      sql/sp.cc:
        net_printf/send_error calls replaced by my_error family functions
      sql/sp_head.cc:
        new eror handling support
        net_printf/send_error calls replaced by my_error family functions
      sql/sp_rcontext.cc:
        net_printf/send_error calls replaced by my_error family functions
      sql/sql_acl.cc:
        net_printf/send_error calls replaced by my_error family functions
        -1/1 (sent/unsent) error reporting removed
      sql/sql_acl.h:
        -1/1 (sent/unsent) error reporting removed
      sql/sql_base.cc:
        -1/1 (sent/unsent) error reporting removed
        net_printf/send_error calls replaced by my_error family functions
      sql/sql_class.cc:
        net_printf/send_error calls replaced by my_error family functions
      sql/sql_class.h:
        my_messhage_sql now set/reset query_error flag
      sql/sql_db.cc:
        -1/1 (sent/unsent) error reporting removed
      sql/sql_delete.cc:
        -1/1 (sent/unsent) error reporting removed
        net_printf/send_error calls replaced by my_error family functions
      sql/sql_do.cc:
        -1/1 (sent/unsent) error reporting removed
      sql/sql_error.cc:
        -1/1 (sent/unsent) error reporting removed
      sql/sql_handler.cc:
        -1/1 (sent/unsent) error reporting removed
        net_printf/send_error calls replaced by my_error family functions
      sql/sql_help.cc:
        net_printf/send_error calls replaced by my_error family functions
        -1/1 (sent/unsent) error reporting removed
      sql/sql_insert.cc:
        -1/1 (sent/unsent) error reporting removed
        net_printf/send_error calls replaced by my_error family functions
      sql/sql_lex.h:
        -1/1 (sent/unsent) error reporting removed
      sql/sql_load.cc:
        -1/1 (sent/unsent) error reporting removed
      sql/sql_map.cc:
        errors without code removed
      sql/sql_parse.cc:
        net_printf/send_error calls replaced by my_error family functions
        -1/1 (sent/unsent) error reporting removed from mysql_execute_command
      sql/sql_prepare.cc:
        net_printf/send_error calls replaced by my_error family functions
        -1/1 (sent/unsent) error reporting removed
      sql/sql_repl.cc:
        error messages fixed
        net_printf/send_error calls replaced by my_error family functions
        -1/1 (sent/unsent) error reporting removed
      sql/sql_repl.h:
        -1/1 (sent/unsent) error reporting removed
      sql/sql_select.cc:
        -1/1 (sent/unsent) error reporting removed
      sql/sql_select.h:
        -1/1 (sent/unsent) error reporting removed
      sql/sql_show.cc:
        -1/1 (sent/unsent) error reporting removed
        net_printf/send_error calls replaced by my_error family functions
      sql/sql_table.cc:
        net_printf/send_error calls replaced by my_error family functions
        -1/1 (sent/unsent) error reporting removed
      sql/sql_trigger.cc:
        -1/1 (sent/unsent) error reporting removed
      sql/sql_udf.cc:
        net_printf/send_error calls replaced by my_error family functions
      sql/sql_union.cc:
        -1/1 (sent/unsent) error reporting removed
      sql/sql_update.cc:
        -1/1 (sent/unsent) error reporting removed
        net_printf/send_error calls replaced by my_error family functions
      sql/sql_view.cc:
        -1/1 (sent/unsent) error reporting removed
      sql/sql_view.h:
        -1/1 (sent/unsent) error reporting removed
      sql/sql_yacc.yy:
        net_printf/send_error calls replaced by my_error family functions
      9d3fe09b
  25. 19 Oct, 2004 1 commit
    • unknown's avatar
      table.h, sql_select.h: · fcab6583
      unknown authored
        Added the code processing on expressions for applying
        multiple equalities.
      sql_select.cc:
        Post-merge fixes for Item_equal patch.
        Added the code processing on expressions for applying
        multiple equalities.
      Many files:
        Post-merge fixes for Item_equal patch.
      item_cmpfunc.cc:
        Post-merge fixes for Item_equal patch.
        Fixed a problem when an equality field=const cannot be applied to
        the predicate P(field,c) for constant propagation as a conversion
        of field is needed.
      item.h, item.cc:
        Fixed a problem when an equality field=const cannot be applied to
        the predicate P(field,c) for constant propagation as a conversion
        of field is needed.
      
      
      mysql-test/r/func_test.result:
        Post-merge fixes for Item_equal patch.
      mysql-test/r/index_merge.result:
        Post-merge fixes for Item_equal patch.
      mysql-test/r/join_nested.result:
        Post-merge fixes for Item_equal patch.
      mysql-test/r/range.result:
        Post-merge fixes for Item_equal patch.
      sql/item.cc:
        Fixed a problem when an equality field=const cannot be applied to
        the predicate P(field,c) for constant propagation as a conversion
        of field is needed.
      sql/item.h:
        Fixed a problem when an equality field=const cannot be applied to
        the predicate P(field,c) for constant propagation as a conversion
        of field is needed.
      sql/item_cmpfunc.cc:
        Post-merge fixes for Item_equal patch.
        Fixed a problem when an equality field=const cannot be applied to
        the predicate P(field,c) for constant propagation as a conversion
        of field is needed.
      sql/opt_range.cc:
        Post-merge fixes for Item_equal patch.
      sql/sql_select.cc:
        Post-merge fixes for Item_equal patch.
        Added the code processing on expressions for applying
        multiple equalities.
      sql/sql_select.h:
        Added the code processing on expressions for applying
        multiple equalities.
      sql/table.h:
        Added the code processing on expressions for applying
        multiple equalities.
      fcab6583
  26. 17 Sep, 2004 1 commit
    • unknown's avatar
      Removed wrong warnings in test suite (This was because select_insert /... · d209efc0
      unknown authored
      Removed wrong warnings in test suite (This was because select_insert / select_create results was not freed.
      Added thd to openfrm() for initialization of TABLE->in_use. This fixed a bug in BDB handling where table->in_use was used early
      
      
      mysql-test/r/key.result:
        Added new tests that shows a bug in warnings hat
      mysql-test/t/key.test:
        Added new tests that shows a bug in warnings hat
      sql/handler.cc:
        Added thd to openfrm() for initialization of TABLE->in_use
      sql/item.cc:
        New function to avoid warnings when giving field a value
      sql/item.h:
        New function to avoid warnings when giving field a value
      sql/mysql_priv.h:
        Added thd to openfrm() for initialization of TABLE->in_use
      sql/opt_range.cc:
        Don't give warnings in optimizer when internally storing a field value in a field. (Should be ok as we ar checking the feild in the WHERE clause later)
      sql/sql_base.cc:
        Give memroot explicitely to open_unireg_entry() and open_table() (Makes code simpler)
        Ensure that table->in_use is set early
        New arguments for openfrm()
      sql/sql_insert.cc:
        More debugging & comments
      sql/sql_parse.cc:
        Delete results for select_insert and select_create. This fixed a bug that generated warnings in test suite
      sql/sql_select.h:
        Don't give warnings in optimizer when internally storing a field value in a field. (Should be ok as we ar checking the feild in the WHERE clause later)
      sql/sql_table.cc:
        New arguments to open_table() and openfrm()
      sql/table.cc:
        Added thd to openfrm() for initialization of TABLE->in_use
        This fixes some bugs in BDB where table->in_use was used
      d209efc0
  27. 10 Sep, 2004 1 commit
    • unknown's avatar
      Implementation of the last review comments for WL#1724 · 34f30c6f
      unknown authored
      "Min/Max Optimization for Queries with Group By Clause"
      
      
      mysql-test/r/group_min_max.result:
        Added new test
      mysql-test/t/group_min_max.test:
        Added new test & comments
      sql/item.h:
        Remove processor methods that are no longer used.
      sql/item_sum.cc:
        Remove processor methods that are no longer used.
      sql/item_sum.h:
        Remove processor methods that are no longer used.
      sql/opt_range.cc:
        - the test procedure no longer needs to build lists and to traverse the expression trees
        - all usable indexes are tested and the bes one is chosen
        - added/edited function comments
      sql/sql_select.cc:
        Modified make_sum_func_list() so it can be reused in the test for MIN/MAX optimization.
      sql/sql_select.h:
        Modified make_sum_func_list() so it can be reused in the test for MIN/MAX optimization.
      34f30c6f
  28. 31 Aug, 2004 1 commit
    • unknown's avatar
      after review patch · e6fbc582
      unknown authored
      mysql-test/r/negation_elimination.result:
        new tests of negation elimination
      mysql-test/t/negation_elimination.test:
        new tests of negation elimination
      sql/item.h:
        test of boolean functions added
      sql/item_cmpfunc.cc:
        NOT subtree is already checked, so wee need to return just argument
      sql/item_cmpfunc.h:
        test of boolean functions added
      sql/mysql_priv.h:
        'place' to detect WHERE clause
      sql/sql_parse.cc:
        function for creation negated expression
      sql/sql_select.cc:
        removed unused function
      sql/sql_select.h:
        removed unused function
      sql/sql_yacc.yy:
        'place' to detect WHERE clause
      e6fbc582
  29. 27 Aug, 2004 1 commit
    • unknown's avatar
      WL#1724 "Min/Max Optimization for Queries with Group By Clause" · 72b06d45
      unknown authored
      - after-review changes
      - merged with the source tree from 204-08-27
      
      
      mysql-test/r/distinct.result:
        Different plans due to group-by optimization.
      sql/ha_myisam.cc:
        More general interface to key_copy.
      sql/handler.cc:
        More general interface to key_copy.
      sql/item.cc:
        New method to collect all Item_field objects. Used by Item::walk.
      sql/item.h:
        Several methods to collect different kinds of items from expression trees.
        Used by Item::walk.
      sql/item_sum.cc:
        Added helper to collect Item_sum objects.
      sql/item_sum.h:
        Methods to collect and test Item_sum objects.
      sql/key.cc:
        More general interface to key_copy and key_restore.
      sql/mysql_priv.h:
        More general interface to key_copy and key_restore.
      sql/opt_range.cc:
        Complete implementaion of WL#1724 "Min/Max Optimization for Queries with Group By Clause".
      sql/opt_range.h:
        Complete implementaion of WL#1724 "Min/Max Optimization for Queries with Group By Clause".
      sql/opt_sum.cc:
        simple_pred is re-used in opt_range.cc
      sql/sql_acl.cc:
        More general interface to key_copy and key_restore.
      sql/sql_handler.cc:
        More general interface to key_copy.
      sql/sql_insert.cc:
        More general interface to key_copy.
      sql/sql_select.cc:
        Changes to hook the new QUICK_GROUP_MIN_MAX_SELECT due to two differences from all other
        quick selects:
        1)
        This quick select may be created (and used) even if there is no WHERE clause.
        Several places assumed that a QUICK_SELECT is constructed only if there is a WHERE clause,
        which had to be changed so that QUICK_GROUP_MIN_MAX can be used.
        2)
        Unlike all other quick selects, this QUICK_GROUP_MIN_MAX_SELECT operates for GROUP BY queries.
        Since for the caller the quick select already produces one result tuple per group, there is
        no need to call end_send_group, instead we have to call end_send as for a regular quick select.
      sql/sql_select.h:
        simple_pred is re-used in opt_range.cc
      72b06d45
  30. 03 Aug, 2004 1 commit
    • unknown's avatar
      Port of cursors to be pushed into 5.0 tree: · e14f5a85
      unknown authored
      - client side part is simple and may be considered stable
      - server side part now just joggles with THD state to save execution
        state and has no additional locking wisdom.
        Lot's of it are to be rewritten.
      
      
      include/mysql.h:
        Cursor patch to push into the main tree, client library part (considered 
        stable):
        - new statement attribute STMT_ATTR_CURSOR_TYPE
        - MYSQL_STMT::flags to store statement cursor type
        - MYSQL_STMT::server_status to store server status (i. e. if the server
        was able to open a cursor for this query).
      include/mysql_com.h:
        Cursor patch to push into the main tree, client library part (considered 
        stable):
        - new COMmand, COM_FETCH, to fetch K rows from read-only cursor.
          By design should support scrollable cursors as well.
        - a few new server statuses:
          SERVER_STATUS_CURSOR_EXISTS is sent by server in reply to COM_EXECUTE,
          when cursor was successfully opened for this query
          SERVER_STATUS_LAST_ROW_SENT is sent along with the last row to prevent one
          more round trip just for finding out that all rows were fetched from 
          this cursor (this is server mem savier also).
        - and finally, all possible values of STMT_ATTR_CURSOR_TYPE, 
          while now we support only CURSORT_TYPE_NO_CURSOR and 
          CURSOR_TYPE_READ_ONLY
      libmysql/libmysql.c:
        Cursor patch to push into the main tree, client library part (considered 
        stable):
        - simple additions to mysql_stmt_fetch implementation to read data 
          from an opened cursor: we can read up to iteration count rows per
          one request; read rows are buffered in the same way as rows of
          mysql_stmt_store_result.
        - now send stmt->flags to server to let him now if we wish to have 
          a cursor for this statement.
        - support for setting/getting statement cursor type.
      libmysqld/examples/Makefile.am:
        Testing cursors was originally implemented in C++. Now when these tests
        go into client_test, it's time to convert it to C++ as well.
      libmysqld/lib_sql.cc:
        - cleanup: send_fields flags are now named.
      sql/ha_innodb.cc:
        - cleanup: send_fields flags are now named.
      sql/mysql_priv.h:
        - cursors support: declaration for server-side handler of COM_FETCH
      sql/protocol.cc:
        - cleanup: send_fields flags are now named.
        - we can't anymore assert that field_types[field_pos] is sensible:
          if we have COM_EXCUTE(stmt1), COM_EXECUTE(stmt2), COM_FETCH(stmt1)
          field_types[field_pos] will point to fields of stmt2.
      sql/protocol.h:
        - cleanup: send_fields flag_s_ are now named.
      sql/protocol_cursor.cc:
        - cleanup: send_fields flags are now named.
      sql/repl_failsafe.cc:
        - cleanup: send_fields flags are now named.
      sql/slave.cc:
        - cleanup: send_fields flags are now named.
      sql/sp.cc:
        - cleanup: send_fields flags are now named.
      sql/sp_head.cc:
        - cleanup: send_fields flags are now named.
      sql/sql_acl.cc:
        - cleanup: send_fields flags are now named.
      sql/sql_class.cc:
        - cleanup: send_fields flags are now named.
      sql/sql_class.h:
        - cleanup: send_fields flags are now named.
      sql/sql_error.cc:
        - cleanup: send_fields flags are now named.
      sql/sql_handler.cc:
        - cleanup: send_fields flags are now named.
      sql/sql_help.cc:
        - cleanup: send_fields flags are now named.
      sql/sql_parse.cc:
        Server side support for cursors:
        - handle COM_FETCH
        - enforce assumption that whenever we free thd->free_list, 
          we reset it to zero. This way it's much easier to handle free_list
          in prepared statements implementation.
      sql/sql_prepare.cc:
        Server side support for cursors:
        - implementation of mysql_stmt_fetch (fetch some rows from open cursor).
        - management of cursors memory is quite tricky now.
        - execute_stmt can't be reused anymore in mysql_stmt_execute and 
          mysql_sql_stmt_execute
      sql/sql_repl.cc:
        - cleanup: send_fields flags are now named.
      sql/sql_select.cc:
        Server side support for cursors:
        - implementation of Cursor::open, Cursor::fetch (buggy when it comes to
          non-equi joins), cursor cleanups.
        - -4 -3 -0 constants indicating return value of sub_select and end_send are
          to be renamed to something more readable:
          it turned out to be not so simple, so it should come with the other patch.
      sql/sql_select.h:
        Server side support for cursors:
        - declaration of Cursor class.
        - JOIN::fetch_limit contains runtime value of rows fetched via cursor.
      sql/sql_show.cc:
        - cleanup: send_fields flags are now named.
      sql/sql_table.cc:
        - cleanup: send_fields flags are now named.
      sql/sql_union.cc:
        - if there was a cursor, don't cleanup unit: we'll need it to fetch
          the rest of the rows.
      tests/Makefile.am:
        Now client_test is in C++.
      tests/client_test.cc:
        A few elementary tests for cursors.
      BitKeeper/etc/ignore:
        Added libmysqld/examples/client_test.cc to the ignore list
      e14f5a85
  31. 11 Jun, 2004 1 commit
    • unknown's avatar
      join_nested.test, join_nested.result: · 2c71b559
      unknown authored
        new file
      Many files:
        Nested joins added.
      
      
      sql/item_cmpfunc.h:
        Nested joins added.
      sql/item_func.h:
        Nested joins added.
      sql/sql_base.cc:
        Nested joins added.
      sql/sql_lex.cc:
        Nested joins added.
      sql/sql_lex.h:
        Nested joins added.
      sql/sql_parse.cc:
        Nested joins added.
      sql/sql_select.cc:
        Nested joins added.
      sql/sql_select.h:
        Nested joins added.
      sql/sql_yacc.yy:
        Nested joins added.
      sql/table.h:
        Nested joins added.
      mysql-test/r/join_outer.result:
        Nested joins added.
      mysql-test/r/select.result:
        Nested joins added.
      2c71b559
  32. 12 May, 2004 1 commit
    • unknown's avatar
      This is first cset for WL#1394 "Optimize index merge when all involved index... · f63352d3
      unknown authored
      This is first cset for WL#1394 "Optimize index merge when all involved index ranges include only values with equal keys"
      The main idea is to exploit the fact that key scans for "key=const" return ordered sequences of rowids.
      
      
      include/my_base.h:
        Added HA_EXTRA_KEYREAD_PRESERVE_FIELDS flag
      include/my_bitmap.h:
        Added a couple of utility functions
      include/my_sys.h:
        Added my_conunt_bits_ushort function
      innobase/include/row0mysql.h:
        Added support for HA_EXTRA_KEYREAD_PRESERVE_FIELDS
      innobase/row/row0sel.c:
        Added support for HA_EXTRA_KEYREAD_PRESERVE_FIELDS
      mysys/my_bit.c:
        Added my_count_bits_ushort function
      mysys/my_bitmap.c:
        Added a couple of utility functions
      sql/ha_berkeley.cc:
        Added cmp_ref rowid comparison function.
      sql/ha_berkeley.h:
        Added cmp_ref rowid comparison function.
      sql/ha_heap.h:
        Added cmp_ref rowid comparison function.
      sql/ha_innodb.cc:
        Added cmp_ref rowid comparison function and support from HA_EXTRA_KEYREAD_PRESERVE_FIELDS
      sql/ha_innodb.h:
        Added cmp_ref rowid comparison function.
      sql/handler.h:
        Added cmp_ref rowid comparison function.
      sql/opt_range.cc:
        Added QUICK_ROR_{INTERSECT,UNION}_SELECT classes and related optimizer code
      sql/opt_range.h:
        Added QUICK_ROR_{INTERSECT,UNION}_SELECT classes
      sql/sql_delete.cc:
        Changed to use new ROWID comparison function
        also always call quick->reset() for quick selects
      sql/sql_select.cc:
        Account for new quick select types
      sql/sql_select.h:
        New, proper rowid ordering/comparison function to be used with Unique class etc.
      sql/sql_test.cc:
        Account for new quick select types
      sql/sql_update.cc:
        Account for new quick select types
      f63352d3
  33. 11 May, 2004 1 commit
  34. 07 May, 2004 1 commit
    • unknown's avatar
      keep old engine & JOIN if we changed subquery Item (Bug #3646) · e6f09f3b
      unknown authored
      mysql-test/r/subselect.result:
        ALL/ANY test
      mysql-test/t/subselect.test:
        ALL/ANY test
      sql/item_subselect.cc:
        keep old engine & JOIN if we changed subquery Item, which allow avoid second all SELECT items fix_fields call with pervios clean up (because of second setup_tables which remove table->key_use and maybe something else)
        keep list when we change Item in SELECT list
        processing inserted max/min function (now JOIN::prepare will be called only once)
        methods of changing item for subselect engines
      sql/item_subselect.h:
        change item & results procedure
      sql/item_sum.cc:
        Item_sum_hybrid::clear moved to .cc file (to keep .h clean and to make inserving/removing debug info easy)
      sql/item_sum.h:
        Item_sum_hybrid::clear moved to .cc file (to keep .h clean and to make inserving/removing debug info easy)
      sql/sql_lex.cc:
        note about new method
      sql/sql_lex.h:
        method for changing result of UNION JOINs
      sql/sql_select.cc:
        method for changing result in JOIN
      sql/sql_select.h:
        method for changing result in JOIN
      sql/sql_union.cc:
        method for changing result in JOIN
      e6f09f3b
  35. 04 May, 2004 1 commit
  36. 16 Apr, 2004 1 commit
    • unknown's avatar
      Implementation of WL#1469 (Greedy algorithm to search for an optimal execution plan). · 7c8bae29
      unknown authored
      mysql-test/r/subselect.result:
        Table pre-sorting before optimization makes the optimizer select a different plan, this change fixes the plan.
      sql/mysql_priv.h:
        Added new status variable last_query_cost that contains the cost of the last compiled query.
      sql/mysqld.cc:
        * Added new system variable 'plan_search_depth' to control the exhaustiveness of the search for an optimal query plan.
        * Added new system variable 'heuristic' to control the use of query optimization heuristic.
        * Added new status variable 'last_query_cost' that contains the cost of the last compiled query.
      sql/set_var.cc:
        * Added new system variable 'plan_search_depth' to control the exhaustiveness of the search for an optimal query plan.
        * Added new system variable 'heuristic' to control the use of query optimization heuristic.
      sql/sql_class.h:
        * Added new system variable 'plan_search_depth' to control the exhaustiveness of the search for an optimal query plan.
        * Added new system variable 'heuristic' to control the use of query optimization heuristic.
      sql/sql_select.cc:
        Added a combined greedy/exhaustive query optimization algorithm.
        * The greedy search algorithm is implemented in function 'greedy_search'.
        * The exhaustive search with controlled search depth is implemented in function 'find_best_limited_depth', a modification of 'find_best'.
        * The selection of the best access path and its cost computation is factored out from 'find_best' into function 'best_access_path'.
        * In addition:
          - added pre-sorting for the query tables before they get optimized
          - factored out the optimization of STRAIGHT_JOIN into a separate procedure
      sql/sql_select.h:
        Added new field to st_position to support the greedy optimizer.
        Added a comment to class JOIN.
      sql/sql_show.cc:
        Added a case to 'mysqld_show' to print double status variables.
      sql/structs.h:
        Added a new type of status variables SHOW_DOUBLE
      BitKeeper/etc/logging_ok:
        Logging to logging@openlogging.org accepted
      7c8bae29
  37. 17 Mar, 2004 1 commit
    • unknown's avatar
      DBUG_ASSERT(fixed == 0) added to fix_fields() · cd32a2f4
      unknown authored
      sql/item.cc:
        layout fixed
        fixed bug in prepared statements with subqueries and outer references
      sql/item.h:
        neg_transformer get thd argument to call fix_fields
      sql/item_cmpfunc.cc:
        DBUG_ASSERT(fixed == 0) added to fix_fields()
        fixed Item_in_optimizer fixed flag
        neg_arguments(), neg_transformer() call fix_field() on created items to avoid bouble fix field or non-called fixfields()
      sql/item_cmpfunc.h:
        neg_transformer get thd argument to call fix_fields
        fixed forgoten cleanup() call of parent class
      sql/item_func.cc:
        DBUG_ASSERT(fixed == 0) and fixed flag check added to fix_fields()
      sql/item_func.h:
        DBUG_ASSERT(fixed == 0) added to fix_fields()
        fixed forgoten cleanup() call of parent class
      sql/item_row.cc:
        DBUG_ASSERT(fixed == 0) added to fix_fields()
        added forgoten 'fixed' flag set
      sql/item_subselect.cc:
        DBUG_ASSERT(fixed == 0) added to fix_fields()
        fixed subquery transformation
      sql/sql_base.cc:
        check of fixed flag added
      sql/sql_derived.cc:
        fixed cleunup union in derived table during EXPLAIN command processing
      sql/sql_select.cc:
        thd argument add to function to allow call fix_fields() of new created items
        fixed EXPLAIN double preparation
        check of fixed flag added
        eliminate_not_funcs fixed for corrcet fix_fields call of new created items
      sql/sql_select.h:
        thd argument add to function to allow call fix_fields() of new created items
      sql/sql_union.cc:
        union processing fixed
      tests/client_test.c:
        layout fixed
        new test of outer references fron subqueries
      cd32a2f4
  38. 10 Feb, 2004 1 commit
    • unknown's avatar
      after merge & valgrind test fixes (BUG#2120) · 0f91e6c9
      unknown authored
      sql/sql_derived.cc:
        memory leack fixed
      sql/sql_lex.cc:
        flag to avoid double cleaning
      sql/sql_lex.h:
        flag to avoid double cleaning
      sql/sql_select.cc:
        right way to cleanup JOIN_TAB
      sql/sql_select.h:
        right way to cleanup JOIN_TAB
      sql/sql_union.cc:
        flag to avoid double cleaning
      0f91e6c9
  39. 01 Feb, 2004 1 commit
    • unknown's avatar
      now all tables of query are locked in one place (including derived tables) · 3cabe5de
      unknown authored
      fixed BUG#2120 and other problem with EXPLAINing derived tables
      
      
      mysql-test/r/derived.result:
        correct tables names & Co in derived tables
        test case for BUG#2120
      mysql-test/t/derived.test:
        test case for BUG#2120
      sql/mysql_priv.h:
        derived tables processing moved after open/locking all tables (in open_and_lock_tables)
      sql/repl_failsafe.cc:
        correct initialization of TABLE_LIST
      sql/sql_acl.cc:
        used simple table opening without derived table processing to avoid unneeded initialization of SELECT_LEX
      sql/sql_base.cc:
        derived tables processing moved after open/locking all tables (in open_and_lock_tables)
      sql/sql_delete.cc:
        all tables processing is done during opening
      sql/sql_derived.cc:
        derived tables processing moved after open/locking all tables (in open_and_lock_tables) to sutisfy "all query tables locking" at the moment
      sql/sql_insert.cc:
        all tables processing is done during opening
        correct initialization of TABLE_LIST
      sql/sql_lex.cc:
        now table list will be created for whole query
        layout fix
        correct check of updated table in subqueries
      sql/sql_lex.h:
        now table list will be created for whole query
        correct check of updated table in subqueries
      sql/sql_olap.cc:
        THIS FUNCTION IS USED NOWHERE
        it will be good to remove it at all (handle_olaps)
      sql/sql_parse.cc:
        derived tables processing moved after open/locking all tables (in open_and_lock_tables)
      sql/sql_prepare.cc:
        new creating list parameters
        all tables processing is done during opening
      sql/sql_select.cc:
        all tables processing is done during opening
      sql/sql_select.h:
        now it used only within file where is defined
      sql/sql_udf.cc:
        used simple table opening without derived table processing to avoid unneeded initialization of SELECT_LEX
      sql/sql_update.cc:
        all tables processing is done during opening
      3cabe5de
  40. 31 Jan, 2004 1 commit
    • unknown's avatar
      fix for the bug #2419: order by ignores rows. · eccc114a
      unknown authored
      null_ref_key moved to TABLE_REF.
      new null range created if necessary.
      
      
      mysql-test/r/order_by.result:
        fix for the bug #2419: order by ignores rows
      mysql-test/t/order_by.test:
        fix for the bug #2419: order by ignores rows
      sql/item_subselect.cc:
        fix for the bug #2419: order by ignores rows
      sql/opt_range.cc:
        fix for the bug #2419: order by ignores rows
      sql/sql_select.cc:
        fix for the bug #2419: order by ignores rows
      sql/sql_select.h:
        fix for the bug #2419: order by ignores rows
      eccc114a