 manual.texi website address change
row0sel.c CHECK TABLE now also for InnoDB, a join speed optimization
trx0trx.c CHECK TABLE now also for InnoDB, a join speed optimization
rem0cmp.c CHECK TABLE now also for InnoDB, a join speed optimization
row0mysql.c CHECK TABLE now also for InnoDB, a join speed optimization
page0page.c CHECK TABLE now also for InnoDB, a join speed optimization
row0mysql.h CHECK TABLE now also for InnoDB, a join speed optimization
trx0trx.h CHECK TABLE now also for InnoDB, a join speed optimization
btr0btr.h CHECK TABLE now also for InnoDB, a join speed optimization
btr0cur.h CHECK TABLE now also for InnoDB, a join speed optimization
btr0pcur.h CHECK TABLE now also for InnoDB, a join speed optimization
btr0pcur.ic CHECK TABLE now also for InnoDB, a join speed optimization
btr0btr.c CHECK TABLE now also for InnoDB, a join speed optimization
btr0cur.c CHECK TABLE now also for InnoDB, a join speed optimization
btr0sea.c CHECK TABLE now also for InnoDB, a join speed optimization
innodb.result CHECK TABLE now also for InnoDB, a join speed optimization
ha_innobase.cc CHECK TABLE now also for InnoDB, a join speed optimization
ha_innobase.h CHECK TABLE now also for InnoDB, a join speed optimization
25 years ago  Applied innodb-5.1-ss475 snapshot.
* Fix BUG#15650: "DELETE with LEFT JOIN crashes server with innodb_locks_unsafe_for binlog"
* Fix BUG#17134: "Partitions: uncommitted changes are visible"
* Fix BUG#17992: "Partitions: InnoDB, somehow rotten table after UPDATE"
row0ins.c: MySQL's partitioned table code does not set preduilt->sql_stat_start right
if it does an insert in the same statement after doing a search first in the same
partition table. We now write trx id always to the buffer, not just when flag
sql_stat_start is on. This will waste CPU time very sightly.
* Fix BUG#18077: "InnoDB uses full explicit table locks in stored FUNCTION"
* Fix BUG#18238: "When locks exhaust the buffer pool, InnoDB does not roll back the trx"
* Fix BUG#18252" "Disk space leak in updates of InnoDB BLOB rows in 5.0 and 5.1"
* Fix BUG#18283: "When InnoDB returns error 'lock table full', MySQL can write to binlog too much"
* Fix BUG#18350: "Use consistent read in CREATE ... SELECT ... if innodb_locks_unsafe_for_binlog"
* Fix BUG#18384: "InnoDB memory leak on duplicate key errors in 5.0 if row has many columns"
* Fix BUG#18934: "InnoDB crashes when table uses column names like DB_ROW_ID"
Refuse tables that use reserved column names.
* InnoDB's SQL parser:
- Add support for UNSIGNED types, EXIT keyword, quoted identifiers, user-function callbacks
for processing results of FETCH statements, bound literals, DATA_VARCHAR for bound literals.
- Allow bound literals of type non-INTEGER to be of length 0.
- Add make_flex.sh and update lexer/parser generation documentation.
- Add comment clarifying the difference between 'alias' and 'indirection' fields in sym_node_t.
- Remove never reached duplicate code in pars_set_dfield_type().
- Rewrite pars_info datatypes and APIs, add a few helper functions.
- Since the functions definitions in pars_info_t are accessed after pars_sql() returns
in the query graph execution stage, we can't free pars_info_t in pars_sql(). Instead,
make pars_sql() transfer ownership of pars_info_t to the created query graph, and
make que_graph_free() free it if needed.
- Allow access to system columns like DB_ROW_ID.
* Use bound literals in row_truncate_table_for_mysql, row_drop_table_for_mysql,
row_discard_tablespace_for_mysql, and row_rename_table_for_mysql.
* Setting an isolation level of the transaction to read committed weakens the locks for
this session similarly like the option innodb_locks_unsafe_for binlog. This patch removes
alnost all gap locking (used in next-key locking) and makes MySQL to release the row locks
on the rows which does not belong to result set. Additionally, nonlocking selects on
INSERT INTO SELECT, UPDATE ... (SELECT ...), and CREATE ... SELECT ... use a nonlocking
consistent read. If a binlog is used, then binlog format should be set to row based
binloging to make the execution of the complex SQL statements.
* Disable the statistic variables btr_search_n_hash_fail and n_hash_succ, n_hash_fail,
n_patt_succ, and n_searches of btr_search_t in builds without #ifdef UNIV_SEARCH_PERF_STAT.
* Make innodb.test faster. Group all consistent read test cases to a one test case and
wait their lock timeout after all have been send to the server. Decrease amount of rows
inserted in a certain test - this has no effect on the effectiveness of the test and
reduces the running time by ~10 sec. Remove temporary work-arounds from innodb.result
now that ALTER TABLE DROP FOREIGN KEY works once again.
* Make innodb_unsafe_binlog.test faster. Grout all consistent read test cases to a one
test case amd wait their lock timeout after all have been sent to the server. Remove
unnecessary option --loose_innodb_lock_wait_timeout.
* Print dictionary memory size in SHOW INNODB STATUS.
* Fix memory leaks in row_create_table_for_mysql() in rare corner cases.
* Remove code related to clustered tables. They were never implemented, and the
implementation would be challenging with ROW_FORMAT=COMPACT. Remove the table types
DICT_TABLE_CLUSTER_MEMBER and DICT_TABLE_CLUSTER and all related tests and functions.
dict_table_t: Remove mix_id, mix_len, mix_id_len, mix_id_buf, and cluster_name.
plan_t: Remove mixed_index.
dict_create_sys_tables_tuple(): Set MIX_ID=0, MIX_LEN=0, CLUSTER_NAME=NULL when
inserting into SYS_TABLES.
dict_tree_check_search_tuple(): Enclose in #ifdef UNIV_DEBUG.
* Move calling of thr_local_free() from trx_free_for_mysql() to
innobase_close_connection().
20 years ago  Applied innodb-5.1-ss475 snapshot.
* Fix BUG#15650: "DELETE with LEFT JOIN crashes server with innodb_locks_unsafe_for binlog"
* Fix BUG#17134: "Partitions: uncommitted changes are visible"
* Fix BUG#17992: "Partitions: InnoDB, somehow rotten table after UPDATE"
row0ins.c: MySQL's partitioned table code does not set preduilt->sql_stat_start right
if it does an insert in the same statement after doing a search first in the same
partition table. We now write trx id always to the buffer, not just when flag
sql_stat_start is on. This will waste CPU time very sightly.
* Fix BUG#18077: "InnoDB uses full explicit table locks in stored FUNCTION"
* Fix BUG#18238: "When locks exhaust the buffer pool, InnoDB does not roll back the trx"
* Fix BUG#18252" "Disk space leak in updates of InnoDB BLOB rows in 5.0 and 5.1"
* Fix BUG#18283: "When InnoDB returns error 'lock table full', MySQL can write to binlog too much"
* Fix BUG#18350: "Use consistent read in CREATE ... SELECT ... if innodb_locks_unsafe_for_binlog"
* Fix BUG#18384: "InnoDB memory leak on duplicate key errors in 5.0 if row has many columns"
* Fix BUG#18934: "InnoDB crashes when table uses column names like DB_ROW_ID"
Refuse tables that use reserved column names.
* InnoDB's SQL parser:
- Add support for UNSIGNED types, EXIT keyword, quoted identifiers, user-function callbacks
for processing results of FETCH statements, bound literals, DATA_VARCHAR for bound literals.
- Allow bound literals of type non-INTEGER to be of length 0.
- Add make_flex.sh and update lexer/parser generation documentation.
- Add comment clarifying the difference between 'alias' and 'indirection' fields in sym_node_t.
- Remove never reached duplicate code in pars_set_dfield_type().
- Rewrite pars_info datatypes and APIs, add a few helper functions.
- Since the functions definitions in pars_info_t are accessed after pars_sql() returns
in the query graph execution stage, we can't free pars_info_t in pars_sql(). Instead,
make pars_sql() transfer ownership of pars_info_t to the created query graph, and
make que_graph_free() free it if needed.
- Allow access to system columns like DB_ROW_ID.
* Use bound literals in row_truncate_table_for_mysql, row_drop_table_for_mysql,
row_discard_tablespace_for_mysql, and row_rename_table_for_mysql.
* Setting an isolation level of the transaction to read committed weakens the locks for
this session similarly like the option innodb_locks_unsafe_for binlog. This patch removes
alnost all gap locking (used in next-key locking) and makes MySQL to release the row locks
on the rows which does not belong to result set. Additionally, nonlocking selects on
INSERT INTO SELECT, UPDATE ... (SELECT ...), and CREATE ... SELECT ... use a nonlocking
consistent read. If a binlog is used, then binlog format should be set to row based
binloging to make the execution of the complex SQL statements.
* Disable the statistic variables btr_search_n_hash_fail and n_hash_succ, n_hash_fail,
n_patt_succ, and n_searches of btr_search_t in builds without #ifdef UNIV_SEARCH_PERF_STAT.
* Make innodb.test faster. Group all consistent read test cases to a one test case and
wait their lock timeout after all have been send to the server. Decrease amount of rows
inserted in a certain test - this has no effect on the effectiveness of the test and
reduces the running time by ~10 sec. Remove temporary work-arounds from innodb.result
now that ALTER TABLE DROP FOREIGN KEY works once again.
* Make innodb_unsafe_binlog.test faster. Grout all consistent read test cases to a one
test case amd wait their lock timeout after all have been sent to the server. Remove
unnecessary option --loose_innodb_lock_wait_timeout.
* Print dictionary memory size in SHOW INNODB STATUS.
* Fix memory leaks in row_create_table_for_mysql() in rare corner cases.
* Remove code related to clustered tables. They were never implemented, and the
implementation would be challenging with ROW_FORMAT=COMPACT. Remove the table types
DICT_TABLE_CLUSTER_MEMBER and DICT_TABLE_CLUSTER and all related tests and functions.
dict_table_t: Remove mix_id, mix_len, mix_id_len, mix_id_buf, and cluster_name.
plan_t: Remove mixed_index.
dict_create_sys_tables_tuple(): Set MIX_ID=0, MIX_LEN=0, CLUSTER_NAME=NULL when
inserting into SYS_TABLES.
dict_tree_check_search_tuple(): Enclose in #ifdef UNIV_DEBUG.
* Move calling of thr_local_free() from trx_free_for_mysql() to
innobase_close_connection().
20 years ago  Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
Also:
* Remove remnants of the obsolete concept of memoryfixing tables and indexes.
* Remove unused dict_table_LRU_trim().
* Remove unused 'trx' parameter from dict_table_get_on_id_low(),
dict_table_get(), dict_table_get_and_increment_handle_count().
* Add a normal linked list implementation.
* Add a work queue implementation.
* Add 'level' parameter to mutex_create() and rw_lock_create().
Remove mutex_set_level() and rw_lock_set_level().
* Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
* Add support for bound ids in InnoDB's parser.
* Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
pages of B-tree indexes.
btr_validate_level(): Check the validity of the doubly linked
list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
* Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
distinguishing names of tables from other identifiers.
New: innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low(): Add
parameter 'cs' so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace
dict_accept() in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
statement to InnoDB in the connection character set and let InnoDB
convert the identifier to UTF-8.
* Add max_row_size to dict_table_t.
* btr0cur.c
btr_copy_externally_stored_field(): Only set the 'offset' variable
when needed.
* buf0buf.c
buf_page_io_complete(): Write to the error log if the page number or
the space id o the disk do not match those in memory. Also write to
the error log if a page was read from the doublewrite buffer. The
doublewrite buffer should be only read by the lower-level function
fil_io() at database startup.
* dict0dict.c
dict_scan_table_name(): Remove fallback to differently encoded name
when the table is not found. The encoding is handled at a higher level.
* ha_innodb.cc
Increment statistic counter in ha_innobase::index_prev() (bug 19542).
Add innobase_convert_string wrapper function and a new file
ha_prototypes.h.
innobase_print_identifier(): Remove TODO comment before calling
get_quote_char_for_identifier(). That function apparently assumes
the identifier to be encoded in UTF-8.
* ibuf0ibuf.c|h
ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
The function is only being called #ifdef UNIV_IBUF_DEBUG.
* innodb.result
Adjust the results for changes in the foreign key error messages.
* mem0mem.c|h
New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
* os0file.c
Check the page trailers also after writing to disk. This improves
chances of diagnosing bug 18886.
os_file_check_page_trailers(): New function for checking that the
two copies of the LSN stamped on the page match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
* row0mysql.c
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx) (bug 19727).
* row0sel.c
row_fetch_print(): Handle SQL NULL values without crashing.
row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
when handling an externally stored column.
Fetch externally stored fields when using InnoDB's internal SQL
parser.
Optimize BLOB selects by using prebuilt->blob_heap directly instead
of first reading BLOB data to a temporary heap and then copying it
to prebuilt->blob_heap.
* srv0srv.c
srv_master_thread(): Remove unreachable code.
* srv0start.c
srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
'g' as abbreviations of megabyte and gigabyte (bug 19609).
srv_parse_megabytes(): New fuction.
* ut0dbg.c|h
Implement InnoDB assertions (ut_a and ut_error) with abort() when
the code is compiled with GCC 3 or later on other platforms than
Windows or Netware. Also disable the variable ut_dbg_stop_threads
and the function ut_dbg_stop_thread() i this case, unless
UNIV_SYC_DEBUG is defined. This should allow the compiler to
generate more compact code for assertions.
* ut0list.c|h
Add ib_list_create_heap().
20 years ago  Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
Also:
* Remove remnants of the obsolete concept of memoryfixing tables and indexes.
* Remove unused dict_table_LRU_trim().
* Remove unused 'trx' parameter from dict_table_get_on_id_low(),
dict_table_get(), dict_table_get_and_increment_handle_count().
* Add a normal linked list implementation.
* Add a work queue implementation.
* Add 'level' parameter to mutex_create() and rw_lock_create().
Remove mutex_set_level() and rw_lock_set_level().
* Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
* Add support for bound ids in InnoDB's parser.
* Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
pages of B-tree indexes.
btr_validate_level(): Check the validity of the doubly linked
list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
* Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
distinguishing names of tables from other identifiers.
New: innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low(): Add
parameter 'cs' so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace
dict_accept() in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
statement to InnoDB in the connection character set and let InnoDB
convert the identifier to UTF-8.
* Add max_row_size to dict_table_t.
* btr0cur.c
btr_copy_externally_stored_field(): Only set the 'offset' variable
when needed.
* buf0buf.c
buf_page_io_complete(): Write to the error log if the page number or
the space id o the disk do not match those in memory. Also write to
the error log if a page was read from the doublewrite buffer. The
doublewrite buffer should be only read by the lower-level function
fil_io() at database startup.
* dict0dict.c
dict_scan_table_name(): Remove fallback to differently encoded name
when the table is not found. The encoding is handled at a higher level.
* ha_innodb.cc
Increment statistic counter in ha_innobase::index_prev() (bug 19542).
Add innobase_convert_string wrapper function and a new file
ha_prototypes.h.
innobase_print_identifier(): Remove TODO comment before calling
get_quote_char_for_identifier(). That function apparently assumes
the identifier to be encoded in UTF-8.
* ibuf0ibuf.c|h
ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
The function is only being called #ifdef UNIV_IBUF_DEBUG.
* innodb.result
Adjust the results for changes in the foreign key error messages.
* mem0mem.c|h
New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
* os0file.c
Check the page trailers also after writing to disk. This improves
chances of diagnosing bug 18886.
os_file_check_page_trailers(): New function for checking that the
two copies of the LSN stamped on the page match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
* row0mysql.c
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx) (bug 19727).
* row0sel.c
row_fetch_print(): Handle SQL NULL values without crashing.
row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
when handling an externally stored column.
Fetch externally stored fields when using InnoDB's internal SQL
parser.
Optimize BLOB selects by using prebuilt->blob_heap directly instead
of first reading BLOB data to a temporary heap and then copying it
to prebuilt->blob_heap.
* srv0srv.c
srv_master_thread(): Remove unreachable code.
* srv0start.c
srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
'g' as abbreviations of megabyte and gigabyte (bug 19609).
srv_parse_megabytes(): New fuction.
* ut0dbg.c|h
Implement InnoDB assertions (ut_a and ut_error) with abort() when
the code is compiled with GCC 3 or later on other platforms than
Windows or Netware. Also disable the variable ut_dbg_stop_threads
and the function ut_dbg_stop_thread() i this case, unless
UNIV_SYC_DEBUG is defined. This should allow the compiler to
generate more compact code for assertions.
* ut0list.c|h
Add ib_list_create_heap().
20 years ago  Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
Also:
* Remove remnants of the obsolete concept of memoryfixing tables and indexes.
* Remove unused dict_table_LRU_trim().
* Remove unused 'trx' parameter from dict_table_get_on_id_low(),
dict_table_get(), dict_table_get_and_increment_handle_count().
* Add a normal linked list implementation.
* Add a work queue implementation.
* Add 'level' parameter to mutex_create() and rw_lock_create().
Remove mutex_set_level() and rw_lock_set_level().
* Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
* Add support for bound ids in InnoDB's parser.
* Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
pages of B-tree indexes.
btr_validate_level(): Check the validity of the doubly linked
list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
* Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
distinguishing names of tables from other identifiers.
New: innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low(): Add
parameter 'cs' so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace
dict_accept() in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
statement to InnoDB in the connection character set and let InnoDB
convert the identifier to UTF-8.
* Add max_row_size to dict_table_t.
* btr0cur.c
btr_copy_externally_stored_field(): Only set the 'offset' variable
when needed.
* buf0buf.c
buf_page_io_complete(): Write to the error log if the page number or
the space id o the disk do not match those in memory. Also write to
the error log if a page was read from the doublewrite buffer. The
doublewrite buffer should be only read by the lower-level function
fil_io() at database startup.
* dict0dict.c
dict_scan_table_name(): Remove fallback to differently encoded name
when the table is not found. The encoding is handled at a higher level.
* ha_innodb.cc
Increment statistic counter in ha_innobase::index_prev() (bug 19542).
Add innobase_convert_string wrapper function and a new file
ha_prototypes.h.
innobase_print_identifier(): Remove TODO comment before calling
get_quote_char_for_identifier(). That function apparently assumes
the identifier to be encoded in UTF-8.
* ibuf0ibuf.c|h
ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
The function is only being called #ifdef UNIV_IBUF_DEBUG.
* innodb.result
Adjust the results for changes in the foreign key error messages.
* mem0mem.c|h
New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
* os0file.c
Check the page trailers also after writing to disk. This improves
chances of diagnosing bug 18886.
os_file_check_page_trailers(): New function for checking that the
two copies of the LSN stamped on the page match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
* row0mysql.c
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx) (bug 19727).
* row0sel.c
row_fetch_print(): Handle SQL NULL values without crashing.
row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
when handling an externally stored column.
Fetch externally stored fields when using InnoDB's internal SQL
parser.
Optimize BLOB selects by using prebuilt->blob_heap directly instead
of first reading BLOB data to a temporary heap and then copying it
to prebuilt->blob_heap.
* srv0srv.c
srv_master_thread(): Remove unreachable code.
* srv0start.c
srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
'g' as abbreviations of megabyte and gigabyte (bug 19609).
srv_parse_megabytes(): New fuction.
* ut0dbg.c|h
Implement InnoDB assertions (ut_a and ut_error) with abort() when
the code is compiled with GCC 3 or later on other platforms than
Windows or Netware. Also disable the variable ut_dbg_stop_threads
and the function ut_dbg_stop_thread() i this case, unless
UNIV_SYC_DEBUG is defined. This should allow the compiler to
generate more compact code for assertions.
* ut0list.c|h
Add ib_list_create_heap().
20 years ago |
|
drop table if exists t1,t2,t3,t4;drop database if exists mysqltest;create table t1 (id int unsigned not null auto_increment, code tinyint unsigned not null, name char(20) not null, primary key (id), key (code), unique (name)) engine=innodb;insert into t1 (code, name) values (1, 'Tim'), (1, 'Monty'), (2, 'David'), (2, 'Erik'), (3, 'Sasha'), (3, 'Jeremy'), (4, 'Matt');select id, code, name from t1 order by id;id code name1 1 Tim2 1 Monty3 2 David4 2 Erik5 3 Sasha6 3 Jeremy7 4 Mattupdate ignore t1 set id = 8, name = 'Sinisa' where id < 3;select id, code, name from t1 order by id;id code name2 1 Monty3 2 David4 2 Erik5 3 Sasha6 3 Jeremy7 4 Matt8 1 Sinisaupdate ignore t1 set id = id + 10, name = 'Ralph' where id < 4;select id, code, name from t1 order by id;id code name3 2 David4 2 Erik5 3 Sasha6 3 Jeremy7 4 Matt8 1 Sinisa12 1 Ralphdrop table t1;CREATE TABLE t1 (id int(11) NOT NULL auto_increment,parent_id int(11) DEFAULT '0' NOT NULL,level tinyint(4) DEFAULT '0' NOT NULL,PRIMARY KEY (id),KEY parent_id (parent_id),KEY level (level)) engine=innodb;INSERT INTO t1 VALUES (1,0,0),(3,1,1),(4,1,1),(8,2,2),(9,2,2),(17,3,2),(22,4,2),(24,4,2),(28,5,2),(29,5,2),(30,5,2),(31,6,2),(32,6,2),(33,6,2),(203,7,2),(202,7,2),(20,3,2),(157,0,0),(193,5,2),(40,7,2),(2,1,1),(15,2,2),(6,1,1),(34,6,2),(35,6,2),(16,3,2),(7,1,1),(36,7,2),(18,3,2),(26,5,2),(27,5,2),(183,4,2),(38,7,2),(25,5,2),(37,7,2),(21,4,2),(19,3,2),(5,1,1),(179,5,2);update t1 set parent_id=parent_id+100;select * from t1 where parent_id=102;id parent_id level8 102 29 102 215 102 2update t1 set id=id+1000;update t1 set id=1024 where id=1009;Got one of the listed errorsselect * from t1;id parent_id level1001 100 01002 101 11003 101 11004 101 11005 101 11006 101 11007 101 11008 102 21009 102 21015 102 21016 103 21017 103 21018 103 21019 103 21020 103 21021 104 21022 104 21024 104 21025 105 21026 105 21027 105 21028 105 21029 105 21030 105 21031 106 21032 106 21033 106 21034 106 21035 106 21036 107 21037 107 21038 107 21040 107 21157 100 01179 105 21183 104 21193 105 21202 107 21203 107 2update ignore t1 set id=id+1;select * from t1;id parent_id level1001 100 01002 101 11003 101 11004 101 11005 101 11006 101 11007 101 11008 102 21010 102 21015 102 21016 103 21017 103 21018 103 21019 103 21020 103 21021 104 21023 104 21024 104 21025 105 21026 105 21027 105 21028 105 21029 105 21030 105 21031 106 21032 106 21033 106 21034 106 21035 106 21036 107 21037 107 21039 107 21041 107 21158 100 01180 105 21184 104 21194 105 21202 107 21204 107 2update ignore t1 set id=1023 where id=1010;select * from t1 where parent_id=102;id parent_id level1008 102 21010 102 21015 102 2explain select level from t1 where level=1;id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 ref level level 1 const # Using indexexplain select level,id from t1 where level=1;id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 ref level level 1 const # Using indexexplain select level,id,parent_id from t1 where level=1;id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 ref level level 1 const # select level,id from t1 where level=1;level id1 10021 10031 10041 10051 10061 1007select level,id,parent_id from t1 where level=1;level id parent_id1 1002 1011 1003 1011 1004 1011 1005 1011 1006 1011 1007 101optimize table t1;Table Op Msg_type Msg_texttest.t1 optimize note Table does not support optimize, doing recreate + analyze insteadtest.t1 optimize status OKshow keys from t1;Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Commentt1 0 PRIMARY 1 id A # NULL NULL BTREE t1 1 parent_id 1 parent_id A # NULL NULL BTREE t1 1 level 1 level A # NULL NULL BTREE drop table t1;CREATE TABLE t1 (gesuchnr int(11) DEFAULT '0' NOT NULL,benutzer_id int(11) DEFAULT '0' NOT NULL,PRIMARY KEY (gesuchnr,benutzer_id)) engine=innodb;replace into t1 (gesuchnr,benutzer_id) values (2,1);replace into t1 (gesuchnr,benutzer_id) values (1,1);replace into t1 (gesuchnr,benutzer_id) values (1,1);select * from t1;gesuchnr benutzer_id1 12 1drop table t1;create table t1 (a int) engine=innodb;insert into t1 values (1), (2);optimize table t1;Table Op Msg_type Msg_texttest.t1 optimize note Table does not support optimize, doing recreate + analyze insteadtest.t1 optimize status OKdelete from t1 where a = 1;select * from t1;a2check table t1;Table Op Msg_type Msg_texttest.t1 check status OKdrop table t1;create table t1 (a int,b varchar(20)) engine=innodb;insert into t1 values (1,""), (2,"testing");delete from t1 where a = 1;select * from t1;a b2 testingcreate index skr on t1 (a);insert into t1 values (3,""), (4,"testing");analyze table t1;Table Op Msg_type Msg_texttest.t1 analyze status OKshow keys from t1;Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Commentt1 1 skr 1 a A # NULL NULL YES BTREE drop table t1;create table t1 (a int,b varchar(20),key(a)) engine=innodb;insert into t1 values (1,""), (2,"testing");select * from t1 where a = 1;a b1 drop table t1;create table t1 (n int not null primary key) engine=innodb;set autocommit=0;insert into t1 values (4);rollback;select n, "after rollback" from t1;n after rollbackinsert into t1 values (4);commit;select n, "after commit" from t1;n after commit4 after commitcommit;insert into t1 values (5);insert into t1 values (4);ERROR 23000: Duplicate entry '4' for key 'PRIMARY'commit;select n, "after commit" from t1;n after commit4 after commit5 after commitset autocommit=1;insert into t1 values (6);insert into t1 values (4);ERROR 23000: Duplicate entry '4' for key 'PRIMARY'select n from t1;n456set autocommit=0;begin;savepoint `my_savepoint`;insert into t1 values (7);savepoint `savept2`;insert into t1 values (3);select n from t1;n34567savepoint savept3;rollback to savepoint savept2;rollback to savepoint savept3;ERROR 42000: SAVEPOINT savept3 does not existrollback to savepoint savept2;release savepoint `my_savepoint`;select n from t1;n4567rollback to savepoint `my_savepoint`;ERROR 42000: SAVEPOINT my_savepoint does not existrollback to savepoint savept2;ERROR 42000: SAVEPOINT savept2 does not existinsert into t1 values (8);savepoint sv;commit;savepoint sv;set autocommit=1;rollback;drop table t1;create table t1 (n int not null primary key) engine=innodb;start transaction;insert into t1 values (4);flush tables with read lock;commit;unlock tables;commit;select * from t1;n4drop table t1;create table t1 ( id int NOT NULL PRIMARY KEY, nom varchar(64)) engine=innodb;begin;insert into t1 values(1,'hamdouni');select id as afterbegin_id,nom as afterbegin_nom from t1;afterbegin_id afterbegin_nom1 hamdounirollback;select id as afterrollback_id,nom as afterrollback_nom from t1;afterrollback_id afterrollback_nomset autocommit=0;insert into t1 values(2,'mysql');select id as afterautocommit0_id,nom as afterautocommit0_nom from t1;afterautocommit0_id afterautocommit0_nom2 mysqlrollback;select id as afterrollback_id,nom as afterrollback_nom from t1;afterrollback_id afterrollback_nomset autocommit=1;drop table t1;CREATE TABLE t1 (id char(8) not null primary key, val int not null) engine=innodb;insert into t1 values ('pippo', 12);insert into t1 values ('pippo', 12);ERROR 23000: Duplicate entry 'pippo' for key 'PRIMARY'delete from t1;delete from t1 where id = 'pippo';select * from t1;id valinsert into t1 values ('pippo', 12);set autocommit=0;delete from t1;rollback;select * from t1;id valpippo 12delete from t1;commit;select * from t1;id valdrop table t1;create table t1 (a integer) engine=innodb;start transaction;rename table t1 to t2;create table t1 (b integer) engine=innodb;insert into t1 values (1);rollback;drop table t1;rename table t2 to t1;drop table t1;set autocommit=1;CREATE TABLE t1 (ID INTEGER NOT NULL PRIMARY KEY, NAME VARCHAR(64)) ENGINE=innodb;INSERT INTO t1 VALUES (1, 'Jochen');select * from t1;ID NAME1 Jochendrop table t1;CREATE TABLE t1 ( _userid VARCHAR(60) NOT NULL PRIMARY KEY) ENGINE=innodb;set autocommit=0;INSERT INTO t1 SET _userid='marc@anyware.co.uk';COMMIT;SELECT * FROM t1;_useridmarc@anyware.co.ukSELECT _userid FROM t1 WHERE _userid='marc@anyware.co.uk';_useridmarc@anyware.co.ukdrop table t1;set autocommit=1;CREATE TABLE t1 (user_id int(10) DEFAULT '0' NOT NULL,name varchar(100),phone varchar(100),ref_email varchar(100) DEFAULT '' NOT NULL,detail varchar(200),PRIMARY KEY (user_id,ref_email))engine=innodb;INSERT INTO t1 VALUES (10292,'sanjeev','29153373','sansh777@hotmail.com','xxx'),(10292,'shirish','2333604','shirish@yahoo.com','ddsds'),(10292,'sonali','323232','sonali@bolly.com','filmstar');select * from t1 where user_id=10292;user_id name phone ref_email detail10292 sanjeev 29153373 sansh777@hotmail.com xxx10292 shirish 2333604 shirish@yahoo.com ddsds10292 sonali 323232 sonali@bolly.com filmstarINSERT INTO t1 VALUES (10291,'sanjeev','29153373','sansh777@hotmail.com','xxx'),(10293,'shirish','2333604','shirish@yahoo.com','ddsds');select * from t1 where user_id=10292;user_id name phone ref_email detail10292 sanjeev 29153373 sansh777@hotmail.com xxx10292 shirish 2333604 shirish@yahoo.com ddsds10292 sonali 323232 sonali@bolly.com filmstarselect * from t1 where user_id>=10292;user_id name phone ref_email detail10292 sanjeev 29153373 sansh777@hotmail.com xxx10292 shirish 2333604 shirish@yahoo.com ddsds10292 sonali 323232 sonali@bolly.com filmstar10293 shirish 2333604 shirish@yahoo.com ddsdsselect * from t1 where user_id>10292;user_id name phone ref_email detail10293 shirish 2333604 shirish@yahoo.com ddsdsselect * from t1 where user_id<10292;user_id name phone ref_email detail10291 sanjeev 29153373 sansh777@hotmail.com xxxdrop table t1;CREATE TABLE t1 (a int not null, b int not null,c int not null,key(a),primary key(a,b), unique(c),key(a),unique(b));show index from t1;Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Commentt1 0 PRIMARY 1 a A # NULL NULL BTREE t1 0 PRIMARY 2 b A # NULL NULL BTREE t1 0 c 1 c A # NULL NULL BTREE t1 0 b 1 b A # NULL NULL BTREE t1 1 a 1 a A # NULL NULL BTREE t1 1 a_2 1 a A # NULL NULL BTREE drop table t1;create table t1 (col1 int not null, col2 char(4) not null, primary key(col1));alter table t1 engine=innodb;insert into t1 values ('1','1'),('5','2'),('2','3'),('3','4'),('4','4');select * from t1;col1 col21 12 33 44 45 2update t1 set col2='7' where col1='4';select * from t1;col1 col21 12 33 44 75 2alter table t1 add co3 int not null;select * from t1;col1 col2 co31 1 02 3 03 4 04 7 05 2 0update t1 set col2='9' where col1='2';select * from t1;col1 col2 co31 1 02 9 03 4 04 7 05 2 0drop table t1;create table t1 (a int not null , b int, primary key (a)) engine = innodb;create table t2 (a int not null , b int, primary key (a)) engine = myisam;insert into t1 VALUES (1,3) , (2,3), (3,3);select * from t1;a b1 32 33 3insert into t2 select * from t1;select * from t2;a b1 32 33 3delete from t1 where b = 3;select * from t1;a binsert into t1 select * from t2;select * from t1;a b1 32 33 3select * from t2;a b1 32 33 3drop table t1,t2;CREATE TABLE t1 (user_name varchar(12),password text,subscribed char(1),user_id int(11) DEFAULT '0' NOT NULL,quota bigint(20),weight double,access_date date,access_time time,approved datetime,dummy_primary_key int(11) NOT NULL auto_increment,PRIMARY KEY (dummy_primary_key)) ENGINE=innodb;INSERT INTO t1 VALUES ('user_0','somepassword','N',0,0,0,'2000-09-07','23:06:59','2000-09-07 23:06:59',1);INSERT INTO t1 VALUES ('user_1','somepassword','Y',1,1,1,'2000-09-07','23:06:59','2000-09-07 23:06:59',2);INSERT INTO t1 VALUES ('user_2','somepassword','N',2,2,1.4142135623731,'2000-09-07','23:06:59','2000-09-07 23:06:59',3);INSERT INTO t1 VALUES ('user_3','somepassword','Y',3,3,1.7320508075689,'2000-09-07','23:06:59','2000-09-07 23:06:59',4);INSERT INTO t1 VALUES ('user_4','somepassword','N',4,4,2,'2000-09-07','23:06:59','2000-09-07 23:06:59',5);select user_name, password , subscribed, user_id, quota, weight, access_date, access_time, approved, dummy_primary_key from t1 order by user_name;user_name password subscribed user_id quota weight access_date access_time approved dummy_primary_keyuser_0 somepassword N 0 0 0 2000-09-07 23:06:59 2000-09-07 23:06:59 1user_1 somepassword Y 1 1 1 2000-09-07 23:06:59 2000-09-07 23:06:59 2user_2 somepassword N 2 2 1.4142135623731 2000-09-07 23:06:59 2000-09-07 23:06:59 3user_3 somepassword Y 3 3 1.7320508075689 2000-09-07 23:06:59 2000-09-07 23:06:59 4user_4 somepassword N 4 4 2 2000-09-07 23:06:59 2000-09-07 23:06:59 5drop table t1;CREATE TABLE t1 (id int(11) NOT NULL auto_increment,parent_id int(11) DEFAULT '0' NOT NULL,level tinyint(4) DEFAULT '0' NOT NULL,KEY (id),KEY parent_id (parent_id),KEY level (level)) engine=innodb;INSERT INTO t1 VALUES (1,0,0),(3,1,1),(4,1,1),(8,2,2),(9,2,2),(17,3,2),(22,4,2),(24,4,2),(28,5,2),(29,5,2),(30,5,2),(31,6,2),(32,6,2),(33,6,2),(203,7,2),(202,7,2),(20,3,2),(157,0,0),(193,5,2),(40,7,2),(2,1,1),(15,2,2),(6,1,1),(34,6,2),(35,6,2),(16,3,2),(7,1,1),(36,7,2),(18,3,2),(26,5,2),(27,5,2),(183,4,2),(38,7,2),(25,5,2),(37,7,2),(21,4,2),(19,3,2),(5,1,1);INSERT INTO t1 values (179,5,2);update t1 set parent_id=parent_id+100;select * from t1 where parent_id=102;id parent_id level8 102 29 102 215 102 2update t1 set id=id+1000;update t1 set id=1024 where id=1009;select * from t1;id parent_id level1001 100 01003 101 11004 101 11008 102 21024 102 21017 103 21022 104 21024 104 21028 105 21029 105 21030 105 21031 106 21032 106 21033 106 21203 107 21202 107 21020 103 21157 100 01193 105 21040 107 21002 101 11015 102 21006 101 11034 106 21035 106 21016 103 21007 101 11036 107 21018 103 21026 105 21027 105 21183 104 21038 107 21025 105 21037 107 21021 104 21019 103 21005 101 11179 105 2update ignore t1 set id=id+1;select * from t1;id parent_id level1002 100 01004 101 11005 101 11009 102 21025 102 21018 103 21023 104 21025 104 21029 105 21030 105 21031 105 21032 106 21033 106 21034 106 21204 107 21203 107 21021 103 21158 100 01194 105 21041 107 21003 101 11016 102 21007 101 11035 106 21036 106 21017 103 21008 101 11037 107 21019 103 21027 105 21028 105 21184 104 21039 107 21026 105 21038 107 21022 104 21020 103 21006 101 11180 105 2update ignore t1 set id=1023 where id=1010;select * from t1 where parent_id=102;id parent_id level1009 102 21025 102 21016 102 2explain select level from t1 where level=1;id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 ref level level 1 const # Using indexselect level,id from t1 where level=1;level id1 10041 10051 10031 10071 10081 1006select level,id,parent_id from t1 where level=1;level id parent_id1 1004 1011 1005 1011 1003 1011 1007 1011 1008 1011 1006 101select level,id from t1 where level=1 order by id;level id1 10031 10041 10051 10061 10071 1008delete from t1 where level=1;select * from t1;id parent_id level1002 100 01009 102 21025 102 21018 103 21023 104 21025 104 21029 105 21030 105 21031 105 21032 106 21033 106 21034 106 21204 107 21203 107 21021 103 21158 100 01194 105 21041 107 21016 102 21035 106 21036 106 21017 103 21037 107 21019 103 21027 105 21028 105 21184 104 21039 107 21026 105 21038 107 21022 104 21020 103 21180 105 2drop table t1;CREATE TABLE t1 (sca_code char(6) NOT NULL,cat_code char(6) NOT NULL,sca_desc varchar(50),lan_code char(2) NOT NULL,sca_pic varchar(100),sca_sdesc varchar(50),sca_sch_desc varchar(16),PRIMARY KEY (sca_code, cat_code, lan_code),INDEX sca_pic (sca_pic)) engine = innodb ;INSERT INTO t1 ( sca_code, cat_code, sca_desc, lan_code, sca_pic, sca_sdesc, sca_sch_desc) VALUES ( 'PD', 'J', 'PENDANT', 'EN', NULL, NULL, 'PENDANT'),( 'RI', 'J', 'RING', 'EN', NULL, NULL, 'RING'),( 'QQ', 'N', 'RING', 'EN', 'not null', NULL, 'RING');select count(*) from t1 where sca_code = 'PD';count(*)1select count(*) from t1 where sca_code <= 'PD';count(*)1select count(*) from t1 where sca_pic is null;count(*)2alter table t1 drop index sca_pic, add index sca_pic (cat_code, sca_pic);select count(*) from t1 where sca_code='PD' and sca_pic is null;count(*)1select count(*) from t1 where cat_code='E';count(*)0alter table t1 drop index sca_pic, add index (sca_pic, cat_code);select count(*) from t1 where sca_code='PD' and sca_pic is null;count(*)1select count(*) from t1 where sca_pic >= 'n';count(*)1select sca_pic from t1 where sca_pic is null;sca_picNULLNULLupdate t1 set sca_pic="test" where sca_pic is null;delete from t1 where sca_code='pd';drop table t1;set @a:=now();CREATE TABLE t1 (a int not null, b timestamp not null, primary key (a)) engine=innodb;insert into t1 (a) values(1),(2),(3);select t1.a from t1 natural join t1 as t2 where t1.b >= @a order by t1.a;a123select a from t1 natural join t1 as t2 where b >= @a order by a;a123update t1 set a=5 where a=1;select a from t1;a235drop table t1;create table t1 (a varchar(100) not null, primary key(a), b int not null) engine=innodb;insert into t1 values("hello",1),("world",2);select * from t1 order by b desc;a bworld 2hello 1optimize table t1;Table Op Msg_type Msg_texttest.t1 optimize note Table does not support optimize, doing recreate + analyze insteadtest.t1 optimize status OKshow keys from t1;Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Commentt1 0 PRIMARY 1 a A # NULL NULL BTREE drop table t1;create table t1 (i int, j int ) ENGINE=innodb;insert into t1 values (1,2);select * from t1 where i=1 and j=2;i j1 2create index ax1 on t1 (i,j);select * from t1 where i=1 and j=2;i j1 2drop table t1;CREATE TABLE t1 (a int3 unsigned NOT NULL,b int1 unsigned NOT NULL,UNIQUE (a, b)) ENGINE = innodb;INSERT INTO t1 VALUES (1, 1);SELECT MIN(B),MAX(b) FROM t1 WHERE t1.a = 1;MIN(B) MAX(b)1 1drop table t1;CREATE TABLE t1 (a int unsigned NOT NULL) engine=innodb;INSERT INTO t1 VALUES (1);SELECT * FROM t1;a1DROP TABLE t1;create table t1 (a int primary key,b int, c int, d int, e int, f int, g int, h int, i int, j int, k int, l int, m int, n int, o int, p int, q int, r int, s int, t int, u int, v int, w int, x int, y int, z int, a1 int, a2 int, a3 int, a4 int, a5 int, a6 int, a7 int, a8 int, a9 int, b1 int, b2 int, b3 int, b4 int, b5 int, b6 int) engine = innodb;insert into t1 values (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);explain select * from t1 where a > 0 and a < 50;id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL # Using wheredrop table t1;create table t1 (id int NOT NULL,id2 int NOT NULL,id3 int NOT NULL,dummy1 char(30),primary key (id,id2),index index_id3 (id3)) engine=innodb;insert into t1 values (0,0,0,'ABCDEFGHIJ'),(2,2,2,'BCDEFGHIJK'),(1,1,1,'CDEFGHIJKL');LOCK TABLES t1 WRITE;insert into t1 values (99,1,2,'D'),(1,1,2,'D');ERROR 23000: Duplicate entry '1-1' for key 'PRIMARY'select id from t1;id012select id from t1;id012UNLOCK TABLES;DROP TABLE t1;create table t1 (id int NOT NULL,id2 int NOT NULL,id3 int NOT NULL,dummy1 char(30),primary key (id,id2),index index_id3 (id3)) engine=innodb;insert into t1 values (0,0,0,'ABCDEFGHIJ'),(2,2,2,'BCDEFGHIJK'),(1,1,1,'CDEFGHIJKL');LOCK TABLES t1 WRITE;begin;insert into t1 values (99,1,2,'D'),(1,1,2,'D');ERROR 23000: Duplicate entry '1-1' for key 'PRIMARY'select id from t1;id012insert ignore into t1 values (100,1,2,'D'),(1,1,99,'D');commit;select id,id3 from t1;id id30 01 12 2100 2UNLOCK TABLES;DROP TABLE t1;create table t1 (a char(20), unique (a(5))) engine=innodb;drop table t1;create table t1 (a char(20), index (a(5))) engine=innodb;show create table t1;Table Create Tablet1 CREATE TABLE `t1` ( `a` char(20) DEFAULT NULL, KEY `a` (`a`(5))) ENGINE=InnoDB DEFAULT CHARSET=latin1drop table t1;create temporary table t1 (a int not null auto_increment, primary key(a)) engine=innodb;insert into t1 values (NULL),(NULL),(NULL);delete from t1 where a=3;insert into t1 values (NULL);select * from t1;a124alter table t1 add b int;select * from t1;a b1 NULL2 NULL4 NULLdrop table t1;create table t1(id int auto_increment primary key,name varchar(32) not null,value text not null,uid int not null,unique key(name,uid)) engine=innodb;insert into t1 values (1,'one','one value',101),(2,'two','two value',102),(3,'three','three value',103);set insert_id=5;replace into t1 (value,name,uid) values ('other value','two',102);delete from t1 where uid=102;set insert_id=5;replace into t1 (value,name,uid) values ('other value','two',102);set insert_id=6;replace into t1 (value,name,uid) values ('other value','two',102);select * from t1;id name value uid1 one one value 1013 three three value 1036 two other value 102drop table t1;create database mysqltest;create table mysqltest.t1 (a int not null) engine= innodb;insert into mysqltest.t1 values(1);create table mysqltest.t2 (a int not null) engine= myisam;insert into mysqltest.t2 values(1);create table mysqltest.t3 (a int not null) engine= heap;insert into mysqltest.t3 values(1);commit;drop database mysqltest;show tables from mysqltest;ERROR 42000: Unknown database 'mysqltest'set autocommit=0;create table t1 (a int not null) engine= innodb;insert into t1 values(1),(2);truncate table t1;commit;truncate table t1;truncate table t1;select * from t1;ainsert into t1 values(1),(2);delete from t1;select * from t1;acommit;drop table t1;set autocommit=1;create table t1 (a int not null) engine= innodb;insert into t1 values(1),(2);truncate table t1;insert into t1 values(1),(2);select * from t1;a12truncate table t1;insert into t1 values(1),(2);delete from t1;select * from t1;adrop table t1;create table t1 (a int not null, b int not null, c int not null, primary key (a),key(b)) engine=innodb;insert into t1 values (3,3,3),(1,1,1),(2,2,2),(4,4,4);explain select * from t1 order by a;id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 index NULL PRIMARY 4 NULL # explain select * from t1 order by b;id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 ALL NULL NULL NULL NULL # Using filesortexplain select * from t1 order by c;id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 ALL NULL NULL NULL NULL # Using filesortexplain select a from t1 order by a;id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 index NULL PRIMARY 4 NULL # Using indexexplain select b from t1 order by b;id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 index NULL b 4 NULL # Using indexexplain select a,b from t1 order by b;id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 index NULL b 4 NULL # Using indexexplain select a,b from t1;id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 index NULL b 4 NULL # Using indexexplain select a,b,c from t1;id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 ALL NULL NULL NULL NULL # drop table t1;create table t1 (t int not null default 1, key (t)) engine=innodb;desc t1;Field Type Null Key Default Extrat int(11) NO MUL 1 drop table t1;CREATE TABLE t1 (number bigint(20) NOT NULL default '0',cname char(15) NOT NULL default '',carrier_id smallint(6) NOT NULL default '0',privacy tinyint(4) NOT NULL default '0',last_mod_date timestamp NOT NULL,last_mod_id smallint(6) NOT NULL default '0',last_app_date timestamp NOT NULL,last_app_id smallint(6) default '-1',version smallint(6) NOT NULL default '0',assigned_scps int(11) default '0',status tinyint(4) default '0') ENGINE=InnoDB;INSERT INTO t1 VALUES (4077711111,'SeanWheeler',90,2,20020111112846,500,00000000000000,-1,2,3,1);INSERT INTO t1 VALUES (9197722223,'berry',90,3,20020111112809,500,20020102114532,501,4,10,0);INSERT INTO t1 VALUES (650,'San Francisco',0,0,20011227111336,342,00000000000000,-1,1,24,1);INSERT INTO t1 VALUES (302467,'Sue\'s Subshop',90,3,20020109113241,500,20020102115111,501,7,24,0);INSERT INTO t1 VALUES (6014911113,'SudzCarwash',520,1,20020102115234,500,20020102115259,501,33,32768,0);INSERT INTO t1 VALUES (333,'tubs',99,2,20020109113440,501,20020109113440,500,3,10,0);CREATE TABLE t2 (number bigint(20) NOT NULL default '0',cname char(15) NOT NULL default '',carrier_id smallint(6) NOT NULL default '0',privacy tinyint(4) NOT NULL default '0',last_mod_date timestamp NOT NULL,last_mod_id smallint(6) NOT NULL default '0',last_app_date timestamp NOT NULL,last_app_id smallint(6) default '-1',version smallint(6) NOT NULL default '0',assigned_scps int(11) default '0',status tinyint(4) default '0') ENGINE=InnoDB;INSERT INTO t2 VALUES (4077711111,'SeanWheeler',0,2,20020111112853,500,00000000000000,-1,2,3,1);INSERT INTO t2 VALUES (9197722223,'berry',90,3,20020111112818,500,20020102114532,501,4,10,0);INSERT INTO t2 VALUES (650,'San Francisco',90,0,20020109113158,342,00000000000000,-1,1,24,1);INSERT INTO t2 VALUES (333,'tubs',99,2,20020109113453,501,20020109113453,500,3,10,0);select * from t1;number cname carrier_id privacy last_mod_date last_mod_id last_app_date last_app_id version assigned_scps status4077711111 SeanWheeler 90 2 2002-01-11 11:28:46 500 0000-00-00 00:00:00 -1 2 3 19197722223 berry 90 3 2002-01-11 11:28:09 500 2002-01-02 11:45:32 501 4 10 0650 San Francisco 0 0 2001-12-27 11:13:36 342 0000-00-00 00:00:00 -1 1 24 1302467 Sue's Subshop 90 3 2002-01-09 11:32:41 500 2002-01-02 11:51:11 501 7 24 06014911113 SudzCarwash 520 1 2002-01-02 11:52:34 500 2002-01-02 11:52:59 501 33 32768 0333 tubs 99 2 2002-01-09 11:34:40 501 2002-01-09 11:34:40 500 3 10 0select * from t2;number cname carrier_id privacy last_mod_date last_mod_id last_app_date last_app_id version assigned_scps status4077711111 SeanWheeler 0 2 2002-01-11 11:28:53 500 0000-00-00 00:00:00 -1 2 3 19197722223 berry 90 3 2002-01-11 11:28:18 500 2002-01-02 11:45:32 501 4 10 0650 San Francisco 90 0 2002-01-09 11:31:58 342 0000-00-00 00:00:00 -1 1 24 1333 tubs 99 2 2002-01-09 11:34:53 501 2002-01-09 11:34:53 500 3 10 0delete t1, t2 from t1 left join t2 on t1.number=t2.number where (t1.carrier_id=90 and t1.number=t2.number) or (t2.carrier_id=90 and t1.number=t2.number) or (t1.carrier_id=90 and t2.number is null);select * from t1;number cname carrier_id privacy last_mod_date last_mod_id last_app_date last_app_id version assigned_scps status6014911113 SudzCarwash 520 1 2002-01-02 11:52:34 500 2002-01-02 11:52:59 501 33 32768 0333 tubs 99 2 2002-01-09 11:34:40 501 2002-01-09 11:34:40 500 3 10 0select * from t2;number cname carrier_id privacy last_mod_date last_mod_id last_app_date last_app_id version assigned_scps status333 tubs 99 2 2002-01-09 11:34:53 501 2002-01-09 11:34:53 500 3 10 0select * from t2;number cname carrier_id privacy last_mod_date last_mod_id last_app_date last_app_id version assigned_scps status333 tubs 99 2 2002-01-09 11:34:53 501 2002-01-09 11:34:53 500 3 10 0drop table t1,t2;create table t1 (id int unsigned not null auto_increment, code tinyint unsigned not null, name char(20) not null, primary key (id), key (code), unique (name)) engine=innodb;BEGIN;SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;SELECT @@tx_isolation,@@global.tx_isolation;@@tx_isolation @@global.tx_isolationSERIALIZABLE REPEATABLE-READinsert into t1 (code, name) values (1, 'Tim'), (1, 'Monty'), (2, 'David');select id, code, name from t1 order by id;id code name1 1 Tim2 1 Monty3 2 DavidCOMMIT;BEGIN;SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;insert into t1 (code, name) values (2, 'Erik'), (3, 'Sasha');select id, code, name from t1 order by id;id code name1 1 Tim2 1 Monty3 2 David4 2 Erik5 3 SashaCOMMIT;SET binlog_format='MIXED';BEGIN;SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;insert into t1 (code, name) values (3, 'Jeremy'), (4, 'Matt');select id, code, name from t1 order by id;id code name1 1 Tim2 1 Monty3 2 David4 2 Erik5 3 Sasha6 3 Jeremy7 4 MattCOMMIT;DROP TABLE t1;create table t1 (n int(10), d int(10)) engine=innodb;create table t2 (n int(10), d int(10)) engine=innodb;insert into t1 values(1,1),(1,2);insert into t2 values(1,10),(2,20);UPDATE t1,t2 SET t1.d=t2.d,t2.d=30 WHERE t1.n=t2.n;select * from t1;n d1 101 10select * from t2;n d1 302 20drop table t1,t2;drop table if exists t1, t2;CREATE TABLE t1 (a int, PRIMARY KEY (a));CREATE TABLE t2 (a int, PRIMARY KEY (a)) ENGINE=InnoDB;create trigger trg_del_t2 after delete on t2 for each rowinsert into t1 values (1);insert into t1 values (1);insert into t2 values (1),(2);delete t2 from t2;ERROR 23000: Duplicate entry '1' for key 'PRIMARY'select count(*) from t2 /* must be 2 as restored after rollback caused by the error */;count(*)2drop table t1, t2;drop table if exists t1, t2;CREATE TABLE t1 (a int, PRIMARY KEY (a));CREATE TABLE t2 (a int, PRIMARY KEY (a)) ENGINE=InnoDB;create trigger trg_del_t2 after delete on t2 for each rowinsert into t1 values (1);insert into t1 values (1);insert into t2 values (1),(2);delete t2 from t2;ERROR 23000: Duplicate entry '1' for key 'PRIMARY'select count(*) from t2 /* must be 2 as restored after rollback caused by the error */;count(*)2drop table t1, t2;create table t1 (a int, b int) engine=innodb;insert into t1 values(20,null);select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 ont2.b=t3.a;b ifnull(t2.b,"this is null")NULL this is nullselect t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 ont2.b=t3.a order by 1;b ifnull(t2.b,"this is null")NULL this is nullinsert into t1 values(10,null);select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 ont2.b=t3.a order by 1;b ifnull(t2.b,"this is null")NULL this is nullNULL this is nulldrop table t1;create table t1 (a varchar(10) not null) engine=myisam;create table t2 (b varchar(10) not null unique) engine=innodb;select t1.a from t1,t2 where t1.a=t2.b;adrop table t1,t2;create table t1 (a int not null, b int, primary key (a)) engine = innodb;create table t2 (a int not null, b int, primary key (a)) engine = innodb;insert into t1 values (10, 20);insert into t2 values (10, 20);update t1, t2 set t1.b = 150, t2.b = t1.b where t2.a = t1.a and t1.a = 10;drop table t1,t2;CREATE TABLE t1 (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB;CREATE TABLE t2 (id INT PRIMARY KEY, t1_id INT, INDEX par_ind (t1_id), FOREIGN KEY (t1_id) REFERENCES t1(id) ON DELETE CASCADE ) ENGINE=INNODB;insert into t1 set id=1;insert into t2 set id=1, t1_id=1;delete t1,t2 from t1,t2 where t1.id=t2.t1_id;select * from t1;idselect * from t2;id t1_iddrop table t2,t1;CREATE TABLE t1(id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB;CREATE TABLE t2(id INT PRIMARY KEY, t1_id INT, INDEX par_ind (t1_id) ) ENGINE=INNODB;INSERT INTO t1 VALUES(1);INSERT INTO t2 VALUES(1, 1);SELECT * from t1;id1UPDATE t1,t2 SET t1.id=t1.id+1, t2.t1_id=t1.id+1;SELECT * from t1;id2UPDATE t1,t2 SET t1.id=t1.id+1 where t1.id!=t2.id;SELECT * from t1;id3DROP TABLE t1,t2;set autocommit=0;CREATE TABLE t1 (id CHAR(15) NOT NULL, value CHAR(40) NOT NULL, PRIMARY KEY(id)) ENGINE=InnoDB;CREATE TABLE t2 (id CHAR(15) NOT NULL, value CHAR(40) NOT NULL, PRIMARY KEY(id)) ENGINE=InnoDB;CREATE TABLE t3 (id1 CHAR(15) NOT NULL, id2 CHAR(15) NOT NULL, PRIMARY KEY(id1, id2)) ENGINE=InnoDB;INSERT INTO t3 VALUES("my-test-1", "my-test-2");COMMIT;INSERT INTO t1 VALUES("this-key", "will disappear");INSERT INTO t2 VALUES("this-key", "will also disappear");DELETE FROM t3 WHERE id1="my-test-1";SELECT * FROM t1;id valuethis-key will disappearSELECT * FROM t2;id valuethis-key will also disappearSELECT * FROM t3;id1 id2ROLLBACK;SELECT * FROM t1;id valueSELECT * FROM t2;id valueSELECT * FROM t3;id1 id2my-test-1 my-test-2SELECT * FROM t3 WHERE id1="my-test-1" LOCK IN SHARE MODE;id1 id2my-test-1 my-test-2COMMIT;set autocommit=1;DROP TABLE t1,t2,t3;CREATE TABLE t1 (a int not null primary key, b int not null, unique (b)) engine=innodb;INSERT INTO t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9);UPDATE t1 set a=a+100 where b between 2 and 3 and a < 1000;SELECT * from t1;a b1 1102 2103 34 45 56 67 78 89 9drop table t1;CREATE TABLE t2 ( NEXT_T BIGINT NOT NULL PRIMARY KEY) ENGINE=MyISAM;CREATE TABLE t1 ( B_ID INTEGER NOT NULL PRIMARY KEY) ENGINE=InnoDB;SET AUTOCOMMIT=0;INSERT INTO t1 ( B_ID ) VALUES ( 1 );INSERT INTO t2 ( NEXT_T ) VALUES ( 1 );ROLLBACK;Warnings:Warning 1196 Some non-transactional changed tables couldn't be rolled backSELECT * FROM t1;B_IDdrop table t1,t2;create table t1 ( pk int primary key, parent int not null, child int not null, index (parent) ) engine = innodb;insert into t1 values (1,0,4), (2,1,3), (3,2,1), (4,1,2);select distinct parent,child from t1 order by parent;parent child0 41 21 32 1drop table t1;create table t1 (a int not null auto_increment primary key, b int, c int, key(c)) engine=innodb;create table t2 (a int not null auto_increment primary key, b int);insert into t1 (b) values (null),(null),(null),(null),(null),(null),(null);insert into t2 (a) select b from t1;insert into t1 (b) select b from t2;insert into t2 (a) select b from t1;insert into t1 (a) select b from t2;insert into t2 (a) select b from t1;insert into t1 (a) select b from t2;insert into t2 (a) select b from t1;insert into t1 (a) select b from t2;insert into t2 (a) select b from t1;insert into t1 (a) select b from t2;select count(*) from t1;count(*)623explain select * from t1 where c between 1 and 2500;id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 range c c 5 NULL # Using whereupdate t1 set c=a;explain select * from t1 where c between 1 and 2500;id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 ALL c NULL NULL NULL # Using wheredrop table t1,t2;create table t1 (id int primary key auto_increment, fk int, index index_fk (fk)) engine=innodb;insert into t1 (id) values (null),(null),(null),(null),(null);update t1 set fk=69 where fk is null order by id limit 1;SELECT * from t1;id fk2 NULL3 NULL4 NULL5 NULL1 69drop table t1;create table t1 (a int not null, b int not null, key (a));insert into t1 values (1,1),(1,2),(1,3),(3,1),(3,2),(3,3),(3,1),(3,2),(3,3),(2,1),(2,2),(2,3);SET @tmp=0;update t1 set b=(@tmp:=@tmp+1) order by a;update t1 set b=99 where a=1 order by b asc limit 1;update t1 set b=100 where a=1 order by b desc limit 2;update t1 set a=a+10+b where a=1 order by b;select * from t1 order by a,b;a b2 42 52 63 73 83 93 103 113 1213 2111 100111 100drop table t1;create table t1 ( c char(8) not null ) engine=innodb;insert into t1 values ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'),('8'),('9');insert into t1 values ('A'),('B'),('C'),('D'),('E'),('F');alter table t1 add b char(8) not null;alter table t1 add a char(8) not null;alter table t1 add primary key (a,b,c);update t1 set a=c, b=c;create table t2 (c char(8) not null, b char(8) not null, a char(8) not null, primary key(a,b,c)) engine=innodb;insert into t2 select * from t1;delete t1,t2 from t2,t1 where t1.a<'B' and t2.b=t1.b;drop table t1,t2;SET AUTOCOMMIT=1;create table t1 (a integer auto_increment primary key) engine=innodb;insert into t1 (a) values (NULL),(NULL);truncate table t1;insert into t1 (a) values (NULL),(NULL);SELECT * from t1;a12drop table t1;CREATE TABLE t1 (`id 1` INT NOT NULL, PRIMARY KEY (`id 1`)) ENGINE=INNODB;CREATE TABLE t2 (id INT PRIMARY KEY, t1_id INT, INDEX par_ind (t1_id), FOREIGN KEY (`t1_id`) REFERENCES `t1`(`id 1`) ON DELETE CASCADE ) ENGINE=INNODB;drop table t2,t1;create table `t1` (`id` int( 11 ) not null ,primary key ( `id` )) engine = innodb;insert into `t1`values ( 1 ) ;create table `t2` (`id` int( 11 ) not null default '0',unique key `id` ( `id` ) ,constraint `t1_id_fk` foreign key ( `id` ) references `t1` (`id` )) engine = innodb;insert into `t2`values ( 1 ) ;create table `t3` (`id` int( 11 ) not null default '0',key `id` ( `id` ) ,constraint `t2_id_fk` foreign key ( `id` ) references `t2` (`id` )) engine = innodb;insert into `t3`values ( 1 ) ;delete t3,t2,t1 from t1,t2,t3 where t1.id =1 and t2.id = t1.id and t3.id = t2.id;ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`))update t1,t2,t3 set t3.id=5, t2.id=6, t1.id=7 where t1.id =1 and t2.id = t1.id and t3.id = t2.id;ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`))update t3 set t3.id=7 where t1.id =1 and t2.id = t1.id and t3.id = t2.id;ERROR 42S22: Unknown column 't1.id' in 'where clause'drop table t3,t2,t1;CREATE TABLE t1 (c1 VARCHAR(8), c2 VARCHAR(8),PRIMARY KEY (c1, c2)) ENGINE=InnoDB;CREATE TABLE t2 (c0 INT PRIMARY KEY,c1 VARCHAR(8) UNIQUE,FOREIGN KEY (c1) REFERENCES t1 (c1) ON UPDATE CASCADE) ENGINE=InnoDB;INSERT INTO t1 VALUES ('old', 'somevalu'), ('other', 'anyvalue');INSERT INTO t2 VALUES (10, 'old'), (20, 'other');UPDATE t1 SET c1 = 'other' WHERE c1 = 'old';ERROR 23000: Upholding foreign key constraints for table 't1', entry 'other-somevalu', key 2 would lead to a duplicate entryDROP TABLE t2,t1;create table t1(id int primary key,pid int,index(pid),foreign key(pid) references t1(id) on delete cascade) engine=innodb;insert into t1 values(0,0),(1,0),(2,1),(3,2),(4,3),(5,4),(6,5),(7,6),(8,7),(9,8),(10,9),(11,10),(12,11),(13,12),(14,13),(15,14);delete from t1 where id=0;ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t1`, CONSTRAINT `t1_ibfk_1` FOREIGN KEY (`pid`) REFERENCES `t1` (`id`) ON DELETE CASCADE)delete from t1 where id=15;delete from t1 where id=0;drop table t1;CREATE TABLE t1 (col1 int(1))ENGINE=InnoDB;CREATE TABLE t2 (col1 int(1),stamp TIMESTAMP,INDEX stamp_idx(stamp))ENGINE=InnoDB;insert into t1 values (1),(2),(3);insert into t2 values (1, 20020204130000),(2, 20020204130000),(4,20020204310000 ),(5,20020204230000);Warnings:Warning 1265 Data truncated for column 'stamp' at row 3SELECT col1 FROM t1 UNION SELECT col1 FROM t2 WHERE stamp <'20020204120000' GROUP BY col1;col11234drop table t1,t2;CREATE TABLE t1 (`id` int(10) unsigned NOT NULL auto_increment,`id_object` int(10) unsigned default '0',`id_version` int(10) unsigned NOT NULL default '1',`label` varchar(100) NOT NULL default '',`description` text,PRIMARY KEY (`id`),KEY `id_object` (`id_object`),KEY `id_version` (`id_version`)) ENGINE=InnoDB;INSERT INTO t1 VALUES("6", "3382", "9", "Test", NULL), ("7", "102", "5", "Le Pekin (Test)", NULL),("584", "1794", "4", "Test de resto", NULL),("837", "1822", "6", "Test 3", NULL),("1119", "3524", "1", "Societe Test", NULL),("1122", "3525", "1", "Fournisseur Test", NULL);CREATE TABLE t2 (`id` int(10) unsigned NOT NULL auto_increment,`id_version` int(10) unsigned NOT NULL default '1',PRIMARY KEY (`id`),KEY `id_version` (`id_version`)) ENGINE=InnoDB;INSERT INTO t2 VALUES("3524", "1"),("3525", "1"),("1794", "4"),("102", "5"),("1822", "6"),("3382", "9");SELECT t2.id, t1.`label` FROM t2 INNER JOIN(SELECT t1.id_object as id_object FROM t1 WHERE t1.`label` LIKE '%test%') AS lbl ON (t2.id = lbl.id_object) INNER JOIN t1 ON (t2.id = t1.id_object);id label3382 Test102 Le Pekin (Test)1794 Test de resto1822 Test 33524 Societe Test3525 Fournisseur Testdrop table t1,t2;create table t1 (a int, b varchar(200), c text not null) checksum=1 engine=myisam;create table t2 (a int, b varchar(200), c text not null) checksum=0 engine=innodb;create table t3 (a int, b varchar(200), c text not null) checksum=1 engine=innodb;insert t1 values (1, "aaa", "bbb"), (NULL, "", "ccccc"), (0, NULL, "");insert t2 select * from t1;insert t3 select * from t1;checksum table t1, t2, t3, t4 quick;Table Checksumtest.t1 2948697075test.t2 NULLtest.t3 NULLtest.t4 NULLWarnings:Error 1146 Table 'test.t4' doesn't existchecksum table t1, t2, t3, t4;Table Checksumtest.t1 2948697075test.t2 2948697075test.t3 2948697075test.t4 NULLWarnings:Error 1146 Table 'test.t4' doesn't existchecksum table t1, t2, t3, t4 extended;Table Checksumtest.t1 2948697075test.t2 2948697075test.t3 2948697075test.t4 NULLWarnings:Error 1146 Table 'test.t4' doesn't existdrop table t1,t2,t3;create table t1 (id int, name char(10) not null, name2 char(10) not null) engine=innodb;insert into t1 values(1,'first','fff'),(2,'second','sss'),(3,'third','ttt');select trim(name2) from t1 union all select trim(name) from t1 union all select trim(id) from t1;trim(name2)fffssstttfirstsecondthird123drop table t1;create table t1 (a int) engine=innodb;create table t2 like t1;drop table t1,t2;create table t1 (id int(11) not null, id2 int(11) not null, unique (id,id2)) engine=innodb;create table t2 (id int(11) not null, constraint t1_id_fk foreign key ( id ) references t1 (id)) engine = innodb;show create table t1;Table Create Tablet1 CREATE TABLE `t1` ( `id` int(11) NOT NULL, `id2` int(11) NOT NULL, UNIQUE KEY `id` (`id`,`id2`)) ENGINE=InnoDB DEFAULT CHARSET=latin1show create table t2;Table Create Tablet2 CREATE TABLE `t2` ( `id` int(11) NOT NULL, KEY `t1_id_fk` (`id`), CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1create index id on t2 (id);show create table t2;Table Create Tablet2 CREATE TABLE `t2` ( `id` int(11) NOT NULL, KEY `id` (`id`), CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1create index id2 on t2 (id);show create table t2;Table Create Tablet2 CREATE TABLE `t2` ( `id` int(11) NOT NULL, KEY `id` (`id`), KEY `id2` (`id`), CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1drop index id2 on t2;drop index id on t2;Got one of the listed errorsshow create table t2;Table Create Tablet2 CREATE TABLE `t2` ( `id` int(11) NOT NULL, KEY `id` (`id`), CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1drop table t2;create table t2 (id int(11) not null, id2 int(11) not null, constraint t1_id_fk foreign key (id,id2) references t1 (id,id2)) engine = innodb;show create table t2;Table Create Tablet2 CREATE TABLE `t2` ( `id` int(11) NOT NULL, `id2` int(11) NOT NULL, KEY `t1_id_fk` (`id`,`id2`), CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`, `id2`) REFERENCES `t1` (`id`, `id2`)) ENGINE=InnoDB DEFAULT CHARSET=latin1create unique index id on t2 (id,id2);show create table t2;Table Create Tablet2 CREATE TABLE `t2` ( `id` int(11) NOT NULL, `id2` int(11) NOT NULL, UNIQUE KEY `id` (`id`,`id2`), CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`, `id2`) REFERENCES `t1` (`id`, `id2`)) ENGINE=InnoDB DEFAULT CHARSET=latin1drop table t2;create table t2 (id int(11) not null, id2 int(11) not null, unique (id,id2),constraint t1_id_fk foreign key (id2,id) references t1 (id,id2)) engine = innodb;show create table t2;Table Create Tablet2 CREATE TABLE `t2` ( `id` int(11) NOT NULL, `id2` int(11) NOT NULL, UNIQUE KEY `id` (`id`,`id2`), KEY `t1_id_fk` (`id2`,`id`), CONSTRAINT `t1_id_fk` FOREIGN KEY (`id2`, `id`) REFERENCES `t1` (`id`, `id2`)) ENGINE=InnoDB DEFAULT CHARSET=latin1drop table t2;create table t2 (id int(11) not null, id2 int(11) not null, unique (id,id2), constraint t1_id_fk foreign key (id) references t1 (id)) engine = innodb;show create table t2;Table Create Tablet2 CREATE TABLE `t2` ( `id` int(11) NOT NULL, `id2` int(11) NOT NULL, UNIQUE KEY `id` (`id`,`id2`), CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1drop table t2;create table t2 (id int(11) not null, id2 int(11) not null, unique (id,id2),constraint t1_id_fk foreign key (id2,id) references t1 (id,id2)) engine = innodb;show create table t2;Table Create Tablet2 CREATE TABLE `t2` ( `id` int(11) NOT NULL, `id2` int(11) NOT NULL, UNIQUE KEY `id` (`id`,`id2`), KEY `t1_id_fk` (`id2`,`id`), CONSTRAINT `t1_id_fk` FOREIGN KEY (`id2`, `id`) REFERENCES `t1` (`id`, `id2`)) ENGINE=InnoDB DEFAULT CHARSET=latin1drop table t2;create table t2 (id int(11) not null auto_increment, id2 int(11) not null, constraint t1_id_fk foreign key (id) references t1 (id), primary key (id), index (id,id2)) engine = innodb;show create table t2;Table Create Tablet2 CREATE TABLE `t2` ( `id` int(11) NOT NULL AUTO_INCREMENT, `id2` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `id` (`id`,`id2`), CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1drop table t2;create table t2 (id int(11) not null auto_increment, id2 int(11) not null, constraint t1_id_fk foreign key (id) references t1 (id)) engine= innodb;show create table t2;Table Create Tablet2 CREATE TABLE `t2` ( `id` int(11) NOT NULL AUTO_INCREMENT, `id2` int(11) NOT NULL, KEY `t1_id_fk` (`id`), CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1alter table t2 add index id_test (id), add index id_test2 (id,id2);show create table t2;Table Create Tablet2 CREATE TABLE `t2` ( `id` int(11) NOT NULL AUTO_INCREMENT, `id2` int(11) NOT NULL, KEY `id_test` (`id`), KEY `id_test2` (`id`,`id2`), CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1drop table t2;create table t2 (id int(11) not null, id2 int(11) not null, constraint t1_id_fk foreign key (id2,id) references t1 (id)) engine = innodb;ERROR 42000: Incorrect foreign key definition for 't1_id_fk': Key reference and table reference don't matchcreate table t2 (a int auto_increment primary key, b int, index(b), foreign key (b) references t1(id), unique(b)) engine=innodb;show create table t2;Table Create Tablet2 CREATE TABLE `t2` ( `a` int(11) NOT NULL AUTO_INCREMENT, `b` int(11) DEFAULT NULL, PRIMARY KEY (`a`), UNIQUE KEY `b_2` (`b`), KEY `b` (`b`), CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`b`) REFERENCES `t1` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1drop table t2;create table t2 (a int auto_increment primary key, b int, foreign key (b) references t1(id), foreign key (b) references t1(id), unique(b)) engine=innodb;show create table t2;Table Create Tablet2 CREATE TABLE `t2` ( `a` int(11) NOT NULL AUTO_INCREMENT, `b` int(11) DEFAULT NULL, PRIMARY KEY (`a`), UNIQUE KEY `b` (`b`), CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`b`) REFERENCES `t1` (`id`), CONSTRAINT `t2_ibfk_2` FOREIGN KEY (`b`) REFERENCES `t1` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1drop table t2, t1;create table t1 (c char(10), index (c,c)) engine=innodb;ERROR 42S21: Duplicate column name 'c'create table t1 (c1 char(10), c2 char(10), index (c1,c2,c1)) engine=innodb;ERROR 42S21: Duplicate column name 'c1'create table t1 (c1 char(10), c2 char(10), index (c1,c1,c2)) engine=innodb;ERROR 42S21: Duplicate column name 'c1'create table t1 (c1 char(10), c2 char(10), index (c2,c1,c1)) engine=innodb;ERROR 42S21: Duplicate column name 'c1'create table t1 (c1 char(10), c2 char(10)) engine=innodb;alter table t1 add key (c1,c1);ERROR 42S21: Duplicate column name 'c1'alter table t1 add key (c2,c1,c1);ERROR 42S21: Duplicate column name 'c1'alter table t1 add key (c1,c2,c1);ERROR 42S21: Duplicate column name 'c1'alter table t1 add key (c1,c1,c2);ERROR 42S21: Duplicate column name 'c1'drop table t1;create table t1(a int(1) , b int(1)) engine=innodb;insert into t1 values ('1111', '3333');select distinct concat(a, b) from t1;concat(a, b)11113333drop table t1;CREATE TABLE t1 ( a char(10) ) ENGINE=InnoDB;SELECT a FROM t1 WHERE MATCH (a) AGAINST ('test' IN BOOLEAN MODE);ERROR HY000: The used table type doesn't support FULLTEXT indexesDROP TABLE t1;CREATE TABLE t1 (a_id tinyint(4) NOT NULL default '0', PRIMARY KEY (a_id)) ENGINE=InnoDB DEFAULT CHARSET=latin1;INSERT INTO t1 VALUES (1),(2),(3);CREATE TABLE t2 (b_id tinyint(4) NOT NULL default '0',b_a tinyint(4) NOT NULL default '0', PRIMARY KEY (b_id), KEY (b_a), CONSTRAINT fk_b_a FOREIGN KEY (b_a) REFERENCES t1 (a_id) ON DELETE CASCADE ON UPDATE NO ACTION) ENGINE=InnoDB DEFAULT CHARSET=latin1;INSERT INTO t2 VALUES (1,1),(2,1),(3,1),(4,2),(5,2);SELECT * FROM (SELECT t1.*,GROUP_CONCAT(t2.b_id SEPARATOR ',') as b_list FROM (t1 LEFT JOIN (t2) on t1.a_id = t2.b_a) GROUP BY t1.a_id ) AS xyz;a_id b_list1 1,2,32 4,53 NULLDROP TABLE t2;DROP TABLE t1;create temporary table t1 (a int) engine=innodb;insert into t1 values (4711);truncate t1;insert into t1 values (42);select * from t1;a42drop table t1;create table t1 (a int) engine=innodb;insert into t1 values (4711);truncate t1;insert into t1 values (42);select * from t1;a42drop table t1;create table t1 (a int not null, b int not null, c blob not null, d int not null, e int, primary key (a,b,c(255),d)) engine=innodb;insert into t1 values (2,2,"b",2,2),(1,1,"a",1,1),(3,3,"ab",3,3);select * from t1 order by a,b,c,d;a b c d e1 1 a 1 12 2 b 2 23 3 ab 3 3explain select * from t1 order by a,b,c,d;id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using filesortdrop table t1;create table t1 (a char(1), b char(1), key(a, b)) engine=innodb;insert into t1 values ('8', '6'), ('4', '7');select min(a) from t1;min(a)4select min(b) from t1 where a='8';min(b)6drop table t1;create table t1 (x bigint unsigned not null primary key) engine=innodb;insert into t1(x) values (0xfffffffffffffff0),(0xfffffffffffffff1);select * from t1;x1844674407370955160018446744073709551601select count(*) from t1 where x>0;count(*)2select count(*) from t1 where x=0;count(*)0select count(*) from t1 where x<0;count(*)0select count(*) from t1 where x < -16;count(*)0select count(*) from t1 where x = -16;count(*)0explain select count(*) from t1 where x > -16;id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 index PRIMARY PRIMARY 8 NULL 2 Using where; Using indexselect count(*) from t1 where x > -16;count(*)2select * from t1 where x > -16;x1844674407370955160018446744073709551601select count(*) from t1 where x = 18446744073709551601;count(*)1drop table t1;SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_buffer_pool_pages_total';variable_value512SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_page_size';variable_value16384SELECT variable_value - @innodb_rows_deleted_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_deleted';variable_value - @innodb_rows_deleted_orig71SELECT variable_value - @innodb_rows_inserted_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_inserted';variable_value - @innodb_rows_inserted_orig1067SELECT variable_value - @innodb_rows_updated_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_updated';variable_value - @innodb_rows_updated_orig865SELECT variable_value - @innodb_row_lock_waits_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_waits';variable_value - @innodb_row_lock_waits_orig0SELECT variable_value - @innodb_row_lock_current_waits_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_current_waits';variable_value - @innodb_row_lock_current_waits_orig0SELECT variable_value - @innodb_row_lock_time_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_time';variable_value - @innodb_row_lock_time_orig0SELECT variable_value - @innodb_row_lock_time_max_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_time_max';variable_value - @innodb_row_lock_time_max_orig0SELECT variable_value - @innodb_row_lock_time_avg_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_time_avg';variable_value - @innodb_row_lock_time_avg_orig0show variables like "innodb_sync_spin_loops";Variable_name Valueinnodb_sync_spin_loops 20set global innodb_sync_spin_loops=1000;show variables like "innodb_sync_spin_loops";Variable_name Valueinnodb_sync_spin_loops 1000set global innodb_sync_spin_loops=0;show variables like "innodb_sync_spin_loops";Variable_name Valueinnodb_sync_spin_loops 0set global innodb_sync_spin_loops=20;show variables like "innodb_sync_spin_loops";Variable_name Valueinnodb_sync_spin_loops 20SET @old_innodb_thread_concurrency= @@global.innodb_thread_concurrency;show variables like "innodb_thread_concurrency";Variable_name Valueinnodb_thread_concurrency 8set global innodb_thread_concurrency=1001;Warnings:Warning 1292 Truncated incorrect thread_concurrency value: '1001'show variables like "innodb_thread_concurrency";Variable_name Valueinnodb_thread_concurrency 1000set global innodb_thread_concurrency=0;show variables like "innodb_thread_concurrency";Variable_name Valueinnodb_thread_concurrency 0set global innodb_thread_concurrency=16;show variables like "innodb_thread_concurrency";Variable_name Valueinnodb_thread_concurrency 16SET @@global.innodb_thread_concurrency= @old_innodb_thread_concurrency;show variables like "innodb_concurrency_tickets";Variable_name Valueinnodb_concurrency_tickets 500set global innodb_concurrency_tickets=1000;show variables like "innodb_concurrency_tickets";Variable_name Valueinnodb_concurrency_tickets 1000set global innodb_concurrency_tickets=0;Warnings:Warning 1292 Truncated incorrect concurrency_tickets value: '0'show variables like "innodb_concurrency_tickets";Variable_name Valueinnodb_concurrency_tickets 1set global innodb_concurrency_tickets=500;show variables like "innodb_concurrency_tickets";Variable_name Valueinnodb_concurrency_tickets 500show variables like "innodb_thread_sleep_delay";Variable_name Valueinnodb_thread_sleep_delay 10000set global innodb_thread_sleep_delay=100000;show variables like "innodb_thread_sleep_delay";Variable_name Valueinnodb_thread_sleep_delay 100000set global innodb_thread_sleep_delay=0;show variables like "innodb_thread_sleep_delay";Variable_name Valueinnodb_thread_sleep_delay 0set global innodb_thread_sleep_delay=10000;show variables like "innodb_thread_sleep_delay";Variable_name Valueinnodb_thread_sleep_delay 10000set storage_engine=INNODB;drop table if exists t1,t2,t3;--- Testing varchar ------ Testing varchar ---create table t1 (v varchar(10), c char(10), t text);insert into t1 values('+ ', '+ ', '+ ');set @a=repeat(' ',20);insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));Warnings:Note 1265 Data truncated for column 'v' at row 1select concat('*',v,'*',c,'*',t,'*') from t1;concat('*',v,'*',c,'*',t,'*')*+ *+*+ **+ *+*+ *show create table t1;Table Create Tablet1 CREATE TABLE `t1` ( `v` varchar(10) DEFAULT NULL, `c` char(10) DEFAULT NULL, `t` text) ENGINE=InnoDB DEFAULT CHARSET=latin1create table t2 like t1;show create table t2;Table Create Tablet2 CREATE TABLE `t2` ( `v` varchar(10) DEFAULT NULL, `c` char(10) DEFAULT NULL, `t` text) ENGINE=InnoDB DEFAULT CHARSET=latin1create table t3 select * from t1;show create table t3;Table Create Tablet3 CREATE TABLE `t3` ( `v` varchar(10) DEFAULT NULL, `c` char(10) DEFAULT NULL, `t` text) ENGINE=InnoDB DEFAULT CHARSET=latin1alter table t1 modify c varchar(10);show create table t1;Table Create Tablet1 CREATE TABLE `t1` ( `v` varchar(10) DEFAULT NULL, `c` varchar(10) DEFAULT NULL, `t` text) ENGINE=InnoDB DEFAULT CHARSET=latin1alter table t1 modify v char(10);show create table t1;Table Create Tablet1 CREATE TABLE `t1` ( `v` char(10) DEFAULT NULL, `c` varchar(10) DEFAULT NULL, `t` text) ENGINE=InnoDB DEFAULT CHARSET=latin1alter table t1 modify t varchar(10);Warnings:Note 1265 Data truncated for column 't' at row 2show create table t1;Table Create Tablet1 CREATE TABLE `t1` ( `v` char(10) DEFAULT NULL, `c` varchar(10) DEFAULT NULL, `t` varchar(10) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1select concat('*',v,'*',c,'*',t,'*') from t1;concat('*',v,'*',c,'*',t,'*')*+*+*+ **+*+*+ *drop table t1,t2,t3;create table t1 (v varchar(10), c char(10), t text, key(v), key(c), key(t(10)));show create table t1;Table Create Tablet1 CREATE TABLE `t1` ( `v` varchar(10) DEFAULT NULL, `c` char(10) DEFAULT NULL, `t` text, KEY `v` (`v`), KEY `c` (`c`), KEY `t` (`t`(10))) ENGINE=InnoDB DEFAULT CHARSET=latin1select count(*) from t1;count(*)270insert into t1 values(concat('a',char(1)),concat('a',char(1)),concat('a',char(1)));select count(*) from t1 where v='a';count(*)10select count(*) from t1 where c='a';count(*)10select count(*) from t1 where t='a';count(*)10select count(*) from t1 where v='a ';count(*)10select count(*) from t1 where c='a ';count(*)10select count(*) from t1 where t='a ';count(*)10select count(*) from t1 where v between 'a' and 'a ';count(*)10select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n';count(*)10select count(*) from t1 where v like 'a%';count(*)11select count(*) from t1 where c like 'a%';count(*)11select count(*) from t1 where t like 'a%';count(*)11select count(*) from t1 where v like 'a %';count(*)9explain select count(*) from t1 where v='a ';id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 ref v v 13 const # Using where; Using indexexplain select count(*) from t1 where c='a ';id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 ref c c 11 const # Using where; Using indexexplain select count(*) from t1 where t='a ';id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 ref t t 13 const # Using whereexplain select count(*) from t1 where v like 'a%';id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 range v v 13 NULL # Using where; Using indexexplain select count(*) from t1 where v between 'a' and 'a ';id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 ref v v 13 const # Using where; Using indexexplain select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n';id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 ref v v 13 const # Using where; Using indexalter table t1 add unique(v);ERROR 23000: Duplicate entry '{ ' for key 'v_2'alter table t1 add key(v);select concat('*',v,'*',c,'*',t,'*') as qq from t1 where v='a';qq*a*a*a**a *a*a **a *a*a **a *a*a **a *a*a **a *a*a **a *a*a **a *a*a **a *a*a **a *a*a *explain select * from t1 where v='a';id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 ref v,v_2 # 13 const # Using whereselect v,count(*) from t1 group by v limit 10;v count(*)a 1a 10b 10c 10d 10e 10f 10g 10h 10i 10select v,count(t) from t1 group by v limit 10;v count(t)a 1a 10b 10c 10d 10e 10f 10g 10h 10i 10select v,count(c) from t1 group by v limit 10;v count(c)a 1a 10b 10c 10d 10e 10f 10g 10h 10i 10select sql_big_result v,count(t) from t1 group by v limit 10;v count(t)a 1a 10b 10c 10d 10e 10f 10g 10h 10i 10select sql_big_result v,count(c) from t1 group by v limit 10;v count(c)a 1a 10b 10c 10d 10e 10f 10g 10h 10i 10select c,count(*) from t1 group by c limit 10;c count(*)a 1a 10b 10c 10d 10e 10f 10g 10h 10i 10select c,count(t) from t1 group by c limit 10;c count(t)a 1a 10b 10c 10d 10e 10f 10g 10h 10i 10select sql_big_result c,count(t) from t1 group by c limit 10;c count(t)a 1a 10b 10c 10d 10e 10f 10g 10h 10i 10select t,count(*) from t1 group by t limit 10;t count(*)a 1a 10b 10c 10d 10e 10f 10g 10h 10i 10select t,count(t) from t1 group by t limit 10;t count(t)a 1a 10b 10c 10d 10e 10f 10g 10h 10i 10select sql_big_result t,count(t) from t1 group by t limit 10;t count(t)a 1a 10b 10c 10d 10e 10f 10g 10h 10i 10alter table t1 modify v varchar(300), drop key v, drop key v_2, add key v (v);show create table t1;Table Create Tablet1 CREATE TABLE `t1` ( `v` varchar(300) DEFAULT NULL, `c` char(10) DEFAULT NULL, `t` text, KEY `c` (`c`), KEY `t` (`t`(10)), KEY `v` (`v`)) ENGINE=InnoDB DEFAULT CHARSET=latin1select count(*) from t1 where v='a';count(*)10select count(*) from t1 where v='a ';count(*)10select count(*) from t1 where v between 'a' and 'a ';count(*)10select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n';count(*)10select count(*) from t1 where v like 'a%';count(*)11select count(*) from t1 where v like 'a %';count(*)9explain select count(*) from t1 where v='a ';id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 ref v v 303 const # Using where; Using indexexplain select count(*) from t1 where v like 'a%';id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 range v v 303 NULL # Using where; Using indexexplain select count(*) from t1 where v between 'a' and 'a ';id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 ref v v 303 const # Using where; Using indexexplain select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n';id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 ref v v 303 const # Using where; Using indexexplain select * from t1 where v='a';id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 ref v v 303 const # Using whereselect v,count(*) from t1 group by v limit 10;v count(*)a 1a 10b 10c 10d 10e 10f 10g 10h 10i 10select v,count(t) from t1 group by v limit 10;v count(t)a 1a 10b 10c 10d 10e 10f 10g 10h 10i 10select sql_big_result v,count(t) from t1 group by v limit 10;v count(t)a 1a 10b 10c 10d 10e 10f 10g 10h 10i 10alter table t1 drop key v, add key v (v(30));show create table t1;Table Create Tablet1 CREATE TABLE `t1` ( `v` varchar(300) DEFAULT NULL, `c` char(10) DEFAULT NULL, `t` text, KEY `c` (`c`), KEY `t` (`t`(10)), KEY `v` (`v`(30))) ENGINE=InnoDB DEFAULT CHARSET=latin1select count(*) from t1 where v='a';count(*)10select count(*) from t1 where v='a ';count(*)10select count(*) from t1 where v between 'a' and 'a ';count(*)10select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n';count(*)10select count(*) from t1 where v like 'a%';count(*)11select count(*) from t1 where v like 'a %';count(*)9explain select count(*) from t1 where v='a ';id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 ref v v 33 const # Using whereexplain select count(*) from t1 where v like 'a%';id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 range v v 33 NULL # Using whereexplain select count(*) from t1 where v between 'a' and 'a ';id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 ref v v 33 const # Using whereexplain select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n';id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 ref v v 33 const # Using whereexplain select * from t1 where v='a';id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 ref v v 33 const # Using whereselect v,count(*) from t1 group by v limit 10;v count(*)a 1a 10b 10c 10d 10e 10f 10g 10h 10i 10select v,count(t) from t1 group by v limit 10;v count(t)a 1a 10b 10c 10d 10e 10f 10g 10h 10i 10select sql_big_result v,count(t) from t1 group by v limit 10;v count(t)a 1a 10b 10c 10d 10e 10f 10g 10h 10i 10alter table t1 modify v varchar(600), drop key v, add key v (v);show create table t1;Table Create Tablet1 CREATE TABLE `t1` ( `v` varchar(600) DEFAULT NULL, `c` char(10) DEFAULT NULL, `t` text, KEY `c` (`c`), KEY `t` (`t`(10)), KEY `v` (`v`)) ENGINE=InnoDB DEFAULT CHARSET=latin1select v,count(*) from t1 group by v limit 10;v count(*)a 1a 10b 10c 10d 10e 10f 10g 10h 10i 10select v,count(t) from t1 group by v limit 10;v count(t)a 1a 10b 10c 10d 10e 10f 10g 10h 10i 10select sql_big_result v,count(t) from t1 group by v limit 10;v count(t)a 1a 10b 10c 10d 10e 10f 10g 10h 10i 10drop table t1;create table t1 (a char(10), unique (a));insert into t1 values ('a ');insert into t1 values ('a ');ERROR 23000: Duplicate entry 'a' for key 'a'alter table t1 modify a varchar(10);insert into t1 values ('a '),('a '),('a '),('a ');ERROR 23000: Duplicate entry 'a ' for key 'a'insert into t1 values ('a ');ERROR 23000: Duplicate entry 'a ' for key 'a'insert into t1 values ('a ');ERROR 23000: Duplicate entry 'a ' for key 'a'insert into t1 values ('a ');ERROR 23000: Duplicate entry 'a ' for key 'a'update t1 set a='a ' where a like 'a%';select concat(a,'.') from t1;concat(a,'.')a .update t1 set a='abc ' where a like 'a ';select concat(a,'.') from t1;concat(a,'.')a .update t1 set a='a ' where a like 'a %';select concat(a,'.') from t1;concat(a,'.')a .update t1 set a='a ' where a like 'a ';select concat(a,'.') from t1;concat(a,'.')a .drop table t1;create table t1 (v varchar(10), c char(10), t text, key(v(5)), key(c(5)), key(t(5)));show create table t1;Table Create Tablet1 CREATE TABLE `t1` ( `v` varchar(10) DEFAULT NULL, `c` char(10) DEFAULT NULL, `t` text, KEY `v` (`v`(5)), KEY `c` (`c`(5)), KEY `t` (`t`(5))) ENGINE=InnoDB DEFAULT CHARSET=latin1drop table t1;create table t1 (v char(10) character set utf8);show create table t1;Table Create Tablet1 CREATE TABLE `t1` ( `v` char(10) CHARACTER SET utf8 DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1drop table t1;create table t1 (v varchar(10), c char(10)) row_format=fixed;show create table t1;Table Create Tablet1 CREATE TABLE `t1` ( `v` varchar(10) DEFAULT NULL, `c` char(10) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=FIXEDinsert into t1 values('a','a'),('a ','a ');select concat('*',v,'*',c,'*') from t1;concat('*',v,'*',c,'*')*a*a**a *a*drop table t1;create table t1 (v varchar(65530), key(v(10)));insert into t1 values(repeat('a',65530));select length(v) from t1 where v=repeat('a',65530);length(v)65530drop table t1;create table t1(a int, b varchar(12), key ba(b, a));insert into t1 values (1, 'A'), (20, NULL);explain select * from t1 where a=20 and b is null;id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 ref ba ba 20 const,const 1 Using where; Using indexselect * from t1 where a=20 and b is null;a b20 NULLdrop table t1;create table t1 (v varchar(65530), key(v));Warnings:Warning 1071 Specified key was too long; max key length is 767 bytesdrop table t1;create table t1 (v varchar(65536));Warnings:Note 1246 Converting column 'v' from VARCHAR to TEXTshow create table t1;Table Create Tablet1 CREATE TABLE `t1` ( `v` mediumtext) ENGINE=InnoDB DEFAULT CHARSET=latin1drop table t1;create table t1 (v varchar(65530) character set utf8);Warnings:Note 1246 Converting column 'v' from VARCHAR to TEXTshow create table t1;Table Create Tablet1 CREATE TABLE `t1` ( `v` mediumtext CHARACTER SET utf8) ENGINE=InnoDB DEFAULT CHARSET=latin1drop table t1;set storage_engine=MyISAM;Variable_name ValueHandler_read_key 0f1Variable_name ValueHandler_read_key 1
|