An error occurred fetching the project authors.
  1. 11 Jan, 2011 1 commit
  2. 01 Oct, 2010 1 commit
    • Mattias Jonsson's avatar
      Bug#51851: Server with SBR locks mutex twice on · 59dd4888
      Mattias Jonsson authored
      LOAD DATA into partitioned MyISAM table
      
      Problem was that both partitioning and myisam
      used the same table_share->mutex for different protections
      (auto inc and repair).
      
      Solved by adding a specific mutex for the partitioning
      auto_increment.
      
      Also adding destroying the ha_data structure in
      free_table_share (which is to be propagated
      into 5.5).
      
      This is a 5.1 ONLY patch, already fixed in 5.5+.
      59dd4888
  3. 04 Aug, 2010 1 commit
    • Michael Widenius's avatar
      Fixes bug when we run bcmp() on row when the storage engine hasn't filled in all fields in the row. · c52c6df5
      Michael Widenius authored
      This was triggered by innodb.innodb_multi_update, where we had a static length row without nulls and xtradb didn't fill in the delete-marker byte
      
      
      include/my_bitmap.h:
        Added prototype for bitmap_union_is_set_all()
      mysys/my_bitmap.c:
        Added function to check if union of two bit maps covers all bits.
      sql/mysql_priv.h:
        Updated protype for compare_record()
      sql/sql_insert.cc:
        Send to compare_record() flag if all fields are used.
      sql/sql_select.cc:
        Set share->null_bytes_for_compare.
      sql/sql_update.cc:
        In compare_record() don't use the fast cmp_record() (which is basically memcmp) if we don't know that all fields exists.
        Don't compare the null_bytes if there is no data there.
      sql/table.cc:
        Store in share->null_bytes_for_compare the number of bytes that has null or bit fields (but not delete marker)
        Store in can_cmp_whole_record if we can use memcmp() (assuming all rows are read) to compare rows in compare_record()
      sql/table.h:
        Added two elements in table->share to speed up checking how updated rows can be compared.
      c52c6df5
  4. 29 Jul, 2010 1 commit
    • unknown's avatar
      BUG#49124 Security issue with /*!-versioned */ SQL statements on Slave · d7ad4352
      unknown authored
      /*![:version:] Query Code */, where [:version:] is a sequence of 5 
      digits representing the mysql server version(e.g /*!50200 ... */),
      is a special comment that the query in it can be executed on those 
      servers whose versions are larger than the version appearing in the 
      comment. It leads to a security issue when slave's version is larger 
      than master's. A malicious user can improve his privileges on slaves. 
      Because slave SQL thread is running with SUPER privileges, so it can
      execute queries that he/she does not have privileges on master.
      
      This bug is fixed with the logic below: 
      - To replace '!' with ' ' in the magic comments which are not applied on
        master. So they become common comments and will not be applied on slave.
      
      - Example:
        'INSERT INTO t1 VALUES (1) /*!10000, (2)*/ /*!99999 ,(3)*/
        will be binlogged as
        'INSERT INTO t1 VALUES (1) /*!10000, (2)*/ /* 99999 ,(3)*/
      
      mysql-test/suite/rpl/t/rpl_conditional_comments.test:
        Test the patch for this bug.
      sql/mysql_priv.h:
        Rename inBuf as rawBuf and remove the const limitation.
      sql/sql_lex.cc:
        To replace '!' with ' ' in the magic comments which are not applied on
        master.
      sql/sql_lex.h:
        Remove the const limitation on parameter buff, as it can be modified in the function since
        this patch.
        Add member function yyUnput for Lex_input_stream. It set a character back the query buff.
      sql/sql_parse.cc:
        Rename inBuf as rawBuf and remove the const limitation.
      sql/sql_partition.cc:
        Remove the const limitation on parameter part_buff, as it can be modified in the function since
        this patch.
      sql/sql_partition.h:
        Remove the const limitation on parameter part_buff, as it can be modified in the function since
        this patch.
      sql/table.h:
        Remove the const limitation on variable partition_info, as it can be modified since
        this patch.
      d7ad4352
  5. 23 Jul, 2010 1 commit
    • Alexey Kopytov's avatar
      Bug #54476: crash when group_concat and 'with rollup' in · 116931c1
      Alexey Kopytov authored
                           prepared statements
      
      Using GROUP_CONCAT() together with the WITH ROLLUP modifier
      could crash the server.
      
      The reason was a combination of several facts:
      
      1. The Item_func_group_concat class stores pointers to ORDER
      objects representing the columns in the ORDER BY clause of
      GROUP_CONCAT().
      
      2. find_order_in_list() called from
      Item_func_group_concat::setup() modifies the ORDER objects so
      that their 'item' member points to the arguments list
      allocated in the Item_func_group_concat constructor.
      
      3. In some cases (e.g. in JOIN::rollup_make_fields) a copy of
      the original Item_func_group_concat object could be created by
      using the Item_func_group_concat::Item_func_group_concat(THD
      *thd, Item_func_group_concat *item) copy constructor. The
      latter essentially creates a shallow copy of the source
      object. Memory for the arguments array is allocated on
      thd->mem_root, but the pointers for arguments and ORDER are
      copied verbatim.
      
      What happens in the test case is that when executing the query
      for the first time, after a copy of the original
      Item_func_group_concat object has been created by
      JOIN::rollup_make_fields(), find_order_in_list() is called for
      this new object. It then resolves ORDER BY by modifying the
      ORDER objects so that they point to elements of the arguments
      array which is local to the cloned object. When thd->mem_root
      is freed upon completing the execution, pointers in the ORDER
      objects become invalid. Those ORDER objects, however, are also
      shared with the original Item_func_group_concat object which is
      preserved between executions of a prepared statement. So the
      first call to find_order_in_list() for the original object on
      the second execution tries to dereference an invalid pointer.
      
      The solution is to create copies of the ORDER objects when
      copying Item_func_group_concat to not leave any stale pointers
      in other instances with different lifecycles.
      
      
      
      mysql-test/r/func_gconcat.result:
        Test case for bug #54476.
      mysql-test/t/func_gconcat.test:
        Test case for bug #54476.
      sql/item_sum.cc:
        Copy the ORDER objects pointed to by the elements of the 
        'order' array in the copy constructor of 
        Item_func_group_concat.
      sql/table.h:
        Removed the unused 'item_copy' member of the ORDER class.
      116931c1
  6. 10 Jun, 2010 1 commit
    • Davi Arnaut's avatar
      Bug#42733: Type-punning warnings when compiling MySQL -- · fd4b3c6c
      Davi Arnaut authored
                  strict aliasing violations.
      
      One somewhat major source of strict-aliasing violations and
      related warnings is the SQL_LIST structure. For example,
      consider its member function `link_in_list` which takes
      a pointer to pointer of type T (any type) as a pointer to
      pointer to unsigned char. Dereferencing this pointer, which
      is done to reset the next field, violates strict-aliasing
      rules and might cause problems for surrounding code that
      uses the next field of the object being added to the list.
      
      The solution is to use templates to parametrize the SQL_LIST
      structure in order to deference the pointers with compatible
      types. As a side bonus, it becomes possible to remove quite
      a few casts related to acessing data members of SQL_LIST.
      
      sql/handler.h:
        Use the appropriate template type argument.
      sql/item.cc:
        Remove now-unnecessary cast.
      sql/item_subselect.cc:
        Remove now-unnecessary casts.
      sql/item_sum.cc:
        Use the appropriate template type argument.
        Remove now-unnecessary cast.
      sql/mysql_priv.h:
        Move SQL_LIST structure to sql_list.h
        Use the appropriate template type argument.
      sql/sp.cc:
        Remove now-unnecessary casts.
      sql/sql_delete.cc:
        Use the appropriate template type argument.
        Remove now-unnecessary casts.
      sql/sql_derived.cc:
        Remove now-unnecessary casts.
      sql/sql_lex.cc:
        Remove now-unnecessary casts.
      sql/sql_lex.h:
        SQL_LIST now takes a template type argument which must
        match the type of the elements of the list. Use forward
        declaration when the type is not available, it is used
        in pointers anyway.
      sql/sql_list.h:
        Rename SQL_LIST to SQL_I_List. The template parameter is
        the type of object that is stored in the list.
      sql/sql_olap.cc:
        Remove now-unnecessary casts.
      sql/sql_parse.cc:
        Remove now-unnecessary casts.
      sql/sql_prepare.cc:
        Remove now-unnecessary casts.
      sql/sql_select.cc:
        Remove now-unnecessary casts.
      sql/sql_show.cc:
        Remove now-unnecessary casts.
      sql/sql_table.cc:
        Remove now-unnecessary casts.
      sql/sql_trigger.cc:
        Remove now-unnecessary casts.
      sql/sql_union.cc:
        Remove now-unnecessary casts.
      sql/sql_update.cc:
        Remove now-unnecessary casts.
      sql/sql_view.cc:
        Remove now-unnecessary casts.
      sql/sql_yacc.yy:
        Remove now-unnecessary casts.
      storage/myisammrg/ha_myisammrg.cc:
        Remove now-unnecessary casts.
      fd4b3c6c
  7. 25 May, 2010 1 commit
    • Alexey Kopytov's avatar
      Bug #53830: !table || (!table->read_set || · 48552797
      Alexey Kopytov authored
                   bitmap_is_set(table->read_set, field_index))
      
      UPDATE on an InnoDB table modifying the same index that is used
      to satisfy the WHERE condition could trigger a debug assertion
      under some circumstances.
      
      Since for engines with the HA_PRIMARY_KEY_IN_READ_INDEX flag
      set results of an index scan on a secondary index are appended
      by the primary key value, if a query involves only columns from
      the primary key and a secondary index, the latter is considered
      to be covering.
      
      That tricks mysql_update() to mark for reading only columns
      from the secondary index when it does an index scan to retrieve
      rows to update in case a part of that key is also being
      updated. However, there may be other columns in WHERE that are
      part of the primary key, but not the secondary one.
      
      What we actually want to do in this case is to add index
      columns to the existing WHERE columns bitmap rather than
      replace it.
      
      mysql-test/r/innodb_mysql.result:
        Test case for bug #53830.
      mysql-test/t/innodb_mysql.test:
        Test case for bug #53830.
      sql/sql_update.cc:
        Add index columns to the read_set bitmap, don't replace it.
      sql/table.cc:
        Added a new add_read_columns_used_by_index() function to 
        st_table.
      sql/table.h:
        Added a new add_read_columns_used_by_index() function to 
        st_table.
      48552797
  8. 13 May, 2010 1 commit
    • Michael Widenius's avatar
      Fixes after last merge of MySQL 5.1 · d357afd2
      Michael Widenius authored
      - INSERT with RAND() doesn't require row based logging again
      - Some bugs fixed in opt_range() where we table->key_read was wrongly used
      
      
      
      .bzrignore:
        Ignore new xtstat binary
      mysql-test/r/index_merge_myisam.result:
        Update results (old result was wrong)
      mysql-test/suite/binlog/r/binlog_stm_binlog.result:
        Added drop table first
      mysql-test/suite/binlog/r/binlog_stm_unsafe_warning.result:
        Added test for when RAND() requires row based logging
      mysql-test/suite/binlog/t/binlog_stm_binlog.test:
        Added drop table first
      mysql-test/suite/binlog/t/binlog_stm_unsafe_warning.test:
        Added test for when RAND() requires row based logging
      scripts/make_binary_distribution.sh:
        Removed type from last commit
      sql/item_create.cc:
        Don't require row based logging when using RAND() with INSERT
      sql/opt_range.cc:
        Revert wrong patch from Oracle:
        - As QUICK_RANGE_SELECT uses it's own 'file' handler to the tables, one can't use 'table->key_read' as a flag to detect if index only read (keyread) is used or not
        - Don't set keyread if keyread is already enabled
        - Don't disable key read, if we didn't enable it ourselves
        - Simplify code (and ensure that we do proper cleanup of index only read)
      sql/opt_range.h:
        Added flags to detect if the range optimizer enabled index only read (key read) or not
      sql/opt_sum.cc:
        Use our more optimized macros
      sql/sql_lex.h:
        Added 'readable' function to check if we are in a sub query function or not (not normal query or sub query in FROM clause)
      sql/sql_select.cc:
        Use our more optimized keyread macros
        Added ASSERTS early
        Simplify code on eliminate_item_equal()
        Fixed that substitute_for_best_equal_field() doesn't core dump in case of out of memory conditions.
        Removed not needed test for 'field->maybe_null()'
        Replaced master_unit()->item with is_subquery_function() (More readable)
      sql/sql_update.cc:
        Use our more optimized keyread macros
      sql/table.cc:
        Use our more optimized keyread macros
      sql/table.h:
        Use separate functions to enable/disable Index only reads
        - Safer, more readable, better logging and faster.
      d357afd2
  9. 08 May, 2010 1 commit
    • He Zhenxing's avatar
      Bug#53189 Table map version unused and can be removed · 014367e0
      He Zhenxing authored
      MYSQL_BIN_LOG m_table_map_version member and it's associated 
      functions were not used in the logic of binlogging and replication,
      this patch removed all related code.
      
      sql/log.cc:
        removed unused m_table_map_version variable and functions
      sql/log.h:
        removed unused m_table_map_version variable and functions
      sql/log_event.h:
        Removed unused LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F flag
      sql/sql_class.cc:
        Removed unused LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F flag
      sql/sql_load.cc:
        Removed unused LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F flag
      sql/table.cc:
        removed unused table_map_version variable
      sql/table.h:
        removed unused table_map_version variable
      014367e0
  10. 06 May, 2010 1 commit
    • Martin Hansson's avatar
      Bug#52357: Assertion failed: join->best_read in · f465b074
      Martin Hansson authored
      greedy_search optimizer_search_depth=0
      
      The algorithm inside restore_prev_nj_state failed to
      properly update the counters within the NESTED_JOIN
      tree. The counter was decremented each time a table in the
      node was removed from the QEP, the correct thing to do being
      only to decrement it when the last table in the child node
      was removed from the plan. This lead to node counters
      getting negative values and the plan thus appeared
      impossible. An assertion caught this.
      
      Fixed by not recursing up the tree unless the last table in
      the join nest node is removed from the plan
      f465b074
  11. 10 Feb, 2010 1 commit
    • Michael Widenius's avatar
      When one does a drop table, the indexes are not flushed to disk before drop... · c7b97d14
      Michael Widenius authored
      When one does a drop table, the indexes are not flushed to disk before drop anymore (with MyISAM/Maria)
      myisam-recover options changed from OFF to 'DEFAULT' to get less change of data loss when using MyISAM.
      (The disadvantage is that changed MyISAM tables will be checked at access time; Use --myisam-recover=OFF for old behavior)
      Don't call extra(HA_EXTRA_FORCE_REOPEN) in ALTER TABLE if table is locked as this will mark table as crashed!
      Added assert to detect if we accidently would use MyISAM versioning in MySQL
      
      include/my_base.h:
        Mark NOT_USED as USED, as we now use this as a flag to not call extra()
      mysql-test/mysql-test-run.pl:
        Don't write all options when there is something wrong with the arguments
      mysql-test/r/sp-destruct.result:
        Add missing flush of mysql.proc (as the test copied live tables)
      mysql-test/r/variables.result:
        myisam-recover options changed to 'default'
      mysql-test/r/view.result:
        Don't show create time in result
      mysql-test/suite/maria/t/maria-recovery2-master.opt:
        Don't run test with myisam-recover (as this produces extra warnings during simulated death)
      mysql-test/t/sp-destruct.test:
        Add missing flush of mysql.proc (as the test copied live tables)
      mysql-test/t/view.test:
        Don't show create time in result
      sql/lock.cc:
        Added marker if table was deleted to argument list
      sql/mysql_priv.h:
        Added marker if table was deleted to argument list
      sql/mysqld.cc:
        myisam-recover options changed from OFF to 'DEFAULT' to get less change of data loss when using MyISAM
        Allow one to specify OFF as argument to myisam-recover (was default before but one couldn't specify it)
      sql/sql_base.cc:
        Mark if table is going to be deleted
      sql/sql_delete.cc:
        Mark if table is going to be deleted
      sql/sql_table.cc:
        Mark if table is going to be deleted
        Don't call extra(HA_EXTRA_FORCE_REOPEN) in ALTER TABLE if table is locked as this will mark table as crashed!
      sql/table.cc:
        Signal to handler if table is getting deleted as part of getting droped from table cache.
      sql/table.h:
        Added marker if table is going to be deleted.
      storage/maria/ha_maria.cc:
        Don't search for transaction handler if file is not transactional or outside of transaction
        (Fixed possible core dump)
      storage/maria/ma_blockrec.c:
        Don't write changed information if table is going to be deleted.
      storage/maria/ma_close.c:
        Don't write changed information if table is going to be deleted.
      storage/maria/ma_extra.c:
        Mark tables that are deleted as crased, to ensure good behavior on restart if we suddenly crash.
      storage/maria/ma_locking.c:
        Cleanup
      storage/maria/ma_recovery.c:
        We need trnman to be inited during redo phase (to be able to open tables checked with maria_chk)
      storage/maria/maria_def.h:
        Added marker if table is going to be deleted.
      storage/myisam/mi_close.c:
        Don't write changed information if table is going to be deleted.
      storage/myisam/mi_extra.c:
        Mark tables that are deleted as crased, to ensure good behavior on restart if we suddenly crash.
      storage/myisam/mi_open.c:
        Added assert to detect if we accidently would use MyISAM versioning in MySQL
      storage/myisam/myisamdef.h:
        Added marker if table is going to be deleted.
      c7b97d14
  12. 09 Feb, 2010 1 commit
    • Sergey Vojtovich's avatar
      BUG#49902 - SELECT returns incorrect results · b586bed7
      Sergey Vojtovich authored
      Queries optimized with GROUP_MIN_MAX didn't cleanup KEYREAD
      optimization properly. As a result subsequent queries may
      return incomplete rows (fields are initialized to default
      values).
      
      mysql-test/r/group_min_max.result:
        A test case for BUG#49902.
      mysql-test/t/group_min_max.test:
        A test case for BUG#49902.
      sql/opt_range.cc:
        Refactor of KEYREAD optimization switch so that KEYREAD
        handler state is in sync with st_table::key_read flag.
        
        All SQL code is supposed to switch KEYREAD optimization
        via st_table::set_keyread().
      sql/opt_sum.cc:
        Refactor of KEYREAD optimization switch so that KEYREAD
        handler state is in sync with st_table::key_read flag.
        
        All SQL code is supposed to switch KEYREAD optimization
        via st_table::set_keyread().
      sql/sql_select.cc:
        Refactor of KEYREAD optimization switch so that KEYREAD
        handler state is in sync with st_table::key_read flag.
        
        All SQL code is supposed to switch KEYREAD optimization
        via st_table::set_keyread().
      sql/sql_update.cc:
        Refactor of KEYREAD optimization switch so that KEYREAD
        handler state is in sync with st_table::key_read flag.
        
        All SQL code is supposed to switch KEYREAD optimization
        via st_table::set_keyread().
      sql/table.cc:
        Refactor of KEYREAD optimization switch so that KEYREAD
        handler state is in sync with st_table::key_read flag.
        
        All SQL code is supposed to switch KEYREAD optimization
        via st_table::set_keyread().
      sql/table.h:
        Refactor of KEYREAD optimization switch so that KEYREAD
        handler state is in sync with st_table::key_read flag.
        
        All SQL code is supposed to switch KEYREAD optimization
        via st_table::set_keyread().
      b586bed7
  13. 21 Nov, 2009 1 commit
    • Davi Arnaut's avatar
      Bug#41726: upgrade from 5.0 to 5.1.30 crashes if you didn't run mysql_upgrade · 25782585
      Davi Arnaut authored
      The problem is that the server could crash when attempting
      to access a non-conformant proc system table. One such case
      was a crash when invoking stored procedure related statements
      on a 5.1 server with a proc system table in the 5.0 format.
      
      The solution is to validate the proc system table format
      before attempts to access it are made. If the table is not
      in the format that the server expects, a message is written
      to the error log and the statement that caused the table to
      be accessed fails.
      
      mysql-test/r/sp-destruct.result:
        Add test case result for Bug#41726
      mysql-test/t/sp-destruct.test:
        Add test case for Bug#41726
      sql/event_db_repository.cc:
        Update code to use new structures.
      sql/sp.cc:
        Describe the proc table format and use it to validate when
        opening a instance of the table.
        Add a check to insure that a error message is written to
        the error log only once.
      sql/sql_acl.cc:
        Remove unused variable and use new structure.
      sql/sql_acl.h:
        Export field definition.
      sql/table.cc:
        Accept the field count and definition in a single structure.
      sql/table.h:
        Combine the field count and definition in a single structure.
        Transform function into a class in order to support different
        ways of reporting a error.
        Add a pointer cache to TABLE_SHARE.
      25782585
  14. 07 Oct, 2009 1 commit
  15. 22 Sep, 2009 1 commit
    • MySQL Build Team's avatar
      Backport into build-200909221805-5.1.37sp1 · 4f1bd338
      MySQL Build Team authored
      > ------------------------------------------------------------
      > revno: 3059 [merge]
      > revision-id: martin.hansson@sun.com-20090810140851-aw5peehzdxi4gjja
      > parent: iggy@mysql.com-20090806145453-ion37sfdsldwwjrj
      > parent: martin.hansson@sun.com-20090807115140-7fn6wjx0mrui7zl5
      > committer: Martin Hansson <martin.hansson@sun.com>
      > branch nick: 5.1bt
      > timestamp: Mon 2009-08-10 16:08:51 +0200
      > message:
      >   Merge
      > ------------------------------------------------------------
      > Use --include-merges or -n0 to see merged revisions.
      4f1bd338
  16. 21 Aug, 2009 1 commit
  17. 19 Aug, 2009 1 commit
    • Georgi Kodinov's avatar
      Bug #46019: ERROR 1356 When selecting from within another · da0e1c9b
      Georgi Kodinov authored
      view that has Group By
            
      Table access rights checking function check_grant() assumed
      that no view is opened when it's called.
      This is not true with nested views where the inner view
      needs materialization. In this case the view is already 
      materialized when check_grant() is called for it.
      This caused check_grant() to not look for table level
      grants on the materialized view table.
      Fixed by checking if a view is already materialized and if 
      it is check table level grants using the original table name
      (not the ones of the materialized temp table).
      da0e1c9b
  18. 12 Aug, 2009 2 commits
    • Konstantin Osipov's avatar
      A follow up patch for the follow up patch for Bug#45829 · c07c64a5
      Konstantin Osipov authored
      "CREATE TABLE TRANSACTIONAL PAGE_CHECKSUM ROW_FORMAT=PAGE accepted, 
      does nothing".
      
      Put back stubs for members of structures that are shared between
      sql/ and pluggable storage engines. to not break ABI unnecessarily.
      To be NULL-merged into 5.4, where we do break the ABI already.
      c07c64a5
    • Konstantin Osipov's avatar
      A follow up patch for Bug#45829 "CREATE TABLE TRANSACTIONAL · 333d2dd3
      Konstantin Osipov authored
      PAGE_CHECKSUM ROW_FORMAT=PAGE accepted, does nothing"
      Remove unused code that would lead to warnings when compiling
      sql_yacc.yy.
      
      
      sql/handler.h:
        Remove unused defines.
      sql/sql_yacc.yy:
        Remove unused grammar.
      sql/table.h:
        Remove unused TABLE members.
      333d2dd3
  19. 07 Aug, 2009 1 commit
    • Martin Hansson's avatar
      Bug#46454: MySQL wrong index optimisation leads to incorrect result & crashes · 1164f8a6
      Martin Hansson authored
      Problem 1:
      When the 'Using index' optimization is used, the optimizer may still - after
      cost-based optimization - decide to use another index in order to avoid using
      a temporary table. But when this happens, the flag to the storage engine to 
      read index only (not table) was still set. Fixed by resetting the flag in the 
      storage engine and TABLE structure in the above scenario, unless the new index
      allows for the same optimization.
      Problem 2:
      When a 'ref' access method was employed by cost-based optimizer, (when the column
      is non-NULLable), it was assumed that it needed no initialization if 'quick' access
      methods (since they are based on range scan). When ORDER BY optimization overrides 
      the decision, however, it expects to have this initialized and hence crashes. 
      Fixed in 5.1 (was fixed in 6.0 already) by initializing 'quick' even when there's 
      'ref' access. 
      
      mysql-test/r/order_by.result:
        Bug#46454: Test result.
      mysql-test/t/order_by.test:
        Bug#46454: Test case.
      sql/sql_select.cc:
        Bug#46454: 
        Problem 1 fixed in make_join_select()
        Problem 2 fixed in test_if_skip_sort_order()
      sql/table.h:
        Bug#46454: Added comment to field.
      1164f8a6
  20. 29 Jul, 2009 1 commit
    • Guilhem Bichot's avatar
      Bug#45829 "CREATE TABLE TRANSACTIONAL PAGE_CHECKSUM ROW_FORMAT=PAGE accepted, does nothing": · ed9acbb0
      Guilhem Bichot authored
      those keywords do nothing in 5.1 (they are meant for future versions, for example featuring the Maria engine)
      so they are here removed from the syntax. Adding those keywords to future versions when needed is:
      - WL#5034 "Add TRANSACTIONA=0|1 and PAGE_CHECKSUM=0|1 clauses to CREATE TABLE"
      - WL#5037 "New ROW_FORMAT value for CREATE TABLE: PAGE"
      
      mysql-test/r/create.result:
        test that syntax is not accepted
      mysql-test/t/create.test:
        test that syntax is not accepted
      sql/handler.cc:
        remove ROW_FORMAT=PAGE
      sql/handler.h:
        Mark unused objects, but I don't remove them by fear of breaking any plugin which includes this file
        (see also table.h)
      sql/lex.h:
        removing syntax
      sql/sql_show.cc:
        removing output of noise keywords in SHOW CREATE TABLE and INFORMATION_SCHEMA.TABLES
      sql/sql_table.cc:
        removing TRANSACTIONAL
      sql/sql_yacc.yy:
        removing syntax
      sql/table.cc:
        removing TRANSACTIONAL, PAGE_CHECKSUM. Their place in the frm file is not reclaimed,
        for compatibility with older 5.1.
      sql/table.h:
        Mark unused objects, but I don't remove them by fear of breaking any plugin which includes this file
        (and there are several engines which use the content TABLE_SHARE and thus rely on a certain binary
        layout of this structure).
      ed9acbb0
  21. 30 Jun, 2009 1 commit
    • Sergey Petrunya's avatar
      MWL#17: Table elimination · 5ab01b64
      Sergey Petrunya authored
      - Last fixes
      
      sql/item.cc:
        MWL#17: Table elimination
        - Don't make multiple calls of ::walk(check_column_usage_processor),
          call once and cache the value
      sql/item.h:
        MWL#17: Table elimination
        - s/KEYUSE::usable/KEYUSE::type/, more comments
      sql/opt_table_elimination.cc:
        MWL#17: Table elimination
        - Don't make multiple calls of ::walk(check_column_usage_processor),
          call once and cache the value
      sql/sql_select.cc:
        MWL#17: Table elimination
        - s/KEYUSE::usable/KEYUSE::type/, more comments
      sql/sql_select.h:
        MWL#17: Table elimination
        - s/KEYUSE::usable/KEYUSE::type/, more comments
      sql/table.h:
        MWL#17: Table elimination
        - Better comments
      5ab01b64
  22. 29 Jun, 2009 1 commit
    • Sergey Petrunya's avatar
      MWL#17: Table elimination · 618442de
      Sergey Petrunya authored
      mysql-test/r/table_elim.result:
        MWL#17: Table elimination
        - More tests
      mysql-test/t/table_elim.test:
        MWL#17: Table elimination
        - More tests
      sql/opt_table_elimination.cc:
        MWL#17: Table elimination
        - Code cleanup
      sql/sql_select.cc:
        MWL#17: Table elimination
        - Code cleanup
      sql/sql_select.h:
        MWL#17: Table elimination
        - Code cleanup
      sql/table.h:
        MWL#17: Table elimination
        - Code cleanup
      618442de
  23. 17 Jun, 2009 1 commit
    • Staale Smedseng's avatar
      Bug #43414 Parenthesis (and other) warnings compiling MySQL · 2be7b06b
      Staale Smedseng authored
      with gcc 4.3.2
            
      Compiling MySQL with gcc 4.3.2 and later produces a number of 
      warnings, many of which are new with the recent compiler
      versions.
                        
      This bug will be resolved in more than one patch to limit the
      size of changesets. This is the second patch, fixing more
      of the warnings.
      2be7b06b
  24. 14 Jun, 2009 1 commit
  25. 10 Jun, 2009 1 commit
    • Staale Smedseng's avatar
      Bug #43414 Parenthesis (and other) warnings compiling MySQL · 9e7c9d10
      Staale Smedseng authored
      with gcc 4.3.2
      
      Compiling MySQL with gcc 4.3.2 and later produces a number of 
      warnings, many of which are new with the recent compiler
      versions.
                  
      This bug will be resolved in more than one patch to limit the
      size of changesets. This is the second patch, fixing more
      of the warnings.
      9e7c9d10
  26. 03 Jun, 2009 1 commit
    • Sergey Petrunia's avatar
      MWL#17: Table elimination · 7fef8cdd
      Sergey Petrunia authored
      - First code. Elimination works for simple cases, passes the testsuite.
      - Known issues:
        = No elimination is done for aggregate functions.
        = EXPLAIN EXTENDED shows eliminated tables (I think it better not)
        = No benchmark yet
        = The code needs some polishing.
      
      mysql-test/r/table_elim.result:
        MWL#17: Table elimination
        - Testcases
      mysql-test/t/table_elim.test:
        MWL#17: Table elimination
        - Testcases
      sql/sql_select.cc:
        MWL#17: Table elimination
      sql/sql_select.h:
        MWL#17: Table elimination
        - Added JOIN_TAB::eliminated (is JOIN_TAB the best place to store this flag?)
      sql/table.h:
        MWL#17: Table elimination
        - ADded NESTED_JOIN::n_tables. We need to have the number of real tables remaining in an outer join nest.
      7fef8cdd
  27. 31 Jan, 2009 1 commit
    • Michael Widenius's avatar
      Fixed compiler warnings found by gcc 4.3.2 · b8fcb0cc
      Michael Widenius authored
      - Added braces around expressions with &&, ||, & and |
      - Added empty line before ; for empty while and for loops
      - Added () around if with assignments
      - Removed const before function returning simple type
      
      Changed BUILD scripts to not build with NDB 
      
      
      BUILD/SETUP.sh:
        By default, don't build ndb with --max in Maria tree.
        NDB is not kept up to date anyway in 5.1
      client/mysql.cc:
        Added braces around && to get rid of compiler warnings
      sql/event_db_repository.cc:
        Added braces around && to get rid of compiler warnings
      sql/events.cc:
        Added braces around && to get rid of compiler warnings
      sql/field.cc:
        Added braces around && to get rid of compiler warnings
        Fixed for loops
      sql/field.h:
        Added braces around & to get rid of compiler warnings
      sql/field_conv.cc:
        Added braces around && to get rid of compiler warnings
        Fixed bug when copying between DATETIME fields and strict dates are used
        Removed not needeed else
      sql/gstream.cc:
        Added braces around && to get rid of compiler warnings
      sql/ha_ndbcluster.cc:
        Added braces around && to get rid of compiler warnings
        Added {} to get rid of compiler warnings
      sql/handler.cc:
        Added braces around && to get rid of compiler warnings
      sql/item.cc:
        Added braces around && to get rid of compiler warnings
      sql/item_cmpfunc.cc:
        Added braces around && to get rid of compiler warnings
        Removed some not needed space
      sql/item_func.cc:
        Added braces around && to get rid of compiler warnings
      sql/item_strfunc.cc:
        Added braces around && to get rid of compiler warnings
      sql/item_subselect.cc:
        Added braces around && to get rid of compiler warnings
      sql/item_sum.cc:
        Added braces around && to get rid of compiler warnings
      sql/item_timefunc.cc:
        Added braces around && to get rid of compiler warnings
      sql/item_xmlfunc.cc:
        Added empty line before ; for empty while and for loops
      sql/log.cc:
        Added braces around && to get rid of compiler warnings
      sql/log_event.cc:
        Added braces around && to get rid of compiler warnings
        Removed not needed else
      sql/log_event_old.cc:
        Added braces around && to get rid of compiler warnings
      sql/opt_range.cc:
        Added braces around && to get rid of compiler warnings
      sql/opt_sum.cc:
        Added braces around && to get rid of compiler warnings
      sql/set_var.cc:
        Added empty line before ; for empty while and for loops
        Added () around if with assignments
      sql/slave.cc:
        Added braces around && to get rid of compiler warnings
        Added empty line before ; for empty while and for loops
      sql/spatial.h:
        Added braces around && to get rid of compiler warnings
      sql/sql_acl.cc:
        Added braces around && to get rid of compiler warnings
      sql/sql_analyse.cc:
        Added empty line before ; for empty while and for loops
      sql/sql_base.cc:
        Added braces around && to get rid of compiler warnings
      sql/sql_connect.cc:
        Added braces around && to get rid of compiler warnings
      sql/sql_db.cc:
        Added braces around && to get rid of compiler warnings
      sql/sql_delete.cc:
        Added braces around && to get rid of compiler warnings
      sql/sql_help.cc:
        Added empty line before ; for empty while and for loops
      sql/sql_insert.cc:
        Added braces around && to get rid of compiler warnings
        Added () around if with assignments
      sql/sql_lex.cc:
        Cast char array references to uchar; Fixed wrong array referencing when using characters > ASCII 128 in SQL statments
        Added empty line before ; for empty while and for loops
        Trivial indent fixes
        Added braces around && to get rid of compiler warnings
      sql/sql_load.cc:
        Added braces around && to get rid of compiler warnings
      sql/sql_parse.cc:
        Added braces around && to get rid of compiler warnings
      sql/sql_partition.cc:
        Added braces around && to get rid of compiler warnings
      sql/sql_plugin.cc:
        Fixed bug in detecing if option variable should be readonly
        Added empty line before ; for empty while and for loops
      sql/sql_prepare.cc:
        Added braces around && to get rid of compiler warnings
      sql/sql_select.cc:
        Added braces around && to get rid of compiler warnings
        Added () around if with assignments
        Added empty line before ; for empty while and for loops
      sql/sql_show.cc:
        Added braces around && to get rid of compiler warnings
      sql/sql_table.cc:
        Added braces around && to get rid of compiler warnings
      sql/sql_trigger.cc:
        Added braces around && to get rid of compiler warnings
      sql/sql_update.cc:
        Added braces around && to get rid of compiler warnings
      sql/sql_yacc.yy:
        Added braces around && to get rid of compiler warnings
      sql/table.cc:
        Added braces around && to get rid of compiler warnings
      sql/table.h:
        Added braces around && to get rid of compiler warnings
      sql/time.cc:
        Added braces around && to get rid of compiler warnings
      sql/tztime.cc:
        Added braces around && to get rid of compiler warnings
      sql/uniques.cc:
        Added braces around && to get rid of compiler warnings
      storage/federated/ha_federated.cc:
        Fixed bug in testing of variable to ha_info() (Not critical)
      storage/heap/ha_heap.cc:
        Added braces around && to get rid of compiler warnings
      storage/maria/ha_maria.cc:
        Fixed bug: Mark that maria_log_dir_path is readonly
        Added braces around && to get rid of compiler warnings
      storage/ndb/include/ndbapi/NdbEventOperation.hpp:
        Removed const before function returning simple type
      storage/ndb/include/ndbapi/NdbOperation.hpp:
        Removed const before function returning simple type
      storage/ndb/src/ndbapi/Ndb.cpp:
        Added empty line before ; for empty while and for loops
      storage/ndb/src/ndbapi/NdbEventOperation.cpp:
        Removed const before function returning simple type
      storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp:
        Removed const before function returning simple type
      storage/ndb/src/ndbapi/NdbEventOperationImpl.hpp:
        Removed const before function returning simple type
      storage/ndb/src/ndbapi/NdbRecAttr.cpp:
        Added empty line before ; for empty while and for loops
      storage/ndb/src/ndbapi/TransporterFacade.hpp:
        Added braces around && to get rid of compiler warnings
      b8fcb0cc
  28. 12 Jan, 2009 1 commit
    • Joerg Bruehe's avatar
      Backport of a 5.0.74 fix into 5.0.72sp1: · 75b00971
      Joerg Bruehe authored
      Bug #40021: Renaming view fails, archived .frm for view is
                  missing after downgrade
      
      Original changeset:
      > revision-id: gshchepa@mysql.com-20081114172557-xh0jlzwal8ze3cy6
      > parent: ramil@mysql.com-20081114074229-vj4fvfrpmz8jfub9
      > committer: Gleb Shchepa <gshchepa@mysql.com>
      > branch nick: mysql-5.0-bugteam
      > timestamp: Fri 2008-11-14 21:25:57 +0400
      
      75b00971
  29. 16 Dec, 2008 1 commit
    • Davi Arnaut's avatar
      Fix warnings and bug spotted by gcc-4.3. · 36792ff5
      Davi Arnaut authored
      Related to operator precedence and associativity.
      Make the expressions as explicit as possible.
      
      sql/field.h:
        Silence gcc-4.3 warning: be more explicit.
      sql/item.cc:
        Silence gcc-4.3 warning: be more explicit.
      sql/item_sum.cc:
        Silence gcc-4.3 warning: be more explicit.
      sql/log_event.cc:
        Silence gcc-4.3 warning: be more explicit.
      sql/spatial.h:
        Silence gcc-4.3 warning: be more explicit.
      sql/sql_lex.cc:
        Silence gcc-4.3 warning: be more explicit.
      sql/table.h:
        Silence gcc-4.3 warning: be more explicit.
      storage/federated/ha_federated.cc:
        Fix operator precedence bug.
      storage/heap/ha_heap.cc:
        Silence gcc-4.3 warning: be more explicit.
      36792ff5
  30. 09 Dec, 2008 1 commit
    • Georgi Kodinov's avatar
      Bug #37936: ASSERT_COLUMN_MARKED_FOR_WRITE in Field_datetime::store , · d44d9aae
      Georgi Kodinov authored
      Field_varstring::store
            
      The code that temporary saved the bitmaps of the read set and the write set so that
      it can set it to all columns for debug purposes was not expecting that the
      table->read_set and table->write_set can be the same. And was always saving both in 
      sequence.
      As a result the original value was never restored.
      Fixed by saving & restoring the original value only once if the two sets are the
      same (in a special set of functions).
      
      mysql-test/r/select.result:
        Bug #37936: test case
      mysql-test/t/select.test:
        Bug #37936: test case
      sql/item_cmpfunc.cc:
        Bug #37936: don't save/restore twice if the read and write sets are the same
      sql/opt_range.cc:
        Bug #37936: don't save/restore twice if the read and write sets are the same
      sql/table.h:
        Bug #37936: Make a designated set of functions that save/restore
        both the read and the write sets in a single call.
      d44d9aae
  31. 14 Nov, 2008 1 commit
    • Gleb Shchepa's avatar
      Bug #40021: Renaming view fails, archived .frm for view is · 8c9e7a64
      Gleb Shchepa authored
                  missing after downgrade
      
      Obsolete arc/ directory and view .frm file backup support
      has been removed by the patch for bug 17823. However, that
      bugfix caused a problem with "live downgrades" of the
      server: if we rename some view 4 times under 5.1.29/5.0.72
      and then try to rename it under 5.1.28/5.0.70 on the same
      database, the server fails with a error:
      
        query 'RENAME TABLE ... TO ...' failed: 6: Error on
        delete of '....frm-0001' (Errcode: 2)
      
      Also .frm file of that view may be lost (renamed to .frm~).
      
      The server failed because it tried to rename latest 3
      backup .frm files renaming the view: the server used an
      integer value of the "revision" field of .frm file to
      extract those file names. After the fix for bug 17823 those
      files were not created/maintained any more, however the
      "revision" field was incremented as usual. So, the server
      failed renaming non existent files.
      
      This fix solves the problem by removing the support for
      "revision" .frm file field:
      1. New server silently ignores existent "revision" fields
         in old .frm files and never write it down;
      2. Old server assumes, that missing "revision" field in new
         .frm files means default value of 0.
      3. Accordingly to the fix for bug 17823 the new server
         drops arc/ directory on alter/rename view, so after
         "live downgrade" old server begins maintenance of the
         arc/ directory from scratch without conflicts with .frm
         files.
      
      
      sql/parse_file.cc:
        Bug #40021: Renaming view fails, archived .frm for view is
                    missing after downgrade
        
        1. static write_parameter(): the old_version parameter
           and the section for FILE_OPTIONS_REV have been re moved.
        2. write_parameter(): the max_versions parameter has been
           removed;
        3. sql_create_definition_file(): removal of dead code;
        4. rename_in_schema_file(): revision and num_view_backups
           parameters and dead code have been removed;
        5. File_parser::parse(): FILE_OPTIONS_REV section has been
           removed.
      sql/parse_file.h:
        Bug #40021: Renaming view fails, archived .frm for view is
                    missing after downgrade
        
        1. The FILE_OPTIONS_REV constant has been removed.
        2. sql_create_definition_file and rename_in_schema_file
           functions: obsolete versions, revision and
           num_view_backups parameters have been removed.
      sql/sql_db.cc:
        Bug #40021: Renaming view fails, archived .frm for view is
                    missing after downgrade
        
        Commentary update.
      sql/sql_trigger.cc:
        Bug #40021: Renaming view fails, archived .frm for view is
                    missing after downgrade
        
        sql_create_definition_file() calls have been updates to
        new parameter lists.
      sql/sql_view.cc:
        Bug #40021: Renaming view fails, archived .frm for view is
                    missing after downgrade
        
        1. The mysql_create_view function code is used for both
           CREATE VIEW and ALTER queries, but query cache is
           necessary for ALTER command only. Check for a non first
           view revision has been replaced with a direct check for
           ALTER query.
        2. The num_view_backups global constant has been removed.
        3. view_parameters: the "revision" .frm field support has
           been removed.
        4. sql_create_definition_file and rename_in_schema_file
           function calls have been updates to new parameter lists.
      sql/table.h:
        Bug #40021: Renaming view fails, archived .frm for view is
                    missing after downgrade
        
        TABLE_LIST: the revision field has been removed.
      8c9e7a64
  32. 10 Nov, 2008 1 commit
  33. 07 Oct, 2008 1 commit
    • Gleb Shchepa's avatar
      Bug #38691: segfault/abort in ``UPDATE ...JOIN'' while · fd777ae1
      Gleb Shchepa authored
                ``FLUSH TABLES WITH READ LOCK''
      
      Concurrent execution of 1) multitable update with a
      NATURAL/USING join and 2) a such query as "FLUSH TABLES
      WITH READ LOCK" or "ALTER TABLE" of updating table led
      to a server crash.
      
      
      The mysql_multi_update_prepare() function call is optimized
      to lock updating tables only, so it postpones locking to
      the last, and if locking fails, it does cleanup of modified
      syntax structures and repeats a query analysis.  However,
      that cleanup procedure was incomplete for NATURAL/USING join
      syntax data: 1) some Field_item items pointed into freed
      table structures, and 2) the TABLE_LIST::join_columns fields
      was not reset.
      
      Major change:
        short-living Field *Natural_join_column::table_field has
        been replaced with long-living Item*.
      
      
      mysql-test/r/lock_multi.result:
        Added test case for bug #38691.
      mysql-test/t/lock_multi.test:
        Added test case for bug #38691.
      sql/item.cc:
        Bug #38691: segfault/abort in ``UPDATE ...JOIN'' while
                  ``FLUSH TABLES WITH READ LOCK''
        
        The Item_field constructor has been modified to allocate
        and copy original database/table/field names always (not
        during PS preparation/1st execution only), because
        an initialization of Item_field items with a pointer to
        short-living Field structures is a common practice.
      sql/sql_base.cc:
        Bug #38691: segfault/abort in ``UPDATE ...JOIN'' while
                  ``FLUSH TABLES WITH READ LOCK''
        
        1) Type adjustment for Natural_join_column::table_field
           (Field to Item_field);
        2) The setup_natural_join_row_types function has been
           updated to take into account new
           first_natural_join_processing flag to skip unnecessary
           reinitialization of Natural_join_column::join_columns
           during table reopening after lock_tables() failure
           (like the 'first_execution' flag for PS).
      sql/sql_lex.cc:
        Bug #38691: segfault/abort in ``UPDATE ...JOIN'' while
                  ``FLUSH TABLES WITH READ LOCK''
        
        Initialization of the new
        st_select_lex::first_natural_join_processing flag has
        been added.
      sql/sql_lex.h:
        Bug #38691: segfault/abort in ``UPDATE ...JOIN'' while
                  ``FLUSH TABLES WITH READ LOCK''
        
        The st_select_lex::first_natural_join_processing flag
        has been added to skip unnecessary rebuilding of
        NATURAL/USING JOIN structures during table reopening
        after lock_tables failure.
      sql/sql_update.cc:
        Bug #38691: segfault/abort in ``UPDATE ...JOIN'' while
                  ``FLUSH TABLES WITH READ LOCK''
        
        Extra cleanup calls have been added to reset
        Natural_join_column::table_field items.
      sql/table.cc:
        Bug #38691: segfault/abort in ``UPDATE ...JOIN'' while
                  ``FLUSH TABLES WITH READ LOCK''
        
        Type adjustment for Natural_join_column::table_field
        (Field to Item_field).
      sql/table.h:
        Bug #38691: segfault/abort in ``UPDATE ...JOIN'' while
                  ``FLUSH TABLES WITH READ LOCK''
        
        Type of the Natural_join_column::table_field field has
        been changed from Field that points into short-living
        TABLE memory to long-living Item_field that can be
        linked to (fixed) reopened table.
      fd777ae1
  34. 08 Sep, 2008 1 commit
    • Mattias Jonsson's avatar
      Bug#38804: Query deadlock causes all tables to be inaccessible. · 078592c8
      Mattias Jonsson authored
      Problem was a mutex added in bug n 27405 for solving a problem
      with auto_increment in partitioned innodb tables.
      (in ha_partition::write_row over partitions file->ha_write_row)
      
      Solution is to use the patch for bug#33479, which refines the
      usage of mutexes for auto_increment.
      
      Backport of bug-33479 from 6.0:
      
      Bug-33479: auto_increment failures in partitioning
      
      Several problems with auto_increment in partitioning
      (with MyISAM, InnoDB. Locking issues, not handling
      multi-row INSERTs properly etc.)
      
      Changed the auto_increment handling for partitioning:
      Added a ha_data variable in table_share for storage engine specific data
      such as auto_increment value handling in partitioning, also see WL 4305
      and using the ha_data->mutex to lock around read + update.
      
      The idea is this:
      Store the table's reserved auto_increment value in
      the TABLE_SHARE and use a mutex to, lock it for reading and updating it
      and unlocking it, in one block. Only accessing all partitions
      when it is not initialized.
      Also allow reservations of ranges, and if no one has done a reservation
      afterwards, lower the reservation to what was actually used after
      the statement is done (via release_auto_increment from WL 3146).
      The lock is kept from the first reservation if it is statement based
      replication and a multi-row INSERT statement where the number of
      candidate rows to insert is not known in advance (like INSERT SELECT,
      LOAD DATA, unlike INSERT VALUES (row1), (row2),,(rowN)).
      
      This should also lead to better concurrancy (no need to have a mutex
      protection around write_row in all cases)
      and work with any local storage engine.
      
      mysql-test/suite/parts/inc/partition_auto_increment.inc:
        Bug#38804: Query deadlock causes all tables to be inaccessible.
        Backporting from 6.0 of:
        Bug-33479: auto_increment failures in partitioning
        
        Test source file for testing auto_increment
      mysql-test/suite/parts/r/partition_auto_increment_archive.result:
        Bug#38804: Query deadlock causes all tables to be inaccessible.
        Backporting from 6.0 of:
        Bug-33479: auto_increment failures in partitioning
        
        result file for testing auto_increment
      mysql-test/suite/parts/r/partition_auto_increment_blackhole.result:
        Bug#38804: Query deadlock causes all tables to be inaccessible.
        Backporting from 6.0 of:
        Bug-33479: auto_increment failures in partitioning
        
        result file for testing auto_increment
      mysql-test/suite/parts/r/partition_auto_increment_innodb.result:
        Bug#38804: Query deadlock causes all tables to be inaccessible.
        Backporting from 6.0 of:
        Bug-33479: auto_increment failures in partitioning
        
        result file for testing auto_increment
      mysql-test/suite/parts/r/partition_auto_increment_memory.result:
        Bug#38804: Query deadlock causes all tables to be inaccessible.
        Backporting from 6.0 of:
        Bug-33479: auto_increment failures in partitioning
        
        result file for testing auto_increment
      mysql-test/suite/parts/r/partition_auto_increment_myisam.result:
        Bug#38804: Query deadlock causes all tables to be inaccessible.
        Backporting from 6.0 of:
        Bug-33479: auto_increment failures in partitioning
        
        result file for testing auto_increment
      mysql-test/suite/parts/r/partition_auto_increment_ndb.result:
        Bug#38804: Query deadlock causes all tables to be inaccessible.
        Backporting from 6.0 of:
        Bug-33479: auto_increment failures in partitioning
        
        result file for testing auto_increment
      mysql-test/suite/parts/t/partition_auto_increment_archive.test:
        Bug#38804: Query deadlock causes all tables to be inaccessible.
        Backporting from 6.0 of:
        Bug-33479: auto_increment failures in partitioning
        
        test file for testing auto_increment
      mysql-test/suite/parts/t/partition_auto_increment_blackhole.test:
        Bug#38804: Query deadlock causes all tables to be inaccessible.
        Backporting from 6.0 of:
        Bug-33479: auto_increment failures in partitioning
        
        test file for testing auto_increment
      mysql-test/suite/parts/t/partition_auto_increment_innodb.test:
        Bug#38804: Query deadlock causes all tables to be inaccessible.
        Backporting from 6.0 of:
        Bug-33479: auto_increment failures in partitioning
        
        test file for testing auto_increment
      mysql-test/suite/parts/t/partition_auto_increment_memory.test:
        Bug#38804: Query deadlock causes all tables to be inaccessible.
        Backporting from 6.0 of:
        Bug-33479: auto_increment failures in partitioning
        
        test file for testing auto_increment
      mysql-test/suite/parts/t/partition_auto_increment_myisam.test:
        Bug#38804: Query deadlock causes all tables to be inaccessible.
        Backporting from 6.0 of:
        Bug-33479: auto_increment failures in partitioning
        
        test file for testing auto_increment
      mysql-test/suite/parts/t/partition_auto_increment_ndb.test:
        Bug#38804: Query deadlock causes all tables to be inaccessible.
        Backporting from 6.0 of:
        Bug-33479: auto_increment failures in partitioning
        
        test file for testing auto_increment
      sql/ha_partition.cc:
        Bug#38804: Query deadlock causes all tables to be inaccessible.
        Backporting from 6.0 of:
        Bug-33479: Failures using auto_increment and partitioning
        
        Changed ha_partition::get_auto_increment from file->get_auto_increment
        to file->info(HA_AUTO_STATUS), since it is works better with InnoDB
        (InnoDB can have issues with partitioning and auto_increment,
        where get_auto_increment sometimes can return a non updated value.)
        
        Using the new table_share->ha_data for keeping the auto_increment
        value, shared by all instances of the same table.
        It is read+updated when holding a auto_increment specific mutex.
        Also added release_auto_increment to decrease gaps if possible.
        And a lock for multi-row INSERT statements where the number of candidate
        rows to insert is not known in advance (like INSERT SELECT, LOAD DATA;
        Unlike INSERT INTO (row1),(row2),,(rowN)).
        Fixed a small bug, copied++ to (*copied)++ and the same for deleted.
        Changed from current_thd, to ha_thd()
      sql/ha_partition.h:
        Bug#38804: Query deadlock causes all tables to be inaccessible.
        Backporting from 6.0 of:
        Bug-33479: Failures using auto_increment and partitioning
        
        Added a new struct HA_DATA_PARTITION to be used in table_share->ha_data
        Added a private function to set auto_increment values if needed
        Removed the restore_auto_increment (the hander version is better)
        Added lock/unlock functions for auto_increment handling.
        Changed copied/deleted to const.
      sql/handler.h:
        Bug#38804: Query deadlock causes all tables to be inaccessible.
        Backporting from 6.0 of:
        Bug-33479: auto_increment failures in partitioning
        
        Added const for changed_partitions
        Added comments about SQLCOM_TRUNCATE for delete_all_rows
      sql/table.h:
        Bug#38804: Query deadlock causes all tables to be inaccessible.
        Backporting from 6.0 of:
        Bug-33479: Failures using auto_increment and partitioning
        
        Added a variable in table_share: ha_data for storage of storage engine
        specific data (such as auto_increment handling in partitioning).
      078592c8
  35. 03 Sep, 2008 1 commit
    • Martin Hansson's avatar
      Bug#36086: SELECT * from views don't check column grants · d88ceff0
      Martin Hansson authored
      This patch also fixes bugs 36963 and 35600.
                            
      - In many places a view was confused with an anonymous derived
        table, i.e. access checking was skipped. Fixed by introducing a
        predicate to tell the difference between named and anonymous
        derived tables.
                            
      - When inserting fields for "SELECT * ", there was no 
        distinction between base tables and views, where one should be
        made. View privileges are checked elsewhere.
      
      mysql-test/include/grant_cache.inc:
        Bug#36086: Changed test case.
      mysql-test/r/grant2.result:
        Bug#36086: Changed test result.
      mysql-test/r/grant_cache_no_prot.result:
        Bug#36086: Changed test result.
      mysql-test/r/grant_cache_ps_prot.result:
        Bug#36086: Changed test result.
      mysql-test/r/view_grant.result:
        Bug#36086: Test result.
      mysql-test/t/grant2.test:
        Bug#36086: Changed test case.
      mysql-test/t/view_grant.test:
        Bug#36086: Test case.
      sql/item.cc:
        Bug#36086: Replaced conditional with new methods.
      sql/sql_acl.cc:
        Bug no 35600: 
        In mysql_table_grant:
          Replaced conditional with the new accessor method.
        
        In check_grant:
         - Changed the requirement table->derived != null to 
           checking all anonymous derived tables.
         - Use of the accessor methods for getting object and database 
           names.
            
        Bug#36086: In check_grant_all_columns:
          - Updated comment. This function is now called for views
            as well.
          - The error message should not disclose any column names 
            unless the user has privilege to see all column names.
          - Changed names of Field_iterator_table_ref methods.
      sql/sql_base.cc:
        Bug no 36963: In insert_fields()
          - Commented.
          - We should call check_grant_all_columns() for views in  
            this case.        
          - Changed names of Field_iterator_table_ref methods.
          - We should not disclose column names in the error message
            when the user has no approprate privilege.
      sql/sql_cache.cc:
        Bug#36086: Replaced test with new predicate method.
      sql/sql_derived.cc:
        Bug#36086: commenting only. Updated and doxygenated
        comment for mysql_derived_prepare().
      sql/sql_parse.cc:
        Bug no 35600: 
        - In check_single_table_access:
          Due to the bug, check_grant would raise an error for a
          SHOW CREATE TABLE command for a TEMPTABLE view. It should in
          fact not be be invoked in this case. This table privilege
          is checked already.
          There is a test case for this in information_schema_db.test.
            
        - In check_access: replaced table->derived
      sql/table.cc:
        Bug#36086: 
        
        - In TABLE_LIST::set_underlying_merge(): 
          Commenting only. Doxygenated, corrected spelling,
          added.
        
        - Renamed table_name() and db_name() methods of 
          Field_iterator_table_ref in order to be consistent
          with new methods in TABLE_LIST.
      sql/table.h:
        Bug#36086: 
          - Commented GRANT_INFO.
          - Added a predicate is_anonymous_derived_table() to    
            TABLE_LIST.
          - Added get_table_name() and get_db_name() to   
            TABLE_LIST in order to hide the disparate   
            representation of these properties.
      d88ceff0
  36. 24 Jul, 2008 1 commit
    • Kristofer Pettersson's avatar
      Bug#38002 table_cache consumes too much memory with blobs · 4e8b41ee
      Kristofer Pettersson authored
           
      Tables in the table definition cache are keeping a cache buffer for blob
      fields which can consume a lot of memory.
          
      This patch introduces a maximum size threshold for these buffers.
      
      
      sql/sql_base.cc:
        Added function free_field_buffers_larger_than to reclaim memory from blob
        field buffers too large to be cached.
      sql/table.cc:
        Added function free_field_buffers_larger_than
      4e8b41ee
  37. 20 May, 2008 1 commit
    • unknown's avatar
      Bug#27430 "Crash in subquery code when in PS and table DDL changed after · b018aa9d
      unknown authored
      PREPARE": rename members, methods, classes to follow the spec 
      (a code review request)
      
      
      sql/mysql_priv.h:
        enum_metadata_type -> enum_table_ref_type
      sql/sp_head.cc:
        Metadata_version_observer -> Reprepare_observer
      sql/sql_base.cc:
        metadata -> table_ref
      sql/sql_class.cc:
        Replace an abstract interface with a concrete implementation.
      sql/sql_class.h:
        enum_metadata_type -> enum_table_ref_type
      sql/sql_prepare.cc:
        Move implementation of Execute_observer to sql_class.cc and
        rename the class to Reprepare_observer.
        Use getters instead of direct access to the members.
      sql/table.h:
        metadata -> table_ref
      b018aa9d
  38. 17 May, 2008 1 commit
    • unknown's avatar
      Implement some code review fixes for the fix for Bug#27430 · 724f1d9c
      unknown authored
      "Crash in subquery code when in PS and table DDL changed after PREPARE"
      
      
      include/my_sys.h:
        Add two new flags for my_error(). These flags help parameterize
        behavoiur of my_message_sql()
      sql/item.cc:
        Update comments.
        Fix a typo in Item_param::set_param_type_and_swap_value()
      sql/mysqld.cc:
        Implement two additional flags for my_error():
         - if ME_NO_SP_HANDLER is specified, ignore stored procedure continue/
            exit handlers
         - if ME_NO_WARNING_FOR_ERROR is specified, do not push warning
      sql/sql_base.cc:
        Update comments.
        Rename a few methods.
      sql/sql_class.h:
        Update and improve comments.
      sql/sql_prepare.cc:
        Update comments.
        Style changes.
      sql/table.h:
        Update comments.
        Style changes.
        Rename a few methods.
      tests/mysql_client_test.c:
        Zero the bind array, to follow C API requirements.
      724f1d9c
  39. 16 Apr, 2008 1 commit
    • unknown's avatar
      WL#4165 "Prepared statements: validation". · 0f128094
      unknown authored
      Add metadata validation to ~20 more SQL commands. Make sure that
      these commands actually work in ps-protocol, since until now they
      were enabled, but not carefully tested.
      Fixes the ml003 bug found by Matthias during internal testing of the
      patch.
      
      
      mysql-test/r/ps_ddl.result:
        Update test results (WL#4165)
      mysql-test/t/ps_ddl.test:
        Cover with tests metadata validation of 26 SQL statements.
      sql/mysql_priv.h:
        Fix the name in the comment.
      sql/sp_head.cc:
        Changed the way the observer is removed in case of stored procedures
        to support validation prepare stmt from "call p1(<expr>)": whereas
        tables used in the expression must be validated, substatements
        of p1 must not.
        The previous scheme used to silence the observer only in stored
        functions and triggers.
      sql/sql_class.cc:
        Now the observer is silenced in sp_head::execute(). Remove it from
        Sub_statement_state.
      sql/sql_class.h:
        Now the observer is silenced in sp_head::execute(). Remove it from
        Sub_statement_state.
      sql/sql_parse.cc:
        Add CF_REEXECUTION_FRAGILE to 20 more SQLCOMs that need it.
      sql/sql_prepare.cc:
        Add metadata validation to ~20 new SQLCOMs that need it.
        Fix memory leaks with expressions used in SHOW DATABASES and CALL
        (and prepared statements).
        We need to fix all expressions at prepare, since if these expressions
        use subqueries, there are one-time transformations of the parse
        tree that must be done at prepare. 
        List of fixed commands includes: SHOW TABLES, SHOW DATABASES,
        SHOW TRIGGERS, SHOW EVENTS, SHOW OPEN TABLES,SHOW KEYS, SHOW FIELDS, 
        SHOW COLLATIONS, SHOW CHARSETS, SHOW VARIABLES, SHOW TATUS, SHOW TABLE
        STATUS, SHOW PROCEDURE STATUS, SHOW FUNCTION STATUS, CALL.
        Add comment to set_parameters().
      sql/table.h:
        Update comments.
      0f128094