An error occurred fetching the project authors.
  1. 09 May, 2006 1 commit
  2. 25 Apr, 2006 1 commit
    • unknown's avatar
      BUG#15872: Don't run the range analyzer on "t1.keypart NOT IN (const1, ..., )", as that consumes · 15e00f1f
      unknown authored
      too much memory. Instead, either create the equvalent SEL_TREE manually, or create only two ranges that
      strictly include the area to scan
      (Note: just to re-iterate: increasing NOT_IN_IGNORE_THRESHOLD will make optimization run slower for big 
      IN-lists, but the server will not run out of memory. O(N^2) memory use has been eliminated)
      
      
      mysql-test/r/func_in.result:
        Testcase for BUG#15872
      mysql-test/t/func_in.test:
        Testcase for BUG#15872
      sql/item.cc:
        BUG#15872: Added Item_decimal::set_decimal_value()
      sql/item.h:
        UG#15872: Added Item_decimal::set_decimal_value()
      sql/item_cmpfunc.h:
        BUG#15872: Added in_vector::create_item(), in_vector::value_to_item() and their implementations in concrete
        classes.
      sql/opt_range.cc:
        BUG#15872: Don't run the range analyzer on "t1.keypart NOT IN (const1, ..., )", as that 
        consumes too much memory. Instead, either 
         A) create the equivalent SEL_TREE manually, making use of the fact that item_not_in->array
            has an ordered IN-list, or
         B) create only two ranges: (-inf|NULL) < X < min_value_from_in_list,  max_value_from_in_list < X
        (Choose #B if the IN-list has > 10K elements)
      15e00f1f
  3. 13 Apr, 2006 1 commit
    • unknown's avatar
      BUG#19021, Crash in ROR-index_merge optimizer: · c89555ed
      unknown authored
      get_best_covering_ror_intersect() was copying ror_scans starting from the 
      end of the array and not from its beginning.
      
      
      mysql-test/r/index_merge_innodb.result:
        Testcase for BUG#19021
      mysql-test/t/index_merge_innodb.test:
        Testcase for BUG#19021
      sql/opt_range.cc:
        BUG#19021: In get_best_covering_ror_intersect(), the array of pointers to
        scans to be used is [tree->ror_scans, ror_scan_mark), and not
        [ror_scan_mark, ...)
      c89555ed
  4. 06 Apr, 2006 1 commit
    • unknown's avatar
      BUG#18558 "Partition pruning results are incorrect for certain class of WHERE clauses" : · 4d1666f6
      unknown authored
      * Produce right results for conditions that were transformed to "(partitioning_range) AND
        (list_of_subpartitioning_ranges)": make each partition id set iterator auto-reset itself
        after it has returned all partition ids in the sequence 
      * Fix "Range mapping" and "Range mapping" partitioning interval analysis functions to 
        correctly deal with NULL values. 
      
      
      mysql-test/r/partition_pruning.result:
        Testcase for BUG#18558
      mysql-test/t/partition_pruning.test:
        Testcase for BUG#18558
      sql/opt_range.cc:
        BUG#18558: Move partition set iterator initialization to sql_partition.cc, comment fixes
      sql/partition_info.h:
        BUG#18558: Make each partition set iterator auto-reset itself after it has returned all 
        partition ids in the set it enumerates.
      sql/sql_partition.cc:
        BUG#18558: 
        - Make each partition set iterator auto-reset itself after it has returned all 
          partition ids in the set it enumerates. 
        - Fix partition interval analysis to correctly handle intervals with one or both
          NULL bounds.
      sql/sql_partition.h:
        BUG#18558: 
         - Make each partition set iterator auto-reset itself after it has returned all 
           partition ids in the set it enumerates. 
         - Rename PARTITION_ITERATOR::has_null_value to ret_null_part
      4d1666f6
  5. 31 Mar, 2006 2 commits
    • unknown's avatar
      Fix for BUG#18025: Wrong query results because of bugs in partition pruning: · 45751090
      unknown authored
       - Fix typo bug in SEL_ARG::is_singlepoint()
       - In set_up_range_analysis_info(), treat MEDIUMINT as enumerable type just like other integer types
      
      
      mysql-test/r/partition_pruning.result:
        Testcase for BUG#18025
      mysql-test/t/partition_pruning.test:
        Testcase for BUG#18025
      sql/opt_range.cc:
        BUG#18025: Fix a typo bug in SEL_ARG::is_singlepoint()
      sql/sql_partition.cc:
        BUG#18025: In set_up_range_analysis_info(), treat MEDIUMINT as enumerable type just like other integer types.
      45751090
    • unknown's avatar
      Fix for BUG#16710. · a01d48f9
      unknown authored
      The bug was due to a missed case in the detection of whether an index
      can be used for loose scan. More precisely, the range optimizer chose
      to use loose index scan for queries for which the condition(s) over
      an index key part could not be pushed to the index together with the
      loose scan.
      
      As a result, loose index scan was selecting the first row in the
      index with a given GROUP BY prefix, and was applying the WHERE
      clause after that, while it should have inspected all rows with
      the given prefix, and apply the WHERE clause to all of them.
      
      The fix detects and skips such cases.
      
      
      mysql-test/r/group_min_max.result:
        Added test for BUG#16710.
      mysql-test/t/group_min_max.test:
        Added test for BUG#16710.
      sql/item.cc:
        Added new method [Item | Item_field]::find_item_in_field_list_processor.
      sql/item.h:
        Added new method [Item | Item_field]::find_item_in_field_list_processor.
      sql/opt_range.cc:
        Handle the case when there is no MIN/MAX aggregate function, and a
        keypart of the index being considered, that is after the GROUP BY
        prefix, is used in the WHERE clause and the condition where it is
        used cannot be pushed to the index.
        If this is the case, we rule out this index.
      a01d48f9
  6. 29 Mar, 2006 1 commit
    • unknown's avatar
      Fixed compiler and valgrind warnings · 59eaf292
      unknown authored
      Added missing DBUG_xxx_RETURN statements
      Fixed some usage of not initialized variables (as found by valgrind)
      Ensure that we don't remove locked tables used as name locks from open table cache until unlock_table_names() are called.
      This was fixed by having drop_locked_name() returning any table used as a name lock so that we can free it in unlock_table_names()
      This will allow Tomas to continue with his work to use namelocks to syncronize things.
      
      Note: valgrind still produces a lot of warnings about using not initialized code and shows memory loss errors when running the ndb tests
      
      
      BitKeeper/etc/ignore:
        added mysql-test/r/*.log
      client/mysqltest.c:
        Change type of variables to get rid of compiler warnings
        More debugging
        Fix memory leak
      mysql-test/mysql-test-run.sh:
        Collect warnings about missing DBUG_RETURN statements
      mysql-test/r/lock_multi.result:
        Add test of new code
      mysql-test/r/ndb_condition_pushdown.result:
        Drop used tables before test
      mysql-test/t/lock_multi.test:
        Add test of new code
      mysql-test/t/ndb_condition_pushdown.test:
        Drop used tables before test
      mysql-test/valgrind.supp:
        Ignore 'safe' warnings from libz (when used with archive)
      sql/event.cc:
        More comments
        Simplify code
        Fixed memory leak found by valgrind
      sql/ha_archive.cc:
        Remove compiler warnings (Wrong handlerton structure and signed/unsigned comparison)
      sql/ha_berkeley.cc:
        Fixed compiler warning
      sql/ha_blackhole.cc:
        Fixed compiler warning
      sql/ha_federated.cc:
        Fixed compiler warning
      sql/ha_heap.cc:
        Fixed compiler warning
      sql/ha_myisam.cc:
        Fixed compiler warning
      sql/ha_myisammrg.cc:
        Fixed compiler warning
      sql/ha_ndbcluster.cc:
        Fixed compiler warnings
      sql/ha_partition.cc:
        Fixed compiler warning
        Fixed error noticed by valgrind in ha_partition::rnd_init()
      sql/handler.cc:
        Fixed compiler warning
      sql/handler.h:
        Fixed compiler warning
      sql/item.cc:
        Fixed compiler warning
      sql/item_xmlfunc.cc:
        Fixed warning from valgrind when calling memcpy with wrong address
      sql/lock.cc:
        More debugging
      sql/log.cc:
        Fixed compiler warning
        Indentation fixes
      sql/log.h:
        Fixed compiler warning
      sql/mysql_priv.h:
        Changed prototype for 'drop_locked_tables'
      sql/opt_range.cc:
        Indentation fix
      sql/password.c:
        Removed compiler warnings
      sql/set_var.cc:
        Fixed compiler warning
      sql/slave.cc:
        Fixed compiler warning
      sql/sp_head.cc:
        Fixed compiler warning
      sql/sql_acl.cc:
        Fixed compiler warning
      sql/sql_analyse.cc:
        Added missing DBUG_RETURN statements
      sql/sql_base.cc:
        Removed de-reference of not initialized pointer
        More comments
        drop_locked_tables() changed to not delete tables used for name locking
        Fixed compiler warnings
      sql/sql_delete.cc:
        Fixed usage of not initialized variable
        (deleted could be referenced in some not common error conditions)
      sql/sql_parse.cc:
        Added missing DBUG_VOID_RETURN
        Simplify code
      sql/sql_partition.cc:
        Fixed usage of wrong variable (noticed by valgrind)
      sql/sql_plugin.cc:
        Removed compiler warning
      sql/sql_show.cc:
        Removed compiler warning
      sql/sql_table.cc:
        Ensure that we don't remove locked tables used as name locks from open table cache until unlock_table_names() are called.
        This was fixed by having drop_locked_name() returning any table used as a name lock so that we can free it in unlock_table_names()
        This will allow Tomas to continue with his work to use namelocks to syncronize things.
        
        Fixed wrong test of 'table_type' (path_length could otherwise be accessed uninitialized)
        
        Remove compile warnings about not initialized variables.
      sql/sql_yacc.yy:
        Ensure that no_write_to_binlog is properly initialized
        (Was accessed uninitialized by partition code)
      sql/table.cc:
        Removed valgrind warnings (not fatal)
        Removed compiler warnings
      sql/tztime.cc:
        Removed valgrind warning
      storage/ndb/include/ndbapi/NdbIndexStat.hpp:
        Removed compiler warning
      59eaf292
  7. 28 Mar, 2006 1 commit
    • unknown's avatar
      Bug#18053 Partitions: crash if null · 44517ca0
      unknown authored
      Bug#18070 Partitions: wrong result on WHERE ... IS NULL
       removed unnecessary code
       added handling of NULL values
      
      
      mysql-test/r/partition.result:
        Bug#18053 Partitions: crash if null
        Bug#18070 Partitions: wrong result on WHERE ... IS NULL
         test case
      mysql-test/t/partition.test:
        Bug#18053 Partitions: crash if null
        Bug#18070 Partitions: wrong result on WHERE ... IS NULL
         test case
      sql/opt_range.cc:
        Bug#18053 Partitions: crash if null
        Bug#18070 Partitions: wrong result on WHERE ... IS NULL
         initialisation of part_iter.has_null_value
      sql/sql_partition.h:
        Bug#18053 Partitions: crash if null
        Bug#18070 Partitions: wrong result on WHERE ... IS NULL
         added has_null_value
      44517ca0
  8. 23 Mar, 2006 1 commit
    • unknown's avatar
      Fix for bug #18306: MySQL crashes and restarts using subquery · abffce9c
      unknown authored
      mysql-test/r/subselect.result:
        Fix for bug #18306: MySQL crashes and restarts using subquery
        test case
      mysql-test/t/subselect.test:
        Fix for bug #18306: MySQL crashes and restarts using subquery
        test case
      sql/opt_range.cc:
        Fix for bug #18306: MySQL crashes and restarts using subquery
        Restore thd->mem_root because
        during the cond->val_int() evaluation we can come across a subselect 
        item which may allocate memory on the thd->mem_root and assumes
        all the memory allocated has the same life span as the subselect
        item itself.
      abffce9c
  9. 13 Mar, 2006 1 commit
    • unknown's avatar
      Bug # 17173 - Partitions: less than search fails · 0c63aee7
      unknown authored
      Bug # 17894 - Comparison with "less than" operator fails with range partition
      
      The problem here was that on queries such as < 3, the range given is NULL < n < 3.
      The null part works correctly where the null value is stored in rec[0] and the
      field is marked as being null.  However, when the 3 is processed, the 3 is places
      on rec[0] but the null flag is left uncleared.
      
      partition_range.result:
        Results block for bug #17894
      partition_range.test:
        Test block for bug #17894
      partition_list.result:
        Results block for bug #17173
      partition_list.test:
        Test block for bug #17173
      opt_range.cc:
        call set_notnull to clear any null flag that may have been set
      
      
      sql/opt_range.cc:
        call set_notnull to clear any null flag that may have been set
      mysql-test/t/partition_list.test:
        Test block for bug #17173
      mysql-test/r/partition_list.result:
        Results block for bug #17173
      mysql-test/t/partition_range.test:
        Test block for bug #17894
      mysql-test/r/partition_range.result:
        Results block for bug #17894
      0c63aee7
  10. 25 Feb, 2006 1 commit
    • unknown's avatar
      Fixed compiler warnings from gcc 4.0.2: · f5f01b15
      unknown authored
      - Added empty constructors and virtual destructors to many classes and structs
      - Removed some usage of the offsetof() macro to instead use C++ class pointers
      
      
      configure.in:
        Added comment
      ndb/include/ndbapi/NdbDictionary.hpp:
        Fixed compiler warnings from gcc 4.0.2
      sql/field.cc:
        Fixed compiler warnings from gcc 4.0.2
      sql/handler.h:
        Fixed compiler warnings from gcc 4.0.2
      sql/item.h:
        Fixed compiler warnings from gcc 4.0.2
      sql/item_cmpfunc.h:
        Fixed compiler warnings from gcc 4.0.2
      sql/log_event.h:
        Fixed compiler warnings from gcc 4.0.2
      sql/mysql_priv.h:
        Fixed compiler warnings from gcc 4.0.2
        For find_table_in_list I fixed it to use proper C++ class pointers instead of C style pointers
      sql/opt_range.cc:
        Fixed compiler warnings from gcc 4.0.2
      sql/parse_file.h:
        Fixed compiler warnings from gcc 4.0.2
      sql/sp_rcontext.h:
        Fixed compiler warnings from gcc 4.0.2
      sql/spatial.h:
        Fixed compiler warnings from gcc 4.0.2
      sql/sql_base.cc:
        Fixed compiler warnings from gcc 4.0.2
      sql/sql_cache.h:
        Fixed compiler warnings from gcc 4.0.2
      sql/sql_class.h:
        Fixed compiler warnings from gcc 4.0.2
      sql/sql_parse.cc:
        Fixed compiler warnings from gcc 4.0.2
        (Not pretty, but seams to work...)
      sql/sql_select.h:
        Fixed compiler warnings from gcc 4.0.2
      sql/sql_update.cc:
        Fixed compiler warnings from gcc 4.0.2
      sql/table.h:
        Fixed compiler warnings from gcc 4.0.2
      sql/tztime.cc:
        Fixed compiler warnings from gcc 4.0.2
      sql/tztime.h:
        Fixed compiler warnings from gcc 4.0.2
      f5f01b15
  11. 24 Feb, 2006 1 commit
    • unknown's avatar
      Fix a typo in dbug printout · 7375fe24
      unknown authored
      sql/opt_range.cc:
        Fix a typo in dbug printout: print "min_val < partitioning_field < max_val",
        not "max_val < partitioning_field < max_val"
      7375fe24
  12. 20 Feb, 2006 1 commit
    • unknown's avatar
      BUG#15448 (group_min_max test failure): Don't bypass group-min-max optimizer entry point · c7d335a7
      unknown authored
      if we've got a tree of type ALWAYS or MAYBE.
      
      
      sql/opt_range.cc:
        BUG#15448 (group_min_max test failure): Don't buypass group-min-max optimizer entry point 
        if we've got a tree of type ALWAYS or MAYBE.
        The effect observed by this bug has been introduced by this cset: 
        ChangeSet 1.1967.5.2 2005/12/26 08:40:09 sergefp@mysql.com. The cset introduced PARAM::remove_jump_scans
        which purpose was to avoid making [always unsuccessful] attempts to construct index_merge for construct 
        index_merge for conditions like "t.key1partX=c1 OR t.key1partY=c2". The effect of this change was that some
        queries that previously had produced a SEL_TREE representing candidate for index_merge(X,Y) now started to 
        produce SEL_TREE with type=ALWAYS, and group-min-max analysis for these trees has been bypassed.
        In this fix we make SEL_TREE with type=ALWAYS to be processed in the same way as (SEL_TREE*)NULL, its equivalent.
      c7d335a7
  13. 16 Feb, 2006 1 commit
    • unknown's avatar
      BUG#15408: Partitions: subpartition names are not unique · d047fe77
      unknown authored
      Also, moved some of the code out of handler.h and into partition specific files for better 
      separation.
      Also, moved some of the C funcs into partition_info as formal C++ methods
      
      
      mysql-test/r/partition_mgm_err.result:
        result block for test of bug # 15408
      mysql-test/t/partition_mgm_err.test:
        test for duplicate subpartition names
      sql/Makefile.am:
        adding sql_partition.h, partition_info.cpp, partition_info.h, and partition_element.h to the makefile
      sql/ha_partition.cc:
        using the new members of partition_info
      sql/ha_partition.h:
        using the new members of partition_info
      sql/handler.h:
        moved this code into sql_partition.h
      sql/mysql_priv.h:
        including sql_partition.h also now
      sql/opt_range.cc:
        using the new members of partition_info
      sql/sql_partition.cc:
        moved some of the functions out and into the partition_info class
        using the new members of partition_info
      sql/sql_show.cc:
        using the new members of partition_info
      win/cmakefiles/sql:
        added partition_info.cpp to the sql cmake file
      sql/partition_element.h:
        New BitKeeper file ``sql/partition_element.h''
      sql/partition_info.h:
        New BitKeeper file ``sql/partition_info.h''
      sql/sql_partition.h:
        New BitKeeper file ``sql/sql_partition.h''
      d047fe77
  14. 14 Feb, 2006 1 commit
    • unknown's avatar
      dbug changes: · d3ee9abf
      unknown authored
      1. dbug state is now local to a thread
      2. new macros: DBUG_EXPLAIN, DBUG_EXPLAIN_INITIAL,
         DBUG_SET, DBUG_SET_INITIAL, DBUG_EVALUATE, DBUG_EVALUATE_IF
      3. macros are do{}while(0) wrapped
      4. incremental modifications to the dbug state (e.g. "+d,info:-t")
      5. dbug code cleanup, style fixes
      6. _db_on_ and DEBUGGER_ON/OFF removed
      7. rest of MySQL code fixed because of 3 (missing ;) and 6
      8. dbug manual updated
      9. server variable @@debug (global and local) to control dbug from SQL!
      a. -#T to print timestamps in the log
      
      
      BitKeeper/deleted/.del-readme.prof~2f3bae1550a0038d:
        Delete: dbug/readme.prof
      client/mysqlslap.c:
        typo fixed
      configure.in:
        test for sleep() too
      dbug/dbug.c:
        thread local dbug settings
        DBUG_EXPLAIN,DBUG_EXPLAIN_INITIAL,DBUG_SET,DBUG_SET_INITIAL
        style changes to be more in line with MySQL code
        cleanup (many mallocs removed)
        incremental modification of dbug state (e.g. DBUG_PUSH("+t:-d,info"))
        DBUG_SET, _db_explain_
        -#T
      dbug/monty.doc:
        obsolete and duplicate docs removed
      dbug/user.r:
        new features documented
      include/my_dbug.h:
        correct do{}while wrapping
        thread local dbug settings
        DBUG_EXPLAIN,DBUG_EXPLAIN_INITIAL,DBUG_SET,DBUG_SET_INITIAL
        DBUG_EVALUATE,DBUG_EVALUATE_IF
      libmysql/libmysql.c:
        remove _db_on_ and DEBUGGER_ON/OFF
      mysys/my_init.c:
        missed DBUG_RETURN
      mysys/my_thr_init.c:
        bugfix - transaction id's are unsigned
      mysys/testhash.c:
        remove _db_on_ and DEBUGGER_ON/OFF
      sql/ha_myisammrg.cc:
        missed ;
      sql/ha_ndbcluster.cc:
        remove _db_on_ and DEBUGGER_ON/OFF
        missed ;
      sql/ha_ndbcluster_binlog.cc:
        remove _db_on_ and DEBUGGER_ON/OFF
        missed ;
      sql/item_cmpfunc.cc:
        missed ;
      sql/lock.cc:
        missed DBUG_RETURN
      sql/log_event.cc:
        missed ;
      sql/mysqld.cc:
        remove _db_on_ and DEBUGGER_ON/OFF
        missed ;
        DBUG_SET_INITIAL
      sql/opt_range.cc:
        remove _db_on_ and DEBUGGER_ON/OFF
      sql/set_var.cc:
        class sys_var_thd_dbug and "debug" server variable
      sql/set_var.h:
        class sys_var_thd_dbug and "debug" server variable
      sql/slave.cc:
        missed ;
      sql/sql_cache.cc:
        missed ;
      sql/sql_plugin.cc:
        missed ;
      sql/sql_select.cc:
        remove _db_on_ and DEBUGGER_ON/OFF
      storage/heap/hp_test2.c:
        remove _db_on_ and DEBUGGER_ON/OFF
      storage/myisam/ft_eval.c:
        remove _db_on_ and DEBUGGER_ON/OFF
      storage/myisam/ft_test1.c:
        remove _db_on_ and DEBUGGER_ON/OFF
      storage/myisam/mi_open.c:
        remove _db_on_ and DEBUGGER_ON/OFF
        missed ;
      storage/myisam/mi_test1.c:
        remove _db_on_ and DEBUGGER_ON/OFF
      storage/myisam/mi_test2.c:
        remove _db_on_ and DEBUGGER_ON/OFF
      storage/myisam/mi_test3.c:
        remove _db_on_ and DEBUGGER_ON/OFF
      storage/ndb/src/ndbapi/DictCache.cpp:
        missed ;
      storage/ndb/src/ndbapi/NdbTransaction.cpp:
        missed ;
      tests/mysql_client_test.c:
        remove _db_on_ and DEBUGGER_ON/OFF
      d3ee9abf
  15. 06 Feb, 2006 1 commit
    • unknown's avatar
      Fixed bug #16203. · d8c96f28
      unknown authored
      If check_quick_select returns non-empty range then the function cost_group_min_max
      cannot return 0 as an estimate of the number of retrieved records.
      Yet the function erroneously returned 0 as the estimate in some situations.
      
      
      mysql-test/r/group_min_max.result:
        Added a test case for bug #16203.
      mysql-test/t/group_min_max.test:
        Added a test case for bug #16203.
      d8c96f28
  16. 30 Jan, 2006 1 commit
    • unknown's avatar
      Windows compile fixes in preparation for 5.1.6 beta. · ab88a598
      unknown authored
      VC++Files/client/mysqldump.vcproj:
        Add missing source file.
      VC++Files/mysql.sln:
        Fix configuration mismatch.
      VC++Files/sql/mysqld.vcproj:
        Enable row-based replication.
        Add missing source files.
      scripts/make_win_src_distribution.sh:
        Add copying of missing directory.
      sql/event.h:
        Fix type conflict only visible on Windows.
      sql/event_executor.cc:
        Fix non-portable thread stuff.
      sql/event_timed.cc:
        Fix type conflict only visible on Windows.
      sql/ha_archive.cc:
        Add cast needed for Windows.
      sql/handler.h:
        Fix Windows byte * <-> char * mismatch.
      sql/opt_range.cc:
        Fix Windows byte * <-> char * mismatch.
      sql/set_var.cc:
        BUG#16811
        Fix Windows compilation by making the cast-away of volatile implicit
        (Windows linker does not like volatile <-> non-volatile mismatch, in
        contrast to Unix)
      sql/sql_partition.cc:
        Fix Windows byte * <-> char * mismatch.
      ab88a598
  17. 29 Jan, 2006 1 commit
    • unknown's avatar
      WL# 2986 · ff5d0124
      unknown authored
      Final patch
      -----------
      
      This WL is about using this bitmap in all parts of the partition handler.
      Thus for:
      rnd_init/rnd_next
      index_init/index_next and all other variants of index scans
      read_range_... the various range scans implemented in the partition handler.
      
      Also use those bitmaps in the various other calls that currently loop over all
      partitions.
      
      
      
      
      mysql-test/r/partition_pruning.result:
        WL# 2986
        
        New results reflecting bitmap being used to determine if a partition is to be
        included
      mysql-test/t/partition_pruning.test:
        WL# 2986
        
        New tests to show bitmap being used in ha_partition
      sql/ha_partition.cc:
        WL# 2986
        
        Used work from 2682 and removed the partition select code.
            
        Added do {} while loop to any iteration over partitions to now utilise 
        m_part_info->used_partitions bitmap to determine if a partition should be
        used.
      sql/ha_partition.h:
        WL# 2986
        
        Removed unused member
      sql/handler.h:
        WL# 2986
        
        Removed unused member
      sql/opt_range.cc:
        WL# 2986
        
        Added bitmap_clear_all to clear bitmap prior to pruning
        DBUG code for testing
      sql/sql_partition.cc:
        WL# 2986
        
        Changed < to <=, which fixes the problem with edge cases going awry.
      ff5d0124
  18. 26 Jan, 2006 1 commit
    • unknown's avatar
      WL#3023 (RBR: Use locks in a statment-like manner): · a89c10fd
      unknown authored
        Interface changes pushed early.
        Separation of public and implementation interface for external_lock()
        in preparation for implementation.
      
      
      sql/handler.cc:
        Separating public virtual external_lock() into public non-virtual
        ha_external_lock() and private virtual external_lock().  Some minor
        changes to ha_*_row() function.
      sql/handler.h:
        Separating public virtual external_lock() into public non-virtual
        ha_external_lock() and private virtual external_lock().
      sql/lock.cc:
        Using new public ha_external_lock instead of internal external_lock.
      sql/opt_range.cc:
        Using new public ha_external_lock instead of internal external_lock.
      sql/sql_table.cc:
        Using new public ha_external_lock instead of internal external_lock.
      a89c10fd
  19. 17 Jan, 2006 1 commit
    • unknown's avatar
      WL #2747: Fix such that backup and restore works for user defined · 6f83ed91
      unknown authored
      partitioned tables in NDB
      
      
      include/my_sys.h:
        Move packfrm and unpackfrm to mysys
      mysql-test/r/ndb_restore.result:
        New test cases
      mysql-test/t/ndb_restore.test:
        New test cases
      mysys/my_compress.c:
        Moved packfrm and unpackfrm to mysys
      sql/ha_ndbcluster.cc:
        Set value of partition function in hidden field for user defined
        partitioning in NDB to handle restore and later on-line reorganize
        of partitions
        To save space value of those functions are limited to 32 bits
      sql/ha_partition.cc:
        Use new get_partition_id interface
      sql/handler.h:
        Use new get_partition_id interface
      sql/mysql_priv.h:
        Moved to mysys
      sql/mysqld.cc:
        Minor
      sql/opt_range.cc:
        New get_partition_id interface
      sql/sql_partition.cc:
        New get_partition_id interface
        Fix error checks of specification of engines in ALTER TABLE
        Moved packfrm and unpackfrm to mysys
      sql/sql_table.cc:
        Fixed debug printouts
      storage/ndb/include/kernel/ndb_limits.h:
        New constant
      storage/ndb/include/kernel/signaldata/DictTabInfo.hpp:
        New table description item
      storage/ndb/include/ndb_version.h.in:
        New version specific constant
      storage/ndb/include/ndbapi/NdbDictionary.hpp:
        New item in table descriptions
      storage/ndb/src/common/debugger/signaldata/DictTabInfo.cpp:
        New item in table descriptions
      storage/ndb/src/kernel/blocks/backup/Backup.cpp:
        Write fragment id in backup's log entry
      storage/ndb/src/kernel/blocks/backup/BackupFormat.hpp:
        Write fragment id in backup's log entry
      storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp:
        New item in table description
      storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp:
        New item in table description
      storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp:
        Moved constant
      storage/ndb/src/ndbapi/NdbDictionary.cpp:
        New item in table description
      storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp:
        New item in table description
      storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp:
        New item in table description
      storage/ndb/tools/Makefile.am:
        Compress library needed for ndb_restore
      storage/ndb/tools/restore/Restore.cpp:
        Handle fragment id and also handle backups from older versions
      storage/ndb/tools/restore/Restore.hpp:
        Use fragment id
      storage/ndb/tools/restore/consumer.hpp:
        Use fragment id
      storage/ndb/tools/restore/consumer_printer.cpp:
        Use fragment id
      storage/ndb/tools/restore/consumer_printer.hpp:
        Use fragment id
      storage/ndb/tools/restore/consumer_restore.cpp:
        Code to map node groups if new cluster has different set of
        node groups from original cluster
        Very simple search and replace parser of partition syntax in frm file
        Fix settings of partition id properly using fragment id and hidden
        field in tables
      storage/ndb/tools/restore/consumer_restore.hpp:
        Changed function headers and new one for mapping node groups
      storage/ndb/tools/restore/consumer_restorem.cpp:
        Use fragment id
      storage/ndb/tools/restore/restore_main.cpp:
        New parameter to set node group map, parser for this parameter
      6f83ed91
  20. 05 Jan, 2006 2 commits
    • unknown's avatar
      Review fixes of new pushed code · 64206b18
      unknown authored
      - Fixed tests
      - Optimized new code
      - Fixed some unlikely core dumps
      - Better bug fixes for:
        - #14397 - OPTIMIZE TABLE with an open HANDLER causes a crash
        - #14850 (ERROR 1062 when a quering a view using a Group By on a column that can be null
      
      
      mysql-test/r/create.result:
        Update results after removing wrong warnings for CREATE ... SELECT
        New tests
      mysql-test/r/handler.result:
        Drop used tables
      mysql-test/r/kill.result:
        Make test portable
      mysql-test/r/mysqlshow.result:
        Drop tables used by previous test
      mysql-test/r/trigger.result:
        Reuse old procedure name
      mysql-test/r/view.result:
        Extra tests
      mysql-test/t/create.test:
        New tests to test fix of removing wrong warnings for CREATE ... SELECT
      mysql-test/t/disabled.def:
        Enable 'kill' test (should now be portable)
      mysql-test/t/handler.test:
        Drop used tables
      mysql-test/t/kill.test:
        Make test portable even if kill doesn't work at once
      mysql-test/t/mysqlshow.test:
        Drop tables used by previous test
      mysql-test/t/trigger.test:
        Reuse old procedure name
      mysql-test/t/view.test:
        Extra tests
      sql/field.cc:
        Removed compiler warning
      sql/ha_federated.cc:
        my_snprintf -> strmake()
        (Simple optimization)
      sql/ha_ndbcluster.cc:
        Indentation cleanups and trival optimization
      sql/item.cc:
        Moved save_org_in_field() to item.cc to make it easier to test
        Remove setting of null_value as this is not needed
      sql/item.h:
        Moved save_org_in_field() to item.cc to make it easier to test
      sql/log_event.cc:
        Remove inline of slave_load_file_stem()
        Added 'extension' parameter to slave_load_file_stem() to get smaller code
        Removed not critical (or needed) DBUG_ASSERT()'s
        Cleaned up usage of slave_load_file_stem() to not depend on constant string lengths
        Indentation fixes
      sql/opt_range.cc:
        Moved code from declaration to function body
        (To make it more readable)
      sql/parse_file.cc:
        Fixed DBUG_PRINT
      sql/sp.cc:
        Simple cleanups
        - Removed not needed {} level
        - Ensure saved variables starts with old_
      sql/sp_head.cc:
        Indentation fixes
        Remove core dump when using --debug when m_next_cached_sp == 0
        Fixed compiler warnings
        Trivial optimizations
      sql/sp_head.h:
        Changed argument to set_definer() to const
        Added THD argument to recursion_level_error() to avoid call to current_thd
      sql/sql_acl.cc:
        Removed not needed test (first_not_own_table is the guard)
      sql/sql_base.cc:
        Removed extra empty line
      sql/sql_handler.cc:
        Don't test table version in mysql_ha_read() as this is already tested in lock_tables()
        Moved call to insert_fields to be after lock_table() to guard aganst reopen of tables
        (Better fix for Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash)
      sql/sql_insert.cc:
        Mark fields that are set in CREATE ... SELECT as used
        (Removed wrong warnings about field not having a default value)
      sql/sql_parse.cc:
        Removed not needed test of 'tables' (first_not_own_table is the guard)
        Simplify code
      sql/sql_select.cc:
        Use group->field to check if value is null instead of item called by 'save_org_in_field'
        This is a better bug fix for #14850 (ERROR 1062 when a quering a view using a Group By on a column that can be null)
      sql/sql_trigger.cc:
        Move sql_modes_parameters outside of function
        Indentation fixes
        Fixed compiler warning
        Ensure that thd->lex->query_tables_own_last is set properly before calling check_table_access()
        (This allows us to remove the extra test in check_grant() and check_table_access())
      64206b18
    • unknown's avatar
  21. 04 Jan, 2006 1 commit
    • unknown's avatar
      WL#2985 "Partition Pruning": · dc2a6e22
      unknown authored
      - post-...-post review fixes
      - Added "integer range walking" that allows to do partition pruning for "a <=? t.field <=? b"
        by finding used partitions for a, a+1, a+2, ..., b-1, b. 
      
      
      mysql-test/r/partition_pruning.result:
        WL#2985 "Partition Pruning": tests for "integer range walking"
      mysql-test/t/partition.test:
        WL#2985 "Partition Pruning": post-review fixes
      mysql-test/t/partition_pruning.test:
        WL#2985 "Partition Pruning": tests for "integer range walking"
      sql/handler.h:
        WL#2985 "Partition Pruning": "integer range walking": 
        - class partition_info now has pointers to "partitioning interval analysis" functions
        - added "partition set iterator" definitions.
      sql/opt_range.cc:
        WL#2985 "Partition Pruning": "integer range walking":
        - Switched to use "partitioning interval analysis" functions
        - Fixed two problems in find_used_partitions() that occur on complicated WHERE clauses.
      sql/sql_partition.cc:
        WL#2985 "Partition Pruning": "integer range walking": 
        - Added "partitioning interval analysis" functions: get_part_iter_for_interval_via_mapping, 
          get_part_iter_for_interval_via_walking, 
        - Added appropriate partition-set-iterator implementations
        - Added a function to set up Partitioning Interval Analysis-related fields in partition_info.
      sql/sql_select.cc:
        WL#2985 "Partition pruning": added comments.
      dc2a6e22
  22. 03 Jan, 2006 1 commit
    • unknown's avatar
      many warnings (practically safe but annoying) corrected · 307c0b77
      unknown authored
      client/mysqladmin.cc:
        don't use the handler after it's closed
      client/mysqlbinlog.cc:
        memory leak
      client/mysqldump.c:
        many "ignore return value" warnings, one "NULL dereference"
      cmd-line-utils/libedit/history.c:
        memory leak
      include/my_base.h:
        cleanup
      libmysql/libmysql.c:
        "return value ignored" warning
      myisam/mi_delete.c:
        "return value ignored" warning
      myisam/myisampack.c:
        "out-of-bound access" warning
      myisam/sort.c:
        "double free" warning
      mysys/default_modify.c:
        "double free" warning
      mysys/mf_iocache2.c:
        "return value ignored" warnings
      mysys/my_bitmap.c:
        s/return/DBUG_RETURN/
      mysys/my_error.c:
        memory leak
      server-tools/instance-manager/parse.cc:
        "NULL dereference" warning
      sql-common/client.c:
        "NULL dereference" warning
      sql/field.cc:
        deadcode, "NULL dereference", "uninitialized" warnings
      sql/field.h:
        unused parameters removed from constructor
      sql/ha_myisam.cc:
        "return value ignored" warnings
      sql/item.cc:
        "return value ignored" warnings
        changed constructor
      sql/item_func.cc:
        "return value ignored" warnings
      sql/log_event.cc:
        uninitialized warning
      sql/opt_range.cc:
        "double free" and uninitialized warnings
      sql/opt_range.h:
        "return value ignored" warning
      sql/repl_failsafe.cc:
        "return value ignored" warning
      sql/set_var.cc:
        "return value ignored" warning
      sql/slave.cc:
        "return value ignored" warnings
      sql/slave.h:
        new prototype
      sql/sql_acl.cc:
        deadcode and "NULL dereference" warnings
      sql/sql_db.cc:
        "return value ignored" warning
      sql/sql_handler.cc:
        "NULL dereference" warning
      sql/sql_help.cc:
        "NULL dereference" warning
      sql/sql_insert.cc:
        "return value ignored" warning
      sql/sql_parse.cc:
        "return value ignored" warning
        one more DBUG_ASSERT
      sql/sql_repl.cc:
        "return value ignored" and memory leak warnings
      sql/sql_show.cc:
        "return value ignored" and "NULL dereference"  warnings
      sql/sql_test.cc:
        "return value ignored" warning
      sql/table.cc:
        memory leak
      sql/uniques.cc:
        "return value ignored" warning
        endspaces deleted
      307c0b77
  23. 29 Dec, 2005 1 commit
  24. 27 Dec, 2005 1 commit
    • unknown's avatar
      WL#2985 "Partition pruning", postreview fixes: Small code fixes and better comments · e6bff9a6
      unknown authored
      mysql-test/r/partition.result:
        Added testcase for BUG#15819
      mysql-test/t/partition.test:
        Added testcase for BUG#15819
      sql/item.h:
        WL#2985 "Partition pruning", postreview fixes: better comments
      sql/item_timefunc.cc:
        WL#2985 "Partition pruning", postreview fixes: better comments
      sql/opt_range.cc:
        WL#2985 "Partition pruning", postreview fixes: 
        - better comments, local function renames
        - Made SEL_ARG::is_singlepoint() to correctly handle NULL edge values.
        - fix uninitialized variable access: s/res |=/res =/
      sql/sql_class.cc:
        WL#2985 "Partition pruning", postreview fixes: 
        Set correct max. length of "partitions" column in EXPLAIN output
      sql/sql_lex.h:
        WL#2985 "Partition pruning", postreview fixes: better comments
      sql/sql_partition.cc:
        WL#2985 "Partition pruning", postreview fixes: better comments
      e6bff9a6
  25. 26 Dec, 2005 3 commits
    • unknown's avatar
      WL#2985 "Partition pruning": fixes to post-review fixes: when modifying SEL_TREE::keys, · b3abc977
      unknown authored
      adjust SEL_TREE::keys_map appropriately.
      
      
      b3abc977
    • unknown's avatar
      Fix typo bug in previous cset · 32ff7d99
      unknown authored
      32ff7d99
    • unknown's avatar
      WL#2985 "Partition Pruning": post-review fixes: · a4a1bb0e
      unknown authored
      - Added more comments.
      - Added a RANGE_OPT_PARAM::remove_jump_scans flag that disables construction of index_merge
        SEL_TREEs that represent unusable conditions like "key1part1<c1 OR key2part2<c2"
      - make prune_partitions() function handle the case where range analysis produces a list of 
        index_merge trees (it turned out that this is possible, appropriate test case added).
      - Other small fixes.
      
      
      mysql-test/r/partition_pruning.result:
        WL#2985 "Partition Pruning": post-review fixes: more test cases
      mysql-test/t/partition_pruning.test:
        WL#2985 "Partition Pruning": post-review fixes: more test cases
      sql/opt_range.cc:
        WL#2985 "Partition Pruning": post-review fixes:
        - Added more comments.
        - Fix the debug printouts
        - Added a RANGE_OPT_PARAM::remove_jump_scans flag that disables construction of index_merge
          SEL_TREEs that represent unusable conditions like "key1part1<c1 OR key2part2<c2"
        - make prune_partitions() function handle the case where range analysis produces a list of 
          index_merge trees (it turned out that this is possible, appropriate test case added).
      sql/sql_partition.cc:
        WL#2985 "Partition Pruning": post-review fixes: make requested edits in comments.
      sql/table.h:
        WL#2985 "Partition Pruning": post-review fixes: added bool TABLE::no_partitions_used
        (this change was missed when making the original cset)
      a4a1bb0e
  26. 22 Dec, 2005 1 commit
    • unknown's avatar
      WL#2985 "Partition Pruning" · f19fb870
      unknown authored
      sql/ha_ndbcluster.cc:
        WL#2985 "Partition Pruning": added part_info->used_partitions initialization
      sql/ha_partition.cc:
        WL#2985 "Partition Pruning": added part_info->used_partitions initialization
      sql/handler.h:
        WL#2985 "Partition Pruning": 
        Added function prototypes
        in partition_info:
         - Added 'used_partitions' bitmap
         - Added comments
      sql/item.h:
        WL#2985 "Partition Pruning": 
        - added enum monotonicity_info
        - added virtual Item::get_monotonicity_info()
      sql/item_timefunc.cc:
        WL#2985 "Partition Pruning": 
        - added Item_func_to_days::get_monotonicity_info()
        - added Item_func_year::get_monotonicity_info()
      sql/item_timefunc.h:
        WL#2985 "Partition Pruning": 
        - added Item_func_to_days::get_monotonicity_info()
        - added Item_func_year::get_monotonicity_info()
      sql/opt_range.cc:
        WL#2985 "Partition Pruning":
        - Split out PARAM structure into PARAM and RANGE_OPT_PARAM part.
        - Added partition pruning module code.
      sql/opt_range.h:
        WL#2985 "Partition Pruning": 
        Added prune_partitions() function declaration. This is the entry point for partition pruning 
        module
      sql/sql_class.cc:
        WL#2985 "Partition Pruning": added support for "EXPLAIN PARTITIONS SELECT ..."
      sql/sql_lex.h:
        WL#2985 "Partition Pruning": added support for "EXPLAIN PARTITIONS SELECT ..."
      sql/sql_partition.cc:
        WL#2985 "Partition Pruning": 
         - Added get_list_array_idx_for_endpoint and get_range_... functions to support partition 
           pruning on "partition_field < const"-like intervals.
         - Added partition_info::used_partitions bitmap.
         - Added make_used_partitions_str function
         - Fixed BUG#15819
      sql/sql_select.cc:
        WL#2985 "Partition Pruning": 
        - Added prune_partitions() invocation right before the range analysis
        - Added code to handle return value from prune_partitions()
        - Added support for "EXPLAIN PARTITIONS SELECT ..."
      sql/sql_yacc.yy:
        #2985 "Partition Pruning": added support for "EXPLAIN PARTITIONS SELECT ..."
      f19fb870
  27. 02 Dec, 2005 1 commit
    • unknown's avatar
      Bug#10932 - Building server with key limit of 128, makes test cases fail · 65d412db
      unknown authored
      Allow for configuration of the maximum number of indexes per table.
      Added and used a configure.in macro.
      Replaced fixed limits by the configurable limit.
      Limited MyISAM indexes to its hard limit.
      Fixed a bug in opt_range.cc for many indexes with InnoDB.
      
      Tested for 2, 63, 64, 65, 127, 128, 129, 255, 256, and 257 indexes.
      Testing this part of the bugfix requires rebuilding of the server 
      with different options. This cannot be done with our test suite. 
      Therefore I added the necessary test files to the bug report.
      If you repeat the tests, please note that the ps_* tests fail for
      everything but 64 indexes. This is because of differences in the 
      meta data, namely field lengths for index names etc.
      
      
      config/ac-macros/misc.m4:
        Bug#10932 - Building server with key limit of 128, makes test cases fail
        Allow for configuration of the maximum number of indexes per table.
        Added a macro for the new build option.
      configure.in:
        Bug#10932 - Building server with key limit of 128, makes test cases fail
        Allow for configuration of the maximum number of indexes per table.
        Added a call for the new macro.
      include/myisam.h:
        Bug#10932 - Building server with key limit of 128, makes test cases fail
        Allow for configuration of the maximum number of indexes per table.
        Limit the number of keys for MyISAM to its hard limit.
      sql/mysql_priv.h:
        Bug#10932 - Building server with key limit of 128, makes test cases fail
        Allow for configuration of the maximum number of indexes per table.
        Stick with the optimized Bitmap<64> if indexes are limited to 64
        or lower. Otherwise use a bigger bitmap. It must be defined as a
        multiple of 8.
      sql/opt_range.cc:
        Bug#10932 - Building server with key limit of 128, makes test cases fail
        Allow for configuration of the maximum number of indexes per table.
        Initialize an object element to avoid a crash when using InnoDB
        with many indexes.
      sql/unireg.h:
        Bug#10932 - Building server with key limit of 128, makes test cases fail
        Allow for configuration of the maximum number of indexes per table.
        Replace the fixed limit by the configurable limit.
      tests/mysql_client_test.c:
        Bug#10932 - Building server with key limit of 128, makes test cases fail
        Allow for configuration of the maximum number of indexes per table.
        Replace the fixed limit by the configurable limit.
      65d412db
  28. 25 Nov, 2005 1 commit
  29. 24 Nov, 2005 2 commits
    • unknown's avatar
      Fix bug#13293 Wrongly used index results in endless loop. · 591fabb3
      unknown authored
      Loose index scan using only second part of multipart index was choosen, which
      results in creating wrong keys and endless loop.
      
      get_best_group_min_max() now allows loose index scan for distinct only if used
      keyparts forms a prefix of the index.
      
      
      mysql-test/t/group_min_max.test:
        Test case for bug #13293 Wrongly used index results in endless loop.
      mysql-test/r/group_min_max.result:
        Test case for bug #13293 Wrongly used index results in endless loop.
      sql/opt_range.cc:
        Fix bug #13293 Wrongly used index results in endless loop.
        get_best_group_min_max() now allows loose index scan for distinct only if used keyparts forms a prefix of the index.
      591fabb3
    • unknown's avatar
      Added bitmap_buffer_size() · 0db7a010
      unknown authored
      Removed valgrind warnings when using not aligned bitmap buffer size
      Added setting of thread_stack
      
      
      include/my_bitmap.h:
        Added bitmap_buffer_size()
      sql/handler.cc:
        use bitmap_buffer_size()
      sql/opt_range.cc:
        use bitmap_buffer_size()
      sql/sql_insert.cc:
        Use bitmap_buffer_size()
      sql/sql_parse.cc:
        Added setting of thread_stack when taking thread from thread cache
      sql/sql_plugin.cc:
        Set thread_stack
      0db7a010
  30. 23 Nov, 2005 1 commit
    • unknown's avatar
      Table definition cache, part 2 · f631b361
      unknown authored
      The table opening process now works the following way:
      - Create common TABLE_SHARE object
      - Read the .frm file and unpack it into the TABLE_SHARE object
      - Create a TABLE object based on the information in the TABLE_SHARE
        object and open a handler to the table object
      
      Other noteworthy changes:
      - In TABLE_SHARE the most common strings are now LEX_STRING's
      - Better error message when table is not found
      - Variable table_cache is now renamed 'table_open_cache'
      - New variable 'table_definition_cache' that is the number of table defintions that will be cached
      - strxnmov() calls are now fixed to avoid overflows
      - strxnmov() will now always add one end \0 to result
      - engine objects are now created with a TABLE_SHARE object instead of a TABLE object.
      - After creating a field object one must call field->init(table) before using it
      
      - For a busy system this change will give you:
       - Less memory usage for table object
       - Faster opening of tables (if it's has been in use or is in table definition cache)
       - Allow you to cache many table definitions objects
       - Faster drop of table
      
      
      mysql-test/mysql-test-run.sh:
        Fixed some problems with --gdb option
        Test both with socket and tcp/ip port that all old servers are killed
      mysql-test/r/flush_table.result:
        More tests with lock table with 2 threads + flush table
      mysql-test/r/information_schema.result:
        Removed old (now wrong) result
      mysql-test/r/innodb.result:
        Better error messages (thanks to TDC patch)
      mysql-test/r/merge.result:
        Extra flush table test
      mysql-test/r/ndb_bitfield.result:
        Better error messages (thanks to TDC patch)
      mysql-test/r/ndb_partition_error.result:
        Better error messages (thanks to TDC patch)
      mysql-test/r/query_cache.result:
        Remove tables left from old tests
      mysql-test/r/temp_table.result:
        Test truncate with temporary tables
      mysql-test/r/variables.result:
        Table_cache -> Table_open_cache
      mysql-test/t/flush_table.test:
        More tests with lock table with 2 threads + flush table
      mysql-test/t/merge.test:
        Extra flush table test
      mysql-test/t/multi_update.test:
        Added 'sleep' to make test predictable
      mysql-test/t/query_cache.test:
        Remove tables left from old tests
      mysql-test/t/temp_table.test:
        Test truncate with temporary tables
      mysql-test/t/variables.test:
        Table_cache -> Table_open_cache
      mysql-test/valgrind.supp:
        Remove warning that may happens becasue threads dies in different order
      mysys/hash.c:
        Fixed wrong DBUG_PRINT
      mysys/mf_dirname.c:
        More DBUG
      mysys/mf_pack.c:
        Better comment
      mysys/mf_tempdir.c:
        More DBUG
        Ensure that we call cleanup_dirname() on all temporary directory paths.
        
        If we don't do this, we will get a failure when comparing temporary table
        names as in some cases the temporary table name is run through convert_dirname())
      mysys/my_alloc.c:
        Indentation fix
      sql/examples/ha_example.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/examples/ha_example.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/examples/ha_tina.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/examples/ha_tina.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/field.cc:
        Update for table definition cache:
        - Field creation now takes TABLE_SHARE instead of TABLE as argument
          (This is becasue field definitions are now cached in TABLE_SHARE)
          When a field is created, one now must call field->init(TABLE) before using it
        - Use s->db instead of s->table_cache_key
        - Added Field::clone() to create a field in TABLE from a field in TABLE_SHARE
        - make_field() takes TABLE_SHARE as argument instead of TABLE
        - move_field() -> move_field_offset()
      sql/field.h:
        Update for table definition cache:
        - Field creation now takes TABLE_SHARE instead of TABLE as argument
          (This is becasue field definitions are now cached in TABLE_SHARE)
          When a field is created, one now must call field->init(TABLE) before using it
        - Added Field::clone() to create a field in TABLE from a field in TABLE_SHARE
        - make_field() takes TABLE_SHARE as argument instead of TABLE
        - move_field() -> move_field_offset()
      sql/ha_archive.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_archive.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_berkeley.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        Changed name of argument create() to not hide internal 'table' variable.
        table->s  -> table_share
      sql/ha_berkeley.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_blackhole.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_blackhole.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_federated.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        Fixed comments
        Remove index variable and replace with pointers (simple optimization)
        move_field() -> move_field_offset()
        Removed some strlen() calls
      sql/ha_federated.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_heap.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        Simplify delete_table() and create() as the given file names are now without extension
      sql/ha_heap.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_innodb.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_innodb.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_myisam.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        Remove not needed fn_format()
        Fixed for new table->s structure
      sql/ha_myisam.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_myisammrg.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        Don't set 'is_view' for MERGE tables
        Use new interface to find_temporary_table()
      sql/ha_myisammrg.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        Added flag HA_NO_COPY_ON_ALTER
      sql/ha_ndbcluster.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        Fixed wrong calls to strxnmov()
        Give error HA_ERR_TABLE_DEF_CHANGED if table definition has changed
        drop_table -> intern_drop_table()
        table->s -> table_share
        Move part_info to TABLE
        Fixed comments & DBUG print's
        New arguments to print_error()
      sql/ha_ndbcluster.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_partition.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        We can't set up or use part_info when creating handler as there is not yet any table object
        New ha_intialise() to work with TDC (Done by Mikael)
      sql/ha_partition.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        Got set_part_info() from Mikael
      sql/handler.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        ha_delete_table() now also takes database as an argument
        handler::ha_open() now takes TABLE as argument
        ha_open() now calls ha_allocate_read_write_set()
        Simplify ha_allocate_read_write_set()
        Remove ha_deallocate_read_write_set()
        Use table_share (Cached by table definition cache)
      sql/handler.h:
        New table flag: HA_NO_COPY_ON_ALTER (used by merge tables)
        Remove ha_deallocate_read_write_set()
        get_new_handler() now takes TABLE_SHARE as argument
        ha_delete_table() now gets database as argument
      sql/item.cc:
        table_name and db are now LEX_STRING objects
        When creating fields, we have now have to call field->init(table)
        move_field -> move_field_offset()
      sql/item.h:
        tmp_table_field_from_field_type() now takes an extra paramenter 'fixed_length' to allow one to force usage of CHAR
         instead of BLOB
      sql/item_cmpfunc.cc:
        Fixed call to tmp_table_field_from_field_type()
      sql/item_create.cc:
        Assert if new not handled cast type
      sql/item_func.cc:
        When creating fields, we have now have to call field->init(table)
        dummy_table used by 'sp' now needs a TABLE_SHARE object
      sql/item_subselect.cc:
        Trivial code cleanups
      sql/item_sum.cc:
        When creating fields, we have now have to call field->init(table)
      sql/item_timefunc.cc:
        Item_func_str_to_date::tmp_table_field() now replaced by call to
         tmp_table_field_from_field_type() (see item_timefunc.h)
      sql/item_timefunc.h:
        Simply tmp_table_field()
      sql/item_uniq.cc:
        When creating fields, we have now have to call field->init(table)
      sql/key.cc:
        Added 'KEY' argument to 'find_ref_key' to simplify code
      sql/lock.cc:
        More debugging
        Use create_table_def_key() to create key for table cache
        Allocate TABLE_SHARE properly when creating name lock
        Fix that locked_table_name doesn't test same table twice
      sql/mysql_priv.h:
        New functions for table definition cache
        New interfaces to a lot of functions.
        New faster interface to find_temporary_table() and close_temporary_table()
      sql/mysqld.cc:
        Added support for table definition cache of size 'table_def_size'
        Fixed som calls to strnmov()
        Changed name of 'table_cache' to 'table_open_cache'
      sql/opt_range.cc:
        Use new interfaces
        Fixed warnings from valgrind
      sql/parse_file.cc:
        Safer calls to strxnmov()
        Fixed typo
      sql/set_var.cc:
        Added variable 'table_definition_cache'
        Variable table_cache renamed to 'table_open_cache'
      sql/slave.cc:
        Use new interface
      sql/sp.cc:
        Proper use of TABLE_SHARE
      sql/sp_head.cc:
        Remove compiler warnings
        We have now to call field->init(table)
      sql/sp_head.h:
        Pointers to parsed strings are now const
      sql/sql_acl.cc:
        table_name is now a LEX_STRING
      sql/sql_base.cc:
        Main implementation of table definition cache
        (The #ifdef's are there for the future when table definition cache will replace open table cache)
        Now table definitions are cached indepndent of open tables, which will speed up things when a table is in use at once from several places
        Views are not yet cached; For the moment we only cache if a table is a view or not.
        
        Faster implementation of find_temorary_table()
        Replace 'wait_for_refresh()' with the more general function 'wait_for_condition()'
        Drop table is slightly faster as we can use the table definition cache to know the type of the table
      sql/sql_cache.cc:
        table_cache_key and table_name are now LEX_STRING
        'sDBUG print fixes
      sql/sql_class.cc:
        table_cache_key is now a LEX_STRING
        safer strxnmov()
      sql/sql_class.h:
        Added number of open table shares (table definitions)
      sql/sql_db.cc:
        safer strxnmov()
      sql/sql_delete.cc:
        Use new interface to find_temporary_table()
      sql/sql_derived.cc:
        table_name is now a LEX_STRING
      sql/sql_handler.cc:
        TABLE_SHARE->db and TABLE_SHARE->table_name are now LEX_STRING's
      sql/sql_insert.cc:
        TABLE_SHARE->db and TABLE_SHARE->table_name are now LEX_STRING's
      sql/sql_lex.cc:
        Make parsed string a const (to quickly find out if anything is trying to change the query string)
      sql/sql_lex.h:
        Make parsed string a const (to quickly find out if anything is trying to change the query string)
      sql/sql_load.cc:
        Safer strxnmov()
      sql/sql_parse.cc:
        Better error if wrong DB name
      sql/sql_partition.cc:
        part_info moved to TABLE from TABLE_SHARE
        Indentation changes
      sql/sql_select.cc:
        Indentation fixes
        Call field->init(TABLE) for new created fields
        Update create_tmp_table() to use TABLE_SHARE properly
      sql/sql_select.h:
        Call field->init(TABLE) for new created fields
      sql/sql_show.cc:
        table_name is now a LEX_STRING
        part_info moved to TABLE
      sql/sql_table.cc:
        Use table definition cache to speed up delete of tables
        Fixed calls to functions with new interfaces
        Don't use 'share_not_to_be_used'
        Instead of doing openfrm() when doing repair, we now have to call
        get_table_share() followed by open_table_from_share().
        Replace some fn_format() with faster unpack_filename().
        Safer strxnmov()
        part_info is now in TABLE
        Added Mikaels patch for partition and ALTER TABLE
        Instead of using 'TABLE_SHARE->is_view' use 'table_flags() & HA_NO_COPY_ON_ALTER
      sql/sql_test.cc:
        table_name and table_cache_key are now LEX_STRING's
      sql/sql_trigger.cc:
        TABLE_SHARE->db and TABLE_SHARE->table_name are now LEX_STRING's
        safer strxnmov()
        Removed compiler warnings
      sql/sql_update.cc:
        Call field->init(TABLE) after field is created
      sql/sql_view.cc:
        safer strxnmov()
        Create common TABLE_SHARE object for views to allow us to cache if table is a view
      sql/structs.h:
        Added SHOW_TABLE_DEFINITIONS
      sql/table.cc:
        Creation and destruct of TABLE_SHARE objects that are common for many TABLE objects
        
        The table opening process now works the following way:
        - Create common TABLE_SHARE object
        - Read the .frm file and unpack it into the TABLE_SHARE object
        - Create a TABLE object based on the information in the TABLE_SHARE
          object and open a handler to the table object
        
        open_table_def() is written in such a way that it should be trival to add parsing of the .frm files in new formats
      sql/table.h:
        TABLE objects for the same database table now share a common TABLE_SHARE object
        In TABLE_SHARE the most common strings are now LEX_STRING's
      sql/unireg.cc:
        Changed arguments to rea_create_table() to have same order as other functions
        Call field->init(table) for new created fields
      sql/unireg.h:
        Added OPEN_VIEW
      strings/strxnmov.c:
        Change strxnmov() to always add end \0
        This makes usage of strxnmov() safer as most of MySQL code assumes that strxnmov() will create a null terminated string
      f631b361
  31. 20 Nov, 2005 1 commit
    • unknown's avatar
      Inefficient usage of String::append() fixed. · fe63e095
      unknown authored
      Bad examples of usage of a string with its length fixed.
      The incorrect length in the trigger file configuration descriptor
        fixed (BUG#14090).
      A hook for unknown keys added to the parser to support old .TRG files.
      
      
      sql/field.cc:
        Inefficient usage of String::append() fixed.
        Bad examples of usage of a string with its length fixed.
      sql/ha_berkeley.cc:
        A bad example of usage of a string with its length fixed.
      sql/ha_federated.cc:
        Inefficient usage of String::append() fixed.
      sql/ha_myisammrg.cc:
        Bad examples of usage of a string with its length fixed.
      sql/handler.cc:
        Inefficient usage of String::append() fixed.
      sql/item.cc:
        Bad examples of usage of a string with its length fixed.
      sql/item.h:
        A bad example of usage of a string with its length fixed.
      sql/item_cmpfunc.cc:
        Bad examples of usage of a string with its length fixed.
      sql/item_func.cc:
        Bad examples of usage of a string with its length fixed.
      sql/item_strfunc.cc:
        Bad examples of usage of a string with its length fixed.
      sql/item_subselect.cc:
        Bad examples of usage of a string with its length fixed.
      sql/item_sum.cc:
        Bad examples of usage of a string with its length fixed.
        Inefficient usage of String::append() fixed.
      sql/item_timefunc.cc:
        Inefficient using of String::append() fixed.
        Bad examples of usage of a string with its length fixed.
      sql/item_uniq.h:
        Bad examples of usage of a string with its length fixed.
      sql/key.cc:
        Bad examples of usage of a string with its length fixed.
      sql/log.cc:
        Bad examples of usage of a string with its length fixed.
      sql/log_event.cc:
        Bad examples of usage of a string with its length fixed.
      sql/mysqld.cc:
        The dummy parser hook allocated.
      sql/opt_range.cc:
        Inefficient usage of String::append() fixed.
      sql/parse_file.cc:
        Bad examples of usage of a string with its length fixed.
        A hook for unknown keys added to the parser.
      sql/parse_file.h:
        A hook for unknown keys added to the parser.
      sql/protocol.cc:
        A bad example of usage of a string with its length fixed.
      sql/repl_failsafe.cc:
        Bad examples of usage of a string with its length fixed.
      sql/share/errmsg.txt:
        A warning for old format config file.
      sql/slave.cc:
        Bad examples of usage of a string with its length fixed.
      sql/sp.cc:
        Bad examples of usage of a string with its length fixed.
      sql/sp_head.cc:
        Bad examples of usage of a string with its length fixed.
      sql/spatial.cc:
        A bad example of usage of a string with its length fixed.
      sql/sql_acl.cc:
        Bad examples of usage of a string with its length fixed.
      sql/sql_analyse.cc:
        Bad examples of usage of a string with its length fixed.
        Inefficient usage of String::append() fixed.
      sql/sql_lex.cc:
        Bad examples of usage of a string with its length fixed.
      sql/sql_load.cc:
        A bad example of usage of a string with its length fixed.
      sql/sql_parse.cc:
        Bad examples of usage of a string with its length fixed.
      sql/sql_prepare.cc:
        A bad example of usage of a string with its length fixed.
      sql/sql_select.cc:
        Bad examples of usage of a string with its length fixed.
      sql/sql_show.cc:
        Bad examples of usage of a string with its length fixed.
      sql/sql_string.cc:
        Bad examples of usage of a string with its length fixed.
      sql/sql_string.h:
        The macro definition moved to sql_string.h to
          be accessible in all parts of server.
      sql/sql_table.cc:
        Bad examples of usage of a string with its length fixed.
      sql/sql_trigger.cc:
        Bad examples of usage of a string with its length fixed.
        The incorrect length in the trigger file configuration descriptor
          fixed (BUG#14090).
        The hook for processing incorrect sql_mode record added.
      sql/sql_view.cc:
        A dummy  hook used for parsing views.
      sql/structs.h:
        The macro definition moved to sql_string.h to be
          accessible in all parts of server.
      sql/table.cc:
        A bad example of usage of a string with its length fixed.
      sql/tztime.cc:
        A bad example of usage of a string with its length fixed.
      fe63e095
  32. 04 Nov, 2005 1 commit
    • unknown's avatar
      avoiding of calling Item::val_* methods family with opt_range mem_root,... · 234bf9a7
      unknown authored
      avoiding of calling Item::val_* methods family with opt_range mem_root, because its life time is too short. (BUG#14342)
      
      
      mysql-test/r/subselect_innodb.result:
        BUG#14342 test case
      mysql-test/t/subselect_innodb.test:
        BUG#14342 test case
      sql/opt_range.cc:
        avoiding of calling Item::val_* methods family with opt_range mem_root, because its life time is too short.
      234bf9a7
  33. 03 Nov, 2005 3 commits
    • unknown's avatar
      opt_range.cc: · fa8dafe5
      unknown authored
        Additional fix for bug#14093
      
      
      sql/opt_range.cc:
        Additional fix for bug#14093
      fa8dafe5
    • unknown's avatar
      A fix and a test case for Bug#14210 "Simple query with > operator on · 3fa0dd23
      unknown authored
      large table gives server crash": make sure that when a MyISAM temporary
      table is created for a cursor, it's created in its memory root,
      not the memory root of the current query.
      
      
      mysql-test/r/sp.result:
        Test results fixed: a test case for Bug#14210
      mysql-test/t/sp.test:
        A test case for Bug#14210 "Simple query with > operator on large table 
        gives server crash"
      sql/handler.cc:
        - rewrite get_new_handler to accept a memory root and use it for
      sql/handler.h:
        - get_new_handler declaration changed
      sql/opt_range.cc:
        - get_new_handler declaration changed
      sql/sql_base.cc:
        - get_new_handler declaration changed
      sql/sql_select.cc:
        - the actual fix for Bug#14210. In create_myisam_from_heap we should
        create the new table handler in TABLE::mem_root, not in THD::mem_root:
        the latter is freed shortly after cursor is open.
        - adjust create_tmp_table to explicitly supply &table->mem_root
        to get_new_handler when creating a handler for a new temporary table
      sql/sql_table.cc:
        - get_new_handler declaration changed
      sql/table.cc:
        - get_new_handler declaration changed
      sql/unireg.cc:
        - get_new_handler declaration changed
      tests/mysql_client_test.c:
        A test case for Bug#14210 "Simple query with > operator on large table
         gives server crash": a C API test case is worth adding because of different
        memory allocation/freeing patterns in handling of C API and SP cursors
      3fa0dd23
    • unknown's avatar
      Fix bug #14093 Query takes a lot of time when date format is not valid · bb841518
      unknown authored
      Invalid date like 2000-02-32 wasn't converted to int, which lead to not
      using index and comparison with field as astring, which results in slow
      query execution.
      
      convert_constatn_item() and get_mm_leaf() now forces MODE_INVALID_DATES to
      allow such conversion.
      
      
      sql/item.h:
        Fix bug #14093 Query takes a lot of time when date format is not valid
        To Item_int_with_ref added method real_item() which returns ref.
      sql/item_cmpfunc.cc:
         Fix bug #14093 Query takes a lot of time when date format is not valid
        convert_constant_item() now allows conversion of invalid dates like 2000-01-32 to int to make it possible to use index when comparing fields with such dates.
      sql/opt_range.cc:
         Fix bug #14093 Query takes a lot of time when date format is not valid
        get_mm_leaf() modified so it allows index usage for comparing fields with invalid dates like 2000-01-32.
      mysql-test/r/select.result:
        Test case for bug#14093 Query takes a lot of time when date format is not valid
      mysql-test/t/select.test:
        Test case for bug#14093 Query takes a lot of time when date format is not valid
      bb841518