Commit graph

7 commits

Author SHA1 Message Date
vasil
602ce08d2f branches/zip: Merge revisions 4287:4357 from branches/5.1:
------------------------------------------------------------------------
  r4325 | sunny | 2009-03-02 02:28:52 +0200 (Mon, 02 Mar 2009) | 10 lines
  Changed paths:
     M /branches/5.1/handler/ha_innodb.cc
     M /branches/5.1/mysql-test/innodb-autoinc.result
     M /branches/5.1/mysql-test/innodb-autoinc.test
  
  branches/5.1: Bug#43203: Overflow from auto incrementing causes server segv
  It was not a SIGSEGV but an assertion failure. The assertion was checking
  the invariant that *first_value passed in by MySQL doesn't contain a value
  that is greater than the max value for that type. The assertion has been
  changed to a check and if the value is greater than the max we report a
  generic AUTOINC failure.
  
  rb://93
  Approved by Heikki
  
  ------------------------------------------------------------------------
2009-03-05 20:23:17 +00:00
vasil
63107fbdbf branches/zip: Merge revisions 4261:4287 from branches/5.1:
------------------------------------------------------------------------
  r4287 | sunny | 2009-02-25 05:32:01 +0200 (Wed, 25 Feb 2009) | 10 lines
  Changed paths:
     M /branches/5.1/handler/ha_innodb.cc
     M /branches/5.1/mysql-test/innodb-autoinc.result
     M /branches/5.1/mysql-test/innodb-autoinc.test
  
  branches/5.1: Fix Bug#42714 AUTO_INCREMENT errors in 5.1.31. There are two
  changes to the autoinc handling.
  
  1. To fix the immediate problem from the bug report, we must ensure that the
     value written to the table is always less than the max value stored in
     dict_table_t.
  
  2. The second related change is that according to MySQL documentation when
     the offset is greater than the increment, we should ignore the offset.
  
  ------------------------------------------------------------------------
2009-02-25 08:48:07 +00:00
vasil
b4399fa819 branches/zip:
Merge revisions 4035:4261 from branches/5.1:

  ------------------------------------------------------------------------
  r4065 | sunny | 2009-01-29 16:01:36 +0200 (Thu, 29 Jan 2009) | 8 lines
  Changed paths:
     M /branches/5.1/handler/ha_innodb.cc
     M /branches/5.1/mysql-test/innodb-autoinc.result
     M /branches/5.1/mysql-test/innodb-autoinc.test
  
  branches/5.1: In the last round of AUTOINC cleanup we assumed that AUTOINC
  is only defined for integer columns. This caused an assertion failure when
  we checked for the maximum value of a column type. We now calculate the
  max value for floating-point autoinc columns too.
  
  Fix Bug#42400 - InnoDB autoinc code can't handle floating-point columns
  rb://84 and Mantis issue://162
  
  ------------------------------------------------------------------------
  r4111 | sunny | 2009-02-03 22:06:52 +0200 (Tue, 03 Feb 2009) | 2 lines
  Changed paths:
     M /branches/5.1/handler/ha_innodb.cc
  
  branches/5.1: Add the ULL suffix otherwise there is an overflow.
  
  ------------------------------------------------------------------------
  r4128 | vasil | 2009-02-08 21:36:45 +0200 (Sun, 08 Feb 2009) | 18 lines
  Changed paths:
     M /branches/5.1/mysql-test/innodb-autoinc.result
     M /branches/5.1/mysql-test/innodb-autoinc.test
  
  branches/5.1:
  
  Merge a change from MySQL:
  
    ------------------------------------------------------------
    revno: 2709.20.31
    committer: Timothy Smith <timothy.smith@sun.com>
    branch nick: 51
    timestamp: Fri 2008-12-19 01:28:51 +0100
    message:
      Disable part of innodb-autoinc.test, because the MySQL server asserts when
      compiled --with-debug, due to bug 39828, "autoinc wraps around when offset and
      increment > 1".  This change should be reverted when that bug is fixed (and a
      a few other minor changes to the test as described in comments).
    modified:
      mysql-test/r/innodb-autoinc.result
      mysql-test/t/innodb-autoinc.test
  
  ------------------------------------------------------------------------
  r4129 | vasil | 2009-02-08 21:54:25 +0200 (Sun, 08 Feb 2009) | 310 lines
  Changed paths:
     M /branches/5.1/mysql-test/innodb-autoinc.test
  
  branches/5.1:
  
  Merge a change from MySQL:
  
  [looks like the changes to innodb-autoinc.test were made as part of
  the following huge merge, but we are merging only changes to that file]
  
    ------------------------------------------------------------
    revno: 2546.47.1
    committer: Luis Soares <luis.soares@sun.com>
    branch nick: 5.1-rpl
    timestamp: Fri 2009-01-23 13:22:05 +0100
    message:
      merge: 5.1 -> 5.1-rpl
      conflicts:
        Text conflict in client/mysqltest.cc
        Text conflict in mysql-test/include/wait_until_connected_again.inc
        Text conflict in mysql-test/lib/mtr_report.pm
        Text conflict in mysql-test/mysql-test-run.pl
        Text conflict in mysql-test/r/events_bugs.result
        Text conflict in mysql-test/r/log_state.result
        Text conflict in mysql-test/r/myisam_data_pointer_size_func.result
        Text conflict in mysql-test/r/mysqlcheck.result
        Text conflict in mysql-test/r/query_cache.result
        Text conflict in mysql-test/r/status.result
        Text conflict in mysql-test/suite/binlog/r/binlog_index.result
        Text conflict in mysql-test/suite/binlog/r/binlog_innodb.result
        Text conflict in mysql-test/suite/rpl/r/rpl_packet.result
        Text conflict in mysql-test/suite/rpl/t/rpl_packet.test
        Text conflict in mysql-test/t/disabled.def
        Text conflict in mysql-test/t/events_bugs.test
        Text conflict in mysql-test/t/log_state.test
        Text conflict in mysql-test/t/myisam_data_pointer_size_func.test
        Text conflict in mysql-test/t/mysqlcheck.test
        Text conflict in mysql-test/t/query_cache.test
        Text conflict in mysql-test/t/rpl_init_slave_func.test
        Text conflict in mysql-test/t/status.test
    removed:
      mysql-test/suite/parts/r/partition_bit_ndb.result
      mysql-test/suite/parts/t/partition_bit_ndb.test
      mysql-test/suite/parts/t/partition_sessions.test
      mysql-test/suite/sys_vars/inc/tmp_table_size_basic.inc
      mysql-test/suite/sys_vars/r/tmp_table_size_basic_32.result
      mysql-test/suite/sys_vars/r/tmp_table_size_basic_64.result
      mysql-test/suite/sys_vars/t/tmp_table_size_basic_32.test
      mysql-test/suite/sys_vars/t/tmp_table_size_basic_64.test
      mysql-test/t/log_bin_trust_function_creators_func-master.opt
      mysql-test/t/rpl_init_slave_func-slave.opt
    added:
      mysql-test/include/check_events_off.inc
      mysql-test/include/cleanup_fake_relay_log.inc
      mysql-test/include/have_simple_parser.inc
      mysql-test/include/no_running_event_scheduler.inc
      mysql-test/include/no_running_events.inc
      mysql-test/include/running_event_scheduler.inc
      mysql-test/include/setup_fake_relay_log.inc
      mysql-test/include/wait_condition_sp.inc
      mysql-test/r/fulltext_plugin.result
      mysql-test/r/have_simple_parser.require
      mysql-test/r/innodb_bug38231.result
      mysql-test/r/innodb_bug39438.result
      mysql-test/r/innodb_mysql_rbk.result
      mysql-test/r/partition_innodb_semi_consistent.result
      mysql-test/r/query_cache_28249.result
      mysql-test/r/status2.result
      mysql-test/std_data/bug40482-bin.000001
      mysql-test/suite/binlog/r/binlog_innodb_row.result
      mysql-test/suite/binlog/t/binlog_innodb_row.test
      mysql-test/suite/rpl/r/rpl_binlog_corruption.result
      mysql-test/suite/rpl/t/rpl_binlog_corruption-master.opt
      mysql-test/suite/rpl/t/rpl_binlog_corruption.test
      mysql-test/suite/sys_vars/r/tmp_table_size_basic.result
      mysql-test/suite/sys_vars/t/tmp_table_size_basic.test
      mysql-test/t/fulltext_plugin-master.opt
      mysql-test/t/fulltext_plugin.test
      mysql-test/t/innodb_bug38231.test
      mysql-test/t/innodb_bug39438-master.opt
      mysql-test/t/innodb_bug39438.test
      mysql-test/t/innodb_mysql_rbk-master.opt
      mysql-test/t/innodb_mysql_rbk.test
      mysql-test/t/partition_innodb_semi_consistent-master.opt
      mysql-test/t/partition_innodb_semi_consistent.test
      mysql-test/t/query_cache_28249.test
      mysql-test/t/status2.test
    renamed:
      mysql-test/suite/funcs_1/r/is_collation_character_set_applicability.result => mysql-test/suite/funcs_1/r/is_coll_char_set_appl.result
      mysql-test/suite/funcs_1/t/is_collation_character_set_applicability.test => mysql-test/suite/funcs_1/t/is_coll_char_set_appl.test
    modified:
      .bzr-mysql/default.conf
      CMakeLists.txt
      client/mysql.cc
      client/mysql_upgrade.c
      client/mysqlcheck.c
      client/mysqltest.cc
      configure.in
      extra/resolve_stack_dump.c
      extra/yassl/include/openssl/ssl.h
      include/config-win.h
      include/m_ctype.h
      include/my_global.h
      mysql-test/extra/binlog_tests/database.test
      mysql-test/extra/rpl_tests/rpl_auto_increment.test
      mysql-test/include/commit.inc
      mysql-test/include/have_32bit.inc
      mysql-test/include/have_64bit.inc
      mysql-test/include/index_merge1.inc
      mysql-test/include/linux_sys_vars.inc
      mysql-test/include/windows_sys_vars.inc
      mysql-test/lib/mtr_report.pm
      mysql-test/mysql-test-run.pl
      mysql-test/r/alter_table.result
      mysql-test/r/commit_1innodb.result
      mysql-test/r/create.result
      mysql-test/r/csv.result
      mysql-test/r/ctype_ucs.result
      mysql-test/r/date_formats.result
      mysql-test/r/events_bugs.result
      mysql-test/r/events_scheduling.result
      mysql-test/r/fulltext.result
      mysql-test/r/func_if.result
      mysql-test/r/func_in.result
      mysql-test/r/func_str.result
      mysql-test/r/func_time.result
      mysql-test/r/grant.result
      mysql-test/r/index_merge_myisam.result
      mysql-test/r/information_schema.result
      mysql-test/r/innodb-autoinc.result
      mysql-test/r/innodb.result
      mysql-test/r/innodb_mysql.result
      mysql-test/r/log_bin_trust_function_creators_func.result
      mysql-test/r/log_state.result
      mysql-test/r/myisampack.result
      mysql-test/r/mysql.result
      mysql-test/r/mysqlcheck.result
      mysql-test/r/partition_datatype.result
      mysql-test/r/partition_mgm.result
      mysql-test/r/partition_pruning.result
      mysql-test/r/query_cache.result
      mysql-test/r/read_buffer_size_basic.result
      mysql-test/r/read_rnd_buffer_size_basic.result
      mysql-test/r/rpl_init_slave_func.result
      mysql-test/r/select.result
      mysql-test/r/status.result
      mysql-test/r/strict.result
      mysql-test/r/temp_table.result
      mysql-test/r/type_bit.result
      mysql-test/r/type_date.result
      mysql-test/r/type_float.result
      mysql-test/r/warnings_engine_disabled.result
      mysql-test/r/xml.result
      mysql-test/suite/binlog/r/binlog_database.result
      mysql-test/suite/binlog/r/binlog_index.result
      mysql-test/suite/binlog/r/binlog_innodb.result
      mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result
      mysql-test/suite/binlog/t/binlog_innodb.test
      mysql-test/suite/funcs_1/r/is_columns_is.result
      mysql-test/suite/funcs_1/r/is_engines.result
      mysql-test/suite/funcs_1/r/storedproc.result
      mysql-test/suite/funcs_1/storedproc/param_check.inc
      mysql-test/suite/funcs_2/t/disabled.def
      mysql-test/suite/ndb/t/disabled.def
      mysql-test/suite/parts/r/partition_bit_innodb.result
      mysql-test/suite/parts/r/partition_bit_myisam.result
      mysql-test/suite/parts/r/partition_special_innodb.result
      mysql-test/suite/parts/t/disabled.def
      mysql-test/suite/parts/t/partition_special_innodb.test
      mysql-test/suite/parts/t/partition_value_innodb.test
      mysql-test/suite/parts/t/partition_value_myisam.test
      mysql-test/suite/parts/t/partition_value_ndb.test
      mysql-test/suite/rpl/r/rpl_auto_increment.result
      mysql-test/suite/rpl/r/rpl_packet.result
      mysql-test/suite/rpl/r/rpl_row_create_table.result
      mysql-test/suite/rpl/r/rpl_slave_skip.result
      mysql-test/suite/rpl/r/rpl_trigger.result
      mysql-test/suite/rpl/t/disabled.def
      mysql-test/suite/rpl/t/rpl_packet.test
      mysql-test/suite/rpl/t/rpl_row_create_table.test
      mysql-test/suite/rpl/t/rpl_slave_skip.test
      mysql-test/suite/rpl/t/rpl_trigger.test
      mysql-test/suite/rpl_ndb/t/disabled.def
      mysql-test/suite/sys_vars/inc/key_buffer_size_basic.inc
      mysql-test/suite/sys_vars/inc/sort_buffer_size_basic.inc
      mysql-test/suite/sys_vars/r/key_buffer_size_basic_32.result
      mysql-test/suite/sys_vars/r/key_buffer_size_basic_64.result
      mysql-test/suite/sys_vars/r/sort_buffer_size_basic_32.result
      mysql-test/suite/sys_vars/r/sort_buffer_size_basic_64.result
      mysql-test/t/alter_table.test
      mysql-test/t/create.test
      mysql-test/t/csv.test
      mysql-test/t/ctype_ucs.test
      mysql-test/t/date_formats.test
      mysql-test/t/disabled.def
      mysql-test/t/events_bugs.test
      mysql-test/t/events_scheduling.test
      mysql-test/t/fulltext.test
      mysql-test/t/func_if.test
      mysql-test/t/func_in.test
      mysql-test/t/func_str.test
      mysql-test/t/func_time.test
      mysql-test/t/grant.test
      mysql-test/t/information_schema.test
      mysql-test/t/innodb-autoinc.test
      mysql-test/t/innodb.test
      mysql-test/t/innodb_mysql.test
      mysql-test/t/log_bin_trust_function_creators_func.test
      mysql-test/t/log_state.test
      mysql-test/t/myisam_data_pointer_size_func.test
      mysql-test/t/myisampack.test
      mysql-test/t/mysql.test
      mysql-test/t/mysqlcheck.test
      mysql-test/t/partition_innodb_stmt.test
      mysql-test/t/partition_mgm.test
      mysql-test/t/partition_pruning.test
      mysql-test/t/query_cache.test
      mysql-test/t/rpl_init_slave_func.test
      mysql-test/t/select.test
      mysql-test/t/status.test
      mysql-test/t/strict.test
      mysql-test/t/temp_table.test
      mysql-test/t/type_bit.test
      mysql-test/t/type_date.test
      mysql-test/t/type_float.test
      mysql-test/t/warnings_engine_disabled.test
      mysql-test/t/xml.test
      mysys/my_getopt.c
      mysys/my_init.c
      scripts/mysql_install_db.sh
      sql-common/my_time.c
      sql/field.cc
      sql/field.h
      sql/filesort.cc
      sql/ha_partition.cc
      sql/ha_partition.h
      sql/item.cc
      sql/item_cmpfunc.cc
      sql/item_func.h
      sql/item_strfunc.cc
      sql/item_sum.cc
      sql/item_timefunc.cc
      sql/item_timefunc.h
      sql/log.cc
      sql/log.h
      sql/log_event.cc
      sql/log_event.h
      sql/mysql_priv.h
      sql/mysqld.cc
      sql/opt_range.cc
      sql/partition_info.cc
      sql/repl_failsafe.cc
      sql/rpl_constants.h
      sql/set_var.cc
      sql/slave.cc
      sql/spatial.h
      sql/sql_acl.cc
      sql/sql_base.cc
      sql/sql_binlog.cc
      sql/sql_class.h
      sql/sql_cursor.cc
      sql/sql_delete.cc
      sql/sql_lex.cc
      sql/sql_lex.h
      sql/sql_locale.cc
      sql/sql_parse.cc
      sql/sql_partition.cc
      sql/sql_plugin.cc
      sql/sql_plugin.h
      sql/sql_profile.cc
      sql/sql_repl.cc
      sql/sql_select.cc
      sql/sql_select.h
      sql/sql_show.cc
      sql/sql_table.cc
      sql/sql_trigger.cc
      sql/sql_trigger.h
      sql/table.cc
      sql/table.h
      sql/unireg.cc
      storage/csv/ha_tina.cc
      storage/federated/ha_federated.cc
      storage/heap/ha_heap.cc
      storage/innobase/Makefile.am
      storage/innobase/btr/btr0sea.c
      storage/innobase/buf/buf0lru.c
      storage/innobase/dict/dict0dict.c
      storage/innobase/dict/dict0mem.c
      storage/innobase/handler/ha_innodb.cc
      storage/innobase/handler/ha_innodb.h
      storage/innobase/include/btr0sea.h
      storage/innobase/include/dict0dict.h
      storage/innobase/include/dict0mem.h
      storage/innobase/include/ha_prototypes.h
      storage/innobase/include/lock0lock.h
      storage/innobase/include/row0mysql.h
      storage/innobase/include/sync0sync.ic
      storage/innobase/include/ut0ut.h
      storage/innobase/lock/lock0lock.c
      storage/innobase/os/os0file.c
      storage/innobase/plug.in
      storage/innobase/row/row0mysql.c
      storage/innobase/row/row0sel.c
      storage/innobase/srv/srv0srv.c
      storage/innobase/srv/srv0start.c
      storage/innobase/ut/ut0ut.c
      storage/myisam/ft_boolean_search.c
      strings/ctype.c
      strings/xml.c
      tests/mysql_client_test.c
      win/configure.js
      mysql-test/suite/funcs_1/t/is_coll_char_set_appl.test
  
  ------------------------------------------------------------------------
  r4165 | calvin | 2009-02-12 01:34:27 +0200 (Thu, 12 Feb 2009) | 1 line
  Changed paths:
     M /branches/5.1/handler/ha_innodb.cc
  
  branches/5.1: minor non-functional changes.
  ------------------------------------------------------------------------
2009-02-20 12:56:59 +00:00
sunny
cb0cacc2d8 branches/zip: Merge revisions 2702:2722 from branches/5.1:
------------------------------------------------------------------------
  r2702 | sunny | 2008-09-30 11:41:56 +0300 (Tue, 30 Sep 2008) | 13 lines
  Changed paths:
     M /branches/5.1/handler/ha_innodb.cc
  
  branches/5.1: Since handler::get_auto_increment() doesn't allow us
  to return the cause of failure we have to inform MySQL using the
  sql_print_warning() function to return the cause for autoinc failure.
  Previously we simply printed the error code, this patch prints the
  text string representing the following two error codes:
  
  DB_LOCK_WAIT_TIMEOUT
  DB_DEADLOCK.
  
  Bug#35498 Cannot get table test/table1 auto-inccounter value in ::info
  
  Approved by Marko.
  
  ------------------------------------------------------------------------
  r2709 | vasil | 2008-10-01 10:13:13 +0300 (Wed, 01 Oct 2008) | 10 lines
  Changed paths:
     M /branches/5.1/include/lock0lock.h
     M /branches/5.1/lock/lock0lock.c
     A /branches/5.1/mysql-test/innodb_bug38231.result
     A /branches/5.1/mysql-test/innodb_bug38231.test
     M /branches/5.1/row/row0mysql.c
  
  branches/5.1:
  
  Fix Bug#38231 Innodb crash in lock_reset_all_on_table() on TRUNCATE + LOCK / UNLOCK
  
  In TRUNCATE TABLE and discard tablespace: do not remove table-level S
  and X locks and do not assert on such locks not being wait locks.
  Leave such locks alone.
  
  Approved by:	Heikki (rb://14)
  
  ------------------------------------------------------------------------
  r2710 | vasil | 2008-10-01 14:13:58 +0300 (Wed, 01 Oct 2008) | 6 lines
  Changed paths:
     M /branches/5.1/include/sync0sync.ic
  
  branches/5.1:
  
  Silence a compilation warning in UNIV_DEBUG.
  
  Approved by:	Marko (via IM)
  
  ------------------------------------------------------------------------
  r2719 | vasil | 2008-10-03 18:17:28 +0300 (Fri, 03 Oct 2008) | 49 lines
  Changed paths:
     M /branches/5.1/handler/ha_innodb.cc
     A /branches/5.1/mysql-test/innodb_bug39438-master.opt
     A /branches/5.1/mysql-test/innodb_bug39438.result
     A /branches/5.1/mysql-test/innodb_bug39438.test
  
  branches/5.1:
  
  Fix Bug#39438 Testcase for Bug#39436 crashes on 5.1 in fil_space_get_latch
  
  In ha_innobase::info() - do not try to get the free space for a tablespace
  which has been discarded with ALTER TABLE ... DISCARD TABLESPACE or if the
  .ibd file is missing for some other reason.
  
  ibd_file_missing and tablespace_discarded are manipulated only in
  row_discard_tablespace_for_mysql() and in row_import_tablespace_for_mysql()
  and the manipulation is protected/surrounded by
  row_mysql_lock_data_dictionary()/row_mysql_unlock_data_dictionary() thus we
  do the same in ha_innobase::info() when checking the values of those members
  to avoid race conditions. I have tested the code-path with UNIV_DEBUG and
  UNIV_SYNC_DEBUG.
  
  Looks like it is not possible to avoid mysqld printing warnings in the
  mysql-test case and thus this test innodb_bug39438 must be added to the
  list of exceptional test cases that are allowed to print warnings. For this,
  the following patch must be applied to the mysql source tree:
  
    --- cut ---
    === modified file 'mysql-test/lib/mtr_report.pl'
    --- mysql-test/lib/mtr_report.pl	2008-08-12 10:26:23 +0000
    +++ mysql-test/lib/mtr_report.pl	2008-10-01 11:57:41 +0000
    @@ -412,7 +412,10 @@
     
                     # When trying to set lower_case_table_names = 2
                     # on a case sensitive file system. Bug#37402.
    -                /lower_case_table_names was set to 2, even though your the file system '.*' is case sensitive.  Now setting lower_case_table_names to 0 to avoid future problems./
    +                /lower_case_table_names was set to 2, even though your the file system '.*' is case sensitive.  Now setting lower_case_table_names to 0 to avoid future problems./ or
    +
    +                # this test is expected to print warnings
    +                ($testname eq 'main.innodb_bug39438')
     		)
                 {
                   next;                       # Skip these lines
    
    --- cut ---
  
  The mysql-test is currently somewhat disabled (see inside
  innodb_bug39438.test), after the above patch has been applied to the mysql
  source tree, the test can be enabled.
  
  rb://20
  
  Reviewed by:	Inaam, Calvin
  Approved by:	Heikki
  
  ------------------------------------------------------------------------
  r2720 | vasil | 2008-10-03 19:52:39 +0300 (Fri, 03 Oct 2008) | 8 lines
  Changed paths:
     M /branches/5.1/handler/ha_innodb.cc
  
  branches/5.1:
  
  Print a warning if an attempt is made to get the free space for a table
  whose .ibd file is missing or the tablespace has been discarded. This is a
  followup to r2719.
  
  Suggested by:	Inaam
  
  ------------------------------------------------------------------------
  r2721 | sunny | 2008-10-04 02:08:23 +0300 (Sat, 04 Oct 2008) | 6 lines
  Changed paths:
     M /branches/5.1/handler/ha_innodb.cc
  
  branches/5.1: We need to send the messages to the client because
  handler::get_auto_increment() doesn't allow a way to return the
  specific error for why it failed.
  
  rb://18
  
  ------------------------------------------------------------------------
  r2722 | sunny | 2008-10-04 02:48:04 +0300 (Sat, 04 Oct 2008) | 18 lines
  Changed paths:
     M /branches/5.1/dict/dict0mem.c
     M /branches/5.1/handler/ha_innodb.cc
     M /branches/5.1/include/dict0mem.h
     M /branches/5.1/include/row0mysql.h
     M /branches/5.1/mysql-test/innodb-autoinc.result
     M /branches/5.1/mysql-test/innodb-autoinc.test
     M /branches/5.1/row/row0mysql.c
  
  branches/5.1: This bug has always existed but was masked by other errors. The
  fix for bug# 38839 triggered this bug. When the offset and increment are > 1
  we need to calculate the next value taking into consideration the two
  variables. Previously we simply assumed they were 1 particularly offset was
  never used. MySQL does its own calculation and that's probably why it seemed
  to work in the past. We would return what we thought was the correct next
  value and then MySQL would recalculate the actual value from that and return
  it to the caller (e.g., handler::write_row()). Several new tests have been
  added that try and catch some edge cases. The tests exposed a wrap around
  error in MySQL next value calculation which was filed as bug#39828. The tests
  will need to be updated once MySQL fix that bug.
  
  One good side effect of this fix is that dict_table_t size has been
  reduced by 8 bytes because we have moved the autoinc_increment field to
  the row_prebuilt_t structure. See review-board for a detailed discussion.
  
  rb://3
  
  ------------------------------------------------------------------------
2008-10-04 03:22:36 +00:00
vasil
0749ae93df branches/zip:
Merge 2605:2617 from branches/5.1:

  ------------------------------------------------------------------------
  r2609 | sunny | 2008-08-24 01:19:05 +0300 (Sun, 24 Aug 2008) | 12 lines
  Changed paths:
     M /branches/5.1/handler/ha_innodb.cc
     M /branches/5.1/mysql-test/innodb-autoinc.result
     M /branches/5.1/mysql-test/innodb-autoinc.test
  
  branches/5.1: Fix for MySQL Bug#38839. Reset the statement level last
  value field in prebuilt. This field tracks the last value in an autoincrement
  interval. We use this value to check whether we need to update a table's
  AUTOINC counter, if the value written to a table is less than this value
  then we avoid updating the table's AUTOINC value in order to reduce
  mutex contention. If it's not reset (e.g., after a DELETE statement) then
  there is the possibility of missing updates to the table's AUTOINC counter
  resulting in a subsequent duplicate row error message under certain 
  conditions (see the test case for details).
  
  Bug #38839 - auto increment does not work properly with InnoDB after update
  
  ------------------------------------------------------------------------
  r2617 | vasil | 2008-09-09 15:46:17 +0300 (Tue, 09 Sep 2008) | 47 lines
  Changed paths:
     M /branches/5.1/mysql-test/innodb.result
  
  branches/5.1:
  
  Merge a change from MySQL (fix the failing innodb test):
  
    ------------------------------------------------------------
    revno: 2646.12.1
    committer: Mattias Jonsson <mattiasj@mysql.com>
    branch nick: wl4176_2-51-bugteam
    timestamp: Mon 2008-08-11 20:02:03 +0200
    message:
      Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
      partition is corrupt
      
      The main problem was that ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR
      PARTITION took another code path (over mysql_alter_table instead of
      mysql_admin_table) which differs in two ways:
      1) alter table opens the tables in a different way than admin tables do
         resulting in returning with error before it tried the command
      2) alter table does not start to send any diagnostic rows to the client
         which the lower admin functions continue to use -> resulting in
         assertion crash
      
      The fix:
      Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION to use
      the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE t.
      Adding check in mysql_admin_table to setup the partition list for
      which partitions that should be used.
      
      
      Partitioned tables will still not work with
      REPAIR TABLE/PARTITION USE_FRM, since that requires moving partitions
      to tables, REPAIR TABLE t USE_FRM, and check that the data still
      fulfills the partitioning function and then move the table back to
      being a partition.
      
      NOTE: I have removed the following functions from the handler
      interface:
      analyze_partitions, check_partitions, optimize_partitions,
      repair_partitions
      Since they are not longer needed.
      THIS ALTERS THE STORAGE ENGINE API
  
  I have verified that OPTIMIZE TABLE actually rebuilds the table
  and calls ANALYZE.
  
  Approved by:	Heikki
2008-09-09 12:00:34 +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
marko
ebdb9daa9b branches/zip: Merge 2295:2367 from branches/5.1. 2008-03-17 14:09:44 +00:00