An error occurred fetching the project authors.
  1. 10 Jul, 2011 1 commit
  2. 02 Jul, 2011 1 commit
  3. 01 Jun, 2011 1 commit
    • Jon Olav Hauglid's avatar
      Bug#11853126 RE-ENABLE CONCURRENT READS WHILE CREATING · 9b076952
      Jon Olav Hauglid authored
                   SECONDARY INDEX IN INNODB
      
      The patches for Bug#11751388 and Bug#11784056 enabled concurrent
      reads while creating secondary indexes in InnoDB. However, they
      introduced a regression. This regression occured if ALTER TABLE
      failed after the index had been added, for example during the
      lock upgrade needed to update .FRM. If this happened, InnoDB
      and the server got out of sync with regards to which indexes
      actually existed. Therefore the patch for Bug#11815600 again
      disabled concurrent reads.
      
      This patch re-enables concurrent reads. The original regression
      is fixed by splitting the ADD INDEX operation into two parts.
      First the new index is created but not made active. This is
      done while concurrent reads are allowed. The second part of
      the operation makes the index active (or reverts the change).
      This is done after lock upgrade, which prevents the original
      regression.
      
      In order to implement this change, the patch changes the storage
      API for in-place index creation. handler::add_index() is split
      into two functions, handler_add_index() and
      handler::final_add_index(). The former for creating indexes without
      making them visible and the latter for commiting (i.e. making
      visible) new indexes or reverting the changes.
      
      Large parts of this patch were written by Marko Mäkelä.
      
      Test case added to innodb_mysql_lock.test.
      9b076952
  4. 05 May, 2011 1 commit
  5. 25 Apr, 2011 1 commit
  6. 29 Mar, 2011 1 commit
    • Magne Mahre's avatar
      Bug#11933945 REMOVE LGPL LICENSED FILES IN MYSQL 5.5 · 517c5c24
      Magne Mahre authored
      The LGPL license is used in some legacy code, and to
      adhere to current licensing polity, we remove those
      files that are no longer used, and reorganize the
      remaining LGPL code so it will be GPL licensed from
      now on.
                  
      Note:  This patch only removed LGPL licensed files
             in MySQL 5.5 and later, and is the third of a 
             set of patches to remove LGPL from all trees.
             (See Bug# 11840513 for details) 
      517c5c24
  7. 28 Mar, 2011 1 commit
    • Magne Mahre's avatar
      Bug#11900714 REMOVE LGPL LICENSED FILES IN MYSQL 5.1 · 9ff72a1a
      Magne Mahre authored
      The LGPL license is used in some legacy code, and to
      adhere to current licensing polity, we remove those
      files that are no longer used, and reorganize the
      remaining LGPL code so it will be GPL licensed from
      now on.
            
      Note:  This patch only removed LGPL licensed files
             in MySQL 5.1, and is the second of a set of
             patches to remove LGPL from all trees.
             (See Bug# 11840513 for details) 
      9ff72a1a
  8. 25 Mar, 2011 2 commits
    • Mattias Jonsson's avatar
      Bug#11766249 bug#59316: PARTITIONING AND INDEX_MERGE MEMORY LEAK · e0887df8
      Mattias Jonsson authored
      When executing row-ordered-retrieval index merge,
      the handler was cloned, but it used the wrong
      memory root, so instead of allocating memory
      on the thread/query's mem_root, it used the table's
      mem_root, resulting in non released memory in the
      table object, and was not freed until the table was
      closed.
      
      Solution was to ensure that memory used during cloning
      of a handler was allocated from the correct memory root.
      
      This was implemented by fixing handler::clone() to also
      take a name argument, so it can be used with partitioning.
      And in ha_partition only allocate the ha_partition's ref, and
      call the original ha_partition partitions clone() and set at cloned
      partitions.
      
      Fix of .bzrignore on Windows with VS 2010
      e0887df8
    • Magnus Blåudd's avatar
      Bug#60111 storage type for table not saved in .frm · 1c5d585b
      Magnus Blåudd authored
       (aka BUG#11766883)
        - fix review comments
        - Rewrite last usage of handler::get_tablespace_name to use
          table->s->tablespace directly
        - Remove(revert) the addition of default implementation for
          handler::get_tablespace_name
        - Add comments describing the new TABLE_SHARE members default_storage_media
          and tablespace
        - Fix usage of incorrect mask for column_format bits, i.e COLUMN_FORMAT_MASK
      1c5d585b
  9. 08 Mar, 2011 1 commit
    • Jon Olav Hauglid's avatar
      Bug #11755431 (former 47205) · 0db0e64f
      Jon Olav Hauglid authored
      MAP 'REPAIR TABLE' TO RECREATE +ANALYZE FOR ENGINES NOT
      SUPPORTING NATIVE REPAIR
      
      Executing 'mysqlcheck --check-upgrade --auto-repair ...' will first issue
      'CHECK TABLE FOR UPGRADE' for all tables in the database in order to check if the
      tables are compatible with the current version of MySQL. Any tables that are
      found incompatible are then upgraded using 'REPAIR TABLE'.
      
      The problem was that some engines (e.g. InnoDB) do not support 'REPAIR TABLE'.
      This caused any such tables to be left incompatible. As a result such tables were
      not properly fixed by the mysql_upgrade tool.
      
      This patch fixes the problem by first changing 'CHECK TABLE FOR UPGRADE' to return
      a different error message if the engine does not support REPAIR. Instead of
      "Table upgrade required. Please do "REPAIR TABLE ..." it will report
      "Table rebuild required. Please do "ALTER TABLE ... FORCE ..."
      
      Second, the patch changes mysqlcheck to do 'ALTER TABLE ... FORCE' instead of
      'REPAIR TABLE' in these cases.
      
      This patch also fixes 'ALTER TABLE ... FORCE' to actually rebuild the table.
      This change should be reflected in the documentation. Before this patch,
      'ALTER TABLE ... FORCE' was unused (See Bug#11746162)
      
      Test case added to mysqlcheck.test
      
      
      client/mysqlcheck.c:
        Changed mysqlcheck to do 'ALTER TABLE ... FORCE' if
        'CHECK TABLE FOR UPGRADE' reports ER_TABLE_NEEDS_REBUILD
        and not ER_TABLE_NEEDS_UPGRADE.
      mysql-test/r/mysqlcheck.result:
        Added regression test.
      mysql-test/std_data/bug47205.frm:
        InnoDB 5.0 FRM which contains a varchar primary key using
        utf8_general_ci. This is an incompatible FRM for 5.5.
      mysql-test/t/mysqlcheck.test:
        Added regression test.
      sql/handler.h:
        Added new HA_CAN_REPAIR flag.
      sql/share/errmsg-utf8.txt:
        Added new error message ER_TABLE_NEEDS_REBUILD
      sql/sql_admin.cc:
        Changed 'CHECK TABLE FOR UPDATE' to give ER_TABLE_NEEDS_REBUILD
        instead of ER_TABLE_NEEDS_UPGRADE if the engine does not support
        REPAIR (as indicated by the new HA_CAN_REPAIR flag).
      sql/sql_lex.h:
        Remove unused ALTER_FORCE flag.
      sql/sql_yacc.yy:
        Make sure ALTER TABLE ... FORCE recreates the table
        by setting the ALTER_RECREATE flag as the ALTER_FORCE
        flag was unused.
      storage/archive/ha_archive.h:
        Added new HA_CAN_REPAIR flag to Archive
      storage/csv/ha_tina.h:
        Added new HA_CAN_REPAIR flag to CSV
      storage/federated/ha_federated.h:
        Added new HA_CAN_REPAIR flag to Federated
      storage/myisam/ha_myisam.cc:
        Added new HA_CAN_REPAIR flag to MyISAM
      0db0e64f
  10. 04 Mar, 2011 1 commit
    • Magnus Blåudd's avatar
      Bug#60111 storage type for table not saved in .frm · 0be575b7
      Magnus Blåudd authored
       - Add new "format section" in extra data segment with additional table and
         column properties. This was originally introduced in 5.1.20 based MySQL Cluster
       - Remove hardcoded STORAGE DISK for table and instead
         output the real storage format used. Keep both TABLESPACE
         and STORAGE inside same version guard.
       - Implement default version of handler::get_tablespace_name() since tablespace
         is now available in share and it's unnecessary for each handler  to implement.
         (the function could actually be removed totally now).
       - Add test for combinations of TABLESPACE  and STORAGE with CREATE TABLE
         and ALTER TABLE
       - Add test to show that 5.5 now can read a .frm file created by MySQL Cluster
         7.0.22. Although it does not yet show the column level attributes, they are read.
      0be575b7
  11. 26 Jan, 2011 1 commit
    • Jon Olav Hauglid's avatar
      Bug #42230 during add index, cannot do queries on storage engines · e99f2b1c
      Jon Olav Hauglid authored
                 that implement add_index
      
      The problem was that ALTER TABLE blocked reads on an InnoDB table
      while adding a secondary index, even if this was not needed. It is
      only needed for the final step where the .frm file is updated.
      
      The reason queries were blocked, was that ALTER TABLE upgraded the
      metadata lock from MDL_SHARED_NO_WRITE (which blocks writes) to
      MDL_EXCLUSIVE (which blocks all accesses) before index creation.
      
      The way the server handles index creation, is that storage engines
      publish their capabilities to the server and the server determines
      which of the following three ways this can be handled: 1) build a
      new version of the table; 2) change the existing table but with
      exclusive metadata lock; 3) change the existing table but without
      metadata lock upgrade.
      
      For InnoDB and secondary index creation, option 3) should have been
      selected. However this failed for two reasons. First, InnoDB did
      not publish this capability properly.
      
      Second, the ALTER TABLE code failed to made proper use of the
      information supplied by the storage engine. A variable
      need_lock_for_indexes was set accordingly, but was not later used.
      This patch fixes this problem by only doing metadata lock upgrade
      before index creation/deletion if this variable has been set.
      
      This patch also changes some of the related terminology used 
      in the code. Specifically the use of "fast" and "online" with
      respect to ALTER TABLE. "Fast" was used to indicate that an
      ALTER TABLE operation could be done without involving a
      temporary table. "Fast" has been renamed "in-place" to more
      accurately describe the behavior.
      
      "Online" meant that the operation could be done without taking
      a table lock. However, in the current implementation writes
      are always prohibited during ALTER TABLE and an exclusive
      metadata lock is held while updating the .frm, so ALTER TABLE
      is not completely online. This patch replaces "online" with 
      "in-place", with additional comments indicating if concurrent
      reads are allowed during index creation/deletion or not.
      
      An important part of this update of terminology is renaming
      of the handler flags used by handlers to indicate if index
      creation/deletion can be done in-place and if concurrent reads
      are allowed. For example, the HA_ONLINE_ADD_INDEX_NO_WRITES
      flag has been renamed to HA_INPLACE_ADD_INDEX_NO_READ_WRITE,
      while HA_ONLINE_ADD_INDEX is now HA_INPLACE_ADD_INDEX_NO_WRITE.
      Note that this is a rename to clarify current behavior, the
      flag values have not changed and no flags have been removed or
      added.
      
      Test case added to innodb_mysql_sync.test.
      e99f2b1c
  12. 05 Nov, 2010 1 commit
    • Mattias Jonsson's avatar
      Bug#57778: failed primary key add to partitioned innodb table inconsistent and crashes · c04318ed
      Mattias Jonsson authored
      It was possible to issue an ALTER TABLE ADD PRIMARY KEY on
      an partitioned InnoDB table that failed and crashed the server.
      
      The problem was that it succeeded to create the PK on at least
      one partition, and then failed on a subsequent partition, due to
      duplicate key violation. Since the partitions that already had added
      the PK was not reverted all partitions was not consistent with the
      table definition, which caused the crash.
      
      The solution was to add a revert step to ha_partition::add_index()
      that dropped the index for the already succeeded partitions, on failure.
      
      mysql-test/r/partition.result:
        updated result
      mysql-test/t/partition.test:
        Added test
      sql/ha_partition.cc:
        Only allow ADD/DROP flags in pairs, so that they can be reverted on failures.
        If add_index() fails for a partition, revert (drop the index) for the previous
        partitions.
      sql/handler.h:
        Added some extra info in a comment.
      c04318ed
  13. 20 Oct, 2010 1 commit
    • Sergei Golubchik's avatar
      better fix for MySQL bugs · 60c15066
      Sergei Golubchik authored
      BUG#26447 prefer a clustered key for an index scan, as secondary index is always slower
        ... which was fixed to cause
      BUG#35850 queries take 50% longer
        ... and was reverted
      
      and
      
      BUG#39653 prefer a secondary index for an index scan, as clustered key is always slower
        ... which was fixed to cause
      BUG#55656 mysqldump takes six days instead of half an hour
        ... and was amended with a special case workaround
      
      
      sql/opt_range.cc:
        move get_index_only_read_time() into the handler class
      sql/sql_select.cc:
        use cost not an index length when choosing a cheaper index
      60c15066
  14. 06 Oct, 2010 1 commit
    • Davi Arnaut's avatar
      Bug#49938: Failing assertion: inode or deadlock in fsp/fsp0fsp.c · a5efb91d
      Davi Arnaut authored
      Bug#54678: InnoDB, TRUNCATE, ALTER, I_S SELECT, crash or deadlock
      
      - Incompatible change: truncate no longer resorts to a row by
      row delete if the storage engine does not support the truncate
      method. Consequently, the count of affected rows does not, in
      any case, reflect the actual number of rows.
      
      - Incompatible change: it is no longer possible to truncate a
      table that participates as a parent in a foreign key constraint,
      unless it is a self-referencing constraint (both parent and child
      are in the same table). To work around this incompatible change
      and still be able to truncate such tables, disable foreign checks
      with SET foreign_key_checks=0 before truncate. Alternatively, if
      foreign key checks are necessary, please use a DELETE statement
      without a WHERE condition.
      
      Problem description:
      
      The problem was that for storage engines that do not support
      truncate table via a external drop and recreate, such as InnoDB
      which implements truncate via a internal drop and recreate, the
      delete_all_rows method could be invoked with a shared metadata
      lock, causing problems if the engine needed exclusive access
      to some internal metadata. This problem originated with the
      fact that there is no truncate specific handler method, which
      ended up leading to a abuse of the delete_all_rows method that
      is primarily used for delete operations without a condition.
      
      Solution:
      
      The solution is to introduce a truncate handler method that is
      invoked when the engine does not support truncation via a table
      drop and recreate. This method is invoked under a exclusive
      metadata lock, so that there is only a single instance of the
      table when the method is invoked.
      
      Also, the method is not invoked and a error is thrown if
      the table is a parent in a non-self-referencing foreign key
      relationship. This was necessary to avoid inconsistency as
      some integrity checks are bypassed. This is inline with the
      fact that truncate is primarily a DDL operation that was
      designed to quickly remove all data from a table.
      
      mysql-test/suite/innodb/t/innodb-truncate.test:
        Add test cases for truncate and foreign key checks.
        Also test that InnoDB resets auto-increment on truncate.
      mysql-test/suite/innodb/t/innodb.test:
        FK is not necessary, test is related to auto-increment.
        
        Update error number, truncate is no longer invoked if
        table is parent in a FK relationship.
      mysql-test/suite/innodb/t/innodb_mysql.test:
        Update error number, truncate is no longer invoked if
        table is parent in a FK relationship.
        
        Use delete instead of truncate, test is used to check
        the interaction of FKs, triggers and delete.
      mysql-test/suite/parts/inc/partition_check.inc:
        Fix typo.
      mysql-test/suite/sys_vars/t/foreign_key_checks_func.test:
        Update error number, truncate is no longer invoked if
        table is parent in a FK relationship.
      mysql-test/t/mdl_sync.test:
        Modify test case to reflect and ensure that truncate takes
        a exclusive metadata lock.
      mysql-test/t/trigger-trans.test:
        Update error number, truncate is no longer invoked if
        table is parent in a FK relationship.
      sql/ha_partition.cc:
        Reorganize the various truncate methods. delete_all_rows is now
        passed directly to the underlying engines, so as truncate. The
        code responsible for truncating individual partitions is moved
        to ha_partition::truncate_partition, which is invoked when a
        ALTER TABLE t1 TRUNCATE PARTITION p statement is executed.
        
        Since the partition truncate no longer can be invoked via
        delete, the bitmap operations are not necessary anymore. The
        explicit reset of the auto-increment value is also removed
        as the underlying engines are now responsible for reseting
        the value.
      sql/handler.cc:
        Wire up the handler truncate method.
      sql/handler.h:
        Introduce and document the truncate handler method. It assumes
        certain use cases of delete_all_rows.
        
        Add method to retrieve the list of foreign keys referencing a
        table. Method is used to avoid truncating tables that are
        parent in a foreign key relationship.
      sql/share/errmsg-utf8.txt:
        Add error message for truncate and FK.
      sql/sql_lex.h:
        Introduce a flag so that the partition engine can detect when
        a partition is being truncated. Used to give a special error.
      sql/sql_parse.cc:
        Function mysql_truncate_table no longer exists.
      sql/sql_partition_admin.cc:
        Implement the TRUNCATE PARTITION statement.
      sql/sql_truncate.cc:
        Change the truncate table implementation to use the new truncate
        handler method and to not rely on row-by-row delete anymore.
        
        The truncate handler method is always invoked with a exclusive
        metadata lock. Also, it is no longer possible to truncate a
        table that is parent in some non-self-referencing foreign key.
      storage/archive/ha_archive.cc:
        Rename method as the description indicates that in the future
        this could be a truncate operation.
      storage/blackhole/ha_blackhole.cc:
        Implement truncate as no operation for the blackhole engine in
        order to remain compatible with older releases.
      storage/federated/ha_federated.cc:
        Introduce truncate method that invokes delete_all_rows.
        This is required to support partition truncate as this
        form of truncate does not implement the drop and recreate
        protocol.
      storage/heap/ha_heap.cc:
        Introduce truncate method that invokes delete_all_rows.
        This is required to support partition truncate as this
        form of truncate does not implement the drop and recreate
        protocol.
      storage/ibmdb2i/ha_ibmdb2i.cc:
        Introduce truncate method that invokes delete_all_rows.
        This is required to support partition truncate as this
        form of truncate does not implement the drop and recreate
        protocol.
      storage/innobase/handler/ha_innodb.cc:
        Rename delete_all_rows to truncate. InnoDB now does truncate
        under a exclusive metadata lock.
        
        Introduce and reorganize methods used to retrieve the list
        of foreign keys referenced by a or referencing a table.
      storage/myisammrg/ha_myisammrg.cc:
        Introduce truncate method that invokes delete_all_rows.
        This is required in order to remain compatible with earlier
        releases where truncate would resort to a row-by-row delete.
      a5efb91d
  15. 18 Aug, 2010 1 commit
    • unknown's avatar
      WL#5370 Keep forward-compatibility when changing · d0d8bbed
      unknown authored
              'CREATE TABLE IF NOT EXISTS ... SELECT' behaviour
      BUG#47132, BUG#47442, BUG49494, BUG#23992 and BUG#48814 will disappear
      automatically after the this patch.
      BUG#55617 is fixed by this patch too.
                  
      This is the 5.5 part.
      It implements:
      - 'CREATE TABLE IF NOT EXISTS ... SELECT' statement will not insert
        anything and binlog anything if the table already exists.
        It only generate a warning that table already exists.
      - A couple of test cases for the behavior changing.
      d0d8bbed
  16. 09 Aug, 2010 1 commit
    • Konstantin Osipov's avatar
      A fix for Bug#41158 "DROP TABLE holds LOCK_open during unlink()". · 52306698
      Konstantin Osipov authored
      Remove acquisition of LOCK_open around file system operations,
      since such operations are now protected by metadata locks.
      Rework table discovery algorithm to not require LOCK_open.
      
      No new tests added since all MDL locking operations are covered
      in lock.test and mdl_sync.test, and as long as these tests
      pass despite the increased concurrency, consistency must be
      unaffected.
      
      mysql-test/t/disabled.def:
        Disable NDB tests due to Bug#55799.
      sql/datadict.cc:
        No longer necessary to protect ha_create_table() with
        LOCK_open. Serial execution is now ensured by metadata
        locks.
      sql/ha_ndbcluster.cc:
        Do not manipulate with LOCK_open in cluster code.
      sql/ha_ndbcluster_binlog.cc:
        Do not manipulate with LOCK_open in cluster code.
      sql/ha_ndbcluster_binlog.h:
        Update function signature.
      sql/handler.cc:
        Implement ha_check_if_table_exists().
        @todo: some engines provide ha_table_exists_in_engine()
        handlerton call, for those we perhaps shouldn't
        call ha_discover(), to be more efficient.
        Since currently it's only NDB, postpone till
        integration with NDB.
      sql/handler.h:
        Declare ha_check_if_table_exists() function.
      sql/mdl.cc:
        Remove an obsolete comment.
      sql/sql_base.cc:
        Update to a new signature of close_cached_tables():
        from now on we always call it without LOCK_open.
        Update comments.
        Remove get_table_share_with_create(), we should
        not attempt to create a table under LOCK_open.
        Introduce get_table_share_with_discover() instead,
        which would request a back off action if the table
        exists in engine.
        Remove acquisition of LOCK_open for 
        data dictionary operations, such as check_if_table_exists().
        Do not use get_table_share_with_create/discover for views,
        where it's not needed.
        Make tdc_remove_table() optionally acquire LOCK_open
        to simplify usage of this function.
        Use the right mutex in the partitioning code when
        manipulating with thd->open_tables.
      sql/sql_base.h:
        Update signatures of changes functions.
      sql/sql_insert.cc:
        Do not wrap quick_rm_table() with LOCK_open acquisition, 
        this is unnecessary.
      sql/sql_parse.cc:
        Update to the new calling convention of tdc_remove_table().
        Update to the new signature of close_cached_tables().
        Update comments.
      sql/sql_rename.cc:
        Update to the new calling convention of tdc_remove_table().
        Remove acquisition of LOCK_open around filesystem
        operations.
      sql/sql_show.cc:
        Remove get_trigger_table_impl().
        Do not acquire LOCK_open for a dirty read of the trigger
        file.
      sql/sql_table.cc:
        Do not acquire LOCK_open for filesystem operations.
      sql/sql_trigger.cc:
        Do not require LOCK_open for trigger file I/O.
      sql/sql_truncate.cc:
        Update to the new signature of tdc_remove_table().
      sql/sql_view.cc:
        Do not require LOCK_open for view I/O.
        Use tdc_remove_table() to expel view share.
        Update comments.
      sql/sys_vars.cc:
        Update to the new signature of close_cached_tables().
      52306698
  17. 06 Aug, 2010 1 commit
    • Michael Widenius's avatar
      Fix for LP#614265 Crash in _ma_unpin_all_pages / _ma_search on DELETE with Aria search engine · 50b43cf8
      Michael Widenius authored
      Fixed compiler warnings
      
      client/mysqlslap.c:
        Fixed compiler warnings
      mysql-test/suite/maria/r/maria.result:
        Test case for LP#614265
      mysql-test/suite/maria/t/maria.test:
        Test case for LP#614265
      mysql-test/suite/pbxt/t/skip_name_resolve-master.opt:
        Ensure that we get restart before test (as test uses show processlist)
      sql/handler.cc:
        Added cloned marker if clone was called (for safety checks & debugging)
      sql/handler.h:
        Added cloned marker if clone was called (for safety checks & debugging)
      storage/maria/ha_maria.cc:
        In clone call, set file->trn if cloned file had this set. This is needed as maria_create_trn_for_mysql() and thus file->trn is never set for cloned table.
        Ensure that file->trn is properly reset after calls to repair/check/zerofill.
        Increment locked table count if file->trn is set (as we decrement this in the unlock call)
      tests/mysql_client_test.c:
        Fixed compiler warnings
      50b43cf8
  18. 27 Jul, 2010 1 commit
    • Konstantin Osipov's avatar
      A pre-requisite patch for the fix for Bug#52044. · 36290c09
      Konstantin Osipov authored
      This patch also fixes Bug#55452 "SET PASSWORD is
      replicated twice in RBR mode".
      
      The goal of this patch is to remove the release of 
      metadata locks from close_thread_tables().
      This is necessary to not mistakenly release
      the locks in the course of a multi-step
      operation that involves multiple close_thread_tables()
      or close_tables_for_reopen().
      
      On the same token, move statement commit outside 
      close_thread_tables().
      
      Other cleanups:
      Cleanup COM_FIELD_LIST.
      Don't call close_thread_tables() in COM_SHUTDOWN -- there
      are no open tables there that can be closed (we leave
      the locked tables mode in THD destructor, and this
      close_thread_tables() won't leave it anyway).
      
      Make open_and_lock_tables() and open_and_lock_tables_derived()
      call close_thread_tables() upon failure.
      Remove the calls to close_thread_tables() that are now
      unnecessary.
      
      Simplify the back off condition in Open_table_context.
      
      Streamline metadata lock handling in LOCK TABLES 
      implementation.
      
      Add asserts to ensure correct life cycle of 
      statement transaction in a session.
      
      Remove a piece of dead code that has also become redundant
      after the fix for Bug 37521.
      
      mysql-test/r/variables.result:
        Update results: set @@autocommit and statement transaction/
        prelocked mode.
      mysql-test/r/view.result:
        A harmless change in CHECK TABLE <view> status for a broken view.
        If previously a failure to prelock all functions used in a view 
        would leave the connection in LTM_PRELOCKED mode, now we call
        close_thread_tables() from open_and_lock_tables()
        and leave prelocked mode, thus some check in mysql_admin_table() that
        works only in prelocked/locked tables mode is no longer activated.
      mysql-test/suite/rpl/r/rpl_row_implicit_commit_binlog.result:
        Fixed Bug#55452 "SET PASSWORD is replicated twice in
        RBR mode": extra binlog events are gone from the
        binary log.
      mysql-test/t/variables.test:
        Add a test case: set autocommit and statement transaction/prelocked
        mode.
      sql/event_data_objects.cc:
        Simplify code in Event_job_data::execute().
        Move sp_head memory management to lex_end().
      sql/event_db_repository.cc:
        Move the release of metadata locks outside
        close_thread_tables().
        Make sure we call close_thread_tables() when
        open_and_lock_tables() fails and remove extra
        code from the events data dictionary.
        Use close_mysql_tables(), a new internal
        function to properly close mysql.* tables
        in the data dictionary.
        Contract Event_db_repository::drop_events_by_field,
        drop_schema_events into one function.
        When dropping all events in a schema,
        make sure we don't mistakenly release all
        locks acquired by DROP DATABASE. These
        include locks on the database name
        and the global intention exclusive
        metadata lock.
      sql/event_db_repository.h:
        Function open_event_table() does not require an instance 
        of Event_db_repository.
      sql/events.cc:
        Use close_mysql_tables() instead of close_thread_tables()
        to bootstrap events, since the latter no longer
        releases metadata locks.
      sql/ha_ndbcluster.cc:
        - mysql_rm_table_part2 no longer releases
        acquired metadata locks. Do it in the caller.
      sql/ha_ndbcluster_binlog.cc:
        Deploy the new protocol for closing thread
        tables in run_query() and ndb_binlog_index
        code.
      sql/handler.cc:
        Assert that we never call ha_commit_trans/
        ha_rollback_trans in sub-statement, which
        is now the case.
      sql/handler.h:
        Add an accessor to check whether THD_TRANS object
        is empty (has no transaction started).
      sql/log.cc:
        Update a comment.
      sql/log_event.cc:
        Since now we commit/rollback statement transaction in 
        mysql_execute_command(), we need a mechanism to communicate
        from Query_log_event::do_apply_event() to mysql_execute_command()
        that the statement transaction should be rolled back, not committed.
        Ideally it would be a virtual method of THD. I hesitate
        to make THD a virtual base class in this already large patch.
        Use a thd->variables.option_bits for now.
        
        Remove a call to close_thread_tables() from the slave IO
        thread. It doesn't open any tables, and the protocol
        for closing thread tables is more complicated now.
        
        Make sure we properly close thread tables, however, 
        in Load_data_log_event, which doesn't
        follow the standard server execution procedure
        with mysql_execute_command().
        @todo: this piece should use Server_runnable
        framework instead.
        Remove an unnecessary call to mysql_unlock_tables().
      sql/rpl_rli.cc:
        Update Relay_log_info::slave_close_thread_tables()
        to follow the new close protocol.
      sql/set_var.cc:
        Remove an unused header.
      sql/slave.cc:
        Remove an unnecessary call to
        close_thread_tables().
      sql/sp.cc:
        Remove unnecessary calls to close_thread_tables()
        from SP DDL implementation. The tables will
        be closed by the caller, in mysql_execute_command().
        When dropping all routines in a database, make sure
        to not mistakenly drop all metadata locks acquired
        so far, they include the scoped lock on the schema.
      sql/sp_head.cc:
        Correct the protocol that closes thread tables
        in an SP instruction.
        Clear lex->sphead before cleaning up lex
        with lex_end to make sure that we don't
        delete the sphead twice. It's considered
        to be "cleaner" and more in line with
        future changes than calling delete lex->sphead
        in other places that cleanup the lex.
      sql/sp_head.h:
        When destroying m_lex_keeper of an instruction,
        don't delete the sphead that all lex objects
        share. 
        @todo: don't store a reference to routine's sp_head
        instance in instruction's lex.
      sql/sql_acl.cc:
        Don't call close_thread_tables() where the caller will
        do that for us.
        Fix Bug#55452 "SET PASSWORD is replicated twice in RBR 
        mode" by disabling RBR replication in change_password()
        function.
        Use close_mysql_tables() in bootstrap and ACL reload
        code to make sure we release all metadata locks.
      sql/sql_base.cc:
        This is the main part of the patch:
        - remove manipulation with thd->transaction
        and thd->mdl_context from close_thread_tables().
        Now this function is only responsible for closing
        tables, nothing else.
        This is necessary to be able to easily use
        close_thread_tables() in procedures, that
        involve multiple open/close tables, which all
        need to be protected continuously by metadata
        locks.
        Add asserts ensuring that TABLE object
        is only used when is protected by a metadata lock.
        Simplify the back off condition of Open_table_context,
        we no longer need to look at the autocommit mode.
        Make open_and_lock_tables() and open_normal_and_derived_tables()
        close thread tables and release metadata locks acquired so-far 
        upon failure. This simplifies their usage.
        Implement close_mysql_tables().
      sql/sql_base.h:
        Add declaration for close_mysql_tables().
      sql/sql_class.cc:
        Remove a piece of dead code that has also become redundant
        after the fix for Bug 37521.
        The code became dead when my_eof() was made a non-protocol method,
        but a method that merely modifies the diagnostics area.
        The code became redundant with the fix for Bug#37521, when 
        we started to cal close_thread_tables() before
        Protocol::end_statement().
      sql/sql_do.cc:
        Do nothing in DO if inside a substatement
        (the assert moved out of trans_rollback_stmt).
      sql/sql_handler.cc:
        Add comments.
      sql/sql_insert.cc:
        Remove dead code. 
        Release metadata locks explicitly at the
        end of the delayed insert thread.
      sql/sql_lex.cc:
        Add destruction of lex->sphead to lex_end(),
        lex "reset" method called at the end of each statement.
      sql/sql_parse.cc:
        Move close_thread_tables() and other related
        cleanups to mysql_execute_command()
        from dispatch_command(). This has become
        possible after the fix for Bug#37521.
        Mark federated SERVER statements as DDL.
        
        Next step: make sure that we don't store
        eof packet in the query cache, and move
        the query cache code outside mysql_parse.
        
        Brush up the code of COM_FIELD_LIST.
        Remove unnecessary calls to close_thread_tables().
        
        When killing a query, don't report "OK"
        if it was a suicide.
      sql/sql_parse.h:
        Remove declaration of a function that is now static.
      sql/sql_partition.cc:
        Remove an unnecessary call to close_thread_tables().
      sql/sql_plugin.cc:
        open_and_lock_tables() will clean up
        after itself after a failure.
        Move close_thread_tables() above
        end: label, and replace with close_mysql_tables(),
        which will also release the metadata lock
        on mysql.plugin.
      sql/sql_prepare.cc:
        Now that we no longer release locks in close_thread_tables()
        statement prepare code has become more straightforward.
        Remove the now redundant check for thd->killed() (used
        only by the backup project) from Execute_server_runnable.
        Reorder code to take into account that now mysql_execute_command()
        performs lex->unit.cleanup() and close_thread_tables().
      sql/sql_priv.h:
        Add a new option to server options to interact
        between the slave SQL thread and execution
        framework (hack). @todo: use a virtual
        method of class THD instead.
      sql/sql_servers.cc:
        Due to Bug 25705 replication of 
        DROP/CREATE/ALTER SERVER is broken.
        Make sure at least we do not attempt to 
        replicate these statements using RBR,
        as this violates the assert in close_mysql_tables().
      sql/sql_table.cc:
        Do not release metadata locks in mysql_rm_table_part2,
        this is done by the caller.
        Do not call close_thread_tables() in mysql_create_table(),
        this is done by the caller. 
        Fix a bug in DROP TABLE under LOCK TABLES when,
        upon error in wait_while_table_is_used() we would mistakenly
        release the metadata lock on a non-dropped table.
        Explicitly release metadata locks when doing an implicit
        commit.
      sql/sql_trigger.cc:
        Now that we delete lex->sphead in lex_end(),
        zero the trigger's sphead in lex after loading
        the trigger, to avoid double deletion.
      sql/sql_udf.cc:
        Use close_mysql_tables() instead of close_thread_tables().
      sql/sys_vars.cc:
        Remove code added in scope of WL#4284 which would
        break when we perform set @@session.autocommit along
        with setting other variables and using tables or functions.
        A test case added to variables.test.
      sql/transaction.cc:
        Add asserts.
      sql/tztime.cc:
        Use close_mysql_tables() rather than close_thread_tables().
      36290c09
  19. 23 Jul, 2010 2 commits
  20. 16 Jul, 2010 1 commit
    • Michael Widenius's avatar
      Fix for LP#588251: doStartTableScan() result not checked. · e9166ca1
      Michael Widenius authored
      The issue was that we didn't always check result of ha_rnd_init() which caused a problem for handlers that returned an error in this code.
      - Changed prototype of ha_rnd_init() to ensure that we get a compile warning if result is not checked.
      - Added ha_rnd_init_with_error() that prints error on failure.
      - Checked all usage of ha_rnd_init() and ensure we generate an error message on failures.
      - Changed init_read_record() to return 1 on failure.
      
      
      
      
      sql/create_options.cc:
        Fixed wrong printf
      sql/event_db_repository.cc:
        Check result from init_read_record()
      sql/events.cc:
        Check result from init_read_record()
      sql/filesort.cc:
        Check result from ha_rnd_init()
      sql/ha_partition.cc:
        Check result from ha_rnd_init()
      sql/ha_partition.h:
        Fixed compiler warning
      sql/handler.cc:
        Added ha_rnd_init_with_error()
        Check result from ha_rnd_init()
      sql/handler.h:
        Added ha_rnd_init_with_error()
        Changed prototype of ha_rnd_init() to ensure that we get a compile warning if result is not checked
      sql/item_subselect.cc:
        Check result from ha_rnd_init()
      sql/log.cc:
        Check result from ha_rnd_init()
      sql/log_event.cc:
        Check result from ha_rnd_init()
      sql/log_event_old.cc:
        Check result from ha_rnd_init()
      sql/mysql_priv.h:
        init_read_record() now returns error code on failure
      sql/opt_range.cc:
        Check result from ha_rnd_init()
      sql/records.cc:
        init_read_record() now returns error code on failure
        Check result from ha_rnd_init()
      sql/sql_acl.cc:
        Check result from init_read_record()
      sql/sql_cursor.cc:
        Print error if ha_rnd_init() fails
      sql/sql_delete.cc:
        Check result from init_read_record()
      sql/sql_help.cc:
        Check result from init_read_record()
      sql/sql_plugin.cc:
        Check result from init_read_record()
      sql/sql_select.cc:
        Check result from ha_rnd_init()
        Print error if ha_rnd_init() fails.
      sql/sql_servers.cc:
        Check result from init_read_record()
      sql/sql_table.cc:
        Check result from init_read_record()
      sql/sql_udf.cc:
        Check result from init_read_record()
      sql/sql_update.cc:
        Check result from init_read_record()
      storage/example/ha_example.cc:
        Don't return error on rnd_init()
      storage/ibmdb2i/ha_ibmdb2i.cc:
        Removed not relevant comment
      e9166ca1
  21. 09 Jul, 2010 1 commit
    • Mattias Jonsson's avatar
      Bug#52517: Regression in ROW level replication performance with partitions · 70b02d3a
      Mattias Jonsson authored
      In bug-28430 HA_PRIMARY_KEY_REQUIRED_FOR_POSITION
      was disabled in the partitioning engine in the first patch,
      That bug was later fixed a second time, but that flag
      was not removed.
      
      No need to disable this flag, as it leads to bad
      choise in row replication.
      
      sql/ha_partition.h:
        Not disabling HA_PRIMARY_KEY_REQUIRED_FOR_POSITION flag.
        Updated comment (has nothing to do with hidden key.
      sql/handler.h:
        Updated comments to about HA_PRIMARY_KEY_REQUIRED_FOR_POSITION.
      70b02d3a
  22. 08 Jul, 2010 1 commit
    • Davi Arnaut's avatar
      Bug#34043: Server loops excessively in _checkchunk() when safemalloc is enabled · f56dd32b
      Davi Arnaut authored
      Essentially, the problem is that safemalloc is excruciatingly
      slow as it checks all allocated blocks for overrun at each
      memory management primitive, yielding a almost exponential
      slowdown for the memory management functions (malloc, realloc,
      free). The overrun check basically consists of verifying some
      bytes of a block for certain magic keys, which catches some
      simple forms of overrun. Another minor problem is violation
      of aliasing rules and that its own internal list of blocks
      is prone to corruption.
      
      Another issue with safemalloc is rather the maintenance cost
      as the tool has a significant impact on the server code.
      Given the magnitude of memory debuggers available nowadays,
      especially those that are provided with the platform malloc
      implementation, maintenance of a in-house and largely obsolete
      memory debugger becomes a burden that is not worth the effort
      due to its slowness and lack of support for detecting more
      common forms of heap corruption.
      
      Since there are third-party tools that can provide the same
      functionality at a lower or comparable performance cost, the
      solution is to simply remove safemalloc. Third-party tools
      can provide the same functionality at a lower or comparable
      performance cost. 
      
      The removal of safemalloc also allows a simplification of the
      malloc wrappers, removing quite a bit of kludge: redefinition
      of my_malloc, my_free and the removal of the unused second
      argument of my_free. Since free() always check whether the
      supplied pointer is null, redudant checks are also removed.
      
      Also, this patch adds unit testing for my_malloc and moves
      my_realloc implementation into the same file as the other
      memory allocation primitives.
      
      client/mysqldump.c:
        Pass my_free directly as its signature is compatible with the
        callback type -- which wasn't the case for free_table_ent.
      f56dd32b
  23. 10 Jun, 2010 1 commit
    • Davi Arnaut's avatar
      Bug#42733: Type-punning warnings when compiling MySQL -- · 0f9ddfa9
      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.
      0f9ddfa9
  24. 05 Jun, 2010 1 commit
    • Sergei Golubchik's avatar
      few small MySQL bugs/issues that impact the engines, as discussed in the SE summit · ac6b3c44
      Sergei Golubchik authored
      * remove handler::index_read_last()
      * create handler::keyread_read_time() (was get_index_only_read_time() in opt_range.cc)
      * ha_show_status() allows engine's show_status() to fail
      * remove HTON_FLUSH_AFTER_RENAME
      * fix key_cmp_if_same() to work for floats and doubles
      * set table->status in the server, don't force engines to do it
      * increment status vars in the server, don't force engines to do it
      
      mysql-test/r/status_user.result:
        correct test results - innodb was wrongly counting internal
        index searches as handler_read_* calls.
      sql/ha_partition.cc:
        compensate for handler incrementing status counters -
        we want to count only calls to underlying engines
      sql/handler.h:
        inline methods moved to sql_class.h
      sql/key.cc:
        simplify the check
      sql/opt_range.cc:
        move get_index_only_read_time to the handler class
      sql/sp.cc:
        don't use a key that's stored in the record buffer -
        the engine can overwrite the buffer with anything, destroying the key
      sql/sql_class.h:
        inline handler methods that need to see THD and TABLE definitions
      sql/sql_select.cc:
        no ha_index_read_last_map anymore
      sql/sql_table.cc:
        remove HTON_FLUSH_AFTER_RENAME
      sql/table.cc:
        set HA_CAN_MEMCMP as appropriate
      sql/tztime.cc:
        don't use a key that's stored in the record buffer -
        the engine can overwrite the buffer with anything, destroying the key
      storage/myisam/ha_myisam.cc:
        engines don't need to update table->status or use ha_statistic_increment anymore
      storage/myisam/ha_myisam.h:
        index_read_last_map is no more
      ac6b3c44
  25. 11 May, 2010 1 commit
  26. 30 Apr, 2010 1 commit
    • Sergei Golubchik's avatar
      small changes to WL#43: · b58cb7c4
      Sergei Golubchik authored
        consistency: don't use "index" and "key" interchangeably
        => rename "key" to "index"
        consistency: all option types are logical, besides ULL
        => rename ULL to NUMBER
        don't accept floats where integers are expected
        accept hexadecimal where integers are expected
      b58cb7c4
  27. 14 Apr, 2010 1 commit
    • Sergey Vojtovich's avatar
      BUG#39053 - UNISTALL PLUGIN does not allow the storage engine · 4aa36ee7
      Sergey Vojtovich authored
                  to cleanup open connections
      
      It was possible to UNINSTALL storage engine plugin when binding
      between THD object and storage engine is still active (e.g. in
      the middle of transaction).
      
      To avoid unclean deactivation (uninstall) of storage engine plugin
      in the middle of transaction, additional storage engine plugin
      lock is acquired by thd_set_ha_data().
      
      If ha_data is not null and storage engine plugin was not locked
      by thd_set_ha_data() in this connection before, storage engine
      plugin gets locked.
      
      If ha_data is null and storage engine plugin was locked by
      thd_set_ha_data() in this connection before, storage engine
      plugin lock gets released.
      
      If handlerton::close_connection() didn't reset ha_data, server does
      it immediately after calling handlerton::close_connection().
      
      Note that this is just a framework fix, storage engines must switch
      to thd_set_ha_data() from thd_ha_data() if they want to see fit.
      
      include/mysql/plugin.h:
        As thd_{get|set}_ha_data() have some extra logic now, they
        must be implemented on server side.
      include/mysql/plugin.h.pp:
        As thd_{get|set}_ha_data() have some extra logic now, they
        must be implemented on server side.
      sql/handler.cc:
        Make sure ha_data is reset and ha_data lock is released.
      sql/handler.h:
        hton is not supposed to be updated by ha_lock_engine(),
        make it const.
      sql/sql_class.cc:
        As thd_{get|set}_ha_data() have some extra logic now, they
        must be implemented on server side.
      sql/sql_class.h:
        Added ha_data lock.
      4aa36ee7
  28. 08 Apr, 2010 1 commit
    • Sergei Golubchik's avatar
      MWL#43 CREATE TABLE options (by Sanja) · e24e1668
      Sergei Golubchik authored
      Docs/sp-imp-spec.txt:
        New sql_mode added.
      include/my_base.h:
        Flag in frm of create options.
      libmysqld/CMakeLists.txt:
        New files added.
      libmysqld/Makefile.am:
        New files added.
      mysql-test/r/events_bugs.result:
        New sql_mode added.
      mysql-test/r/information_schema.result:
        New sql_mode added.
      mysql-test/r/sp.result:
        New sql_mode added.
      mysql-test/r/system_mysql_db.result:
        New sql_mode added.
      mysql-test/suite/funcs_1/r/is_columns_mysql.result:
        New sql_mode added.
      mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result:
        New sql_mode added.
      mysql-test/t/events_bugs.test:
        New sql_mode added.
      mysql-test/t/sp.test:
        New sql_mode added.
      scripts/mysql_system_tables.sql:
        New sql_mode added.
      scripts/mysql_system_tables_fix.sql:
        New sql_mode added.
      sql/CMakeLists.txt:
        New files added.
      sql/Makefile.am:
        New files added.
      sql/event_db_repository.cc:
        New sql_mode added.
      sql/field.cc:
        Create options support added.
      sql/field.h:
        Create options support added.
      sql/ha_partition.cc:
        Create options support added.
      sql/handler.cc:
        Create options support added.
      sql/handler.h:
        Create options support added.
      sql/log_event.h:
        New sql_mode added.
      sql/mysql_priv.h:
        New sql_mode added.
      sql/mysqld.cc:
        New sql_mode added.
      sql/share/errmsg.txt:
        New error messages added.
      sql/sp.cc:
        New sql_mode added.
      sql/sp_head.cc:
        Create options support added.
      sql/sql_class.cc:
        Create options support added.
        Debug added.
      sql/sql_class.h:
        Create options support added.
      sql/sql_insert.cc:
        my_safe_a* moved to mysqld_priv.h
      sql/sql_lex.h:
        Create options support added.
      sql/sql_parse.cc:
        Create options support added.
      sql/sql_show.cc:
        Create options support added.
      sql/sql_table.cc:
        Create options support added.
      sql/sql_view.cc:
        New sql_mode added.
      sql/sql_yacc.yy:
        Create options support added.
      sql/structs.h:
        Create options support added.
      sql/table.cc:
        Create options support added.
      sql/table.h:
        Create options support added.
      sql/unireg.cc:
        Create options support added.
      storage/example/ha_example.cc:
        Create options example.
      storage/example/ha_example.h:
        Create options example.
      storage/pbxt/src/discover_xt.cc:
        Create options support added.
      e24e1668
  29. 31 Mar, 2010 1 commit
    • Mats Kindahl's avatar
      WL#5030: Split and remove mysql_priv.h · 23d8586d
      Mats Kindahl authored
      This patch:
      
      - Moves all definitions from the mysql_priv.h file into
        header files for the component where the variable is
        defined
      - Creates header files if the component lacks one
      - Eliminates all include directives from mysql_priv.h
      - Eliminates all circular include cycles
      - Rename time.cc to sql_time.cc
      - Rename mysql_priv.h to sql_priv.h
      23d8586d
  30. 30 Mar, 2010 1 commit
    • Mattias Jonsson's avatar
      Bug#51851: Server with SBR locks mutex twice on LOAD DATA · 47906997
      Mattias Jonsson authored
      into partitioned MyISAM table
      
      Problem was that the ha_data structure was introduced in 5.1
      and only used for partitioning first, but with the intention
      of be of use for others engines as well, and when used by other
      engines it would clash if it also was partitioned.
      
      Solution is to move the partitioning specific data to a separate
      structure, with its own mutex (which is used for auto_increment).
      
      Also did rename PARTITION_INFO to PARTITION_STATS since there
      already exist a class named partition_info, also cleaned up
      some related variables.
      
      mysql-test/r/partition_binlog_stmt.result:
        Bug#51851: Server with SBR locks mutex twice on LOAD DATA
        into partitioned MyISAM table
        
        New result file
      mysql-test/t/partition_binlog_stmt.test:
        Bug#51851: Server with SBR locks mutex twice on LOAD DATA
        into partitioned MyISAM table
        
        New result file
      sql/ha_ndbcluster.cc:
        Bug#51851: Server with SBR locks mutex twice on LOAD DATA
        into partitioned MyISAM table
        
        Rename of PARTITION_INFO to PARTITION_STATS to better
        match the use (and there is also a class named
        partition_info...)
      sql/ha_ndbcluster.h:
        Bug#51851: Server with SBR locks mutex twice on LOAD DATA
        into partitioned MyISAM table
        
        Rename of PARTITION_INFO to PARTITION_STATS to better
        match the use (and there is also a class named
        partition_info...)
      sql/ha_partition.cc:
        Bug#51851: Server with SBR locks mutex twice on LOAD DATA
        into partitioned MyISAM table
        
        Removed the partitioning engines use of ha_data in
        TABLE_SHARE and added ha_part_data instead, since
        they collide if used in the same time.
        
        Rename of PARTITION_INFO to PARTITION_STATS to better
        match the use (and there is also a class named
        partition_info...)
        
        Removed some dead code.
      sql/ha_partition.h:
        Bug#51851: Server with SBR locks mutex twice on LOAD DATA
        into partitioned MyISAM table
        
        Removed some dead code.
        
        Rename of PARTITION_INFO to PARTITION_STATS to better
        match the use (and there is also a class named
        partition_info...)
        
        Removed the partitioning engines use of ha_data in
        TABLE_SHARE and added ha_part_data instead, since
        they collide if used in the same time.
      sql/handler.cc:
        Bug#51851: Server with SBR locks mutex twice on LOAD DATA
        into partitioned MyISAM table
        
        Rename of PARTITION_INFO to PARTITION_STATS to better
        match the use (and there is also a class named
        partition_info...)
      sql/handler.h:
        Bug#51851: Server with SBR locks mutex twice on LOAD DATA
        into partitioned MyISAM table
        
        Rename of PARTITION_INFO to PARTITION_STATS to better
        match the use (and there is also a class named
        partition_info...)
      sql/mysql_priv.h:
        Bug#51851: Server with SBR locks mutex twice on LOAD DATA
        into partitioned MyISAM table
        
        Removed the partitioning engines use of ha_data in
        TABLE_SHARE and added ha_part_data instead, since
        they collide if used in the same time.
        
        Added key_PARTITION_LOCK_auto_inc for instrumentation.
      sql/mysqld.cc:
        Bug#51851: Server with SBR locks mutex twice on LOAD DATA
        into partitioned MyISAM table
        
        Removed the partitioning engines use of ha_data in
        TABLE_SHARE and added ha_part_data instead, since
        they collide if used in the same time.
        
        Added key_PARTITION_LOCK_auto_inc for instrumentation.
      sql/partition_info.h:
        Bug#51851: Server with SBR locks mutex twice on LOAD DATA
        into partitioned MyISAM table
        
        Removed part_state* since it was not in use.
      sql/sql_partition.cc:
        Bug#51851: Server with SBR locks mutex twice on LOAD DATA
        into partitioned MyISAM table
        
        Removed part_state* since it was not in use.
      sql/sql_partition.h:
        Bug#51851: Server with SBR locks mutex twice on LOAD DATA
        into partitioned MyISAM table
        
        Cleaned up old commented out code.
        
        Removed part_state* since it was not in use.
      sql/sql_show.cc:
        Bug#51851: Server with SBR locks mutex twice on LOAD DATA
        into partitioned MyISAM table
        
        Rename of PARTITION_INFO to PARTITION_STATS to better
        match the use (and there is also a class named
        partition_info...)
        
        Renamed partition_info to partition_info_str, since
        partition_info is a name of a class.
      sql/sql_table.cc:
        Bug#51851: Server with SBR locks mutex twice on LOAD DATA
        into partitioned MyISAM table
        
        Renamed partition_info to partition_info_str, since
        partition_info is a name of a class.
      sql/table.cc:
        Bug#51851: Server with SBR locks mutex twice on LOAD DATA
        into partitioned MyISAM table
        
        Removed the partitioning engines use of ha_data in
        TABLE_SHARE and added ha_part_data instead, since
        they collide if used in the same time.
        
        Renamed partition_info to partition_info_str, since
        partition_info is a name of a class.
        
        removed part_state* since it was not in use.
      sql/table.h:
        Bug#51851: Server with SBR locks mutex twice on LOAD DATA
        into partitioned MyISAM table
        
        Removed the partitioning engines use of ha_data in
        TABLE_SHARE and added ha_part_data instead, since
        they collide if used in the same time.
        
        Renamed partition_info to partition_info_str, since
        partition_info is a name of a class.
        
        removed part_state* since it was not in use.
      47906997
  31. 25 Mar, 2010 1 commit
    • Michael Widenius's avatar
      simple speed & space optimization: · 2c77c9ea
      Michael Widenius authored
      - Avoid full inline of mark_trx_read_write() for many functions
      - Avoid somewhat expensive tests for every write/update/delete row 
      
      sql/handler.h:
        Adde ha_start_of_new_statement() to reset internal variables as part of the code in "open_table" that resets TABLE object for the new statement
        Faster mark_trx_read_write_part()
      sql/sql_base.cc:
        Don't manipulate table->file internal structs directly
      2c77c9ea
  32. 20 Feb, 2010 1 commit
  33. 16 Feb, 2010 1 commit
  34. 17 Jan, 2010 1 commit
  35. 15 Jan, 2010 1 commit
    • Sergey Glukhov's avatar
      backported: · 5a4a98af
      Sergey Glukhov authored
      -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
      -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
      -addon for 'I_S optimization' WL
      
      5a4a98af
  36. 14 Jan, 2010 1 commit
    • Michael Widenius's avatar
      Fix for compiler warnings on windows · d121e663
      Michael Widenius authored
      Fix wrong cast of time()
      
      include/my_pthread.h:
        Safety fix that also removes compiler warnings
      sql/handler.h:
        Changed timestamp columns to be of type time_t
      storage/maria/ma_check.c:
        Removed wrong cast
      storage/maria/ma_create.c:
        Removed wrong cast
      storage/myisam/mi_check.c:
        Removed wrong cast
      storage/myisam/mi_create.c:
        Removed wrong cast
      storage/xtradb/handler/ha_innodb.cc:
        Removed compiler warning on windows
      d121e663
  37. 07 Jan, 2010 1 commit
  38. 04 Jan, 2010 1 commit