Commit 19b650ee authored by vasil's avatar vasil

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.
  ------------------------------------------------------------------------
parent 820dd607
...@@ -3847,8 +3847,8 @@ build_template( ...@@ -3847,8 +3847,8 @@ build_template(
goto include_field; goto include_field;
} }
if (bitmap_is_set(table->read_set, i) || if (bitmap_is_set(table->read_set, i) ||
bitmap_is_set(table->write_set, i)) { bitmap_is_set(table->write_set, i)) {
/* This field is needed in the query */ /* This field is needed in the query */
goto include_field; goto include_field;
...@@ -3940,7 +3940,7 @@ skip_field: ...@@ -3940,7 +3940,7 @@ skip_field:
} }
/************************************************************************ /************************************************************************
Get the upper limit of the MySQL integral type. */ Get the upper limit of the MySQL integral and floating-point type. */
UNIV_INTERN UNIV_INTERN
ulonglong ulonglong
ha_innobase::innobase_get_int_col_max_value( ha_innobase::innobase_get_int_col_max_value(
...@@ -3951,7 +3951,7 @@ ha_innobase::innobase_get_int_col_max_value( ...@@ -3951,7 +3951,7 @@ ha_innobase::innobase_get_int_col_max_value(
switch(field->key_type()) { switch(field->key_type()) {
/* TINY */ /* TINY */
case HA_KEYTYPE_BINARY: case HA_KEYTYPE_BINARY:
max_value = 0xFFULL; max_value = 0xFFULL;
break; break;
case HA_KEYTYPE_INT8: case HA_KEYTYPE_INT8:
...@@ -3965,7 +3965,7 @@ ha_innobase::innobase_get_int_col_max_value( ...@@ -3965,7 +3965,7 @@ ha_innobase::innobase_get_int_col_max_value(
max_value = 0x7FFFULL; max_value = 0x7FFFULL;
break; break;
/* MEDIUM */ /* MEDIUM */
case HA_KEYTYPE_UINT24: case HA_KEYTYPE_UINT24:
max_value = 0xFFFFFFULL; max_value = 0xFFFFFFULL;
break; break;
case HA_KEYTYPE_INT24: case HA_KEYTYPE_INT24:
...@@ -3979,12 +3979,20 @@ ha_innobase::innobase_get_int_col_max_value( ...@@ -3979,12 +3979,20 @@ ha_innobase::innobase_get_int_col_max_value(
max_value = 0x7FFFFFFFULL; max_value = 0x7FFFFFFFULL;
break; break;
/* BIG */ /* BIG */
case HA_KEYTYPE_ULONGLONG: case HA_KEYTYPE_ULONGLONG:
max_value = 0xFFFFFFFFFFFFFFFFULL; max_value = 0xFFFFFFFFFFFFFFFFULL;
break; break;
case HA_KEYTYPE_LONGLONG: case HA_KEYTYPE_LONGLONG:
max_value = 0x7FFFFFFFFFFFFFFFULL; max_value = 0x7FFFFFFFFFFFFFFFULL;
break; break;
case HA_KEYTYPE_FLOAT:
/* We use the maximum as per IEEE754-2008 standard, 2^24 */
max_value = 0x1000000ULL;
break;
case HA_KEYTYPE_DOUBLE:
/* We use the maximum as per IEEE754-2008 standard, 2^53 */
max_value = 0x20000000000000ULL;
break;
default: default:
ut_error; ut_error;
} }
......
...@@ -471,10 +471,9 @@ SHOW VARIABLES LIKE "%auto_inc%"; ...@@ -471,10 +471,9 @@ SHOW VARIABLES LIKE "%auto_inc%";
Variable_name Value Variable_name Value
auto_increment_increment 2 auto_increment_increment 2
auto_increment_offset 10 auto_increment_offset 10
INSERT INTO t1 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL); INSERT INTO t1 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL);
SELECT * FROM t1; SELECT * FROM t1;
c1 c1
0
1 1
18446744073709551603 18446744073709551603
18446744073709551604 18446744073709551604
...@@ -505,12 +504,13 @@ SHOW VARIABLES LIKE "%auto_inc%"; ...@@ -505,12 +504,13 @@ SHOW VARIABLES LIKE "%auto_inc%";
Variable_name Value Variable_name Value
auto_increment_increment 5 auto_increment_increment 5
auto_increment_offset 7 auto_increment_offset 7
INSERT INTO t1 VALUES (NULL),(NULL), (NULL); INSERT INTO t1 VALUES (NULL),(NULL);
Got one of the listed errors
SELECT * FROM t1; SELECT * FROM t1;
c1 c1
1 1
18446744073709551603 18446744073709551603
18446744073709551607
18446744073709551612
DROP TABLE t1; DROP TABLE t1;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1; SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
SET @@INSERT_ID=1; SET @@INSERT_ID=1;
...@@ -572,12 +572,58 @@ SHOW VARIABLES LIKE "%auto_inc%"; ...@@ -572,12 +572,58 @@ SHOW VARIABLES LIKE "%auto_inc%";
Variable_name Value Variable_name Value
auto_increment_increment 65535 auto_increment_increment 65535
auto_increment_offset 65535 auto_increment_offset 65535
INSERT INTO t1 VALUES (NULL),(NULL), (NULL); INSERT INTO t1 VALUES (NULL);
SELECT * FROM t1; SELECT * FROM t1;
c1 c1
1 1
65534
65535
18446744073709551610 18446744073709551610
18446744073709551615 18446744073709551615
DROP TABLE t1; DROP TABLE t1;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
SET @@INSERT_ID=1;
SHOW VARIABLES LIKE "%auto_inc%";
Variable_name Value
auto_increment_increment 1
auto_increment_offset 1
CREATE TABLE t1 (c1 DOUBLE NOT NULL AUTO_INCREMENT, c2 INT, PRIMARY KEY (c1)) ENGINE=InnoDB;
INSERT INTO t1 VALUES(NULL, 1);
INSERT INTO t1 VALUES(NULL, 2);
SELECT * FROM t1;
c1 c2
1 1
2 2
ALTER TABLE t1 CHANGE c1 c1 SERIAL;
SELECT * FROM t1;
c1 c2
1 1
2 2
INSERT INTO t1 VALUES(NULL, 3);
INSERT INTO t1 VALUES(NULL, 4);
SELECT * FROM t1;
c1 c2
1 1
2 2
3 3
4 4
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (c1 FLOAT NOT NULL AUTO_INCREMENT, c2 INT, PRIMARY KEY (c1)) ENGINE=InnoDB;
INSERT INTO t1 VALUES(NULL, 1);
INSERT INTO t1 VALUES(NULL, 2);
SELECT * FROM t1;
c1 c2
1 1
2 2
ALTER TABLE t1 CHANGE c1 c1 SERIAL;
SELECT * FROM t1;
c1 c2
1 1
2 2
INSERT INTO t1 VALUES(NULL, 3);
INSERT INTO t1 VALUES(NULL, 4);
SELECT * FROM t1;
c1 c2
1 1
2 2
3 3
4 4
DROP TABLE t1;
...@@ -23,7 +23,6 @@ DROP TABLE t1; ...@@ -23,7 +23,6 @@ DROP TABLE t1;
CREATE TABLE t1 (c1 TINYINT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB; CREATE TABLE t1 (c1 TINYINT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
INSERT INTO t1 VALUES (127, null); INSERT INTO t1 VALUES (127, null);
-- error ER_DUP_ENTRY,1062 -- error ER_DUP_ENTRY,1062
-- warning ER_WARN_DATA_OUT_OF_RANGE,1264
INSERT INTO t1 (c2) VALUES ('innodb'); INSERT INTO t1 (c2) VALUES ('innodb');
SELECT * FROM t1; SELECT * FROM t1;
DROP TABLE t1; DROP TABLE t1;
...@@ -31,7 +30,6 @@ DROP TABLE t1; ...@@ -31,7 +30,6 @@ DROP TABLE t1;
CREATE TABLE t1 (c1 TINYINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB; CREATE TABLE t1 (c1 TINYINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
INSERT INTO t1 VALUES (255, null); INSERT INTO t1 VALUES (255, null);
-- error ER_DUP_ENTRY,1062 -- error ER_DUP_ENTRY,1062
-- warning ER_WARN_DATA_OUT_OF_RANGE,1264
INSERT INTO t1 (c2) VALUES ('innodb'); INSERT INTO t1 (c2) VALUES ('innodb');
SELECT * FROM t1; SELECT * FROM t1;
DROP TABLE t1; DROP TABLE t1;
...@@ -41,7 +39,6 @@ DROP TABLE t1; ...@@ -41,7 +39,6 @@ DROP TABLE t1;
CREATE TABLE t1 (c1 SMALLINT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB; CREATE TABLE t1 (c1 SMALLINT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
INSERT INTO t1 VALUES (32767, null); INSERT INTO t1 VALUES (32767, null);
-- error ER_DUP_ENTRY,1062 -- error ER_DUP_ENTRY,1062
-- warning ER_WARN_DATA_OUT_OF_RANGE,1264
INSERT INTO t1 (c2) VALUES ('innodb'); INSERT INTO t1 (c2) VALUES ('innodb');
SELECT * FROM t1; SELECT * FROM t1;
DROP TABLE t1; DROP TABLE t1;
...@@ -49,7 +46,6 @@ DROP TABLE t1; ...@@ -49,7 +46,6 @@ DROP TABLE t1;
CREATE TABLE t1 (c1 SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB; CREATE TABLE t1 (c1 SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
INSERT INTO t1 VALUES (65535, null); INSERT INTO t1 VALUES (65535, null);
-- error ER_DUP_ENTRY,1062 -- error ER_DUP_ENTRY,1062
-- warning ER_WARN_DATA_OUT_OF_RANGE,1264
INSERT INTO t1 (c2) VALUES ('innodb'); INSERT INTO t1 (c2) VALUES ('innodb');
SELECT * FROM t1; SELECT * FROM t1;
DROP TABLE t1; DROP TABLE t1;
...@@ -59,7 +55,6 @@ DROP TABLE t1; ...@@ -59,7 +55,6 @@ DROP TABLE t1;
CREATE TABLE t1 (c1 MEDIUMINT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB; CREATE TABLE t1 (c1 MEDIUMINT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
INSERT INTO t1 VALUES (8388607, null); INSERT INTO t1 VALUES (8388607, null);
-- error ER_DUP_ENTRY,1062 -- error ER_DUP_ENTRY,1062
-- warning ER_WARN_DATA_OUT_OF_RANGE,1264
INSERT INTO t1 (c2) VALUES ('innodb'); INSERT INTO t1 (c2) VALUES ('innodb');
SELECT * FROM t1; SELECT * FROM t1;
DROP TABLE t1; DROP TABLE t1;
...@@ -67,7 +62,6 @@ DROP TABLE t1; ...@@ -67,7 +62,6 @@ DROP TABLE t1;
CREATE TABLE t1 (c1 MEDIUMINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB; CREATE TABLE t1 (c1 MEDIUMINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
INSERT INTO t1 VALUES (16777215, null); INSERT INTO t1 VALUES (16777215, null);
-- error ER_DUP_ENTRY,1062 -- error ER_DUP_ENTRY,1062
-- warning ER_WARN_DATA_OUT_OF_RANGE,1264
INSERT INTO t1 (c2) VALUES ('innodb'); INSERT INTO t1 (c2) VALUES ('innodb');
SELECT * FROM t1; SELECT * FROM t1;
DROP TABLE t1; DROP TABLE t1;
...@@ -77,7 +71,6 @@ DROP TABLE t1; ...@@ -77,7 +71,6 @@ DROP TABLE t1;
CREATE TABLE t1 (c1 INT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB; CREATE TABLE t1 (c1 INT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
INSERT INTO t1 VALUES (2147483647, null); INSERT INTO t1 VALUES (2147483647, null);
-- error ER_DUP_ENTRY,1062 -- error ER_DUP_ENTRY,1062
-- warning ER_WARN_DATA_OUT_OF_RANGE,1264
INSERT INTO t1 (c2) VALUES ('innodb'); INSERT INTO t1 (c2) VALUES ('innodb');
SELECT * FROM t1; SELECT * FROM t1;
DROP TABLE t1; DROP TABLE t1;
...@@ -94,7 +87,6 @@ DROP TABLE t1; ...@@ -94,7 +87,6 @@ DROP TABLE t1;
CREATE TABLE t1 (c1 BIGINT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB; CREATE TABLE t1 (c1 BIGINT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
INSERT INTO t1 VALUES (9223372036854775807, null); INSERT INTO t1 VALUES (9223372036854775807, null);
-- error ER_DUP_ENTRY,1062 -- error ER_DUP_ENTRY,1062
-- warning ER_WARN_DATA_OUT_OF_RANGE,1264
INSERT INTO t1 (c2) VALUES ('innodb'); INSERT INTO t1 (c2) VALUES ('innodb');
SELECT * FROM t1; SELECT * FROM t1;
DROP TABLE t1; DROP TABLE t1;
...@@ -276,7 +268,7 @@ CREATE TABLE t1 (c1 BIGINT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB; ...@@ -276,7 +268,7 @@ CREATE TABLE t1 (c1 BIGINT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
# TODO: Fix the autoinc init code # TODO: Fix the autoinc init code
# We have to do this because of a bug in the AUTOINC init code. # We have to do this because of a bug in the AUTOINC init code.
INSERT INTO t1 VALUES(NULL); INSERT INTO t1 VALUES(NULL);
INSERT INTO t1 VALUES (9223372036854775794); -- 2^63 - 14 INSERT INTO t1 VALUES (9223372036854775794); #-- 2^63 - 14
SELECT * FROM t1; SELECT * FROM t1;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10; SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "%auto_inc%";
...@@ -295,14 +287,25 @@ CREATE TABLE t1 (c1 BIGINT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=Inno ...@@ -295,14 +287,25 @@ CREATE TABLE t1 (c1 BIGINT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=Inno
# TODO: Fix the autoinc init code # TODO: Fix the autoinc init code
# We have to do this because of a bug in the AUTOINC init code. # We have to do this because of a bug in the AUTOINC init code.
INSERT INTO t1 VALUES(NULL); INSERT INTO t1 VALUES(NULL);
INSERT INTO t1 VALUES (18446744073709551603); -- 2^64 - 13 INSERT INTO t1 VALUES (18446744073709551603); #-- 2^64 - 13
SELECT * FROM t1; SELECT * FROM t1;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10; SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "%auto_inc%";
# This should fail because of overflow but it doesn't, it seems to be # This should fail because of overflow but it doesn't, it seems to be
# a MySQL server bug. It wraps around to 0 for the last value. # a MySQL server bug. It wraps around to 0 for the last value.
# See MySQL Bug# 39828 # See MySQL Bug# 39828
INSERT INTO t1 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL); #
# Instead of wrapping around, it asserts when MySQL is compiled --with-debug
# (see sql/handler.cc:handler::update_auto_increment()). Don't test for
# overflow until Bug #39828 is fixed.
#
# Since this asserts when compiled --with-debug, we can't properly test this
# until Bug #39828 is fixed. For now, this test is meaningless.
#if Bug #39828 is fixed
#INSERT INTO t1 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL);
#else
INSERT INTO t1 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL);
#endif
SELECT * FROM t1; SELECT * FROM t1;
DROP TABLE t1; DROP TABLE t1;
...@@ -316,7 +319,7 @@ CREATE TABLE t1 (c1 BIGINT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=Inno ...@@ -316,7 +319,7 @@ CREATE TABLE t1 (c1 BIGINT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=Inno
# TODO: Fix the autoinc init code # TODO: Fix the autoinc init code
# We have to do this because of a bug in the AUTOINC init code. # We have to do this because of a bug in the AUTOINC init code.
INSERT INTO t1 VALUES(NULL); INSERT INTO t1 VALUES(NULL);
INSERT INTO t1 VALUES (18446744073709551603); -- 2^64 - 13 INSERT INTO t1 VALUES (18446744073709551603); #-- 2^64 - 13
SELECT * FROM t1; SELECT * FROM t1;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=5, @@SESSION.AUTO_INCREMENT_OFFSET=7; SET @@SESSION.AUTO_INCREMENT_INCREMENT=5, @@SESSION.AUTO_INCREMENT_OFFSET=7;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "%auto_inc%";
...@@ -324,8 +327,16 @@ SHOW VARIABLES LIKE "%auto_inc%"; ...@@ -324,8 +327,16 @@ SHOW VARIABLES LIKE "%auto_inc%";
# a duplicate entry message because of a MySQL server bug, it wraps # a duplicate entry message because of a MySQL server bug, it wraps
# around. See MySQL Bug# 39828, once MySQL fix the bug we can replace # around. See MySQL Bug# 39828, once MySQL fix the bug we can replace
# the ER_DUP_ENTRY, 1062 below with the appropriate error message # the ER_DUP_ENTRY, 1062 below with the appropriate error message
-- error ER_DUP_ENTRY,1062 #
INSERT INTO t1 VALUES (NULL),(NULL), (NULL); # Since this asserts when compiled --with-debug, we can't properly test this
# until Bug #39828 is fixed. For now, this test is meaningless.
#if Bug #39828 is fixed
# Still need to fix this error code, error should mention overflow
#-- error ER_DUP_ENTRY,1062
#INSERT INTO t1 VALUES (NULL),(NULL), (NULL);
#else
INSERT INTO t1 VALUES (NULL),(NULL);
#endif
SELECT * FROM t1; SELECT * FROM t1;
DROP TABLE t1; DROP TABLE t1;
...@@ -339,9 +350,9 @@ CREATE TABLE t1 (c1 BIGINT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB; ...@@ -339,9 +350,9 @@ CREATE TABLE t1 (c1 BIGINT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
# TODO: Fix the autoinc init code # TODO: Fix the autoinc init code
# We have to do this because of a bug in the AUTOINC init code. # We have to do this because of a bug in the AUTOINC init code.
INSERT INTO t1 VALUES(NULL); INSERT INTO t1 VALUES(NULL);
INSERT INTO t1 VALUES(-9223372036854775806); -- -2^63 + 2 INSERT INTO t1 VALUES(-9223372036854775806); #-- -2^63 + 2
INSERT INTO t1 VALUES(-9223372036854775807); -- -2^63 + 1 INSERT INTO t1 VALUES(-9223372036854775807); #-- -2^63 + 1
INSERT INTO t1 VALUES(-9223372036854775808); -- -2^63 INSERT INTO t1 VALUES(-9223372036854775808); #-- -2^63
SELECT * FROM t1; SELECT * FROM t1;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=3, @@SESSION.AUTO_INCREMENT_OFFSET=3; SET @@SESSION.AUTO_INCREMENT_INCREMENT=3, @@SESSION.AUTO_INCREMENT_OFFSET=3;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "%auto_inc%";
...@@ -359,7 +370,7 @@ CREATE TABLE t1 (c1 BIGINT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=Inno ...@@ -359,7 +370,7 @@ CREATE TABLE t1 (c1 BIGINT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=Inno
# TODO: Fix the autoinc init code # TODO: Fix the autoinc init code
# We have to do this because of a bug in the AUTOINC init code. # We have to do this because of a bug in the AUTOINC init code.
INSERT INTO t1 VALUES(NULL); INSERT INTO t1 VALUES(NULL);
INSERT INTO t1 VALUES (18446744073709551610); -- 2^64 - 2 INSERT INTO t1 VALUES (18446744073709551610); #-- 2^64 - 2
SELECT * FROM t1; SELECT * FROM t1;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1152921504606846976, @@SESSION.AUTO_INCREMENT_OFFSET=1152921504606846976; SET @@SESSION.AUTO_INCREMENT_INCREMENT=1152921504606846976, @@SESSION.AUTO_INCREMENT_OFFSET=1152921504606846976;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "%auto_inc%";
...@@ -368,6 +379,41 @@ SHOW VARIABLES LIKE "%auto_inc%"; ...@@ -368,6 +379,41 @@ SHOW VARIABLES LIKE "%auto_inc%";
# See MySQL Bug# 39828, once MySQL fix the bug we can enable the error # See MySQL Bug# 39828, once MySQL fix the bug we can enable the error
# code expected test. # code expected test.
# -- error ER_AUTOINC_READ_FAILED,1467 # -- error ER_AUTOINC_READ_FAILED,1467
INSERT INTO t1 VALUES (NULL),(NULL), (NULL); #
# Since this asserts when compiled --with-debug, we can't properly test this
# until Bug #39828 is fixed. For now, this test is meaningless.
#if Bug #39828 is fixed
#-- error ER_AUTOINC_READ_FAILED,1467
#INSERT INTO t1 VALUES (NULL),(NULL);
#else
INSERT INTO t1 VALUES (NULL);
#endif
SELECT * FROM t1;
DROP TABLE t1;
#
# Check for floating point autoinc column handling
#
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
SET @@INSERT_ID=1;
SHOW VARIABLES LIKE "%auto_inc%";
CREATE TABLE t1 (c1 DOUBLE NOT NULL AUTO_INCREMENT, c2 INT, PRIMARY KEY (c1)) ENGINE=InnoDB;
INSERT INTO t1 VALUES(NULL, 1);
INSERT INTO t1 VALUES(NULL, 2);
SELECT * FROM t1;
ALTER TABLE t1 CHANGE c1 c1 SERIAL;
SELECT * FROM t1;
INSERT INTO t1 VALUES(NULL, 3);
INSERT INTO t1 VALUES(NULL, 4);
SELECT * FROM t1;
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (c1 FLOAT NOT NULL AUTO_INCREMENT, c2 INT, PRIMARY KEY (c1)) ENGINE=InnoDB;
INSERT INTO t1 VALUES(NULL, 1);
INSERT INTO t1 VALUES(NULL, 2);
SELECT * FROM t1;
ALTER TABLE t1 CHANGE c1 c1 SERIAL;
SELECT * FROM t1;
INSERT INTO t1 VALUES(NULL, 3);
INSERT INTO t1 VALUES(NULL, 4);
SELECT * FROM t1; SELECT * FROM t1;
DROP TABLE t1; DROP TABLE t1;
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment