Commit graph

725 commits

Author SHA1 Message Date
vasil
996238b4a6 branches/5.1:
Merge a change from MySQL (looks like this is against 5.0 but they later
merged it to 5.1):

  ------------------------------------------------------------
  revno: 1810.3846.1
  committer: Alexey Botchkov <holyfoot@mysql.com>
  branch nick: 31435
  timestamp: Tue 2008-11-11 14:42:32 +0400
  message:
    Bug#31435 ha_innodb.cc:3983: ulint convert_search_mode_to_innobase(ha_rkey_function): Asse 
        I think we don't need to issue an error statement in the convert_search_mode_to_innobase().
        Returning the PAGE_CUR_UNSUPP value is enough as allows to handle this
        case depending on the requirements.
    
    per-file comments:
      sql/ha_innodb.cc 
    Bug#31435 ha_innodb.cc:3983: ulint convert_search_mode_to_innobase(ha_rkey_function): Asse 
         no error issued in convert_search_mode_to_innobase.
         ha_innobase::records_in_range() returns HA_POS_ERROR if search mode isn't supported.
  modified:
    sql/ha_innodb.cc
2009-04-15 07:55:18 +00:00
vasil
07f5281337 branches/5.1:
When using the random function, first take the modulus by the number of pages
and then typecast to ulint.

This is a followup to r4699 - the fix of Bug#43660.
2009-04-14 10:30:13 +00:00
vasil
fc7d1cf033 branches/5.1:
Fix Bug#43660 SHOW INDEXES/ANALYZE does NOT update cardinality for indexes
of InnoDB table

by replacing the PRNG that is used to pick random pages with a better
one.

This is based on r4670 but also adds a new configuration option and
enables the fix only if this option is changed. Please skip the present
revision when merging.

Approved by:	Heikki (via email)
2009-04-09 10:01:52 +00:00
vasil
9890459ab9 branches/5.1:
Followup to r4575 and the fix of Bug#43309 Test main.innodb can't be run twice:

Add an explanatory comment, as suggested by Patrick Crews in the bug report.
2009-04-06 11:34:51 +00:00
vasil
aae972db94 branches/5.1:
Revert a change to Makefile.am that I committed accidentally in c4574.
2009-03-30 12:25:10 +00:00
vasil
3f229f7471 branches/5.1:
Fix Bug#43309 Test main.innodb can't be run twice

Make the innodb mysql-test more flexible by inspecting how much a
variable of interest has changed since the start of the test. Do not
assume the variables have zero values at the start of the test.
2009-03-30 11:55:31 +00:00
vasil
97f920709b branches/5.1:
Restore the state of INNODB_THREAD_CONCURRENCY to silence this warning:

  TEST                                      RESULT   TIME (ms)
  ------------------------------------------------------------
  
  worker[1] Using MTR_BUILD_THREAD 250, with reserved ports 12500..12509
  main.innodb                              [ pass ]   8803
  
  MTR's internal check of the test case 'main.innodb' failed.
  This means that the test case does not preserve the state that existed
  before the test case was executed.  Most likely the test case did not
  do a proper clean-up.
  This is the diff of the states of the servers before and after the
  test case was executed:
  mysqltest: Logging to '/tmp/autotest.sh-20090330_033000-5.1.5Hg8CY/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.log'.
  mysqltest: Results saved in '/tmp/autotest.sh-20090330_033000-5.1.5Hg8CY/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.result'.
  mysqltest: Connecting to server localhost:12500 (socket /tmp/autotest.sh-20090330_033000-5.1.5Hg8CY/mysql-5.1/mysql-test/var/tmp/mysqld.1.sock) as 'root', connection 'default', attempt 0 ...
  mysqltest: ... Connected.
  mysqltest: Start processing test commands from './include/check-testcase.test' ...
  mysqltest: ... Done processing test commands.
  --- /tmp/autotest.sh-20090330_033000-5.1.5Hg8CY/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.result	2009-03-30 14:12:31.000000000 +0300
  +++ /tmp/autotest.sh-20090330_033000-5.1.5Hg8CY/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.reject	2009-03-30 14:12:41.000000000 +0300
  @@ -99,7 +99,7 @@
   INNODB_SUPPORT_XA	ON
   INNODB_SYNC_SPIN_LOOPS	20
   INNODB_TABLE_LOCKS	ON
  -INNODB_THREAD_CONCURRENCY	8
  +INNODB_THREAD_CONCURRENCY	16
   INNODB_THREAD_SLEEP_DELAY	10000
   INSERT_ID	0
   INTERACTIVE_TIMEOUT	28800
  
  mysqltest: Result content mismatch
  
  not ok
2009-03-30 10:27:08 +00:00
vasil
ccd3ca5f54 branches/5.1:
Fix email address from dev@innodb.com to innodb_dev_ww@oracle.com
2009-03-30 10:17:13 +00:00
marko
c0cf5d13c6 branches/5.1: row_unlock_for_mysql(): Do not unlock records that were
modified by the current transaction.  This bug was introduced or unmasked
in r4400.

rb://97 approved by Heikki Tuuri
2009-03-19 13:01:48 +00:00
marko
97e9f4cbd0 branches/5.1: Fix a bug in multi-table semi-consistent reads.
Remember the acquired record locks per table handle (row_prebuilt_t)
rather than per transaction (trx_t), so that unlock_row should successfully
unlock all non-matching rows in multi-table operations.
This deficiency was found while investigating Bug #39320.

rb://94 approved by Heikki Tuuri.
2009-03-12 08:06:44 +00:00
marko
66060b0d08 branches/5.1: row_sel_get_clust_rec_for_mysql(): Store the cursor position
also for unlock_row().  (Bug #39320)

rb://96 approved by Heikki Tuuri.
2009-03-12 07:38:05 +00:00
vasil
e0281553ce branches/5.1:
Merge a change from MySQL:

  ------------------------------------------------------------
  revno: 2747
  committer: Timothy Smith <timothy.smith@sun.com>
  branch nick: 51
  timestamp: Fri 2009-01-16 17:49:07 +0100
  message:
    Add another cast to ignore int/ulong difference in error types, silence warning on Win64
  modified:
    storage/innobase/handler/ha_innodb.cc
2009-03-05 19:42:01 +00:00
vasil
c3fb485c2a branches/5.1:
Merge a change from MySQL:

  ------------------------------------------------------------
  revno: 2728.19.1
  committer: Alfranio Correia <alfranio.correia@sun.com>
  branch nick: mysql-5.1-bugteam
  timestamp: Tue 2009-02-03 11:36:46 +0000
  message:
    BUG#42445 Warning messages in innobase/handler/ha_innodb.cc
          
    There was a type casting problem in the storage/innobase/handler/ha_innodb.cc,
    (int ha_innobase::write_row(...)). Innobase uses has an internal error variable
    of type 'ulint' while mysql uses an 'int'. 
          
    To fix the problem the function manipulates an error variable of
    type 'ulint' and only casts it into 'int' when needs to return the value.
  modified:
    storage/innobase/handler/ha_innodb.cc
2009-03-05 19:21:10 +00:00
sunny
e2cd6d3572 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-02 00:28:52 +00:00
sunny
2016ae3262 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 03:32:01 +00:00
calvin
2560a78eeb branches/5.1: minor non-functional changes. 2009-02-11 23:34:27 +00:00
vasil
fe8fbb1e4f 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
2009-02-08 19:54:25 +00:00
vasil
7b3443d1a1 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
2009-02-08 19:36:45 +00:00
sunny
5f580c47f8 branches/5.1: Add the ULL suffix otherwise there is an overflow. 2009-02-03 20:06:52 +00:00
sunny
64076dc477 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
2009-01-29 14:01:36 +00:00
vasil
3f5355a0e1 branches/5.1:
Merge a change from MySQL:

  ------------------------------------------------------------
  revno: 2646.161.4
  committer: Tatiana A. Nurnberg <azundris@mysql.com>
  branch nick: 51-31177v2
  timestamp: Mon 2009-01-12 06:32:49 +0100
  message:
    Bug#31177: Server variables can't be set to their current values
    
    Bounds-checks and blocksize corrections were applied to user-input,
    but constants in the server were trusted implicitly. If these values
    did not actually meet the requirements, the user could not set change
    a variable, then set it back to the (wonky) factory default or maximum
    by explicitly specifying it (SET <var>=<value> vs SET <var>=DEFAULT).
    
    Now checks also apply to the server's presets. Wonky values and maxima
    get corrected at startup. Consequently all non-offsetted values the user
    sees are valid, and users can set the variable to that exact value if
    they so desire.
2009-01-26 15:26:25 +00:00
marko
c4d9f678bb branches/5.1: Merge r4031 from branches/5.0:
btr_search_drop_page_hash_when_freed(): Check if buf_page_get_gen()
returns NULL.  The page may have been evicted from the buffer pool
between buf_page_peek_if_search_hashed() and buf_page_get_gen(),
because the buffer pool mutex will be released between these two calls.
(Bug #42279)

rb://82 approved by Heikki Tuuri
2009-01-23 13:43:51 +00:00
marko
6b2f6cb212 branches/5.1: lock_is_table_exclusive(): Acquire kernel_mutex before
accessing table->locks and release kernel_mutex before returning from
the function.  This fixes a portential race condition in the
"commit every 10,000 rows" in ALTER TABLE, CREATE INDEX, DROP INDEX,
and OPTIMIZE TABLE. (Bug #42152)

rb://80 approved by Heikki Tuuri
2009-01-20 14:22:36 +00:00
marko
7d5683b6b0 branches/5.1: Merge r4003 from branches/5.0:
rec_set_nth_field(): When the field already is SQL null,
do nothing when it is being changed to SQL null. (Bug #41571)

Normally, MySQL does not pass "do-nothing" updates to the storage engine.
When it does and a column of an InnoDB table that is in ROW_FORMAT=COMPACT
is being updated from NULL to NULL, the InnoDB buffer pool will be corrupted
without this fix.

rb://81 approved by Heikki Tuuri
2009-01-20 14:19:00 +00:00
marko
677d433d2e branches/5.1: dict_load_table(): If dict_load_indexes() fails,
invoke dict_table_remove_from_cache() instead of dict_mem_table_free(),
so that the data dictionary will not point to freed data.
(Bug #42075, Issue #153, rb://76 approved by Heikki Tuuri)
2009-01-14 13:51:30 +00:00
sunny
40f7819e8e branches/5.1: Fix Bug#38187 Error 153 when creating savepoints
InnoDB previously treated savepoints as a stack e.g.,
  SAVEPOINT a;
  SAVEPOINT b;
  SAVEPOINT c;
  SAVEPOINT b; <- This would delete b and c.

This fix changes the behavior to:
  SAVEPOINT a;
  SAVEPOINT b;
  SAVEPOINT c;
  SAVEPOINT b; <- Does not delete savepoint c
2009-01-13 12:15:24 +00:00
marko
d32440100b branches/5.1: Make
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
a true replacement of SET GLOBAL INNODB_LOCKS_UNSAFE_FOR_BINLOG=1.
This fixes an error that was introduced in r370, causing
semi-consistent read not to not unlock rows in READ COMMITTED mode.
(Bug #41671, Issue #146)

rb://67 approved by Heikki Tuuri
2008-12-22 14:05:19 +00:00
marko
5354bf6b41 branches/5.1: ibuf_delete_rec(): When the record cannot be found and
the tablespace has been dropped, commit the mini-transaction, so that
InnoDB will not hold the insert buffer tree latch in exclusive mode,
causing a potential deadlock.  This bug was introduced in the fix of
Bug #27276 in r2924.
2008-12-22 13:28:03 +00:00
marko
7f5f09d63a branches/5.1: When converting a record to MySQL format, copy the default
column values for columns that are SQL NULL.  This addresses failures in
row-based replication (Bug #39648).

row_prebuilt_t: Add default_rec, for the default values of the columns in
MySQL format.

row_sel_store_mysql_rec(): Use prebuilt->default_rec instead of
padding columns.

rb://64 approved by Heikki Tuuri
2008-12-18 13:33:36 +00:00
inaam
b3f58ea741 branches/5.1
It is a bug in unused code. If we don't calculate the hash value when
calculating the mutex number then two pages which map to same hash
value can get two different mutex numbers.

Approved by: Marko
2008-12-18 12:26:54 +00:00
calvin
ad4666f881 branches/5.1: change .result file eol-style to LF
mysql-test-run only takes LF style even on Windows.
2008-12-10 21:30:05 +00:00
vasil
809a539dce branches/5.1:
Merge a change from MySQL to fix the failing innodb_bug34300 mysql-test:

  main.innodb_bug34300           [ fail ]
  
  mysqltest: At line 11: query 'SET @@max_allowed_packet=16777216' failed: 1621: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
  
  Aborting: main.innodb_bug34300 failed in default mode. 

The changeset is this:

  ------------------------------------------------------------
  revno: 2709.1.10
  committer: Staale Smedseng <staale.smedseng@sun.com>
  branch nick: b22891-51-bugteam
  timestamp: Thu 2008-11-20 08:51:48 +0100
  message:
    A fix for Bug#22891 "session level max_allowed_packet can be
    set but is ignored".
  
    This patch makes @@session.max_allowed_packed and
    @@session.net_buffer_length read-only as suggested in the bug
    report. The user will have to use SET GLOBAL (and reconnect)
    to alter the session values of these variables.
  
    The error string ER_VARIABLE_IS_READONLY is introduced.
  
    Tests are modified accordingly.
  modified:
    mysql-test/r/func_compress.result
    mysql-test/r/max_allowed_packet_basic.result
    mysql-test/r/max_allowed_packet_func.result
    mysql-test/r/net_buffer_length_basic.result
    mysql-test/r/packet.result
    mysql-test/r/union.result
    mysql-test/r/variables.result
    mysql-test/t/func_compress.test
    mysql-test/t/innodb_bug34300.test
    mysql-test/t/max_allowed_packet_basic.test
    mysql-test/t/max_allowed_packet_func.test
    mysql-test/t/net_buffer_length_basic.test
    mysql-test/t/packet.test
    mysql-test/t/union.test
    mysql-test/t/variables.test
    sql/set_var.cc
    sql/set_var.h
    sql/share/errmsg.txt
  ------------------------------------------------------------
2008-12-09 09:21:08 +00:00
vasil
f4e5efeb99 branches/5.1:
Add the traditional 2 spaces after the timestamp so the message does
not look like:

070223 13:26:01InnoDB: Warning: canno....
2008-12-05 08:46:18 +00:00
calvin
fce0c716fa branches/5.1: revert the changes in r2933
The changes in r2933 causes test failure on Linux.
More investigation is needed for Windows.

Change the followings in innodb-autoinc.result:
  auto-increment-increment
  auto-increment-offset

back to:
  auto_increment_increment
  auto_increment_offset
2008-12-04 17:00:20 +00:00
inaam
9b4f5f6f9f branches/5.1:
Fix Bug#40760 "set global innodb_thread_concurrency = 0;" is not safe

The config param innodb_thread_concurrency is dynamically set and is
read when a thread enters/exits innodb. If the value is changed between
the enter and exit time the behaviour becomes erratic.
The fix is not to use srv_thread_concurrency when exiting, instead use
the flag trx->declared_to_be_inside_innodb.

rb://57

Approved by: Marko
2008-11-24 20:06:50 +00:00
calvin
fff52da321 branches/5.1: fix bug#40386: Not flushing query cache after truncate
ha_statistics.records can not be 0 unless the table is empty, set to
1 instead. The original problem of bug#29507 is fixed in the server.

Additional test was done with the fix of bug#29507 in the server.

Approved by: Heikki (on IM)
2008-11-14 18:31:48 +00:00
marko
365445704c branches/5.1: row_mysql_store_col_in_innobase_format(): Correct a misleading
comment. In the UTF-8 encoding, ASCII takes 1 byte per character, while
the "latin1" character set (normally ISO-8859-1, but in MySQL it actually
refers to the Windows Code Page 1252 a.k.a. CP1252, WinLatin1)
takes 1 to 3 bytes (1 to 2 bytes for the ISO-8859-1 subset).
2008-11-07 12:54:10 +00:00
calvin
b233819195 branches/5.1: correct the result file innodb-autoinc.result
Change the followings:
  auto_increment_increment
  auto_increment_offset

to
  auto-increment-increment
  auto-increment-offset
2008-10-30 00:57:31 +00:00
marko
133118cd2e branches/5.1: dtype_get_sql_null_size(): return the correct storage
size of a SQL NULL column. (Bug #40369)

When MySQL Bug #20877 was fixed in r834, this function was
accidentally modified to return 0 or 1. Apparently, the only impact of
this bug is that fixed-length columns cannot be updated in-place from
or to SQL NULL, even in ROW_FORMAT=REDUNDANT.  After this fix,
fixed-length columns in ROW_FORMAT=REDUNDANT will have a constant
storage size as they should, no matter if NULL or non-NULL.  The bug
caused fixed-length NULL columns to occupy 1 byte.

rb://37 approved by Heikki over IM.
2008-10-29 19:26:14 +00:00
marko
279bbc9df6 branches/5.1: Merge revision 2866 from branches/zip:
ibuf_delete_rec(): When the cursor to the insert buffer record cannot be
restored, do not complain if the tablespace does not exist. (Bug #27276)

Approved by Sunny Bains (rb://34)
2008-10-29 08:07:48 +00:00
vasil
fd5bac6715 branches/5.1:
Fix Bug#38189 innodb_stats_on_metadata missing

Make the variable innodb_stats_on_metadata visible to the users and
also settable at runtime. Previously it was only "visible" as a command
line startup option to mysqld.

Approved by:	Marko (https://svn.innodb.com/rb/r/36)
2008-10-28 10:10:25 +00:00
calvin
775b201f00 branches/5.1: port the fix of Bug#19424 - InnoDB: Possibly a memory
overrun of the buffer being freed with 64-bit Microsoft Visual C++.

The changed file:

CMakeLists.txt: Removing Win64 compiler optimizations for all 
innodb/mem/* files.
2008-10-27 09:09:18 +00:00
sunny
4ef075b54b branches/5.1: Backport changes from branches/zip r2725
Simplify the autoinc initialization code. This removes the
non-determinism related to reading the table's autoinc value for the first
time. This change has also reduced the sizeof dict_table_t by sizeof(ibool)
bytes because we don't need the dict_table_t::autoinc_inited field anymore.

Bug#39830 Table autoinc value not updated on first insert.
Bug#35498 Cannot get table test/table1 auto-inccounter value in ::info
Bug#36411 Failed to read auto-increment value from storage engine" in 5.1.24 auto-inc
rb://16
2008-10-23 04:30:32 +00:00
sunny
a37b1be6df branches/5.1: Backport r2724 from branches/zip
Check column value against the col max value before updating the table's
global autoinc counter value. This is part of simplifying the AUTOINC
sub-system. We extract the type info from MySQL data structures at runtime.

This fixes Bug#37788 InnoDB Plugin: AUTO_INCREMENT wrong for compressed tables
2008-10-22 21:42:24 +00:00
sunny
2e84d822af branches/5.1: Return the actual error code encountered when allocating
a new autoinc value. The change in behavior (bug) was introduced in 5.1.22
when we introduced the new AUTOINC locking model.

rb://31

Bug#40224 New AUTOINC changes mask reporting of deadlock/timeout errors
2008-10-22 08:01:18 +00:00
vasil
12617fa38a branches/5.1:
Merge a change from MySQL (this fixes the failing innodb and
innodb-semi-consistent tests):

  revno: 2757
  committer: Georgi Kodinov <kgeorge@mysql.com>
  branch nick: B39812-5.1-5.1.29-rc
  timestamp: Fri 2008-10-03 15:24:19 +0300
  message:
    Bug #39812: Make statement replication default for 5.1 (to match 5.0)
    
    Make STMT replication default for 5.1.
    Add a default of MIXED into the config files
    Fix the tests that needed MIXED replication mode.
  modified:
    mysql-test/include/mix1.inc
    mysql-test/r/innodb-semi-consistent.result
    mysql-test/r/innodb.result
    mysql-test/r/innodb_mysql.result
    mysql-test/r/tx_isolation_func.result
    mysql-test/t/innodb-semi-consistent.test
    mysql-test/t/innodb.test
    mysql-test/t/tx_isolation_func.test
    sql/mysqld.cc
    support-files/my-huge.cnf.sh
    support-files/my-innodb-heavy-4G.cnf.sh
    support-files/my-large.cnf.sh
    support-files/my-medium.cnf.sh
    support-files/my-small.cnf.sh
2008-10-21 08:07:44 +00:00
vasil
06683f69d4 branches/5.1:
In ha_innobase::info():

Replace sql_print_warning() which prints to mysqld error log with
push_warning_printf() which sends the error message to the client.

Suggested by:	Marko, Sunny, Michael
Objected by:	Inaam
2008-10-21 06:08:30 +00:00
vasil
efadb7ce97 branches/5.1:
Non-functional change: use a single tab instead of 12 spaces between
variable type and variable name.
2008-10-20 10:09:01 +00:00
marko
be36f37f76 branches/5.1: Backport a fix from branches/zip r2763:
row_drop_database_for_mysql(): Postpone mem_free(table_name), so that
an error printout will not dereference freed memory.
2008-10-13 10:21:02 +00:00
marko
60bc29b7c4 branches/5.1: ha_innobase::delete_all_rows(): In response to a user asking
<http://forums.innodb.com/read.php?4,215,215> why DELETE FROM t is not
mapped to TRUNCATE TABLE t as it is in MyISAM, note in a comment that
DELETE is transactional while TRUNCATE is not.
2008-10-09 06:53:09 +00:00