Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Store DDL operations to VTMD #124

Closed
13 of 14 tasks
midenok opened this issue Feb 13, 2017 · 24 comments
Closed
13 of 14 tasks

Store DDL operations to VTMD #124

midenok opened this issue Feb 13, 2017 · 24 comments
Assignees

Comments

@midenok
Copy link

midenok commented Feb 13, 2017

Track DDL operations:

  • table rename;
  • any data-modifying DDL.

in VTMD table.

Branch: am/124-vtmd

TODO

  • add record to VTMD;
  • if record exists, update instead of add;
  • create VTMD from template;
  • DDL survival 2.0 wiki
  • ALTER handling;
  • CREATE handling;
  • DROP handling;
  • rename handling;
  • fill archive_name for renames before ALTER;
  • rename to different schema;
  • fill name;
  • rename via ALTER .. RENAME
  • table creation time as start;
  • tests.

Testing

drop table if exists d0_vtmd; create or replace table d0 (x int) engine innodb with system versioning; alter table d0 add column (y int);
@midenok midenok added the task label Feb 13, 2017
@midenok midenok added this to the 1.1: VTD tracking (versioning_table_ddl) milestone Feb 13, 2017
@midenok midenok self-assigned this May 15, 2017
@midenok
Copy link
Author

midenok commented May 15, 2017

VTD table usage pattern is analogous to ACL tables for example (see Grant_table_base, User_table).
See replace_roles_mapping_table() for example of how to insert record to a table.

@midenok
Copy link
Author

midenok commented May 16, 2017

1. table opened 1st time

#0  open_table (thd=0x7fff8c000b00, table_list=0x7fff8c006148, ot_ctx=0x7fffe574b710) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:1924
#1  0x0000555555ad9eb3 in open_and_process_table (thd=0x7fff8c000b00, lex=0x7fff8c004618, tables=0x7fff8c006148, counter=0x7fffe574b7a4, flags=0, prelocking_strategy=0x7fffe574b830, has_prelocking_list=false, ot_ctx=0x7fffe574b710) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:3414
#2  0x0000555555adb0ac in open_tables (thd=0x7fff8c000b00, options=..., start=0x7fffe574b788, counter=0x7fffe574b7a4, flags=0, prelocking_strategy=0x7fffe574b830) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:3932
#3  0x0000555555adc733 in open_and_lock_tables (thd=0x7fff8c000b00, options=..., tables=0x7fff8c011810, derived=true, flags=0, prelocking_strategy=0x7fffe574b830) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:4687
#4  0x0000555555acf88e in open_and_lock_tables (thd=0x7fff8c000b00, tables=0x7fff8c011810, derived=true, flags=0) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.h:495
#5  0x0000555555b5d52f in execute_sqlcom_select (thd=0x7fff8c000b00, all_tables=0x7fff8c011810) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6378
#6  0x0000555555b556a9 in mysql_execute_command (thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:3576
#7  0x0000555555b60d14 in mysql_parse (thd=0x7fff8c000b00, rawbuf=0x7fff8c011608 "show databases", length=14, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7904
#8  0x0000555555b50e14 in dispatch_command (command=COM_QUERY, thd=0x7fff8c000b00, packet=0x7fff8c008e21 "show databases", packet_length=14, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:1814
#9  0x0000555555b4fcd0 in do_command (thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:1376
#10 0x0000555555ca9422 in do_handle_one_connection (connect=0x5555584debc0) at /home/midenok/src/mariadb/midenok/src/sql/sql_connect.cc:1357

2. table opened 2nd time

#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:58
#1  0x00007ffff64b637a in __GI_abort () at abort.c:89
#2  0x00007ffff64acb47 in __assert_fail_base (fmt=<optimized out>, assertion=assertion@entry=0x555556692013 "is_temporary_table(tables)", file=file@entry=0x555556691650 "/home/midenok/src/mariadb/midenok/src/sql/sql_base.cc", line=line@entry=3321, function=function@entry=0x5555566938e0 <open_and_process_table(THD*, LEX*, TABLE_LIST*, unsigned int*, unsigned int, Prelocking_strategy*, bool, Open_table_context*)::__PRETTY_FUNCTION__> "bool open_and_process_table(THD*, LEX*, TABLE_LIST*, uint*, uint, Prelocking_strategy*, bool, Open_table_context*)") at assert.c:92
#3  0x00007ffff64acbf2 in __GI___assert_fail (assertion=0x555556692013 "is_temporary_table(tables)", file=0x555556691650 "/home/midenok/src/mariadb/midenok/src/sql/sql_base.cc", line=3321, function=0x5555566938e0 <open_and_process_table(THD*, LEX*, TABLE_LIST*, unsigned int*, unsigned int, Prelocking_strategy*, bool, Open_table_context*)::__PRETTY_FUNCTION__> "bool open_and_process_table(THD*, LEX*, TABLE_LIST*, uint*, uint, Prelocking_strategy*, bool, Open_table_context*)") at assert.c:101
#4  0x0000555555ad9bd2 in open_and_process_table (thd=0x7fff8c000b00, lex=0x7fff8c004618, tables=0x7fff8c006148, counter=0x7fffe574b7a4, flags=0, prelocking_strategy=0x7fffe574b830, has_prelocking_list=false, ot_ctx=0x7fffe574b710) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:3321
#5  0x0000555555adb0ac in open_tables (thd=0x7fff8c000b00, options=..., start=0x7fffe574b788, counter=0x7fffe574b7a4, flags=0, prelocking_strategy=0x7fffe574b830) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:3932
#6  0x0000555555adc733 in open_and_lock_tables (thd=0x7fff8c000b00, options=..., tables=0x7fff8c011c08, derived=true, flags=0, prelocking_strategy=0x7fffe574b830) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:4687
#7  0x0000555555acf88e in open_and_lock_tables (thd=0x7fff8c000b00, tables=0x7fff8c011c08, derived=true, flags=0) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.h:495
#8  0x0000555555b5d52f in execute_sqlcom_select (thd=0x7fff8c000b00, all_tables=0x7fff8c011c08) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6378
#9  0x0000555555b556a9 in mysql_execute_command (thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:3576
#10 0x0000555555b60d14 in mysql_parse (thd=0x7fff8c000b00, rawbuf=0x7fff8c011608 "show tables", length=11, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7904
#11 0x0000555555b50e14 in dispatch_command (command=COM_QUERY, thd=0x7fff8c000b00, packet=0x7fff8c008e21 "show tables", packet_length=11, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:1814
#12 0x0000555555b4fcd0 in do_command (thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:1376
#13 0x0000555555ca9422 in do_handle_one_connection (connect=0x5555584debc0) at /home/midenok/src/mariadb/midenok/src/sql/sql_connect.cc:1357

@midenok
Copy link
Author

midenok commented May 16, 2017

Another possible option is to try to use VTD as a log table (see Log_to_csv_event_handler::log_general()).

@midenok midenok added the info label May 16, 2017
@midenok
Copy link
Author

midenok commented May 17, 2017

trx_start_low() from ALTER

1.

#0  trx_start_low (trx=0x7ffff403d2f8, read_write=true) at /home/midenok/src/mariadb/midenok/src/storage/innobase/trx/trx0trx.cc:1227
#1  0x0000555556236fc8 in trx_start_if_not_started_xa_low (trx=0x7ffff403d2f8, read_write=true) at /home/midenok/src/mariadb/midenok/src/storage/innobase/trx/trx0trx.cc:2861
#2  0x000055555616cc8b in row_create_table_for_mysql (table=0x7fff8c0e9308, trx=0x7ffff403d2f8, commit=false, mode=FIL_ENCRYPTION_DEFAULT, key_id=1) at /home/midenok/src/mariadb/midenok/src/storage/innobase/row/row0mysql.cc:2542
#3  0x000055555602cdca in create_table_info_t::create_table_def (this=0x7fffe5748170) at /home/midenok/src/mariadb/midenok/src/storage/innobase/handler/ha_innodb.cc:11954
#4  0x0000555556018f35 in create_table_info_t::create_table (this=0x7fffe5748170) at /home/midenok/src/mariadb/midenok/src/storage/innobase/handler/ha_innodb.cc:13270
#5  0x0000555556019b82 in ha_innobase::create (this=0x7fff8c0e8248, name=0x7fffe574acac "./test/#sql-4bec_8", form=0x7fffe5748cf0, create_info=0x7fffe574b510) at /home/midenok/src/mariadb/midenok/src/storage/innobase/handler/ha_innodb.cc:13594
#6  0x0000555555dfbfbe in handler::ha_create (this=0x7fff8c0e8248, name=0x7fffe574acac "./test/#sql-4bec_8", form=0x7fffe5748cf0, info_arg=0x7fffe574b510) at /home/midenok/src/mariadb/midenok/src/sql/handler.cc:4412
#7  0x0000555555dfcf4a in ha_create_table (thd=0x7fff8c000b00, path=0x7fffe574acac "./test/#sql-4bec_8", db=0x7fff8c0116f8 "test", table_name=0x7fffe574a440 "#sql-4bec_8", create_info=0x7fffe574b510, frm=0x7fffe5749b80) at /home/midenok/src/mariadb/midenok/src/sql/handler.cc:4783
#8  0x0000555555c2d209 in mysql_alter_table (thd=0x7fff8c000b00, new_db=0x7fff8c0116f8 "test", new_name=0x0, create_info=0x7fffe574b510, table_list=0x7fff8c0110c8, alter_info=0x7fffe574b460, order_num=0, order=0x0, ignore=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:9369
#9  0x0000555555cae63c in Sql_cmd_alter_table::execute (this=0x7fff8c0117f0, thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_alter.cc:318
#10 0x0000555555b5c7fb in mysql_execute_command (thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6224
#11 0x0000555555b60afc in mysql_parse (thd=0x7fff8c000b00, rawbuf=0x7fff8c010fd8 "alter table d0 add column (y int)", length=33, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7902
#0  trx_commit_low (trx=0x7ffff403d2f8, mtr=0x7fffe5744340) at /home/midenok/src/mariadb/midenok/src/storage/innobase/trx/trx0trx.cc:1928
#1  0x0000555556234ed4 in trx_commit (trx=0x7ffff403d2f8) at /home/midenok/src/mariadb/midenok/src/storage/innobase/trx/trx0trx.cc:2031
#2  0x00005555562f2d99 in dict_create_add_foreigns_to_dictionary (local_fk_set=std::set with 0 elements, table=0x7fff8c0eead8, trx=0x7ffff403d2f8) at /home/midenok/src/mariadb/midenok/src/storage/innobase/dict/dict0crea.cc:2543
#3  0x0000555556303d30 in dict_create_foreign_constraints_low (trx=0x7ffff403d2f8, heap=0x7fff8c0fd370, cs=0x555557214900 <my_charset_utf8_general_ci>, sql_string=0x7fff8c0db840 "alter table d0 add column (y int)", name=0x7fffe57481c0 "test/#sql-4bec_8", reject_fks=0) at /home/midenok/src/mariadb/midenok/src/storage/innobase/dict/dict0dict.cc:4742
#4  0x0000555556305ee3 in dict_create_foreign_constraints (trx=0x7ffff403d2f8, sql_string=0x7fff8c010fd8 "alter table d0 add column (y int)", sql_length=33, name=0x7fffe57481c0 "test/#sql-4bec_8", reject_fks=0) at /home/midenok/src/mariadb/midenok/src/storage/innobase/dict/dict0dict.cc:5431
#5  0x000055555616d909 in row_table_add_foreign_constraints (trx=0x7ffff403d2f8, sql_string=0x7fff8c010fd8 "alter table d0 add column (y int)", sql_length=33, name=0x7fffe57481c0 "test/#sql-4bec_8", reject_fks=0) at /home/midenok/src/mariadb/midenok/src/storage/innobase/row/row0mysql.cc:2857
#6  0x000055555601939c in create_table_info_t::create_table (this=0x7fffe5748170) at /home/midenok/src/mariadb/midenok/src/storage/innobase/handler/ha_innodb.cc:13388
#7  0x0000555556019b82 in ha_innobase::create (this=0x7fff8c0f9388, name=0x7fffe574acac "./test/#sql-4bec_8", form=0x7fffe5748cf0, create_info=0x7fffe574b510) at /home/midenok/src/mariadb/midenok/src/storage/innobase/handler/ha_innodb.cc:13594
#8  0x0000555555dfbfbe in handler::ha_create (this=0x7fff8c0f9388, name=0x7fffe574acac "./test/#sql-4bec_8", form=0x7fffe5748cf0, info_arg=0x7fffe574b510) at /home/midenok/src/mariadb/midenok/src/sql/handler.cc:4412
#9  0x0000555555dfcf4a in ha_create_table (thd=0x7fff8c000b00, path=0x7fffe574acac "./test/#sql-4bec_8", db=0x7fff8c0116f8 "test", table_name=0x7fffe574a440 "#sql-4bec_8", create_info=0x7fffe574b510, frm=0x7fffe5749b80) at /home/midenok/src/mariadb/midenok/src/sql/handler.cc:4783
#10 0x0000555555c2d209 in mysql_alter_table (thd=0x7fff8c000b00, new_db=0x7fff8c0116f8 "test", new_name=0x0, create_info=0x7fffe574b510, table_list=0x7fff8c0110c8, alter_info=0x7fffe574b460, order_num=0, order=0x0, ignore=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:9369
#11 0x0000555555cae63c in Sql_cmd_alter_table::execute (this=0x7fff8c0117f0, thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_alter.cc:318
#12 0x0000555555b5c7fb in mysql_execute_command (thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6224
#13 0x0000555555b60afc in mysql_parse (thd=0x7fff8c000b00, rawbuf=0x7fff8c010fd8 "alter table d0 add column (y int)", length=33, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:790

2.

#0  trx_start_low (trx=0x7ffff403ce40, read_write=false) at /home/midenok/src/mariadb/midenok/src/storage/innobase/trx/trx0trx.cc:1227
#1  0x000055555623706f in trx_start_if_not_started_low (trx=0x7ffff403ce40, read_write=false) at /home/midenok/src/mariadb/midenok/src/storage/innobase/trx/trx0trx.cc:2895
#2  0x00005555561a5a31 in row_search_mvcc (buf=0x7fff8c0e36a8 "\377", mode=PAGE_CUR_G, prebuilt=0x7fff8c0e6188, match_mode=0, direction=0) at /home/midenok/src/mariadb/midenok/src/storage/innobase/row/row0sel.cc:4484
#3  0x0000555556013ca0 in ha_innobase::index_read (this=0x7fff8c0e5988, buf=0x7fff8c0e36a8 "\377", key_ptr=0x0, key_len=0, find_flag=HA_READ_AFTER_KEY) at /home/midenok/src/mariadb/midenok/src/storage/innobase/handler/ha_innodb.cc:10012
#4  0x0000555556015019 in ha_innobase::index_first (this=0x7fff8c0e5988, buf=0x7fff8c0e36a8 "\377") at /home/midenok/src/mariadb/midenok/src/storage/innobase/handler/ha_innodb.cc:10440
#5  0x0000555556015318 in ha_innobase::rnd_next (this=0x7fff8c0e5988, buf=0x7fff8c0e36a8 "\377") at /home/midenok/src/mariadb/midenok/src/storage/innobase/handler/ha_innodb.cc:10540
#6  0x0000555555df735b in handler::ha_rnd_next (this=0x7fff8c0e5988, buf=0x7fff8c0e36a8 "\377") at /home/midenok/src/mariadb/midenok/src/sql/handler.cc:2599
#7  0x0000555555f66cff in rr_sequential (info=0x7fffe5749140) at /home/midenok/src/mariadb/midenok/src/sql/records.cc:484
#8  0x0000555555c2f032 in copy_data_between_tables (thd=0x7fff8c000b00, from=0x7fff8c0e4d70, to=0x7fff8c0e75d0, create=..., ignore=false, order_num=0, order=0x0, copied=0x7fffe5749b20, deleted=0x7fffe5749b28, keys_onoff=Alter_info::LEAVE_AS_IS, alter_ctx=0x7fffe574a400) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:9949
#9  0x0000555555c2d53d in mysql_alter_table (thd=0x7fff8c000b00, new_db=0x7fff8c0116f8 "test", new_name=0x0, create_info=0x7fffe574b510, table_list=0x7fff8c0110c8, alter_info=0x7fffe574b460, order_num=0, order=0x0, ignore=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:9443
#10 0x0000555555cae63c in Sql_cmd_alter_table::execute (this=0x7fff8c0117f0, thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_alter.cc:318
#11 0x0000555555b5c7fb in mysql_execute_command (thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6224
#12 0x0000555555b60afc in mysql_parse (thd=0x7fff8c000b00, rawbuf=0x7fff8c010fd8 "alter table d0 add column (y int)", length=33, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7902
#0  trx_commit_low (trx=0x7ffff403ce40, mtr=0x0) at /home/midenok/src/mariadb/midenok/src/storage/innobase/trx/trx0trx.cc:1928
#1  0x0000555556234ed4 in trx_commit (trx=0x7ffff403ce40) at /home/midenok/src/mariadb/midenok/src/storage/innobase/trx/trx0trx.cc:2031
#2  0x00005555562356c7 in trx_commit_for_mysql (trx=0x7ffff403ce40) at /home/midenok/src/mariadb/midenok/src/storage/innobase/trx/trx0trx.cc:2250
#3  0x00005555560090e4 in innobase_commit_low (trx=0x7ffff403ce40) at /home/midenok/src/mariadb/midenok/src/storage/innobase/handler/ha_innodb.cc:4590
#4  0x00005555560094b3 in innobase_commit_ordered_2 (trx=0x7ffff403ce40, thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/storage/innobase/handler/ha_innodb.cc:4717
#5  0x0000555556009a46 in innobase_commit (hton=0x555557b47a50, thd=0x7fff8c000b00, commit_trx=false) at /home/midenok/src/mariadb/midenok/src/storage/innobase/handler/ha_innodb.cc:4855
#6  0x0000555555df4417 in commit_one_phase_2 (thd=0x7fff8c000b00, all=false, trans=0x7fff8c003de8, is_real_trans=true) at /home/midenok/src/mariadb/midenok/src/sql/handler.cc:1558
#7  0x0000555555df42f7 in ha_commit_one_phase (thd=0x7fff8c000b00, all=false) at /home/midenok/src/mariadb/midenok/src/sql/handler.cc:1539
#8  0x0000555555df3bfd in ha_commit_trans (thd=0x7fff8c000b00, all=false) at /home/midenok/src/mariadb/midenok/src/sql/handler.cc:1406
#9  0x0000555555dfc2b1 in ha_enable_transaction (thd=0x7fff8c000b00, on=true) at /home/midenok/src/mariadb/midenok/src/sql/handler.cc:4528
#10 0x0000555555c2e3f1 in mysql_trans_commit_alter_copy_data (thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:9762
#11 0x0000555555c2f7c8 in copy_data_between_tables (thd=0x7fff8c000b00, from=0x7fff8c0f3f30, to=0x7fff8c0f82b0, create=..., ignore=false, order_num=0, order=0x0, copied=0x7fffe5749b20, deleted=0x7fffe5749b28, keys_onoff=Alter_info::LEAVE_AS_IS, alter_ctx=0x7fffe574a400) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:10100
#12 0x0000555555c2d53d in mysql_alter_table (thd=0x7fff8c000b00, new_db=0x7fff8c0116f8 "test", new_name=0x0, create_info=0x7fffe574b510, table_list=0x7fff8c0110c8, alter_info=0x7fffe574b460, order_num=0, order=0x0, ignore=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:9443
#13 0x0000555555cae63c in Sql_cmd_alter_table::execute (this=0x7fff8c0117f0, thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_alter.cc:318
#14 0x0000555555b5c7fb in mysql_execute_command (thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6224
#15 0x0000555555b60afc in mysql_parse (thd=0x7fff8c000b00, rawbuf=0x7fff8c010fd8 "alter table d0 add column (y int)", length=33, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7902

3.

1227    {
#0  trx_start_low (trx=0x7ffff403d2f8, read_write=true) at /home/midenok/src/mariadb/midenok/src/storage/innobase/trx/trx0trx.cc:1227
#1  0x000055555623706f in trx_start_if_not_started_low (trx=0x7ffff403d2f8, read_write=true) at /home/midenok/src/mariadb/midenok/src/storage/innobase/trx/trx0trx.cc:2895
#2  0x000055555602d7f4 in innobase_rename_table (trx=0x7ffff403d2f8, from=0x7fffe5749240 "./test/d0", to=0x7fffe5749450 "./test/d0_20170517_132104_848647") at /home/midenok/src/mariadb/midenok/src/storage/innobase/handler/ha_innodb.cc:14102
#3  0x000055555601aff7 in ha_innobase::rename_table (this=0x7fff8c012bb0, from=0x7fffe5749240 "./test/d0", to=0x7fffe5749450 "./test/d0_20170517_132104_848647") at /home/midenok/src/mariadb/midenok/src/storage/innobase/handler/ha_innodb.cc:14226
#4  0x0000555555dfbe9d in handler::ha_rename_table (this=0x7fff8c012bb0, from=0x7fffe5749240 "./test/d0", to=0x7fffe5749450 "./test/d0_20170517_132104_848647") at /home/midenok/src/mariadb/midenok/src/sql/handler.cc:4364
#5  0x0000555555c22bb5 in mysql_rename_table (base=0x555557b47a50, old_db=0x7fff8c0116f8 "test", old_name=0x7fff8c011090 "d0", new_db=0x7fff8c0116f8 "test", new_name=0x7fffe574aeb0 "d0_20170517_132104_848647", flags=2) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:5328
#6  0x0000555555c2da69 in mysql_alter_table (thd=0x7fff8c000b00, new_db=0x7fff8c0116f8 "test", new_name=0x0, create_info=0x7fffe574b510, table_list=0x7fff8c0110c8, alter_info=0x7fffe574b460, order_num=0, order=0x0, ignore=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:9563
#7  0x0000555555cae63c in Sql_cmd_alter_table::execute (this=0x7fff8c0117f0, thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_alter.cc:318
#8  0x0000555555b5c7fb in mysql_execute_command (thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6224
#9  0x0000555555b60afc in mysql_parse (thd=0x7fff8c000b00, rawbuf=0x7fff8c010fd8 "alter table d0 add column (y int)", length=33, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7902
#0  trx_commit_low (trx=0x7ffff403d2f8, mtr=0x7fffe57470c0) at /home/midenok/src/mariadb/midenok/src/storage/innobase/trx/trx0trx.cc:1928
#1  0x0000555556234ed4 in trx_commit (trx=0x7ffff403d2f8) at /home/midenok/src/mariadb/midenok/src/storage/innobase/trx/trx0trx.cc:2031
#2  0x00005555562356c7 in trx_commit_for_mysql (trx=0x7ffff403d2f8) at /home/midenok/src/mariadb/midenok/src/storage/innobase/trx/trx0trx.cc:2250
#3  0x0000555556172b0d in row_rename_table_for_mysql (old_name=0x7fffe5748280 "test/d0", new_name=0x7fffe5748080 "test/d0_20170517_150654_399650", trx=0x7ffff403d2f8, commit=true) at /home/midenok/src/mariadb/midenok/src/storage/innobase/row/row0mysql.cc:5018
#4  0x000055555602d863 in innobase_rename_table (trx=0x7ffff403d2f8, from=0x7fffe5749240 "./test/d0", to=0x7fffe5749450 "./test/d0_20170517_150654_399650") at /home/midenok/src/mariadb/midenok/src/storage/innobase/handler/ha_innodb.cc:14114
#5  0x000055555601aff7 in ha_innobase::rename_table (this=0x7fff8c012bb0, from=0x7fffe5749240 "./test/d0", to=0x7fffe5749450 "./test/d0_20170517_150654_399650") at /home/midenok/src/mariadb/midenok/src/storage/innobase/handler/ha_innodb.cc:14226
#6  0x0000555555dfbe9d in handler::ha_rename_table (this=0x7fff8c012bb0, from=0x7fffe5749240 "./test/d0", to=0x7fffe5749450 "./test/d0_20170517_150654_399650") at /home/midenok/src/mariadb/midenok/src/sql/handler.cc:4364
#7  0x0000555555c22bb5 in mysql_rename_table (base=0x555557b47a50, old_db=0x7fff8c0116f8 "test", old_name=0x7fff8c011090 "d0", new_db=0x7fff8c0116f8 "test", new_name=0x7fffe574aeb0 "d0_20170517_150654_399650", flags=2) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:5328
#8  0x0000555555c2da69 in mysql_alter_table (thd=0x7fff8c000b00, new_db=0x7fff8c0116f8 "test", new_name=0x0, create_info=0x7fffe574b510, table_list=0x7fff8c0110c8, alter_info=0x7fffe574b460, order_num=0, order=0x0, ignore=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:9563
#9  0x0000555555cae63c in Sql_cmd_alter_table::execute (this=0x7fff8c0117f0, thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_alter.cc:318
#10 0x0000555555b5c7fb in mysql_execute_command (thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6224
#11 0x0000555555b60afc in mysql_parse (thd=0x7fff8c000b00, rawbuf=0x7fff8c010fd8 "alter table d0 add column (y int)", length=33, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7902

4.

#0  trx_start_low (trx=0x7ffff403d2f8, read_write=true) at /home/midenok/src/mariadb/midenok/src/storage/innobase/trx/trx0trx.cc:1227
#1  0x00005555562370f7 in trx_start_internal_low (trx=0x7ffff403d2f8) at /home/midenok/src/mariadb/midenok/src/storage/innobase/trx/trx0trx.cc:2927
#2  0x0000555556327859 in dict_stats_exec_sql (pinfo=0x7fff8c0d3ec8, sql=0x555556930278 "PROCEDURE RENAME_TABLE_IN_TABLE_STATS () IS\nBEGIN\nUPDATE \"mysql/innodb_table_stats\" SET\ndatabase_name = :new_dbname_utf8,\ntable_name = :new_tablename_utf8\nWHERE\ndatabase_name = :old_dbname_utf8 AND\ntable_name = :old_tablename_utf8;\nEND;\n", trx=0x7ffff403d2f8) at /home/midenok/src/mariadb/midenok/src/storage/innobase/dict/dict0stats.cc:307
#3  0x000055555632e815 in dict_stats_rename_table_in_table_stats (old_dbname_utf8=0x7fffe5748350 "test", old_tablename_utf8=0x7fffe57484f0 "d0", new_dbname_utf8=0x7fffe5748420 "test", new_tablename_utf8=0x7fffe57485c0 "d0_20170517_132104_848647") at /home/midenok/src/mariadb/midenok/src/storage/innobase/dict/dict0stats.cc:3634
#4  0x000055555632eb62 in dict_stats_rename_table (old_name=0x7fffe5748aa0 "test/d0", new_name=0x7fffe5748d30 "test/d0_20170517_132104_848647", errstr=0x7fffe57488a0 "0\n", errstr_sz=512) at /home/midenok/src/mariadb/midenok/src/storage/innobase/dict/dict0stats.cc:3737
#5  0x000055555601b0b7 in ha_innobase::rename_table (this=0x7fff8c012bb0, from=0x7fffe5749240 "./test/d0", to=0x7fffe5749450 "./test/d0_20170517_132104_848647") at /home/midenok/src/mariadb/midenok/src/storage/innobase/handler/ha_innodb.cc:14244
#6  0x0000555555dfbe9d in handler::ha_rename_table (this=0x7fff8c012bb0, from=0x7fffe5749240 "./test/d0", to=0x7fffe5749450 "./test/d0_20170517_132104_848647") at /home/midenok/src/mariadb/midenok/src/sql/handler.cc:4364
#7  0x0000555555c22bb5 in mysql_rename_table (base=0x555557b47a50, old_db=0x7fff8c0116f8 "test", old_name=0x7fff8c011090 "d0", new_db=0x7fff8c0116f8 "test", new_name=0x7fffe574aeb0 "d0_20170517_132104_848647", flags=2) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:5328
#8  0x0000555555c2da69 in mysql_alter_table (thd=0x7fff8c000b00, new_db=0x7fff8c0116f8 "test", new_name=0x0, create_info=0x7fffe574b510, table_list=0x7fff8c0110c8, alter_info=0x7fffe574b460, order_num=0, order=0x0, ignore=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:9563
#9  0x0000555555cae63c in Sql_cmd_alter_table::execute (this=0x7fff8c0117f0, thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_alter.cc:318
#10 0x0000555555b5c7fb in mysql_execute_command (thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6224
#11 0x0000555555b60afc in mysql_parse (thd=0x7fff8c000b00, rawbuf=0x7fff8c010fd8 "alter table d0 add column (y int)", length=33, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7902

5.

#0  trx_start_low (trx=0x7ffff403d2f8, read_write=true) at /home/midenok/src/mariadb/midenok/src/storage/innobase/trx/trx0trx.cc:1227
#1  0x00005555562370f7 in trx_start_internal_low (trx=0x7ffff403d2f8) at /home/midenok/src/mariadb/midenok/src/storage/innobase/trx/trx0trx.cc:2927
#2  0x0000555556327859 in dict_stats_exec_sql (pinfo=0x7fff8c0d3ec8, sql=0x555556930368 "PROCEDURE RENAME_TABLE_IN_INDEX_STATS () IS\nBEGIN\nUPDATE \"mysql/innodb_index_stats\" SET\ndatabase_name = :new_dbname_utf8,\ntable_name = :new_tablename_utf8\nWHERE\ndatabase_name = :old_dbname_utf8 AND\ntable_name = :old_tablename_utf8;\nEND;\n", trx=0x7ffff403d2f8) at /home/midenok/src/mariadb/midenok/src/storage/innobase/dict/dict0stats.cc:307
#3  0x000055555632e945 in dict_stats_rename_table_in_index_stats (old_dbname_utf8=0x7fffe5748350 "test", old_tablename_utf8=0x7fffe57484f0 "d0", new_dbname_utf8=0x7fffe5748420 "test", new_tablename_utf8=0x7fffe57485c0 "d0_20170517_132104_848647") at /home/midenok/src/mariadb/midenok/src/storage/innobase/dict/dict0stats.cc:3678
#4  0x000055555632ed74 in dict_stats_rename_table (old_name=0x7fffe5748aa0 "test/d0", new_name=0x7fffe5748d30 "test/d0_20170517_132104_848647", errstr=0x7fffe57488a0 "0\n", errstr_sz=512) at /home/midenok/src/mariadb/midenok/src/storage/innobase/dict/dict0stats.cc:3793
#5  0x000055555601b0b7 in ha_innobase::rename_table (this=0x7fff8c012bb0, from=0x7fffe5749240 "./test/d0", to=0x7fffe5749450 "./test/d0_20170517_132104_848647") at /home/midenok/src/mariadb/midenok/src/storage/innobase/handler/ha_innodb.cc:14244
#6  0x0000555555dfbe9d in handler::ha_rename_table (this=0x7fff8c012bb0, from=0x7fffe5749240 "./test/d0", to=0x7fffe5749450 "./test/d0_20170517_132104_848647") at /home/midenok/src/mariadb/midenok/src/sql/handler.cc:4364
#7  0x0000555555c22bb5 in mysql_rename_table (base=0x555557b47a50, old_db=0x7fff8c0116f8 "test", old_name=0x7fff8c011090 "d0", new_db=0x7fff8c0116f8 "test", new_name=0x7fffe574aeb0 "d0_20170517_132104_848647", flags=2) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:5328
#8  0x0000555555c2da69 in mysql_alter_table (thd=0x7fff8c000b00, new_db=0x7fff8c0116f8 "test", new_name=0x0, create_info=0x7fffe574b510, table_list=0x7fff8c0110c8, alter_info=0x7fffe574b460, order_num=0, order=0x0, ignore=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:9563
#9  0x0000555555cae63c in Sql_cmd_alter_table::execute (this=0x7fff8c0117f0, thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_alter.cc:318
#10 0x0000555555b5c7fb in mysql_execute_command (thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6224
#11 0x0000555555b60afc in mysql_parse (thd=0x7fff8c000b00, rawbuf=0x7fff8c010fd8 "alter table d0 add column (y int)", length=33, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7902

6.

#0  trx_start_low (trx=0x7ffff403d2f8, read_write=true) at /home/midenok/src/mariadb/midenok/src/storage/innobase/trx/trx0trx.cc:1227
#1  0x000055555623706f in trx_start_if_not_started_low (trx=0x7ffff403d2f8, read_write=true) at /home/midenok/src/mariadb/midenok/src/storage/innobase/trx/trx0trx.cc:2895
#2  0x000055555602d7f4 in innobase_rename_table (trx=0x7ffff403d2f8, from=0x7fffe5749240 "./test/#sql-4bec_8", to=0x7fffe5749450 "./test/d0") at /home/midenok/src/mariadb/midenok/src/storage/innobase/handler/ha_innodb.cc:14102
#3  0x000055555601aff7 in ha_innobase::rename_table (this=0x7fff8c013310, from=0x7fffe5749240 "./test/#sql-4bec_8", to=0x7fffe5749450 "./test/d0") at /home/midenok/src/mariadb/midenok/src/storage/innobase/handler/ha_innodb.cc:14226
#4  0x0000555555dfbe9d in handler::ha_rename_table (this=0x7fff8c013310, from=0x7fffe5749240 "./test/#sql-4bec_8", to=0x7fffe5749450 "./test/d0") at /home/midenok/src/mariadb/midenok/src/sql/handler.cc:4364
#5  0x0000555555c22bb5 in mysql_rename_table (base=0x555557b47a50, old_db=0x7fff8c0116f8 "test", old_name=0x7fffe574a440 "#sql-4bec_8", new_db=0x7fff8c0116f8 "test", new_name=0x7fff8c011090 "d0", flags=1) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:5328
#6  0x0000555555c2dae4 in mysql_alter_table (thd=0x7fff8c000b00, new_db=0x7fff8c0116f8 "test", new_name=0x0, create_info=0x7fffe574b510, table_list=0x7fff8c0110c8, alter_info=0x7fffe574b460, order_num=0, order=0x0, ignore=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:9579
#7  0x0000555555cae63c in Sql_cmd_alter_table::execute (this=0x7fff8c0117f0, thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_alter.cc:318
#8  0x0000555555b5c7fb in mysql_execute_command (thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6224
#9  0x0000555555b60afc in mysql_parse (thd=0x7fff8c000b00, rawbuf=0x7fff8c010fd8 "alter table d0 add column (y int)", length=33, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7902

7.

#0  trx_start_low (trx=0x7ffff403d2f8, read_write=true) at /home/midenok/src/mariadb/midenok/src/storage/innobase/trx/trx0trx.cc:1227
#1  0x00005555562370f7 in trx_start_internal_low (trx=0x7ffff403d2f8) at /home/midenok/src/mariadb/midenok/src/storage/innobase/trx/trx0trx.cc:2927
#2  0x0000555556327859 in dict_stats_exec_sql (pinfo=0x7fff8c0d7f58, sql=0x555556930278 "PROCEDURE RENAME_TABLE_IN_TABLE_STATS () IS\nBEGIN\nUPDATE \"mysql/innodb_table_stats\" SET\ndatabase_name = :new_dbname_utf8,\ntable_name = :new_tablename_utf8\nWHERE\ndatabase_name = :old_dbname_utf8 AND\ntable_name = :old_tablename_utf8;\nEND;\n", trx=0x7ffff403d2f8) at /home/midenok/src/mariadb/midenok/src/storage/innobase/dict/dict0stats.cc:307
#3  0x000055555632e815 in dict_stats_rename_table_in_table_stats (old_dbname_utf8=0x7fffe5748350 "test", old_tablename_utf8=0x7fffe57484f0 "#mysql50##sql-4bec_8", new_dbname_utf8=0x7fffe5748420 "test", new_tablename_utf8=0x7fffe57485c0 "d0") at /home/midenok/src/mariadb/midenok/src/storage/innobase/dict/dict0stats.cc:3634
#4  0x000055555632eb62 in dict_stats_rename_table (old_name=0x7fffe5748aa0 "test/#sql-4bec_8", new_name=0x7fffe5748d30 "test/d0", errstr=0x7fffe57488a0 "0\n", errstr_sz=512) at /home/midenok/src/mariadb/midenok/src/storage/innobase/dict/dict0stats.cc:3737
#5  0x000055555601b0b7 in ha_innobase::rename_table (this=0x7fff8c013310, from=0x7fffe5749240 "./test/#sql-4bec_8", to=0x7fffe5749450 "./test/d0") at /home/midenok/src/mariadb/midenok/src/storage/innobase/handler/ha_innodb.cc:14244
#6  0x0000555555dfbe9d in handler::ha_rename_table (this=0x7fff8c013310, from=0x7fffe5749240 "./test/#sql-4bec_8", to=0x7fffe5749450 "./test/d0") at /home/midenok/src/mariadb/midenok/src/sql/handler.cc:4364
#7  0x0000555555c22bb5 in mysql_rename_table (base=0x555557b47a50, old_db=0x7fff8c0116f8 "test", old_name=0x7fffe574a440 "#sql-4bec_8", new_db=0x7fff8c0116f8 "test", new_name=0x7fff8c011090 "d0", flags=1) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:5328
#8  0x0000555555c2dae4 in mysql_alter_table (thd=0x7fff8c000b00, new_db=0x7fff8c0116f8 "test", new_name=0x0, create_info=0x7fffe574b510, table_list=0x7fff8c0110c8, alter_info=0x7fffe574b460, order_num=0, order=0x0, ignore=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:9579
#9  0x0000555555cae63c in Sql_cmd_alter_table::execute (this=0x7fff8c0117f0, thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_alter.cc:318
#10 0x0000555555b5c7fb in mysql_execute_command (thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6224
#11 0x0000555555b60afc in mysql_parse (thd=0x7fff8c000b00, rawbuf=0x7fff8c010fd8 "alter table d0 add column (y int)", length=33, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7902

8.

#0  trx_start_low (trx=0x7ffff403d2f8, read_write=true) at /home/midenok/src/mariadb/midenok/src/storage/innobase/trx/trx0trx.cc:1227
#1  0x00005555562370f7 in trx_start_internal_low (trx=0x7ffff403d2f8) at /home/midenok/src/mariadb/midenok/src/storage/innobase/trx/trx0trx.cc:2927
#2  0x0000555556327859 in dict_stats_exec_sql (pinfo=0x7fff8c0d7f58, sql=0x555556930368 "PROCEDURE RENAME_TABLE_IN_INDEX_STATS () IS\nBEGIN\nUPDATE \"mysql/innodb_index_stats\" SET\ndatabase_name = :new_dbname_utf8,\ntable_name = :new_tablename_utf8\nWHERE\ndatabase_name = :old_dbname_utf8 AND\ntable_name = :old_tablename_utf8;\nEND;\n", trx=0x7ffff403d2f8) at /home/midenok/src/mariadb/midenok/src/storage/innobase/dict/dict0stats.cc:307
#3  0x000055555632e945 in dict_stats_rename_table_in_index_stats (old_dbname_utf8=0x7fffe5748350 "test", old_tablename_utf8=0x7fffe57484f0 "#mysql50##sql-4bec_8", new_dbname_utf8=0x7fffe5748420 "test", new_tablename_utf8=0x7fffe57485c0 "d0") at /home/midenok/src/mariadb/midenok/src/storage/innobase/dict/dict0stats.cc:3678
#4  0x000055555632ed74 in dict_stats_rename_table (old_name=0x7fffe5748aa0 "test/#sql-4bec_8", new_name=0x7fffe5748d30 "test/d0", errstr=0x7fffe57488a0 "0\n", errstr_sz=512) at /home/midenok/src/mariadb/midenok/src/storage/innobase/dict/dict0stats.cc:3793
#5  0x000055555601b0b7 in ha_innobase::rename_table (this=0x7fff8c013310, from=0x7fffe5749240 "./test/#sql-4bec_8", to=0x7fffe5749450 "./test/d0") at /home/midenok/src/mariadb/midenok/src/storage/innobase/handler/ha_innodb.cc:14244
#6  0x0000555555dfbe9d in handler::ha_rename_table (this=0x7fff8c013310, from=0x7fffe5749240 "./test/#sql-4bec_8", to=0x7fffe5749450 "./test/d0") at /home/midenok/src/mariadb/midenok/src/sql/handler.cc:4364
#7  0x0000555555c22bb5 in mysql_rename_table (base=0x555557b47a50, old_db=0x7fff8c0116f8 "test", old_name=0x7fffe574a440 "#sql-4bec_8", new_db=0x7fff8c0116f8 "test", new_name=0x7fff8c011090 "d0", flags=1) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:5328
#8  0x0000555555c2dae4 in mysql_alter_table (thd=0x7fff8c000b00, new_db=0x7fff8c0116f8 "test", new_name=0x0, create_info=0x7fffe574b510, table_list=0x7fff8c0110c8, alter_info=0x7fffe574b460, order_num=0, order=0x0, ignore=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:9579
#9  0x0000555555cae63c in Sql_cmd_alter_table::execute (this=0x7fff8c0117f0, thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_alter.cc:318
#10 0x0000555555b5c7fb in mysql_execute_command (thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6224
#11 0x0000555555b60afc in mysql_parse (thd=0x7fff8c000b00, rawbuf=0x7fff8c010fd8 "alter table d0 add column (y int)", length=33, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7902

@midenok
Copy link
Author

midenok commented May 17, 2017

NB: innobase_start_trx_and_assign_read_view()

@midenok
Copy link
Author

midenok commented May 17, 2017

create_table_info_t::create_table_def have its own m_trx which is different (?) from THD's.

@midenok
Copy link
Author

midenok commented May 18, 2017

VTMD is now versioned table. start and end fields as well as VTQ record are filled automatically like for any other versioned table.

@midenok midenok changed the title Store DDL operations to VTD Store DDL operations to VTMD May 18, 2017
@midenok
Copy link
Author

midenok commented May 19, 2017

CREATE TABLE ... LIKE ...

#0  Vers_parse_info::fix_create_like (this=0x7fffe574a9d8, thd=0x7fff8c000b00, alter_info=0x7fffe574a7e0, create_info=0x7fffe574a890, table=0x7fff8c011768) at /home/midenok/src/mariadb/midenok/src/sql/handler.cc:6930
#1  0x0000555555c2333b in mysql_create_like_table (thd=0x7fff8c000b00, table=0x7fff8c0110f8, src_table=0x7fff8c011768, create_info=0x7fffe574bff0) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:5462
#2  0x0000555555b56969 in mysql_execute_command (thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:4060
#3  0x0000555555b60c9c in mysql_parse (thd=0x7fff8c000b00, rawbuf=0x7fff8c010fd8 "create or replace table mysql.vtmd like mysql.vtmd2", length=51, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7902

@midenok
Copy link
Author

midenok commented May 22, 2017

open_table_error()

#0  my_error (nr=1146, MyFlags=0) at /home/midenok/src/mariadb/midenok/src/mysys/my_error.c:109
#1  0x0000555555c5f3e3 in open_table_error (share=0x7fff8c1e3ab8, error=OPEN_FRM_OPEN_ERROR, db_errno=2) at /home/midenok/src/mariadb/midenok/src/sql/table.cc:3594
#2  0x0000555555dfe7b0 in ha_discover_table (thd=0x7fff8c000b00, share=0x7fff8c1e3ab8) at /home/midenok/src/mariadb/midenok/src/sql/handler.cc:4980
#3  0x0000555555c5544e in open_table_def (thd=0x7fff8c000b00, share=0x7fff8c1e3ab8, flags=11) at /home/midenok/src/mariadb/midenok/src/sql/table.cc:616
#4  0x0000555555d384d9 in tdc_acquire_share (thd=0x7fff8c000b00, tl=0x7fffe5749440, flags=3, out_table=0x7fffe5748ae8) at /home/midenok/src/mariadb/midenok/src/sql/table_cache.cc:825
#5  0x0000555555ad6e87 in open_table (thd=0x7fff8c000b00, table_list=0x7fffe5749440, ot_ctx=0x7fffe5748f90) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:1742
#6  0x0000555555adc388 in open_ltable (thd=0x7fff8c000b00, table_list=0x7fffe5749440, lock_type=TL_WRITE_CONCURRENT_INSERT, lock_flags=2075) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:4588
#7  0x0000555555ae6dbb in open_log_table (thd=0x7fff8c000b00, one_table=0x7fffe5749440, backup=0x7fffe57490e0) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:8716
#8  0x0000555555dabe55 in VTMD_table::write_row (thd=0x7fff8c000b00, about=...) at /home/midenok/src/mariadb/midenok/src/sql/vtmd.cc:99
#9  0x0000555555c2df01 in mysql_alter_table (thd=0x7fff8c000b00, new_db=0x7fff8c0116f8 "test", new_name=0x0, create_info=0x7fffe574b510, table_list=0x7fff8c0110c8, alter_info=0x7fffe574b460, order_num=0, order=0x0, ignore=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:9614
#10 0x0000555555caea52 in Sql_cmd_alter_table::execute (this=0x7fff8c0117f0, thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_alter.cc:318
#11 0x0000555555b5ca4b in mysql_execute_command (thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6224
#12 0x0000555555b60d4c in mysql_parse (thd=0x7fff8c000b00, rawbuf=0x7fff8c010fd8 "alter table d0 add column (y int)", length=33, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7902

@midenok
Copy link
Author

midenok commented May 23, 2017

MDL ticket required for mysql_create_like_table()

#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:58
#1  0x00007ffff64b637a in __GI_abort () at abort.c:89
#2  0x00007ffff64acb47 in __assert_fail_base (fmt=<optimized out>, assertion=assertion@entry=0x5555566bbaa0 "(create_info->tmp_table()) || thd->mdl_context.is_lock_owner(MDL_key::TABLE, table->db, table->table_name, MDL_EXCLUSIVE)", file=file@entry=0x5555566ba9e0 "/home/midenok/src/mariadb/midenok/src/sql/sql_table.cc", line=line@entry=5539, function=function@entry=0x5555566bccc0 <mysql_create_like_table(THD*, TABLE_LIST*, TABLE_LIST*, Table_specification_st*)::__PRETTY_FUNCTION__> "bool mysql_create_like_table(THD*, TABLE_LIST*, TABLE_LIST*, Table_specification_st*)") at assert.c:92
#3  0x00007ffff64acbf2 in __GI___assert_fail (assertion=0x5555566bbaa0 "(create_info->tmp_table()) || thd->mdl_context.is_lock_owner(MDL_key::TABLE, table->db, table->table_name, MDL_EXCLUSIVE)", file=0x5555566ba9e0 "/home/midenok/src/mariadb/midenok/src/sql/sql_table.cc", line=5539, function=0x5555566bccc0 <mysql_create_like_table(THD*, TABLE_LIST*, TABLE_LIST*, Table_specification_st*)::__PRETTY_FUNCTION__> "bool mysql_create_like_table(THD*, TABLE_LIST*, TABLE_LIST*, Table_specification_st*)") at assert.c:101
#4  0x0000555555c23906 in mysql_create_like_table (thd=0x7fff8c000b00, table=0x7fffe5748a20, src_table=0x7fffe57483f0, create_info=0x7fffe5748270) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:5536
#5  0x0000555555dabda5 in VTMD_table::create (thd=0x7fff8c000b00, vtmd_name=..., about=...) at /home/midenok/src/mariadb/midenok/src/sql/vtmd.cc:33
#6  0x0000555555dac2d2 in VTMD_table::write_row (thd=0x7fff8c000b00, about=...) at /home/midenok/src/mariadb/midenok/src/sql/vtmd.cc:105
#7  0x0000555555c2e15c in mysql_alter_table (thd=0x7fff8c000b00, new_db=0x7fff8c0116f8 "test", new_name=0x0, create_info=0x7fffe574b510, table_list=0x7fff8c0110c8, alter_info=0x7fffe574b460, order_num=0, order=0x0, ignore=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:9615
#8  0x0000555555caed94 in Sql_cmd_alter_table::execute (this=0x7fff8c0117f0, thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_alter.cc:318
#9  0x0000555555b5cc8b in mysql_execute_command (thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6224
#10 0x0000555555b60f8c in mysql_parse (thd=0x7fff8c000b00, rawbuf=0x7fff8c010fd8 "alter table d0 add column (y int)", length=33, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7902

Acquiring a ticket is done by table->mdl_request.init(MDL_key::TABLE + thd->mdl_context.acquire_lock(&table->mdl_request (see sql_show.cc:4592) or lock_table_names() (see sql_admin.cc:125).

@midenok
Copy link
Author

midenok commented May 23, 2017

Ticket already exists on open

#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:58
#1  0x00007ffff64b637a in __GI_abort () at abort.c:89
#2  0x00007ffff64acb47 in __assert_fail_base (fmt=<optimized out>, assertion=assertion@entry=0x5555566d6cf6 "mdl_request->ticket == __null", file=file@entry=0x5555566d69c8 "/home/midenok/src/mariadb/midenok/src/sql/mdl.cc", line=line@entry=1862, function=function@entry=0x5555566d7480 <MDL_context::try_acquire_lock_impl(MDL_request*, MDL_ticket**)::__PRETTY_FUNCTION__> "bool MDL_context::try_acquire_lock_impl(MDL_request*, MDL_ticket**)") at assert.c:92
#3  0x00007ffff64acbf2 in __GI___assert_fail (assertion=0x5555566d6cf6 "mdl_request->ticket == __null", file=0x5555566d69c8 "/home/midenok/src/mariadb/midenok/src/sql/mdl.cc", line=1862, function=0x5555566d7480 <MDL_context::try_acquire_lock_impl(MDL_request*, MDL_ticket**)::__PRETTY_FUNCTION__> "bool MDL_context::try_acquire_lock_impl(MDL_request*, MDL_ticket**)") at assert.c:101
#4  0x0000555555cb5614 in MDL_context::try_acquire_lock_impl (this=0x7fff84000c08, mdl_request=0x7fffe5749888, out_ticket=0x7fffe57487c8) at /home/midenok/src/mariadb/midenok/src/sql/mdl.cc:1862
#5  0x0000555555cb5b9e in MDL_context::acquire_lock (this=0x7fff84000c08, mdl_request=0x7fffe5749888, lock_wait_timeout=31536000) at /home/midenok/src/mariadb/midenok/src/sql/mdl.cc:2067
#6  0x0000555555ad6730 in open_table_get_mdl_lock (thd=0x7fff84000b00, ot_ctx=0x7fffe5748f90, mdl_request=0x7fffe5749888, flags=2075, mdl_ticket=0x7fffe5748b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:1435
#7  0x0000555555ad6fb6 in open_table (thd=0x7fff84000b00, table_list=0x7fffe5749440, ot_ctx=0x7fffe5748f90) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:1705
#8  0x0000555555adc658 in open_ltable (thd=0x7fff84000b00, table_list=0x7fffe5749440, lock_type=TL_WRITE_CONCURRENT_INSERT, lock_flags=2075) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:4588
#9  0x0000555555ae708b in open_log_table (thd=0x7fff84000b00, one_table=0x7fffe5749440, backup=0x7fffe57490e0) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:8716
#10 0x0000555555dac496 in VTMD_table::write_row (thd=0x7fff84000b00, about=...) at /home/midenok/src/mariadb/midenok/src/sql/vtmd.cc:137
#11 0x0000555555c2e29c in mysql_alter_table (thd=0x7fff84000b00, new_db=0x7fff840116f8 "test", new_name=0x0, create_info=0x7fffe574b510, table_list=0x7fff840110c8, alter_info=0x7fffe574b460, order_num=0, order=0x0, ignore=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:9615
#12 0x0000555555caeed4 in Sql_cmd_alter_table::execute (this=0x7fff840117f0, thd=0x7fff84000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_alter.cc:318
#13 0x0000555555b5cdcb in mysql_execute_command (thd=0x7fff84000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6224
#14 0x0000555555b610cc in mysql_parse (thd=0x7fff84000b00, rawbuf=0x7fff84010fd8 "alter table d0 add column (y int)", length=33, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7902

@midenok
Copy link
Author

midenok commented May 23, 2017

Requests are different, ticket is the same (thd->mdl_context.release_lock() didn't help):

Thread 33 "mysqld" hit Breakpoint 2, MDL_auto_lock::~MDL_auto_lock (this=0x7fffe5748180, __in_chrg=<optimized out>) at /home/midenok/src/mariadb/midenok/src/sql/vtmd.cc:28
28            DBUG_ASSERT(table.mdl_request.ticket);
$1 = (MDL_request *) 0x7fffe5748e68
$2 = (MDL_ticket *) 0x7fff8404b6b0

Thread 33 "mysqld" hit Breakpoint 1, open_table (thd=0x7fff84000b00, table_list=0x7fffe5749440, ot_ctx=0x7fffe5748f90) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:1705
1705        if (open_table_get_mdl_lock(thd, ot_ctx, &table_list->mdl_request,
$3 = (MDL_request *) 0x7fffe5749888
$4 = (MDL_ticket *) 0x7fff8404b6b0
#0  open_table (thd=0x7fff84000b00, table_list=0x7fffe5749440, ot_ctx=0x7fffe5748f90) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:1705
#1  0x0000555555adc658 in open_ltable (thd=0x7fff84000b00, table_list=0x7fffe5749440, lock_type=TL_WRITE_CONCURRENT_INSERT, lock_flags=2075) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:4588
#2  0x0000555555ae708b in open_log_table (thd=0x7fff84000b00, one_table=0x7fffe5749440, backup=0x7fffe57490e0) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:8716
#3  0x0000555555dac496 in VTMD_table::write_row (thd=0x7fff84000b00, about=...) at /home/midenok/src/mariadb/midenok/src/sql/vtmd.cc:137
#4  0x0000555555c2e29c in mysql_alter_table (thd=0x7fff84000b00, new_db=0x7fff840116f8 "test", new_name=0x0, create_info=0x7fffe574b510, table_list=0x7fff840110c8, alter_info=0x7fffe574b460, order_num=0, order=0x0, ignore=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:9615
#5  0x0000555555caeed4 in Sql_cmd_alter_table::execute (this=0x7fff840117f0, thd=0x7fff84000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_alter.cc:318
#6  0x0000555555b5cdcb in mysql_execute_command (thd=0x7fff84000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6224
#7  0x0000555555b610cc in mysql_parse (thd=0x7fff84000b00, rawbuf=0x7fff84010fd8 "alter table d0 add column (y int)", length=33, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7902

@midenok
Copy link
Author

midenok commented May 23, 2017

1. Ticket taken:

#0  0x0000555555cb583c in MDL_context::try_acquire_lock_impl (this=0x7fff84000c08, mdl_request=0x7fffe5749888, out_ticket=0x7fffe57487c8) at /home/midenok/src/mariadb/midenok/src/sql/mdl.cc:1931
#1  0x0000555555cb5b9e in MDL_context::acquire_lock (this=0x7fff84000c08, mdl_request=0x7fffe5749888, lock_wait_timeout=31536000) at /home/midenok/src/mariadb/midenok/src/sql/mdl.cc:2067
#2  0x0000555555ad6730 in open_table_get_mdl_lock (thd=0x7fff84000b00, ot_ctx=0x7fffe5748f90, mdl_request=0x7fffe5749888, flags=2075, mdl_ticket=0x7fffe5748b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:1435
#3  0x0000555555ad6fb6 in open_table (thd=0x7fff84000b00, table_list=0x7fffe5749440, ot_ctx=0x7fffe5748f90) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:1705
#4  0x0000555555adc658 in open_ltable (thd=0x7fff84000b00, table_list=0x7fffe5749440, lock_type=TL_WRITE_CONCURRENT_INSERT, lock_flags=2075) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:4588
#5  0x0000555555ae708b in open_log_table (thd=0x7fff84000b00, one_table=0x7fffe5749440, backup=0x7fffe57490e0) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:8716
#6  0x0000555555dac3f7 in VTMD_table::write_row (thd=0x7fff84000b00, about=...) at /home/midenok/src/mariadb/midenok/src/sql/vtmd.cc:131
#7  0x0000555555c2e29c in mysql_alter_table (thd=0x7fff84000b00, new_db=0x7fff840116f8 "test", new_name=0x0, create_info=0x7fffe574b510, table_list=0x7fff840110c8, alter_info=0x7fffe574b460, order_num=0, order=0x0, ignore=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:9615
#8  0x0000555555caeed4 in Sql_cmd_alter_table::execute (this=0x7fff840117f0, thd=0x7fff84000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_alter.cc:318
#9  0x0000555555b5cdcb in mysql_execute_command (thd=0x7fff84000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6224
#10 0x0000555555b610cc in mysql_parse (thd=0x7fff84000b00, rawbuf=0x7fff84010fd8 "alter table d0 add column (y int)", length=33, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7902

2. Assert failed

#3  0x00007ffff64acbf2 in __GI___assert_fail (assertion=0x5555566d6cf6 "mdl_request->ticket == __null", file=0x5555566d69c8 "/home/midenok/src/mariadb/midenok/src/sql/mdl.cc", line=1862, function=0x5555566d7480 <MDL_context::try_acquire_lock_impl(MDL_request*, MDL_ticket**)::__PRETTY_FUNCTION__> "bool MDL_context::try_acquire_lock_impl(MDL_request*, MDL_ticket**)") at assert.c:101
#4  0x0000555555cb5614 in MDL_context::try_acquire_lock_impl (this=0x7fff84000c08, mdl_request=0x7fffe5749888, out_ticket=0x7fffe57487c8) at /home/midenok/src/mariadb/midenok/src/sql/mdl.cc:1862
#5  0x0000555555cb5b9e in MDL_context::acquire_lock (this=0x7fff84000c08, mdl_request=0x7fffe5749888, lock_wait_timeout=31536000) at /home/midenok/src/mariadb/midenok/src/sql/mdl.cc:2067
#6  0x0000555555ad6730 in open_table_get_mdl_lock (thd=0x7fff84000b00, ot_ctx=0x7fffe5748f90, mdl_request=0x7fffe5749888, flags=2075, mdl_ticket=0x7fffe5748b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:1435
#7  0x0000555555ad6fb6 in open_table (thd=0x7fff84000b00, table_list=0x7fffe5749440, ot_ctx=0x7fffe5748f90) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:1705
#8  0x0000555555adc658 in open_ltable (thd=0x7fff84000b00, table_list=0x7fffe5749440, lock_type=TL_WRITE_CONCURRENT_INSERT, lock_flags=2075) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:4588
#9  0x0000555555ae708b in open_log_table (thd=0x7fff84000b00, one_table=0x7fffe5749440, backup=0x7fffe57490e0) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:8716
#10 0x0000555555dac496 in VTMD_table::write_row (thd=0x7fff84000b00, about=...) at /home/midenok/src/mariadb/midenok/src/sql/vtmd.cc:137
#11 0x0000555555c2e29c in mysql_alter_table (thd=0x7fff84000b00, new_db=0x7fff840116f8 "test", new_name=0x0, create_info=0x7fffe574b510, table_list=0x7fff840110c8, alter_info=0x7fffe574b460, order_num=0, order=0x0, ignore=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:9615
#12 0x0000555555caeed4 in Sql_cmd_alter_table::execute (this=0x7fff840117f0, thd=0x7fff84000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_alter.cc:318
#13 0x0000555555b5cdcb in mysql_execute_command (thd=0x7fff84000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6224
#14 0x0000555555b610cc in mysql_parse (thd=0x7fff84000b00, rawbuf=0x7fff84010fd8 "alter table d0 add column (y int)", length=33, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7902

TABLE_LIST::mdl_request must be reinited on every open.

@midenok
Copy link
Author

midenok commented May 25, 2017

Create table

IB level ``` #0 mtr_t::commit (this=0x7fffe5747db0) at /home/midenok/src/mariadb/midenok/src/storage/innobase/mtr/mtr0mtr.cc:553 #1 0x00005555562e8d5f in dict_hdr_get_new_id (table_id=0x7fff8c01e960, index_id=0x0, space_id=0x0, table=0x7fff8c01e948, disable_redo=false) at /home/midenok/src/mariadb/midenok/src/storage/innobase/dict/dict0boot.cc:138 #2 0x00005555562f4f0b in dict_table_assign_new_id (table=0x7fff8c01e948, trx=0x7ffff403d2f8) at /home/midenok/src/mariadb/midenok/src/storage/innobase/dict/dict0crea.cc:2800 #3 0x00005555562eed0c in dict_build_table_def_step (thr=0x7fff8c391460, node=0x7fff8c34c118) at /home/midenok/src/mariadb/midenok/src/storage/innobase/dict/dict0crea.cc:360 #4 0x00005555562f155c in dict_create_table_step (thr=0x7fff8c391460) at /home/midenok/src/mariadb/midenok/src/storage/innobase/dict/dict0crea.cc:1347 #5 0x000055555611644c in que_thr_step (thr=0x7fff8c391460) at /home/midenok/src/mariadb/midenok/src/storage/innobase/que/que0que.cc:1060 #6 0x00005555561165f4 in que_run_threads_low (thr=0x7fff8c391460) at /home/midenok/src/mariadb/midenok/src/storage/innobase/que/que0que.cc:1114 #7 0x00005555561167b4 in que_run_threads (thr=0x7fff8c391460) at /home/midenok/src/mariadb/midenok/src/storage/innobase/que/que0que.cc:1154 #8 0x000055555616e5f3 in row_create_table_for_mysql (table=0x7fff8c01e948, trx=0x7ffff403d2f8, commit=false, mode=FIL_ENCRYPTION_DEFAULT, key_id=1) at /home/midenok/src/mariadb/midenok/src/storage/innobase/row/row0mysql.cc:2565 #9 0x000055555602e600 in create_table_info_t::create_table_def (this=0x7fffe5748ac0) at /home/midenok/src/mariadb/midenok/src/storage/innobase/handler/ha_innodb.cc:11964 #10 0x000055555601a76b in create_table_info_t::create_table (this=0x7fffe5748ac0) at /home/midenok/src/mariadb/midenok/src/storage/innobase/handler/ha_innodb.cc:13280 #11 0x000055555601b3b8 in ha_innobase::create (this=0x7fff8c38fea8, name=0x7fffe574ba10 "./test/d0", form=0x7fffe5749640, create_info=0x7fffe574bff0) at /home/midenok/src/mariadb/midenok/src/storage/innobase/handler/ha_innodb.cc:13604 ```
#12 0x0000555555dfd7a0 in handler::ha_create (this=0x7fff8c38fea8, name=0x7fffe574ba10 "./test/d0", form=0x7fffe5749640, info_arg=0x7fffe574bff0) at /home/midenok/src/mariadb/midenok/src/sql/handler.cc:4412
#13 0x0000555555dfe72c in ha_create_table (thd=0x7fff8c000b00, path=0x7fffe574ba10 "./test/d0", db=0x7fff8c011740 "test", table_name=0x7fff8c0110d8 "d0", create_info=0x7fffe574bff0, frm=0x7fffe574ba00) at /home/midenok/src/mariadb/midenok/src/sql/handler.cc:4783
#14 0x0000555555c7768f in rea_create_table (thd=0x7fff8c000b00, frm=0x7fffe574ba00, path=0x7fffe574ba10 "./test/d0", db=0x7fff8c011740 "test", table_name=0x7fff8c0110d8 "d0", create_info=0x7fffe574bff0, file=0x7fff8c011d48, no_ha_create_table=false) at /home/midenok/src/mariadb/midenok/src/sql/unireg.cc:512
#15 0x0000555555c217c1 in create_table_impl (thd=0x7fff8c000b00, orig_db=0x7fff8c011740 "test", orig_table_name=0x7fff8c0110d8 "d0", db=0x7fff8c011740 "test", table_name=0x7fff8c0110d8 "d0", path=0x7fffe574ba10 "./test/d0", options=..., create_info=0x7fffe574bff0, alter_info=0x7fffe574bf40, create_table_mode=0, is_trans=0x7fffe574bc6e, key_info=0x7fffe574b9f0, key_count=0x7fffe574b9e4, frm=0x7fffe574ba00) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:4834
#16 0x0000555555c21dd0 in mysql_create_table_no_lock (thd=0x7fff8c000b00, db=0x7fff8c011740 "test", table_name=0x7fff8c0110d8 "d0", create_info=0x7fffe574bff0, alter_info=0x7fffe574bf40, is_trans=0x7fffe574bc6e, create_table_mode=0, table_list=0x7fff8c011110) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:4947
#17 0x0000555555c2211c in mysql_create_table (thd=0x7fff8c000b00, create_table=0x7fff8c011110, create_info=0x7fffe574bff0, alter_info=0x7fffe574bf40) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:5020
#18 0x0000555555b56e19 in mysql_execute_command (thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:4084
#19 0x0000555555b610dc in mysql_parse (thd=0x7fff8c000b00, rawbuf=0x7fff8c010fd8 "create or replace table d0 (x int) engine innodb with system versioning", length=71, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7902

Rename table

IB level ``` #0 mtr_t::commit (this=0x7fffe5748fb0) at /home/midenok/src/mariadb/midenok/src/storage/innobase/mtr/mtr0mtr.cc:553 #1 0x00005555561a20b1 in row_sel (node=0x7fff88083260, thr=0x7fff880837e8) at /home/midenok/src/mariadb/midenok/src/storage/innobase/row/row0sel.cc:2143 #2 0x00005555561a28de in row_sel_step (thr=0x7fff880837e8) at /home/midenok/src/mariadb/midenok/src/storage/innobase/row/row0sel.cc:2399 #3 0x00005555561164b1 in que_thr_step (thr=0x7fff880837e8) at /home/midenok/src/mariadb/midenok/src/storage/innobase/que/que0que.cc:1030 #4 0x00005555561167d8 in que_run_threads_low (thr=0x7fff880837e8) at /home/midenok/src/mariadb/midenok/src/storage/innobase/que/que0que.cc:1114 #5 0x0000555556116998 in que_run_threads (thr=0x7fff880837e8) at /home/midenok/src/mariadb/midenok/src/storage/innobase/que/que0que.cc:1154 #6 0x0000555556116c49 in que_eval_sql (info=0x7fff8806fe08, sql=0x5555568922d0 "PROCEDURE RENAME_TABLE () IS\nBEGIN\nUPDATE SYS_TABLES SET NAME = :new_table_name\n WHERE NAME = :old_table_name;\nEND;\n", reserve_dict_mutex=0, trx=0x7ffff403d2f8) at /home/midenok/src/mariadb/midenok/src/storage/innobase/que/que0que.cc:1231 #7 0x00005555561737d4 in row_rename_table_for_mysql (old_name=0x7fffe574a2d0 "test/d0", new_name=0x7fffe574a0d0 "test/x0", trx=0x7ffff403d2f8, commit=true) at /home/midenok/src/mariadb/midenok/src/storage/innobase/row/row0mysql.cc:4695 #8 0x000055555602f27d in innobase_rename_table (trx=0x7ffff403d2f8, from=0x7fffe574b290 "./test/d0", to=0x7fffe574b4a0 "./test/x0") at /home/midenok/src/mariadb/midenok/src/storage/innobase/handler/ha_innodb.cc:14126 #9 0x000055555601ca11 in ha_innobase::rename_table (this=0x7fff880120b8, from=0x7fffe574b290 "./test/d0", to=0x7fffe574b4a0 "./test/x0") at /home/midenok/src/mariadb/midenok/src/storage/innobase/handler/ha_innodb.cc:14238 ```
#10 0x0000555555dfd969 in handler::ha_rename_table (this=0x7fff880120b8, from=0x7fffe574b290 "./test/d0", to=0x7fffe574b4a0 "./test/x0") at /home/midenok/src/mariadb/midenok/src/sql/handler.cc:4364
#11 0x0000555555c23231 in mysql_rename_table (base=0x555557b49a50, old_db=0x7fff88011710 "test", old_name=0x7fff88011078 "d0", new_db=0x7fff88011d50 "test", new_name=0x7fff880110a8 "x0", flags=0) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:5339
#12 0x0000555555b81912 in do_rename (thd=0x7fff88000b00, ren_table=0x7fff880110e0, new_db=0x7fff88011d50 "test", new_table_name=0x7fff880110a8 "x0", new_table_alias=0x7fff88011718 "x0", skip_error=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_rename.cc:291
#13 0x0000555555b81c5c in rename_tables (thd=0x7fff88000b00, table_list=0x7fff880110e0, skip_error=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_rename.cc:378
#14 0x0000555555b813bd in mysql_rename_tables (thd=0x7fff88000b00, table_list=0x7fff880110e0, silent=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_rename.cc:152
#15 0x0000555555b5750f in mysql_execute_command (thd=0x7fff88000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:4254
#16 0x0000555555b610dc in mysql_parse (thd=0x7fff88000b00, rawbuf=0x7fff88010fd8 "rename table d0 to x0", length=21, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7902

Drop table

IB level ``` #0 mtr_t::commit (this=0x7fffe5748670) at /home/midenok/src/mariadb/midenok/src/storage/innobase/mtr/mtr0mtr.cc:553 #1 0x00005555561a21ba in row_sel (node=0x7fff88082e78, thr=0x7fff880833c8) at /home/midenok/src/mariadb/midenok/src/storage/innobase/row/row0sel.cc:2183 #2 0x00005555561a28de in row_sel_step (thr=0x7fff880833c8) at /home/midenok/src/mariadb/midenok/src/storage/innobase/row/row0sel.cc:2399 #3 0x00005555561164b1 in que_thr_step (thr=0x7fff880833c8) at /home/midenok/src/mariadb/midenok/src/storage/innobase/que/que0que.cc:1030 #4 0x00005555561167d8 in que_run_threads_low (thr=0x7fff880833c8) at /home/midenok/src/mariadb/midenok/src/storage/innobase/que/que0que.cc:1114 #5 0x0000555556116998 in que_run_threads (thr=0x7fff880833c8) at /home/midenok/src/mariadb/midenok/src/storage/innobase/que/que0que.cc:1154 #6 0x0000555556116c49 in que_eval_sql (info=0x7fff8807d9b8, sql=0x555556931c98 "PROCEDURE DELETE_FROM_TABLE_STATS () IS\nBEGIN\nDELETE FROM \"mysql/innodb_table_stats\" WHERE\ndatabase_name = :database_name AND\ntable_name = :table_name;\nEND;\n", reserve_dict_mutex=0, trx=0x7ffff403d7b0) at /home/midenok/src/mariadb/midenok/src/storage/innobase/que/que0que.cc:1231 #7 0x0000555556329285 in dict_stats_exec_sql (pinfo=0x7fff8807d9b8, sql=0x555556931c98 "PROCEDURE DELETE_FROM_TABLE_STATS () IS\nBEGIN\nDELETE FROM \"mysql/innodb_table_stats\" WHERE\ndatabase_name = :database_name AND\ntable_name = :table_name;\nEND;\n", trx=0x7ffff403d7b0) at /home/midenok/src/mariadb/midenok/src/storage/innobase/dict/dict0stats.cc:311 #8 0x000055555632fdce in dict_stats_delete_from_table_stats (database_name=0x7fffe5748e00 "test", table_name=0x7fffe5748ed0 "d0") at /home/midenok/src/mariadb/midenok/src/storage/innobase/dict/dict0stats.cc:3483 #9 0x0000555556330028 in dict_stats_drop_table (db_and_table=0x7fffe5749d40 "test/d0", errstr=0x7fffe57496e0 "", errstr_sz=1024) at /home/midenok/src/mariadb/midenok/src/storage/innobase/dict/dict0stats.cc:3568 #10 0x0000555556171506 in row_drop_table_for_mysql (name=0x7fffe5749d40 "test/d0", trx=0x7ffff403d2f8, drop_db=false, create_failed=0, nonatomic=true) at /home/midenok/src/mariadb/midenok/src/storage/innobase/row/row0mysql.cc:3792 #11 0x000055555601c2dc in ha_innobase::delete_table (this=0x7fff88011900, name=0x7fffe574ba00 "./test/d0") at /home/midenok/src/mariadb/midenok/src/storage/innobase/handler/ha_innodb.cc:13901 ```
#12 0x0000555555dfd9a8 in handler::ha_delete_table (this=0x7fff88011900, name=0x7fffe574ba00 "./test/d0") at /home/midenok/src/mariadb/midenok/src/sql/handler.cc:4378
#13 0x0000555555df7f0a in ha_delete_table (thd=0x7fff88000b00, table_type=0x555557b49a50, path=0x7fffe574ba00 "./test/d0", db=0x7fff880116d0 "test", alias=0x7fff88011068 "d0", generate_warning=true) at /home/midenok/src/mariadb/midenok/src/sql/handler.cc:2361
#14 0x0000555555c1aa6a in mysql_rm_table_no_locks (thd=0x7fff88000b00, tables=0x7fff880110a0, if_exists=false, drop_temporary=false, drop_view=false, drop_sequence=false, dont_log_query=false, dont_free_locks=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:2478
#15 0x0000555555c19b71 in mysql_rm_table (thd=0x7fff88000b00, tables=0x7fff880110a0, if_exists=false, drop_temporary=false, drop_sequence=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:2093
#16 0x0000555555b58f42 in mysql_execute_command (thd=0x7fff88000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:4859
#17 0x0000555555b610dc in mysql_parse (thd=0x7fff88000b00, rawbuf=0x7fff88010fd8 "drop table d0", length=13, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7902

@midenok
Copy link
Author

midenok commented May 25, 2017

Rename doesn't open table. Either need to open and check versioned flag or check presence of corresponding VTMD. Choosing the second option.

@midenok
Copy link
Author

midenok commented May 25, 2017

Table existence is checked by ha_table_exists():

#0  ha_table_exists (thd=0x7fff88000b00, db=0x7fff88011d50 "test", table_name=0x7fff880110a8 "x1", hton=0x0, is_sequence=0x0) at /home/midenok/src/mariadb/midenok/src/sql/handler.cc:5084
#1  0x0000555555b817e4 in do_rename (thd=0x7fff88000b00, ren_table=0x7fff880110e0, new_db=0x7fff88011d50 "test", new_table_name=0x7fff880110a8 "x1", new_table_alias=0x7fff88011718 "x1", skip_error=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_rename.cc:277
#2  0x0000555555b81c5c in rename_tables (thd=0x7fff88000b00, table_list=0x7fff880110e0, skip_error=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_rename.cc:378
#3  0x0000555555b813bd in mysql_rename_tables (thd=0x7fff88000b00, table_list=0x7fff880110e0, silent=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_rename.cc:152
#4  0x0000555555b5750f in mysql_execute_command (thd=0x7fff88000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:4254
#5  0x0000555555b610dc in mysql_parse (thd=0x7fff88000b00, rawbuf=0x7fff88010fd8 "rename table x0 to x1", length=21, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7902

@midenok
Copy link
Author

midenok commented May 31, 2017

On rename VTMD by old name is still accessible, though SHOW TABLES don't list it. This ghost name must be closed properly.

Table access by SELECT

#0  open_table (thd=0x7fff8c000b00, table_list=0x7fff8c013368, ot_ctx=0x7fffe574b710) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:1480
#1  0x0000555555ada443 in open_and_process_table (thd=0x7fff8c000b00, lex=0x7fff8c004618, tables=0x7fff8c013368, counter=0x7fffe574b7a4, flags=0, prelocking_strategy=0x7fffe574b830, has_prelocking_list=false, ot_ctx=0x7fffe574b710) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:3414
#2  0x0000555555adb63c in open_tables (thd=0x7fff8c000b00, options=..., start=0x7fffe574b788, counter=0x7fffe574b7a4, flags=0, prelocking_strategy=0x7fffe574b830) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:3932
#3  0x0000555555adccc3 in open_and_lock_tables (thd=0x7fff8c000b00, options=..., tables=0x7fff8c013368, derived=true, flags=0, prelocking_strategy=0x7fffe574b830) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:4687
#4  0x0000555555acfe1e in open_and_lock_tables (thd=0x7fff8c000b00, tables=0x7fff8c013368, derived=true, flags=0) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.h:495
#5  0x0000555555b5dac7 in execute_sqlcom_select (thd=0x7fff8c000b00, all_tables=0x7fff8c013368) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6376
#6  0x0000555555b55c41 in mysql_execute_command (thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:3574
#7  0x0000555555b612ac in mysql_parse (thd=0x7fff8c000b00, rawbuf=0x7fff8c013188 "select * from x0_vtmd", length=21, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7902
#8  0x0000555555b513d0 in dispatch_command (command=COM_QUERY, thd=0x7fff8c000b00, packet=0x7fff8c0087f1 "select * from x0_vtmd", packet_length=21, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:1814

No such table error

#0  my_error (nr=1146, MyFlags=0) at /home/midenok/src/mariadb/midenok/src/mysys/my_error.c:109
#1  0x0000555555c5fc03 in open_table_error (share=0x7fff8c0ac548, error=OPEN_FRM_OPEN_ERROR, db_errno=2) at /home/midenok/src/mariadb/midenok/src/sql/table.cc:3597
#2  0x0000555555dffeda in ha_discover_table (thd=0x7fff8c000b00, share=0x7fff8c0ac548) at /home/midenok/src/mariadb/midenok/src/sql/handler.cc:4980
#3  0x0000555555c55bf2 in open_table_def (thd=0x7fff8c000b00, share=0x7fff8c0ac548, flags=11) at /home/midenok/src/mariadb/midenok/src/sql/table.cc:609
#4  0x0000555555d38d87 in tdc_acquire_share (thd=0x7fff8c000b00, tl=0x7fff8c013368, flags=3, out_table=0x7fffe574b108) at /home/midenok/src/mariadb/midenok/src/sql/table_cache.cc:825
#5  0x0000555555ad7337 in open_table (thd=0x7fff8c000b00, table_list=0x7fff8c013368, ot_ctx=0x7fffe574b710) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:1742
#6  0x0000555555ada443 in open_and_process_table (thd=0x7fff8c000b00, lex=0x7fff8c004618, tables=0x7fff8c013368, counter=0x7fffe574b7a4, flags=0, prelocking_strategy=0x7fffe574b830, has_prelocking_list=false, ot_ctx=0x7fffe574b710) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:3414
#7  0x0000555555adb63c in open_tables (thd=0x7fff8c000b00, options=..., start=0x7fffe574b788, counter=0x7fffe574b7a4, flags=0, prelocking_strategy=0x7fffe574b830) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:3932
#8  0x0000555555adccc3 in open_and_lock_tables (thd=0x7fff8c000b00, options=..., tables=0x7fff8c013368, derived=true, flags=0, prelocking_strategy=0x7fffe574b830) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:4687
#9  0x0000555555acfe1e in open_and_lock_tables (thd=0x7fff8c000b00, tables=0x7fff8c013368, derived=true, flags=0) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.h:495
#10 0x0000555555b5dac7 in execute_sqlcom_select (thd=0x7fff8c000b00, all_tables=0x7fff8c013368) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6376
#11 0x0000555555b55c41 in mysql_execute_command (thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:3574
#12 0x0000555555b612ac in mysql_parse (thd=0x7fff8c000b00, rawbuf=0x7fff8c013188 "select * from r0_vtmd", length=21, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7902

@midenok
Copy link
Author

midenok commented May 31, 2017

It doesn't enter into ha_discover_table() for ghost name. It enters tdc_acquire_share(). lf_hash_search_using_hash_value() finds table in tdc_hash. TDC stands for table definition cache, it holds cached FRM images.

Table is removed from cache by tdc_remove_table(), which is used by close_cached_tables() and close_all_tables_for_name(). close_cached_tables() is higher level: it calls close_all_tables_for_name(). tdc_remove_table() is used directly from RENAME TABLE.

@midenok
Copy link
Author

midenok commented May 31, 2017

tdc_remove_table() from RENAME TABLE.

#0  tdc_remove_table (thd=0x7fff8c000b00, remove_type=TDC_RT_REMOVE_ALL, db=0x7fff8c0138c0 "t0", table_name=0x7fff8c013228 "d0", kill_delayed_threads=false) at /home/midenok/src/mariadb/midenok/src/sql/table_cache.cc:1072
#1  0x0000555555b81a9c in do_rename (thd=0x7fff8c000b00, ren_table=0x7fff8c013290, new_db=0x7fff8c013f00 "t0", new_table_name=0x7fff8c013258 "f0", new_table_alias=0x7fff8c0138c8 "f0", skip_error=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_rename.cc:288
#2  0x0000555555b81f08 in rename_tables (thd=0x7fff8c000b00, table_list=0x7fff8c013290, skip_error=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_rename.cc:392
#3  0x0000555555b8158d in mysql_rename_tables (thd=0x7fff8c000b00, table_list=0x7fff8c013290, silent=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_rename.cc:153
#4  0x0000555555b576df in mysql_execute_command (thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:4254
#5  0x0000555555b612ac in mysql_parse (thd=0x7fff8c000b00, rawbuf=0x7fff8c013188 "rename table d0 to f0", length=21, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7902

@midenok
Copy link
Author

midenok commented Jun 3, 2017

Table create time:

SELECT create_time FROM INFORMATION_SCHEMA.TABLES
  WHERE table_schema = 'test'
  AND table_name = 't0';

@midenok
Copy link
Author

midenok commented Jun 4, 2017

Fill archive_name

drop database if exists t0;
create database t0; use t0;
create or replace table t0 (x int) with system versioning;
alter table t0 add column (y int);
rename table t0 to t1;
rename table t1 to t2;
select * from t2_vtmd for system_time all;
alter table t2 drop column y;
select * from t2_vtmd for system_time all;
+-------+----------------------+------+---------------------------+-------------+
| start | end                  | name | archive_name              | col_renames |
+-------+----------------------+------+---------------------------+-------------+
| 34585 |                34599 | t0   | t0_20170605_022147_532021 | NULL        |
| 34599 |                34610 | t0   | NULL                      | NULL        |
| 34610 |                34621 | t1   | NULL                      | NULL        |
| 34621 | 18446744073709551615 | t2   | NULL                      | NULL        |
+-------+----------------------+------+---------------------------+-------------+
+-------+----------------------+------+---------------------------+-------------+
| start | end                  | name | archive_name              | col_renames |
+-------+----------------------+------+---------------------------+-------------+
| 34585 |                34599 | t0   | t0_20170605_022147_532021 | NULL        |
| 34599 |                34610 | t0   | t2_20170605_022150_709341 | NULL        |
| 34610 |                34621 | t1   | t2_20170605_022150_709341 | NULL        |
| 34621 |                34635 | t2   | t2_20170605_022150_709341 | NULL        |
| 34635 | 18446744073709551615 | t2   | NULL                      | NULL        |
+-------+----------------------+------+---------------------------+-------------+

@midenok
Copy link
Author

midenok commented Jun 13, 2017

Rename via ALTER

1. rename to backup_name

#0  mysql_rename_table (base=0x555557b4da50, old_db=0x7fff8c0138b0 "test", old_name=0x7fff8c013248 "t2", new_db=0x7fff8c0138b0 "test", new_name=0x7fffe574aeb0 "t2_20170613_134506_885553", flags=2) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:5282
#1  0x0000555555c2fb05 in mysql_alter_table (thd=0x7fff8c000b00, new_db=0x7fff8c0138e8 "test", new_name=0x7fff8c0138b8 "t4", create_info=0x7fffe574b510, table_list=0x7fff8c013280, alter_info=0x7fffe574b460, order_num=0, order=0x0, ignore=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:9583
#2  0x0000555555cb0ab8 in Sql_cmd_alter_table::execute (this=0x7fff8c0138f0, thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_alter.cc:318
#3  0x0000555555b5e3d9 in mysql_execute_command (thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6224
#4  0x0000555555b626da in mysql_parse (thd=0x7fff8c000b00, rawbuf=0x7fff8c013198 "alter table t2 rename to t4", length=27, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7902

2. rename to new name

#0  mysql_rename_table (base=0x555557b4da50, old_db=0x7fff8c0138b0 "test", old_name=0x7fffe574a440 "#sql-17c5_8", new_db=0x7fff8c0138b0 "test", new_name=0x7fff8c0138b8 "t4", flags=1) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:5282
#1  0x0000555555c2fb80 in mysql_alter_table (thd=0x7fff8c000b00, new_db=0x7fff8c0138e8 "test", new_name=0x7fff8c0138b8 "t4", create_info=0x7fffe574b510, table_list=0x7fff8c013280, alter_info=0x7fffe574b460, order_num=0, order=0x0, ignore=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_table.cc:9593
#2  0x0000555555cb0ab8 in Sql_cmd_alter_table::execute (this=0x7fff8c0138f0, thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_alter.cc:318
#3  0x0000555555b5e3d9 in mysql_execute_command (thd=0x7fff8c000b00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6224
#4  0x0000555555b626da in mysql_parse (thd=0x7fff8c000b00, rawbuf=0x7fff8c013198 "alter table t2 rename to t4", length=27, parser_state=0x7fffe574c6b0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7902

@midenok
Copy link
Author

midenok commented Jun 14, 2017

Create time from I_S:

static int get_schema_tables_record(THD *thd, TABLE_LIST *tables,
				    TABLE *table, bool res,
				    LEX_STRING *db_name,
				    LEX_STRING *table_name)
{
...
      if (file->stats.create_time)
      {
        thd->variables.time_zone->gmt_sec_to_TIME(&time,
                                                  (my_time_t) file->stats.create_time);
        table->field[14]->store_time(&time);
        table->field[14]->set_notnull();
      }

@midenok
Copy link
Author

midenok commented Jun 16, 2017

Table creation time as start (so-called VTMD recovery) is postponed until there will be better knowledge on VTQ timestamp tampering.

midenok added a commit that referenced this issue Jun 19, 2017
IB: Fixes in logic when to do versioned or usual row updates. Now it is
able to do unversioned updates for versioned tables just by disabling
`TABLE_SHARE::versioned` flag.

SQL: DDL tracking for:
* RENAME TABLE, ALTER TABLE .. RENAME TO;
* DROP TABLE;
* data-modifying operations (f.ex. ALTER TABLE .. ADD/DROP COLUMN).
@midenok midenok closed this as completed Jun 19, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant