The sequence used as the default value in the table ('t1' in my example) produces incorrect values when the data is inserted from INSERT SELECT.
Example:
SELECT VERSION();
DROPTABLEIF EXISTS `t1`;
DROPSEQUENCEIF EXISTS `s1`;
CREATESEQUENCEIFNOT EXISTS `s1`;
CREATETABLEIFNOT EXISTS `t1` (
`a` BIGINT UNSIGNED NOTNULLPRIMARYKEY
DEFAULT (NEXT VALUE FOR `s1`),
`b` CHAR(1) NOTNULL
) ENGINE=InnoDB;
SHOW CREATETABLE `s1`;
INSERTINTO `t1` (`b`) VALUES ('a');
INSERTINTO `t1` (`b`) VALUES ('b'), ('c');
INSERTINTO `t1` (`b`) VALUES ('d');
INSERTINTO `t1` (`b`)
SELECT `c`
FROM (
SELECT'e' `c`
UNION
SELECT'f' `c`
UNION
SELECT'g' `c`
) `der`;
SELECT
`a`, `b`
FROM
`t1`;
Result:
VERSION()
10.6.9-MariaDB-1:10.6.9+maria~deb11
Table
Create Table
s1
CREATE TABLE `s1` (
`next_not_cached_value` bigint(21) NOT NULL,
`minimum_value` bigint(21) NOT NULL,
`maximum_value` bigint(21) NOT NULL,
`start_value` bigint(21) NOT NULL COMMENT 'start value when sequences is created or value if RESTART is used',
`increment` bigint(21) NOT NULL COMMENT 'increment value',
`cache_size` bigint(21) unsigned NOT NULL,
`cycle_option` tinyint(1) unsigned NOT NULL COMMENT '0 if no cycles are allowed, 1 if the sequence should begin a new cycle when maximum_value is passed',
`cycle_count` bigint(21) NOT NULL COMMENT 'How many cycles have been done'
) ENGINE=InnoDB SEQUENCE=1
#2 0x00000000007e5729 in Item::save_int_in_field (this=0x7f1af0042658, field=0x0, no_conversions=false) at /home/dan/repos/mariadb-server-10.3/sql/item.cc:7002
nr = <optimized out>
#3 Type_handler_int_result::Item_save_in_field (this=<optimized out>, item=0x7f1af0042658, field=0x0, no_conversions=false) at /home/dan/repos/mariadb-server-10.3/sql/sql_type.cc:2596
No locals.
#4 0x00000000008acf2e in Item::save_in_field (this=0x7f1af0058010, field=0x7f1af00554e8, no_conversions=false) at /home/dan/repos/mariadb-server-10.3/sql/item.cc:7012
error = <optimized out>
#5 0x00000000007551fe in TABLE::update_default_fields (this=0x7f1af0056888, ignore_errors=true) at /home/dan/repos/mariadb-server-10.3/sql/table.cc:8226
#6 0x000000000061c924 in fill_record (thd=0x7f1af0000c58, table_arg=0x7f1af0056888, fields=@0x7f1af0005720: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x7f1af0012040, last = 0x7f1af0012168, elements = 2}, <No data fields>}, values=<optimized out>, ignore_errors=true, update=false) at /home/dan/repos/mariadb-server-10.3/sql/sql_base.cc:8497
f = {<base_list_iterator> = {list = <optimized out>, el = 0x1538fe0 <end_of_list>, prev = <synthetic pointer>, current = <synthetic pointer>}, <No data fields>}
v = {<base_list_iterator> = {list = <optimized out>, el = 0x7f1af00123c8, prev = <synthetic pointer>, current = <synthetic pointer>}, <No data fields>}
only_unvers_fields = <optimized out>
save_no_errors = false
save_abort_on_warning = true
fld = <optimized out>
value = <optimized out>
rfield = <optimized out>
table = <optimized out>
field = <optimized out>
#7 0x000000000061cbde in fill_record_n_invoke_before_triggers (thd=0x7f1af003dcd0, table=0x7f1af0042658, fields=<error reading variable: Cannot access memory at address 0x0>, values=@0x7f1b5c134dac: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x0, last = 0x0, elements = 0}, <No data fields>}, ignore_errors=true, event=TRG_EVENT_INSERT) at /home/dan/repos/mariadb-server-10.3/sql/sql_base.cc:8632
triggers = 0x0
result = <optimized out>
#8 0x000000000064f443 in select_insert::send_data (this=0x7f1af0014368, values=@0x7f1af0042658: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x7f1af003c3b0, last = 0x7f1af0043530, elements = 4026824392}, <No data fields>}) at /home/dan/repos/mariadb-server-10.3/sql/sql_insert.cc:3931
error = false
#9 0x00000000006b027e in end_send (join=0x7f1af0014418, join_tab=0x7f1af0016eb0, end_of_records=<optimized out>) at /home/dan/repos/mariadb-server-10.3/sql/sql_select.cc:21118
error = <optimized out>
fields = 0x7f1af0005208
#10 0x00000000007b0e40 in JOIN_CACHE::generate_full_extensions (this=0x7f1af00606f8, rec_ptr=0x7f1af00642ce "\374\001a\001") at /home/dan/repos/mariadb-server-10.3/sql/sql_join_cache.cc:2470
res = 0
rc = NESTED_LOOP_OK
#11 0x00000000007b0cc7 in JOIN_CACHE::join_matching_records (this=0x7f1af00606f8, skip_last=<optimized out>) at /home/dan/repos/mariadb-server-10.3/sql/sql_join_cache.cc:2362
rec_ptr = <optimized out>
rc = <optimized out>
check_only_first_match = <optimized out>
outer_join_first_inner = false
error = <optimized out>
#12 0x00000000007b09be in JOIN_CACHE::join_records (this=0x7f1af00606f8, skip_last=false) at /home/dan/repos/mariadb-server-10.3/sql/sql_join_cache.cc:2147
rc = NESTED_LOOP_OK
outer_join_first_inner = false
tab = <optimized out>
#13 0x00000000006d4964 in sub_select_cache (join=0x7f1af0014418, join_tab=0x7f1af0016b20, end_of_records=false) at /home/dan/repos/mariadb-server-10.3/sql/sql_select.cc:19712
cache = 0x7f1af00606f8
rc = <optimized out>
#14 0x00000000006afea6 in do_select (join=0x7f1af0014418, procedure=<optimized out>) at /home/dan/repos/mariadb-server-10.3/sql/sql_select.cc:19472
join_tab = 0x7f1af0016790
rc = 0
error = <optimized out>
#15 0x00000000006af733 in JOIN::exec_inner (this=0x7f1af0014418) at /home/dan/repos/mariadb-server-10.3/sql/sql_select.cc:4171
columns_list = 0x7f1af0005208
#16 0x00000000006ab87d in JOIN::exec (this=0x7f1af0014418) at /home/dan/repos/mariadb-server-10.3/sql/sql_select.cc:3965
#18 0x00000000006ab240 in handle_select (thd=0x7f1af0000c58, lex=0x7f1af0004888, result=0x7f1af0014368, setup_tables_done_option=<optimized out>) at /home/dan/repos/mariadb-server-10.3/sql/sql_select.cc:372
unit = <optimized out>
select_lex = 0x7f1af00050e0
res = <optimized out>
#19 0x000000000067edae in mysql_execute_command (thd=0x7f1af0000c58) at /home/dan/repos/mariadb-server-10.3/sql/sql_parse.cc:4621
second_table = <optimized out>
sel_result = 0x7f1af0014368
explain = <optimized out>
res = <optimized out>
up_result = 0
lex = 0x7f1af0004888
select_lex = <optimized out>
first_table = 0x7f1af00118c0
unit = 0x7f1af0004948
have_table_map_for_update = <optimized out>
all_tables = <optimized out>
rpl_filter = <optimized out>
orig_binlog_format = <optimized out>
orig_current_stmt_binlog_format = <optimized out>
error = <optimized out>
wsrep_error_label = <optimized out>
#20 0x0000000000679637 in mysql_parse (thd=0x7f1af0000c58, rawbuf=0x7f1af0011720 "INSERT INTO T2(T1_ID,NAME) SELECT t1.T1_ID , t2.NAME FROM TEMP_T2 AS t2 INNER JOIN T1 AS t1 ON t2.T1_NAME =t1.SHORT_NAME", length=123, parser_state=0x7f1b5c135680, is_com_multi=<optimized out>, is_next_command=false) at /home/dan/repos/mariadb-server-10.3/sql/sql_parse.cc:7871
found_semicolon = <optimized out>
error = <optimized out>
lex = 0x7f1af0004888
err = false
#21 0x0000000000676cda in dispatch_command (command=COM_QUERY, thd=0x7f1af0000c58, packet=0x7f1af0007399 "INSERT INTO T2(T1_ID,NAME) SELECT t1.T1_ID , t2.NAME FROM TEMP_T2 AS t2 INNER JOIN T1 AS t1 ON t2.T1_NAME =t1.SHORT_NAME", packet_length=123, is_com_multi=false, is_next_command=false) at /home/dan/repos/mariadb-server-10.3/sql/sql_parse.cc:1852
#2 0x00000000007e5729 in Item::save_int_in_field (this=0x7f1af0042658, field=0x0, no_conversions=false) at /home/dan/repos/mariadb-server-10.3/sql/item.cc:7002
nr = <optimized out>
#3 Type_handler_int_result::Item_save_in_field (this=<optimized out>, item=0x7f1af0042658, field=0x0, no_conversions=false) at /home/dan/repos/mariadb-server-10.3/sql/sql_type.cc:2596
No locals.
#4 0x00000000008acf2e in Item::save_in_field (this=0x7f1af0058010, field=0x7f1af00554e8, no_conversions=false) at /home/dan/repos/mariadb-server-10.3/sql/item.cc:7012
error = <optimized out>
#5 0x00000000007551fe in TABLE::update_default_fields (this=0x7f1af0056888, ignore_errors=false) at /home/dan/repos/mariadb-server-10.3/sql/table.cc:8226
#6 0x000000000064f460 in select_insert::send_data (this=0x7f1af0014368, values=<optimized out>) at /home/dan/repos/mariadb-server-10.3/sql/sql_insert.cc:3933
error = false
#7 0x00000000006b027e in end_send (join=0x7f1af0014418, join_tab=0x7f1af0016eb0, end_of_records=<optimized out>) at /home/dan/repos/mariadb-server-10.3/sql/sql_select.cc:21118
error = <optimized out>
fields = 0x7f1af0005208
#8 0x00000000007b0e40 in JOIN_CACHE::generate_full_extensions (this=0x7f1af00606f8, rec_ptr=0x7f1af00642ce "\374\001a\001") at /home/dan/repos/mariadb-server-10.3/sql/sql_join_cache.cc:2470
res = 0
rc = NESTED_LOOP_OK
#9 0x00000000007b0cc7 in JOIN_CACHE::join_matching_records (this=0x7f1af00606f8, skip_last=<optimized out>) at /home/dan/repos/mariadb-server-10.3/sql/sql_join_cache.cc:2362
rec_ptr = <optimized out>
rc = <optimized out>
check_only_first_match = <optimized out>
outer_join_first_inner = false
error = <optimized out>
#10 0x00000000007b09be in JOIN_CACHE::join_records (this=0x7f1af00606f8, skip_last=false) at /home/dan/repos/mariadb-server-10.3/sql/sql_join_cache.cc:2147
rc = NESTED_LOOP_OK
outer_join_first_inner = false
tab = <optimized out>
#11 0x00000000006d4964 in sub_select_cache (join=0x7f1af0014418, join_tab=0x7f1af0016b20, end_of_records=false) at /home/dan/repos/mariadb-server-10.3/sql/sql_select.cc:19712
cache = 0x7f1af00606f8
rc = <optimized out>
#12 0x00000000006afea6 in do_select (join=0x7f1af0014418, procedure=<optimized out>) at /home/dan/repos/mariadb-server-10.3/sql/sql_select.cc:19472
join_tab = 0x7f1af0016790
rc = 0
error = <optimized out>
#13 0x00000000006af733 in JOIN::exec_inner (this=0x7f1af0014418) at /home/dan/repos/mariadb-server-10.3/sql/sql_select.cc:4171
columns_list = 0x7f1af0005208
#14 0x00000000006ab87d in JOIN::exec (this=0x7f1af0014418) at /home/dan/repos/mariadb-server-10.3/sql/sql_select.cc:3965
#16 0x00000000006ab240 in handle_select (thd=0x7f1af0000c58, lex=0x7f1af0004888, result=0x7f1af0014368, setup_tables_done_option=<optimized out>) at /home/dan/repos/mariadb-server-10.3/sql/sql_select.cc:372
unit = <optimized out>
select_lex = 0x7f1af00050e0
res = <optimized out>
#17 0x000000000067edae in mysql_execute_command (thd=0x7f1af0000c58) at /home/dan/repos/mariadb-server-10.3/sql/sql_parse.cc:4621
second_table = <optimized out>
sel_result = 0x7f1af0014368
explain = <optimized out>
res = <optimized out>
up_result = 0
lex = 0x7f1af0004888
select_lex = <optimized out>
first_table = 0x7f1af00118c0
unit = 0x7f1af0004948
have_table_map_for_update = <optimized out>
all_tables = <optimized out>
rpl_filter = <optimized out>
orig_binlog_format = <optimized out>
orig_current_stmt_binlog_format = <optimized out>
error = <optimized out>
wsrep_error_label = <optimized out>
#18 0x0000000000679637 in mysql_parse (thd=0x7f1af0000c58, rawbuf=0x7f1af0011720 "INSERT INTO T2(T1_ID,NAME) SELECT t1.T1_ID , t2.NAME FROM TEMP_T2 AS t2 INNER JOIN T1 AS t1 ON t2.T1_NAME =t1.SHORT_NAME", length=123, parser_state=0x7f1b5c135680, is_com_multi=<optimized out>, is_next_command=false) at /home/dan/repos/mariadb-server-10.3/sql/sql_parse.cc:7871
found_semicolon = <optimized out>
error = <optimized out>
lex = 0x7f1af0004888
err = false
#19 0x0000000000676cda in dispatch_command (command=COM_QUERY, thd=0x7f1af0000c58, packet=0x7f1af0007399 "INSERT INTO T2(T1_ID,NAME) SELECT t1.T1_ID , t2.NAME FROM TEMP_T2 AS t2 INNER JOIN T1 AS t1 ON t2.T1_NAME =t1.SHORT_NAME", packet_length=123, is_com_multi=false, is_next_command=false) at /home/dan/repos/mariadb-server-10.3/sql/sql_parse.cc:1852
Please rename the name of the store_value newly added parameter to ignore_errors for clarity.
Notes for posterity:
The patch introduces a change in behavior of the form:
fill_record called via fill_recond_n_invoke_before_trigger used to always be invoked with ignore_errors set to true. With this change, that is no longer the case. I am unable to figure out a test case that showcases this. danblack if you manage to, it's best to add it into the test suite. Nonetheless this is not part of this patch.
Vicențiu Ciorbaru
added a comment - Ok to push with 1 comment:
Please rename the name of the store_value newly added parameter to ignore_errors for clarity.
Notes for posterity:
The patch introduces a change in behavior of the form:
fill_record called via fill_recond_n_invoke_before_trigger used to always be invoked with ignore_errors set to true. With this change, that is no longer the case. I am unable to figure out a test case that showcases this. danblack if you manage to, it's best to add it into the test suite. Nonetheless this is not part of this patch.
Tracing the SO problem by executing the INSERT SELECT at the end a second time.
test on mariadb-10.3-32bab2ce0518d829b4f97a272fc2431169744c75
first retrieval breakpoint SEQUENCE::next_value
Thread 31 "mysqld" hit Breakpoint 1, SEQUENCE::next_value (this=0x7f1af003dcd0, table=0x7f1af0042658, second_round=false, error=0x7f1b5c134dac) at /home/dan/repos/mariadb-server-10.3/sql/sql_sequence.cc:707
707 THD *thd= table->in_use;
(gdb) bt full
#0 SEQUENCE::next_value (this=0x7f1af003dcd0, table=0x7f1af0042658, second_round=false, error=0x7f1b5c134dac) at /home/dan/repos/mariadb-server-10.3/sql/sql_sequence.cc:707
thd = <optimized out>
res_value = <optimized out>
org_reserved_until = <optimized out>
add_to = <optimized out>
out_of_values = <optimized out>
#1 0x000000000091dcc3 in Item_func_nextval::val_int (this=0x7f1af0058010) at /home/dan/repos/mariadb-server-10.3/sql/item_func.cc:6842
buff = "\000\000\000\000\000\000\000\000~Ă‹\000\000\000\000\000 N\001\360\032\177\000\000\320\350p\000\000\000\000\000\310v\004\360\032\177\000\000(\b\006\360\032\177\000\000\250\005\006\360\032\177\000\000\235\230z\000\000\000\000\000\340*\001\360\032\177\000\000S\022{\000\000\000\000"
key_buff = {<Sql_alloc> = {<No data fields>}, Ptr = 0x7f1b5c134dc0 "", str_length = 80, Alloced_length = 80, extra_alloc = 0, alloced = false, thread_specific = false, str_charset = 0x153caa0 <my_charset_bin>}
length = 8
thd = <optimized out>
key = <optimized out>
entry = 0x7f1af004ec10
value = <optimized out>
error = <optimized out>
#2 0x00000000007e5729 in Item::save_int_in_field (this=0x7f1af0042658, field=0x0, no_conversions=false) at /home/dan/repos/mariadb-server-10.3/sql/item.cc:7002
nr = <optimized out>
#3 Type_handler_int_result::Item_save_in_field (this=<optimized out>, item=0x7f1af0042658, field=0x0, no_conversions=false) at /home/dan/repos/mariadb-server-10.3/sql/sql_type.cc:2596
No locals.
#4 0x00000000008acf2e in Item::save_in_field (this=0x7f1af0058010, field=0x7f1af00554e8, no_conversions=false) at /home/dan/repos/mariadb-server-10.3/sql/item.cc:7012
error = <optimized out>
#5 0x00000000007551fe in TABLE::update_default_fields (this=0x7f1af0056888, ignore_errors=true) at /home/dan/repos/mariadb-server-10.3/sql/table.cc:8226
field = 0x7f1af00554e8
res = 0
backup_arena = {_vptr$Query_arena = <optimized out>, free_list = 0x7f1af0060440, mem_root = 0x7f1af0006000, state = Query_arena::STMT_CONVENTIONAL_EXECUTION}
field_ptr = 0x7f1af00555c8
#6 0x000000000061c924 in fill_record (thd=0x7f1af0000c58, table_arg=0x7f1af0056888, fields=@0x7f1af0005720: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x7f1af0012040, last = 0x7f1af0012168, elements = 2}, <No data fields>}, values=<optimized out>, ignore_errors=true, update=false) at /home/dan/repos/mariadb-server-10.3/sql/sql_base.cc:8497
f = {<base_list_iterator> = {list = <optimized out>, el = 0x1538fe0 <end_of_list>, prev = <synthetic pointer>, current = <synthetic pointer>}, <No data fields>}
v = {<base_list_iterator> = {list = <optimized out>, el = 0x7f1af00123c8, prev = <synthetic pointer>, current = <synthetic pointer>}, <No data fields>}
only_unvers_fields = <optimized out>
save_no_errors = false
save_abort_on_warning = true
fld = <optimized out>
value = <optimized out>
rfield = <optimized out>
table = <optimized out>
field = <optimized out>
#7 0x000000000061cbde in fill_record_n_invoke_before_triggers (thd=0x7f1af003dcd0, table=0x7f1af0042658, fields=<error reading variable: Cannot access memory at address 0x0>, values=@0x7f1b5c134dac: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x0, last = 0x0, elements = 0}, <No data fields>}, ignore_errors=true, event=TRG_EVENT_INSERT) at /home/dan/repos/mariadb-server-10.3/sql/sql_base.cc:8632
triggers = 0x0
result = <optimized out>
#8 0x000000000064f443 in select_insert::send_data (this=0x7f1af0014368, values=@0x7f1af0042658: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x7f1af003c3b0, last = 0x7f1af0043530, elements = 4026824392}, <No data fields>}) at /home/dan/repos/mariadb-server-10.3/sql/sql_insert.cc:3931
error = false
#9 0x00000000006b027e in end_send (join=0x7f1af0014418, join_tab=0x7f1af0016eb0, end_of_records=<optimized out>) at /home/dan/repos/mariadb-server-10.3/sql/sql_select.cc:21118
error = <optimized out>
fields = 0x7f1af0005208
#10 0x00000000007b0e40 in JOIN_CACHE::generate_full_extensions (this=0x7f1af00606f8, rec_ptr=0x7f1af00642ce "\374\001a\001") at /home/dan/repos/mariadb-server-10.3/sql/sql_join_cache.cc:2470
res = 0
rc = NESTED_LOOP_OK
#11 0x00000000007b0cc7 in JOIN_CACHE::join_matching_records (this=0x7f1af00606f8, skip_last=<optimized out>) at /home/dan/repos/mariadb-server-10.3/sql/sql_join_cache.cc:2362
rec_ptr = <optimized out>
rc = <optimized out>
check_only_first_match = <optimized out>
outer_join_first_inner = false
error = <optimized out>
#12 0x00000000007b09be in JOIN_CACHE::join_records (this=0x7f1af00606f8, skip_last=false) at /home/dan/repos/mariadb-server-10.3/sql/sql_join_cache.cc:2147
rc = NESTED_LOOP_OK
outer_join_first_inner = false
tab = <optimized out>
#13 0x00000000006d4964 in sub_select_cache (join=0x7f1af0014418, join_tab=0x7f1af0016b20, end_of_records=false) at /home/dan/repos/mariadb-server-10.3/sql/sql_select.cc:19712
cache = 0x7f1af00606f8
rc = <optimized out>
#14 0x00000000006afea6 in do_select (join=0x7f1af0014418, procedure=<optimized out>) at /home/dan/repos/mariadb-server-10.3/sql/sql_select.cc:19472
join_tab = 0x7f1af0016790
rc = 0
error = <optimized out>
#15 0x00000000006af733 in JOIN::exec_inner (this=0x7f1af0014418) at /home/dan/repos/mariadb-server-10.3/sql/sql_select.cc:4171
columns_list = 0x7f1af0005208
#16 0x00000000006ab87d in JOIN::exec (this=0x7f1af0014418) at /home/dan/repos/mariadb-server-10.3/sql/sql_select.cc:3965
No locals.
#17 mysql_select (thd=0x7f1af0000c58, tables=<optimized out>, wild_num=<optimized out>, fields=<optimized out>, conds=<optimized out>, og_num=<optimized out>, order=<optimized out>, group=<optimized out>, having=<optimized out>, proc_param=<optimized out>, select_options=<optimized out>, result=<optimized out>, unit=<optimized out>, select_lex=<optimized out>) at /home/dan/repos/mariadb-server-10.3/sql/sql_select.cc:4374
err = <optimized out>
free_join = true
join = 0x7f1af0014418
#18 0x00000000006ab240 in handle_select (thd=0x7f1af0000c58, lex=0x7f1af0004888, result=0x7f1af0014368, setup_tables_done_option=<optimized out>) at /home/dan/repos/mariadb-server-10.3/sql/sql_select.cc:372
unit = <optimized out>
select_lex = 0x7f1af00050e0
res = <optimized out>
#19 0x000000000067edae in mysql_execute_command (thd=0x7f1af0000c58) at /home/dan/repos/mariadb-server-10.3/sql/sql_parse.cc:4621
second_table = <optimized out>
sel_result = 0x7f1af0014368
explain = <optimized out>
res = <optimized out>
up_result = 0
lex = 0x7f1af0004888
select_lex = <optimized out>
first_table = 0x7f1af00118c0
unit = 0x7f1af0004948
have_table_map_for_update = <optimized out>
all_tables = <optimized out>
rpl_filter = <optimized out>
orig_binlog_format = <optimized out>
orig_current_stmt_binlog_format = <optimized out>
error = <optimized out>
wsrep_error_label = <optimized out>
#20 0x0000000000679637 in mysql_parse (thd=0x7f1af0000c58, rawbuf=0x7f1af0011720 "INSERT INTO T2(T1_ID,NAME) SELECT t1.T1_ID , t2.NAME FROM TEMP_T2 AS t2 INNER JOIN T1 AS t1 ON t2.T1_NAME =t1.SHORT_NAME", length=123, parser_state=0x7f1b5c135680, is_com_multi=<optimized out>, is_next_command=false) at /home/dan/repos/mariadb-server-10.3/sql/sql_parse.cc:7871
found_semicolon = <optimized out>
error = <optimized out>
lex = 0x7f1af0004888
err = false
#21 0x0000000000676cda in dispatch_command (command=COM_QUERY, thd=0x7f1af0000c58, packet=0x7f1af0007399 "INSERT INTO T2(T1_ID,NAME) SELECT t1.T1_ID , t2.NAME FROM TEMP_T2 AS t2 INNER JOIN T1 AS t1 ON t2.T1_NAME =t1.SHORT_NAME", packet_length=123, is_com_multi=false, is_next_command=false) at /home/dan/repos/mariadb-server-10.3/sql/sql_parse.cc:1852
parser_state = {m_lip = {lookahead_token = -1, lookahead_yylval = 0x0, m_thd = 0x7f1af0000c58, m_ptr = 0x7f1af001179c "\004", m_tok_start = 0x7f1af001179c "\004", m_tok_end = 0x7f1af001179c "\004", m_end_of_query = 0x7f1af001179b "", m_tok_start_prev = 0x7f1af001179b "", m_buf = 0x7f1af0011720 "INSERT INTO T2(T1_ID,NAME) SELECT t1.T1_ID , t2.NAME FROM TEMP_T2 AS t2 INNER JOIN T1 AS t1 ON t2.T1_NAME =t1.SHORT_NAME", m_buf_length = 123, m_echo = true, m_echo_saved = false, m_cpp_buf = 0x7f1af00117f8 "INSERT INTO T2(T1_ID,NAME) SELECT t1.T1_ID , t2.NAME FROM TEMP_T2 AS t2 INNER JOIN T1 AS t1 ON t2.T1_NAME =t1.SHORT_NAME", m_cpp_ptr = 0x7f1af0011873 "", m_cpp_tok_start = 0x7f1af0011873 "", m_cpp_tok_start_prev = 0x7f1af0011873 "", m_cpp_tok_end = 0x7f1af0011873 "", m_body_utf8 = 0x0, m_body_utf8_ptr = 0x0, m_cpp_utf8_processed_ptr = 0x0, next_state = MY_LEX_END, found_semicolon = 0x0, ignore_space = false, stmt_prepare_mode = false, multi_statements = true, yylineno = 1, m_digest = 0x0, in_comment = NO_COMMENT, in_comment_saved = NO_COMMENT, m_cpp_text_start = 0x7f1af0011869 "SHORT_NAME", m_cpp_text_end = 0x7f1af0011873 "", m_underscore_cs = 0x0}, m_yacc = {yacc_yyss = 0x0, yacc_yyvs = 0x0, m_set_signal_info = {m_item = {0x0 <repeats 12 times>}}, m_lock_type = TL_READ_DEFAULT, m_mdl_type = MDL_SHARED_READ}, m_digest_psi = 0x0}
packet_end = <optimized out>
net = <optimized out>
error = false
do_end_of_statement = true
drop_more_results = false
#22 0x0000000000684cd7 in do_command (thd=0x7f1af0000c58) at /home/dan/repos/mariadb-server-10.3/sql/sql_parse.cc:1398
packet = <optimized out>
packet_length = <optimized out>
net = <optimized out>
command = COM_QUERY
return_value = <optimized out>
#23 0x00000000007855b2 in do_handle_one_connection (connect=<optimized out>) at /home/dan/repos/mariadb-server-10.3/sql/sql_connect.cc:1403
create_user = true
thr_create_utime = <optimized out>
thd = <optimized out>
#24 0x0000000000785383 in handle_one_connection (arg=0x2a5d538) at /home/dan/repos/mariadb-server-10.3/sql/sql_connect.cc:1308
connect = 0x2a5d538
#25 0x00007f1b5d68ce2d in start_thread () from /lib64/libc.so.6
No symbol table info available.
#26 0x00007f1b5d7121b0 in clone3 () from /lib64/libc.so.6
No symbol table info available.
(gdb) p *this
$1 = {<sequence_definition> = {<Sql_alloc> = {<No data fields>}, reserved_until = 1001, min_value = 1, max_value = 9223372036854775806, start = 1, increment = 1, cache = 1000, round = 0, restart = 0, cycle = false, used_fields = 63, real_increment = 1, next_free_value = 7}, all_values_used = false, initialized = SEQUENCE::SEQ_READY_TO_USE, mutex = {m_rwlock = {__data = {__readers = 1, __writers = 0, __wrphase_futex = 1, __writers_futex = 0, __pad3 = 0, __pad4 = 0, __cur_writer = 0, __shared = 0, __rwelision = 0 '\000', __pad1 = "\000\000\000\000\000\000", __pad2 = 0, __flags = 0}, __size = "\001\000\000\000\000\000\000\000\001", '\000' <repeats 46 times>, __align = 1}, m_psi = 0x0}}
(gdb) c
Continuing.
sql/sql_insert.cc:3931 (select_insert::send_data) invokes fill_record_n_invoke_before_triggers which populates defaults.
second occurance on breakpoint breakpoint SEQUENCE::next_value
Thread 31 "mysqld" hit Breakpoint 1, SEQUENCE::next_value (this=0x7f1af003dcd0, table=0x7f1af0042658, second_round=false, error=0x7f1b5c134e4c) at /home/dan/repos/mariadb-server-10.3/sql/sql_sequence.cc:707
707 THD *thd= table->in_use;
(gdb) bt full
#0 SEQUENCE::next_value (this=0x7f1af003dcd0, table=0x7f1af0042658, second_round=false, error=0x7f1b5c134e4c) at /home/dan/repos/mariadb-server-10.3/sql/sql_sequence.cc:707
thd = <optimized out>
res_value = <optimized out>
org_reserved_until = <optimized out>
add_to = <optimized out>
out_of_values = <optimized out>
#1 0x000000000091dcc3 in Item_func_nextval::val_int (this=0x7f1af0058010) at /home/dan/repos/mariadb-server-10.3/sql/item_func.cc:6842
buff = "\350T\005\360\032\177\000\000.ĎŠ\000\000\000\000\000h\214\a\001\000\000\000\000\210h\005\360\032\177\000\000\001\000\000\000\000\000\000\000\320U\005\360\032\177\000\000\350T\005\360\032\177\000\000\376Qu\000\000\000\000\000\000`\000\360\032\177\000\000\310#\001\360\032\177\000"
key_buff = {<Sql_alloc> = {<No data fields>}, Ptr = 0x7f1b5c134e60 "\350T\005\360\032\177", str_length = 80, Alloced_length = 80, extra_alloc = 0, alloced = false, thread_specific = false, str_charset = 0x153caa0 <my_charset_bin>}
length = 8
thd = <optimized out>
key = <optimized out>
entry = 0x7f1af004ec10
value = <optimized out>
error = <optimized out>
#2 0x00000000007e5729 in Item::save_int_in_field (this=0x7f1af0042658, field=0x0, no_conversions=false) at /home/dan/repos/mariadb-server-10.3/sql/item.cc:7002
nr = <optimized out>
#3 Type_handler_int_result::Item_save_in_field (this=<optimized out>, item=0x7f1af0042658, field=0x0, no_conversions=false) at /home/dan/repos/mariadb-server-10.3/sql/sql_type.cc:2596
No locals.
#4 0x00000000008acf2e in Item::save_in_field (this=0x7f1af0058010, field=0x7f1af00554e8, no_conversions=false) at /home/dan/repos/mariadb-server-10.3/sql/item.cc:7012
error = <optimized out>
#5 0x00000000007551fe in TABLE::update_default_fields (this=0x7f1af0056888, ignore_errors=false) at /home/dan/repos/mariadb-server-10.3/sql/table.cc:8226
field = 0x7f1af00554e8
res = 0
backup_arena = {_vptr$Query_arena = <optimized out>, free_list = 0x7f1af0060440, mem_root = 0x7f1af0006000, state = Query_arena::STMT_CONVENTIONAL_EXECUTION}
field_ptr = 0x7f1af00555c8
#6 0x000000000064f460 in select_insert::send_data (this=0x7f1af0014368, values=<optimized out>) at /home/dan/repos/mariadb-server-10.3/sql/sql_insert.cc:3933
error = false
#7 0x00000000006b027e in end_send (join=0x7f1af0014418, join_tab=0x7f1af0016eb0, end_of_records=<optimized out>) at /home/dan/repos/mariadb-server-10.3/sql/sql_select.cc:21118
error = <optimized out>
fields = 0x7f1af0005208
#8 0x00000000007b0e40 in JOIN_CACHE::generate_full_extensions (this=0x7f1af00606f8, rec_ptr=0x7f1af00642ce "\374\001a\001") at /home/dan/repos/mariadb-server-10.3/sql/sql_join_cache.cc:2470
res = 0
rc = NESTED_LOOP_OK
#9 0x00000000007b0cc7 in JOIN_CACHE::join_matching_records (this=0x7f1af00606f8, skip_last=<optimized out>) at /home/dan/repos/mariadb-server-10.3/sql/sql_join_cache.cc:2362
rec_ptr = <optimized out>
rc = <optimized out>
check_only_first_match = <optimized out>
outer_join_first_inner = false
error = <optimized out>
#10 0x00000000007b09be in JOIN_CACHE::join_records (this=0x7f1af00606f8, skip_last=false) at /home/dan/repos/mariadb-server-10.3/sql/sql_join_cache.cc:2147
rc = NESTED_LOOP_OK
outer_join_first_inner = false
tab = <optimized out>
#11 0x00000000006d4964 in sub_select_cache (join=0x7f1af0014418, join_tab=0x7f1af0016b20, end_of_records=false) at /home/dan/repos/mariadb-server-10.3/sql/sql_select.cc:19712
cache = 0x7f1af00606f8
rc = <optimized out>
#12 0x00000000006afea6 in do_select (join=0x7f1af0014418, procedure=<optimized out>) at /home/dan/repos/mariadb-server-10.3/sql/sql_select.cc:19472
join_tab = 0x7f1af0016790
rc = 0
error = <optimized out>
#13 0x00000000006af733 in JOIN::exec_inner (this=0x7f1af0014418) at /home/dan/repos/mariadb-server-10.3/sql/sql_select.cc:4171
columns_list = 0x7f1af0005208
#14 0x00000000006ab87d in JOIN::exec (this=0x7f1af0014418) at /home/dan/repos/mariadb-server-10.3/sql/sql_select.cc:3965
No locals.
#15 mysql_select (thd=0x7f1af0000c58, tables=<optimized out>, wild_num=<optimized out>, fields=<optimized out>, conds=<optimized out>, og_num=<optimized out>, order=<optimized out>, group=<optimized out>, having=<optimized out>, proc_param=<optimized out>, select_options=<optimized out>, result=<optimized out>, unit=<optimized out>, select_lex=<optimized out>) at /home/dan/repos/mariadb-server-10.3/sql/sql_select.cc:4374
err = <optimized out>
free_join = true
join = 0x7f1af0014418
#16 0x00000000006ab240 in handle_select (thd=0x7f1af0000c58, lex=0x7f1af0004888, result=0x7f1af0014368, setup_tables_done_option=<optimized out>) at /home/dan/repos/mariadb-server-10.3/sql/sql_select.cc:372
unit = <optimized out>
select_lex = 0x7f1af00050e0
res = <optimized out>
#17 0x000000000067edae in mysql_execute_command (thd=0x7f1af0000c58) at /home/dan/repos/mariadb-server-10.3/sql/sql_parse.cc:4621
second_table = <optimized out>
sel_result = 0x7f1af0014368
explain = <optimized out>
res = <optimized out>
up_result = 0
lex = 0x7f1af0004888
select_lex = <optimized out>
first_table = 0x7f1af00118c0
unit = 0x7f1af0004948
have_table_map_for_update = <optimized out>
all_tables = <optimized out>
rpl_filter = <optimized out>
orig_binlog_format = <optimized out>
orig_current_stmt_binlog_format = <optimized out>
error = <optimized out>
wsrep_error_label = <optimized out>
#18 0x0000000000679637 in mysql_parse (thd=0x7f1af0000c58, rawbuf=0x7f1af0011720 "INSERT INTO T2(T1_ID,NAME) SELECT t1.T1_ID , t2.NAME FROM TEMP_T2 AS t2 INNER JOIN T1 AS t1 ON t2.T1_NAME =t1.SHORT_NAME", length=123, parser_state=0x7f1b5c135680, is_com_multi=<optimized out>, is_next_command=false) at /home/dan/repos/mariadb-server-10.3/sql/sql_parse.cc:7871
found_semicolon = <optimized out>
error = <optimized out>
lex = 0x7f1af0004888
err = false
#19 0x0000000000676cda in dispatch_command (command=COM_QUERY, thd=0x7f1af0000c58, packet=0x7f1af0007399 "INSERT INTO T2(T1_ID,NAME) SELECT t1.T1_ID , t2.NAME FROM TEMP_T2 AS t2 INNER JOIN T1 AS t1 ON t2.T1_NAME =t1.SHORT_NAME", packet_length=123, is_com_multi=false, is_next_command=false) at /home/dan/repos/mariadb-server-10.3/sql/sql_parse.cc:1852
parser_state = {m_lip = {lookahead_token = -1, lookahead_yylval = 0x0, m_thd = 0x7f1af0000c58, m_ptr = 0x7f1af001179c "\004", m_tok_start = 0x7f1af001179c "\004", m_tok_end = 0x7f1af001179c "\004", m_end_of_query = 0x7f1af001179b "", m_tok_start_prev = 0x7f1af001179b "", m_buf = 0x7f1af0011720 "INSERT INTO T2(T1_ID,NAME) SELECT t1.T1_ID , t2.NAME FROM TEMP_T2 AS t2 INNER JOIN T1 AS t1 ON t2.T1_NAME =t1.SHORT_NAME", m_buf_length = 123, m_echo = true, m_echo_saved = false, m_cpp_buf = 0x7f1af00117f8 "INSERT INTO T2(T1_ID,NAME) SELECT t1.T1_ID , t2.NAME FROM TEMP_T2 AS t2 INNER JOIN T1 AS t1 ON t2.T1_NAME =t1.SHORT_NAME", m_cpp_ptr = 0x7f1af0011873 "", m_cpp_tok_start = 0x7f1af0011873 "", m_cpp_tok_start_prev = 0x7f1af0011873 "", m_cpp_tok_end = 0x7f1af0011873 "", m_body_utf8 = 0x0, m_body_utf8_ptr = 0x0, m_cpp_utf8_processed_ptr = 0x0, next_state = MY_LEX_END, found_semicolon = 0x0, ignore_space = false, stmt_prepare_mode = false, multi_statements = true, yylineno = 1, m_digest = 0x0, in_comment = NO_COMMENT, in_comment_saved = NO_COMMENT, m_cpp_text_start = 0x7f1af0011869 "SHORT_NAME", m_cpp_text_end = 0x7f1af0011873 "", m_underscore_cs = 0x0}, m_yacc = {yacc_yyss = 0x0, yacc_yyvs = 0x0, m_set_signal_info = {m_item = {0x0 <repeats 12 times>}}, m_lock_type = TL_READ_DEFAULT, m_mdl_type = MDL_SHARED_READ}, m_digest_psi = 0x0}
packet_end = <optimized out>
net = <optimized out>
error = false
do_end_of_statement = true
drop_more_results = false
#20 0x0000000000684cd7 in do_command (thd=0x7f1af0000c58) at /home/dan/repos/mariadb-server-10.3/sql/sql_parse.cc:1398
packet = <optimized out>
packet_length = <optimized out>
net = <optimized out>
command = COM_QUERY
return_value = <optimized out>
#21 0x00000000007855b2 in do_handle_one_connection (connect=<optimized out>) at /home/dan/repos/mariadb-server-10.3/sql/sql_connect.cc:1403
create_user = true
thr_create_utime = <optimized out>
thd = <optimized out>
#22 0x0000000000785383 in handle_one_connection (arg=0x2a5d538) at /home/dan/repos/mariadb-server-10.3/sql/sql_connect.cc:1308
connect = 0x2a5d538
#23 0x00007f1b5d68ce2d in start_thread () from /lib64/libc.so.6
No symbol table info available.
#24 0x00007f1b5d7121b0 in clone3 () from /lib64/libc.so.6
No symbol table info available.
(gdb) p *this
$2 = {<sequence_definition> = {<Sql_alloc> = {<No data fields>}, reserved_until = 1001, min_value = 1, max_value = 9223372036854775806, start = 1, increment = 1, cache = 1000, round = 0, restart = 0, cycle = false, used_fields = 63, real_increment = 1, next_free_value = 8}, all_values_used = false, initialized = SEQUENCE::SEQ_READY_TO_USE, mutex = {m_rwlock = {__data = {__readers = 1, __writers = 0, __wrphase_futex = 1, __writers_futex = 0, __pad3 = 0, __pad4 = 0, __cur_writer = 0, __shared = 0, __rwelision = 0 '\000', __pad1 = "\000\000\000\000\000\000", __pad2 = 0, __flags = 0}, __size = "\001\000\000\000\000\000\000\000\001", '\000' <repeats 46 times>, __align = 1}, m_psi = 0x0}}
sql/sql_insert.cc:3933, two lines after the first breakpoint, calls TABLE::update_default_fields updating the result a second time.