Commit graph

1168 commits

Author SHA1 Message Date
inaam
afb44e21e2 branches/zip:
Fixed a mistake in r2539 where I changed UNIV_INLINE to UNIV_INTERN
for the wrong function in btr0sea.h
2008-07-15 19:28:29 +00:00
inaam
208ba019de branches/zip: Merge 2524:2537 from branches/5.1:
------------------------------------------------------------------------
  r2537 | inaam | 2008-07-15 20:46:03 +0300 (Tue, 15 Jul 2008) | 12 lines
  
  branches/5.1   issue# 4
  
  Fixed a timing hole where a thread dropping an index can free the
  in-memory index struct while another thread is still using
  that structure to remove entries from adaptive hash index belonging
  to one of the pages that belongs to the index being dropped.
  
  The fix is to have a reference counter in the index struct and to
  wait for this counter to drop to zero beforing freeing the struct.
  
  Reviewed by: Heikki
  
  ------------------------------------------------------------------------
2008-07-15 17:38:53 +00:00
vasil
72ca76d083 branches/zip:
Fix the failing innodb-index test by adjusting the result to a new
MySQL behavior. The author of the behavioral change
Davi Arnaut <davi@mysql.com>, BZR-r2667:
http://bazaar.launchpad.net/~mysql/mysql-server/mysql-5.1/revision/davi%40mysql.com-20080617141221-8yre8ys9j4uw3xx5?start_revid=joerg%40mysql.com-20080630105418-7qoe5ehomgrcdb89
has been asked if this change is intended:
http://lists.mysql.com/internals/35805

Regardless of the answer we need to adjust to the new behavior to get
the test to succeed. If they switch back, then we will revert this commit.
2008-07-04 12:53:10 +00:00
calvin
b4d2512bbd branches/zip:
Add a space in a warning message. No functional change to the code.
The original message is "invalid innodb_file_format_checkvalue;...".
The new one is "invalid innodb_file_format_check value;..."
2008-07-03 06:41:16 +00:00
calvin
a996e5005a branches/zip:
Fixes issue# 51 - by removing the negative test cases that produce
warnings. The warnings cause mysql-test-run to fail.

Those negative test cases will be moved to separate test/result files.

Approved by:    Sunny
2008-07-03 06:34:51 +00:00
vasil
4cc4b2c775 branches/zip:
Disable part of innodb-index test because MySQL changed its behavior and
is not calling ::add_index() anymore in the following ALTER TABLE:

CREATE TABLE t (a INT) ENGINE=INNODB;
INSERT INTO t VALUES (NULL);
ALTER TABLE t ADD PRIMARY KEY (a);  -- adding primary index on non-NULL column

Previously, in ALTER TABLE, MySQL would call ::add_index() which would
fail with a "primary key cannot contain NULL" error.

The change occured in:

  mysql-5.1$ bzr log -v -r2667
  ------------------------------------------------------------
  revno: 2667
  committer: Davi Arnaut <davi@mysql.com>
  branch nick: 33873-5.1
  timestamp: Tue 2008-06-17 11:12:21 -0300
  message:
    Bug#33873: Fast ALTER TABLE doesn't work with multibyte character sets
    
    The problem was that when comparing tables for a possible
    fast alter table, the comparison was being performed using
    the parsed information and not the final definition.
          
    The solution is to use the possible final table layout to
    compare if a fast alter is possible or not.
  modified:
    mysql-test/include/mix1.inc
    mysql-test/r/alter_table.result
    mysql-test/r/innodb_mysql.result
    mysql-test/t/alter_table.test
    sql/sql_table.cc
  mysql-5.1$
2008-07-02 14:39:13 +00:00
vasil
8093d7a5f8 branches/zip: Merge 2489:2524 from branches/5.1:
------------------------------------------------------------------------
  r2519 | sunny | 2008-06-26 16:55:43 +0300 (Thu, 26 Jun 2008) | 5 lines
  
  branches/5.1: Add test cases and fix a bug where the last AUTOINC cached value
  was not reset to 0 when the table was truncated.
  
  Bug #37531 : After truncate, auto_increment behaves incorrectly for InnoDB
  
  ------------------------------------------------------------------------
  r2520 | vasil | 2008-06-26 17:38:02 +0300 (Thu, 26 Jun 2008) | 7 lines
  
  branches/5.1:
   
  Fix Bug#36941 Performance problem in ha_print_info (SHOW INNODB STATUS)
  by disabling some of the code in ha_print_info() in production builds.
   
  Approved by:	Heikki (via IM)
  
  ------------------------------------------------------------------------
  r2521 | vasil | 2008-06-26 17:39:01 +0300 (Thu, 26 Jun 2008) | 8 lines
  
  branches/5.1:
   
  Fix Bug#36942 Performance problem in lock_get_n_rec_locks (SHOW INNODB STATUS)
  by not calling lock_get_n_rec_locks() from lock_print_info_summary() on
  production builds.
   
  Approved by:	Heikki (via IM)
  
  ------------------------------------------------------------------------
  r2524 | vasil | 2008-07-01 10:37:34 +0300 (Tue, 01 Jul 2008) | 29 lines
  
  branches/5.1:
  
  Merge a change from MySQL (this fixes the failing innodb-replace test):
  
    revno: 2659
    committer: Mattias Jonsson <mattiasj@mysql.com>
    branch nick: b31210-51-bugteam
    timestamp: Tue 2008-06-03 13:25:41 +0200
    message:
      Bug#31210: INSERT DELAYED crashes server when used on partitioned tables
        
      Problem was an unclear error message since it could suggest that
      MyISAM did not support INSERT DELAYED.
      Changed the error message to say that DELAYED is not supported by the
      table, instead of the table's storage engine.
      The confusion is that a partitioned table is in somewhat sense using
      the partitioning storage engine, which in turn uses the ordinary
      storage engine. By saying that the table does not support DELAYED we
      do not give any extra informantion about the storage engine or if it
      is partitioned.
    modified:
      mysql-test/r/innodb-replace.result
      mysql-test/t/innodb-replace.test
      mysql-test/t/merge.test
      mysql-test/t/partition_hash.test
      sql/share/errmsg.txt
      sql/sql_insert.cc


------------------------------------------------------------------------
2008-07-01 06:53:40 +00:00
sunny
dd4efa3993 branches/zip: Function doesn't exist, remove declaration. 2008-06-26 07:24:23 +00:00
vasil
4c37fb93be branches/zip:
Rewrite the function innodb_plugin_init() to support parameters in
different order (in static and dynamic InnoDB) and to support more
parameters in the static InnoDB.
 
The previous implementation traversed both lists at the same time,
skipping parameters in the dynamic list that do not exist in the static
list. E.g. both lists were allowed to be static=(a, b, c),
dynamic=(a, b, c) or static=(a, b, c), dynamic=(a, b, x, c).
 
With the new implementation they are allowed to be
static=(a, b, c), dynamic=(b, a, c) or
static=(a, b, x, c), dynamic=(b, a, c) in addition.

The new implementation has complexity O(N^2) while the old one was O(N),
but this is acceptable sacrifice provided that innodb_plugin_init() is
called once per InnoDB lifetime and that N=39 currently, and N is not
going to increase much in the future, N=number of the InnoDB parameters.

Suggested by:	Sunny
Approved by:	Sunny
2008-06-19 14:24:45 +00:00
vasil
63ad8ddbd6 branches/zip:
Fix the rpl_ddl mysql-test that produces a warnings:

  master.err: rpl.rpl_ddl: 080611 16:27:01 [Warning] MySQL is closing a connection that has an active InnoDB transaction.  13 row modifications will roll back.

the bug was introduced in r2256, which adds "prebuilt->trx->active_trans = 1;"
in ::add_index() and ::final_drop_index() but never calls innobase_commit() or
innobase_rollback() to set back active_trans to 0.

Also, per Heikki's suggestion we remove the calls to trans_register_ha() from
::add_index() and ::final_drop_index(). Following is the IM discussion that
took place about this:

  --- cut ---
  (17:59:05) vasil: 
          unsigned        active_trans:2; /* 1 - if a transaction in MySQL
                                          is active. 2 - if prepare_commit_mutex
                                          was taken */
  
  (17:59:13) vasil: what about 0?
  (17:59:26) Heikki: Hmm
  (17:59:42) Heikki: Maybe in the other cases :)
  (18:01:00) vasil: 
     2   1369  handler/ha_innodb.cc <<<unknown>>>
               if (trx->active_trans == 0) {
     3   1372  handler/ha_innodb.cc <<<unknown>>>
               trx->active_trans = 1;
  
  (18:01:05) vasil: yes, it can be 0
  (18:01:38) Heikki: Maybe no active transaction => the value is 0
  (18:02:03) vasil: probably yes
  (18:09:09) vasil: 
          /* The flag trx->active_trans is set to 1 in
  
          1. ::external_lock(),
          2. ::start_stmt(),
          3. innobase_query_caching_of_table_permitted(),
          4. innobase_savepoint(),
          5. ::init_table_handle_for_HANDLER(),
          6. innobase_start_trx_and_assign_read_view(),
          7. ::transactional_table_lock()
  
          and it is only set to 0 in a commit or a rollback.
  (18:09:14) vasil: this is no longer true
  (18:09:35) vasil: it is also set to 1 in ::final_drop_index
  (18:09:56) vasil: and in ::add_index()
  (18:12:31) Heikki: Please correct the comment :(
  (18:13:01) vasil: it is not only the comment, I am trying to understand what's wrong
  (18:13:28) Heikki: What is the symptom?
  (18:14:37) vasil: can you find this email and the subsequent one:
  
  From: Vasil Dimov <vasil.dimov@oracle.com>
  To: InnoDB Dev <innodb_dev_ww@oracle.com>
  Subject: Re: innodb - marko - r2256 - in branches/zip: handler include lock
          trx
  Date: Wed, 11 Jun 2008 16:33:47 +0300
  
  (18:15:02) vasil: the symptom is 
  
  master.err: rpl.rpl_ddl: 080611 16:27:01 [Warning] MySQL is closing a connection that has
  +an active InnoDB transaction.  13 row modifications will roll back.
  
  (18:16:22) vasil: My understanding till now is that active_trans is set to 1 in ::add_index() and forgotten like this, never set to 0; I wonder if it should be set to 0 somewhere at the end or not set to 1 at all... or there is more...
  (18:16:31) Heikki: Vasil, ok the problem is that Marko forgets to commit the transaction
  (18:16:55) Heikki: An active transaction has to be committed or rolled back
  (18:17:09) vasil: but i can find this in ::add_index():
  
          /* Commit the data dictionary transaction in order to release
          the table locks on the system tables.  Unfortunately, this
          means that if MySQL crashes while creating a new primary key
          inside row_merge_build_indexes(), indexed_table will not be
          dropped on crash recovery.  Thus, it will become orphaned. */
          trx_commit_for_mysql(trx);
  
  (18:17:27) vasil: but this function does not set active_trans to 0
  (18:17:43) Heikki: Let me look
  (18:19:20) vasil: it is only set to 0 in innobase_commit() and in innobase_rollback()
  (18:20:10) Heikki: Ok
  (18:20:59) Heikki: Hmm...
  (18:21:08) vasil: innobase_commit() calls innobase_commit_low() calls trx_commit_for_mysql()
  innobase_commit() sets active_trans=0
  (18:21:26) Heikki: active_trans is strictly a ha_innodb.cc variable
  (18:21:53) Heikki: It is intended to be used in transactions visible to MySQL
  (18:22:25) Heikki: I think Marko should call innobase_commit()
  (18:23:51) vasil: but still set active_trans=1 inside :add_index() inside handler/handler0alter.cc?
  (18:24:12) Heikki: Hmm
  (18:24:56) Heikki: I think the transaction is NOT really visible to MySQL
  (18:24:57) vasil: 
  > Author: marko
  > Date: 2008-01-25 16:26:07 +0200 (Fri, 25 Jan 2008)
  > New Revision: 2256
  >
  > Log:
  > branches/zip: Fast index creation: Release locks on system tables before
  > creating indexes.  Lock the user table inside the user transaction.
  >
  > enum trx_dict_op: Remove TRX_OP_INDEX_MAY_WAIT.
  >
  > ha_innobase::add_index(): Lock the user tables within prebuilt->trx.
  > Commit the data dictionary transaction before creating indexes.
  >
  > ha_innobase::final_drop_index(): Lock the user table within prebuilt->trx.
  
  (18:26:41) Heikki: Let me look at the old ::create_table()
  (18:27:25) Heikki: Ok, in the old code, the transactions are internal to InnoDB, not visible to MySQL
  (18:27:46) Heikki: I think it is an error to set active_trans=1 inside :add_index() i
  (18:28:11) Heikki: MySQL is not really interested in HOW the engine adds the index. In a transaction or not.
  (18:28:26) vasil: this is the change inside drop_index(), that is supposed to "Lock the user table within prebuilt->trx":
  (18:28:37) vasil: 
  @@ -1093,27 +1101,25 @@ ha_innobase::final_drop_index(
    /* Create a background transaction for the operations on
    the data dictionary tables. */
    trx = trx_allocate_for_mysql();
    trx_start_if_not_started(trx);
   
    trans_register_ha(user_thd, FALSE, ht);
  + prebuilt->trx->active_trans = 1;
   
    trx->mysql_thd = user_thd;
    trx->mysql_query_str = thd_query(user_thd);
   
    /* Flag this transaction as a dictionary operation, so that
  - the data dictionary will be locked in crash recovery.  Prevent
  - warnings if row_merge_lock_table() results in a lock wait,
  - i.e., when another transaction is holding a conflicting lock
  - on the table, e.g., because of SELECT ... FOR UPDATE. */
  - trx_set_dict_operation(trx, TRX_DICT_OP_INDEX_MAY_WAIT);
  + the data dictionary will be locked in crash recovery. */
  + trx_set_dict_operation(trx, TRX_DICT_OP_INDEX);
   
    /* Lock the table exclusively, to ensure that no active
    transaction depends on an index that is being dropped. */
    err = convert_error_code_to_mysql(
  -  row_merge_lock_table(trx, prebuilt->table, LOCK_X),
  +  row_merge_lock_table(prebuilt->trx, prebuilt->table, LOCK_X),
     user_thd);
   
    if (UNIV_UNLIKELY(err)) {
   
     /* Unmark the indexes to be dropped. */
     row_mysql_lock_data_dictionary(trx);
  @@ -1125,14 +1131,12 @@ ha_innobase::final_drop_index(
     }
   
     row_mysql_unlock_data_dictionary(trx);
     goto func_exit;
    }
   
  - trx_set_dict_operation(trx, TRX_DICT_OP_INDEX);
  -
    /* Drop indexes marked to be dropped */
   
    row_mysql_lock_data_dictionary(trx);
   
    index = dict_table_get_first_index(prebuilt->table);
   
  @@ -1159,12 +1163,13 @@ ha_innobase::final_drop_index(
    dict_table_check_for_dup_indexes(prebuilt->table);
   #endif
    row_mysql_unlock_data_dictionary(trx);
   
   func_exit:
    trx_commit_for_mysql(trx);
  + trx_commit_for_mysql(prebuilt->trx);
   
    /* Flush the log to reduce probability that the .frm files and
    the InnoDB data dictionary get out-of-sync if the user runs
    with innodb_flush_log_at_trx_commit = 0 */
   
    log_buffer_flush_to_disk();
  
  (18:28:43) Heikki: Let me look
  (18:29:05) vasil: this is the change inside drop_index(), that is supposed to "Lock the user table within prebuilt->trx"
  (18:29:26) Heikki:   trans_register_ha(user_thd, FALSE, ht);
  + prebuilt->trx->active_trans = 1;
  (18:29:34) Heikki: I think the above code should be removed
  (18:29:53) Heikki: MySQL is not interested in InnoDB's transaction in this case
  (18:30:33) Heikki: Alternatively, we should use innobase_commit() instead of trx_commit_...
  (18:31:01) vasil: but there are many places in ::add_index() where it could return before reaching the trx_commit...
  (18:31:12) vasil: leaving active_traans=1
  (18:31:56) Heikki: Does Marko handle the errors with trx_rollback()?
  (18:32:08) vasil: let me see..
  (18:32:30) Heikki: It is risky to leave error handling to MySQL :(
  (18:32:35) vasil: 
   651         if (UNIV_UNLIKELY(error)) {
   652 err_exit:
   653                 mem_heap_free(heap);
   654                 trx_general_rollback_for_mysql(trx, FALSE, NULL);
   655                 trx_free_for_mysql(trx);
   656                 trx_commit_for_mysql(prebuilt->trx);
   657                 DBUG_RETURN(error);
   658         }
  
  (18:32:43) Heikki: Ok
  (18:33:25) Heikki: Please remove the ha_register... and active_trx =1 ....
  (18:33:42) Heikki: Then check if it prints something
  (18:34:08) Heikki: I believe MySQL is not interested in how the engine does the index build
  (18:34:11) vasil: why remove ha_register?
  (18:34:28) Heikki: Because there is no transaction visible to MySQL
  (18:34:53) vasil: the ha_register call was there from before
  (18:35:09) Heikki: Registers that InnoDB takes part in an SQL statement, so that MySQL knows to
  roll back the statement if the statement results in an error. This MUST be
  called for every SQL statement that may be rolled back by MySQL. Calling this
  several times to register the same statement is allowed, too. 
  (18:36:01) Heikki: Hmm
  (18:36:17) Heikki: Obviously, MySQL does NOT call commit at the end
  (18:36:36) Heikki: Because then innobase_commit() would set active_trx=0!
  (18:37:00) Heikki: Ok, maybe MySQL thinks CREATE INDEX is NOT a transactional statement
  (18:37:21) Heikki: Then, .._register_.. should be removed
  (18:37:51) Heikki: It is logical this way. If it also passes test, even better
  (18:38:21) vasil: ha_registrer in add_index() was added in r1845 and in drop_index() in r2128, let me read the comments..
  (18:38:55) vasil: 
  ------------------------------------------------------------------------
  r1845 | marko | 2007-09-13 13:31:54 +0300 (Thu, 13 Sep 2007) | 3 lines
  
  branches/zip: Move the code related to fast index creation
  (smart ALTER TABLE) from ha_innodb.cc to a separate module, handler0alter.cc.
  
  (18:39:05) Heikki: One thing you must check is that MySQL does write the CREATE INDEX in the binlog, even if we remove the _register_
  (18:39:41) Heikki: I assume Marko did not know if MySQL thinks CREATE INDEX is transactional or not
  (18:39:49) Heikki: He thought it is transactional
  (18:39:53) vasil: 
  ------------------------------------------------------------------------
  r2128 | marko | 2007-11-29 12:34:55 +0200 (Thu, 29 Nov 2007) | 5 lines
  
  branches/zip: ha_innobase::final_drop_index(): Allocate a separate transaction
  for dropping the index trees, and set the dictionary operation flag, similar
  to what ha_innobase::add_index() does.  This should ensure correct crash
  recovery.
  
  (18:40:10) Heikki: Ok
  (18:40:17) vasil: how do you know CREATE INDEX is not transactional?
  (18:40:33) Heikki: You cannot roll it back
  (18:40:44) vasil: ok
  (18:41:03) Heikki: MySQL devs probably thought this way
  (18:44:15) vasil: hmm
  (18:44:21) vasil: about r1845
  (18:45:00) vasil: the comments says "move the code" but it is actually "move and change the code"
  (18:45:28) Heikki: Well
  (18:45:29) vasil: the code that is deleted from ha_innodb is this:
  (18:45:32) vasil: 
  -       update_thd(ha_thd());
  -
  -       heap = mem_heap_create(1024);
  -
  -       /* In case MySQL calls this in the middle of a SELECT query, release
  -       possible adaptive hash latch to avoid deadlocks of threads. */
  -       trx_search_latch_release_if_reserved(check_trx_exists(user_thd));
  -
  -       trx = trx_allocate_for_mysql();
  -       trx_start_if_not_started(trx);
  -
  -       innobase_register_stmt(ht, user_thd);
  -
  -       trx->mysql_thd = user_thd;
  
  (18:45:38) vasil: (in add_index)
  (18:45:48) inaam left the room.
  (18:45:52) vasil: but the new one in handler0alter is this:
  (18:46:16) vasil: 
  +       update_thd(ha_thd());
  +
  +       heap = mem_heap_create(1024);
  +
  +       /* In case MySQL calls this in the middle of a SELECT query, release
  +       possible adaptive hash latch to avoid deadlocks of threads. */
  +       trx_search_latch_release_if_reserved(check_trx_exists(user_thd));
  +
  +       trx = trx_allocate_for_mysql();
  +       trx_start_if_not_started(trx);
  +
  +       trans_register_ha(user_thd, FALSE, ht);
  +
  +       trx->mysql_thd = user_thd;
  
  (18:46:48) vasil: innobase_register_stmt(ht, user_thd); was substituted with trans_register_ha(user_thd, FALSE, ht); during the move
  (18:46:49) Heikki: I do not see how MySQL could call it in the middle of a SELECT query!
  (18:46:59) Heikki: Yes
  (18:47:21) Heikki: Did Marko change innobase_register_stmt() code too?
  (18:48:05) vasil: not in this commit r1845
  (18:48:54) Heikki: Anyway, please test a version where you remove the register thing
  (18:49:08) vasil: and active_trans=1?
  (18:49:15) Heikki: Remove that, too
  (18:49:35) Heikki: innobase_register_stmt(
  /*===================*/
          handlerton*     hton,   /* in: Innobase hton */
          THD*    thd)    /* in: MySQL thd (connection) object */
  {
          DBUG_ASSERT(hton == innodb_hton_ptr);
          /* Register the statement */
          trans_register_ha(thd, FALSE, hton);
  }
  
  (18:50:23) Heikki: looks pretty much the same as what Marko has in the later version
  (18:50:43) vasil: innobase_register_stmt() was added in add_index() in r1584
  (18:50:47) vasil: 
  r1584 | marko | 2007-06-18 15:46:42 +0300 (Mon, 18 Jun 2007) | 12 lines
  
  branches/zip: ha_innobase::add_index(): Split some assertions.
  Remove the variable parent_trx.
  
  Call innobase_register_stmt() in order to work around a MySQL bug
  in mysql_alter_table(), which, as of
  
  ChangeSet@1.2482.61.2, 2007-06-07 16:37:15+02:00, joerg@trift2. +8 -0
  
  commits the transaction before calling ha_innobase::add_index().
  Without re-registering the statement, the ha_commit_stmt(thd)
  in mysql_alter_table() would not invoke innobase_commit.
  
  (18:51:56) Heikki: But it does not seem to invoke it now, because active_trans is left 1!
  (18:54:15) Heikki: Apparently, there has been confusion also among MySQL devs whether CREATE INDEX is transactional or not
  (18:54:45) vasil: :-(
  (18:54:53) Heikki: The most robust way is to handle all commits and rollbacks internally inside InnoDB and not tell MySQL anything about InnoDB's internal transactions
  (18:55:01) Heikki: That is my idea
  (18:55:20) Heikki: Then MySQL cannot spoil the logic of the code
  (18:55:59) vasil: mysql_alter_table() is ~1100 lines
  (18:56:08) vasil: and you suggest what?
  (18:56:43) Heikki: I suggest removing the ..._register_... thing and active_trans = 1
  (18:57:08) Heikki: Those things tell MySQL that there is a transaction going on
  (18:57:14) Heikki: Better not to tell
  (18:57:29) vasil: and possibly ignoring the above comment in r1584, "Call innobase_register_stmt() in order to work around a MySQL bug
  in mysql_alter_table()........."
  (18:57:32) vasil: ?
  (18:57:36) Heikki: Yes
  (18:57:38) vasil: ok
  (18:57:44) vasil: same for drop_index?
  (18:57:48) Heikki: Yes
  (18:58:51) vasil: testing
  Index: handler/handler0alter.cc
  ===================================================================
  --- handler/handler0alter.cc (revision 2498)
  +++ handler/handler0alter.cc (working copy)
  @@ -632,14 +632,14 @@ ha_innobase::add_index(
   
    /* Create a background transaction for the operations on
    the data dictionary tables. */
    trx = trx_allocate_for_mysql();
    trx_start_if_not_started(trx);
   
  - trans_register_ha(user_thd, FALSE, ht);
  - prebuilt->trx->active_trans = 1;
  + //trans_register_ha(user_thd, FALSE, ht);
  + //prebuilt->trx->active_trans = 1;
   
    trx->mysql_thd = user_thd;
    trx->mysql_query_str = thd_query(user_thd);
   
    innodb_table = indexed_table
     = dict_table_get(prebuilt->table->name, FALSE);
  @@ -1081,14 +1081,14 @@ ha_innobase::final_drop_index(
   
    /* Create a background transaction for the operations on
    the data dictionary tables. */
    trx = trx_allocate_for_mysql();
    trx_start_if_not_started(trx);
   
  - trans_register_ha(user_thd, FALSE, ht);
  - prebuilt->trx->active_trans = 1;
  + //trans_register_ha(user_thd, FALSE, ht);
  + //prebuilt->trx->active_trans = 1;
   
    trx->mysql_thd = user_thd;
    trx->mysql_query_str = thd_query(user_thd);
   
    /* Flag this transaction as a dictionary operation, so that
    the data dictionary will be locked in crash recovery. */
  
  (18:59:07) vasil: not warnings
  (18:59:22) Heikki: Did it create the indexes
  (18:59:36) vasil: I did test only removing active_trans=1 and it removed the warnings too
  (18:59:38) vasil: dunno
  (18:59:54) Heikki: That is the most important thing to check :)
  (19:00:10) vasil: :)
  (19:00:38) vasil: it is some mysqltest that is 610 lines
  (19:00:48) vasil: and it happens at the end
  (19:01:02) vasil: lets see how may add index statements...
  (19:01:11) vasil: 0
  (19:01:26) Heikki: Mostly I am concerned that MySQL might work wrong without that _register_ thing
  (19:03:28) vasil: could be
  (19:03:49) Heikki: You need to check it still calls ::add_index()
  (19:05:15) vasil: well, the change we made is inside ::add_index() how could it result in mysql stopping to call ::add_index()?
  (19:05:39) vasil: if it calls it twice...
  (19:05:43) Heikki: :-D
  (19:08:34) vasil: I guess it must have created the index, because the test is doing SHOW INDEX after CREATE INDEX and after DROP INDEX
  (19:08:43) vasil: the test would have failed if the index was not created
  (19:09:10) Heikki: You need to check that a query using that index will have the right EXPLAIN and result
  (19:15:04) vasil: this is with the patch:
  +CREATE TABLE t (a INT) ENGINE=innodb;
  +CREATE INDEX ti ON t(a);
  +INSERT INTO t VALUES (1), (2), (3);
  +EXPLAIN SELECT * FROM t WHERE a=2;
  +id select_type table type possible_keys key key_len ref rows Extra
  +1 SIMPLE t ref ti ti 5 const 1 Using where; Using index
  +SELECT * FROM t WHERE a=2;
  +a
  +2
  
  (19:15:15) Heikki: :)
  (19:15:46) vasil: this is with the original code:
  +CREATE TABLE t (a INT) ENGINE=innodb;
  +CREATE INDEX ti ON t(a);
  +INSERT INTO t VALUES (1), (2), (3);
  +EXPLAIN SELECT * FROM t WHERE a=2;
  +id select_type table type possible_keys key key_len ref rows Extra
  +1 SIMPLE t ref ti ti 5 const 1 Using where; Using index
  +SELECT * FROM t WHERE a=2;
  +a
  +2
  
  (19:15:59) vasil: it is the same
  (19:16:06) vasil: do you think this is sufficient?
  (19:16:20) Heikki: No, you need to do some manual tests, too
  (19:16:28) vasil: this is manual test
  (19:16:37) Heikki: Several of them
  (19:16:46) vasil: what should they do?
  (19:17:13) Heikki: Test tables of different sizes, different indexes
  (19:17:27) Heikki: CREATE several indexes at a time
  (19:19:14) Heikki: Dinner time -->
  --- cut ---

Approved by:	Heikki
2008-06-19 14:19:04 +00:00
vasil
969f320de8 branches/zip:
Add the patches that are needed to make autotest.sh succeed.
2008-06-19 06:59:36 +00:00
inaam
48075f147c branches/zip: fixes issue# 36
Fixed the issue where an unchanged blob column that is part of the
primary key as well is lost if it is externally stored.

The fix is provided by Marko.

Reviewed by: Sunny
2008-06-18 22:20:53 +00:00
inaam
6fe27b5d6c branches/zip: internal mantis issue#49
This is to fix an unintended side effect of file_format_check changes.
We were reading the trx system page (TRX_SYS_PAGE_NO) before starting
recovery and that resulted in redo logs not being applied to the page.
The fix is to force a reread by calling buf_pool_invalidate().
This, however, made necessary that any writes to page are deferred to
until after the redo log application.

Reviewed by: Sunny
2008-06-18 15:45:34 +00:00
sunny
ccf2f704e1 branches/zip: Add a clarifying comment to the insert buffer mutex/lock
order check in sync0sync.c.
2008-06-17 19:32:18 +00:00
sunny
33c5bfc756 branches/zip: Cover the diagnostic print statement with a suitable lock. It
caused an assertion failure during testing.
2008-06-17 19:15:37 +00:00
sunny
61b529a9b5 branches/zip: A small buffer pool size (currently defined as 5M) in a
debug build leads to deadlocks. Print a warning at startup.

See issue:43
2008-06-17 19:12:07 +00:00
vasil
6fefe3bbdc branches/zip:
Update the ChangeLog.
2008-06-09 10:27:39 +00:00
vasil
931e02c36b branches/zip: Merge 2485:2489 from branches/5.1:
------------------------------------------------------------------------
  r2488 | vasil | 2008-06-09 13:53:12 +0300 (Mon, 09 Jun 2008) | 15 lines
  Changed paths:
     M /branches/5.1/mysql-test/innodb.result
  
  branches/5.1:
  
  Merge change from MySQL (this almost fixes the failing innodb test):
  
    ChangeSet@1.2613, 2008-05-07 09:58:21+04:00, sergefp@mysql.com +5 -0
      BUG#35850 "Performance regression in 5.1.23/5.1.24"
      - Disable the "prefer full scan on clustered primary key over full scan
        of any secondary key" rule introduced by BUG#35850.
      - Update test results accordingly
      (bk trigger: file this for BUG#35850)
    
      mysql-test/r/innodb.result@1.214, 2008-05-07 09:57:31+04:00, sergefp@mysql.com +15 -15
        BUG#35850 "Performance regression in 5.1.23/5.1.24"
        - Update test results
  
  ------------------------------------------------------------------------
  r2489 | vasil | 2008-06-09 14:16:51 +0300 (Mon, 09 Jun 2008) | 20 lines
  Changed paths:
     M /branches/5.1/mysql-test/innodb.result
  
  branches/5.1:
  
  Merge change from MySQL (this fixes the failing innodb test):
  
    ChangeSet@1.2628  2008-05-13 17:01:02+05:00  gshchepa@host.loc
      Merge host.loc:/work/bugs/5.0-bugteam-30059
      into  host.loc:/work/bk/5.1-bugteam
  
  NOTE: the diff for mysql-test/r/innodb.result in this ChangeSet looks
  empty but the line:
  
  Data truncated for column 'c' at row 1
  
  is present in annotated mysql-test/r/innodb.result@1.215 [1]
  and not present in annotated mysql-test/r/innodb.result@1.216 [2] so it
  must have been deleted in the above ChangeSet.
  
  [1] http://mysql.bkbits.net:8080/mysql-5.1/mysql-test/r/innodb.result?PAGE=anno&REV=4825e033JNz_463Ha9pwInSjqLvIQg
  [2] http://mysql.bkbits.net:8080/mysql-5.1/mysql-test/r/innodb.result?PAGE=anno&REV=482982fcUoskWjhU2xMH2BZ4Gyukfg
  
  ------------------------------------------------------------------------
2008-06-09 10:25:09 +00:00
vasil
7cb41a85b7 branches/zip:
Update the ChangeLog.
2008-06-06 15:34:17 +00:00
vasil
b21c94dc01 branches/zip: Merge 2437:2485 from branches/5.1:
(r2478 was skipped for the obvious reason)

  ------------------------------------------------------------------------
  r2464 | vasil | 2008-05-19 17:59:42 +0300 (Mon, 19 May 2008) | 9 lines
  
  branches/5.1:
  
  Fix Bug#36600 SHOW STATUS takes a lot of CPU in buf_get_latched_pages_number
  
  by removing the Innodb_buffer_pool_pages_latched variable from
  SHOW STATUS output in non-UNIV_DEBUG compilation.
   
  Approved by:	Heikki
  
  ------------------------------------------------------------------------
  r2466 | calvin | 2008-05-20 01:37:14 +0300 (Tue, 20 May 2008) | 12 lines
  
  branches/5.1:
  
  Fix Bug#11894 innodb_file_per_table crashes w/ Windows .sym symbolic
  link hack
  
  The crash was due to un-handled error 3 (path not found). In the case
  of file per table, change the call to os_file_handle_error_no_exit()
  from os_file_handle_error(). Also, checks for full path pattern during
  table create (Windows only), which is used in symbolic link and temp
  table creation.
  
  Approved by:	Heikki
  ------------------------------------------------------------------------
  r2478 | sunny | 2008-05-23 08:29:08 +0300 (Fri, 23 May 2008) | 3 lines
  
  branches/5.1: Fix for bug# 36793. This is a back port from branches/zip. This
  code has been tested on a big-endian machine too.
  
  ------------------------------------------------------------------------
  r2480 | vasil | 2008-05-27 11:40:07 +0300 (Tue, 27 May 2008) | 11 lines
  
  branches/5.1:
  
  Fix Bug#36819 ut_usectime does not handle errors from gettimeofday
  
  by retrying gettimeofday() several times if it fails in ut_usectime().
  If it fails on all calls then return error to the caller to be handled
  at higher level.
  
  Update the variable innodb_row_lock_time_max in SHOW STATUS output only
  if ut_usectime() was successful.
  
  ------------------------------------------------------------------------
  r2482 | sunny | 2008-05-28 12:18:35 +0300 (Wed, 28 May 2008) | 5 lines
  
  branches/5.1: Fix for Bug#35602, "Failed to read auto-increment value from
  storage engine". The test for REPLACE was an error of ommission since it's
  classified as a simple INSERT. For REPLACE statements we don't acquire
  the special AUTOINC lock for AUTOINC_NEW_STYLE_LOCKING with this fix.
  
  ------------------------------------------------------------------------
  r2485 | vasil | 2008-05-28 16:01:14 +0300 (Wed, 28 May 2008) | 9 lines
  
  branches/5.1:
  
  Fix Bug#36149 Read buffer overflow in srv0start.c found during "make test"
  
  Use strncmp(3) instead of memcmp(3) to avoid reading past end of the string
  if it is empty (*str == '\0'). This bug is _not_ a buffer overflow.
  
  Discussed with:	Sunny (via IM)
  
  ------------------------------------------------------------------------
2008-06-06 15:24:58 +00:00
vasil
4148a376c0 branches/zip:
Update the ChangeLog
2008-05-21 06:29:55 +00:00
vasil
273876856d branches/zip:
Non-functional change - conform to our coding style and make more readbale
(hopefully) by not using variables with names "v" and "w".
2008-05-19 08:35:38 +00:00
inaam
862b707f43 branches/zip:
Fixed compilation warning introduced during POSIX AIO clean up patch.

Spotted by: Sunny and Vasil
2008-05-17 22:31:11 +00:00
inaam
18c421230e branches/zip:
Clean up the POSIX_ASYNC_IO code which is currently not used and is unlikely to be ever used.
2008-05-16 14:41:18 +00:00
sunny
979ccab900 branches/zip: Fix bug introduced in r2453. 2008-05-14 04:37:24 +00:00
sunny
b2f0382e51 branches/zip: Fix bug# 36172. The zip code changes a precondition that a
page must be big enough to store two records, this is done because compression
later may very well result in two records residing on the same page. This
change handles the case where only one record fits on a page. We don't
split the page in the middle by default if there is only record on the page.
We only split the page if the tuple to be inserted is less than existing
record. That way the existing record is copied over to the right page
during the split and the new tuple is inserted to the left.
2008-05-08 10:08:09 +00:00
sunny
54d4bb06d9 branches/zip: Non functional change. 2008-05-08 00:06:46 +00:00
vasil
d36e588da6 branches/zip:
Add a ChangeLog entry for Bug#36222
2008-05-07 14:01:33 +00:00
vasil
b3fabcfb87 branches/zip:
Add new entries to the ChangeLog
2008-05-07 11:20:37 +00:00
vasil
68ba0e9f28 branches/zip:
Remove too detailed entry from ChangeLog. Best to have only user-visible
changes there.
2008-05-07 11:01:18 +00:00
sunny
1cd233d2d7 branches/zip: Non functional change to error message. 2008-05-06 22:29:53 +00:00
calvin
fc02f76d78 branches/zip:
Implement the system tablespace tagging described on the wiki:
https://svn.innodb.com/innobase/InnoDB_version_and_feature_compatibility

A brief description of the changes:

* The file format tag will be saved in the trx system page, starting at
  (UNIV_PAGE_SIZE - 16) for 8 bytes.
* The configuration parameter innodb_file_format_check is introduced.
  This variable can be set to on/off and any of the supported file
  formats in the configuration file, but can only be set to any of
  the supported file formats during runtime. The default is on.
* During table create/open, check the current file format against
  the max in file_format_max. If the current file format is newer,
  update file_format_max and tag the system tablespace with the
  newer one in a normal mtr.
* During startup, write the tag to the error log and check it against
  DICT_TF_FORMAT_MAX. Refuse to start with error, if
  -- DICT_TF_FORMAT_MAX < the tag, and
  -- innodb_file_format_check is ON
  Print out a warning , if
  -- DICT_TF_FORMAT_MAX < the tag, but
  -- innodb_file_format_check is off
* The system tablespace tag is re-settable using:
  set innodb_file_format_check = <file_format>

Approved by:	Sunny
2008-05-06 15:00:25 +00:00
vasil
3bad6e2511 branches/zip:
Add InnoDB version in these places:
 
* In INFORMATION_SCHEMA.PLUGINS.PLUGIN_VERSION, only 1.2 out of 1.2.3
  because MySQL supports only one dot there
 
* At startup:
  "080501 12:28:06 InnoDB Plugin 1.0.1 started; log sequence number 46509"

* In a server variable innodb_version;
  mysql> select @@innodb_version;
  +------------------+
  | @@innodb_version |
  +------------------+
  | 1.0.1            |
  +------------------+

Approved by:	Sunny
2008-05-06 11:10:09 +00:00
vasil
2daf8121c0 branches/zip:
Allow InnoDB I_S plugins to be installed when InnoDB storage engine is
not installed but show empty tables when SELECTing from them in this
case. Set srv_was_started to FALSE at the end of
innobase_shutdown_for_mysql() so the I_S plugins can detect if InnoDB is
uninstalled.
 
This is needed to workaround the MySQL
Bug#36399 Double free bug when INFORMATION_SCHEMA plugin init function fails
and is more flexible as it allows I_S plugins to be installed before the
InnoDB plugin and detects if the latter is uninstalled after this.

Approved by:	Heikki
2008-05-06 10:01:41 +00:00
sunny
2a1e67ff63 branches/zip: Fix a bug in the sync debug code where a lock with level
SYNC_LEVEL_VARYING would cause an assertion failure when a thread tried
to release it. We still have to check because it's a varying lock and
could have been added later, so if the lookup fails then we simply ignore
it and return TRUE.
2008-05-05 22:56:01 +00:00
sunny
1ba7f40775 branches/zip: Drop the tables that were created in the test. 2008-05-04 09:39:30 +00:00
vasil
d1e11ffc45 branches/zip:
Change an error message.

Suggested by:	Ken
2008-05-04 07:06:59 +00:00
vasil
9dd184effe branches/zip: Merge 2423:2437 from branches/5.1:
------------------------------------------------------------------------
  r2429 | vasil | 2008-04-30 11:19:06 +0300 (Wed, 30 Apr 2008) | 10 lines
  
  branches/5.1:
  
  * Use INNODB_CFLAGS insead of cluttering CFLAGS with InnoDB specific
    flags. CFLAGS are used to compile every file in the MySQL source tree.
  
  * Add INNODB_DYNAMIC_CFLAGS to the flags of the dynamic plugin and use
    -prefer-non-pic to make the dynamic plugin faster on i386.
  
  Approved by:	Sunny
  
  ------------------------------------------------------------------------
  r2430 | vasil | 2008-04-30 11:48:35 +0300 (Wed, 30 Apr 2008) | 8 lines
  
  branches/5.1:
  
  Use CFLAGS instead of INNODB_CFLAGS to avoid having incompatible flags
  inserted in CFLAGS and INNODB_CFLAGS and to avoid compiling mysql and
  innodb with different flags.
  
  Discussed with:	Sunny
  
  ------------------------------------------------------------------------
  r2431 | vasil | 2008-04-30 11:54:49 +0300 (Wed, 30 Apr 2008) | 4 lines
  
  branches/5.1:
  
  Fix r2430, it should be CFLAGS="$CFLAGS ..." not CFLAGS="..."
  
  ------------------------------------------------------------------------
  r2432 | vasil | 2008-04-30 11:58:38 +0300 (Wed, 30 Apr 2008) | 4 lines
  
  branches/5.1:
  
  Non-functional change: use tabs for indentation in plug.in.
  
  ------------------------------------------------------------------------
  r2433 | vasil | 2008-04-30 12:02:35 +0300 (Wed, 30 Apr 2008) | 5 lines
  
  branches/5.1:
  
  Add vim modeline to hint it that plug.in is a config file
  so it can be colorized.
  
  ------------------------------------------------------------------------
  r2434 | vasil | 2008-04-30 18:45:44 +0300 (Wed, 30 Apr 2008) | 17 lines
  
  branches/5.1:
  
  Merge changes from MySQL:
  
    ChangeSet@1.2645, 2007-12-19 13:24:43+00:00, jperkin@chorlton.adsl.perkin.org.uk +14 -0
      Add new pkgplugindir handling to seperate plugins from libraries,
      and allow override for binary distributions.  Extend mysql_config
      to print compiled-in plugin location for third-party plugins to
      use.  Resolves bug#31736.
  
  and
  
    ChangeSet@1.2646, 2008-01-02 13:00:46+00:00, jperkin@chorlton.adsl.perkin.org.uk +11 -0
      Use pkglibdir to simplify pkgplugindir, and fix the path in a
      couple of Makefiles.  Continuation of the fix for bug#31736.
  
  
  ------------------------------------------------------------------------
  r2435 | vasil | 2008-04-30 19:04:36 +0300 (Wed, 30 Apr 2008) | 10 lines
  
  branches/5.1:
  
  Merge change from MySQL:
  
    ChangeSet@1.2563, 2008-03-18 19:42:04+04:00, gluh@mysql.com +1 -0
      Bug#35406 5.1-opt crashes on select from I_S.REFERENTIAL_CONSTRAINTS
      added intialization of f_key_info.referenced_key_name for the case when
      referenced table is dropped
  
  
  ------------------------------------------------------------------------
  r2436 | vasil | 2008-04-30 19:15:46 +0300 (Wed, 30 Apr 2008) | 7 lines
  
  branches/5.1:
  
  Non-functional white space change in Makefile.am:
  Use tabs for indentation and be consistent about spaces around the
  equal sign.
  
  
  ------------------------------------------------------------------------
  r2437 | vasil | 2008-04-30 20:36:11 +0300 (Wed, 30 Apr 2008) | 8 lines
  
  branches/5.1:
  
  Fix Bug#36434 ha_innodb.so is installed in the wrong directory
  
  Change pkglib_LTLIBRARIES with pkgplugin_LTLIBRARIES which has been
  forgotten in this commit: http://lists.mysql.com/commits/40206
  
  
  ------------------------------------------------------------------------
2008-04-30 16:59:16 +00:00
vasil
508c71fe07 Rename install_dynamic.sql to install_innodb_plugins.sql
Suggested by:	Ken
2008-04-30 07:02:16 +00:00
vasil
5e446ef781 Add SQL script to install InnoDB if it is built as a dynamic plugin
Suggested by:	Ken
2008-04-30 06:31:25 +00:00
vasil
107297fc8b Remove README from branches/zip. This file is added by
https://svn.innodb.com/svn/plugin/trunk/build/source_release.sh
which takes it from
https://svn.innodb.com/svn/plugin/trunk/support/README-source
2008-04-30 06:24:23 +00:00
vasil
4d0cd8e40f Add ChangeLog.
Formatted in compliance with many GNU tools, roughly described in
http://www.gnu.org/software/guile/changelogs/guile-changelogs_toc.html
2008-04-30 06:20:52 +00:00
vasil
55db138b95 branches/zip: Merge 2384:2423 from branches/5.1:
------------------------------------------------------------------------
  r2386 | vasil | 2008-03-27 07:45:02 +0200 (Thu, 27 Mar 2008) | 22 lines
  
  branches/5.1:
  
  Merge change from MySQL (this fixes the failing innodb test):
  
  ChangeSet@1.1810.3601.4, 2008-02-07 02:33:21+04:00, gshchepa@host.loc +9 -0
    Fixed bug#30059.
    Server handles truncation for assignment of too-long values
    into CHAR/VARCHAR/TEXT columns in a different ways when the
    truncated characters are spaces:
    1. CHAR(N) columns silently ignore end-space truncation;
    2. TEXT columns post a truncation warning/error in the
       non-strict/strict mode.
    3. VARCHAR columns always post a truncation note in
       any mode.
  
    Space truncation processing has been synchronised over
    CHAR/VARCHAR/TEXT columns: current behavior of VARCHAR
    columns has been propagated as standard.
  
    Binary-encoded string/BLOB columns are not affected.
  
  
  ------------------------------------------------------------------------
  r2387 | vasil | 2008-03-27 08:49:05 +0200 (Thu, 27 Mar 2008) | 8 lines
  
  branches/5.1:
  
  Check whether *trx->mysql_query_str is != NULL in addition to
  trx->mysql_query_str. This adds more safety.
  
  This may or may not fix Bug#35226 RBR event crashes slave.
  
  
  ------------------------------------------------------------------------
  r2388 | vasil | 2008-03-27 14:02:34 +0200 (Thu, 27 Mar 2008) | 7 lines
  
  branches/5.1:
  
  Swap the order in which mysql_thd, mysql_query_str and *mysql_query_str
  are checked for non-NULL.
  
  Suggested by:	Marko
  
  ------------------------------------------------------------------------
  r2419 | vasil | 2008-04-23 19:08:06 +0300 (Wed, 23 Apr 2008) | 9 lines
  
  branches/5.1:
  
  Change the fix for Bug#32440 to show bytes instead of kilobytes in
  INFORMATION_SCHEMA.TABLES.DATA_FREE.
  
  Suggested by:	Domas Mituzas <domas@mysql.com>
  Approved by:	Heikki
  
  
  ------------------------------------------------------------------------
  r2420 | calvin | 2008-04-24 15:25:30 +0300 (Thu, 24 Apr 2008) | 4 lines
  
  branches/5.1: Fix bug#29507 TRUNCATE shows to many rows effected
  
  In InnoDB, the row count is only a rough estimate used by SQL
  optimization. InnoDB is now return row count 0 for TRUNCATE operation.
  ------------------------------------------------------------------------
  r2421 | calvin | 2008-04-24 15:32:30 +0300 (Thu, 24 Apr 2008) | 6 lines
  
  branches/5.1: Fix bug#35537 - Innodb doesn't increment handler_update
  and handler_delete
  
  Add the calls to ha_statistic_increment() in ha_innobase::delete_row()
  and ha_innobase::update_row().
  
  ------------------------------------------------------------------------
  r2422 | vasil | 2008-04-24 16:00:30 +0300 (Thu, 24 Apr 2008) | 11 lines
  
  branches/5.1:
  
  Fix Bug#36169 create innodb compressed table with too large row size crashed
  
  Sometimes it is possible that
  row_drop_table_for_mysql(index->table_name, trx, FALSE); is invoked in
  row_create_index_for_mysql() when the index object is freed so copy the
  table name to a safe place beforehand and use the copy.
  
  Approved by:	Sunny
  
  ------------------------------------------------------------------------
2008-04-30 05:42:56 +00:00
vasil
03a3d076d6 branches/zip:
Fix Mantis issue#34 https://svn.innodb.com/mantis/view.php?id=34
"I_S plugins should refuse to load if the storage engine plugin is not loaded"
and MySQL Bug#36310 http://bugs.mysql.com/36310
"InnoDB plugin crash"

* Make srv_was_started public
* Set srv_was_started at the end of innobase_start_or_create_for_mysql()
  so it is not set to TRUE if innodb encounters some startup error
* Refuse to start any of the I_S plugins if srv_was_started is not TRUE

Approved by:	Heikki
2008-04-29 14:57:06 +00:00
vasil
a5b8b883c8 branches/zip:
Fix Bug#36169 create innodb compressed table with too large row size crashed

Sometimes it is possible that
row_drop_table_for_mysql(index->table_name, trx, FALSE); is invoked in
row_create_index_for_mysql() when the index object is freed, so copy the
table name to a safe place beforehand and use the copy.

Approved by:	Sunny
2008-04-23 05:45:19 +00:00
sunny
fd41c6a315 branches/zip: The block can't be in io fix state WRITE and we check for
that in the fix but the earlier check fails because it tries to be too
strict and assumes that if the block is on the clean list then it can
only be in state io fix NONE.
2008-04-12 10:04:28 +00:00
sunny
a0c86c47e4 branches/zip: Remove spaces and fix an uninitialized variable compiler warning. 2008-04-11 09:58:17 +00:00
vasil
08986d3538 Remove the aux build script as they are now in the plugin/ repo. 2008-04-11 06:51:16 +00:00
vasil
bf66fdcdcb Sync with the latest changes. 2008-04-11 06:42:35 +00:00
calvin
e978b4a235 branches/zip: Implementation of using animal names for innodb_file_format,
described in Mantis#30. Specifically:

- Allow innodb_file_format to take string arguments
- Make innodb_file_format system variable a string instead of a number
- Implement the callback functions
- Update warning messages

Three new functions are implemented:

file_format_name_lookup(): Validate the file format name and return
its corresponding id.

innodb_file_format_check(): Check if it is a valid file format. This
function is registered as a callback with MySQL.

innodb_file_format_update(): Update the global variable using the
"saved" value. This functions is registered as a callback with MySQL.
2008-04-10 11:02:16 +00:00