An error occurred fetching the project authors.
  1. 12 Jun, 2007 1 commit
    • unknown's avatar
      BUG#23051 (READ COMMITTED breaks mixed and statement-based · ccbada08
      unknown authored
      replication):
      
      Patch to add binlog format capabilities to the InnoDB storage engine.
      The engine will not allow statement format logging when in READ COMMITTED
      or READ UNCOMMITTED transaction isolation level.
      
      In addition, an error is generated when trying to use READ COMMITTED
      or READ UNCOMMITTED transaction isolation level in STATEMENT binlog
      mode.
      
      
      sql/handler.h:
        Adding declaration of already global arrays.
      sql/share/errmsg.txt:
        Adding error messages for invalid changes of transaction isolation level
        and binlog mode switch.  Removing messages that are not needed any more
        (this cset it pushed together with the cset that introduced these
        messages, so it is safe to remove the messages).
      sql/sql_base.cc:
        Some changes to error reporting code to get more informative messages.
      storage/innobase/handler/ha_innodb.cc:
        Adding capabilities to storage engine.
        
        Ha_innobase:table_flags() now compute flags on a per-statement basis
        and the statement capabilities flag is just set if the transaction
        isolation level is below READ COMMITTED.
        
        An informative message is printed in the event that the transaction
        isolation level is below READ COMMITTED and the binlog mode is STATEMENT.
      storage/innobase/handler/ha_innodb.h:
        Accomodating to changes in the server code that switched from ulong
        to Table_flags as type for the table flags.
      mysql-test/r/binlog_innodb.result:
        New BitKeeper file ``mysql-test/r/binlog_innodb.result''
      mysql-test/t/binlog_innodb.test:
        New BitKeeper file ``mysql-test/t/binlog_innodb.test''
      ccbada08
  2. 29 Mar, 2007 1 commit
    • unknown's avatar
      Applied innodb-5.1-ss1381 snapshot · f3009f3f
      unknown authored
      Bug #27381: InnoDB exits when attempting to rename table to non-existant database
        Fix Bug#27381 by calling os_file_handle_error_no_exit() instead of
        os_file_handle_error().
      
      
      mysql-test/t/innodb.test:
        Applied innodb-5.1-ss1381 snapshot
        
        Revision r1373:
        Port r1372 from branches/5.0: Merge a change from MySQL AB, and remove
        the innodb_gis test case.
        
        ChangeSet
          2007/02/19 13:57:06+03:00 kaa@polly.local
          Bug#18743: Several test cases fails if "classic" configuration in 5.0
          The problem happened because those tests were using "cp932" and "ucs2"
          without checking whether these character sets are available.
          This fix moves test parts to make character set specific parts be
          tested only if they are:
          - some parts were moved to "ctype_ucs.test" and "ctype_cp932.test"
          - some parts were moved to the newly added tests "innodb-ucs2.test",
          "mysqlbinglog-cp932.test" and "sp-ucs2.test"
        
        mysql-test/t/innodb.test
          2007/02/19 13:57:02+03:00 kaa@polly.local +0 -222
          Moved ucs2-specific test cases to innodb-ucs2.test
      storage/innobase/Makefile.am:
        Applied innodb-5.1-ss1381 snapshot
        
        Revision r1353:
        Makefile.am: EXTRA_DIST: Add the grammar source files to the
        source distribution of MySQL.
      storage/innobase/dict/dict0dict.c:
        Applied innodb-5.1-ss1381 snapshot
        
        Revision r1350:
        Lock the data dictionary during rollback.  This removes the rare
        debug assertion failure ut_ad(mutex_own(&(dict_sys->mutex))) in
        dict_table_get_on_id() after the rollback following crash recovery.
      storage/innobase/handler/ha_innodb.cc:
        Applied innodb-5.1-ss1381 snapshot
        
        Revision r1377:
        Add static qualifiers to some symbols in ha_innodb.cc that are not
        referenced from other modules.
        
        
        Revision r1380:
        Remove ha_innobase::last_query_id and references to thd->query_id.
        
        MySQL calls external_lock at the beginning and end of a statement
        when it is not calling start_stmt or commit or rollback.  Thus,
        statement boundaries can be (and are already) detected without
        monitoring thd->query_id.
        
        The function innobase_commit() seemingly lacks the call to
        innobase_release_stat_resources(), which should be called at
        the end of every SQL statement.  The call was replaced by
        equivalent statements by Vadim Tkachenko when he implemented
        innodb_commit_concurrency in MySQL 5.0:
        
        http://mysql.bkbits.net:8080/mysql-5.0/?PAGE=patch&REV=1.1886.70.1
        
        
        Revision r1355:
        class ha_innobase: Replace statistic_increment() with ha_statistic_increment().
        
        ha_innobase::change_active_index(): Do not call current_thd unless
        UNIV_DEBUG is defined.
        
        
        Revision r1369:
        Merge a change from MySQL AB:
        
        ChangeSet@1.2409.1.83  2007-03-06 10:36:15-07:00  tsmith@hindu.god
        Bug #26598: Create variable to allow turning off of statistic gathering
        on metadata commands
        
        Add innodb_stats_on_metadata option, which enables gathering
        index statistics when processing metadata commands such as
        SHOW TABLE STATUS.  Default behavior of the server does not
        change (this option is enabled by default).
        
        
        Revision r1342:
        Minor cleanup in ha_innodb.cc.
        
        Remove the unused constants HA_INNOBASE_ROWS_IN_TABLE and
        HA_INNOBASE_RANGE_COUNT.  Declare innobase_active_counter static.
        
        
        Revision r1381:
        innobase_commit(): Correct the comments and formatting that were broken when
        innodb_commit_concurrency was implemented.
        
        
        Revision r1360:
        Minor cleanup.
        
        innobase_query_caching_of_table_permitted(): Make static.
        
        ha_innobase::register_query_cache_table(): Move the function
        definition from ha_innodb.h to ha_innodb.cc.  Add comments.
      storage/innobase/handler/ha_innodb.h:
        Applied innodb-5.1-ss1381 snapshot
        
        Revision r1377:
        Add static qualifiers to some symbols in ha_innodb.cc that are not
        referenced from other modules.
        
        
        Revision r1380:
        Remove ha_innobase::last_query_id and references to thd->query_id.
        
        MySQL calls external_lock at the beginning and end of a statement
        when it is not calling start_stmt or commit or rollback.  Thus,
        statement boundaries can be (and are already) detected without
        monitoring thd->query_id.
        
        The function innobase_commit() seemingly lacks the call to
        innobase_release_stat_resources(), which should be called at
        the end of every SQL statement.  The call was replaced by
        equivalent statements by Vadim Tkachenko when he implemented
        innodb_commit_concurrency in MySQL 5.0:
        
        http://mysql.bkbits.net:8080/mysql-5.0/?PAGE=patch&REV=1.1886.70.1
        
        
        Revision r1369:
        Merge a change from MySQL AB:
        
        ChangeSet@1.2409.1.83  2007-03-06 10:36:15-07:00  tsmith@hindu.god
        Bug #26598: Create variable to allow turning off of statistic gathering
        on metadata commands
        
        Add innodb_stats_on_metadata option, which enables gathering
        index statistics when processing metadata commands such as
        SHOW TABLE STATUS.  Default behavior of the server does not
        change (this option is enabled by default).
        
        
        Revision r1360:
        Minor cleanup.
        
        innobase_query_caching_of_table_permitted(): Make static.
        
        ha_innobase::register_query_cache_table(): Move the function
        definition from ha_innodb.h to ha_innodb.cc.  Add comments.
      storage/innobase/include/trx0trx.h:
        Applied innodb-5.1-ss1381 snapshot
        
        Revision r1344:
        Rename the Boolean field trx->type to trx->is_purge
        and remove the constants TRX_USER and TRX_PURGE.
        
        
        Revision r1343:
        trx_sig_struct: Remove state.  It is always assigned to TRX_SIG_WAITING
        and never tested.
      storage/innobase/os/os0file.c:
        Applied innodb-5.1-ss1381 snapshot
        
        Revision r1352:
        Fix typo in comment in os/os0file.c
        
        Approved by:	heikki
        
        
        
        Revision r1366:
        Fix Bug#27381 by calling os_file_handle_error_no_exit() instead of
        os_file_handle_error().
        
        Approved by:	Heikki
      storage/innobase/row/row0undo.c:
        Applied innodb-5.1-ss1381 snapshot
        
        Revision r1350:
        Lock the data dictionary during rollback.  This removes the rare
        debug assertion failure ut_ad(mutex_own(&(dict_sys->mutex))) in
        dict_table_get_on_id() after the rollback following crash recovery.
      storage/innobase/trx/trx0purge.c:
        Applied innodb-5.1-ss1381 snapshot
        
        Revision r1344:
        Rename the Boolean field trx->type to trx->is_purge
        and remove the constants TRX_USER and TRX_PURGE.
      storage/innobase/trx/trx0trx.c:
        Applied innodb-5.1-ss1381 snapshot
        
        Revision r1344:
        Rename the Boolean field trx->type to trx->is_purge
        and remove the constants TRX_USER and TRX_PURGE.
        
        
        Revision r1343:
        trx_sig_struct: Remove state.  It is always assigned to TRX_SIG_WAITING
        and never tested.
      f3009f3f
  3. 22 Mar, 2007 1 commit
    • unknown's avatar
      Apply the following InnoDB snapshots: · 76de7d78
      unknown authored
      innodb-5.1-ss1318
      innodb-5.1-ss1330
      innodb-5.1-ss1332
      innodb-5.1-ss1340
      
      Fixes:
      - Bug #21409: Incorrect result returned when in READ-COMMITTED with query_cache ON
        At low transaction isolation levels we let each consistent read set
        its own snapshot.
      
      - Bug #23666: strange Innodb_row_lock_time_% values in show status; also millisecs wrong
        On Windows ut_usectime returns secs and usecs relative to the UNIX
        epoch (which is Jan, 1 1970).
      
      - Bug #25494: LATEST DEADLOCK INFORMATION is not always cleared
        lock_deadlock_recursive(): When the search depth or length is exceeded,
        rewind lock_latest_err_file and display the two transactions at the
        point of aborting the search.
      
      - Bug #25927: Foreign key with ON DELETE SET NULL on NOT NULL can crash server
        Prevent ALTER TABLE ... MODIFY ... NOT NULL on columns for which
        there is a foreign key constraint ON ... SET NULL.
      
      - Bug #26835: Repeatable corruption of utf8-enabled tables inside InnoDB
        The bug could be reproduced as follows:
      
        Define a table so that the first column of the clustered index is
        a VARCHAR or a UTF-8 CHAR in a collation where sequences of bytes
        of differing length are considered equivalent.
      
        Insert and delete a record.  Before the delete-marked record is
        purged, insert another record whose first column is of different
        length but equivalent to the first record.  Under certain conditions,
        the insertion can be incorrectly performed as update-in-place.
      
        Likewise, an operation that could be done as update-in-place can
        unnecessarily be performed as delete and insert, but that would not
        cause corruption but merely degraded performance.
      
      
      mysql-test/r/innodb.result:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1284:
        Merge changes from MySQL AB:
        
        ChangeSet
          2007/01/24 14:49:36+04:00 holyfoot@mysql.com 
          bug 22682 Test fails --without-geometry
          geometry dependent parts moved to proper .test files
        
        mysql-test/r/innodb.result
          2007/01/24 14:49:34+04:00 holyfoot@mysql.com +0 -2
          result fixed
        
        mysql-test/r/innodb_gis.result
          2007/01/24 14:49:34+04:00 holyfoot@mysql.com +2 -0
          result fixed
        
        mysql-test/t/innodb.test
          2007/01/24 14:49:34+04:00 holyfoot@mysql.com +0 -6
          HAVE_GEOMETRY dependent part moved to innodb_gis.test
        
        mysql-test/t/innodb_gis.test
          2007/01/24 14:49:35+04:00 holyfoot@mysql.com +6 -0
          HAVE_GEOMETRY dependent part moved here from innodb.test
        
        
        Revision r1186:
        dict_load_foreign(): Use a local variable instead of the 10-bit field
        foreign->n_fields in order to preserve ON UPDATE CASCADE and
        ON DELETE CASCADE flags.  For some reason, gcc does not warn about
        shifting a 10-bit field to right by 24 bits.  (Bug 24741)
        
        This bug was introduced while reducing the memory footprint of the
        InnoDB data dictionary (Bug 20877).
        
        innodb.test, innodb.result: Add a test case.
        
        
        Revision r1318:
        Add a test case for r1316 (Bug #25927).
        
        
        Revision r1340:
        innodb.test, innodb.result: Add test case for Bug #26835.
        The bug could be reproduced as follows:
        
        Define a table so that the first column of the clustered index is
        a VARCHAR or a UTF-8 CHAR in a collation where sequences of bytes
        of differing length are considered equivalent.
        
        Insert and delete a record.  Before the delete-marked record is
        purged, insert another record whose first column is of different
        length but equivalent to the first record.  Under certain conditions,
        the insertion can be incorrectly performed as update-in-place.
        
        Likewise, an operation that could be done as update-in-place can
        unnecessarily be performed as delete and insert, but that would not
        cause corruption but merely degraded performance.
      mysql-test/t/innodb.test:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1284:
        Merge changes from MySQL AB:
        
        ChangeSet
          2007/01/24 14:49:36+04:00 holyfoot@mysql.com 
          bug 22682 Test fails --without-geometry
          geometry dependent parts moved to proper .test files
        
        mysql-test/r/innodb.result
          2007/01/24 14:49:34+04:00 holyfoot@mysql.com +0 -2
          result fixed
        
        mysql-test/r/innodb_gis.result
          2007/01/24 14:49:34+04:00 holyfoot@mysql.com +2 -0
          result fixed
        
        mysql-test/t/innodb.test
          2007/01/24 14:49:34+04:00 holyfoot@mysql.com +0 -6
          HAVE_GEOMETRY dependent part moved to innodb_gis.test
        
        mysql-test/t/innodb_gis.test
          2007/01/24 14:49:35+04:00 holyfoot@mysql.com +6 -0
          HAVE_GEOMETRY dependent part moved here from innodb.test
        
        
        Revision r1283:
        Merge changes from MySQL AB:
        
        ChangeSet
          2007/01/22 18:42:52+02:00 monty@mysql.com 
          Give warnings for unused objects
          Changed error message to be compatible with old error file
          Added new error message for new DUP_ENTRY syntax
        
        mysql-test/t/innodb.test
          2007/01/22 18:42:49+02:00 monty@mysql.com +14 -14
          Changed to use new error message
        
        
        Revision r1186:
        dict_load_foreign(): Use a local variable instead of the 10-bit field
        foreign->n_fields in order to preserve ON UPDATE CASCADE and
        ON DELETE CASCADE flags.  For some reason, gcc does not warn about
        shifting a 10-bit field to right by 24 bits.  (Bug 24741)
        
        This bug was introduced while reducing the memory footprint of the
        InnoDB data dictionary (Bug 20877).
        
        innodb.test, innodb.result: Add a test case.
        
        
        Revision r1318:
        Add a test case for r1316 (Bug #25927).
        
        
        Revision r1329:
        Merge changes from MySQL AB to mysql-test directives.
        The results are not affected.
        
        
        Revision r1340:
        innodb.test, innodb.result: Add test case for Bug #26835.
        The bug could be reproduced as follows:
        
        Define a table so that the first column of the clustered index is
        a VARCHAR or a UTF-8 CHAR in a collation where sequences of bytes
        of differing length are considered equivalent.
        
        Insert and delete a record.  Before the delete-marked record is
        purged, insert another record whose first column is of different
        length but equivalent to the first record.  Under certain conditions,
        the insertion can be incorrectly performed as update-in-place.
        
        Likewise, an operation that could be done as update-in-place can
        unnecessarily be performed as delete and insert, but that would not
        cause corruption but merely degraded performance.
      storage/innobase/buf/buf0buf.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/buf/buf0flu.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/buf/buf0lru.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/dict/dict0boot.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/dict/dict0crea.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
        
        
        Revision r1324:
        Merge changes from MySQL AB:
        
        ChangeSet@1.2452, 2007-02-23 13:13:55+02:00, monty@mysql.com +177 -0
          Fixed compiler warnings
          ...
          Fixed compiler warnings detected on windows64
      storage/innobase/dict/dict0dict.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
        
        
        Revision r1316:
        Prevent ALTER TABLE ... MODIFY ... NOT NULL on columns for which
        there is a foreign key constraint ON ... SET NULL.  (Bug #25927)
        
        dict_foreign_find_index(): Add paramettter check_null.
        
        dict_foreign_add_to_cache(): Do not allow ON DELETE SET NULL
        or ON UPDATE SET NULL if any of the referencing columns are declared NOT NULL.
        
        
        Revision r1324:
        Merge changes from MySQL AB:
        
        ChangeSet@1.2452, 2007-02-23 13:13:55+02:00, monty@mysql.com +177 -0
          Fixed compiler warnings
          ...
          Fixed compiler warnings detected on windows64
      storage/innobase/dict/dict0load.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1186:
        dict_load_foreign(): Use a local variable instead of the 10-bit field
        foreign->n_fields in order to preserve ON UPDATE CASCADE and
        ON DELETE CASCADE flags.  For some reason, gcc does not warn about
        shifting a 10-bit field to right by 24 bits.  (Bug 24741)
        
        This bug was introduced while reducing the memory footprint of the
        InnoDB data dictionary (Bug 20877).
        
        innodb.test, innodb.result: Add a test case.
        
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
        
        
        Revision r1324:
        Merge changes from MySQL AB:
        
        ChangeSet@1.2452, 2007-02-23 13:13:55+02:00, monty@mysql.com +177 -0
          Fixed compiler warnings
          ...
          Fixed compiler warnings detected on windows64
      storage/innobase/fil/fil0fil.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/fsp/fsp0fsp.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/ha/ha0ha.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/handler/ha_innodb.cc:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1204:
        Change this in ha_innobase:
        
         void*           innobase_prebuilt;
        
        to this:
        
         row_prebuilt_t* prebuilt;
        
        by introducing the typedef in ha_innodb.h, and remove all the now needless
        local variables and casts in ha_innodb.cc.
        
        Revision r1298:
        ha_innodb.cc: Remove all references to thd->ha_data[hton->slot].
        
        thd_to_trx(thd, hton): Accessor for getting the InnoDB trx object
        of a MySQL thread object and an InnoDB handlerton.
        
        
        Revision r1292:
        Remove the declarations of some global functions in ha_innodb.h and declare
        them static in ha_innodb.cc.  These functions are invoked via function
        pointers in handlerton.
        
        
        Revision r1300:
        ha_innodb.cc: Replace thd->tablespace_op with thd_tablespace_op(thd).
        Plugins must treat class THD as an opaque type.
        
        
        Revision r1198:
        Merge a change from MySQL AB:
        
        ChangeSet@1.2372, 2006-12-31 02:29:11+01:00, kent@mysql.com +79 -0
          Many files:
            Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header
            Adjusted year(s) in copyright header 
            Added GPL copyright text
        
        
        Revision r1271:
        Merge changes from MySQL AB:
        
        Rename some FIELD_TYPE_ constants to MYSQL_TYPE_.
        
        Change the scope of a type cast of two dividends.
        
        
        Revision r1299:
        ha_innodb.cc: Replace thd->in_lock_tables with thd_in_lock_tables(thd).
        Plugins must treat class THD as an opaque type.
        
        
        Revision r1201:
        Apply patch from MySQL:
        
         ChangeSet@1.2353, 2006-12-19 16:57:51-07:00, tsmith@siva.hindu.god +13 -0
           Added innodb_rollback_on_timeout option to restore the 4.1 
           InnoDB timeout behavior (Bug 24200)
        
        Revision r1322:
        ha_innodb.cc: Remove the unused innobase_repl_ variables.
        
        
        Revision r1324:
        Merge changes from MySQL AB:
        
        ChangeSet@1.2452, 2007-02-23 13:13:55+02:00, monty@mysql.com +177 -0
          Fixed compiler warnings
          ...
          Fixed compiler warnings detected on windows64
        
        
        Revision r1334:
        Fix for Bug# 21409. At low transaction isolation levels we let each 
        consistent read set its own snapshot
      storage/innobase/handler/ha_innodb.h:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1204:
        Change this in ha_innobase:
        
         void*           innobase_prebuilt;
        
        to this:
        
         row_prebuilt_t* prebuilt;
        
        by introducing the typedef in ha_innodb.h, and remove all the now needless
        local variables and casts in ha_innodb.cc.
        
        Revision r1292:
        Remove the declarations of some global functions in ha_innodb.h and declare
        them static in ha_innodb.cc.  These functions are invoked via function
        pointers in handlerton.
        
        
        Revision r1198:
        Merge a change from MySQL AB:
        
        ChangeSet@1.2372, 2006-12-31 02:29:11+01:00, kent@mysql.com +79 -0
          Many files:
            Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header
            Adjusted year(s) in copyright header 
            Added GPL copyright text
        
        
        Revision r1201:
        Apply patch from MySQL:
        
         ChangeSet@1.2353, 2006-12-19 16:57:51-07:00, tsmith@siva.hindu.god +13 -0
           Added innodb_rollback_on_timeout option to restore the 4.1 
           InnoDB timeout behavior (Bug 24200)
      storage/innobase/ibuf/ibuf0ibuf.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/include/buf0buf.ic:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/include/buf0flu.ic:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/include/dict0dict.ic:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/include/ha0ha.ic:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/include/lock0lock.ic:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/include/log0log.ic:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/include/mem0mem.h:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1241:
        Remove the unused function mem_strdupq().
      storage/innobase/include/mem0mem.ic:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1241:
        Remove the unused function mem_strdupq().
      storage/innobase/include/rem0rec.ic:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1338:
        rec_offs_nth_size(): Treat n==0 as a special case.  (Bug #26835)
      storage/innobase/include/sync0rw.ic:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/include/sync0sync.h:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
        
        
        Revision r1247:
        Rename mutex_enter_nowait to mutex_enter_nowait_func and add macro
        mutex_enter_nowait that supplies the default __FILE__ and __LINE__
        arguments. Adjust callers.
      storage/innobase/include/sync0sync.ic:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1294:
        Fixed inline asm code, it didn't work with GCC > ver 3.x.
        
        
        Revision r1244:
        Add ut_ad() debug assertions.
        
        UT_LIST_ADD_FIRST(), UT_LIST_ADD_LAST(), UT_LIST_INSERT_AFTER():
        Assert against some trivial cases of cyclic lists.
        
        mutex_enter_func(): Assert that the current thread is not holding the mutex.
        
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/include/trx0sys.ic:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/include/univ.i:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1285:
        Merge a change from MySQL AB:
        
        ChangeSet
          2006/10/26 15:41:47-04:00 iggy@amd64. 
          Post Merge Cleanup
        
        storage/innobase/include/univ.i
          2006/10/26 15:38:50-04:00 iggy@amd64. +9 -0
          Post Merge Cleanup
      storage/innobase/include/ut0lst.h:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1244:
        Add ut_ad() debug assertions.
        
        UT_LIST_ADD_FIRST(), UT_LIST_ADD_LAST(), UT_LIST_INSERT_AFTER():
        Assert against some trivial cases of cyclic lists.
        
        mutex_enter_func(): Assert that the current thread is not holding the mutex.
      storage/innobase/lock/lock0lock.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
        
        
        Revision r1330:
        lock_deadlock_recursive(): When the search depth or length is exceeded,
        rewind lock_latest_err_file and display the two transactions at the
        point of aborting the search.  (Bug #25494)
        
        
        Revision r1332:
        lock_deadlock_recursive(): When aborting the search, display a note
        regardless of start->undo_no.  Otherwise, aborted searches may show
        up as genuine deadlocks.  This mistake was made in r1330.
      storage/innobase/log/log0log.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
        
        
        Revision r1247:
        Rename mutex_enter_nowait to mutex_enter_nowait_func and add macro
        mutex_enter_nowait that supplies the default __FILE__ and __LINE__
        arguments. Adjust callers.
      storage/innobase/log/log0recv.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/mem/mem0pool.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/pars/pars0pars.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/que/que0que.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/read/read0read.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/row/row0mysql.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
        
        
        Revision r1201:
        Apply patch from MySQL:
        
         ChangeSet@1.2353, 2006-12-19 16:57:51-07:00, tsmith@siva.hindu.god +13 -0
           Added innodb_rollback_on_timeout option to restore the 4.1 
           InnoDB timeout behavior (Bug 24200)
        
        Revision r1324:
        Merge changes from MySQL AB:
        
        ChangeSet@1.2452, 2007-02-23 13:13:55+02:00, monty@mysql.com +177 -0
          Fixed compiler warnings
          ...
          Fixed compiler warnings detected on windows64
      storage/innobase/row/row0vers.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/srv/srv0que.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/srv/srv0srv.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1262:
        Fix for Bug# 23666. On Windows ut_usectime returns secs 
        and usecs relative to the UNIX epoch (which is Jan, 1 1970).
        
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/sync/sync0rw.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
        
        
        Revision r1247:
        Rename mutex_enter_nowait to mutex_enter_nowait_func and add macro
        mutex_enter_nowait that supplies the default __FILE__ and __LINE__
        arguments. Adjust callers.
        
        Revision r1324:
        Merge changes from MySQL AB:
        
        ChangeSet@1.2452, 2007-02-23 13:13:55+02:00, monty@mysql.com +177 -0
          Fixed compiler warnings
          ...
          Fixed compiler warnings detected on windows64
      storage/innobase/sync/sync0sync.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
        
        
        Revision r1247:
        Rename mutex_enter_nowait to mutex_enter_nowait_func and add macro
        mutex_enter_nowait that supplies the default __FILE__ and __LINE__
        arguments. Adjust callers.
      storage/innobase/thr/thr0loc.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/trx/trx0purge.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/trx/trx0roll.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/trx/trx0rseg.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/trx/trx0sys.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/trx/trx0trx.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
        
        
        Revision r1324:
        Merge changes from MySQL AB:
        
        ChangeSet@1.2452, 2007-02-23 13:13:55+02:00, monty@mysql.com +177 -0
          Fixed compiler warnings
          ...
          Fixed compiler warnings detected on windows64
      storage/innobase/trx/trx0undo.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/usr/usr0sess.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1242:
        Merge r1239 from
        branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
      storage/innobase/ut/ut0ut.c:
        Apply the following InnoDB snapshots:
        innodb-5.1-ss1318
        innodb-5.1-ss1330
        innodb-5.1-ss1332
        innodb-5.1-ss1340
        
        Revision r1262:
        Fix for Bug# 23666. On Windows ut_usectime returns secs 
        and usecs relative to the UNIX epoch (which is Jan, 1 1970).
      76de7d78
  4. 06 Mar, 2007 1 commit
    • unknown's avatar
      Bug #26598: Create variable to allow turning off of statistic gathering on metadata commands · 3602e293
      unknown authored
      Add innodb_stats_on_metadata option, which enables gathering
      index statistics when processing metadata commands such as
      SHOW TABLE STATUS.  Default behavior of the server does not
      change (this option is enabled by default).
      
      
      sql/mysqld.cc:
        Add innodb_stats_on_metadata option, which enables gathering
        index statistics when processing metadata commands such as
        SHOW TABLE STATUS.  Default behavior of the server does not
        change (this option is enabled by default).
      sql/set_var.cc:
        Add innodb_stats_on_metadata option, which enables gathering
        index statistics when processing metadata commands such as
        SHOW TABLE STATUS.  Default behavior of the server does not
        change (this option is enabled by default).
      storage/innobase/handler/ha_innodb.cc:
        Add innodb_stats_on_metadata option, which enables gathering
        index statistics when processing metadata commands such as
        SHOW TABLE STATUS.  Default behavior of the server does not
        change (this option is enabled by default).
      storage/innobase/handler/ha_innodb.h:
        Add innodb_stats_on_metadata option, which enables gathering
        index statistics when processing metadata commands such as
        SHOW TABLE STATUS.  Default behavior of the server does not
        change (this option is enabled by default).
      storage/innobase/include/srv0srv.h:
        Add innodb_stats_on_metadata option, which enables gathering
        index statistics when processing metadata commands such as
        SHOW TABLE STATUS.  Default behavior of the server does not
        change (this option is enabled by default).
      storage/innobase/srv/srv0srv.c:
        Add innodb_stats_on_metadata option, which enables gathering
        index statistics when processing metadata commands such as
        SHOW TABLE STATUS.  Default behavior of the server does not
        change (this option is enabled by default).
      3602e293
  5. 30 Sep, 2006 2 commits
    • unknown's avatar
      This patch adds handlerton passing to functions. NDB and Innodb still require... · 76b83865
      unknown authored
      This patch adds handlerton passing to functions. NDB and Innodb still require a global hanlderton in the main code due to the nature of the sql_cache call back function (should be solveable... another patch).
      Partitioning now has a flag to allow disabling of engines from being compatible with partitioning. Cleaned up heap naming convention on panic call. 
      
      
      include/heap.h:
        Added new function
      sql/ha_ndbcluster.cc:
        Updated hanlderton functions
      sql/ha_ndbcluster_binlog.cc:
        Updated handlerton functions.
      sql/handler.cc:
        Updated handlerton functions.
      sql/handler.h:
        Updated hanlderton functions
      sql/log.cc:
        Updated handlerton functions
      sql/mysql_priv.h:
        Updated handlerton functions
      sql/mysqld.cc:
        Added Legacy handlerton functions
      sql/partition_info.cc:
        Added flag support for marking engines not compatible with partitioning
      sql/sql_cursor.cc:
        Updated hanlderton functions
      sql/sql_show.cc:
        Updated hanlderton functions
      sql/sql_tablespace.cc:
        Update for handlerton functions
      storage/archive/ha_archive.cc:
        Update for hanlderton functions
      storage/archive/ha_archive.h:
        Update for handlerton functions
      storage/blackhole/ha_blackhole.cc:
        Update for handlerton functions
      storage/csv/ha_tina.cc:
        Update for handlerton functions
      storage/csv/ha_tina.h:
        Update for handlerton functions
      storage/federated/ha_federated.cc:
        Updated for handlerton functions
      storage/federated/ha_federated.h:
        Updated for handlerton functions
      storage/heap/ha_heap.cc:
        Update for handlerton functions
      storage/heap/hp_panic.c:
        Update of function name
      storage/heap/hp_test1.c:
        Update of function name
      storage/heap/hp_test2.c:
        Update of function name.
      storage/innobase/handler/ha_innodb.cc:
        Update of function name
      storage/innobase/handler/ha_innodb.h:
        Update of function name
      storage/myisam/ha_myisam.cc:
        Update of function name.
      storage/myisammrg/ha_myisammrg.cc:
        Update of function name
      76b83865
    • unknown's avatar
      This removes the passing of global hton to engine instance. · 48d5b3bd
      unknown authored
      sql/ha_ndbcluster.cc:
        Removed global hton
      sql/ha_ndbcluster.h:
        Removed global hton need
      sql/ha_partition.cc:
        Removed global hton
      sql/ha_partition.h:
        Removed global hton
      sql/handler.cc:
        Removed global hton
      sql/handler.h:
        Removed global hton
      storage/archive/ha_archive.cc:
        Removed global hton
      storage/archive/ha_archive.h:
        Global hton removed
      storage/blackhole/ha_blackhole.cc:
        Global removed hton
      storage/blackhole/ha_blackhole.h:
        Global hton removal
      storage/csv/ha_tina.cc:
        Global hton removal
      storage/csv/ha_tina.h:
        Removed global removed
      storage/example/ha_example.cc:
        Global removed hton
      storage/example/ha_example.h:
        Global removed hton
      storage/federated/ha_federated.cc:
        Global removed hton
      storage/federated/ha_federated.h:
        Global removed hton
      storage/heap/ha_heap.cc:
        Global removed hton
      storage/heap/ha_heap.h:
        Global removed hton
      storage/innobase/handler/ha_innodb.cc:
        Global removed hton
      storage/innobase/handler/ha_innodb.h:
        Removed global hton
      storage/myisam/ha_myisam.cc:
        Globally removed hton
      storage/myisam/ha_myisam.h:
        Globally removed hton
      storage/myisammrg/ha_myisammrg.cc:
        Globally removed hton
      storage/myisammrg/ha_myisammrg.h:
        Globaly removed hton
      48d5b3bd
  6. 28 Sep, 2006 1 commit
    • unknown's avatar
      In the handlerton, cursor creation function don't have an argument · 5e2c06a1
      unknown authored
      and so the engine calls current_thd to derive transaction information;
      instead we now pass THD to those functions, it looks more logical
      (it makes the implicit current_thd parameter more visible).
      Approved by Brian and Monty.
      
      
      sql/handler.h:
        cursor's creation functions in the handlerton need a THD,
        it's better than have the engine call current_thd
      sql/sql_cursor.cc:
        pass the THD instead of letting the engine call current_thd
      storage/innobase/handler/ha_innodb.cc:
        use the passed THD instead of current_thd
      storage/innobase/handler/ha_innodb.h:
        use the passed THD instead of current_thd
      5e2c06a1
  7. 21 Sep, 2006 1 commit
    • unknown's avatar
      Applied innodb-5.1 snapshots ss799 and ss854 · bf2f50d3
      unknown authored
      Bugs fixed:
      - Bug #20877: InnoDB data dictionary memory footprint is too big
      - Bug #13544: Second delete of same row in transaction illustrates non-optimal locking
      - Bug #20791: valgrind errors in InnoDB
      
      
      storage/innobase/btr/btr0btr.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r823:
        Minor cleanup related to Bug #20877.
        
        btr_print_recursive(): Replace tree->tree_indexes with tree->index.
        This should have been done in r453.
        
        univ.i: Add UNIV_BTR_PRINT.
        
        rw_lock_t: Reduce writer_is_wait_ex to a bit and move it close to
        other bitfields.  Change the types to unsigned, in case ulint or ibool
        bitfields will not work.
        
        
        Revision r828:
        Remove dict_tree_t, which should have been removed in r453.
        There always was a one-to-one mapping between dict_tree_t and dict_index_t.
        
        This saves 6 machine words per B-tree index in the data dictionary
        cache plus the memory allocation overhead.  We save one mem_heap_t
        object per index (15 machine words).  Considering the internal
        fragmentation of the buddy allocator in mem_area_alloc(), this should
        save 32 machine words per index (128 bytes on 32-bit systems and 256
        bytes on 64-bit systems).  (Bug #20877)
        
        struct dict_tree_struct, dict_tree_t: Remove.
        
        struct dict_index_struct: Add page and lock.
        
        dict_tree_create(): Remove.  Replace the invocation with
        assignment to index->page and a call to rw_lock_create(&index->lock).
        
        dict_tree_free(): Remove.  Replace the invocation wtih
        a call to rw_lock_free(&index->lock).
        
        dict_index_get_tree(): Remove.
        
        dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
        and remove the parameter, which was unused.
        
        btr_level_list_remove(): Remove the unused parameter "tree".
        
        Replace the occurrences of "tree" with "index" in names of variables,
        functions and data types, e.g. "dict_tree_t tree" becomes
        "dict_index_t index".  Remove local variables "tree" or "index" of
        functions that needed both "tree" and "index".
        
        
        Revision r834:
        dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
        so that all integer fields can be packed into 64 bits.  (Bug #20877)
        
        dtype_t: Change the type of all bit-fields to unsigned.
        
        dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
        dict_table_get_sys_col(), dict_field_get_col(): Return const
        dict_col_t*, so that changes to dict_col_t can be detected more
        easily.  Add const to many dict_col_t* declarations.
        
        dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
        
        dict_col_get_type(): Replace with dict_col_copy_type().
        
        dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
        dict_col_get_sql_null_size(): New functions.
        
        dtype_get_at_most_n_mbchars(): Replace the parameter dtype
        with the parameters prtype, mbminlen, mbmaxlen.
        
        dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
        cmp_whole_field(): Replace the dtype_t* parameter with the ulint
        parameters mtype, prtype.
        
        dtype_copy(): Add a const qualifier to type2 (the one being copied from).
        
        dtype_set_mblen(): Replaced with dtype_get_mblen().
        
        dtype_get_fixed_size_low(), dtype_get_min_size_low(),
        dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
        dtype_get_min_size(), and dtype_get_max_size().  These are used by the
        dict_col_get_{fixed,min,max}_size() functions.
        
        cmp_types_are_equal(): Replace with cmp_cols_are_equal().
        
        dict_table_get_col_name(): Add a const qualifier parameter to the
        parameter "table".
        
        dtype_binary, dtype_binary_val: Remove.
        
        dtype_is_fixed_size(): Remove.
        
        
        Revision r837:
        page_offset(): New function to replace many ut_align_offset(., UNIV_PAGE_SIZE)
        calls.
        
        dict_index_build_node_ptr(): Correct a typo in a comment.
        
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/btr/btr0cur.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r816:
        Remove more remnants of mixed indexes.
        
        Revision r828:
        Remove dict_tree_t, which should have been removed in r453.
        There always was a one-to-one mapping between dict_tree_t and dict_index_t.
        
        This saves 6 machine words per B-tree index in the data dictionary
        cache plus the memory allocation overhead.  We save one mem_heap_t
        object per index (15 machine words).  Considering the internal
        fragmentation of the buddy allocator in mem_area_alloc(), this should
        save 32 machine words per index (128 bytes on 32-bit systems and 256
        bytes on 64-bit systems).  (Bug #20877)
        
        struct dict_tree_struct, dict_tree_t: Remove.
        
        struct dict_index_struct: Add page and lock.
        
        dict_tree_create(): Remove.  Replace the invocation with
        assignment to index->page and a call to rw_lock_create(&index->lock).
        
        dict_tree_free(): Remove.  Replace the invocation wtih
        a call to rw_lock_free(&index->lock).
        
        dict_index_get_tree(): Remove.
        
        dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
        and remove the parameter, which was unused.
        
        btr_level_list_remove(): Remove the unused parameter "tree".
        
        Replace the occurrences of "tree" with "index" in names of variables,
        functions and data types, e.g. "dict_tree_t tree" becomes
        "dict_index_t index".  Remove local variables "tree" or "index" of
        functions that needed both "tree" and "index".
        
        
        Revision r830:
        page_align(ptr): New utility function to replace
        ut_align_down(ptr, UNIV_PAGE_SIZE) calls.
        
        
        Revision r837:
        page_offset(): New function to replace many ut_align_offset(., UNIV_PAGE_SIZE)
        calls.
        
        dict_index_build_node_ptr(): Correct a typo in a comment.
        
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/btr/btr0pcur.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r828:
        Remove dict_tree_t, which should have been removed in r453.
        There always was a one-to-one mapping between dict_tree_t and dict_index_t.
        
        This saves 6 machine words per B-tree index in the data dictionary
        cache plus the memory allocation overhead.  We save one mem_heap_t
        object per index (15 machine words).  Considering the internal
        fragmentation of the buddy allocator in mem_area_alloc(), this should
        save 32 machine words per index (128 bytes on 32-bit systems and 256
        bytes on 64-bit systems).  (Bug #20877)
        
        struct dict_tree_struct, dict_tree_t: Remove.
        
        struct dict_index_struct: Add page and lock.
        
        dict_tree_create(): Remove.  Replace the invocation with
        assignment to index->page and a call to rw_lock_create(&index->lock).
        
        dict_tree_free(): Remove.  Replace the invocation wtih
        a call to rw_lock_free(&index->lock).
        
        dict_index_get_tree(): Remove.
        
        dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
        and remove the parameter, which was unused.
        
        btr_level_list_remove(): Remove the unused parameter "tree".
        
        Replace the occurrences of "tree" with "index" in names of variables,
        functions and data types, e.g. "dict_tree_t tree" becomes
        "dict_index_t index".  Remove local variables "tree" or "index" of
        functions that needed both "tree" and "index".
        
        
        Revision r830:
        page_align(ptr): New utility function to replace
        ut_align_down(ptr, UNIV_PAGE_SIZE) calls.
        
        
        Revision r837:
        page_offset(): New function to replace many ut_align_offset(., UNIV_PAGE_SIZE)
        calls.
        
        dict_index_build_node_ptr(): Correct a typo in a comment.
        
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/btr/btr0sea.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r813:
        Reduce the size of the data dictionary cache.  (Bug #20877)
        
        dtype_t: Remove unused field "prec", which was supposed to be used for
        the precision of decimal columns in stand-alone InnoDB.
        
        dtype_get_prec(): Remove.
        
        dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
        
        dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
        into bit-fields.
        
        dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
        
        dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
        
        Replace the default clust_pos value ULINT_UNDEFINED with
        REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
        the accessor function dict_col_get_clust_pos().
        
        dict_field_t: Turn prefix_len and fixed_len into bit-fields.
        
        dict_tree_t: Remove pad[64].
        
        dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
        cached, flags, stat_initialized, and autoinc_inited into bit-fields.
        Remove does_not_fit_in_memory from non-debug builds.
        
        dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
        n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
        
        dict_foreign_struct: Turn n_fields and type into bit-fields.
        
        rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
        Omit level unless #defined UNIV_SYNC_DEBUG.
        
        Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
        from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
        dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
        
        
        Revision r816:
        Remove more remnants of mixed indexes.
        
        Revision r824:
        Reduce the size of btr_search_t from 13 machine words to 7.  This
        structure is reserved for every index in the data dictionary cache.
        (Bug #20877)
        
        We could shrink the structure further to three 32-bit words or two
        64-bit words by turning the remaining fields to bit-fields.
        Unfortunately, the fields are not protected by any mutex, and thus we
        would better keep each field aligned to a machine word.
        
        btr_search_t, buf_block_t: Rename "ulint side" to "ibool left_side".
        Remove BTR_SEARCH_LEFT_SIDE and BTR_SEARCH_RIGHT_SIDE, and also rename
        some local variables and function parameters from "ulint side" to
        "ibool left_side".
        
        btr_search_t: Remove the unused fields last_search, n_direction, direction,
        and modify_clock.  Remove the unused constants BTR_SEA_NO_DIRECTION,
        BTR_SEA_LEFT, BTR_SEA_RIGHT, and BTR_SEA_SAME_REC.
        
        btr_search_t: Remove magic_n unless #defined UNIV_DEBUG.  Turn an assertion
        about the magic number into a debug assertion.
        
        
        Revision r828:
        Remove dict_tree_t, which should have been removed in r453.
        There always was a one-to-one mapping between dict_tree_t and dict_index_t.
        
        This saves 6 machine words per B-tree index in the data dictionary
        cache plus the memory allocation overhead.  We save one mem_heap_t
        object per index (15 machine words).  Considering the internal
        fragmentation of the buddy allocator in mem_area_alloc(), this should
        save 32 machine words per index (128 bytes on 32-bit systems and 256
        bytes on 64-bit systems).  (Bug #20877)
        
        struct dict_tree_struct, dict_tree_t: Remove.
        
        struct dict_index_struct: Add page and lock.
        
        dict_tree_create(): Remove.  Replace the invocation with
        assignment to index->page and a call to rw_lock_create(&index->lock).
        
        dict_tree_free(): Remove.  Replace the invocation wtih
        a call to rw_lock_free(&index->lock).
        
        dict_index_get_tree(): Remove.
        
        dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
        and remove the parameter, which was unused.
        
        btr_level_list_remove(): Remove the unused parameter "tree".
        
        Replace the occurrences of "tree" with "index" in names of variables,
        functions and data types, e.g. "dict_tree_t tree" becomes
        "dict_index_t index".  Remove local variables "tree" or "index" of
        functions that needed both "tree" and "index".
        
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/buf/buf0buf.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r824:
        Reduce the size of btr_search_t from 13 machine words to 7.  This
        structure is reserved for every index in the data dictionary cache.
        (Bug #20877)
        
        We could shrink the structure further to three 32-bit words or two
        64-bit words by turning the remaining fields to bit-fields.
        Unfortunately, the fields are not protected by any mutex, and thus we
        would better keep each field aligned to a machine word.
        
        btr_search_t, buf_block_t: Rename "ulint side" to "ibool left_side".
        Remove BTR_SEARCH_LEFT_SIDE and BTR_SEARCH_RIGHT_SIDE, and also rename
        some local variables and function parameters from "ulint side" to
        "ibool left_side".
        
        btr_search_t: Remove the unused fields last_search, n_direction, direction,
        and modify_clock.  Remove the unused constants BTR_SEA_NO_DIRECTION,
        BTR_SEA_LEFT, BTR_SEA_RIGHT, and BTR_SEA_SAME_REC.
        
        btr_search_t: Remove magic_n unless #defined UNIV_DEBUG.  Turn an assertion
        about the magic number into a debug assertion.
        
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/buf/buf0flu.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/buf/buf0lru.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/buf/buf0rea.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/data/data0data.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/data/data0type.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r813:
        Reduce the size of the data dictionary cache.  (Bug #20877)
        
        dtype_t: Remove unused field "prec", which was supposed to be used for
        the precision of decimal columns in stand-alone InnoDB.
        
        dtype_get_prec(): Remove.
        
        dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
        
        dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
        into bit-fields.
        
        dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
        
        dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
        
        Replace the default clust_pos value ULINT_UNDEFINED with
        REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
        the accessor function dict_col_get_clust_pos().
        
        dict_field_t: Turn prefix_len and fixed_len into bit-fields.
        
        dict_tree_t: Remove pad[64].
        
        dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
        cached, flags, stat_initialized, and autoinc_inited into bit-fields.
        Remove does_not_fit_in_memory from non-debug builds.
        
        dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
        n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
        
        dict_foreign_struct: Turn n_fields and type into bit-fields.
        
        rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
        Omit level unless #defined UNIV_SYNC_DEBUG.
        
        Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
        from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
        dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
        
        
        Revision r816:
        Remove more remnants of mixed indexes.
        
        Revision r834:
        dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
        so that all integer fields can be packed into 64 bits.  (Bug #20877)
        
        dtype_t: Change the type of all bit-fields to unsigned.
        
        dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
        dict_table_get_sys_col(), dict_field_get_col(): Return const
        dict_col_t*, so that changes to dict_col_t can be detected more
        easily.  Add const to many dict_col_t* declarations.
        
        dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
        
        dict_col_get_type(): Replace with dict_col_copy_type().
        
        dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
        dict_col_get_sql_null_size(): New functions.
        
        dtype_get_at_most_n_mbchars(): Replace the parameter dtype
        with the parameters prtype, mbminlen, mbmaxlen.
        
        dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
        cmp_whole_field(): Replace the dtype_t* parameter with the ulint
        parameters mtype, prtype.
        
        dtype_copy(): Add a const qualifier to type2 (the one being copied from).
        
        dtype_set_mblen(): Replaced with dtype_get_mblen().
        
        dtype_get_fixed_size_low(), dtype_get_min_size_low(),
        dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
        dtype_get_min_size(), and dtype_get_max_size().  These are used by the
        dict_col_get_{fixed,min,max}_size() functions.
        
        cmp_types_are_equal(): Replace with cmp_cols_are_equal().
        
        dict_table_get_col_name(): Add a const qualifier parameter to the
        parameter "table".
        
        dtype_binary, dtype_binary_val: Remove.
        
        dtype_is_fixed_size(): Remove.
      storage/innobase/dict/dict0boot.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r813:
        Reduce the size of the data dictionary cache.  (Bug #20877)
        
        dtype_t: Remove unused field "prec", which was supposed to be used for
        the precision of decimal columns in stand-alone InnoDB.
        
        dtype_get_prec(): Remove.
        
        dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
        
        dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
        into bit-fields.
        
        dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
        
        dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
        
        Replace the default clust_pos value ULINT_UNDEFINED with
        REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
        the accessor function dict_col_get_clust_pos().
        
        dict_field_t: Turn prefix_len and fixed_len into bit-fields.
        
        dict_tree_t: Remove pad[64].
        
        dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
        cached, flags, stat_initialized, and autoinc_inited into bit-fields.
        Remove does_not_fit_in_memory from non-debug builds.
        
        dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
        n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
        
        dict_foreign_struct: Turn n_fields and type into bit-fields.
        
        rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
        Omit level unless #defined UNIV_SYNC_DEBUG.
        
        Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
        from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
        dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
        
        
        Revision r816:
        Remove more remnants of mixed indexes.
        
        Revision r827:
        Make dict_index_find_cols() always succeed.
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/dict/dict0crea.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r813:
        Reduce the size of the data dictionary cache.  (Bug #20877)
        
        dtype_t: Remove unused field "prec", which was supposed to be used for
        the precision of decimal columns in stand-alone InnoDB.
        
        dtype_get_prec(): Remove.
        
        dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
        
        dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
        into bit-fields.
        
        dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
        
        dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
        
        Replace the default clust_pos value ULINT_UNDEFINED with
        REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
        the accessor function dict_col_get_clust_pos().
        
        dict_field_t: Turn prefix_len and fixed_len into bit-fields.
        
        dict_tree_t: Remove pad[64].
        
        dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
        cached, flags, stat_initialized, and autoinc_inited into bit-fields.
        Remove does_not_fit_in_memory from non-debug builds.
        
        dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
        n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
        
        dict_foreign_struct: Turn n_fields and type into bit-fields.
        
        rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
        Omit level unless #defined UNIV_SYNC_DEBUG.
        
        Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
        from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
        dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
        
        
        Revision r816:
        Remove more remnants of mixed indexes.
        
        Revision r827:
        Make dict_index_find_cols() always succeed.
        
        Revision r828:
        Remove dict_tree_t, which should have been removed in r453.
        There always was a one-to-one mapping between dict_tree_t and dict_index_t.
        
        This saves 6 machine words per B-tree index in the data dictionary
        cache plus the memory allocation overhead.  We save one mem_heap_t
        object per index (15 machine words).  Considering the internal
        fragmentation of the buddy allocator in mem_area_alloc(), this should
        save 32 machine words per index (128 bytes on 32-bit systems and 256
        bytes on 64-bit systems).  (Bug #20877)
        
        struct dict_tree_struct, dict_tree_t: Remove.
        
        struct dict_index_struct: Add page and lock.
        
        dict_tree_create(): Remove.  Replace the invocation with
        assignment to index->page and a call to rw_lock_create(&index->lock).
        
        dict_tree_free(): Remove.  Replace the invocation wtih
        a call to rw_lock_free(&index->lock).
        
        dict_index_get_tree(): Remove.
        
        dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
        and remove the parameter, which was unused.
        
        btr_level_list_remove(): Remove the unused parameter "tree".
        
        Replace the occurrences of "tree" with "index" in names of variables,
        functions and data types, e.g. "dict_tree_t tree" becomes
        "dict_index_t index".  Remove local variables "tree" or "index" of
        functions that needed both "tree" and "index".
        
        
        Revision r832:
        Add dict_table_get_col_name() in preparation for getting rid of
        dict_col_t::name, and use it instead of col->name everywhere.
        
        Revision r833:
        Tweak the bit-field definitions introduced since r813 to address Bug #20877.
        
        rw_lock_t: Do not make writer_is_wait_ex a bit-field.  There are no fields
        yet that could be fused to the same machine word, but we play it safe,
        because the field writer_is_wait_ex may be modified by several threads
        simultaneously.  Such fields should always be allocated an own machine
        word.
        
        dict_table_t: Change the type of all bit-fields to "unsigned".  Make
        "space" a bit-field of 32 bits.  Move name_hash and id_hash after all
        bit-fields, so that the bit-fields can be allocated together.  Do not
        make autoinc_inited a bit-field, as we cannot allocate any field
        from the same machine word.
        
        dict_build_table_def_step(): Pass a local variable to
        fil_create_new_single_table_tablespace() and initialize table->space
        from it after the call, now that table->space is a bit-field.
        
        
        Revision r834:
        dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
        so that all integer fields can be packed into 64 bits.  (Bug #20877)
        
        dtype_t: Change the type of all bit-fields to unsigned.
        
        dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
        dict_table_get_sys_col(), dict_field_get_col(): Return const
        dict_col_t*, so that changes to dict_col_t can be detected more
        easily.  Add const to many dict_col_t* declarations.
        
        dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
        
        dict_col_get_type(): Replace with dict_col_copy_type().
        
        dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
        dict_col_get_sql_null_size(): New functions.
        
        dtype_get_at_most_n_mbchars(): Replace the parameter dtype
        with the parameters prtype, mbminlen, mbmaxlen.
        
        dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
        cmp_whole_field(): Replace the dtype_t* parameter with the ulint
        parameters mtype, prtype.
        
        dtype_copy(): Add a const qualifier to type2 (the one being copied from).
        
        dtype_set_mblen(): Replaced with dtype_get_mblen().
        
        dtype_get_fixed_size_low(), dtype_get_min_size_low(),
        dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
        dtype_get_min_size(), and dtype_get_max_size().  These are used by the
        dict_col_get_{fixed,min,max}_size() functions.
        
        cmp_types_are_equal(): Replace with cmp_cols_are_equal().
        
        dict_table_get_col_name(): Add a const qualifier parameter to the
        parameter "table".
        
        dtype_binary, dtype_binary_val: Remove.
        
        dtype_is_fixed_size(): Remove.
        
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/dict/dict0dict.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r813:
        Reduce the size of the data dictionary cache.  (Bug #20877)
        
        dtype_t: Remove unused field "prec", which was supposed to be used for
        the precision of decimal columns in stand-alone InnoDB.
        
        dtype_get_prec(): Remove.
        
        dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
        
        dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
        into bit-fields.
        
        dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
        
        dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
        
        Replace the default clust_pos value ULINT_UNDEFINED with
        REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
        the accessor function dict_col_get_clust_pos().
        
        dict_field_t: Turn prefix_len and fixed_len into bit-fields.
        
        dict_tree_t: Remove pad[64].
        
        dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
        cached, flags, stat_initialized, and autoinc_inited into bit-fields.
        Remove does_not_fit_in_memory from non-debug builds.
        
        dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
        n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
        
        dict_foreign_struct: Turn n_fields and type into bit-fields.
        
        rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
        Omit level unless #defined UNIV_SYNC_DEBUG.
        
        Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
        from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
        dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
        
        
        Revision r816:
        Remove more remnants of mixed indexes.
        
        Revision r818:
        Remove dict_col_t::hash, dict_col_t::table,
        dict_sys->col_hash, and DICT_POOL_PER_COL_HASH.  (Bug #20877)
        
        The col->table pointer was only needed for maintaining a hash table of
        all defined columns in all tables.  The hash table was only looked up
        in dict_index_find_cols().  Removing the col->hash and col->table
        pointers reduces the size of a table column by two machine words
        (usually 8 or 16 bytes).
        
        dict_col_add_to_cache(), dict_col_reposition_in_cache(),
        dict_col_remove_from_cache(): Remove.  These only updated dict_sys->col_hash.
        
        dict_index_find_cols(): Use a linear search instead of the hash table.
        The time complexity is affected, but this function is only invoked by
        dict_index_add_to_cache(), and we only search the columns of a single
        table (typically at most a few dozen) as opposed to all columns of all
        tables.
        
        
        Revision r819:
        dict_col_t: Reduce ord_part to one bit.
        
        dict_index_add_to_cache(): Instead of incrementing ord_part, set it.
        
        dict_index_remove_from_cache(): Do not touch ord_part.
        
        dtype_t: Reduce mbminlen from 3 to 2 bits.
        
        row_upd(): Add a UNIV_LIKELY hint around node->in_mysql_interface.
        
        
        Revision r820:
        Remove dict_col_t::clust_pos.
        
        dict_col_get_clust_pos(): Add parameter clust_index.  Replace the
        look-up with a linear search of all columns in the clustered index.
        
        row_upd_index_replace_new_col_vals(): Compute clust_index outside
        the loops.  Compute clust_pos outside the inner loop.
        
        row_upd_changes_ord_field_binary(), row_upd_changes_first_fields_binary():
        Compute clust_index outside the loops.  Declare the auxiliary variables
        inside the loop scope.
        
        
        Revision r821:
        dict_table_t: Rename the integer field max_row_size
        to the Boolean field big_rows.  (Bug #20877)
        
        BIG_ROW_SIZE: Move the definition from row0sel.c to dict_table_add_to_cache().
        
        
        Revision r826:
        The code base was reindented in r763 and automatic .emacs indentation
        settings introduced. Some problems were found, so from this commit on one
        additional indentation rule is introduced:
        
         (add-to-list 'c-offsets-alist '(arglist-intro . +))
        
        Note that fixing some of the unfortunate line-splits done in r764 will be
        done in a future change.
        
        Revision r827:
        Make dict_index_find_cols() always succeed.
        
        Revision r828:
        Remove dict_tree_t, which should have been removed in r453.
        There always was a one-to-one mapping between dict_tree_t and dict_index_t.
        
        This saves 6 machine words per B-tree index in the data dictionary
        cache plus the memory allocation overhead.  We save one mem_heap_t
        object per index (15 machine words).  Considering the internal
        fragmentation of the buddy allocator in mem_area_alloc(), this should
        save 32 machine words per index (128 bytes on 32-bit systems and 256
        bytes on 64-bit systems).  (Bug #20877)
        
        struct dict_tree_struct, dict_tree_t: Remove.
        
        struct dict_index_struct: Add page and lock.
        
        dict_tree_create(): Remove.  Replace the invocation with
        assignment to index->page and a call to rw_lock_create(&index->lock).
        
        dict_tree_free(): Remove.  Replace the invocation wtih
        a call to rw_lock_free(&index->lock).
        
        dict_index_get_tree(): Remove.
        
        dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
        and remove the parameter, which was unused.
        
        btr_level_list_remove(): Remove the unused parameter "tree".
        
        Replace the occurrences of "tree" with "index" in names of variables,
        functions and data types, e.g. "dict_tree_t tree" becomes
        "dict_index_t index".  Remove local variables "tree" or "index" of
        functions that needed both "tree" and "index".
        
        
        Revision r831:
        Add dict_col_get_clust_pos_noninline(), which was forgotten from r820.
        
        
        Revision r832:
        Add dict_table_get_col_name() in preparation for getting rid of
        dict_col_t::name, and use it instead of col->name everywhere.
        
        Revision r834:
        dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
        so that all integer fields can be packed into 64 bits.  (Bug #20877)
        
        dtype_t: Change the type of all bit-fields to unsigned.
        
        dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
        dict_table_get_sys_col(), dict_field_get_col(): Return const
        dict_col_t*, so that changes to dict_col_t can be detected more
        easily.  Add const to many dict_col_t* declarations.
        
        dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
        
        dict_col_get_type(): Replace with dict_col_copy_type().
        
        dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
        dict_col_get_sql_null_size(): New functions.
        
        dtype_get_at_most_n_mbchars(): Replace the parameter dtype
        with the parameters prtype, mbminlen, mbmaxlen.
        
        dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
        cmp_whole_field(): Replace the dtype_t* parameter with the ulint
        parameters mtype, prtype.
        
        dtype_copy(): Add a const qualifier to type2 (the one being copied from).
        
        dtype_set_mblen(): Replaced with dtype_get_mblen().
        
        dtype_get_fixed_size_low(), dtype_get_min_size_low(),
        dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
        dtype_get_min_size(), and dtype_get_max_size().  These are used by the
        dict_col_get_{fixed,min,max}_size() functions.
        
        cmp_types_are_equal(): Replace with cmp_cols_are_equal().
        
        dict_table_get_col_name(): Add a const qualifier parameter to the
        parameter "table".
        
        dtype_binary, dtype_binary_val: Remove.
        
        dtype_is_fixed_size(): Remove.
        
        
        Revision r836:
        Remove dict_col_t::name, replace it with a packed array of column names in
        dict_table_t. This saves 8-15+ bytes of memory per column on 64-bit
        machines.
        
        Revision r837:
        page_offset(): New function to replace many ut_align_offset(., UNIV_PAGE_SIZE)
        calls.
        
        dict_index_build_node_ptr(): Correct a typo in a comment.
        
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
        
        Revision r845:
        Split long lines with [] operators better.
      storage/innobase/dict/dict0load.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r813:
        Reduce the size of the data dictionary cache.  (Bug #20877)
        
        dtype_t: Remove unused field "prec", which was supposed to be used for
        the precision of decimal columns in stand-alone InnoDB.
        
        dtype_get_prec(): Remove.
        
        dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
        
        dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
        into bit-fields.
        
        dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
        
        dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
        
        Replace the default clust_pos value ULINT_UNDEFINED with
        REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
        the accessor function dict_col_get_clust_pos().
        
        dict_field_t: Turn prefix_len and fixed_len into bit-fields.
        
        dict_tree_t: Remove pad[64].
        
        dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
        cached, flags, stat_initialized, and autoinc_inited into bit-fields.
        Remove does_not_fit_in_memory from non-debug builds.
        
        dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
        n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
        
        dict_foreign_struct: Turn n_fields and type into bit-fields.
        
        rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
        Omit level unless #defined UNIV_SYNC_DEBUG.
        
        Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
        from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
        dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
        
        
        Revision r832:
        Add dict_table_get_col_name() in preparation for getting rid of
        dict_col_t::name, and use it instead of col->name everywhere.
        
        Revision r834:
        dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
        so that all integer fields can be packed into 64 bits.  (Bug #20877)
        
        dtype_t: Change the type of all bit-fields to unsigned.
        
        dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
        dict_table_get_sys_col(), dict_field_get_col(): Return const
        dict_col_t*, so that changes to dict_col_t can be detected more
        easily.  Add const to many dict_col_t* declarations.
        
        dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
        
        dict_col_get_type(): Replace with dict_col_copy_type().
        
        dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
        dict_col_get_sql_null_size(): New functions.
        
        dtype_get_at_most_n_mbchars(): Replace the parameter dtype
        with the parameters prtype, mbminlen, mbmaxlen.
        
        dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
        cmp_whole_field(): Replace the dtype_t* parameter with the ulint
        parameters mtype, prtype.
        
        dtype_copy(): Add a const qualifier to type2 (the one being copied from).
        
        dtype_set_mblen(): Replaced with dtype_get_mblen().
        
        dtype_get_fixed_size_low(), dtype_get_min_size_low(),
        dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
        dtype_get_min_size(), and dtype_get_max_size().  These are used by the
        dict_col_get_{fixed,min,max}_size() functions.
        
        cmp_types_are_equal(): Replace with cmp_cols_are_equal().
        
        dict_table_get_col_name(): Add a const qualifier parameter to the
        parameter "table".
        
        dtype_binary, dtype_binary_val: Remove.
        
        dtype_is_fixed_size(): Remove.
        
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/dict/dict0mem.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r813:
        Reduce the size of the data dictionary cache.  (Bug #20877)
        
        dtype_t: Remove unused field "prec", which was supposed to be used for
        the precision of decimal columns in stand-alone InnoDB.
        
        dtype_get_prec(): Remove.
        
        dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
        
        dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
        into bit-fields.
        
        dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
        
        dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
        
        Replace the default clust_pos value ULINT_UNDEFINED with
        REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
        the accessor function dict_col_get_clust_pos().
        
        dict_field_t: Turn prefix_len and fixed_len into bit-fields.
        
        dict_tree_t: Remove pad[64].
        
        dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
        cached, flags, stat_initialized, and autoinc_inited into bit-fields.
        Remove does_not_fit_in_memory from non-debug builds.
        
        dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
        n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
        
        dict_foreign_struct: Turn n_fields and type into bit-fields.
        
        rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
        Omit level unless #defined UNIV_SYNC_DEBUG.
        
        Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
        from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
        dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
        
        
        Revision r818:
        Remove dict_col_t::hash, dict_col_t::table,
        dict_sys->col_hash, and DICT_POOL_PER_COL_HASH.  (Bug #20877)
        
        The col->table pointer was only needed for maintaining a hash table of
        all defined columns in all tables.  The hash table was only looked up
        in dict_index_find_cols().  Removing the col->hash and col->table
        pointers reduces the size of a table column by two machine words
        (usually 8 or 16 bytes).
        
        dict_col_add_to_cache(), dict_col_reposition_in_cache(),
        dict_col_remove_from_cache(): Remove.  These only updated dict_sys->col_hash.
        
        dict_index_find_cols(): Use a linear search instead of the hash table.
        The time complexity is affected, but this function is only invoked by
        dict_index_add_to_cache(), and we only search the columns of a single
        table (typically at most a few dozen) as opposed to all columns of all
        tables.
        
        
        Revision r820:
        Remove dict_col_t::clust_pos.
        
        dict_col_get_clust_pos(): Add parameter clust_index.  Replace the
        look-up with a linear search of all columns in the clustered index.
        
        row_upd_index_replace_new_col_vals(): Compute clust_index outside
        the loops.  Compute clust_pos outside the inner loop.
        
        row_upd_changes_ord_field_binary(), row_upd_changes_first_fields_binary():
        Compute clust_index outside the loops.  Declare the auxiliary variables
        inside the loop scope.
        
        
        Revision r821:
        dict_table_t: Rename the integer field max_row_size
        to the Boolean field big_rows.  (Bug #20877)
        
        BIG_ROW_SIZE: Move the definition from row0sel.c to dict_table_add_to_cache().
        
        
        Revision r828:
        Remove dict_tree_t, which should have been removed in r453.
        There always was a one-to-one mapping between dict_tree_t and dict_index_t.
        
        This saves 6 machine words per B-tree index in the data dictionary
        cache plus the memory allocation overhead.  We save one mem_heap_t
        object per index (15 machine words).  Considering the internal
        fragmentation of the buddy allocator in mem_area_alloc(), this should
        save 32 machine words per index (128 bytes on 32-bit systems and 256
        bytes on 64-bit systems).  (Bug #20877)
        
        struct dict_tree_struct, dict_tree_t: Remove.
        
        struct dict_index_struct: Add page and lock.
        
        dict_tree_create(): Remove.  Replace the invocation with
        assignment to index->page and a call to rw_lock_create(&index->lock).
        
        dict_tree_free(): Remove.  Replace the invocation wtih
        a call to rw_lock_free(&index->lock).
        
        dict_index_get_tree(): Remove.
        
        dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
        and remove the parameter, which was unused.
        
        btr_level_list_remove(): Remove the unused parameter "tree".
        
        Replace the occurrences of "tree" with "index" in names of variables,
        functions and data types, e.g. "dict_tree_t tree" becomes
        "dict_index_t index".  Remove local variables "tree" or "index" of
        functions that needed both "tree" and "index".
        
        
        Revision r834:
        dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
        so that all integer fields can be packed into 64 bits.  (Bug #20877)
        
        dtype_t: Change the type of all bit-fields to unsigned.
        
        dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
        dict_table_get_sys_col(), dict_field_get_col(): Return const
        dict_col_t*, so that changes to dict_col_t can be detected more
        easily.  Add const to many dict_col_t* declarations.
        
        dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
        
        dict_col_get_type(): Replace with dict_col_copy_type().
        
        dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
        dict_col_get_sql_null_size(): New functions.
        
        dtype_get_at_most_n_mbchars(): Replace the parameter dtype
        with the parameters prtype, mbminlen, mbmaxlen.
        
        dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
        cmp_whole_field(): Replace the dtype_t* parameter with the ulint
        parameters mtype, prtype.
        
        dtype_copy(): Add a const qualifier to type2 (the one being copied from).
        
        dtype_set_mblen(): Replaced with dtype_get_mblen().
        
        dtype_get_fixed_size_low(), dtype_get_min_size_low(),
        dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
        dtype_get_min_size(), and dtype_get_max_size().  These are used by the
        dict_col_get_{fixed,min,max}_size() functions.
        
        cmp_types_are_equal(): Replace with cmp_cols_are_equal().
        
        dict_table_get_col_name(): Add a const qualifier parameter to the
        parameter "table".
        
        dtype_binary, dtype_binary_val: Remove.
        
        dtype_is_fixed_size(): Remove.
        
        
        Revision r836:
        Remove dict_col_t::name, replace it with a packed array of column names in
        dict_table_t. This saves 8-15+ bytes of memory per column on 64-bit
        machines.
      storage/innobase/eval/eval0eval.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r826:
        The code base was reindented in r763 and automatic .emacs indentation
        settings introduced. Some problems were found, so from this commit on one
        additional indentation rule is introduced:
        
         (add-to-list 'c-offsets-alist '(arglist-intro . +))
        
        Note that fixing some of the unfortunate line-splits done in r764 will be
        done in a future change.
      storage/innobase/eval/eval0proc.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/fil/fil0fil.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/fsp/fsp0fsp.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
        
        Revision r845:
        Split long lines with [] operators better.
      storage/innobase/handler/ha_innodb.cc:
        Applied innodb-5.1 snapshots ss799 and ss854
      storage/innobase/handler/ha_innodb.h:
        Applied innodb-5.1 snapshots ss799 and ss854
      storage/innobase/ibuf/ibuf0ibuf.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r813:
        Reduce the size of the data dictionary cache.  (Bug #20877)
        
        dtype_t: Remove unused field "prec", which was supposed to be used for
        the precision of decimal columns in stand-alone InnoDB.
        
        dtype_get_prec(): Remove.
        
        dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
        
        dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
        into bit-fields.
        
        dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
        
        dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
        
        Replace the default clust_pos value ULINT_UNDEFINED with
        REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
        the accessor function dict_col_get_clust_pos().
        
        dict_field_t: Turn prefix_len and fixed_len into bit-fields.
        
        dict_tree_t: Remove pad[64].
        
        dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
        cached, flags, stat_initialized, and autoinc_inited into bit-fields.
        Remove does_not_fit_in_memory from non-debug builds.
        
        dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
        n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
        
        dict_foreign_struct: Turn n_fields and type into bit-fields.
        
        rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
        Omit level unless #defined UNIV_SYNC_DEBUG.
        
        Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
        from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
        dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
        
        
        Revision r828:
        Remove dict_tree_t, which should have been removed in r453.
        There always was a one-to-one mapping between dict_tree_t and dict_index_t.
        
        This saves 6 machine words per B-tree index in the data dictionary
        cache plus the memory allocation overhead.  We save one mem_heap_t
        object per index (15 machine words).  Considering the internal
        fragmentation of the buddy allocator in mem_area_alloc(), this should
        save 32 machine words per index (128 bytes on 32-bit systems and 256
        bytes on 64-bit systems).  (Bug #20877)
        
        struct dict_tree_struct, dict_tree_t: Remove.
        
        struct dict_index_struct: Add page and lock.
        
        dict_tree_create(): Remove.  Replace the invocation with
        assignment to index->page and a call to rw_lock_create(&index->lock).
        
        dict_tree_free(): Remove.  Replace the invocation wtih
        a call to rw_lock_free(&index->lock).
        
        dict_index_get_tree(): Remove.
        
        dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
        and remove the parameter, which was unused.
        
        btr_level_list_remove(): Remove the unused parameter "tree".
        
        Replace the occurrences of "tree" with "index" in names of variables,
        functions and data types, e.g. "dict_tree_t tree" becomes
        "dict_index_t index".  Remove local variables "tree" or "index" of
        functions that needed both "tree" and "index".
        
        
        Revision r832:
        Add dict_table_get_col_name() in preparation for getting rid of
        dict_col_t::name, and use it instead of col->name everywhere.
        
        Revision r834:
        dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
        so that all integer fields can be packed into 64 bits.  (Bug #20877)
        
        dtype_t: Change the type of all bit-fields to unsigned.
        
        dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
        dict_table_get_sys_col(), dict_field_get_col(): Return const
        dict_col_t*, so that changes to dict_col_t can be detected more
        easily.  Add const to many dict_col_t* declarations.
        
        dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
        
        dict_col_get_type(): Replace with dict_col_copy_type().
        
        dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
        dict_col_get_sql_null_size(): New functions.
        
        dtype_get_at_most_n_mbchars(): Replace the parameter dtype
        with the parameters prtype, mbminlen, mbmaxlen.
        
        dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
        cmp_whole_field(): Replace the dtype_t* parameter with the ulint
        parameters mtype, prtype.
        
        dtype_copy(): Add a const qualifier to type2 (the one being copied from).
        
        dtype_set_mblen(): Replaced with dtype_get_mblen().
        
        dtype_get_fixed_size_low(), dtype_get_min_size_low(),
        dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
        dtype_get_min_size(), and dtype_get_max_size().  These are used by the
        dict_col_get_{fixed,min,max}_size() functions.
        
        cmp_types_are_equal(): Replace with cmp_cols_are_equal().
        
        dict_table_get_col_name(): Add a const qualifier parameter to the
        parameter "table".
        
        dtype_binary, dtype_binary_val: Remove.
        
        dtype_is_fixed_size(): Remove.
        
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/include/btr0btr.h:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r828:
        Remove dict_tree_t, which should have been removed in r453.
        There always was a one-to-one mapping between dict_tree_t and dict_index_t.
        
        This saves 6 machine words per B-tree index in the data dictionary
        cache plus the memory allocation overhead.  We save one mem_heap_t
        object per index (15 machine words).  Considering the internal
        fragmentation of the buddy allocator in mem_area_alloc(), this should
        save 32 machine words per index (128 bytes on 32-bit systems and 256
        bytes on 64-bit systems).  (Bug #20877)
        
        struct dict_tree_struct, dict_tree_t: Remove.
        
        struct dict_index_struct: Add page and lock.
        
        dict_tree_create(): Remove.  Replace the invocation with
        assignment to index->page and a call to rw_lock_create(&index->lock).
        
        dict_tree_free(): Remove.  Replace the invocation wtih
        a call to rw_lock_free(&index->lock).
        
        dict_index_get_tree(): Remove.
        
        dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
        and remove the parameter, which was unused.
        
        btr_level_list_remove(): Remove the unused parameter "tree".
        
        Replace the occurrences of "tree" with "index" in names of variables,
        functions and data types, e.g. "dict_tree_t tree" becomes
        "dict_index_t index".  Remove local variables "tree" or "index" of
        functions that needed both "tree" and "index".
      storage/innobase/include/btr0btr.ic:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r837:
        page_offset(): New function to replace many ut_align_offset(., UNIV_PAGE_SIZE)
        calls.
        
        dict_index_build_node_ptr(): Correct a typo in a comment.
      storage/innobase/include/btr0cur.h:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r828:
        Remove dict_tree_t, which should have been removed in r453.
        There always was a one-to-one mapping between dict_tree_t and dict_index_t.
        
        This saves 6 machine words per B-tree index in the data dictionary
        cache plus the memory allocation overhead.  We save one mem_heap_t
        object per index (15 machine words).  Considering the internal
        fragmentation of the buddy allocator in mem_area_alloc(), this should
        save 32 machine words per index (128 bytes on 32-bit systems and 256
        bytes on 64-bit systems).  (Bug #20877)
        
        struct dict_tree_struct, dict_tree_t: Remove.
        
        struct dict_index_struct: Add page and lock.
        
        dict_tree_create(): Remove.  Replace the invocation with
        assignment to index->page and a call to rw_lock_create(&index->lock).
        
        dict_tree_free(): Remove.  Replace the invocation wtih
        a call to rw_lock_free(&index->lock).
        
        dict_index_get_tree(): Remove.
        
        dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
        and remove the parameter, which was unused.
        
        btr_level_list_remove(): Remove the unused parameter "tree".
        
        Replace the occurrences of "tree" with "index" in names of variables,
        functions and data types, e.g. "dict_tree_t tree" becomes
        "dict_index_t index".  Remove local variables "tree" or "index" of
        functions that needed both "tree" and "index".
      storage/innobase/include/btr0cur.ic:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r828:
        Remove dict_tree_t, which should have been removed in r453.
        There always was a one-to-one mapping between dict_tree_t and dict_index_t.
        
        This saves 6 machine words per B-tree index in the data dictionary
        cache plus the memory allocation overhead.  We save one mem_heap_t
        object per index (15 machine words).  Considering the internal
        fragmentation of the buddy allocator in mem_area_alloc(), this should
        save 32 machine words per index (128 bytes on 32-bit systems and 256
        bytes on 64-bit systems).  (Bug #20877)
        
        struct dict_tree_struct, dict_tree_t: Remove.
        
        struct dict_index_struct: Add page and lock.
        
        dict_tree_create(): Remove.  Replace the invocation with
        assignment to index->page and a call to rw_lock_create(&index->lock).
        
        dict_tree_free(): Remove.  Replace the invocation wtih
        a call to rw_lock_free(&index->lock).
        
        dict_index_get_tree(): Remove.
        
        dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
        and remove the parameter, which was unused.
        
        btr_level_list_remove(): Remove the unused parameter "tree".
        
        Replace the occurrences of "tree" with "index" in names of variables,
        functions and data types, e.g. "dict_tree_t tree" becomes
        "dict_index_t index".  Remove local variables "tree" or "index" of
        functions that needed both "tree" and "index".
      storage/innobase/include/btr0pcur.h:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r817:
        btr0pcur.h: Change FIXME to TODO.
      storage/innobase/include/btr0sea.h:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r824:
        Reduce the size of btr_search_t from 13 machine words to 7.  This
        structure is reserved for every index in the data dictionary cache.
        (Bug #20877)
        
        We could shrink the structure further to three 32-bit words or two
        64-bit words by turning the remaining fields to bit-fields.
        Unfortunately, the fields are not protected by any mutex, and thus we
        would better keep each field aligned to a machine word.
        
        btr_search_t, buf_block_t: Rename "ulint side" to "ibool left_side".
        Remove BTR_SEARCH_LEFT_SIDE and BTR_SEARCH_RIGHT_SIDE, and also rename
        some local variables and function parameters from "ulint side" to
        "ibool left_side".
        
        btr_search_t: Remove the unused fields last_search, n_direction, direction,
        and modify_clock.  Remove the unused constants BTR_SEA_NO_DIRECTION,
        BTR_SEA_LEFT, BTR_SEA_RIGHT, and BTR_SEA_SAME_REC.
        
        btr_search_t: Remove magic_n unless #defined UNIV_DEBUG.  Turn an assertion
        about the magic number into a debug assertion.
      storage/innobase/include/buf0buf.h:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r824:
        Reduce the size of btr_search_t from 13 machine words to 7.  This
        structure is reserved for every index in the data dictionary cache.
        (Bug #20877)
        
        We could shrink the structure further to three 32-bit words or two
        64-bit words by turning the remaining fields to bit-fields.
        Unfortunately, the fields are not protected by any mutex, and thus we
        would better keep each field aligned to a machine word.
        
        btr_search_t, buf_block_t: Rename "ulint side" to "ibool left_side".
        Remove BTR_SEARCH_LEFT_SIDE and BTR_SEARCH_RIGHT_SIDE, and also rename
        some local variables and function parameters from "ulint side" to
        "ibool left_side".
        
        btr_search_t: Remove the unused fields last_search, n_direction, direction,
        and modify_clock.  Remove the unused constants BTR_SEA_NO_DIRECTION,
        BTR_SEA_LEFT, BTR_SEA_RIGHT, and BTR_SEA_SAME_REC.
        
        btr_search_t: Remove magic_n unless #defined UNIV_DEBUG.  Turn an assertion
        about the magic number into a debug assertion.
      storage/innobase/include/data0data.ic:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r813:
        Reduce the size of the data dictionary cache.  (Bug #20877)
        
        dtype_t: Remove unused field "prec", which was supposed to be used for
        the precision of decimal columns in stand-alone InnoDB.
        
        dtype_get_prec(): Remove.
        
        dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
        
        dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
        into bit-fields.
        
        dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
        
        dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
        
        Replace the default clust_pos value ULINT_UNDEFINED with
        REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
        the accessor function dict_col_get_clust_pos().
        
        dict_field_t: Turn prefix_len and fixed_len into bit-fields.
        
        dict_tree_t: Remove pad[64].
        
        dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
        cached, flags, stat_initialized, and autoinc_inited into bit-fields.
        Remove does_not_fit_in_memory from non-debug builds.
        
        dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
        n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
        
        dict_foreign_struct: Turn n_fields and type into bit-fields.
        
        rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
        Omit level unless #defined UNIV_SYNC_DEBUG.
        
        Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
        from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
        dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
      storage/innobase/include/data0type.h:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r813:
        Reduce the size of the data dictionary cache.  (Bug #20877)
        
        dtype_t: Remove unused field "prec", which was supposed to be used for
        the precision of decimal columns in stand-alone InnoDB.
        
        dtype_get_prec(): Remove.
        
        dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
        
        dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
        into bit-fields.
        
        dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
        
        dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
        
        Replace the default clust_pos value ULINT_UNDEFINED with
        REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
        the accessor function dict_col_get_clust_pos().
        
        dict_field_t: Turn prefix_len and fixed_len into bit-fields.
        
        dict_tree_t: Remove pad[64].
        
        dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
        cached, flags, stat_initialized, and autoinc_inited into bit-fields.
        Remove does_not_fit_in_memory from non-debug builds.
        
        dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
        n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
        
        dict_foreign_struct: Turn n_fields and type into bit-fields.
        
        rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
        Omit level unless #defined UNIV_SYNC_DEBUG.
        
        Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
        from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
        dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
        
        
        Revision r816:
        Remove more remnants of mixed indexes.
        
        Revision r819:
        dict_col_t: Reduce ord_part to one bit.
        
        dict_index_add_to_cache(): Instead of incrementing ord_part, set it.
        
        dict_index_remove_from_cache(): Do not touch ord_part.
        
        dtype_t: Reduce mbminlen from 3 to 2 bits.
        
        row_upd(): Add a UNIV_LIKELY hint around node->in_mysql_interface.
        
        
        Revision r834:
        dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
        so that all integer fields can be packed into 64 bits.  (Bug #20877)
        
        dtype_t: Change the type of all bit-fields to unsigned.
        
        dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
        dict_table_get_sys_col(), dict_field_get_col(): Return const
        dict_col_t*, so that changes to dict_col_t can be detected more
        easily.  Add const to many dict_col_t* declarations.
        
        dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
        
        dict_col_get_type(): Replace with dict_col_copy_type().
        
        dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
        dict_col_get_sql_null_size(): New functions.
        
        dtype_get_at_most_n_mbchars(): Replace the parameter dtype
        with the parameters prtype, mbminlen, mbmaxlen.
        
        dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
        cmp_whole_field(): Replace the dtype_t* parameter with the ulint
        parameters mtype, prtype.
        
        dtype_copy(): Add a const qualifier to type2 (the one being copied from).
        
        dtype_set_mblen(): Replaced with dtype_get_mblen().
        
        dtype_get_fixed_size_low(), dtype_get_min_size_low(),
        dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
        dtype_get_min_size(), and dtype_get_max_size().  These are used by the
        dict_col_get_{fixed,min,max}_size() functions.
        
        cmp_types_are_equal(): Replace with cmp_cols_are_equal().
        
        dict_table_get_col_name(): Add a const qualifier parameter to the
        parameter "table".
        
        dtype_binary, dtype_binary_val: Remove.
        
        dtype_is_fixed_size(): Remove.
      storage/innobase/include/data0type.ic:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r813:
        Reduce the size of the data dictionary cache.  (Bug #20877)
        
        dtype_t: Remove unused field "prec", which was supposed to be used for
        the precision of decimal columns in stand-alone InnoDB.
        
        dtype_get_prec(): Remove.
        
        dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
        
        dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
        into bit-fields.
        
        dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
        
        dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
        
        Replace the default clust_pos value ULINT_UNDEFINED with
        REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
        the accessor function dict_col_get_clust_pos().
        
        dict_field_t: Turn prefix_len and fixed_len into bit-fields.
        
        dict_tree_t: Remove pad[64].
        
        dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
        cached, flags, stat_initialized, and autoinc_inited into bit-fields.
        Remove does_not_fit_in_memory from non-debug builds.
        
        dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
        n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
        
        dict_foreign_struct: Turn n_fields and type into bit-fields.
        
        rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
        Omit level unless #defined UNIV_SYNC_DEBUG.
        
        Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
        from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
        dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
        
        
        Revision r816:
        Remove more remnants of mixed indexes.
        
        Revision r834:
        dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
        so that all integer fields can be packed into 64 bits.  (Bug #20877)
        
        dtype_t: Change the type of all bit-fields to unsigned.
        
        dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
        dict_table_get_sys_col(), dict_field_get_col(): Return const
        dict_col_t*, so that changes to dict_col_t can be detected more
        easily.  Add const to many dict_col_t* declarations.
        
        dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
        
        dict_col_get_type(): Replace with dict_col_copy_type().
        
        dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
        dict_col_get_sql_null_size(): New functions.
        
        dtype_get_at_most_n_mbchars(): Replace the parameter dtype
        with the parameters prtype, mbminlen, mbmaxlen.
        
        dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
        cmp_whole_field(): Replace the dtype_t* parameter with the ulint
        parameters mtype, prtype.
        
        dtype_copy(): Add a const qualifier to type2 (the one being copied from).
        
        dtype_set_mblen(): Replaced with dtype_get_mblen().
        
        dtype_get_fixed_size_low(), dtype_get_min_size_low(),
        dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
        dtype_get_min_size(), and dtype_get_max_size().  These are used by the
        dict_col_get_{fixed,min,max}_size() functions.
        
        cmp_types_are_equal(): Replace with cmp_cols_are_equal().
        
        dict_table_get_col_name(): Add a const qualifier parameter to the
        parameter "table".
        
        dtype_binary, dtype_binary_val: Remove.
        
        dtype_is_fixed_size(): Remove.
        
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/include/dict0boot.h:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r816:
        Remove more remnants of mixed indexes.
      storage/innobase/include/dict0dict.h:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r816:
        Remove more remnants of mixed indexes.
        
        Revision r818:
        Remove dict_col_t::hash, dict_col_t::table,
        dict_sys->col_hash, and DICT_POOL_PER_COL_HASH.  (Bug #20877)
        
        The col->table pointer was only needed for maintaining a hash table of
        all defined columns in all tables.  The hash table was only looked up
        in dict_index_find_cols().  Removing the col->hash and col->table
        pointers reduces the size of a table column by two machine words
        (usually 8 or 16 bytes).
        
        dict_col_add_to_cache(), dict_col_reposition_in_cache(),
        dict_col_remove_from_cache(): Remove.  These only updated dict_sys->col_hash.
        
        dict_index_find_cols(): Use a linear search instead of the hash table.
        The time complexity is affected, but this function is only invoked by
        dict_index_add_to_cache(), and we only search the columns of a single
        table (typically at most a few dozen) as opposed to all columns of all
        tables.
        
        
        Revision r820:
        Remove dict_col_t::clust_pos.
        
        dict_col_get_clust_pos(): Add parameter clust_index.  Replace the
        look-up with a linear search of all columns in the clustered index.
        
        row_upd_index_replace_new_col_vals(): Compute clust_index outside
        the loops.  Compute clust_pos outside the inner loop.
        
        row_upd_changes_ord_field_binary(), row_upd_changes_first_fields_binary():
        Compute clust_index outside the loops.  Declare the auxiliary variables
        inside the loop scope.
        
        
        Revision r827:
        Make dict_index_find_cols() always succeed.
        
        Revision r828:
        Remove dict_tree_t, which should have been removed in r453.
        There always was a one-to-one mapping between dict_tree_t and dict_index_t.
        
        This saves 6 machine words per B-tree index in the data dictionary
        cache plus the memory allocation overhead.  We save one mem_heap_t
        object per index (15 machine words).  Considering the internal
        fragmentation of the buddy allocator in mem_area_alloc(), this should
        save 32 machine words per index (128 bytes on 32-bit systems and 256
        bytes on 64-bit systems).  (Bug #20877)
        
        struct dict_tree_struct, dict_tree_t: Remove.
        
        struct dict_index_struct: Add page and lock.
        
        dict_tree_create(): Remove.  Replace the invocation with
        assignment to index->page and a call to rw_lock_create(&index->lock).
        
        dict_tree_free(): Remove.  Replace the invocation wtih
        a call to rw_lock_free(&index->lock).
        
        dict_index_get_tree(): Remove.
        
        dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
        and remove the parameter, which was unused.
        
        btr_level_list_remove(): Remove the unused parameter "tree".
        
        Replace the occurrences of "tree" with "index" in names of variables,
        functions and data types, e.g. "dict_tree_t tree" becomes
        "dict_index_t index".  Remove local variables "tree" or "index" of
        functions that needed both "tree" and "index".
        
        
        Revision r831:
        Add dict_col_get_clust_pos_noninline(), which was forgotten from r820.
        
        
        Revision r832:
        Add dict_table_get_col_name() in preparation for getting rid of
        dict_col_t::name, and use it instead of col->name everywhere.
        
        Revision r834:
        dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
        so that all integer fields can be packed into 64 bits.  (Bug #20877)
        
        dtype_t: Change the type of all bit-fields to unsigned.
        
        dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
        dict_table_get_sys_col(), dict_field_get_col(): Return const
        dict_col_t*, so that changes to dict_col_t can be detected more
        easily.  Add const to many dict_col_t* declarations.
        
        dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
        
        dict_col_get_type(): Replace with dict_col_copy_type().
        
        dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
        dict_col_get_sql_null_size(): New functions.
        
        dtype_get_at_most_n_mbchars(): Replace the parameter dtype
        with the parameters prtype, mbminlen, mbmaxlen.
        
        dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
        cmp_whole_field(): Replace the dtype_t* parameter with the ulint
        parameters mtype, prtype.
        
        dtype_copy(): Add a const qualifier to type2 (the one being copied from).
        
        dtype_set_mblen(): Replaced with dtype_get_mblen().
        
        dtype_get_fixed_size_low(), dtype_get_min_size_low(),
        dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
        dtype_get_min_size(), and dtype_get_max_size().  These are used by the
        dict_col_get_{fixed,min,max}_size() functions.
        
        cmp_types_are_equal(): Replace with cmp_cols_are_equal().
        
        dict_table_get_col_name(): Add a const qualifier parameter to the
        parameter "table".
        
        dtype_binary, dtype_binary_val: Remove.
        
        dtype_is_fixed_size(): Remove.
        
        
        Revision r836:
        Remove dict_col_t::name, replace it with a packed array of column names in
        dict_table_t. This saves 8-15+ bytes of memory per column on 64-bit
        machines.
      storage/innobase/include/dict0dict.ic:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r813:
        Reduce the size of the data dictionary cache.  (Bug #20877)
        
        dtype_t: Remove unused field "prec", which was supposed to be used for
        the precision of decimal columns in stand-alone InnoDB.
        
        dtype_get_prec(): Remove.
        
        dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
        
        dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
        into bit-fields.
        
        dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
        
        dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
        
        Replace the default clust_pos value ULINT_UNDEFINED with
        REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
        the accessor function dict_col_get_clust_pos().
        
        dict_field_t: Turn prefix_len and fixed_len into bit-fields.
        
        dict_tree_t: Remove pad[64].
        
        dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
        cached, flags, stat_initialized, and autoinc_inited into bit-fields.
        Remove does_not_fit_in_memory from non-debug builds.
        
        dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
        n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
        
        dict_foreign_struct: Turn n_fields and type into bit-fields.
        
        rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
        Omit level unless #defined UNIV_SYNC_DEBUG.
        
        Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
        from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
        dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
        
        
        Revision r820:
        Remove dict_col_t::clust_pos.
        
        dict_col_get_clust_pos(): Add parameter clust_index.  Replace the
        look-up with a linear search of all columns in the clustered index.
        
        row_upd_index_replace_new_col_vals(): Compute clust_index outside
        the loops.  Compute clust_pos outside the inner loop.
        
        row_upd_changes_ord_field_binary(), row_upd_changes_first_fields_binary():
        Compute clust_index outside the loops.  Declare the auxiliary variables
        inside the loop scope.
        
        
        Revision r828:
        Remove dict_tree_t, which should have been removed in r453.
        There always was a one-to-one mapping between dict_tree_t and dict_index_t.
        
        This saves 6 machine words per B-tree index in the data dictionary
        cache plus the memory allocation overhead.  We save one mem_heap_t
        object per index (15 machine words).  Considering the internal
        fragmentation of the buddy allocator in mem_area_alloc(), this should
        save 32 machine words per index (128 bytes on 32-bit systems and 256
        bytes on 64-bit systems).  (Bug #20877)
        
        struct dict_tree_struct, dict_tree_t: Remove.
        
        struct dict_index_struct: Add page and lock.
        
        dict_tree_create(): Remove.  Replace the invocation with
        assignment to index->page and a call to rw_lock_create(&index->lock).
        
        dict_tree_free(): Remove.  Replace the invocation wtih
        a call to rw_lock_free(&index->lock).
        
        dict_index_get_tree(): Remove.
        
        dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
        and remove the parameter, which was unused.
        
        btr_level_list_remove(): Remove the unused parameter "tree".
        
        Replace the occurrences of "tree" with "index" in names of variables,
        functions and data types, e.g. "dict_tree_t tree" becomes
        "dict_index_t index".  Remove local variables "tree" or "index" of
        functions that needed both "tree" and "index".
        
        
        Revision r834:
        dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
        so that all integer fields can be packed into 64 bits.  (Bug #20877)
        
        dtype_t: Change the type of all bit-fields to unsigned.
        
        dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
        dict_table_get_sys_col(), dict_field_get_col(): Return const
        dict_col_t*, so that changes to dict_col_t can be detected more
        easily.  Add const to many dict_col_t* declarations.
        
        dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
        
        dict_col_get_type(): Replace with dict_col_copy_type().
        
        dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
        dict_col_get_sql_null_size(): New functions.
        
        dtype_get_at_most_n_mbchars(): Replace the parameter dtype
        with the parameters prtype, mbminlen, mbmaxlen.
        
        dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
        cmp_whole_field(): Replace the dtype_t* parameter with the ulint
        parameters mtype, prtype.
        
        dtype_copy(): Add a const qualifier to type2 (the one being copied from).
        
        dtype_set_mblen(): Replaced with dtype_get_mblen().
        
        dtype_get_fixed_size_low(), dtype_get_min_size_low(),
        dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
        dtype_get_min_size(), and dtype_get_max_size().  These are used by the
        dict_col_get_{fixed,min,max}_size() functions.
        
        cmp_types_are_equal(): Replace with cmp_cols_are_equal().
        
        dict_table_get_col_name(): Add a const qualifier parameter to the
        parameter "table".
        
        dtype_binary, dtype_binary_val: Remove.
        
        dtype_is_fixed_size(): Remove.
      storage/innobase/include/dict0mem.h:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r813:
        Reduce the size of the data dictionary cache.  (Bug #20877)
        
        dtype_t: Remove unused field "prec", which was supposed to be used for
        the precision of decimal columns in stand-alone InnoDB.
        
        dtype_get_prec(): Remove.
        
        dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
        
        dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
        into bit-fields.
        
        dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
        
        dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
        
        Replace the default clust_pos value ULINT_UNDEFINED with
        REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
        the accessor function dict_col_get_clust_pos().
        
        dict_field_t: Turn prefix_len and fixed_len into bit-fields.
        
        dict_tree_t: Remove pad[64].
        
        dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
        cached, flags, stat_initialized, and autoinc_inited into bit-fields.
        Remove does_not_fit_in_memory from non-debug builds.
        
        dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
        n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
        
        dict_foreign_struct: Turn n_fields and type into bit-fields.
        
        rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
        Omit level unless #defined UNIV_SYNC_DEBUG.
        
        Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
        from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
        dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
        
        
        Revision r815:
        dict_index_t: Remove tree_indexes.  It should have been removed in r453
        when the list in dict_tree_t was replaced with the pointer tree_index.
        
        
        Revision r818:
        Remove dict_col_t::hash, dict_col_t::table,
        dict_sys->col_hash, and DICT_POOL_PER_COL_HASH.  (Bug #20877)
        
        The col->table pointer was only needed for maintaining a hash table of
        all defined columns in all tables.  The hash table was only looked up
        in dict_index_find_cols().  Removing the col->hash and col->table
        pointers reduces the size of a table column by two machine words
        (usually 8 or 16 bytes).
        
        dict_col_add_to_cache(), dict_col_reposition_in_cache(),
        dict_col_remove_from_cache(): Remove.  These only updated dict_sys->col_hash.
        
        dict_index_find_cols(): Use a linear search instead of the hash table.
        The time complexity is affected, but this function is only invoked by
        dict_index_add_to_cache(), and we only search the columns of a single
        table (typically at most a few dozen) as opposed to all columns of all
        tables.
        
        
        Revision r819:
        dict_col_t: Reduce ord_part to one bit.
        
        dict_index_add_to_cache(): Instead of incrementing ord_part, set it.
        
        dict_index_remove_from_cache(): Do not touch ord_part.
        
        dtype_t: Reduce mbminlen from 3 to 2 bits.
        
        row_upd(): Add a UNIV_LIKELY hint around node->in_mysql_interface.
        
        
        Revision r820:
        Remove dict_col_t::clust_pos.
        
        dict_col_get_clust_pos(): Add parameter clust_index.  Replace the
        look-up with a linear search of all columns in the clustered index.
        
        row_upd_index_replace_new_col_vals(): Compute clust_index outside
        the loops.  Compute clust_pos outside the inner loop.
        
        row_upd_changes_ord_field_binary(), row_upd_changes_first_fields_binary():
        Compute clust_index outside the loops.  Declare the auxiliary variables
        inside the loop scope.
        
        
        Revision r821:
        dict_table_t: Rename the integer field max_row_size
        to the Boolean field big_rows.  (Bug #20877)
        
        BIG_ROW_SIZE: Move the definition from row0sel.c to dict_table_add_to_cache().
        
        
        Revision r828:
        Remove dict_tree_t, which should have been removed in r453.
        There always was a one-to-one mapping between dict_tree_t and dict_index_t.
        
        This saves 6 machine words per B-tree index in the data dictionary
        cache plus the memory allocation overhead.  We save one mem_heap_t
        object per index (15 machine words).  Considering the internal
        fragmentation of the buddy allocator in mem_area_alloc(), this should
        save 32 machine words per index (128 bytes on 32-bit systems and 256
        bytes on 64-bit systems).  (Bug #20877)
        
        struct dict_tree_struct, dict_tree_t: Remove.
        
        struct dict_index_struct: Add page and lock.
        
        dict_tree_create(): Remove.  Replace the invocation with
        assignment to index->page and a call to rw_lock_create(&index->lock).
        
        dict_tree_free(): Remove.  Replace the invocation wtih
        a call to rw_lock_free(&index->lock).
        
        dict_index_get_tree(): Remove.
        
        dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
        and remove the parameter, which was unused.
        
        btr_level_list_remove(): Remove the unused parameter "tree".
        
        Replace the occurrences of "tree" with "index" in names of variables,
        functions and data types, e.g. "dict_tree_t tree" becomes
        "dict_index_t index".  Remove local variables "tree" or "index" of
        functions that needed both "tree" and "index".
        
        
        Revision r833:
        Tweak the bit-field definitions introduced since r813 to address Bug #20877.
        
        rw_lock_t: Do not make writer_is_wait_ex a bit-field.  There are no fields
        yet that could be fused to the same machine word, but we play it safe,
        because the field writer_is_wait_ex may be modified by several threads
        simultaneously.  Such fields should always be allocated an own machine
        word.
        
        dict_table_t: Change the type of all bit-fields to "unsigned".  Make
        "space" a bit-field of 32 bits.  Move name_hash and id_hash after all
        bit-fields, so that the bit-fields can be allocated together.  Do not
        make autoinc_inited a bit-field, as we cannot allocate any field
        from the same machine word.
        
        dict_build_table_def_step(): Pass a local variable to
        fil_create_new_single_table_tablespace() and initialize table->space
        from it after the call, now that table->space is a bit-field.
        
        
        Revision r834:
        dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
        so that all integer fields can be packed into 64 bits.  (Bug #20877)
        
        dtype_t: Change the type of all bit-fields to unsigned.
        
        dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
        dict_table_get_sys_col(), dict_field_get_col(): Return const
        dict_col_t*, so that changes to dict_col_t can be detected more
        easily.  Add const to many dict_col_t* declarations.
        
        dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
        
        dict_col_get_type(): Replace with dict_col_copy_type().
        
        dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
        dict_col_get_sql_null_size(): New functions.
        
        dtype_get_at_most_n_mbchars(): Replace the parameter dtype
        with the parameters prtype, mbminlen, mbmaxlen.
        
        dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
        cmp_whole_field(): Replace the dtype_t* parameter with the ulint
        parameters mtype, prtype.
        
        dtype_copy(): Add a const qualifier to type2 (the one being copied from).
        
        dtype_set_mblen(): Replaced with dtype_get_mblen().
        
        dtype_get_fixed_size_low(), dtype_get_min_size_low(),
        dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
        dtype_get_min_size(), and dtype_get_max_size().  These are used by the
        dict_col_get_{fixed,min,max}_size() functions.
        
        cmp_types_are_equal(): Replace with cmp_cols_are_equal().
        
        dict_table_get_col_name(): Add a const qualifier parameter to the
        parameter "table".
        
        dtype_binary, dtype_binary_val: Remove.
        
        dtype_is_fixed_size(): Remove.
        
        
        Revision r835:
        Change the recently introduced ulint bit-fields to unsigned.
        
        
        Revision r836:
        Remove dict_col_t::name, replace it with a packed array of column names in
        dict_table_t. This saves 8-15+ bytes of memory per column on 64-bit
        machines.
      storage/innobase/include/dict0types.h:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r828:
        Remove dict_tree_t, which should have been removed in r453.
        There always was a one-to-one mapping between dict_tree_t and dict_index_t.
        
        This saves 6 machine words per B-tree index in the data dictionary
        cache plus the memory allocation overhead.  We save one mem_heap_t
        object per index (15 machine words).  Considering the internal
        fragmentation of the buddy allocator in mem_area_alloc(), this should
        save 32 machine words per index (128 bytes on 32-bit systems and 256
        bytes on 64-bit systems).  (Bug #20877)
        
        struct dict_tree_struct, dict_tree_t: Remove.
        
        struct dict_index_struct: Add page and lock.
        
        dict_tree_create(): Remove.  Replace the invocation with
        assignment to index->page and a call to rw_lock_create(&index->lock).
        
        dict_tree_free(): Remove.  Replace the invocation wtih
        a call to rw_lock_free(&index->lock).
        
        dict_index_get_tree(): Remove.
        
        dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
        and remove the parameter, which was unused.
        
        btr_level_list_remove(): Remove the unused parameter "tree".
        
        Replace the occurrences of "tree" with "index" in names of variables,
        functions and data types, e.g. "dict_tree_t tree" becomes
        "dict_index_t index".  Remove local variables "tree" or "index" of
        functions that needed both "tree" and "index".
      storage/innobase/include/ibuf0ibuf.ic:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/include/page0page.h:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r830:
        page_align(ptr): New utility function to replace
        ut_align_down(ptr, UNIV_PAGE_SIZE) calls.
        
        
        Revision r837:
        page_offset(): New function to replace many ut_align_offset(., UNIV_PAGE_SIZE)
        calls.
        
        dict_index_build_node_ptr(): Correct a typo in a comment.
      storage/innobase/include/page0page.ic:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r830:
        page_align(ptr): New utility function to replace
        ut_align_down(ptr, UNIV_PAGE_SIZE) calls.
        
        
        Revision r837:
        page_offset(): New function to replace many ut_align_offset(., UNIV_PAGE_SIZE)
        calls.
        
        dict_index_build_node_ptr(): Correct a typo in a comment.
        
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/include/read0read.ic:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/include/rem0cmp.h:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r834:
        dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
        so that all integer fields can be packed into 64 bits.  (Bug #20877)
        
        dtype_t: Change the type of all bit-fields to unsigned.
        
        dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
        dict_table_get_sys_col(), dict_field_get_col(): Return const
        dict_col_t*, so that changes to dict_col_t can be detected more
        easily.  Add const to many dict_col_t* declarations.
        
        dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
        
        dict_col_get_type(): Replace with dict_col_copy_type().
        
        dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
        dict_col_get_sql_null_size(): New functions.
        
        dtype_get_at_most_n_mbchars(): Replace the parameter dtype
        with the parameters prtype, mbminlen, mbmaxlen.
        
        dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
        cmp_whole_field(): Replace the dtype_t* parameter with the ulint
        parameters mtype, prtype.
        
        dtype_copy(): Add a const qualifier to type2 (the one being copied from).
        
        dtype_set_mblen(): Replaced with dtype_get_mblen().
        
        dtype_get_fixed_size_low(), dtype_get_min_size_low(),
        dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
        dtype_get_min_size(), and dtype_get_max_size().  These are used by the
        dict_col_get_{fixed,min,max}_size() functions.
        
        cmp_types_are_equal(): Replace with cmp_cols_are_equal().
        
        dict_table_get_col_name(): Add a const qualifier parameter to the
        parameter "table".
        
        dtype_binary, dtype_binary_val: Remove.
        
        dtype_is_fixed_size(): Remove.
      storage/innobase/include/rem0cmp.ic:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r834:
        dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
        so that all integer fields can be packed into 64 bits.  (Bug #20877)
        
        dtype_t: Change the type of all bit-fields to unsigned.
        
        dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
        dict_table_get_sys_col(), dict_field_get_col(): Return const
        dict_col_t*, so that changes to dict_col_t can be detected more
        easily.  Add const to many dict_col_t* declarations.
        
        dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
        
        dict_col_get_type(): Replace with dict_col_copy_type().
        
        dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
        dict_col_get_sql_null_size(): New functions.
        
        dtype_get_at_most_n_mbchars(): Replace the parameter dtype
        with the parameters prtype, mbminlen, mbmaxlen.
        
        dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
        cmp_whole_field(): Replace the dtype_t* parameter with the ulint
        parameters mtype, prtype.
        
        dtype_copy(): Add a const qualifier to type2 (the one being copied from).
        
        dtype_set_mblen(): Replaced with dtype_get_mblen().
        
        dtype_get_fixed_size_low(), dtype_get_min_size_low(),
        dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
        dtype_get_min_size(), and dtype_get_max_size().  These are used by the
        dict_col_get_{fixed,min,max}_size() functions.
        
        cmp_types_are_equal(): Replace with cmp_cols_are_equal().
        
        dict_table_get_col_name(): Add a const qualifier parameter to the
        parameter "table".
        
        dtype_binary, dtype_binary_val: Remove.
        
        dtype_is_fixed_size(): Remove.
      storage/innobase/include/rem0rec.h:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r813:
        Reduce the size of the data dictionary cache.  (Bug #20877)
        
        dtype_t: Remove unused field "prec", which was supposed to be used for
        the precision of decimal columns in stand-alone InnoDB.
        
        dtype_get_prec(): Remove.
        
        dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
        
        dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
        into bit-fields.
        
        dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
        
        dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
        
        Replace the default clust_pos value ULINT_UNDEFINED with
        REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
        the accessor function dict_col_get_clust_pos().
        
        dict_field_t: Turn prefix_len and fixed_len into bit-fields.
        
        dict_tree_t: Remove pad[64].
        
        dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
        cached, flags, stat_initialized, and autoinc_inited into bit-fields.
        Remove does_not_fit_in_memory from non-debug builds.
        
        dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
        n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
        
        dict_foreign_struct: Turn n_fields and type into bit-fields.
        
        rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
        Omit level unless #defined UNIV_SYNC_DEBUG.
        
        Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
        from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
        dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
      storage/innobase/include/rem0rec.ic:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/include/rem0types.h:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r813:
        Reduce the size of the data dictionary cache.  (Bug #20877)
        
        dtype_t: Remove unused field "prec", which was supposed to be used for
        the precision of decimal columns in stand-alone InnoDB.
        
        dtype_get_prec(): Remove.
        
        dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
        
        dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
        into bit-fields.
        
        dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
        
        dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
        
        Replace the default clust_pos value ULINT_UNDEFINED with
        REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
        the accessor function dict_col_get_clust_pos().
        
        dict_field_t: Turn prefix_len and fixed_len into bit-fields.
        
        dict_tree_t: Remove pad[64].
        
        dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
        cached, flags, stat_initialized, and autoinc_inited into bit-fields.
        Remove does_not_fit_in_memory from non-debug builds.
        
        dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
        n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
        
        dict_foreign_struct: Turn n_fields and type into bit-fields.
        
        rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
        Omit level unless #defined UNIV_SYNC_DEBUG.
        
        Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
        from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
        dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
      storage/innobase/include/row0upd.ic:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r834:
        dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
        so that all integer fields can be packed into 64 bits.  (Bug #20877)
        
        dtype_t: Change the type of all bit-fields to unsigned.
        
        dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
        dict_table_get_sys_col(), dict_field_get_col(): Return const
        dict_col_t*, so that changes to dict_col_t can be detected more
        easily.  Add const to many dict_col_t* declarations.
        
        dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
        
        dict_col_get_type(): Replace with dict_col_copy_type().
        
        dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
        dict_col_get_sql_null_size(): New functions.
        
        dtype_get_at_most_n_mbchars(): Replace the parameter dtype
        with the parameters prtype, mbminlen, mbmaxlen.
        
        dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
        cmp_whole_field(): Replace the dtype_t* parameter with the ulint
        parameters mtype, prtype.
        
        dtype_copy(): Add a const qualifier to type2 (the one being copied from).
        
        dtype_set_mblen(): Replaced with dtype_get_mblen().
        
        dtype_get_fixed_size_low(), dtype_get_min_size_low(),
        dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
        dtype_get_min_size(), and dtype_get_max_size().  These are used by the
        dict_col_get_{fixed,min,max}_size() functions.
        
        cmp_types_are_equal(): Replace with cmp_cols_are_equal().
        
        dict_table_get_col_name(): Add a const qualifier parameter to the
        parameter "table".
        
        dtype_binary, dtype_binary_val: Remove.
        
        dtype_is_fixed_size(): Remove.
      storage/innobase/include/sync0rw.h:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r813:
        Reduce the size of the data dictionary cache.  (Bug #20877)
        
        dtype_t: Remove unused field "prec", which was supposed to be used for
        the precision of decimal columns in stand-alone InnoDB.
        
        dtype_get_prec(): Remove.
        
        dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
        
        dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
        into bit-fields.
        
        dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
        
        dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
        
        Replace the default clust_pos value ULINT_UNDEFINED with
        REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
        the accessor function dict_col_get_clust_pos().
        
        dict_field_t: Turn prefix_len and fixed_len into bit-fields.
        
        dict_tree_t: Remove pad[64].
        
        dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
        cached, flags, stat_initialized, and autoinc_inited into bit-fields.
        Remove does_not_fit_in_memory from non-debug builds.
        
        dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
        n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
        
        dict_foreign_struct: Turn n_fields and type into bit-fields.
        
        rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
        Omit level unless #defined UNIV_SYNC_DEBUG.
        
        Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
        from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
        dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
        
        
        Revision r823:
        Minor cleanup related to Bug #20877.
        
        btr_print_recursive(): Replace tree->tree_indexes with tree->index.
        This should have been done in r453.
        
        univ.i: Add UNIV_BTR_PRINT.
        
        rw_lock_t: Reduce writer_is_wait_ex to a bit and move it close to
        other bitfields.  Change the types to unsigned, in case ulint or ibool
        bitfields will not work.
        
        
        Revision r833:
        Tweak the bit-field definitions introduced since r813 to address Bug #20877.
        
        rw_lock_t: Do not make writer_is_wait_ex a bit-field.  There are no fields
        yet that could be fused to the same machine word, but we play it safe,
        because the field writer_is_wait_ex may be modified by several threads
        simultaneously.  Such fields should always be allocated an own machine
        word.
        
        dict_table_t: Change the type of all bit-fields to "unsigned".  Make
        "space" a bit-field of 32 bits.  Move name_hash and id_hash after all
        bit-fields, so that the bit-fields can be allocated together.  Do not
        make autoinc_inited a bit-field, as we cannot allocate any field
        from the same machine word.
        
        dict_build_table_def_step(): Pass a local variable to
        fil_create_new_single_table_tablespace() and initialize table->space
        from it after the call, now that table->space is a bit-field.
      storage/innobase/include/univ.i:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r823:
        Minor cleanup related to Bug #20877.
        
        btr_print_recursive(): Replace tree->tree_indexes with tree->index.
        This should have been done in r453.
        
        univ.i: Add UNIV_BTR_PRINT.
        
        rw_lock_t: Reduce writer_is_wait_ex to a bit and move it close to
        other bitfields.  Change the types to unsigned, in case ulint or ibool
        bitfields will not work.
      storage/innobase/lock/lock0lock.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/log/log0log.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/log/log0recv.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/mem/mem0dbg.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/mem/mem0pool.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/mtr/mtr0log.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r813:
        Reduce the size of the data dictionary cache.  (Bug #20877)
        
        dtype_t: Remove unused field "prec", which was supposed to be used for
        the precision of decimal columns in stand-alone InnoDB.
        
        dtype_get_prec(): Remove.
        
        dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
        
        dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
        into bit-fields.
        
        dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
        
        dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
        
        Replace the default clust_pos value ULINT_UNDEFINED with
        REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
        the accessor function dict_col_get_clust_pos().
        
        dict_field_t: Turn prefix_len and fixed_len into bit-fields.
        
        dict_tree_t: Remove pad[64].
        
        dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
        cached, flags, stat_initialized, and autoinc_inited into bit-fields.
        Remove does_not_fit_in_memory from non-debug builds.
        
        dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
        n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
        
        dict_foreign_struct: Turn n_fields and type into bit-fields.
        
        rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
        Omit level unless #defined UNIV_SYNC_DEBUG.
        
        Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
        from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
        dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
        
        
        Revision r832:
        Add dict_table_get_col_name() in preparation for getting rid of
        dict_col_t::name, and use it instead of col->name everywhere.
        
        Revision r834:
        dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
        so that all integer fields can be packed into 64 bits.  (Bug #20877)
        
        dtype_t: Change the type of all bit-fields to unsigned.
        
        dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
        dict_table_get_sys_col(), dict_field_get_col(): Return const
        dict_col_t*, so that changes to dict_col_t can be detected more
        easily.  Add const to many dict_col_t* declarations.
        
        dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
        
        dict_col_get_type(): Replace with dict_col_copy_type().
        
        dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
        dict_col_get_sql_null_size(): New functions.
        
        dtype_get_at_most_n_mbchars(): Replace the parameter dtype
        with the parameters prtype, mbminlen, mbmaxlen.
        
        dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
        cmp_whole_field(): Replace the dtype_t* parameter with the ulint
        parameters mtype, prtype.
        
        dtype_copy(): Add a const qualifier to type2 (the one being copied from).
        
        dtype_set_mblen(): Replaced with dtype_get_mblen().
        
        dtype_get_fixed_size_low(), dtype_get_min_size_low(),
        dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
        dtype_get_min_size(), and dtype_get_max_size().  These are used by the
        dict_col_get_{fixed,min,max}_size() functions.
        
        cmp_types_are_equal(): Replace with cmp_cols_are_equal().
        
        dict_table_get_col_name(): Add a const qualifier parameter to the
        parameter "table".
        
        dtype_binary, dtype_binary_val: Remove.
        
        dtype_is_fixed_size(): Remove.
        
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/mtr/mtr0mtr.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/os/os0file.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/os/os0thread.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/page/page0cur.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r837:
        page_offset(): New function to replace many ut_align_offset(., UNIV_PAGE_SIZE)
        calls.
        
        dict_index_build_node_ptr(): Correct a typo in a comment.
        
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/page/page0page.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r813:
        Reduce the size of the data dictionary cache.  (Bug #20877)
        
        dtype_t: Remove unused field "prec", which was supposed to be used for
        the precision of decimal columns in stand-alone InnoDB.
        
        dtype_get_prec(): Remove.
        
        dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
        
        dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
        into bit-fields.
        
        dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
        
        dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
        
        Replace the default clust_pos value ULINT_UNDEFINED with
        REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
        the accessor function dict_col_get_clust_pos().
        
        dict_field_t: Turn prefix_len and fixed_len into bit-fields.
        
        dict_tree_t: Remove pad[64].
        
        dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
        cached, flags, stat_initialized, and autoinc_inited into bit-fields.
        Remove does_not_fit_in_memory from non-debug builds.
        
        dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
        n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
        
        dict_foreign_struct: Turn n_fields and type into bit-fields.
        
        rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
        Omit level unless #defined UNIV_SYNC_DEBUG.
        
        Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
        from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
        dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
        
        
        Revision r837:
        page_offset(): New function to replace many ut_align_offset(., UNIV_PAGE_SIZE)
        calls.
        
        dict_index_build_node_ptr(): Correct a typo in a comment.
      storage/innobase/pars/pars0opt.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/pars/pars0pars.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r813:
        Reduce the size of the data dictionary cache.  (Bug #20877)
        
        dtype_t: Remove unused field "prec", which was supposed to be used for
        the precision of decimal columns in stand-alone InnoDB.
        
        dtype_get_prec(): Remove.
        
        dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
        
        dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
        into bit-fields.
        
        dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
        
        dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
        
        Replace the default clust_pos value ULINT_UNDEFINED with
        REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
        the accessor function dict_col_get_clust_pos().
        
        dict_field_t: Turn prefix_len and fixed_len into bit-fields.
        
        dict_tree_t: Remove pad[64].
        
        dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
        cached, flags, stat_initialized, and autoinc_inited into bit-fields.
        Remove does_not_fit_in_memory from non-debug builds.
        
        dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
        n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
        
        dict_foreign_struct: Turn n_fields and type into bit-fields.
        
        rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
        Omit level unless #defined UNIV_SYNC_DEBUG.
        
        Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
        from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
        dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
        
        
        Revision r832:
        Add dict_table_get_col_name() in preparation for getting rid of
        dict_col_t::name, and use it instead of col->name everywhere.
        
        Revision r834:
        dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
        so that all integer fields can be packed into 64 bits.  (Bug #20877)
        
        dtype_t: Change the type of all bit-fields to unsigned.
        
        dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
        dict_table_get_sys_col(), dict_field_get_col(): Return const
        dict_col_t*, so that changes to dict_col_t can be detected more
        easily.  Add const to many dict_col_t* declarations.
        
        dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
        
        dict_col_get_type(): Replace with dict_col_copy_type().
        
        dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
        dict_col_get_sql_null_size(): New functions.
        
        dtype_get_at_most_n_mbchars(): Replace the parameter dtype
        with the parameters prtype, mbminlen, mbmaxlen.
        
        dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
        cmp_whole_field(): Replace the dtype_t* parameter with the ulint
        parameters mtype, prtype.
        
        dtype_copy(): Add a const qualifier to type2 (the one being copied from).
        
        dtype_set_mblen(): Replaced with dtype_get_mblen().
        
        dtype_get_fixed_size_low(), dtype_get_min_size_low(),
        dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
        dtype_get_min_size(), and dtype_get_max_size().  These are used by the
        dict_col_get_{fixed,min,max}_size() functions.
        
        cmp_types_are_equal(): Replace with cmp_cols_are_equal().
        
        dict_table_get_col_name(): Add a const qualifier parameter to the
        parameter "table".
        
        dtype_binary, dtype_binary_val: Remove.
        
        dtype_is_fixed_size(): Remove.
        
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/pars/pars0sym.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r813:
        Reduce the size of the data dictionary cache.  (Bug #20877)
        
        dtype_t: Remove unused field "prec", which was supposed to be used for
        the precision of decimal columns in stand-alone InnoDB.
        
        dtype_get_prec(): Remove.
        
        dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
        
        dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
        into bit-fields.
        
        dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
        
        dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
        
        Replace the default clust_pos value ULINT_UNDEFINED with
        REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
        the accessor function dict_col_get_clust_pos().
        
        dict_field_t: Turn prefix_len and fixed_len into bit-fields.
        
        dict_tree_t: Remove pad[64].
        
        dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
        cached, flags, stat_initialized, and autoinc_inited into bit-fields.
        Remove does_not_fit_in_memory from non-debug builds.
        
        dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
        n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
        
        dict_foreign_struct: Turn n_fields and type into bit-fields.
        
        rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
        Omit level unless #defined UNIV_SYNC_DEBUG.
        
        Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
        from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
        dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
      storage/innobase/read/read0read.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/rem/rem0cmp.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r834:
        dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
        so that all integer fields can be packed into 64 bits.  (Bug #20877)
        
        dtype_t: Change the type of all bit-fields to unsigned.
        
        dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
        dict_table_get_sys_col(), dict_field_get_col(): Return const
        dict_col_t*, so that changes to dict_col_t can be detected more
        easily.  Add const to many dict_col_t* declarations.
        
        dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
        
        dict_col_get_type(): Replace with dict_col_copy_type().
        
        dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
        dict_col_get_sql_null_size(): New functions.
        
        dtype_get_at_most_n_mbchars(): Replace the parameter dtype
        with the parameters prtype, mbminlen, mbmaxlen.
        
        dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
        cmp_whole_field(): Replace the dtype_t* parameter with the ulint
        parameters mtype, prtype.
        
        dtype_copy(): Add a const qualifier to type2 (the one being copied from).
        
        dtype_set_mblen(): Replaced with dtype_get_mblen().
        
        dtype_get_fixed_size_low(), dtype_get_min_size_low(),
        dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
        dtype_get_min_size(), and dtype_get_max_size().  These are used by the
        dict_col_get_{fixed,min,max}_size() functions.
        
        cmp_types_are_equal(): Replace with cmp_cols_are_equal().
        
        dict_table_get_col_name(): Add a const qualifier parameter to the
        parameter "table".
        
        dtype_binary, dtype_binary_val: Remove.
        
        dtype_is_fixed_size(): Remove.
        
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/rem/rem0rec.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r834:
        dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
        so that all integer fields can be packed into 64 bits.  (Bug #20877)
        
        dtype_t: Change the type of all bit-fields to unsigned.
        
        dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
        dict_table_get_sys_col(), dict_field_get_col(): Return const
        dict_col_t*, so that changes to dict_col_t can be detected more
        easily.  Add const to many dict_col_t* declarations.
        
        dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
        
        dict_col_get_type(): Replace with dict_col_copy_type().
        
        dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
        dict_col_get_sql_null_size(): New functions.
        
        dtype_get_at_most_n_mbchars(): Replace the parameter dtype
        with the parameters prtype, mbminlen, mbmaxlen.
        
        dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
        cmp_whole_field(): Replace the dtype_t* parameter with the ulint
        parameters mtype, prtype.
        
        dtype_copy(): Add a const qualifier to type2 (the one being copied from).
        
        dtype_set_mblen(): Replaced with dtype_get_mblen().
        
        dtype_get_fixed_size_low(), dtype_get_min_size_low(),
        dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
        dtype_get_min_size(), and dtype_get_max_size().  These are used by the
        dict_col_get_{fixed,min,max}_size() functions.
        
        cmp_types_are_equal(): Replace with cmp_cols_are_equal().
        
        dict_table_get_col_name(): Add a const qualifier parameter to the
        parameter "table".
        
        dtype_binary, dtype_binary_val: Remove.
        
        dtype_is_fixed_size(): Remove.
        
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/row/row0ins.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r834:
        dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
        so that all integer fields can be packed into 64 bits.  (Bug #20877)
        
        dtype_t: Change the type of all bit-fields to unsigned.
        
        dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
        dict_table_get_sys_col(), dict_field_get_col(): Return const
        dict_col_t*, so that changes to dict_col_t can be detected more
        easily.  Add const to many dict_col_t* declarations.
        
        dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
        
        dict_col_get_type(): Replace with dict_col_copy_type().
        
        dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
        dict_col_get_sql_null_size(): New functions.
        
        dtype_get_at_most_n_mbchars(): Replace the parameter dtype
        with the parameters prtype, mbminlen, mbmaxlen.
        
        dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
        cmp_whole_field(): Replace the dtype_t* parameter with the ulint
        parameters mtype, prtype.
        
        dtype_copy(): Add a const qualifier to type2 (the one being copied from).
        
        dtype_set_mblen(): Replaced with dtype_get_mblen().
        
        dtype_get_fixed_size_low(), dtype_get_min_size_low(),
        dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
        dtype_get_min_size(), and dtype_get_max_size().  These are used by the
        dict_col_get_{fixed,min,max}_size() functions.
        
        cmp_types_are_equal(): Replace with cmp_cols_are_equal().
        
        dict_table_get_col_name(): Add a const qualifier parameter to the
        parameter "table".
        
        dtype_binary, dtype_binary_val: Remove.
        
        dtype_is_fixed_size(): Remove.
        
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/row/row0mysql.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r828:
        Remove dict_tree_t, which should have been removed in r453.
        There always was a one-to-one mapping between dict_tree_t and dict_index_t.
        
        This saves 6 machine words per B-tree index in the data dictionary
        cache plus the memory allocation overhead.  We save one mem_heap_t
        object per index (15 machine words).  Considering the internal
        fragmentation of the buddy allocator in mem_area_alloc(), this should
        save 32 machine words per index (128 bytes on 32-bit systems and 256
        bytes on 64-bit systems).  (Bug #20877)
        
        struct dict_tree_struct, dict_tree_t: Remove.
        
        struct dict_index_struct: Add page and lock.
        
        dict_tree_create(): Remove.  Replace the invocation with
        assignment to index->page and a call to rw_lock_create(&index->lock).
        
        dict_tree_free(): Remove.  Replace the invocation wtih
        a call to rw_lock_free(&index->lock).
        
        dict_index_get_tree(): Remove.
        
        dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
        and remove the parameter, which was unused.
        
        btr_level_list_remove(): Remove the unused parameter "tree".
        
        Replace the occurrences of "tree" with "index" in names of variables,
        functions and data types, e.g. "dict_tree_t tree" becomes
        "dict_index_t index".  Remove local variables "tree" or "index" of
        functions that needed both "tree" and "index".
        
        
        Revision r832:
        Add dict_table_get_col_name() in preparation for getting rid of
        dict_col_t::name, and use it instead of col->name everywhere.
        
        Revision r834:
        dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
        so that all integer fields can be packed into 64 bits.  (Bug #20877)
        
        dtype_t: Change the type of all bit-fields to unsigned.
        
        dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
        dict_table_get_sys_col(), dict_field_get_col(): Return const
        dict_col_t*, so that changes to dict_col_t can be detected more
        easily.  Add const to many dict_col_t* declarations.
        
        dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
        
        dict_col_get_type(): Replace with dict_col_copy_type().
        
        dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
        dict_col_get_sql_null_size(): New functions.
        
        dtype_get_at_most_n_mbchars(): Replace the parameter dtype
        with the parameters prtype, mbminlen, mbmaxlen.
        
        dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
        cmp_whole_field(): Replace the dtype_t* parameter with the ulint
        parameters mtype, prtype.
        
        dtype_copy(): Add a const qualifier to type2 (the one being copied from).
        
        dtype_set_mblen(): Replaced with dtype_get_mblen().
        
        dtype_get_fixed_size_low(), dtype_get_min_size_low(),
        dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
        dtype_get_min_size(), and dtype_get_max_size().  These are used by the
        dict_col_get_{fixed,min,max}_size() functions.
        
        cmp_types_are_equal(): Replace with cmp_cols_are_equal().
        
        dict_table_get_col_name(): Add a const qualifier parameter to the
        parameter "table".
        
        dtype_binary, dtype_binary_val: Remove.
        
        dtype_is_fixed_size(): Remove.
        
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/row/row0purge.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r828:
        Remove dict_tree_t, which should have been removed in r453.
        There always was a one-to-one mapping between dict_tree_t and dict_index_t.
        
        This saves 6 machine words per B-tree index in the data dictionary
        cache plus the memory allocation overhead.  We save one mem_heap_t
        object per index (15 machine words).  Considering the internal
        fragmentation of the buddy allocator in mem_area_alloc(), this should
        save 32 machine words per index (128 bytes on 32-bit systems and 256
        bytes on 64-bit systems).  (Bug #20877)
        
        struct dict_tree_struct, dict_tree_t: Remove.
        
        struct dict_index_struct: Add page and lock.
        
        dict_tree_create(): Remove.  Replace the invocation with
        assignment to index->page and a call to rw_lock_create(&index->lock).
        
        dict_tree_free(): Remove.  Replace the invocation wtih
        a call to rw_lock_free(&index->lock).
        
        dict_index_get_tree(): Remove.
        
        dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
        and remove the parameter, which was unused.
        
        btr_level_list_remove(): Remove the unused parameter "tree".
        
        Replace the occurrences of "tree" with "index" in names of variables,
        functions and data types, e.g. "dict_tree_t tree" becomes
        "dict_index_t index".  Remove local variables "tree" or "index" of
        functions that needed both "tree" and "index".
        
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/row/row0row.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r834:
        dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
        so that all integer fields can be packed into 64 bits.  (Bug #20877)
        
        dtype_t: Change the type of all bit-fields to unsigned.
        
        dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
        dict_table_get_sys_col(), dict_field_get_col(): Return const
        dict_col_t*, so that changes to dict_col_t can be detected more
        easily.  Add const to many dict_col_t* declarations.
        
        dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
        
        dict_col_get_type(): Replace with dict_col_copy_type().
        
        dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
        dict_col_get_sql_null_size(): New functions.
        
        dtype_get_at_most_n_mbchars(): Replace the parameter dtype
        with the parameters prtype, mbminlen, mbmaxlen.
        
        dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
        cmp_whole_field(): Replace the dtype_t* parameter with the ulint
        parameters mtype, prtype.
        
        dtype_copy(): Add a const qualifier to type2 (the one being copied from).
        
        dtype_set_mblen(): Replaced with dtype_get_mblen().
        
        dtype_get_fixed_size_low(), dtype_get_min_size_low(),
        dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
        dtype_get_min_size(), and dtype_get_max_size().  These are used by the
        dict_col_get_{fixed,min,max}_size() functions.
        
        cmp_types_are_equal(): Replace with cmp_cols_are_equal().
        
        dict_table_get_col_name(): Add a const qualifier parameter to the
        parameter "table".
        
        dtype_binary, dtype_binary_val: Remove.
        
        dtype_is_fixed_size(): Remove.
        
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/row/row0sel.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r820:
        Remove dict_col_t::clust_pos.
        
        dict_col_get_clust_pos(): Add parameter clust_index.  Replace the
        look-up with a linear search of all columns in the clustered index.
        
        row_upd_index_replace_new_col_vals(): Compute clust_index outside
        the loops.  Compute clust_pos outside the inner loop.
        
        row_upd_changes_ord_field_binary(), row_upd_changes_first_fields_binary():
        Compute clust_index outside the loops.  Declare the auxiliary variables
        inside the loop scope.
        
        
        Revision r821:
        dict_table_t: Rename the integer field max_row_size
        to the Boolean field big_rows.  (Bug #20877)
        
        BIG_ROW_SIZE: Move the definition from row0sel.c to dict_table_add_to_cache().
        
        
        Revision r825:
        row_search_for_mysql(): Skip setting the next-key lock on an already 
        delete-marked record in a clustered index where the search criteria is 
        unique, within the same transaction (Bug #13544).
        
        
        Revision r834:
        dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
        so that all integer fields can be packed into 64 bits.  (Bug #20877)
        
        dtype_t: Change the type of all bit-fields to unsigned.
        
        dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
        dict_table_get_sys_col(), dict_field_get_col(): Return const
        dict_col_t*, so that changes to dict_col_t can be detected more
        easily.  Add const to many dict_col_t* declarations.
        
        dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
        
        dict_col_get_type(): Replace with dict_col_copy_type().
        
        dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
        dict_col_get_sql_null_size(): New functions.
        
        dtype_get_at_most_n_mbchars(): Replace the parameter dtype
        with the parameters prtype, mbminlen, mbmaxlen.
        
        dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
        cmp_whole_field(): Replace the dtype_t* parameter with the ulint
        parameters mtype, prtype.
        
        dtype_copy(): Add a const qualifier to type2 (the one being copied from).
        
        dtype_set_mblen(): Replaced with dtype_get_mblen().
        
        dtype_get_fixed_size_low(), dtype_get_min_size_low(),
        dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
        dtype_get_min_size(), and dtype_get_max_size().  These are used by the
        dict_col_get_{fixed,min,max}_size() functions.
        
        cmp_types_are_equal(): Replace with cmp_cols_are_equal().
        
        dict_table_get_col_name(): Add a const qualifier parameter to the
        parameter "table".
        
        dtype_binary, dtype_binary_val: Remove.
        
        dtype_is_fixed_size(): Remove.
        
        
        Revision r837:
        page_offset(): New function to replace many ut_align_offset(., UNIV_PAGE_SIZE)
        calls.
        
        dict_index_build_node_ptr(): Correct a typo in a comment.
        
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
        
        Revision r845:
        Split long lines with [] operators better.
      storage/innobase/row/row0uins.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/row/row0umod.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/row/row0upd.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r813:
        Reduce the size of the data dictionary cache.  (Bug #20877)
        
        dtype_t: Remove unused field "prec", which was supposed to be used for
        the precision of decimal columns in stand-alone InnoDB.
        
        dtype_get_prec(): Remove.
        
        dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
        
        dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
        into bit-fields.
        
        dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
        
        dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
        
        Replace the default clust_pos value ULINT_UNDEFINED with
        REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
        the accessor function dict_col_get_clust_pos().
        
        dict_field_t: Turn prefix_len and fixed_len into bit-fields.
        
        dict_tree_t: Remove pad[64].
        
        dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
        cached, flags, stat_initialized, and autoinc_inited into bit-fields.
        Remove does_not_fit_in_memory from non-debug builds.
        
        dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
        n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
        
        dict_foreign_struct: Turn n_fields and type into bit-fields.
        
        rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
        Omit level unless #defined UNIV_SYNC_DEBUG.
        
        Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
        from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
        dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
        
        
        Revision r819:
        dict_col_t: Reduce ord_part to one bit.
        
        dict_index_add_to_cache(): Instead of incrementing ord_part, set it.
        
        dict_index_remove_from_cache(): Do not touch ord_part.
        
        dtype_t: Reduce mbminlen from 3 to 2 bits.
        
        row_upd(): Add a UNIV_LIKELY hint around node->in_mysql_interface.
        
        
        Revision r820:
        Remove dict_col_t::clust_pos.
        
        dict_col_get_clust_pos(): Add parameter clust_index.  Replace the
        look-up with a linear search of all columns in the clustered index.
        
        row_upd_index_replace_new_col_vals(): Compute clust_index outside
        the loops.  Compute clust_pos outside the inner loop.
        
        row_upd_changes_ord_field_binary(), row_upd_changes_first_fields_binary():
        Compute clust_index outside the loops.  Declare the auxiliary variables
        inside the loop scope.
        
        
        Revision r834:
        dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
        so that all integer fields can be packed into 64 bits.  (Bug #20877)
        
        dtype_t: Change the type of all bit-fields to unsigned.
        
        dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
        dict_table_get_sys_col(), dict_field_get_col(): Return const
        dict_col_t*, so that changes to dict_col_t can be detected more
        easily.  Add const to many dict_col_t* declarations.
        
        dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
        
        dict_col_get_type(): Replace with dict_col_copy_type().
        
        dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
        dict_col_get_sql_null_size(): New functions.
        
        dtype_get_at_most_n_mbchars(): Replace the parameter dtype
        with the parameters prtype, mbminlen, mbmaxlen.
        
        dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
        cmp_whole_field(): Replace the dtype_t* parameter with the ulint
        parameters mtype, prtype.
        
        dtype_copy(): Add a const qualifier to type2 (the one being copied from).
        
        dtype_set_mblen(): Replaced with dtype_get_mblen().
        
        dtype_get_fixed_size_low(), dtype_get_min_size_low(),
        dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
        dtype_get_min_size(), and dtype_get_max_size().  These are used by the
        dict_col_get_{fixed,min,max}_size() functions.
        
        cmp_types_are_equal(): Replace with cmp_cols_are_equal().
        
        dict_table_get_col_name(): Add a const qualifier parameter to the
        parameter "table".
        
        dtype_binary, dtype_binary_val: Remove.
        
        dtype_is_fixed_size(): Remove.
        
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
        
        Revision r851:
        row_upd_sec_step(): Fix false comment.
      storage/innobase/row/row0vers.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/srv/srv0srv.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r813:
        Reduce the size of the data dictionary cache.  (Bug #20877)
        
        dtype_t: Remove unused field "prec", which was supposed to be used for
        the precision of decimal columns in stand-alone InnoDB.
        
        dtype_get_prec(): Remove.
        
        dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
        
        dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
        into bit-fields.
        
        dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
        
        dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
        
        Replace the default clust_pos value ULINT_UNDEFINED with
        REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
        the accessor function dict_col_get_clust_pos().
        
        dict_field_t: Turn prefix_len and fixed_len into bit-fields.
        
        dict_tree_t: Remove pad[64].
        
        dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
        cached, flags, stat_initialized, and autoinc_inited into bit-fields.
        Remove does_not_fit_in_memory from non-debug builds.
        
        dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
        n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
        
        dict_foreign_struct: Turn n_fields and type into bit-fields.
        
        rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
        Omit level unless #defined UNIV_SYNC_DEBUG.
        
        Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
        from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
        dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
        
        
        Revision r832:
        Add dict_table_get_col_name() in preparation for getting rid of
        dict_col_t::name, and use it instead of col->name everywhere.
        
        Revision r834:
        dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
        so that all integer fields can be packed into 64 bits.  (Bug #20877)
        
        dtype_t: Change the type of all bit-fields to unsigned.
        
        dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
        dict_table_get_sys_col(), dict_field_get_col(): Return const
        dict_col_t*, so that changes to dict_col_t can be detected more
        easily.  Add const to many dict_col_t* declarations.
        
        dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
        
        dict_col_get_type(): Replace with dict_col_copy_type().
        
        dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
        dict_col_get_sql_null_size(): New functions.
        
        dtype_get_at_most_n_mbchars(): Replace the parameter dtype
        with the parameters prtype, mbminlen, mbmaxlen.
        
        dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
        cmp_whole_field(): Replace the dtype_t* parameter with the ulint
        parameters mtype, prtype.
        
        dtype_copy(): Add a const qualifier to type2 (the one being copied from).
        
        dtype_set_mblen(): Replaced with dtype_get_mblen().
        
        dtype_get_fixed_size_low(), dtype_get_min_size_low(),
        dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
        dtype_get_min_size(), and dtype_get_max_size().  These are used by the
        dict_col_get_{fixed,min,max}_size() functions.
        
        cmp_types_are_equal(): Replace with cmp_cols_are_equal().
        
        dict_table_get_col_name(): Add a const qualifier parameter to the
        parameter "table".
        
        dtype_binary, dtype_binary_val: Remove.
        
        dtype_is_fixed_size(): Remove.
        
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/srv/srv0start.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/sync/sync0arr.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/sync/sync0rw.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r813:
        Reduce the size of the data dictionary cache.  (Bug #20877)
        
        dtype_t: Remove unused field "prec", which was supposed to be used for
        the precision of decimal columns in stand-alone InnoDB.
        
        dtype_get_prec(): Remove.
        
        dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
        
        dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
        into bit-fields.
        
        dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
        
        dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
        
        Replace the default clust_pos value ULINT_UNDEFINED with
        REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
        the accessor function dict_col_get_clust_pos().
        
        dict_field_t: Turn prefix_len and fixed_len into bit-fields.
        
        dict_tree_t: Remove pad[64].
        
        dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
        cached, flags, stat_initialized, and autoinc_inited into bit-fields.
        Remove does_not_fit_in_memory from non-debug builds.
        
        dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
        n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
        
        dict_foreign_struct: Turn n_fields and type into bit-fields.
        
        rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
        Omit level unless #defined UNIV_SYNC_DEBUG.
        
        Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
        from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
        dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
      storage/innobase/sync/sync0sync.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/trx/trx0purge.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/trx/trx0rec.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r834:
        dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
        so that all integer fields can be packed into 64 bits.  (Bug #20877)
        
        dtype_t: Change the type of all bit-fields to unsigned.
        
        dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
        dict_table_get_sys_col(), dict_field_get_col(): Return const
        dict_col_t*, so that changes to dict_col_t can be detected more
        easily.  Add const to many dict_col_t* declarations.
        
        dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
        
        dict_col_get_type(): Replace with dict_col_copy_type().
        
        dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
        dict_col_get_sql_null_size(): New functions.
        
        dtype_get_at_most_n_mbchars(): Replace the parameter dtype
        with the parameters prtype, mbminlen, mbmaxlen.
        
        dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
        cmp_whole_field(): Replace the dtype_t* parameter with the ulint
        parameters mtype, prtype.
        
        dtype_copy(): Add a const qualifier to type2 (the one being copied from).
        
        dtype_set_mblen(): Replaced with dtype_get_mblen().
        
        dtype_get_fixed_size_low(), dtype_get_min_size_low(),
        dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
        dtype_get_min_size(), and dtype_get_max_size().  These are used by the
        dict_col_get_{fixed,min,max}_size() functions.
        
        cmp_types_are_equal(): Replace with cmp_cols_are_equal().
        
        dict_table_get_col_name(): Add a const qualifier parameter to the
        parameter "table".
        
        dtype_binary, dtype_binary_val: Remove.
        
        dtype_is_fixed_size(): Remove.
        
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/trx/trx0rseg.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/trx/trx0sys.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r829:
        Erase the magic number in the trx sys header using a redo-logged write;
        it should be redo-logged because the data structure is file-based;
        this patch does not fix any bug; the original erase operation was added
        in r781 to fix Valgrind Bug #20791
        
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/trx/trx0trx.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      storage/innobase/trx/trx0undo.c:
        Applied innodb-5.1 snapshots ss799 and ss854
        
        Revision r838:
        Revamp the line splits done in r763 and r764 that can now be done better,
        thanks to r826.
      bf2f50d3
  8. 07 Sep, 2006 1 commit
    • unknown's avatar
      Moves Innodb handler to the Innodb storage directory. · b098f25d
      unknown authored
      storage/innobase/handler/ha_innodb.h:
        Rename: sql/ha_innodb.h -> storage/innobase/handler/ha_innodb.h
      libmysqld/Makefile.am:
        Removed Innodb specific mention
      sql/Makefile.am:
        Updated to remove innodb
      storage/innobase/CMakeLists.txt:
        Added include directory
      storage/innobase/Makefile.am:
        Updated to add in handler
      storage/innobase/handler/ha_innodb.cc:
        Adjusted include files, also disabled replication code which was not being used.
      storage/innobase/plug.in:
        Added additional Makefile
      storage/innobase/handler/Makefile.am:
        New BitKeeper file ``storage/innobase/handler/Makefile.am''
      b098f25d
  9. 25 Aug, 2006 1 commit
    • unknown's avatar
      Cleanup of unused variables. · ac11ba6c
      unknown authored
      Fixed "discover" in the handler API.
      
      Fixed problem where handlerton was not zero'ed. I need to look around, I suspect this problem is more widespread. 
      
      
      sql/ha_innodb.h:
        Unused variable
      sql/ha_ndbcluster.cc:
        Added "discover" to handlerton.
      sql/handler.cc:
        Added plugin loop and correctly now use handler API.
      sql/handler.h:
        Removed unused variable. Added discover to handler API
      sql/mysqld.cc:
        Removed unused variables.
      sql/sql_plugin.cc:
        Fixed DBUG Enter comment (obvious cut paste mistake)
      storage/csv/ha_tina.cc:
        Found that if we don't bzero handlerton, that things can go boom!
        
        This probably needs to be fixed for all handlers
      ac11ba6c
  10. 10 Aug, 2006 1 commit
    • unknown's avatar
      BUG#19914 SELECT COUNT(*) sometimes returns MAX_INT on cluster tables · e34496e5
      unknown authored
      allow handler::info to return an error code (that will be returned to the user)
      
      
      sql/ha_berkeley.cc:
        update handler::info interface to return int
      sql/ha_berkeley.h:
        update handler::info interface to return int
      sql/ha_heap.cc:
        update handler::info interface to return int
      sql/ha_heap.h:
        update handler::info interface to return int
      sql/ha_innodb.cc:
        update handler::info interface to return int
      sql/ha_innodb.h:
        update handler::info interface to return int
      sql/ha_myisam.cc:
        update handler::info interface to return int
      sql/examples/ha_archive.cc:
        update handler::info interface to return int
      sql/examples/ha_archive.h:
        update handler::info interface to return int
      sql/examples/ha_example.cc:
        update handler::info interface to return int
      sql/examples/ha_example.h:
        update handler::info interface to return int
      sql/examples/ha_tina.cc:
        update handler::info interface to return int
      sql/examples/ha_tina.h:
        update handler::info interface to return int
      sql/ha_myisam.h:
        update handler::info interface to return int
      sql/ha_myisammrg.cc:
        update handler::info interface to return int
      sql/ha_myisammrg.h:
        update handler::info interface to return int
      sql/ha_ndbcluster.cc:
        update handler::info interface to return int
      sql/ha_ndbcluster.h:
        update handler::info interface to return int
      sql/handler.h:
        update handler::info interface to return int
      sql/opt_sum.cc:
        If we get an error when using handler::info to get count(*),
        print and return the error.
      sql/sql_select.cc:
        if error, set fatal error.
      e34496e5
  11. 29 Jul, 2006 1 commit
    • unknown's avatar
      Make innodb_flush_log_at_trx_commit a settable global variable. · 7d43d6fd
      unknown authored
      sql/ha_innodb.cc:
        Remove innobase_flush_log_at_trx_commit
        (set srv_flush_log_at_trx_commit directly).
      sql/ha_innodb.h:
        Remove innobase_flush_log_at_trx_commit.
        Declare srv_flush_log_at_trx_commit.
      sql/mysqld.cc:
        Bypass the innobase_flush_log_at_trx_commit variable.
      storage/innobase/include/srv0srv.h:
        Change the type of srv_flush_log_at_trx_commit.
      storage/innobase/srv/srv0srv.c:
        Change the type of srv_flush_log_at_trx_commit.
      7d43d6fd
  12. 04 Jun, 2006 1 commit
    • unknown's avatar
      This changeset is largely a handler cleanup changeset (WL#3281), but includes... · 01d03e7b
      unknown authored
      This changeset is largely a handler cleanup changeset (WL#3281), but includes fixes and cleanups that was found necessary while testing the handler changes
      
      Changes that requires code changes in other code of other storage engines.
      (Note that all changes are very straightforward and one should find all issues
      by compiling a --debug build and fixing all compiler errors and all
      asserts in field.cc while running the test suite),
      
      - New optional handler function introduced: reset()
        This is called after every DML statement to make it easy for a handler to
        statement specific cleanups.
        (The only case it's not called is if force the file to be closed)
      
      - handler::extra(HA_EXTRA_RESET) is removed. Code that was there before
        should be moved to handler::reset()
      
      - table->read_set contains a bitmap over all columns that are needed
        in the query.  read_row() and similar functions only needs to read these
        columns
      - table->write_set contains a bitmap over all columns that will be updated
        in the query. write_row() and update_row() only needs to update these
        columns.
        The above bitmaps should now be up to date in all context
        (including ALTER TABLE, filesort()).
      
        The handler is informed of any changes to the bitmap after
        fix_fields() by calling the virtual function
        handler::column_bitmaps_signal(). If the handler does caching of
        these bitmaps (instead of using table->read_set, table->write_set),
        it should redo the caching in this code. as the signal() may be sent
        several times, it's probably best to set a variable in the signal
        and redo the caching on read_row() / write_row() if the variable was
        set.
      
      - Removed the read_set and write_set bitmap objects from the handler class
      
      - Removed all column bit handling functions from the handler class.
        (Now one instead uses the normal bitmap functions in my_bitmap.c instead
        of handler dedicated bitmap functions)
      
      - field->query_id is removed. One should instead instead check
        table->read_set and table->write_set if a field is used in the query.
      
      - handler::extra(HA_EXTRA_RETRIVE_ALL_COLS) and
        handler::extra(HA_EXTRA_RETRIEVE_PRIMARY_KEY) are removed. One should now
        instead use table->read_set to check for which columns to retrieve.
      
      - If a handler needs to call Field->val() or Field->store() on columns
        that are not used in the query, one should install a temporary
        all-columns-used map while doing so. For this, we provide the following
        functions:
      
        my_bitmap_map *old_map= dbug_tmp_use_all_columns(table, table->read_set);
        field->val();
        dbug_tmp_restore_column_map(table->read_set, old_map);
      
        and similar for the write map:
      
        my_bitmap_map *old_map= dbug_tmp_use_all_columns(table, table->write_set);
        field->val();
        dbug_tmp_restore_column_map(table->write_set, old_map);
      
        If this is not done, you will sooner or later hit a DBUG_ASSERT
        in the field store() / val() functions.
        (For not DBUG binaries, the dbug_tmp_restore_column_map() and
        dbug_tmp_restore_column_map() are inline dummy functions and should
        be optimized away be the compiler).
      
      - If one needs to temporary set the column map for all binaries (and not
        just to avoid the DBUG_ASSERT() in the Field::store() / Field::val()
        methods) one should use the functions tmp_use_all_columns() and
        tmp_restore_column_map() instead of the above dbug_ variants.
      
      - All 'status' fields in the handler base class (like records,
        data_file_length etc) are now stored in a 'stats' struct. This makes
        it easier to know what status variables are provided by the base
        handler.  This requires some trivial variable names in the extra()
        function.
      
      - New virtual function handler::records().  This is called to optimize
        COUNT(*) if (handler::table_flags() & HA_HAS_RECORDS()) is true.
        (stats.records is not supposed to be an exact value. It's only has to
        be 'reasonable enough' for the optimizer to be able to choose a good
        optimization path).
      
      - Non virtual handler::init() function added for caching of virtual
        constants from engine.
      
      - Removed has_transactions() virtual method. Now one should instead return
        HA_NO_TRANSACTIONS in table_flags() if the table handler DOES NOT support
        transactions.
      
      - The 'xxxx_create_handler()' function now has a MEM_ROOT_root argument
        that is to be used with 'new handler_name()' to allocate the handler
        in the right area.  The xxxx_create_handler() function is also
        responsible for any initialization of the object before returning.
      
        For example, one should change:
      
        static handler *myisam_create_handler(TABLE_SHARE *table)
        {
          return new ha_myisam(table);
        }
      
        ->
      
        static handler *myisam_create_handler(TABLE_SHARE *table, MEM_ROOT *mem_root)
        {
          return new (mem_root) ha_myisam(table);
        }
      
      - New optional virtual function: use_hidden_primary_key().
        This is called in case of an update/delete when
        (table_flags() and HA_PRIMARY_KEY_REQUIRED_FOR_DELETE) is defined
        but we don't have a primary key. This allows the handler to take precisions
        in remembering any hidden primary key to able to update/delete any
        found row. The default handler marks all columns to be read.
      
      - handler::table_flags() now returns a ulonglong (to allow for more flags).
      
      - New/changed table_flags()
        - HA_HAS_RECORDS	    Set if ::records() is supported
        - HA_NO_TRANSACTIONS	    Set if engine doesn't support transactions
        - HA_PRIMARY_KEY_REQUIRED_FOR_DELETE
                                  Set if we should mark all primary key columns for
      			    read when reading rows as part of a DELETE
      			    statement. If there is no primary key,
      			    all columns are marked for read.
        - HA_PARTIAL_COLUMN_READ  Set if engine will not read all columns in some
      			    cases (based on table->read_set)
       - HA_PRIMARY_KEY_ALLOW_RANDOM_ACCESS
         			    Renamed to HA_PRIMARY_KEY_REQUIRED_FOR_POSITION.
       - HA_DUPP_POS              Renamed to HA_DUPLICATE_POS
       - HA_REQUIRES_KEY_COLUMNS_FOR_DELETE
      			    Set this if we should mark ALL key columns for
      			    read when when reading rows as part of a DELETE
      			    statement. In case of an update we will mark
      			    all keys for read for which key part changed
      			    value.
        - HA_STATS_RECORDS_IS_EXACT
      			     Set this if stats.records is exact.
      			     (This saves us some extra records() calls
      			     when optimizing COUNT(*))
      			    
      
      - Removed table_flags()
        - HA_NOT_EXACT_COUNT     Now one should instead use HA_HAS_RECORDS if
      			   handler::records() gives an exact count() and
      			   HA_STATS_RECORDS_IS_EXACT if stats.records is exact.
        - HA_READ_RND_SAME	   Removed (no one supported this one)
      
      - Removed not needed functions ha_retrieve_all_cols() and ha_retrieve_all_pk()
      
      - Renamed handler::dupp_pos to handler::dup_pos
      
      - Removed not used variable handler::sortkey
      
      
      Upper level handler changes:
      
      - ha_reset() now does some overall checks and calls ::reset()
      - ha_table_flags() added. This is a cached version of table_flags(). The
        cache is updated on engine creation time and updated on open.
      
      
      MySQL level changes (not obvious from the above):
      
      - DBUG_ASSERT() added to check that column usage matches what is set
        in the column usage bit maps. (This found a LOT of bugs in current
        column marking code).
      
      - In 5.1 before, all used columns was marked in read_set and only updated
        columns was marked in write_set. Now we only mark columns for which we
        need a value in read_set.
      
      - Column bitmaps are created in open_binary_frm() and open_table_from_share().
        (Before this was in table.cc)
      
      - handler::table_flags() calls are replaced with handler::ha_table_flags()
      
      - For calling field->val() you must have the corresponding bit set in
        table->read_set. For calling field->store() you must have the
        corresponding bit set in table->write_set. (There are asserts in
        all store()/val() functions to catch wrong usage)
      
      - thd->set_query_id is renamed to thd->mark_used_columns and instead
        of setting this to an integer value, this has now the values:
        MARK_COLUMNS_NONE, MARK_COLUMNS_READ, MARK_COLUMNS_WRITE
        Changed also all variables named 'set_query_id' to mark_used_columns.
      
      - In filesort() we now inform the handler of exactly which columns are needed
        doing the sort and choosing the rows.
      
      - The TABLE_SHARE object has a 'all_set' column bitmap one can use
        when one needs a column bitmap with all columns set.
        (This is used for table->use_all_columns() and other places)
      
      - The TABLE object has 3 column bitmaps:
        - def_read_set     Default bitmap for columns to be read
        - def_write_set    Default bitmap for columns to be written
        - tmp_set          Can be used as a temporary bitmap when needed.
        The table object has also two pointer to bitmaps read_set and write_set
        that the handler should use to find out which columns are used in which way.
      
      - count() optimization now calls handler::records() instead of using
        handler->stats.records (if (table_flags() & HA_HAS_RECORDS) is true).
      
      - Added extra argument to Item::walk() to indicate if we should also
        traverse sub queries.
      
      - Added TABLE parameter to cp_buffer_from_ref()
      
      - Don't close tables created with CREATE ... SELECT but keep them in
        the table cache. (Faster usage of newly created tables).
      
      
      New interfaces:
      
      - table->clear_column_bitmaps() to initialize the bitmaps for tables
        at start of new statements.
      
      - table->column_bitmaps_set() to set up new column bitmaps and signal
        the handler about this.
      
      - table->column_bitmaps_set_no_signal() for some few cases where we need
        to setup new column bitmaps but don't signal the handler (as the handler
        has already been signaled about these before). Used for the momement
        only in opt_range.cc when doing ROR scans.
      
      - table->use_all_columns() to install a bitmap where all columns are marked
        as use in the read and the write set.
      
      - table->default_column_bitmaps() to install the normal read and write
        column bitmaps, but not signaling the handler about this.
        This is mainly used when creating TABLE instances.
      
      - table->mark_columns_needed_for_delete(),
        table->mark_columns_needed_for_delete() and
        table->mark_columns_needed_for_insert() to allow us to put additional
        columns in column usage maps if handler so requires.
        (The handler indicates what it neads in handler->table_flags())
      
      - table->prepare_for_position() to allow us to tell handler that it
        needs to read primary key parts to be able to store them in
        future table->position() calls.
        (This replaces the table->file->ha_retrieve_all_pk function)
      
      - table->mark_auto_increment_column() to tell handler are going to update
        columns part of any auto_increment key.
      
      - table->mark_columns_used_by_index() to mark all columns that is part of
        an index.  It will also send extra(HA_EXTRA_KEYREAD) to handler to allow
        it to quickly know that it only needs to read colums that are part
        of the key.  (The handler can also use the column map for detecting this,
        but simpler/faster handler can just monitor the extra() call).
      
      - table->mark_columns_used_by_index_no_reset() to in addition to other columns,
        also mark all columns that is used by the given key.
      
      - table->restore_column_maps_after_mark_index() to restore to default
        column maps after a call to table->mark_columns_used_by_index().
      
      - New item function register_field_in_read_map(), for marking used columns
        in table->read_map. Used by filesort() to mark all used columns
      
      - Maintain in TABLE->merge_keys set of all keys that are used in query.
        (Simplices some optimization loops)
      
      - Maintain Field->part_of_key_not_clustered which is like Field->part_of_key
        but the field in the clustered key is not assumed to be part of all index.
        (used in opt_range.cc for faster loops)
      
      -  dbug_tmp_use_all_columns(), dbug_tmp_restore_column_map()
         tmp_use_all_columns() and tmp_restore_column_map() functions to temporally
         mark all columns as usable.  The 'dbug_' version is primarily intended
         inside a handler when it wants to just call Field:store() & Field::val()
         functions, but don't need the column maps set for any other usage.
         (ie:: bitmap_is_set() is never called)
      
      - We can't use compare_records() to skip updates for handlers that returns
        a partial column set and the read_set doesn't cover all columns in the
        write set. The reason for this is that if we have a column marked only for
        write we can't in the MySQL level know if the value changed or not.
        The reason this worked before was that MySQL marked all to be written
        columns as also to be read. The new 'optimal' bitmaps exposed this 'hidden
        bug'.
      
      - open_table_from_share() does not anymore setup temporary MEM_ROOT
        object as a thread specific variable for the handler. Instead we
        send the to-be-used MEMROOT to get_new_handler().
        (Simpler, faster code)
      
      
      
      Bugs fixed:
      
      - Column marking was not done correctly in a lot of cases.
        (ALTER TABLE, when using triggers, auto_increment fields etc)
        (Could potentially result in wrong values inserted in table handlers
        relying on that the old column maps or field->set_query_id was correct)
        Especially when it comes to triggers, there may be cases where the
        old code would cause lost/wrong values for NDB and/or InnoDB tables.
      
      - Split thd->options flag OPTION_STATUS_NO_TRANS_UPDATE to two flags:
        OPTION_STATUS_NO_TRANS_UPDATE and OPTION_KEEP_LOG.
        This allowed me to remove some wrong warnings about:
        "Some non-transactional changed tables couldn't be rolled back"
      
      - Fixed handling of INSERT .. SELECT and CREATE ... SELECT that wrongly reset
        (thd->options & OPTION_STATUS_NO_TRANS_UPDATE) which caused us to loose
        some warnings about
        "Some non-transactional changed tables couldn't be rolled back")
      
      - Fixed use of uninitialized memory in ha_ndbcluster.cc::delete_table()
        which could cause delete_table to report random failures.
      
      - Fixed core dumps for some tests when running with --debug
      
      - Added missing FN_LIBCHAR in mysql_rm_tmp_tables()
        (This has probably caused us to not properly remove temporary files after
        crash)
      
      - slow_logs was not properly initialized, which could maybe cause
        extra/lost entries in slow log.
      
      - If we get an duplicate row on insert, change column map to read and
        write all columns while retrying the operation. This is required by
        the definition of REPLACE and also ensures that fields that are only
        part of UPDATE are properly handled.  This fixed a bug in NDB and
        REPLACE where REPLACE wrongly copied some column values from the replaced
        row.
      
      - For table handler that doesn't support NULL in keys, we would give an error
        when creating a primary key with NULL fields, even after the fields has been
        automaticly converted to NOT NULL.
      
      - Creating a primary key on a SPATIAL key, would fail if field was not
        declared as NOT NULL.
      
      
      Cleanups:
      
      - Removed not used condition argument to setup_tables
      
      - Removed not needed item function reset_query_id_processor().
      
      - Field->add_index is removed. Now this is instead maintained in
        (field->flags & FIELD_IN_ADD_INDEX)
      
      - Field->fieldnr is removed (use field->field_index instead)
      
      - New argument to filesort() to indicate that it should return a set of
        row pointers (not used columns). This allowed me to remove some references
        to sql_command in filesort and should also enable us to return column
        results in some cases where we couldn't before.
      
      - Changed column bitmap handling in opt_range.cc to be aligned with TABLE
        bitmap, which allowed me to use bitmap functions instead of looping over
        all fields to create some needed bitmaps. (Faster and smaller code)
      
      - Broke up found too long lines
      
      - Moved some variable declaration at start of function for better code
        readability.
      
      - Removed some not used arguments from functions.
        (setup_fields(), mysql_prepare_insert_check_table())
      
      - setup_fields() now takes an enum instead of an int for marking columns
         usage.
      
      - For internal temporary tables, use handler::write_row(),
        handler::delete_row() and handler::update_row() instead of
        handler::ha_xxxx() for faster execution.
      
      - Changed some constants to enum's and define's.
      
      - Using separate column read and write sets allows for easier checking
        of timestamp field was set by statement.
      
      - Remove calls to free_io_cache() as this is now done automaticly in ha_reset()
      
      - Don't build table->normalized_path as this is now identical to table->path
        (after bar's fixes to convert filenames)
      
      - Fixed some missed DBUG_PRINT(.."%lx") to use "0x%lx" to make it easier to
        do comparision with the 'convert-dbug-for-diff' tool.
      
      
      Things left to do in 5.1:
      
      - We wrongly log failed CREATE TABLE ... SELECT in some cases when using
        row based logging (as shown by testcase binlog_row_mix_innodb_myisam.result)
        Mats has promised to look into this.
      
      - Test that my fix for CREATE TABLE ... SELECT is indeed correct.
        (I added several test cases for this, but in this case it's better that
        someone else also tests this throughly).
        Lars has promosed to do this.
      
      
      BitKeeper/etc/ignore:
        added mysys/test_bitmap
      include/base64.h:
        Removed my_global.h, as this must be included first in any program
      include/heap.h:
        Added heap_reset() (Required by new handler interface)
      include/my_base.h:
        Removed HA_EXTRA_RESET. MySQL will now call ::reset() instead of ::extra(HA_EXTRA_RESET).
        HA_EXTRA_RETRIVE_ALL_COLS and HA_EXTRA_RETRIVE_PRIMARY key are deleted as the column bitmaps makes these unnecessary
      include/my_bitmap.h:
        Remove my_pthread.h (should be included at upper level)
        Introduced my_bitmap_map typedef to make it the bitmap handling more like a black box
        Added bitmap_is_overlapping(), bitmap_test_and_clear(), bitmap_copy() and bitmap_cmp()
        Made bitmap_set_bit(), bitmap_flip_bit(), bitmap_clear_bit() return void
      include/myisam.h:
        Added mi_reset() (Required by new handler interface)
      include/myisammrg.h:
        Added myrg_reset() (Required by new handler interface)
      include/mysql_com.h:
        Added flag FIELD_IN_ADD_INDEX to be able to remove Field->add_index
      mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test:
        Added testing of CREATE ... SELECT in a mixed environment
        (This found some bugs that Mats is going to fix shortly)
      mysql-test/install_test_db.sh:
        Simplify ldata usage
        Added --tmpdir=. option to mysqld bootstrap (Removed some warnings when TMPDIR was wrongly set)
      mysql-test/mysql-test-run.pl:
        Added --tmpdir=. to bootstrap
      mysql-test/mysql-test-run.sh:
        Use copy instead of INSTALL_DB for master and slave databases.
        (Speeds up startup time a lot!)
        Remove snapshot directories at startup (removes some strange warnings)
      mysql-test/r/binlog_row_mix_innodb_myisam.result:
        Added testing of CREATE ... SELECT in a mixed environment
        (This found some bugs that Mats is going to fix shortly)
      mysql-test/r/binlog_stm_mix_innodb_myisam.result:
        Added testing of CREATE ... SELECT in a mixed environment
      mysql-test/r/create.result:
        Some extra tests of warnings and number of tables opened by CREATE ... SELECT
      mysql-test/r/federated.result:
        Drop some left over tables
        Added testing of multiple table update and multiple table delete (with and without keys)
      mysql-test/r/func_gconcat.result:
        Enable some disabled tests (converted them slightly to be predictable)
      mysql-test/r/func_time.result:
        Added drop of test function
      mysql-test/r/innodb_mysql.result:
        Added tests for CREATE ... SELECT
      mysql-test/r/insert.result:
        More tests
        Added testing of duplicate columns in insert
      mysql-test/r/loaddata.result:
        Added testing LOAD DATA ... SET ...
      mysql-test/r/multi_update.result:
        Test multi updates and deletes using primary key and without
      mysql-test/r/ndb_index_unique.result:
        Better error message
      mysql-test/r/ndb_replace.result:
        New correct result after fixing REPLACE handling with NDB
      mysql-test/r/rpl_ddl.result:
        Now we don't get these (wrong) warnings anymore
      mysql-test/r/view_grant.result:
        Drop used views
      mysql-test/t/create.test:
        Some extra tests of warnings and number of tables opened by CREATE ... SELECT
      mysql-test/t/federated.test:
        Drop some left over tables
        Added testing of multiple table update and multiple table delete (with and without keys)
      mysql-test/t/func_gconcat.test:
        Enable some disabled tests (converted them slightly to be predictable)
      mysql-test/t/func_time.test:
        Added drop of test function
      mysql-test/t/innodb_mysql.test:
        Added tests for CREATE ... SELECT
      mysql-test/t/insert.test:
        More tests
        Added testing of duplicate columns in insert
      mysql-test/t/loaddata.test:
        Added testing LOAD DATA ... SET ...
      mysql-test/t/multi_update.test:
        Test multi updates and deletes using primary key and without
      mysql-test/t/view_grant.test:
        Drop used views
      mysql-test/valgrind.supp:
        Added supression of not needed warnings when printing stack trace
      mysys/base64.c:
        Include my_global.h first
      mysys/my_bitmap.c:
        Added bitmap_is_overlapping(), bitmap_test_and_clear() and bitmap_copy()
        Changed logic of bitmap handling to be a bit more efficent (Did this together with Mikael Ronström)
        Now the 'extra, not used bits' in the bitmap are assumed to have a 'random value' and the bitmap functions are free to change them whenever needed.
        Changed how mutex is allocated to make 'bitmap_free()' function simpler.
      mysys/thr_lock.c:
        Added 0x before thread pointers (for easier comparison of DBUG traces)
      sql/event.cc:
        Ensure 'use_all_columns()' is used for event tables
        Don't print warning that event table is damaged if it doesn't exists.
      sql/field.cc:
        Added ASSERT_COLUMN_MARKED_FOR_WRITE in all store() methods and ASSERT_COLUMN_MARKED_FOR_READ in all val() methods to catch wrong setting if table->read_set and table->write_set
        (Rest of changes are only indentation cleanups)
      sql/field.h:
        Removed Field->query_id (replaced by table->read_set and table->write_set)
        Removed Field->fieldnr (use Field->field_index instead)
        Removed Field->add_index (Use Field->flags instead)
        Add Field->part_of_key_not_clustered (for usage in opt_range.cc)
      sql/filesort.cc:
        Added paramater sort_postion to filesort() to force sorting by position instead of storing all fields in the result set.
        This allowed me to remove checking of sql_command.
        Create a temporary column bitmap for fields that are used by the sorting process.
        Use column bitmaps instead of query_id
      sql/ha_berkeley.cc:
        Update to 'newer' table handler interface
      sql/ha_berkeley.h:
        Update to 'newer' table handler interface
      sql/ha_federated.cc:
        Update to 'newer' table handler interface
        Only read columns that are needed from remote server.
        In case of eq ranges, don't generate two conditions in the WHERE clause
        (this can still be optimized, but would require a bigger code change)
        Use 'simpler to use' XXXX_LEN' macros
        A bit simpler logic in ::write_row() when creating statements.
        In update, only include test of fields actually read.
        (This greatly simplifies the queries sent by the federated engine)
        Similar changes done for delete_row()
      sql/ha_federated.h:
        Update to 'newer' table handler interface
        Changed XXX_LEN macros to use sizeof(...)-1, to simplify usage in ha_federated.cc
        Added HA_PRIMARY_KEY_REQUIRED_FOR_DELETE to tell MySQL to read all primary key columns in case of DELETE
      sql/ha_heap.cc:
        Update to 'newer' table handler interface
      sql/ha_heap.h:
        Update to 'newer' table handler interface
      sql/ha_innodb.cc:
        Update to 'newer' table handler interface
        - Update innobase_create_handler() to new interface
        - Removed HA_NOT_EXACT_COUNT (not needed)
        - Renamed HA_PRIMARY_KEY_ALLOW_RANDOM_ACCESS to HA_PRIMARY_KEY_REQUIRED_FOR_POSITION.
        - Prefixed base status variables with 'stats'
        - Use table column bitmaps instead of ha_get_bit_in_read_set()
        - Added ::reset(), with code from ::extra(HA_EXTRA_RESET)
        - Removed HA_EXTRA_RETRIVE_ALL_COLS and HA_EXTRA_RETRIEVE_PRIMARY_KEY as
          the table->read_set and table->write_set bitmaps now are accurate
      sql/ha_innodb.h:
        Update to 'newer' table handler interface
        - table_flags are now ulonglong
        - Added reset() method
        - Removed not needed ha_retrieve_all_cols() and ha_retrieve_all_pk() columns.
        - Made build_template() a class function to be able to easier access class variables
      sql/ha_myisam.cc:
        Update to 'newer' table handler interface
      sql/ha_myisam.h:
        Update to 'newer' table handler interface
      sql/ha_myisammrg.cc:
        Update to 'newer' table handler interface
      sql/ha_myisammrg.h:
        Update to 'newer' table handler interface
      sql/ha_ndbcluster.cc:
        Update to 'newer' table handler interface
        Fixed use_blob_value() to be accurate
        In ::complemented_read() we have to check both the read and write bitmap as the old code did mark all changed columns also in the read map
        Correct dumping of field data with DBUG_DUMP
        Prefix addresses in DBUG_PRINT with 0x
        Fixed usage of not initialized memory
        Update to use field->flags & FIELD_IN_ADD_INDEX instead of field->add_index.
      sql/ha_ndbcluster.h:
        Update to 'newer' table handler interface
      sql/ha_ndbcluster_binlog.cc:
        Mark usage of all columns in ndbcluster binlog tables
        false -> FALSE, true -> TRUE
        Use table->s->all_set instead of creating a temporary bitmap.
      sql/ha_partition.cc:
        Update to 'newer' table handler interface
        Added memroot to initialise_partitions() and related functions to get faster memory allocation.
        partition_create_handler() is now responsible for initialisation of the partition object
        Some trivial optimizations and indentation fixes
        Ensure that table_flags() are up to date
        Removed documentation for removed HA_EXTRA flags
        Fixed 'strange' usage of m_file[i] in new_handlers_from_part_info()that worked in current code 'by chance'
      sql/ha_partition.h:
        Update to 'newer' table handler interface
      sql/handler.cc:
        create_xxx handler now takes MEMROOT as an argument to simplify memory allocation.
        Much simpler get_new_handler()
        (Initialization of the object is now handled by the create method for the engine)
        Moved all allocation of bitmap handling to the TABLE object (in table.cc)
        Added column_bitmaps_signal() to signal column usage changes.
        Changed binlog_log_row() to use the exiusting all_set bitmap in the table object.
        Added ha_reset() function to test that the file object is ok at end of statement and call handler::reset()
        Added use_hidden_primary_key() to signal handler that we we are going to read and update + delete the row and the handler should thus remember the position for the row
      sql/handler.h:
        Added HA_NO_TRANSACTIONS, HA_PARTIAL_COLUMN_READ, HA_REQUIRES_KEY_COLUMNS_FOR_DELETE,HA_PRIMARY_KEY_REQUIRED_FOR_DELETE and HA_HAS_RECORDS
        Removed HA_NOT_EXACT_COUNT, HA_READ_RND_SAME
        HA_DUPP_POS -> HA_DUPLICATE_POS
        HA_NOT_EXACT_COUNT replaced by HA_STATS_RECORDS_IS_EXACT, HA_HAS_RECORDS and records()
        HA_PRIMARY_KEY_ALLOW_RANDOM_ACCESS renamed to HA_PRIMARY_KEY_REQUIRED_FOR_POSITION
        Added future row type 'ROW_TYPE_PAGES'
        Added MEM_ROOT to handlerton 'create' function
        Added ha_statistics, a structure for all status variable in the base handler class.
        Moved all status variables in the handler class into a stats structs to improve readability.
        ha_table_flags() is now a cached (not virtual) version of table_flags()
        reset() doesn't anymore call extra(HA_EXTRA_RESET) but is a function of it's own.
        Renamed dupp_ref to dup_ref
        Renamed not used handler::sortkey
        Moved read_set and write_set to TABLE structure
        handler::init() function added for cacheing of virtual constants from engine.
      sql/item.cc:
        Added register_field_in_read_map() for marking used columns in expression.
        This is used by filesort() for creating an optimal column bitmap while retrieving columns for sorting.
        Initalize value.cs_info.character_set_client to fix core dump bug with --debug
        set_query_id -> mark_used_columns
        Mark used columns in read_set OR write_set.
      sql/item.h:
        Removed reset_query_id_processor() as it's not needed anymore.
        Added register_field_in_read_map()
        Added extra argument to Item::walk() to indicate if we should also
        traverse sub queries.
      sql/item_cmpfunc.cc:
        Temporary mark used columns to be read/writable
        Update Item::walk to new interface
      sql/item_cmpfunc.h:
        Added extra argument to Item::walk() to indicate if we should also traverse sub queries.
      sql/item_func.cc:
        Update Item::walk() to new interface
        table_flags() -> ha_table_flags()
      sql/item_func.h:
        Update Item::walk() to new interface
      sql/item_row.cc:
        Update Item::walk() to new interface
      sql/item_row.h:
        Update Item::walk() to new interface
      sql/item_strfunc.h:
        Update Item::walk() to new interface
      sql/item_subselect.cc:
        Added Item_subselect::walk()
        (It was a bug it was missing before. Not sure what kind of bugs this could have caused)
      sql/item_subselect.h:
        Update Item::walk() to new interface
      sql/item_sum.cc:
        Update Item::walk() to new interface
        Updates for new handler interace
      sql/item_sum.h:
        Update Item::walk() to new interface
      sql/key.cc:
        Updates for new handler interace
      sql/log.cc:
        Mark all columns used for log tables
        Split options flag
        Ensured that second argument to trans_register_ha is a bool
      sql/log_event.cc:
        Fixed comments to be withing 79 characters
        Use OPTION_KEEP_LOG instead of OPTION_STATUS_NO_TRANS_UPDATE to remove wrong warnings
        Updates for new handler interface
        Use 0x%lx instead of %p (portability problem)
      sql/mysql_priv.h:
        Added OPTION_KEEP_LOG to indicate that we should replicate the binlog even on rollback
        Removed not used 'conds' argument to setup_tables
      sql/mysqld.cc:
        Indentation fixes and removed old comment
      sql/opt_range.cc:
        Update to new handler and bitmap interface.
        Fixed calls to cp_buffer_from_ref() and walk() (new argument).
        Create new temporary bitmaps for ror scans.
        (Needed because of handler changes and to get more accurate column bitmaps than before)
        Remove not needed file->ha_reset() call before file->close().
        Some trivial optimization and indentation fixes.
        Use Field->part_of_key_not_clustered() to check if field is part of a key, instead of looping over all key parts.
        
        Added flag 'in_ror_merged_scan' to allow ::get_next() to know that we need a special column bitmap to only fetch pointer to record.
        This is needed because ror scan uses the same TABLE object but different file objects, which creates problem for the column bitmap handling.
        (This is a temporary solution. A better one would be to allocate an own TABLE object for ROR scans)
        
        Optimized bitmap handling in ror scans:
        - Start bitmap at position 0, not 1
        - Use same bitmap size as in TABLE
        - Use table->read_set and table->write_set to create column bitmaps instead of looping over all fields in table
      sql/opt_range.h:
        Added 'in_ror_merged_scan' to indicate if we are doing a ROR scan
        Added temporary column bitmaps used in ROR scans
      sql/opt_sum.cc:
        Added get_ext_record_count() which is used in COUNT() optimization if handler has HA_HAS_RECORDS
        Note that we don't call this if handler has HA_STATS_RECORDS_IS_EXACT set.
      sql/protocol.cc:
        We need to mark columns as readable in ::store() as we sometimes return default value for fields to the user
      sql/records.cc:
        Updates for new handler interface
      sql/set_var.cc:
        Handle splitting OPTION_STATUS_NO_TRANS_UPDATE to two flags
      sql/share/errmsg.txt:
        Fixed wrong
      sql/sp.cc:
        Mark that we are using all columns for the proc table
        Update call to setup_tables() to use new prototype
      sql/sp_head.cc:
        Removed QQ comment
      sql/spatial.cc:
        Removed wrong QQ comment
      sql/sql_acl.cc:
        Mark that we need all columns for acl tables
        Supply memroot to some 'new' calls.
        Indentation fixes
      sql/sql_base.cc:
        set_query_id removed
        Ensure we call ha_reset() at end of each statement
        Mark read columns in read_set and changed columns in write_set (Before all columns was marked in read set)
        Fixed marking of some columns that was not proplerly marked before
        Maintain in TABLE->merge_keys set of all keys that are used in some way
        Removed not used 'conds' argument from setup_tables()
        Remove not used setting of 'dupp_field' in insert_fields()
        Added missing FN_LIBCHAR in mysql_rm_tmp_tables()
        (This has probably caused us to not properly remove temporary files after crash)
      sql/sql_bitmap.h:
        Added is_overlapping()
      sql/sql_class.cc:
        Slow_logs was not properly initialized, which could maybe cause extra/lost entries in slow log.
        set_query_id -> mark_used_columns
        Simpler variable usage in pack_row()  (cleanup)
        Moved some variable declartion at start of function for better code readability
      sql/sql_class.h:
        Added enum_mark_columns
        Updated comments
        Renamed dupp_field -> dup_field
        Added virtual function 'can_rollback_data()' to select_insert() to be used in CREATE ... SELECT to optimize use of OPTION_STATUS_NO_TRANS_UPDATE.
        (This fixes a bug in CREATE ... SELECT where we did give wrong warnings when using non transacational tables)
      sql/sql_delete.cc:
        Updates to new handler interface
        Call table->mark_columns_needed_for_delete() to allow us to put additional columns in column usage maps if handler so requires.
        Call table->prepare_for_position() to tell handler that we are going to call ha_position().
        Removed call to free_io_cache(). (io_cache is now removed in ha_reset()).
        Fixed calls to setup_tables()
      sql/sql_do.cc:
        Update call to setup_fields()
      sql/sql_handler.cc:
        Tell handler tables to always read all columns.
        Use temporary column map when storing value in field for later index usage
      sql/sql_help.cc:
        Makr all used fields to be read
        Update call to setup_fields()
      sql/sql_insert.cc:
        Tell handler we are going to update the auto_increment column
        dupp_field -> dup_field
        Set column usage bits for timestamp field.
        Call table->mark_columns_needed_for_insert() and table->mark_auto_increment_column()
        Removed not used argument from mysql_prepare_insert_check_table().
        
        If we get an duplicate row on insert, change column map to read and write all columns while retrying the operatation.
        This is required by the definition of REPLACE and also ensures that fields that are only part of UPDATE are properly handled.
        This fixed a bug in NDB and REPLACE where REPLACE wrongly copied some column values from the replaced row.
        
        Setup new bitmaps for delayed insert rows
        Remove reseting of next_number_fields as it will be reset on next call to handler_insert()
        
        Fixed usage of thd->options and OPTION_STATUS_NO_TRANS_UPDATE.
        The issue was that one should not to reset this flag as it may be set by a previous statement.
        The way it was now used caused us to loose some warnings and get other wrong warnings when using non transactional tables mixed with transactional.
        I fixed it by introducing 'select_insert::can_rollback_data' to inform send_error() that the given statement can be rolled back (which in case of CREATE TABLE can always be done)
        Don't close tables created with CREATE ... SELECT but keep them in the table cache.
        
        Moved out MY_HOOKS from inside function (better readability)
      sql/sql_load.cc:
        Update to use new handler and column marking interface
        Update using setup_tables()
      sql/sql_olap.cc:
        Update calls to setup_tables
        Use enums instead of constants to setup_fields()
      sql/sql_parse.cc:
        Handle OPTION_KEEP_LOG:
        - Set it on CREATE TEMPORARY TABLE / DROP TABLE
        - Reset it when OPTION_STATUS_NO_TRANS_UPDATE is reset
        - Don't set it for CREATE ... SELECT (this is handled in select_create class)
        Remove reseting of OPTION_STATUS_NO_TRANS_UPDATE in begin_trans() as this should already be reset.
        If in autocommit mode, reset OPTION_KEEP_LOG and OPTION_STATUS_NO_TRANS_UPDATE to not give warnings in future commands
      sql/sql_partition.cc:
        Update walk() usage
        Trivial indentation fixes
      sql/sql_plugin.cc:
        Mark all columns as used for plugins
      sql/sql_prepare.cc:
        Added assert to find out hidden bugs in character_set_client (got an error in debug binary when this not set correctly)
        Updates for new handler interface
        Update calls to setup_fields()
      sql/sql_repl.cc:
        Indentation fixes
      sql/sql_select.cc:
        Update call to setup_tables() and setup_fields()
        Remove some old disabled code
        Update to new hadler interface
        Indentation cleanups
        Added column bitmaps for temporary tables.
        Remove updating of the removed slots in the Field class
        Added TABLE argument to cp_buffer_from_ref() (To be able to install temporary column maps)
        For internal temporary tables, use handler::write_row(), handler::delete_row() and handler::update_row() instead of handler::ha_xxxx() for faster execution.
      sql/sql_select.h:
        Indentaition fixes.
        Install temporary column usage maps when needed
        Added TABLE element to cp_buffer_from_ref()
      sql/sql_show.cc:
        Update to new handler interface
        Mark all columns used for internal tables.
        Style fixes.
        Added support for 'future' ROW_TYPE_PAGES.
        Don't allocate TMP_TABLE_PARAM with calloc. The 'init()' function will initialize the structure properly.
      sql/sql_table.cc:
        Update to new handler interface
        Simple my_snprintf -> strmake()
        Changed some constants to defines
        Don't test for NULL in primary key (as we a couple of line above force the PRIMARY KEY to be NOT NULL)
        Change field->add_index to use field->flags & FIELD_IN_ADD_INDEX
        Mark all columns as used for ALTER TABLE
        Style fixes
        Update call to filesort()
      sql/sql_trigger.h:
        Added friend functions to be able to test if triggers exists for table we are going to insert/update or delete in.
      sql/sql_udf.cc:
        Mark all columns as used for udf system table.
      sql/sql_union.cc:
        Update call to walk()
        Update to new handler interface
      sql/sql_update.cc:
        Remove query_id argument from compare_record()
        Use column bitmaps instead of query_id.
        We can't use compare_records() to skip updates for handlers that returns a partial column set and the read_set doesn't cover all columns in the write set, because compare_record() can't in this case know if a not read column changed value.
        Update call to setup_fields()
        Using separate column read and write sets allows for easier checking of timestamp field was set by statement.
        Removed call to free_io_cache() as this is now done in ha_reset()
        Call table->mark_columns_needed_for_update() and table->prepare_for_position()
        Style fixes
      sql/sql_view.cc:
        Style fixes
      sql/table.cc:
        Remove implicitely include 'errno.h'
        Remove code for building normalized path, as this is now identical to 'path'
        Remove field->fieldnr
        Added update of field->part_of_key_not_clustered()
        Create column bitmaps in TABLE and TABLE_SHARE
        Don't setup a temporary MEM_ROOT object as a thread specific variable for the handler. Instead we send the to-be-used MEMROOT to get_new_handler()
        Update to new handler interface
        Update call to walk()
        Added new functions:
        - st_table::clear_column_bitmaps()
        - st_table::prepare_for_position()
        - st_table::mark_columns_used_by_index()
        - st_table::restore_column_maps_after_mark_index()
        - st_table::mark_columns_used_by_index_no_reset()
        - st_table::mark_auto_increment_column()
        - st_table::mark_columns_needed_for_delete()
        - st_table::mark_columns_needed_for_update()
        - st_table::mark_columns_needed_for_insert()
      sql/table.h:
        Moved column usage bitmaps from handler to TABLE
        Added to TABLE_SHARE all_set and column_bitmap_size
        Added to TABLE merge_keys, bitmap_init_values, def_read_set, def_write_set, tmp_set, read_set and write_set.
        Declared all new table column bitmap functions
        Added TABLE functions column_bitmaps_set(), column_bitmaps_set_no_signal(), use_all_columns() and default_column_bitmaps()
        Added functions: tmp_use_all_columns() and tmp_restore_column_map() to temporarly switch column bitmaps
        Added functions: dbug_tmp_use_all_columns() and dbug_tmp_restore_column_map() to temporarly switch column bitmaps to avoid asserts in Field::store() and Field::val().
      sql/tztime.cc:
        Mark all columns as used for timezone tables
      storage/archive/ha_archive.cc:
        Update to new handler interface
      storage/archive/ha_archive.h:
        Update to new handler interface
      storage/blackhole/ha_blackhole.cc:
        Update to new handler interface
      storage/blackhole/ha_blackhole.h:
        Update to new handler interface
        removed not needed flag HA_DUPP_POS
      storage/csv/ha_tina.cc:
        Update to new handler interface
      storage/csv/ha_tina.h:
        Update to new handler interface
      storage/example/ha_example.cc:
        Update to new handler interface
      storage/example/ha_example.h:
        Update to new handler interface
      storage/heap/hp_extra.c:
        Added heap_reset() (Required by new handler interface)
      storage/heap/hp_test2.c:
        Use heap_reset()
      storage/myisam/ft_boolean_search.c:
        Fixed compiler warning
      storage/myisam/mi_extra.c:
        Added mi_reset() (Required by new handler interface)
      storage/myisam/mi_search.c:
        Fixed DBUG_PRINT messages to use 0x%lx instead of %lx
      storage/myisam/mi_test2.c:
        Use mi_reset()
      storage/myisam/myisampack.c:
        Use mi_reset()
      storage/myisammrg/myrg_extra.c:
        Added myrg_reset() (Required by new handler interface)
      unittest/mysys/base64.t.c:
        Include my_global.h
        Don't include implictely include file 'stdlib.h'
      01d03e7b
  13. 02 Jun, 2006 1 commit
    • unknown's avatar
      First push for WL#3146 "less locking in auto_increment". It is a 0-real-change patch. · e63f3779
      unknown authored
      New prototype for get_auto_increment() (but new arguments not yet used), to be able
      to reserve a finite interval of auto_increment values from cooperating engines.
      A hint on how many values to reserve is found in handler::estimation_rows_to_insert,
      filled by ha_start_bulk_insert(), new wrapper around start_bulk_insert().
      NOTE: this patch changes nothing, for all engines. But it makes the API ready for those
      engines which will want to do reservation.
      More csets will come to complete WL#3146.
      
      
      sql/ha_berkeley.cc:
        update to new prototype of get_auto_increment
      sql/ha_berkeley.h:
        update to new prototype of get_auto_increment
      sql/ha_heap.cc:
        update to new prototype of get_auto_increment
      sql/ha_heap.h:
        update to new prototype of get_auto_increment
      sql/ha_innodb.cc:
        update to new prototype of get_auto_increment
      sql/ha_innodb.h:
        update to new prototype of get_auto_increment
      sql/ha_myisam.cc:
        update to new prototype of get_auto_increment
      sql/ha_myisam.h:
        update to new prototype of get_auto_increment
      sql/ha_ndbcluster.cc:
        update to new prototype of get_auto_increment
      sql/ha_ndbcluster.h:
        update to new prototype of get_auto_increment
      sql/ha_partition.cc:
        update to new prototype of get_auto_increment
      sql/ha_partition.h:
        update to new prototype of get_auto_increment
      sql/handler.cc:
        new prototype of get_auto_increment, comments, preparation for when the MySQL layer is capable
        of getting finite auto_increment intervals from cooperating engines.
      sql/handler.h:
        a wrapper around start_bulk_insert(): ha_bulk_insert(), which stores the argument (number
        of rows expected for insertion) into a member of handler: estimation_rows_to_insert.
        This member will soon be used to decide how much auto_increment values we want to reserve
        from cooperating engines.
        New prototype for get_auto_increment, preparing for cooperating engines to reserve finite auto_increment
        intervals.
        release_auto_increment() will be used by the MySQL layer to inform the engine that it has
        not used all of the interval (engine can reclaim it).
      sql/log.cc:
        note for the future
      sql/log_event.cc:
        name of wrapper
      sql/sql_insert.cc:
        name of wrapper. When done with inserting, return unused auto_inc values to engine.
      sql/sql_load.cc:
        name of wrapper. When done with inserting, return unused auto_inc values to engine.
      sql/sql_select.cc:
        name of wrapper
      sql/sql_table.cc:
        name of wrapper
      storage/archive/ha_archive.cc:
        update to new prototype of get_auto_increment.
        Archive reserves only one value (Archive's god - Brian - told me that's the truth).
      storage/archive/ha_archive.h:
        update to new prototype of get_auto_increment()
      e63f3779
  14. 28 May, 2006 1 commit
    • unknown's avatar
      handlerton cleanup: · e2e582d1
      unknown authored
      duplicate fields removed, st_mysql_storage_engine added to support
      run-time handlerton initialization (no compiler warnings), handler API
      is now tied to MySQL version, handlerton->plugin mapping added
      (slot-based), dummy default_hton removed, plugin-type-specific
      initialization generalized, built-in plugins are now initialized too,
      --default-storage-engine no longer needs a list of storage engines
      in handle_options().
      
      mysql-test-run.pl bugfixes
      
      
      include/mysql/plugin.h:
        added st_mysql_storage_engine
        made handlerton tied to MySQL version
      mysql-test/mysql-test-run.pl:
        bugfixes (umask, --no-defaults)
      mysql-test/r/ndb_dd_basic.result:
        update error message
      mysql-test/t/partition_mgm_err2.test:
        fix typo
      sql/ha_berkeley.cc:
        handlerton cleanup: remove duplicate fields, add st_mysql_storage_engine,
        initialize handlerton run-time to avoid compiler warnings
      sql/ha_berkeley.h:
        handlerton cleanup: remove duplicate fields, add st_mysql_storage_engine,
        initialize handlerton run-time to avoid compiler warnings
      sql/ha_federated.cc:
        handlerton cleanup: remove duplicate fields, add st_mysql_storage_engine,
        initialize handlerton run-time to avoid compiler warnings
      sql/ha_heap.cc:
        handlerton cleanup: remove duplicate fields, add st_mysql_storage_engine,
        initialize handlerton run-time to avoid compiler warnings
      sql/ha_innodb.cc:
        handlerton cleanup: remove duplicate fields, add st_mysql_storage_engine,
        initialize handlerton run-time to avoid compiler warnings
      sql/ha_innodb.h:
        handlerton cleanup: remove duplicate fields, add st_mysql_storage_engine,
        initialize handlerton run-time to avoid compiler warnings
      sql/ha_myisam.cc:
        handlerton cleanup: remove duplicate fields, add st_mysql_storage_engine,
        initialize handlerton run-time to avoid compiler warnings
      sql/ha_myisammrg.cc:
        handlerton cleanup: remove duplicate fields, add st_mysql_storage_engine,
        initialize handlerton run-time to avoid compiler warnings
      sql/ha_ndbcluster.cc:
        handlerton cleanup: remove duplicate fields, add st_mysql_storage_engine,
        initialize handlerton run-time to avoid compiler warnings
      sql/ha_ndbcluster.h:
        handlerton cleanup: remove duplicate fields, add st_mysql_storage_engine,
        initialize handlerton run-time to avoid compiler warnings
      sql/ha_ndbcluster_binlog.cc:
        no 'name' in the handlerton anymore
      sql/ha_partition.cc:
        handlerton cleanup: remove duplicate fields, add st_mysql_storage_engine,
        initialize handlerton run-time to avoid compiler warnings
      sql/handler.cc:
        handlerton cleanup: remove duplicate fields, add st_mysql_storage_engine,
        handlerton->plugin mapping
      sql/handler.h:
        handlerton cleanup: remove duplicate fields
      sql/log.cc:
        handlerton cleanup: remove duplicate fields, add st_mysql_storage_engine,
        initialize handlerton run-time to avoid compiler warnings
      sql/mysql_priv.h:
        handler.h needs plugin.h
      sql/mysqld.cc:
        Convert --default-storage-engine to a handlerton* when
        all storage engines are initialized and not in getopt
      sql/set_var.cc:
        no name in the handlerton anymore
      sql/sql_parse.cc:
        no default_hton anymore
      sql/sql_partition.cc:
        no name in the handlerton anymore
      sql/sql_plugin.cc:
        generalize plugin type-specific initialization.
        initialize built-in plugins too
      sql/sql_plugin.h:
        generalize plugin type-specific initialization.
      sql/sql_show.cc:
        st_mysql_storage_engine structure
        no name in the handlerton anymore
      sql/sql_table.cc:
        no name in the handlerton anymore
        no default_hton anymore
      sql/sql_tablespace.cc:
        no name in the handlerton anymore
        no default_hton anymore
      sql/sql_yacc.yy:
        no default_hton anymore
        issue "unknown storage engine" warning where it is discovered
      storage/archive/ha_archive.cc:
        handlerton cleanup: remove duplicate fields, add st_mysql_storage_engine,
        initialize handlerton run-time to avoid compiler warnings
      storage/archive/ha_archive.h:
        handlerton cleanup: remove duplicate fields, add st_mysql_storage_engine,
        initialize handlerton run-time to avoid compiler warnings
      storage/blackhole/ha_blackhole.cc:
        handlerton cleanup: remove duplicate fields, add st_mysql_storage_engine,
        initialize handlerton run-time to avoid compiler warnings
      storage/csv/ha_tina.cc:
        handlerton cleanup: remove duplicate fields, add st_mysql_storage_engine,
        initialize handlerton run-time to avoid compiler warnings
      storage/example/ha_example.cc:
        handlerton cleanup: remove duplicate fields, add st_mysql_storage_engine,
        initialize handlerton run-time to avoid compiler warnings
      e2e582d1
  15. 21 Apr, 2006 1 commit
  16. 13 Apr, 2006 2 commits
    • unknown's avatar
      foo2 · 365f6f6f
      unknown authored
      sql/ha_innodb.cc:
        Import patch foo2
      sql/ha_innodb.h:
        Import patch foo2
      sql/handler.cc:
        Import patch foo2
      sql/handler.h:
        Import patch foo2
      sql/mysqld.cc:
        Import patch foo2
      sql/set_var.cc:
        Import patch foo2
      sql/sql_class.h:
        Import patch foo2
      sql/sql_repl.cc:
        Import patch foo2
      365f6f6f
    • unknown's avatar
      foo1 · ce335550
      unknown authored
      sql/ha_innodb.cc:
        Import patch foo1
      sql/ha_innodb.h:
        Import patch foo1
      sql/handler.cc:
        Import patch foo1
      sql/handler.h:
        Import patch foo1
      sql/mysqld.cc:
        Import patch foo1
      sql/set_var.cc:
        Import patch foo1
      sql/sql_class.h:
        Import patch foo1
      sql/sql_repl.cc:
        Import patch foo1
      ce335550
  17. 10 Mar, 2006 1 commit
    • unknown's avatar
      Applied innodb-5.1-ss269 snapshot. · 050f14ac
      unknown authored
        Fixed BUGS:
        #3300: "UPDATE statement with no index column in where condition locks
          all rows"
          Implement semi-consistent read to reduce lock conflicts at the cost
          of breaking serializability.
          ha_innobase::unlock_row(): reset the "did semi consistent read" flag
          ha_innobase::was_semi_consistent_read(),
          ha_innobase::try_semi_consistent_read(): new methods
          row_prebuilt_t, row_create_prebuilt(): add field row_read_type for
          keeping track of semi-consistent reads
          row_vers_build_for_semi_consistent_read(),
          row_sel_build_committed_vers_for_mysql(): new functions
          row_search_for_mysql(): implement semi-consistent reads
      
        #9802: "Foreign key checks disallow alter table".
          Added test cases.
      
        #12456: "Cursor shows incorrect data - DML does not affect,
          probably caching"
          This patch implements a high-granularity read view to be used with
          cursors. In this high-granularity consistent read view modifications 
          done by the creating transaction after the cursor is created or 
         future transactions are not visible. But those modifications that 
         transaction did before the cursor was created are visible.
      
        #12701: "Support >4GB buffer pool and log files on 64-bit Windows"
          Do not call os_file_create_tmpfile() at runtime. Instead, create all
          tempfiles at startup and guard access to them with mutexes.
      
        #13778: "If FOREIGN_KEY_CHECKS=0, one can create inconsistent FOREIGN KEYs".
          When FOREIGN_KEY_CHECKS=0 we still need to check that datatypes between
          foreign key references are compatible.
      
        #14189: "VARBINARY and BINARY variables: trailing space ignored with InnoDB"
          innobase_init(): Assert that
          DATA_MYSQL_BINARY_CHARSET_COLL == my_charset_bin.number.
          dtype_get_pad_char(): Do not pad VARBINARY or BINARY columns.
          row_ins_cascade_calc_update_vec(): Refuse ON UPDATE CASCADE when trying
          to change the length of a VARBINARY column that refers to or is referenced
          by a BINARY column. BINARY columns are no longer padded on comparison,
          and thus they cannot be padded on storage either.
      
        #14747: "Race condition can cause btr_search_drop_page_hash_index() to crash"
          Note that buf_block_t::index should be protected by btr_search_latch
          or an s-latch or x-latch on the index page.
          btr_search_drop_page_hash_index(): Read block->index while holding
          btr_search_latch and use the cached value in the loop.  Remove some
          redundant assertions.
      
        #15108: "mysqld crashes when innodb_log_file_size is set > 4G"
      
        #15308: "Problem of Order with Enum Column in Primary Key"
      
        #15550: "mysqld crashes in printing a FOREIGN KEY error in InnoDB"
          row_ins_foreign_report_add_err(): When printing the parent record,
          use the index in the parent table rather than the index in the child table.
      
        #15653: "Slow inserts to InnoDB if many thousands of .ibd files"
          Keep track on unflushed modifications to file spaces.  When there are tens
          of thousands of file spaces, flushing all files in fil_flush_file_spaces()
          would be very slow.
          fil_flush_file_spaces(): Only flush unflushed file spaces.
          fil_space_t, fil_system_t: Add a list of unflushed spaces.
      
        #15991: "innodb-file-per-table + symlink database + rename = cr"
         os_file_handle_error(): Map the error codes EXDEV, ENOTDIR, and EISDIR
         to the new code OS_FILE_PATH_ERROR. Treat this code as OS_FILE_PATH_ERROR.
         This fixes the crash on RENAME TABLE when the .ibd file is a symbolic link
         to a different file system.
      
        #16157: "InnoDB crashes when main location settings are empty"
          This patch is from Heikki.
      
        #16298: "InnoDB segfaults in INSERTs in upgrade of 4.0 -> 5.0 tables
          with VARCHAR BINARY"
          dict_load_columns(): Set the charset-collation code
          DATA_MYSQL_BINARY_CHARSET_COLL for those binary string columns
          that lack a charset-collation code, i.e., the tables were created
          with an older version of MySQL/InnoDB than 4.1.2.
      
        #16229: "MySQL/InnoDB uses full explicit table locks in trigger processing"
          Take a InnoDB table lock only if user has explicitly requested a table
          lock. Added some additional comments to store_lock() and external_lock().
      
        #16387: "InnoDB crash when dropping a foreign key <table>_ibfk_0"
          Do not mistake TABLENAME_ibfk_0 for auto-generated id.
          dict_table_get_highest_foreign_id(): Ignore foreign constraint
          identifiers starting with the pattern TABLENAME_ibfk_0.
      
        #16582: "InnoDB: Error in an adaptive hash index pointer to page"
          Account for a race condition when dropping the adaptive hash index
          for a B-tree page.
          btr_search_drop_page_hash_index(): Retry the operation if a hash index
          with different parameters was built meanwhile.  Add diagnostics for the
          case that hash node pointers to the page remain.
          btr_search_info_update_hash(), btr_search_info_update_slow():
          Document the parameter "info" as in/out.
      
        #16814: "SHOW INNODB STATUS format error in LATEST FOREIGN KEY ERROR
          section"
          Add a missing newline to the LAST FOREIGN KEY ERROR section in SHOW
          INNODB STATUS output.
          dict_foreign_error_report(): Always print a newline after invoking
          dict_print_info_on_foreign_key_in_create_format().
      
        #16827: "Better InnoDB error message if ibdata files omitted from my.cnf"
      
        #17126: "CHECK TABLE on InnoDB causes a short hang during check of adaptive
          hash"
          CHECK TABLE blocking other queries, by releasing the btr_search_latch
          periodically during the adaptive hash table validation.
      
        #17405: "Valgrind: conditional jump or move depends on unititialised values"
          buf_block_init(): Reset magic_n, buf_fix_count and io_fix to avoid
          testing uninitialized variables.
      
      
      
      mysql-test/r/innodb.result:
        Applied innodb-5.1-ss269 snapshot.
      mysql-test/t/innodb.test:
        Applied innodb-5.1-ss269 snapshot.
      sql/ha_innodb.cc:
        Applied innodb-5.1-ss269 snapshot.
      sql/ha_innodb.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/btr/btr0btr.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/btr/btr0cur.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/btr/btr0pcur.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/btr/btr0sea.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/buf/buf0buf.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/buf/buf0flu.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/buf/buf0lru.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/buf/buf0rea.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/data/data0data.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/data/data0type.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/dict/dict0boot.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/dict/dict0crea.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/dict/dict0dict.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/dict/dict0load.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/dict/dict0mem.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/dyn/dyn0dyn.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/eval/eval0eval.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/eval/eval0proc.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/fil/fil0fil.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/fsp/fsp0fsp.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/fut/fut0lst.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/ha/ha0ha.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/ha/hash0hash.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/ibuf/ibuf0ibuf.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/btr0btr.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/btr0btr.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/btr0cur.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/btr0cur.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/btr0pcur.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/btr0pcur.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/btr0sea.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/btr0sea.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/btr0types.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/buf0buf.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/buf0buf.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/buf0flu.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/buf0flu.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/buf0lru.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/data0data.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/data0data.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/data0type.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/data0type.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/db0err.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/dict0boot.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/dict0boot.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/dict0crea.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/dict0dict.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/dict0dict.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/dict0load.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/dict0mem.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/dyn0dyn.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/dyn0dyn.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/eval0eval.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/eval0eval.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/eval0proc.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/eval0proc.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/fil0fil.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/fsp0fsp.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/fut0lst.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/ha0ha.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/hash0hash.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/hash0hash.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/ibuf0ibuf.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/ibuf0ibuf.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/lock0lock.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/lock0types.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/log0log.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/log0log.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/log0recv.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/mach0data.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/mach0data.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/mem0dbg.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/mem0dbg.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/mem0mem.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/mem0mem.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/mem0pool.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/mtr0log.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/mtr0mtr.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/mtr0mtr.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/os0file.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/os0proc.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/os0sync.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/os0sync.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/os0thread.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/page0cur.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/page0cur.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/page0page.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/page0page.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/page0types.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/pars0grm.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/pars0opt.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/pars0pars.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/pars0sym.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/pars0types.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/que0que.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/que0que.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/que0types.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/read0read.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/read0read.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/rem0cmp.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/rem0cmp.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/rem0rec.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/rem0rec.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/row0ins.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/row0mysql.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/row0purge.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/row0row.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/row0row.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/row0sel.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/row0sel.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/row0types.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/row0uins.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/row0umod.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/row0undo.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/row0upd.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/row0upd.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/row0vers.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/srv0srv.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/srv0start.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/sync0arr.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/sync0rw.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/sync0rw.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/sync0sync.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/sync0sync.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/trx0purge.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/trx0purge.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/trx0rec.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/trx0roll.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/trx0rseg.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/trx0rseg.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/trx0sys.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/trx0sys.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/trx0trx.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/trx0trx.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/trx0types.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/trx0undo.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/trx0undo.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/trx0xa.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/univ.i:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/usr0sess.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/usr0types.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/ut0byte.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/ut0byte.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/ut0dbg.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/ut0lst.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/ut0mem.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/ut0mem.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/ut0rnd.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/ut0rnd.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/ut0sort.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/ut0ut.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/include/ut0ut.ic:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/lock/lock0lock.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/log/log0log.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/log/log0recv.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/mach/mach0data.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/mem/mem0dbg.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/mem/mem0mem.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/mem/mem0pool.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/mtr/mtr0log.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/mtr/mtr0mtr.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/os/os0file.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/os/os0proc.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/os/os0sync.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/os/os0thread.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/page/page0cur.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/page/page0page.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/pars/lexyy.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/pars/pars0grm.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/pars/pars0grm.h:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/pars/pars0grm.y:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/pars/pars0lex.l:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/pars/pars0opt.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/pars/pars0pars.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/pars/pars0sym.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/que/que0que.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/read/read0read.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/rem/rem0cmp.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/rem/rem0rec.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/row/row0ins.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/row/row0mysql.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/row/row0purge.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/row/row0row.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/row/row0sel.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/row/row0uins.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/row/row0umod.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/row/row0undo.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/row/row0upd.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/row/row0vers.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/srv/srv0que.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/srv/srv0srv.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/srv/srv0start.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/sync/sync0arr.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/sync/sync0rw.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/sync/sync0sync.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/thr/thr0loc.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/trx/trx0purge.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/trx/trx0rec.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/trx/trx0roll.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/trx/trx0rseg.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/trx/trx0sys.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/trx/trx0trx.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/trx/trx0undo.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/usr/usr0sess.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/ut/ut0byte.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/ut/ut0dbg.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/ut/ut0mem.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/ut/ut0rnd.c:
        Applied innodb-5.1-ss269 snapshot.
      storage/innobase/ut/ut0ut.c:
        Applied innodb-5.1-ss269 snapshot.
      mysql-test/r/innodb_unsafe_binlog.result:
        New BitKeeper file ``mysql-test/r/innodb_unsafe_binlog.result''
      mysql-test/t/innodb_unsafe_binlog-master.opt:
        New BitKeeper file ``mysql-test/t/innodb_unsafe_binlog-master.opt''
      mysql-test/t/innodb_unsafe_binlog.test:
        New BitKeeper file ``mysql-test/t/innodb_unsafe_binlog.test''
      storage/innobase/pars/make_bison.sh:
        New BitKeeper file ``storage/innobase/pars/make_bison.sh''
      050f14ac
  18. 31 Jan, 2006 1 commit
    • unknown's avatar
      Fixed: BUG#15653, BUG#16157, BUG#16229, BUG#16298, BUG#16387, BUG#16582. · 6a9a96dc
      unknown authored
        Applied innodb-5.0-ss149/162 snapshots.
      
      
      innobase/btr/btr0sea.c:
        Applied innodb-5.0-149/162 snapshots.
          Account for a race condition when dropping the adaptive hash
          index for a B-tree page (Bug #16582).
          btr_search_drop_page_hash_index(): Retry the operation if a
            hash index with different parameters was built meanwhile.
            Add diagnostics for the case that hash node pointers to
            the page remain. This fix is from Heikki.
          btr_search_info-update_hash(), btr_search_info_update_slow():
            Document the parameter "info" as in/out.
      innobase/dict/dict0dict.c:
        Applied innodb-5.0-149/162 snapshots.
          Do not mistake TABLENAME_ibfk_0 for auto generated id (Bug #16387).
          dict_table_get_highest_foreign_id(): Ignore foreign constraint
            identifiers starting with the pattern TABLENAME_ibfk_0.
      innobase/dict/dict0load.c:
        Applied innodb-5.0-149/162 snapshots.
          dict_load_columns(): Set the charset-collation code
          DATA_MYSQL_BINARY_CHARSET_COLL for those binary string columns
          that lack a charset-collation code, i.e., the tables were created
          with an older version of MySQL/InnoDB than 4.1.2 (Bug #16298).
      innobase/fil/fil0fil.c:
        Applied innodb-5.0-149/162 snapshots.
          Keep track on unflushed modifications to file spaces. When there
          are tens of thousands of file spaces, flushing all files in
          fil_flush_file_spaces() would be very slow (Bug #15653).
          fil_flush_file_spaces(): Only flush unflushed file spaces.
          fil_space_t, fil_system_t: Add a list of unflushed spaces.
      innobase/include/univ.i:
        Applied innodb-5.0-149/162 snapshots.
          Avoid breaking --with-debug builds on QNS and other systems
          whose compiler pretends to be GCC 2.
          Outside __WIN__ define UNIV_INLINE as static inline.
      innobase/os/os0sync.c:
        Applied innodb-5.0-149/162 snapshots.
          Replace goto in os_event_wait with a normal loop.
      innobase/srv/srv0start.c:
        Applied innodb-5.0-149/162 snapshots.
          Fix bug #16157, a crash when innodb_log_group_home_dir is set
          to an empty string. This patch is from Heikki.
      mysql-test/r/innodb.result:
        Applied innodb-5.0-149/162 snapshots.
          Fixed results for added test cases.
      mysql-test/t/innodb.test:
        Applied innodb-5.0-149/162 snapshots.
          Added test cases.
      sql/ha_innodb.cc:
        Applied innodb-5.0-149/162 snapshots.
          Remove some declarations of unused global variables and member
            variables of class ha_innobase.
          Added diagnostic code trx_print() to
            innobase_query_caching_of_table_permitted() to find reason
            why we are holding adaptive search latch.
          Fixed bug #16229 MySQL/InnoDB uses full explicit table locks
            in trigger processing. Take a InnoDB table lock only if user
            has explicitly requested a table lock. Added some additional
            comments to store_lock() and external_lock(). Fixed some
            code style errors.
          Remember to use noninlined versions of the functions on
            ha_innodb.cc !
      sql/ha_innodb.h:
        Applied innodb-5.0-149/162 snapshots.
          Remove some declarations of unused global variables and member
          variables of class ha_innobase.
      6a9a96dc
  19. 18 Jan, 2006 1 commit
    • unknown's avatar
      Applied patch recieved from Marko: · 74f499fa
      unknown authored
       Make innodb_flush_log_at_trx_commit a settable global variable.
      
      
      innobase/include/srv0srv.h:
        Change the type of srv_flush_log_at_trx_commit.
      innobase/srv/srv0srv.c:
        Change the type of srv_flush_log_at_trx_commit.
      sql/ha_innodb.cc:
        Remove innobase_flush_log_at_trx_commit.
         (Set srv_flush_log_at_trx_commit directly).
      sql/ha_innodb.h:
        Remove innobase_flush_log_at_trx_commit.
         (Set srv_flush_log_at_trx_commit directly).
      sql/mysqld.cc:
        Bypass the variable innobase innobase_flush_log_at_trx_commit.
      sql/set_var.cc:
        Make innodb_flush_log_at_trx_commit a settable global variable.
      74f499fa
  20. 07 Jan, 2006 1 commit
    • unknown's avatar
      WL#2935 - SHOW STATUS support in plugins · 031ee043
      unknown authored
      The patch adds DYNAMIC_ARRAY all_status_vars, which is now the
      sole source of status information for SHOW STATUS.  Status
      variables can be added to and removed from the array dynamically.
      SHOW STATUS command uses this array instead of static array
      from mysqld.cc
      Compatibility with the old, global list of status variables is
      preserved in init_server_components(), where this global list is
      simply appended to all_status_vars.
      
      
      include/plugin.h:
        WL#2935 - SHOW STATUS support in plugins
      plugin/fulltext/plugin_example.c:
        WL#2935 - SHOW STATUS support in plugins
        example
      sql/ha_innodb.cc:
        s/struct show_var_st/SHOW_VAR/
      sql/ha_innodb.h:
        s/struct show_var_st/SHOW_VAR/
      sql/mysql_priv.h:
        WL#2935 - SHOW STATUS support in plugins
        add_status_vars(), remove_status_vars()
      sql/mysqld.cc:
        bug: plugin_free must be called even with --skip-grants
        add_status_vars()/free_status_vars(), remove unused SHOW_xxx_CONST
        s/struct show_var_st/SHOW_VAR/
      sql/set_var.cc:
        s/struct show_var_st/SHOW_VAR/
      sql/sql_parse.cc:
        s/struct show_var_st/SHOW_VAR/
      sql/sql_plugin.cc:
        WL#2935 - SHOW STATUS support in plugins
      sql/sql_plugin.h:
        WL#2935 - SHOW STATUS support in plugins
      sql/sql_show.cc:
        WL#2935 - SHOW STATUS support in plugins
        DYNAMIC_ARRAY all_status_vars, add_status_vars(), remove_status_vars()
        s/struct show_var_st/SHOW_VAR/
      sql/structs.h:
        WL#2935 - SHOW STATUS support in plugins
        SHOW STATUS definitions moved to include/plugin.h and sql_plugin.h
        s/struct show_var_st/SHOW_VAR/
      031ee043
  21. 02 Jan, 2006 1 commit
    • unknown's avatar
      cleanup of SHOW STATUS code, as a preparation for WL#2935 · c81a379c
      unknown authored
      (MySQL plugin interface: status variables)
      
      adding SHOW_FUNC, removing SHOW_some_specific_value,
      only generic SHOW_LONG/SHOW_CHAR/etc are recognized.
      changing to use SHOW_FUNC instead of ha_update_statistics
      
      
      sql/ha_innodb.h:
        cleanup of SHOW STATUS code, as a preparation for WL#2935
        removing ha_update_statistics().
      sql/handler.cc:
        cleanup of SHOW STATUS code, as a preparation for WL#2935
        removing ha_update_statistics().
      sql/handler.h:
        cleanup of SHOW STATUS code, as a preparation for WL#2935
        removing ha_update_statistics().
      sql/mysqld.cc:
        cleanup of SHOW STATUS code, as a preparation for WL#2935
        adding SHOW_FUNC, removing SHOW_some_specific_variable,
        only generic SHOW_LONG/SHOW_CHAR/etc are recognized.
        changing to use SHOW_FUNC instead of ha_update_statistics
      sql/set_var.cc:
        cleanup of SHOW STATUS code, as a preparation for WL#2935
        adding SHOW_FUNC, removing SHOW_some_specific_variable,
        only generic SHOW_LONG/SHOW_CHAR/etc are recognized.
      sql/sql_show.cc:
        cleanup of SHOW STATUS code, as a preparation for WL#2935
        adding SHOW_FUNC, removing SHOW_some_specific_variable,
        only generic SHOW_LONG/SHOW_CHAR/etc are recognized.
        changing to use SHOW_FUNC instead of ha_update_statistics
      sql/structs.h:
        cleanup of SHOW STATUS code, as a preparation for WL#2935
        adding SHOW_FUNC, removing SHOW_some_specific_variable,
        only generic SHOW_LONG/SHOW_CHAR/etc are recognized.
      c81a379c
  22. 22 Dec, 2005 1 commit
    • unknown's avatar
      WL#1012: All changes as one single changeset. · 09346e6e
      unknown authored
      This includes both code and test cases.
      
      
      BitKeeper/deleted/.del-ctype_ucs_binlog.result~280d136b1a0bcf17:
        Delete: mysql-test/r/ctype_ucs_binlog.result
      BitKeeper/deleted/.del-rpl_delete_all.result~7c050d592614b3f:
        Delete: mysql-test/r/rpl_delete_all.result
      BitKeeper/deleted/.del-rpl000013-slave.opt~18266ad8a2403e8d:
        Delete: mysql-test/t/rpl000013-slave.opt
      BitKeeper/deleted/.del-rpl_delete_all.test~700a1490277780e0:
        Delete: mysql-test/t/rpl_delete_all.test
      mysql-test/extra/binlog_tests/binlog.test:
        Import patch wl1012.patch
      mysql-test/extra/binlog_tests/blackhole.test:
        Import patch wl1012.patch
      mysql-test/extra/binlog_tests/ctype_cp932.test:
        Import patch wl1012.patch
      mysql-test/extra/binlog_tests/ctype_cp932_binlog.test:
        Import patch wl1012.patch
      mysql-test/extra/binlog_tests/ctype_ucs_binlog.test:
        Import patch wl1012.patch
      mysql-test/extra/binlog_tests/drop_temp_table.test:
        Import patch wl1012.patch
      mysql-test/extra/binlog_tests/insert_select-binlog.test:
        Import patch wl1012.patch
      mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test:
        Import patch wl1012.patch
      mysql-test/extra/rpl_tests/rpl_ddl.test:
        Import patch wl1012.patch
      mysql-test/extra/rpl_tests/rpl_deadlock.test:
        Import patch wl1012.patch
      mysql-test/extra/rpl_tests/rpl_err_ignoredtable.test:
        Import patch wl1012.patch
      mysql-test/extra/rpl_tests/rpl_flsh_tbls.test:
        Import patch wl1012.patch
      mysql-test/extra/rpl_tests/rpl_loaddata_m.test:
        Import patch wl1012.patch
      mysql-test/extra/rpl_tests/rpl_log.test:
        Import patch wl1012.patch
      mysql-test/extra/rpl_tests/rpl_max_relay_size.test:
        Import patch wl1012.patch
      mysql-test/extra/rpl_tests/rpl_multi_query.test:
        Import patch wl1012.patch
      mysql-test/extra/rpl_tests/rpl_reset_slave.test:
        Import patch wl1012.patch
      mysql-test/extra/rpl_tests/rpl_stm_000001.test:
        Import patch wl1012.patch
      mysql-test/extra/rpl_tests/rpl_stm_EE_err.test:
        Import patch wl1012.patch
      mysql-test/extra/rpl_tests/rpl_stm_charset.test:
        Import patch wl1012.patch
      mysql-test/extra/rpl_tests/rpl_user_variables.test:
        Import patch wl1012.patch
      mysql-test/r/binlog_stm_binlog.result:
        Import patch wl1012.patch
      mysql-test/r/binlog_stm_blackhole.result:
        Import patch wl1012.patch
      mysql-test/r/binlog_stm_ctype_cp932.result:
        Import patch wl1012.patch
      mysql-test/r/binlog_stm_ctype_ucs.result:
        Import patch wl1012.patch
      mysql-test/r/binlog_stm_drop_tmp_tbl.result:
        Import patch wl1012.patch
      mysql-test/r/binlog_stm_insert_select.result:
        Import patch wl1012.patch
      mysql-test/r/binlog_stm_mix_innodb_myisam.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_000012.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_000015.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_deadlock_innodb.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_flushlog_loop.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_loaddata_s.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_000001.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_EE_err.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_charset.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_ddl.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_err_ignoredtable.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_flsh_tbls.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_loaddata_m.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_log.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_max_relay_size.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_multi_query.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_mystery22.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_reset_slave.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_rewrt_db.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_sp.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_timezone.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_until.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_user_variables.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_view.result:
        Import patch wl1012.patch
      mysql-test/t/binlog_row_binlog-master.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_000012.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_000015-slave.sh:
        Import patch wl1012.patch
      mysql-test/t/rpl_000015.slave-mi:
        Import patch wl1012.patch
      mysql-test/t/rpl_000015.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_deadlock_innodb-slave.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_flushlog_loop-master.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_flushlog_loop-master.sh:
        Import patch wl1012.patch
      mysql-test/t/rpl_flushlog_loop-slave.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_flushlog_loop-slave.sh:
        Import patch wl1012.patch
      mysql-test/t/rpl_flushlog_loop.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_loaddata_s-slave.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_loaddata_s.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_000001-slave.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_err_ignoredtable-slave.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_loaddata_m-master.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_log-master.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_log-slave.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_mystery22.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_rewrt_db-slave.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_rewrt_db.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_sp-master.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_sp-slave.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_sp.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_timezone-master.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_timezone-slave.opt:
        Import patch wl1012.patch
      BUILD/SETUP.sh:
        Import patch wl1012.patch
      Makefile.am:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_timezone.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_until.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_view.test:
        Import patch wl1012.patch
      client/Makefile.am:
        Import patch wl1012.patch
      client/client_priv.h:
        Import patch wl1012.patch
      client/mysqlbinlog.cc:
        Import patch wl1012.patch
      configure.in:
        Import patch wl1012.patch
      include/Makefile.am:
        Import patch wl1012.patch
      include/base64.h:
        Import patch wl1012.patch
      include/config-win.h:
        Import patch wl1012.patch
      include/my_base.h:
        Import patch wl1012.patch
      include/my_global.h:
        Import patch wl1012.patch
      mysql-test/Makefile.am:
        Import patch wl1012.patch
      mysql-test/mysql-test-run.pl:
        Import patch wl1012.patch
      mysql-test/mysql-test-run.sh:
        Import patch wl1012.patch
      mysql-test/r/date_formats.result:
        Import patch wl1012.patch
      mysql-test/r/flush_block_commit.result:
        Import patch wl1012.patch
      mysql-test/r/innodb.result:
        Import patch wl1012.patch
      mysql-test/r/rpl000017.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_change_master.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_commit_after_flush.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_create_database.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_do_grant.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_loaddata.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_log_pos.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_multi_delete.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_multi_update.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_openssl.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_replicate_do.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_rotate_logs.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_server_id1.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_server_id2.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_temporary.result:
        Import patch wl1012.patch
      mysql-test/r/user_var-binlog.result:
        Import patch wl1012.patch
      mysql-test/t/create_select_tmp.test:
        Import patch wl1012.patch
      mysql-test/t/date_formats.test:
        Import patch wl1012.patch
      mysql-test/t/disabled.def:
        Import patch wl1012.patch
      mysql-test/t/innodb.test:
        Import patch wl1012.patch
      mysql-test/t/mysqlbinlog.test:
        Import patch wl1012.patch
      mysql-test/t/mysqlbinlog2.test:
        Import patch wl1012.patch
      mysql-test/t/rpl000002.test:
        Import patch wl1012.patch
      mysql-test/t/rpl000006.test:
        Import patch wl1012.patch
      mysql-test/t/rpl000013.test:
        Import patch wl1012.patch
      mysql-test/t/rpl000017.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_auto_increment.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_change_master.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_commit_after_flush.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_create_database.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_do_grant.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_drop.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_empty_master_crash.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_failed_optimize.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_heap.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_insert_id.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_insert_ignore.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_loaddata.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_log_pos.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_multi_delete.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_multi_update.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_multi_update2.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_multi_update3.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_openssl.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_redirect.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_relayrotate.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_replicate_do.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_rotate_logs.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_server_id1.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_sp_effects.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_temporary.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_trigger.test:
        Import patch wl1012.patch
      mysql-test/t/sp.test:
        Import patch wl1012.patch
      mysql-test/t/user_var-binlog.test:
        Import patch wl1012.patch
      mysys/Makefile.am:
        Import patch wl1012.patch
      mysys/base64.c:
        Import patch wl1012.patch
      sql/Makefile.am:
        Import patch wl1012.patch
      sql/ha_innodb.cc:
        Import patch wl1012.patch
      sql/ha_innodb.h:
        Import patch wl1012.patch
      sql/ha_partition.cc:
        Import patch wl1012.patch
      sql/handler.cc:
        Import patch wl1012.patch
      sql/handler.h:
        Import patch wl1012.patch
      sql/item_sum.cc:
        Import patch wl1012.patch
      sql/log.cc:
        Import patch wl1012.patch
      sql/log_event.cc:
        Import patch wl1012.patch
      sql/log_event.h:
        Import patch wl1012.patch
      sql/mysql_priv.h:
        Import patch wl1012.patch
      sql/mysqld.cc:
        Import patch wl1012.patch
      sql/rpl_filter.h:
        Import patch wl1012.patch
      sql/set_var.cc:
        Import patch wl1012.patch
      sql/share/errmsg.txt:
        Import patch wl1012.patch
      sql/slave.cc:
        Import patch wl1012.patch
      sql/slave.h:
        Import patch wl1012.patch
      sql/sp.cc:
        Import patch wl1012.patch
      sql/sp_head.cc:
        Import patch wl1012.patch
      sql/sql_acl.cc:
        Import patch wl1012.patch
      sql/sql_base.cc:
        Import patch wl1012.patch
      sql/sql_class.cc:
        Import patch wl1012.patch
      sql/sql_class.h:
        Import patch wl1012.patch
      sql/sql_delete.cc:
        Import patch wl1012.patch
      sql/sql_insert.cc:
        Import patch wl1012.patch
      sql/sql_lex.h:
        Import patch wl1012.patch
      sql/sql_list.h:
        Import patch wl1012.patch
      sql/sql_load.cc:
        Import patch wl1012.patch
      sql/sql_parse.cc:
        Import patch wl1012.patch
      sql/sql_plugin.cc:
        Import patch wl1012.patch
      sql/sql_rename.cc:
        Import patch wl1012.patch
      sql/sql_repl.h:
        Import patch wl1012.patch
      sql/sql_select.cc:
        Import patch wl1012.patch
      sql/sql_show.cc:
        Import patch wl1012.patch
      sql/sql_table.cc:
        Import patch wl1012.patch
      sql/sql_udf.cc:
        Import patch wl1012.patch
      sql/sql_union.cc:
        Import patch wl1012.patch
      sql/sql_update.cc:
        Import patch wl1012.patch
      sql/sql_yacc.yy:
        Import patch wl1012.patch
      sql/table.cc:
        Import patch wl1012.patch
      sql/table.h:
        Import patch wl1012.patch
      storage/innobase/include/lock0lock.h:
        Import patch wl1012.patch
      storage/innobase/include/row0mysql.h:
        Import patch wl1012.patch
      storage/innobase/include/row0vers.h:
        Import patch wl1012.patch
      storage/innobase/lock/lock0lock.c:
        Import patch wl1012.patch
      storage/innobase/row/row0mysql.c:
        Import patch wl1012.patch
      storage/innobase/row/row0sel.c:
        Import patch wl1012.patch
      storage/innobase/row/row0vers.c:
        Import patch wl1012.patch
      09346e6e
  23. 13 Dec, 2005 1 commit
    • unknown's avatar
      Changes from the innodb-5.1-ss28 snapshot. · ad4d8773
      unknown authored
       Removed include/Makefile.am and the reference to it.
       Deleted db/db0err.h and db directory.
       Check index column sizes in a better way (bug 13315).
       Fixed comments for memory allocation functions and added
       some extra checks. Adapted callers.
      
      
      BitKeeper/deleted/.del-Makefile.am~ab5c84d46412dc2e:
        Delete: storage/innobase/include/Makefile.am
      BitKeeper/deleted/.del-db0err.h~bfeec2efe86ac48b:
        Delete: storage/innobase/db/db0err.h
      mysql-test/r/innodb.result:
        Changes from the innodb-5.1-ss28 snapshot.
      mysql-test/t/innodb.test:
        Changes from the innodb-5.1-ss28 snapshot.
      sql/ha_innodb.cc:
        Changes from the innodb-5.1-ss28 snapshot.
      sql/ha_innodb.h:
        Changes from the innodb-5.1-ss28 snapshot.
      storage/innobase/Makefile.am:
        Changes from the innodb-5.1-ss28 snapshot.
      storage/innobase/configure.in:
        Changes from the innodb-5.1-ss28 snapshot.
      storage/innobase/ha/ha0ha.c:
        Changes from the innodb-5.1-ss28 snapshot.
      storage/innobase/include/ha0ha.h:
        Changes from the innodb-5.1-ss28 snapshot.
      storage/innobase/include/ha0ha.ic:
        Changes from the innodb-5.1-ss28 snapshot.
      storage/innobase/include/mem0mem.h:
        Changes from the innodb-5.1-ss28 snapshot.
      storage/innobase/include/mem0mem.ic:
        Changes from the innodb-5.1-ss28 snapshot.
      storage/innobase/lock/lock0lock.c:
        Changes from the innodb-5.1-ss28 snapshot.
      storage/innobase/mem/mem0mem.c:
        Changes from the innodb-5.1-ss28 snapshot.
      ad4d8773
  24. 08 Dec, 2005 1 commit
    • unknown's avatar
      The innodb-5.0-ss52 snapshot changes were erroneously auto-merged · f8d6d137
      unknown authored
       to 5.1. Undoing the merge.
      
      
      mysql-test/r/innodb.result:
        Undoing erroneous auto-merge 5.0 -> 5.1
      mysql-test/t/innodb.test:
        Undoing erroneous auto-merge 5.0 -> 5.1
      sql/ha_innodb.cc:
        Undoing erroneous auto-merge 5.0 -> 5.1
      sql/ha_innodb.h:
        Undoing erroneous auto-merge 5.0 -> 5.1
      storage/innobase/btr/btr0sea.c:
        Undoing erroneous auto-merge 5.0 -> 5.1
      storage/innobase/dict/dict0dict.c:
        Undoing erroneous auto-merge 5.0 -> 5.1
      storage/innobase/dict/dict0load.c:
        Undoing erroneous auto-merge 5.0 -> 5.1
      storage/innobase/include/buf0buf.h:
        Undoing erroneous auto-merge 5.0 -> 5.1
      storage/innobase/include/dict0dict.h:
        Undoing erroneous auto-merge 5.0 -> 5.1
      storage/innobase/include/dict0load.h:
        Undoing erroneous auto-merge 5.0 -> 5.1
      storage/innobase/include/rem0cmp.h:
        Undoing erroneous auto-merge 5.0 -> 5.1
      storage/innobase/rem/rem0cmp.c:
        Undoing erroneous auto-merge 5.0 -> 5.1
      storage/innobase/row/row0mysql.c:
        Undoing erroneous auto-merge 5.0 -> 5.1
      f8d6d137
  25. 06 Dec, 2005 1 commit
    • unknown's avatar
      Fix BUG#14747: "Race condition can cause btr_search_drop_page_hash_index() · b83c2976
      unknown authored
       to crash".
       Changes from snapshot innodb-5.0-ss52.
       Note that buf_block_t::index should be protected by btr_search_latch
       or an s-latch or x-latch on the index page.
       btr_search_drop_page_hash_index(): Read block->index while holding
       btr_search_latch and use the cached value in the loop. Remove some
       redundant assertions.
       Also fix 13778. When FOREIGN_KEY_CHECKS=0 we still need to check that
       datatypes between foreign key references are compatible.
       Also added test cases to 9802.
      
      
      innobase/btr/btr0sea.c:
        Changes from innodb-5.0-ss52
      innobase/dict/dict0dict.c:
        Changes from innodb-5.0-ss52
      innobase/dict/dict0load.c:
        Changes from innodb-5.0-ss52
      innobase/include/buf0buf.h:
        Changes from innodb-5.0-ss52
      innobase/include/dict0dict.h:
        Changes from innodb-5.0-ss52
      innobase/include/dict0load.h:
        Changes from innodb-5.0-ss52
      innobase/include/rem0cmp.h:
        Changes from innodb-5.0-ss52
      innobase/rem/rem0cmp.c:
        Changes from innodb-5.0-ss52
      innobase/row/row0mysql.c:
        Changes from innodb-5.0-ss52
      mysql-test/r/innodb.result:
        Changes from innodb-5.0-ss52
      mysql-test/t/innodb.test:
        Changes from innodb-5.0-ss52
      sql/ha_innodb.cc:
        Changes from innodb-5.0-ss52
      sql/ha_innodb.h:
        Changes from innodb-5.0-ss52
      b83c2976
  26. 23 Nov, 2005 1 commit
    • unknown's avatar
      Table definition cache, part 2 · f631b361
      unknown authored
      The table opening process now works the following way:
      - Create common TABLE_SHARE object
      - Read the .frm file and unpack it into the TABLE_SHARE object
      - Create a TABLE object based on the information in the TABLE_SHARE
        object and open a handler to the table object
      
      Other noteworthy changes:
      - In TABLE_SHARE the most common strings are now LEX_STRING's
      - Better error message when table is not found
      - Variable table_cache is now renamed 'table_open_cache'
      - New variable 'table_definition_cache' that is the number of table defintions that will be cached
      - strxnmov() calls are now fixed to avoid overflows
      - strxnmov() will now always add one end \0 to result
      - engine objects are now created with a TABLE_SHARE object instead of a TABLE object.
      - After creating a field object one must call field->init(table) before using it
      
      - For a busy system this change will give you:
       - Less memory usage for table object
       - Faster opening of tables (if it's has been in use or is in table definition cache)
       - Allow you to cache many table definitions objects
       - Faster drop of table
      
      
      mysql-test/mysql-test-run.sh:
        Fixed some problems with --gdb option
        Test both with socket and tcp/ip port that all old servers are killed
      mysql-test/r/flush_table.result:
        More tests with lock table with 2 threads + flush table
      mysql-test/r/information_schema.result:
        Removed old (now wrong) result
      mysql-test/r/innodb.result:
        Better error messages (thanks to TDC patch)
      mysql-test/r/merge.result:
        Extra flush table test
      mysql-test/r/ndb_bitfield.result:
        Better error messages (thanks to TDC patch)
      mysql-test/r/ndb_partition_error.result:
        Better error messages (thanks to TDC patch)
      mysql-test/r/query_cache.result:
        Remove tables left from old tests
      mysql-test/r/temp_table.result:
        Test truncate with temporary tables
      mysql-test/r/variables.result:
        Table_cache -> Table_open_cache
      mysql-test/t/flush_table.test:
        More tests with lock table with 2 threads + flush table
      mysql-test/t/merge.test:
        Extra flush table test
      mysql-test/t/multi_update.test:
        Added 'sleep' to make test predictable
      mysql-test/t/query_cache.test:
        Remove tables left from old tests
      mysql-test/t/temp_table.test:
        Test truncate with temporary tables
      mysql-test/t/variables.test:
        Table_cache -> Table_open_cache
      mysql-test/valgrind.supp:
        Remove warning that may happens becasue threads dies in different order
      mysys/hash.c:
        Fixed wrong DBUG_PRINT
      mysys/mf_dirname.c:
        More DBUG
      mysys/mf_pack.c:
        Better comment
      mysys/mf_tempdir.c:
        More DBUG
        Ensure that we call cleanup_dirname() on all temporary directory paths.
        
        If we don't do this, we will get a failure when comparing temporary table
        names as in some cases the temporary table name is run through convert_dirname())
      mysys/my_alloc.c:
        Indentation fix
      sql/examples/ha_example.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/examples/ha_example.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/examples/ha_tina.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/examples/ha_tina.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/field.cc:
        Update for table definition cache:
        - Field creation now takes TABLE_SHARE instead of TABLE as argument
          (This is becasue field definitions are now cached in TABLE_SHARE)
          When a field is created, one now must call field->init(TABLE) before using it
        - Use s->db instead of s->table_cache_key
        - Added Field::clone() to create a field in TABLE from a field in TABLE_SHARE
        - make_field() takes TABLE_SHARE as argument instead of TABLE
        - move_field() -> move_field_offset()
      sql/field.h:
        Update for table definition cache:
        - Field creation now takes TABLE_SHARE instead of TABLE as argument
          (This is becasue field definitions are now cached in TABLE_SHARE)
          When a field is created, one now must call field->init(TABLE) before using it
        - Added Field::clone() to create a field in TABLE from a field in TABLE_SHARE
        - make_field() takes TABLE_SHARE as argument instead of TABLE
        - move_field() -> move_field_offset()
      sql/ha_archive.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_archive.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_berkeley.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        Changed name of argument create() to not hide internal 'table' variable.
        table->s  -> table_share
      sql/ha_berkeley.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_blackhole.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_blackhole.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_federated.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        Fixed comments
        Remove index variable and replace with pointers (simple optimization)
        move_field() -> move_field_offset()
        Removed some strlen() calls
      sql/ha_federated.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_heap.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        Simplify delete_table() and create() as the given file names are now without extension
      sql/ha_heap.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_innodb.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_innodb.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_myisam.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        Remove not needed fn_format()
        Fixed for new table->s structure
      sql/ha_myisam.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_myisammrg.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        Don't set 'is_view' for MERGE tables
        Use new interface to find_temporary_table()
      sql/ha_myisammrg.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        Added flag HA_NO_COPY_ON_ALTER
      sql/ha_ndbcluster.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        Fixed wrong calls to strxnmov()
        Give error HA_ERR_TABLE_DEF_CHANGED if table definition has changed
        drop_table -> intern_drop_table()
        table->s -> table_share
        Move part_info to TABLE
        Fixed comments & DBUG print's
        New arguments to print_error()
      sql/ha_ndbcluster.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_partition.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        We can't set up or use part_info when creating handler as there is not yet any table object
        New ha_intialise() to work with TDC (Done by Mikael)
      sql/ha_partition.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        Got set_part_info() from Mikael
      sql/handler.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        ha_delete_table() now also takes database as an argument
        handler::ha_open() now takes TABLE as argument
        ha_open() now calls ha_allocate_read_write_set()
        Simplify ha_allocate_read_write_set()
        Remove ha_deallocate_read_write_set()
        Use table_share (Cached by table definition cache)
      sql/handler.h:
        New table flag: HA_NO_COPY_ON_ALTER (used by merge tables)
        Remove ha_deallocate_read_write_set()
        get_new_handler() now takes TABLE_SHARE as argument
        ha_delete_table() now gets database as argument
      sql/item.cc:
        table_name and db are now LEX_STRING objects
        When creating fields, we have now have to call field->init(table)
        move_field -> move_field_offset()
      sql/item.h:
        tmp_table_field_from_field_type() now takes an extra paramenter 'fixed_length' to allow one to force usage of CHAR
         instead of BLOB
      sql/item_cmpfunc.cc:
        Fixed call to tmp_table_field_from_field_type()
      sql/item_create.cc:
        Assert if new not handled cast type
      sql/item_func.cc:
        When creating fields, we have now have to call field->init(table)
        dummy_table used by 'sp' now needs a TABLE_SHARE object
      sql/item_subselect.cc:
        Trivial code cleanups
      sql/item_sum.cc:
        When creating fields, we have now have to call field->init(table)
      sql/item_timefunc.cc:
        Item_func_str_to_date::tmp_table_field() now replaced by call to
         tmp_table_field_from_field_type() (see item_timefunc.h)
      sql/item_timefunc.h:
        Simply tmp_table_field()
      sql/item_uniq.cc:
        When creating fields, we have now have to call field->init(table)
      sql/key.cc:
        Added 'KEY' argument to 'find_ref_key' to simplify code
      sql/lock.cc:
        More debugging
        Use create_table_def_key() to create key for table cache
        Allocate TABLE_SHARE properly when creating name lock
        Fix that locked_table_name doesn't test same table twice
      sql/mysql_priv.h:
        New functions for table definition cache
        New interfaces to a lot of functions.
        New faster interface to find_temporary_table() and close_temporary_table()
      sql/mysqld.cc:
        Added support for table definition cache of size 'table_def_size'
        Fixed som calls to strnmov()
        Changed name of 'table_cache' to 'table_open_cache'
      sql/opt_range.cc:
        Use new interfaces
        Fixed warnings from valgrind
      sql/parse_file.cc:
        Safer calls to strxnmov()
        Fixed typo
      sql/set_var.cc:
        Added variable 'table_definition_cache'
        Variable table_cache renamed to 'table_open_cache'
      sql/slave.cc:
        Use new interface
      sql/sp.cc:
        Proper use of TABLE_SHARE
      sql/sp_head.cc:
        Remove compiler warnings
        We have now to call field->init(table)
      sql/sp_head.h:
        Pointers to parsed strings are now const
      sql/sql_acl.cc:
        table_name is now a LEX_STRING
      sql/sql_base.cc:
        Main implementation of table definition cache
        (The #ifdef's are there for the future when table definition cache will replace open table cache)
        Now table definitions are cached indepndent of open tables, which will speed up things when a table is in use at once from several places
        Views are not yet cached; For the moment we only cache if a table is a view or not.
        
        Faster implementation of find_temorary_table()
        Replace 'wait_for_refresh()' with the more general function 'wait_for_condition()'
        Drop table is slightly faster as we can use the table definition cache to know the type of the table
      sql/sql_cache.cc:
        table_cache_key and table_name are now LEX_STRING
        'sDBUG print fixes
      sql/sql_class.cc:
        table_cache_key is now a LEX_STRING
        safer strxnmov()
      sql/sql_class.h:
        Added number of open table shares (table definitions)
      sql/sql_db.cc:
        safer strxnmov()
      sql/sql_delete.cc:
        Use new interface to find_temporary_table()
      sql/sql_derived.cc:
        table_name is now a LEX_STRING
      sql/sql_handler.cc:
        TABLE_SHARE->db and TABLE_SHARE->table_name are now LEX_STRING's
      sql/sql_insert.cc:
        TABLE_SHARE->db and TABLE_SHARE->table_name are now LEX_STRING's
      sql/sql_lex.cc:
        Make parsed string a const (to quickly find out if anything is trying to change the query string)
      sql/sql_lex.h:
        Make parsed string a const (to quickly find out if anything is trying to change the query string)
      sql/sql_load.cc:
        Safer strxnmov()
      sql/sql_parse.cc:
        Better error if wrong DB name
      sql/sql_partition.cc:
        part_info moved to TABLE from TABLE_SHARE
        Indentation changes
      sql/sql_select.cc:
        Indentation fixes
        Call field->init(TABLE) for new created fields
        Update create_tmp_table() to use TABLE_SHARE properly
      sql/sql_select.h:
        Call field->init(TABLE) for new created fields
      sql/sql_show.cc:
        table_name is now a LEX_STRING
        part_info moved to TABLE
      sql/sql_table.cc:
        Use table definition cache to speed up delete of tables
        Fixed calls to functions with new interfaces
        Don't use 'share_not_to_be_used'
        Instead of doing openfrm() when doing repair, we now have to call
        get_table_share() followed by open_table_from_share().
        Replace some fn_format() with faster unpack_filename().
        Safer strxnmov()
        part_info is now in TABLE
        Added Mikaels patch for partition and ALTER TABLE
        Instead of using 'TABLE_SHARE->is_view' use 'table_flags() & HA_NO_COPY_ON_ALTER
      sql/sql_test.cc:
        table_name and table_cache_key are now LEX_STRING's
      sql/sql_trigger.cc:
        TABLE_SHARE->db and TABLE_SHARE->table_name are now LEX_STRING's
        safer strxnmov()
        Removed compiler warnings
      sql/sql_update.cc:
        Call field->init(TABLE) after field is created
      sql/sql_view.cc:
        safer strxnmov()
        Create common TABLE_SHARE object for views to allow us to cache if table is a view
      sql/structs.h:
        Added SHOW_TABLE_DEFINITIONS
      sql/table.cc:
        Creation and destruct of TABLE_SHARE objects that are common for many TABLE objects
        
        The table opening process now works the following way:
        - Create common TABLE_SHARE object
        - Read the .frm file and unpack it into the TABLE_SHARE object
        - Create a TABLE object based on the information in the TABLE_SHARE
          object and open a handler to the table object
        
        open_table_def() is written in such a way that it should be trival to add parsing of the .frm files in new formats
      sql/table.h:
        TABLE objects for the same database table now share a common TABLE_SHARE object
        In TABLE_SHARE the most common strings are now LEX_STRING's
      sql/unireg.cc:
        Changed arguments to rea_create_table() to have same order as other functions
        Call field->init(table) for new created fields
      sql/unireg.h:
        Added OPEN_VIEW
      strings/strxnmov.c:
        Change strxnmov() to always add end \0
        This makes usage of strxnmov() safer as most of MySQL code assumes that strxnmov() will create a null terminated string
      f631b361
  27. 17 Nov, 2005 1 commit
    • unknown's avatar
      set_var.cc, mysqld.cc, ha_innodb.h: · 30df60fa
      unknown authored
        BUG#12701: SHOW VARIABLES does not show correct size of buffer pool.
      ha_innodb.cc:
        BUG#12701: SHOW VARIABLES does not show correct size of buffer pool
      
      
      sql/ha_innodb.cc:
        BUG#12701: SHOW VARIABLES does not show correct size of buffer pool
      sql/ha_innodb.h:
        BUG#12701: SHOW VARIABLES does not show correct size of buffer pool.
      sql/mysqld.cc:
        BUG#12701: SHOW VARIABLES does not show correct size of buffer pool.
      sql/set_var.cc:
        BUG#12701: SHOW VARIABLES does not show correct size of buffer pool.
      30df60fa
  28. 07 Nov, 2005 1 commit
    • unknown's avatar
      Make storage engines "pluggable", handlerton work · 6b3a9cae
      unknown authored
      Makefile.am:
        Changes to autoconf subst
      config/ac-macros/ha_berkeley.m4:
        simplify
      config/ac-macros/ha_ndbcluster.m4:
        simplify
      config/ac-macros/ha_partition.m4:
        simplify
      configure.in:
        strip configure of storage engine specific cruft and simplify
      extra/Makefile.am:
        changes to autoconf/automake subst
      libmysqld/Makefile.am:
        only compile storage engines if required.
        make find object file a little smarter
      libmysqld/examples/Makefile.am:
        changes to autoconf subst
      mysql-test/Makefile.am:
        remove storage engine specific cruft
      mysql-test/r/ps_1general.result:
        cannot gaurantee order of results from 'show storage engines'
      mysql-test/r/show_check.result:
        fix test - frm file fails to be deleted if it is invalid
      mysql-test/r/sql_mode.result:
        isam does not exist, test may need to be redone/fixed in 5.0
      mysql-test/r/warnings.result:
        isam no longer exists
      mysql-test/t/ps_1general.test:
        cannot gaurantee order of results from 'show storage engines'
      mysql-test/t/show_check.test:
        fix test - frm file fails to be deleted if it is invalid
      mysql-test/t/sql_mode.test:
        isam does not exist, test may need to be redone/fixed in 5.0
      mysql-test/t/system_mysql_db_fix.test:
        change isam to myisam
      mysql-test/t/view.test:
        change isam to myisam
      mysql-test/t/warnings.test:
        isam no longer exists
      sql/Makefile.am:
        Make storage engines "pluggable" stage 1
        only compile storage engines if included
      sql/examples/ha_example.cc:
        handlerton work
      sql/examples/ha_example.h:
        handlerton work
      sql/examples/ha_tina.cc:
        handlerton work
      sql/examples/ha_tina.h:
        handlerton work
      sql/ha_archive.cc:
        handlerton work
      sql/ha_archive.h:
        handlerton work
      sql/ha_berkeley.cc:
        handlerton work
      sql/ha_berkeley.h:
        handlerton work
      sql/ha_blackhole.cc:
        handlerton work
      sql/ha_federated.cc:
        handlerton work
      sql/ha_federated.h:
        handlerton work
      sql/ha_heap.cc:
        handlerton work
      sql/ha_innodb.cc:
        handlerton work
      sql/ha_innodb.h:
        handlerton work
      sql/ha_myisam.cc:
        handlerton work
      sql/ha_myisammrg.cc:
        handlerton work
      sql/ha_ndbcluster.cc:
        handlerton work
      sql/ha_ndbcluster.h:
        handlerton work
      sql/ha_partition.cc:
        handlerton work
      sql/handler.cc:
        start removing storage engine specific cruft
      sql/handler.h:
        start removing storage engine specific cruft
        db_type for binlog handlerton
        handlerton flag for not-user-selectable storage engines
      sql/lex.h:
        start removing storage engine specific cruft
      sql/log.cc:
        handlerton work
        give binlog handlerton a 'real' db_type
      sql/mysql_priv.h:
        start removing storage engine specific cruft
      sql/mysqld.cc:
        start removing storage engine specific cruft
      sql/set_var.cc:
        start removing storage engine specific cruft
      sql/sp_head.cc:
        start removing storage engine specific cruft
      sql/sql_class.cc:
        start removing storage engine specific cruft
      sql/sql_class.h:
        start removing storage engine specific cruft
      sql/sql_lex.h:
        start removing storage engine specific cruft
      sql/sql_manager.cc:
        start removing storage engine specific cruft
      sql/sql_manager.h:
        start removing storage engine specific cruft
      sql/sql_parse.cc:
        start removing storage engine specific cruft
      sql/sql_partition.cc:
        start removing storage engine specific cruft
      sql/sql_prepare.cc:
        start removing storage engine specific cruft
      sql/sql_show.cc:
        start removing storage engine specific cruft
      sql/sql_table.cc:
        changed define from HAVE_PARTITION_DB to WITH_PARTITION_STORAGE_ENGINE
        start removing storage engine specific cruft
      sql/sql_update.cc:
        changed define from HAVE_PARTITION_DB to WITH_PARTITION_STORAGE_ENGINE
      sql/sql_yacc.yy:
        start removing storage engine specific cruft
        test if we should throw error
      sql/table.cc:
        changed define from HAVE_PARTITION_DB to WITH_PARTITION_STORAGE_ENGINE
      sql/table.h:
        changed define from HAVE_PARTITION_DB to WITH_PARTITION_STORAGE_ENGINE
      sql/unireg.cc:
        changed define from HAVE_PARTITION_DB to WITH_PARTITION_STORAGE_ENGINE
      storage/ndb/include/kernel/kernel_types.h:
        added my_config.h
      storage/ndb/include/ndb_global.h.in:
        added my_config.h
      storage/ndb/include/ndb_types.h.in:
        added my_config.h
      config/ac-macros/storage.m4:
        New BitKeeper file ``config/ac-macros/storage.m4''
      sql/handlerton.cc.in:
        New BitKeeper file ``sql/handlerton.cc.in''
      6b3a9cae
  29. 03 Oct, 2005 1 commit
    • unknown's avatar
      Next big patch for loadable storage engines! · 5655d31d
      unknown authored
      Handlerton array is now created instead of using sys_table_types_st. All storage engines can now have inits and giant ifdef's are now gone for startup. No compeltely clean yet, handlertons will next be merged with sys_table_types. Federated and archive now have real cleanup if their inits fail. 
      
      
      sql/examples/ha_archive.cc:
        Modifications for new ha_init code. The init method now checks for errors and will not start up if the errors occur.
      sql/examples/ha_archive.h:
        Change for new init method.
      sql/examples/ha_example.cc:
        New handlerton pieces.
      sql/examples/ha_tina.cc:
        New handlerton pieces.
      sql/ha_berkeley.cc:
        New handlerton pieces, plus changes for ha_init changes. I'm not happy with our current "skip" setup.
      sql/ha_berkeley.h:
        Change in init return.
      sql/ha_blackhole.cc:
        Changes for new handlerton pieces.
      sql/ha_federated.cc:
        Changes for new handlerton and true cleanup code.
      sql/ha_heap.cc:
        Changes for new handlerton returns.
      sql/ha_innodb.cc:
        Changes for handlerton code.
      sql/ha_innodb.h:
        Change in init.
      sql/ha_myisam.cc:
        Changes for additional handlerton bits.
      sql/ha_myisammrg.cc:
        Changes for  new handlerton bits.
      sql/ha_ndbcluster.cc:
        Changes for new handlerton bits.
      sql/ha_ndbcluster.h:
        Changes for handlerton bits.
      sql/handler.cc:
        Changes for ditching show_table_type_st types, and collapsing it into a handlerton array. The ha_init now just loops through all handlers to init (much cleaner...). handlertons and sys_table_types should be merged next.
      sql/handler.h:
        Additions for sys_table_types
      sql/log.cc:
        Clean up of binlog for changes in handlerton
      sql/mysql_priv.h:
        Removed unneeded define for binlog_init
      sql/sql_show.cc:
        Changes for change in handlerton to sys_table_types
      5655d31d
  30. 30 Sep, 2005 1 commit
    • unknown's avatar
      Bug#11238 · 8f842e8f
      unknown authored
      "SELECT ... FOR UPDATE executed as consistent read inside LOCK TABLES"
      Do not discard lock_type information as handler::start_stmt() may require knowledge.
      (fixed by Antony)
      
      
      8f842e8f
  31. 23 Sep, 2005 1 commit
    • unknown's avatar
      Fix bug #3443, better foreign key error messsages. · e4b0b0d0
      unknown authored
      innobase/dict/dict0dict.c:
        Add 'add_newline' parameter to dict_print_info_on_foreign_key_in_create_format.
      innobase/include/dict0dict.h:
        Add 'add_newline' parameter to dict_print_info_on_foreign_key_in_create_format.
      innobase/include/os0file.h:
        Add os_file_read_string.
      innobase/include/trx0trx.h:
        Add trx_set_detailed_error and trx_set_detailed_error_from_file functions
        and a detailed_error field to trx_struct.
      innobase/include/ut0mem.h:
        Add ut_strlcpy.
      innobase/os/os0file.c:
        Add os_file_read_string.
      innobase/row/row0ins.c:
        Add row_ins_set_detailed function and call it when needed.
        
        Adapt to changes in dict_print_info_on_foreign_key_in_create_format.
      innobase/trx/trx0trx.c:
        Add trx_set_detailed_error and trx_set_detailed_error_from_file.
        
        Clear trx->detailed_error in trx_create.
      innobase/ut/ut0mem.c:
        Add ut_strlcpy.
      mysql-test/r/innodb.result:
        Add new tests, adapt existing ones whose output was changed.
      mysql-test/t/innodb.test:
        Add new tests, adapt existing ones whose output was changed.
      sql/ha_innodb.cc:
        Add get_error_message.
        
        Clear trx->detailed_error in start_stmt and external_lock.
      sql/ha_innodb.h:
        Add get_error_message.
      sql/handler.cc:
        Add special case code in print_error for HA_ERR_ROW_IS_REFERENCED and
        HA_ERR_NO_REFERENCED_ROW.
        
        Change SETMSG to point to new error messages.
      sql/share/errmsg.txt:
        Add ER_ROW_IS_REFERENCED_2 and ER_NO_REFERENCED_ROW_2.
      e4b0b0d0
  32. 22 Sep, 2005 1 commit
    • unknown's avatar
      InnoDB: correct two misleading comments · aab7ac88
      unknown authored
      innobase/include/data0type.ic:
        Correct the comment of dtype_get_min_size()
      sql/ha_innodb.h:
        Correct the comment of innobase_set_cursor_view()
      aab7ac88
  33. 30 Aug, 2005 1 commit
    • unknown's avatar
      Bug #11946: Review fixes. · c12a760c
      unknown authored
      sql/ha_innodb.cc:
        Add 'value' parameter to reset_auto_increment.
      sql/ha_innodb.h:
        Add 'value' parameter to reset_auto_increment.
      sql/handler.h:
        Add 'value' parameter to reset_auto_increment.
      sql/mysql_priv.h:
        Add 'reset_auto_increment' parameter to mysql_delete.
      sql/sql_delete.cc:
        Add 'reset_auto_increment' parameter to mysql_delete, and use it instead
        of checking for SQLCOM_TRUNCATE.
        
        mysql_truncate: Adapt to changes in mysql_delete.
      sql/sql_parse.cc:
        mysql_execute_command: Adapt to changes in mysql_delete.
      c12a760c
  34. 18 Aug, 2005 1 commit
    • unknown's avatar
      ha_ndbcluster.h, ha_innodb.h: · c77f8d6e
      unknown authored
        corrected compile error
      
      
      sql/ha_innodb.h:
        corrected compile error
      sql/ha_ndbcluster.h:
        corrected compile error
      c77f8d6e
  35. 17 Aug, 2005 1 commit
    • unknown's avatar
      Fix bug #11946, truncate not always resetting the auto-increment counter · fa31a995
      unknown authored
      in InnoDB tables.
      
      
      mysql-test/r/innodb.result:
        New tests.
      mysql-test/t/innodb.test:
        New tests.
      sql/ha_innodb.cc:
        Add reset_auto_increment.
      sql/ha_innodb.h:
        Add reset_auto_increment.
      sql/handler.h:
        Add reset_auto_increment.
      sql/sql_delete.cc:
        Call handler->reset_auto_increment when needed.
      fa31a995
  36. 11 Aug, 2005 1 commit
    • unknown's avatar
      set_var.cc, mysqld.cc, ha_innodb.h, ha_innodb.cc, srv0srv.c, srv0srv.h: · 8158bb03
      unknown authored
        Added innodb_commit_concurrency variable
      
      
      innobase/include/srv0srv.h:
        Added innodb_commit_concurrency variable
      innobase/srv/srv0srv.c:
        Added innodb_commit_concurrency variable
      sql/ha_innodb.cc:
        Added innodb_commit_concurrency variable
      sql/ha_innodb.h:
        Added innodb_commit_concurrency variable
      sql/mysqld.cc:
        Added innodb_commit_concurrency variable
      sql/set_var.cc:
        Added innodb_commit_concurrency variable
      8158bb03
  37. 03 Aug, 2005 1 commit
    • unknown's avatar
      Many files: · a8bb376f
      unknown authored
        Push the patch of Jan Lindstrom: better comments
      ha_innodb.cc:
        Partial fix for Bug #12263 : we let InnoDB always to perform a rollback on the trx object if MySQL closes a connection; but we do print a warning to the .err log if an InnoDB transaction was active; we may remove that print later, since the situation really is not a bug; MySQL just is not aware that some cursor operation started an InnoDB transaction
      
      
      sql/ha_innodb.cc:
        Partial fix for Bug #12263 : we let InnoDB always to perform a rollback on the trx object if MySQL closes a connection; but we do print a warning to the .err log if an InnoDB transaction was active; we may remove that print later, since the situation really is not a bug; MySQL just is not aware that some cursor operation started an InnoDB transaction
      sql/ha_innodb.h:
        Push the patch of Jan Lindstrom: better comments
      innobase/trx/trx0trx.c:
        Push the patch of Jan Lindstrom: better comments
      innobase/srv/srv0srv.c:
        Push the patch of Jan Lindstrom: better comments
      innobase/srv/srv0start.c:
        Push the patch of Jan Lindstrom: better comments
      innobase/row/row0sel.c:
        Push the patch of Jan Lindstrom: better comments
      innobase/read/read0read.c:
        Push the patch of Jan Lindstrom: better comments
      innobase/include/read0read.h:
        Push the patch of Jan Lindstrom: better comments
      innobase/include/trx0trx.h:
        Push the patch of Jan Lindstrom: better comments
      a8bb376f
  38. 26 Jul, 2005 1 commit
    • unknown's avatar
      ndb - · 74371fd2
      unknown authored
        fix length of NDB$PK in unique index table
      
      
      storage/ndb/tools/config.cpp:
        Rename: ndb/tools/config.cpp -> storage/ndb/tools/config.cpp
      sql/ha_innodb.h:
        fix g++ compile error
      sql/ha_ndbcluster.h:
        fix g++ compile error
      storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp:
        fix length of NDB$PK in index table
      74371fd2