tempesta-tech / mariadb

MariaDB System Versioning
GNU General Public License v2.0
6 stars 5 forks source link

MDEV-16226 TRX_ID-based versioned tables performance improvement #314

Closed midenok closed 4 years ago

midenok commented 6 years ago

Objectives

  1. Make index used (see comments in code).

  2. Also as commented on TR_table::query():

    Allocations on every examined row. This memory won't be freed until the query end, right? So such query on a big table will eat too much memory. I don't think this code scales well. We need to create READ_RECORD and surrounding stuff once per query and reuse. Let it be future work. For now I suggest to add a comment or open and issue on that topic.

Reproduce

create or replace table i1 (
  x int,
  row_start bigint(20) unsigned as row start invisible,
  row_end bigint(20) unsigned as row end invisible,
  period for system_time (row_start, row_end))
with system versioning
engine innodb;

insert into i1 values (1);
set @t1= now(6);
delete from i1;
insert into i1 values (2);

select *, row_start, row_end from i1 for system_time as of timestamp @t1;

Expected

1 row with x == 1;

Variations (implementation approach)

  1. Utilize rr_quick() in make_select() (see below);
  2. Access TRT via fully-processed subquery (see below).

Approach 1. shows x2 performance boost, but absolute value is anyway too low, so it was chosen to use Approach 2.

Scripts

Approach 2. TODO

Days remaining: 20 - 25 - 30.

Description

Current performance of SELECT by timestamp from TRX_ID-based tables is very low due to linear scan of TRANSACTION_REGISTRY table when doing timestamp -> TRX_ID translation. Utilize join optimizer for querying TRANSACTION_REGISTRY:

  1. For each timestamped Vers_history_point selector forge TRANSACTION_REGISTRY subquery and add it to SELECT.

Example

Query

select *, row_start, row_end from i1 for system_time as of timestamp @t1;

is transformed into

select i1.x as x,
       i1.row_start as row_start,
       i1.row_end as row_end
from i1
for SYSTEM_TIME all
join (
   select transaction_id
   from mysql.transaction_registry
   where commit_timestamp <= @t1
   order by commit_timestamp desc
   limit 1
) __trt_0
where trt_trx_sees(i1.row_end, __trt_0.transaction_id)
  and trt_trx_sees_eq(__trt_0.transaction_id, i1.row_start)
  1. subquery must be excluded from wildcard expansion, i.e.
    select transaction_id from i1 for system_time as of timestamp @t1;

    must be resolved to i1.transaction_id.

midenok commented 6 years ago

Use index in make_select()

Break on make_select() at DESCRIBE t; See this branch (mysql_select()):

    /*
      When in EXPLAIN, delay deleting the joins so that they are still
      available when we're producing EXPLAIN EXTENDED warning text.
    */
    if (select_options & SELECT_DESCRIBE)
      free_join= 0;

    if (!(join= new (thd->mem_root) JOIN(thd, fields, select_options, result)))
    DBUG_RETURN(TRUE);
    THD_STAGE_INFO(thd, stage_init);
    thd->lex->used_tables=0;
    if ((err= join->prepare(tables, wild_num,
                            conds, og_num, order, false, group, having, proc_param,
                            select_lex, unit)))
    {
      goto err;
    }
#0  make_select (head=0x7fff7c08af98, const_tables=0, read_tables=0, conds=0x0, filesort=0x0, allow_null_cond=true, error=0x7fff7c0190e8) at /home/midenok/src/mariadb/review/src/sql/opt_range.cc:1172
#1  0x00000000007948cb in JOIN::optimize_stage2 (this=0x7fff7c018d00) at /home/midenok/src/mariadb/review/src/sql/sql_select.cc:2007
#2  0x00000000007989eb in JOIN::optimize_inner (this=0x7fff7c018d00) at /home/midenok/src/mariadb/review/src/sql/sql_select.cc:1916
#3  0x000000000079410c in JOIN::optimize (this=0x7fff7c018d00) at /home/midenok/src/mariadb/review/src/sql/sql_select.cc:1488
#4  0x000000000078cb0f in mysql_select (thd=0x7fff7c000d50, tables=0x7fff7c016c00, wild_num=0, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2684619520, result=0x7fff7c018ce0, unit=0x7fff7c004ac0, select_lex=0x7fff7c005220) at /home/midenok/src/mariadb/review/src/sql/sql_select.cc:4172
#5  0x000000000078c453 in handle_select (thd=0x7fff7c000d50, lex=0x7fff7c0049f8, result=0x7fff7c018ce0, setup_tables_done_option=0) at /home/midenok/src/mariadb/review/src/sql/sql_select.cc:368
#6  0x000000000074d76f in execute_sqlcom_select (thd=0x7fff7c000d50, all_tables=0x7fff7c016c00) at /home/midenok/src/mariadb/review/src/sql/sql_parse.cc:6503
#7  0x00000000007425e8 in mysql_execute_command (thd=0x7fff7c000d50) at /home/midenok/src/mariadb/review/src/sql/sql_parse.cc:3746
#8  0x000000000073d20f in mysql_parse (thd=0x7fff7c000d50, rawbuf=0x7fff7c0159a8 "describe t", length=10, parser_state=0x7fffe524d650, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/review/src/sql/sql_parse.cc:7959
midenok commented 6 years ago

See stacks from #406 to learn difference between rr_quick() and rr_sequential().

midenok commented 6 years ago
  rr_quick:
  ---------
    rr_quick uses one of the QUICK_SELECT classes in opt_range.cc to
    perform an index scan. There are loads of functionality hidden
    in these quick classes. It handles all index scans of various kinds.
bool init_read_record(READ_RECORD *info,THD *thd, TABLE *table,
              SQL_SELECT *select,
                      SORT_INFO *filesort,
              int use_record_cache, bool print_error, 
                      bool disable_rr_cache)
{
...
  else if (select && select->quick)
  {
    DBUG_PRINT("info",("using rr_quick"));
    info->read_record_func= rr_quick;
  }
...
  QUICK_SELECT_I *quick;    // If quick-select used
/*
  Quick select interface.
  This class is a parent for all QUICK_*_SELECT and FT_SELECT classes.

  The usage scenario is as follows:
  1. Create quick select
    quick= new QUICK_XXX_SELECT(...);

  2. Perform lightweight initialization. This can be done in 2 ways:
  2.a: Regular initialization
    if (quick->init())
    {
      //the only valid action after failed init() call is delete
      delete quick;
    }
  2.b: Special initialization for quick selects merged by QUICK_ROR_*_SELECT
    if (quick->init_ror_merged_scan())
      delete quick;

  3. Perform zero, one, or more scans.
    while (...)
    {
      // initialize quick select for scan. This may allocate
      // buffers and/or prefetch rows.
      if (quick->reset())
      {
        //the only valid action after failed reset() call is delete
        delete quick;
        //abort query
      }

      // perform the scan
      do
      {
        res= quick->get_next();
      } while (res && ...)
    }

  4. Delete the select:
    delete quick;

  NOTE 
    quick select doesn't use Sql_alloc/MEM_ROOT allocation because "range
    checked for each record" functionality may create/destroy
    O(#records_in_some_table) quick selects during query execution.
*/

Useful

/*
  Create a QUICK_RANGE_SELECT from given key and SEL_ARG tree for that key.
...
*/

QUICK_RANGE_SELECT *
get_quick_select(PARAM *param,uint idx,SEL_ARG *key_tree, uint mrr_flags,
                 uint mrr_buf_size, MEM_ROOT *parent_alloc)
midenok commented 6 years ago

SELECT using index

#0  get_quick_select (param=0x7fffe52a93c8, idx=0, key_tree=0x7fff7c098938, mrr_flags=76, mrr_buf_size=0, parent_alloc=0x0) at /home/midenok/src/mariadb/trunk/src/sql/opt_range.cc:10526
#1  0x0000000000cd33d9 in TRP_RANGE::make_quick (this=0x7fff7c098a38, param=0x7fffe52a93c8, retrieve_full_rows=true, parent_alloc=0x0) at /home/midenok/src/mariadb/trunk/src/sql/opt_range.cc:2114
#2  0x0000000000cadcbe in SQL_SELECT::test_quick_select (this=0x7fff7c016e80, thd=0x7fff7c000d50, keys_to_use=..., prev_tables=0, limit=18446744073709551615, force_quick_range=false, ordered_output=false, remove_false_parts_of_where=true) at /home/midenok/src/mariadb/trunk/src/sql/opt_range.cc:2679
#3  0x000000000083d48d in get_quick_record_count (thd=0x7fff7c000d50, select=0x7fff7c016e80, table=0x7fff7c057490, keys=0x7fff7c015d48, limit=18446744073709551615) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4240
#4  0x00000000007fef18 in make_join_statistics (join=0x7fff7c0145d0, tables_list=..., keyuse_array=0x7fff7c0148c0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4866
#5  0x00000000007f9893 in JOIN::optimize_inner (this=0x7fff7c0145d0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1899
#6  0x00000000007f50c5 in JOIN::optimize (this=0x7fff7c0145d0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1484
#7  0x00000000007ed76f in mysql_select (thd=0x7fff7c000d50, tables=0x7fff7c013b78, wild_num=1, fields=..., conds=0x7fff7c014388, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff7c0145b0, unit=0x7fff7c004b88, select_lex=0x7fff7c005300) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4189
#8  0x00000000007ed0b3 in handle_select (thd=0x7fff7c000d50, lex=0x7fff7c004ac0, result=0x7fff7c0145b0, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#9  0x00000000007ae9bf in execute_sqlcom_select (thd=0x7fff7c000d50, all_tables=0x7fff7c013b78) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6552
#10 0x00000000007a3820 in mysql_execute_command (thd=0x7fff7c000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3763
#11 0x000000000079e2e3 in mysql_parse (thd=0x7fff7c000d50, rawbuf=0x7fff7c013978 "select * from t1 where x = 4", length=28, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8009
midenok commented 6 years ago

Good

SELECT using rr_quick()

create or replace table t2 (                                                                                                                      
    auto int not null auto_increment,                                                                                                      
    fld1 int(6) unsigned zerofill default '000000' not null,                                                                               
    companynr tinyint(2) unsigned zerofill default '00' not null,                                                                          
    fld3 char(30) default '' not null,                                                                                                     
    fld4 char(35) default '' not null,                                                                                                     
    fld5 char(35) default '' not null,                                                                                                     
    fld6 char(4) default '' not null,                                                                                                      
    unique fld1 (fld1),                                                                                                                    
    key fld3 (fld3),                                                                                                                       
    primary key (auto)                                                                                                                     
);
...
INSERT INTO t2 VALUES (1136,118009,00,'exclaim','Italianization','honeysuckle','');
INSERT INTO t2 VALUES (5136,1118009,00,'exclaim','Italianization','honeysuckle','');
INSERT INTO t2 VALUES (1137,138011,00,'implicated','attendants','orphanage','');
INSERT INTO t2 VALUES (1138,138010,00,'distinguish','spies','skies','');
...
select t2.fld3 from t2 where fld3 LIKE 'honeysuckl_';
#0  rr_quick (info=0x7fffe0017680) at /home/midenok/src/mariadb/trunk/src/sql/records.cc:366
#1  0x00000000006fa53b in READ_RECORD::read_record (this=0x7fffe0017680) at /home/midenok/src/mariadb/trunk/src/sql/records.h:73
#2  0x000000000081e02c in join_init_read_record (tab=0x7fffe00175b8) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:20155
#3  0x00000000008394fa in sub_select (join=0x7fffe0015c30, join_tab=0x7fffe00175b8, end_of_records=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:19229
#4  0x0000000000821d28 in do_select (join=0x7fffe0015c30, procedure=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:18772
#5  0x0000000000820b1a in JOIN::exec_inner (this=0x7fffe0015c30) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:3987
#6  0x000000000081fc8e in JOIN::exec (this=0x7fffe0015c30) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:3781
#7  0x00000000007f79bc in mysql_select (thd=0x7fffe0000d50, tables=0x7fffe0015120, wild_num=0, fields=..., conds=0x7fffe00159f0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fffe0015c10, unit=0x7fffe0004b88, select_lex=0x7fffe0005300) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4186
#8  0x00000000007f7213 in handle_select (thd=0x7fffe0000d50, lex=0x7fffe0004ac0, result=0x7fffe0015c10, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#9  0x00000000007b8b1f in execute_sqlcom_select (thd=0x7fffe0000d50, all_tables=0x7fffe0015120) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6552
#10 0x00000000007ad980 in mysql_execute_command (thd=0x7fffe0000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3763
#11 0x00000000007a8443 in mysql_parse (thd=0x7fffe0000d50, rawbuf=0x7fffe0014ed8 "select t2.fld3 from t2 where fld3 LIKE 'honeysuckl_'", length=52, parser_state=0x7ffff01cf5e0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8009

Whether rr_quick() is used or not depends on how much data is contained in t2.

Bad

SELECT using join_read_first()/join_read_next()

#0  join_read_first (tab=0x7fff84016150) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:20202
#1  0x00000000008394fa in sub_select (join=0x7fff84014718, join_tab=0x7fff84016150, end_of_records=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:19229
#2  0x0000000000821d28 in do_select (join=0x7fff84014718, procedure=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:18772
#3  0x0000000000820b1a in JOIN::exec_inner (this=0x7fff84014718) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:3987
#4  0x000000000081fc8e in JOIN::exec (this=0x7fff84014718) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:3781
#5  0x00000000007f79bc in mysql_select (thd=0x7fff84000d50, tables=0x7fff84013bb0, wild_num=0, fields=..., conds=0x7fff84014468, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff840146f8, unit=0x7fff84004b88, select_lex=0x7fff84005300) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4186
#6  0x00000000007f7213 in handle_select (thd=0x7fff84000d50, lex=0x7fff84004ac0, result=0x7fff840146f8, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#7  0x00000000007b8b1f in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff84013bb0) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6552
#8  0x00000000007ad980 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3763
#9  0x00000000007a8443 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013978 "select fld3 from t3 where fld3 LIKE 'honeysuckl_'", length=49, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8009
#0  join_read_next (info=0x7fff84016198) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:20232
#1  0x00000000006fa53b in READ_RECORD::read_record (this=0x7fff84016198) at /home/midenok/src/mariadb/trunk/src/sql/records.h:73
#2  0x0000000000839648 in sub_select (join=0x7fff84014698, join_tab=0x7fff840160d0, end_of_records=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:19251

Cause

Not many records in table.

midenok commented 6 years ago

Good

1. read_first_record assigned to join_init_read_record()

#0  make_join_readinfo (join=0x7fff84014698, options=0, no_jbuf_after=1) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:12042
#1  0x000000000080121b in JOIN::optimize_stage2 (this=0x7fff84014698) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:2377
#2  0x0000000000803a5b in JOIN::optimize_inner (this=0x7fff84014698) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1895
#3  0x00000000007ff175 in JOIN::optimize (this=0x7fff84014698) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1467
#4  0x00000000007f78cf in mysql_select (thd=0x7fff84000d50, tables=0x7fff84013bb0, wild_num=0, fields=..., conds=0x7fff84014468, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff84014678, unit=0x7fff84004b88, select_lex=0x7fff84005300) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4172
#5  0x00000000007f7213 in handle_select (thd=0x7fff84000d50, lex=0x7fff84004ac0, result=0x7fff84014678, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#6  0x00000000007b8b1f in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff84013bb0) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6552
#7  0x00000000007ad980 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3763
#8  0x00000000007a8443 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013978 "select fld3 from t2 where fld3 LIKE 'honeysuckl_'", length=49, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8009
12023       case JT_ALL:
12024       case JT_HASH:
12025         /*
12026           If previous table use cache
12027           If the incoming data set is already sorted don't use cache.
12028           Also don't use cache if this is the first table in semi-join
12029             materialization nest.
12030         */
12031         /* These init changes read_record */
12032         if (tab->use_quick == 2)
12033         {
12034           join->thd->set_status_no_good_index_used();
12035           tab->read_first_record= join_init_quick_read_record;
12036           if (statistics)
12037             join->thd->inc_status_select_range_check();
12038         }
12039         else
12040         {
12041           if (!tab->bush_children)
12042             tab->read_first_record= join_init_read_record;

Bad

1. read_first_record assigned to join_init_read_record()

Same as Good:

#0  make_join_readinfo (join=0x7fff84014698, options=0, no_jbuf_after=1) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:12042
...

2. read_first_record assigned to join_read_first()

#0  make_join_readinfo (join=0x7fff84014698, options=0, no_jbuf_after=1) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:12105
... same as Good ...
12077           if (!table->no_keyread)
12078           {
12079             if (tab->select && tab->select->quick &&
12080                 tab->select->quick->index != MAX_KEY && //not index_merge
12081                 table->covering_keys.is_set(tab->select->quick->index))
12082               table->file->ha_start_keyread(tab->select->quick->index);
12083             else if (!table->covering_keys.is_clear_all() &&
12084                      !(tab->select && tab->select->quick))
12085             {                                     // Only read index tree
12086               if (tab->loosescan_match_tab)
12087                 tab->index= tab->loosescan_key;
12088               else 
12089               {
.....
12103                   tab->index=find_shortest_key(table, & table->covering_keys);
12104               }
12105               tab->read_first_record= join_read_first;
(gdb) p tab->select->quick
$4 = (QUICK_SELECT_I *) 0x0
midenok commented 6 years ago

Good

1. quick constructed

#0  0x0000000000cb86cb in SQL_SELECT::test_quick_select (this=0x7fff84015f00, thd=0x7fff84000d50, keys_to_use=..., prev_tables=0, limit=18446744073709551615, force_quick_range=false, ordered_output=false, remove_false_parts_of_where=true) at /home/midenok/src/mariadb/trunk/src/sql/opt_range.cc:2679
#1  0x000000000084753d in get_quick_record_count (thd=0x7fff84000d50, select=0x7fff84015f00, table=0x7fff84066930, keys=0x7fff84014f18, limit=18446744073709551615) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4223
#2  0x0000000000808fc8 in make_join_statistics (join=0x7fff84014698, tables_list=..., keyuse_array=0x7fff84014988) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4849
#3  0x0000000000803943 in JOIN::optimize_inner (this=0x7fff84014698) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1882
#4  0x00000000007ff175 in JOIN::optimize (this=0x7fff84014698) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1467
#5  0x00000000007f78cf in mysql_select (thd=0x7fff84000d50, tables=0x7fff84013bb0, wild_num=0, fields=..., conds=0x7fff84014468, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff84014678, unit=0x7fff84004b88, select_lex=0x7fff84005300) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4172
#6  0x00000000007f7213 in handle_select (thd=0x7fff84000d50, lex=0x7fff84004ac0, result=0x7fff84014678, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#7  0x00000000007b8b1f in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff84013bb0) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6552
#8  0x00000000007ad980 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3763
#9  0x00000000007a8443 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013978 "select fld3 from t2 where fld3 LIKE 'honeysuckl_'", length=49, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8009
2675        /* If we got a read plan, create a quick select from it. */
2676        if (best_trp)
2677        {
2678          records= best_trp->records;
2679          if (!(quick= best_trp->make_quick(&param, TRUE)) || quick->init())
2680          {
2681            delete quick;
2682            quick= NULL;
2683          }
2684        }

2. tab->select->quick assigned

#0  make_join_select (join=0x7fff84014698, select=0x7fff84016850, cond=0x7fff84014468) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:10561
#1  0x000000000080050f in JOIN::optimize_stage2 (this=0x7fff84014698) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:2123
#2  0x0000000000803a5b in JOIN::optimize_inner (this=0x7fff84014698) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1895
#3  0x00000000007ff175 in JOIN::optimize (this=0x7fff84014698) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1467
#4  0x00000000007f78cf in mysql_select (thd=0x7fff84000d50, tables=0x7fff84013bb0, wild_num=0, fields=..., conds=0x7fff84014468, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff84014678, unit=0x7fff84004b88, select_lex=0x7fff84005300) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4172
#5  0x00000000007f7213 in handle_select (thd=0x7fff84000d50, lex=0x7fff84004ac0, result=0x7fff84014678, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#6  0x00000000007b8b1f in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff84013bb0) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6552
#7  0x00000000007ad980 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3763
#8  0x00000000007a8443 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013978 "select fld3 from t2 where fld3 LIKE 'honeysuckl_'", length=49, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8009
10550           if (tab->quick)
10551           {
10552             /* Use quick key read if it's a constant and it's not used
10553                with key reading */
10554             if ((tab->needed_reg.is_clear_all() && tab->type != JT_EQ_REF &&
10555                 tab->type != JT_FT &&
10556                 ((tab->type != JT_CONST && tab->type != JT_REF) ||
10557                  (uint) tab->ref.key == tab->quick->index)) || is_hj)
10558             {
10559               DBUG_ASSERT(tab->quick->is_valid());
10560               sel->quick=tab->quick;              // Use value from get_quick_...
midenok commented 6 years ago

Good

best_trp assigned

2590          /* Get best 'range' plan and prepare data for making other plans */
2591          if ((range_trp= get_key_scans_params(&param, tree, FALSE, TRUE,
2592                                               best_read_time)))
2593          {
2594            best_trp= range_trp;
2595            best_read_time= best_trp->read_cost;
2596          }
(gdb) p best_read_time
$32 = 244.32268417213714

Bad

1. range_trp failed

2591          if ((range_trp= get_key_scans_params(&param, tree, FALSE, TRUE,

(gdb) p best_read_time
$34 = 2.0165329443228788

2. best_trp checked

#0  SQL_SELECT::test_quick_select (this=0x7fff84015f00, thd=0x7fff84000d50, keys_to_use=..., prev_tables=0, limit=18446744073709551615, force_quick_range=false, ordered_output=false, remove_false_parts_of_where=true) at /home/midenok/src/mariadb/trunk/src/sql/opt_range.cc:2676
#1  0x000000000084753d in get_quick_record_count (thd=0x7fff84000d50, select=0x7fff84015f00, table=0x7fff8406ef80, keys=0x7fff84014f18, limit=18446744073709551615) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4223
#2  0x0000000000808fc8 in make_join_statistics (join=0x7fff84014698, tables_list=..., keyuse_array=0x7fff84014988) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4849
#3  0x0000000000803943 in JOIN::optimize_inner (this=0x7fff84014698) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1882
#4  0x00000000007ff175 in JOIN::optimize (this=0x7fff84014698) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1467
#5  0x00000000007f78cf in mysql_select (thd=0x7fff84000d50, tables=0x7fff84013bb0, wild_num=0, fields=..., conds=0x7fff84014468, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff84014678, unit=0x7fff84004b88, select_lex=0x7fff84005300) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4172
#6  0x00000000007f7213 in handle_select (thd=0x7fff84000d50, lex=0x7fff84004ac0, result=0x7fff84014678, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#7  0x00000000007b8b1f in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff84013bb0) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6552
#8  0x00000000007ad980 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3763
#9  0x00000000007a8443 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013978 "select fld3 from t3 where fld3 LIKE 'honeysuckl_'", length=49, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8009
(gdb) p best_trp
$24 = (TABLE_READ_PLAN *) 0x0

Cause

Whether rr_quick() is used or not depends on best_read_time in SQL_SELECT::test_quick_select(). Setting it to 240 makes range_trp and best_trp non-zero.

test_quck_select.gdb

break join_init_read_record(st_join_table*)
break /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:19229
disable $bpnum
break /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:12105
disable $bpnum
break sql_select.cc:3426
break sql_select.cc:12042
disable $bpnum
break sql_select.cc:12178
break sql_select.cc:12184
break sql_select.cc:22164
break /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:12077
  commands
    p tab->select
  end
disable $bpnum
break sql_select.cc:22257
break sql_select.cc:22316
break sql_select.cc:22333
  commands
  end
break /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:10550
  commands
    p tab
  end
disable $bpnum
break /home/midenok/src/mariadb/trunk/src/sql/opt_range.cc:2676
disable $bpnum
break /home/midenok/src/mariadb/trunk/src/sql/opt_range.cc:2591
break rr_quick(READ_RECORD*)
disable $bpnum
midenok commented 6 years ago

Info

Key data in TABLE

  /* 
    Map of keys that can be used to retrieve all data from this table 
    needed by the query without reading the row.
  */
  key_map covering_keys;
  key_map quick_keys, intersect_keys;
  /*
    A set of keys that can be used in the query that references this
    table.

    All indexes disabled on the table's TABLE_SHARE (see TABLE::s) will be 
    subtracted from this set upon instantiation. Thus for any TABLE t it holds
    that t.keys_in_use_for_query is a subset of t.s.keys_in_use. Generally we 
    must not introduce any new keys here (see setup_tables).

    The set is implemented as a bitmap.
  */
  key_map keys_in_use_for_query;
  /* Map of keys that can be used to calculate GROUP BY without sorting */
  key_map keys_in_use_for_group_by;
  /* Map of keys that can be used to calculate ORDER BY without sorting */
  key_map keys_in_use_for_order_by;
  KEY  *key_info;           /* data of keys in database */

Key data in TABLE_SHARE

  KEY  *key_info;           /* data of keys in database */
  ...
  /* 
     Set of keys in use, implemented as a Bitmap.
     Excludes keys disabled by ALTER TABLE ... DISABLE KEYS.
  */
  key_map keys_in_use;
  key_map keys_for_keyread;
  ...
  uint keys, key_parts;
  uint ext_key_parts;       /* Total number of key parts in extended keys */
  uint max_key_length, max_unique_length, total_key_length;
  uint uniques;                         /* Number of UNIQUE index */
  ...
  /* Primary key index number, used in TABLE::key_info[] */
  uint primary_key;                     
midenok commented 6 years ago

test_quick_select() requires keys_in_use_for_query:

2428      keys_to_use.intersect(head->keys_in_use_for_query);
2429      if (!keys_to_use.is_clear_all())
2430      {

keys_in_use_for_query is set

#0  TABLE_LIST::process_index_hints (this=0x7fff84013bb0, tbl=0x7fff8406cd20) at /home/midenok/src/mariadb/trunk/src/sql/table.cc:7335
#1  0x000000000070f93b in setup_tables (thd=0x7fff84000d50, context=0x7fff84005348, from_clause=0x7fff840054a0, tables=0x7fff84013bb0, leaves=..., select_insert=false, full_table_list=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7478
#2  0x0000000000710317 in setup_tables_and_check_access (thd=0x7fff84000d50, context=0x7fff84005348, from_clause=0x7fff840054a0, tables=0x7fff84013bb0, leaves=..., select_insert=false, want_access_first=1, want_access=1, full_table_list=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7585
#3  0x00000000007fb05d in JOIN::prepare (this=0x7fff84014718, tables_init=0x7fff84013bb0, wild_num=0, conds_init=0x7fff84014468, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff84005300, unit_arg=0x7fff84004b88) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1040
#4  0x00000000007f7899 in mysql_select (thd=0x7fff84000d50, tables=0x7fff84013bb0, wild_num=0, fields=..., conds=0x7fff84014468, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff840146f8, unit=0x7fff84004b88, select_lex=0x7fff84005300) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4164
#5  0x00000000007f7213 in handle_select (thd=0x7fff84000d50, lex=0x7fff84004ac0, result=0x7fff840146f8, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#6  0x00000000007b8b1f in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff84013bb0) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6552
#7  0x00000000007ad980 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3763
#8  0x00000000007a8443 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013978 "select fld3 from t2 where fld3 LIKE 'honeysuckl_'", length=49, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8009
midenok commented 6 years ago

TR_table::query() setups quick

#0  SQL_SELECT::test_quick_select (this=0x7fff840185f8, thd=0x7fff84000d50, keys_to_use=..., prev_tables=0, limit=4294967295, force_quick_range=false, ordered_output=false, remove_false_parts_of_where=false) at /home/midenok/src/mariadb/trunk/src/sql/opt_range.cc:2556
#1  0x000000000090642a in TR_table::query (this=0x7fffe52a90e8, commit_time=..., backwards=false) at /home/midenok/src/mariadb/trunk/src/sql/table.cc:8703
#2  0x00000000009ffb0a in Item_func_vtq_id::get_by_commit_ts (this=0x7fff84014de8, commit_ts=..., backwards=false) at /home/midenok/src/mariadb/trunk/src/sql/item_vers.cc:124
#3  0x00000000009ffd87 in Item_func_vtq_id::val_int (this=0x7fff84014de8) at /home/midenok/src/mariadb/trunk/src/sql/item_vers.cc:156
#4  0x0000000000670079 in Item::val_int_result (this=0x7fff84014de8) at /home/midenok/src/mariadb/trunk/src/sql/item.h:1221
#5  0x0000000000b3e7e9 in Item_cache_int::cache_value (this=0x7fff840170b8) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:9895
#6  0x00000000009f02e1 in Item_cache::has_value (this=0x7fff840170b8) at /home/midenok/src/mariadb/trunk/src/sql/item.h:6053
#7  0x0000000000b3eb3f in Item_cache_int::val_int (this=0x7fff840170b8) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:9932
#8  0x00000000006b52b9 in Item::val_uint (this=0x7fff840170b8) at /home/midenok/src/mariadb/trunk/src/sql/item.h:1007
#9  0x00000000009ffff2 in Item_func_vtq_trx_sees::val_int (this=0x7fff84014eb0) at /home/midenok/src/mariadb/trunk/src/sql/item_vers.cc:175
#10 0x00000000009def88 in Type_handler_int_result::Item_val_bool (this=0x20573d0 <type_handler_long>, item=0x7fff84014eb0) at /home/midenok/src/mariadb/trunk/src/sql/sql_type.cc:3240
#11 0x000000000066ff15 in Item::val_bool (this=0x7fff84014eb0) at /home/midenok/src/mariadb/trunk/src/sql/item.h:1158
#12 0x0000000000b60e1a in Item_cond_and::val_int (this=0x7fff84017280) at /home/midenok/src/mariadb/trunk/src/sql/item_cmpfunc.cc:5105
#13 0x0000000000839da3 in evaluate_join_record (join=0x7fff84014650, join_tab=0x7fff840166b0, error=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:19327
#14 0x0000000000839561 in sub_select (join=0x7fff84014650, join_tab=0x7fff840166b0, end_of_records=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:19232
#15 0x0000000000821d28 in do_select (join=0x7fff84014650, procedure=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:18772
#16 0x0000000000820b1a in JOIN::exec_inner (this=0x7fff84014650) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:3987
#17 0x000000000081fc8e in JOIN::exec (this=0x7fff84014650) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:3781
#18 0x00000000007f79bc in mysql_select (thd=0x7fff84000d50, tables=0x7fff84013f08, wild_num=1, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff84014630, unit=0x7fff84004b88, select_lex=0x7fff84005300) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4186
#19 0x00000000007f7213 in handle_select (thd=0x7fff84000d50, lex=0x7fff84004ac0, result=0x7fff84014630, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#20 0x00000000007b8b1f in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff84013f08) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6552
#21 0x00000000007ad980 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3763
#22 0x00000000007a8443 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013978 "select *,row_start,row_end from i1 for system_time as of now()", length=62, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8009

This condition fails:

2556            if (tree->type != SEL_TREE::KEY && tree->type != SEL_TREE::KEY_SMALLER)
2557              tree= NULL;
(gdb) p tree->type
$46 = SEL_TREE::ALWAYS

Good (t2.sql)

explain select * from t2 where fld1 < 100;
(gdb) p tree->type
$3 = SEL_TREE::KEY
midenok commented 6 years ago

Bad: SEL_TREE::ALWAYS set

#0  Item::get_mm_tree_for_const (this=0x7fff64017f48, param=0x7ffff4f334e8) at /home/midenok/src/mariadb/trunk/src/sql/opt_range.cc:7683
#1  0x000000000071a0c6 in Item_func::get_mm_tree (this=0x7fff64017f48, param=0x7ffff4f334e8, cond_ptr=0x7fff640180b0) at /home/midenok/src/mariadb/trunk/src/sql/item_func.h:149
#2  0x000000000071917b in Item_bool_func2_with_rev::get_mm_tree (this=0x7fff64017f48, param=0x7ffff4f334e8, cond_ptr=0x7fff640180b0) at /home/midenok/src/mariadb/trunk/src/sql/item_cmpfunc.h:487
#3  0x0000000000cb86e1 in SQL_SELECT::test_quick_select (this=0x7fff640180a8, thd=0x7fff64000d50, keys_to_use=..., prev_tables=0, limit=4294967295, force_quick_range=false, ordered_output=false, remove_false_parts_of_where=false) at /home/midenok/src/mariadb/trunk/src/sql/opt_range.cc:2544
#4  0x000000000090691a in TR_table::query (this=0x7ffff4f340e8, commit_time=..., backwards=false) at /home/midenok/src/mariadb/trunk/src/sql/table.cc:8701
(gdb) p dbug_print_item(this)
$10 = 0x205a680 <dbug_item_print_buf> "`mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-02 16:50:31.231349'"
midenok commented 6 years ago

Item_bool_func2_with_rev::get_mm_tree()

#0  0x000000000071914f in Item_bool_func2_with_rev::get_mm_tree (this=0x7fff7c017fc8, param=0x7fffe52a84e8, cond_ptr=0x7fff7c018130) at /home/midenok/src/mariadb/trunk/src/sql/item_cmpfunc.h:486
#1  0x0000000000cb86e1 in SQL_SELECT::test_quick_select (this=0x7fff7c018128, thd=0x7fff7c000d50, keys_to_use=..., prev_tables=0, limit
485         if (!(ftree= get_full_func_mm_tree_for_args(param, args[0], args[1])) &&
486             !(ftree= get_full_func_mm_tree_for_args(param, args[1], args[0])))
487           ftree= Item_func::get_mm_tree(param, cond_ptr);

Good: get_full_func_mm_tree_for_args(param, args[0], args[1]) is non-NULL, Item_func::get_mm_tree(param, cond_ptr) is not called. Bad: Item_func::get_mm_tree() is called.

Item_bool_func::get_full_func_mm_tree_for_args()

#0  Item_bool_func::get_full_func_mm_tree_for_args (this=0x7fff7c017fc8, param=0x7fffe52a84e8, item=0x7fff7c017dd0, value=0x7fff7c017f18) at /home/midenok/src/mariadb/trunk/src/sql/item_cmpfunc.h:199
#1  0x000000000071910b in Item_bool_func2_with_rev::get_mm_tree (this=0x7fff7c017fc8, param=0x7fffe52a84e8, cond_ptr=0x7fff7c018130) at /home/midenok/src/mariadb/trunk/src/sql/item_cmpfunc.h:485
#2  0x0000000000cb86e1 in SQL_SELECT::test_quick_select (this=0x7fff7c018128, thd=0x7fff7c000d50, keys_to_use=..., prev_tables=0, limit=4294967295, force_quick_range=false, ordered_output=false, remove_false_parts_of_where=false) at /home/midenok/src/mariadb/trunk/src/sql/opt_range.cc:2544
199         if (field->type() == Item::FIELD_ITEM && !field->const_item() &&
200             (!value || !value->is_expensive()))
201           DBUG_RETURN(get_full_func_mm_tree(param, (Item_field *) field, value));

Bad

(gdb) p field->const_item()
$23 = true
(gdb) p field->name.str
$25 = 0x7fff7c017f00 "commit_timestamp"
Cause

commit_timestamp field is wrongly const_item().

midenok commented 6 years ago

Bad: commit_timestamp field considered const

#0  Item_field::used_tables (this=0x7fff84017d50) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:3552
#1  0x00000000006703c9 in Item::const_item (this=0x7fff84017d50) at /home/midenok/src/mariadb/trunk/src/sql/item.h:1321
#2  0x0000000000719f48 in Item_bool_func::get_full_func_mm_tree_for_args (this=0x7fff84017f48, param=0x7fffe52a84e8, item=0x7fff84017d50, value=0x7fff84017e98) at /home/midenok/src/mariadb/trunk/src/sql/item_cmpfunc.h:199
#3  0x000000000071910b in Item_bool_func2_with_rev::get_mm_tree (this=0x7fff84017f48, param=0x7fffe52a84e8, cond_ptr=0x7fff840180b0) at /home/midenok/src/mariadb/trunk/src/sql/item_cmpfunc.h:485
#4  0x0000000000cb86e1 in SQL_SELECT::test_quick_select (this=0x7fff840180a8, thd=0x7fff84000d50, keys_to_use=..., prev_tables=0, limit=4294967295, force_quick_range=false, ordered_output=false, remove_false_parts_of_where=false) at /home/midenok/src/mariadb/trunk/src/sql/opt_range.cc:2544
3548    table_map Item_field::used_tables() const
3549    {
....
3552      return (get_depended_from() ? OUTER_REF_TABLE_BIT : field->table->map);
3553    }
(gdb) p get_depended_from()
$34 = (st_select_lex *) 0x0
(gdb) p field->table->map
$35 = 0
(gdb) p field->table->alias.Ptr
$37 = 0x7fff841015d0 "transaction_registry"

Cause

table->map is 0.

midenok commented 6 years ago

Good: table->map is set

#0  setup_table_map (table=0x7fff840c1ea0, table_list=0x7fff84013b98, tablenr=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.h:334
#1  0x000000000070f9f6 in setup_tables (thd=0x7fff84000d50, context=0x7fff84005348, from_clause=0x7fff840054a0, tables=0x7fff84013b98, leaves=..., select_insert=false, full_table_list=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7476
#2  0x00000000007103e7 in setup_tables_and_check_access (thd=0x7fff84000d50, context=0x7fff84005348, from_clause=0x7fff840054a0, tables=0x7fff84013b98, leaves=..., select_insert=false, want_access_first=1, want_access=1, full_table_list=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7585
#3  0x00000000007fb57d in JOIN::prepare (this=0x7fff84014c50, tables_init=0x7fff84013b98, wild_num=1, conds_init=0x7fff840143b0, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff84005300, unit_arg=0x7fff84004b88) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1056
#4  0x00000000007f7d09 in mysql_select (thd=0x7fff84000d50, tables=0x7fff84013b98, wild_num=1, fields=..., conds=0x7fff840143b0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748612, result=0x7fff840145d0, unit=0x7fff84004b88, select_lex=0x7fff84005300) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4180
#5  0x0000000000841ab3 in mysql_explain_union (thd=0x7fff84000d50, unit=0x7fff84004b88, result=0x7fff840145d0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:25681
#6  0x00000000007b8a66 in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff84013b98) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6491
#7  0x00000000007addf0 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3763
#8  0x00000000007a88b3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013978 "explain select * from t2 where fld1 < 100", length=41, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8009
333       table->map= (table_map) 1 << tablenr;

frame 1

7456        while ((table_list= ti++))
7457        {
7458          TABLE *table= table_list->table;
7459          if (table)
7460            table->pos_in_table_list= table_list;
....
7473          else if (table)
7474          {
7475            table->pos_in_table_list= table_list;
7476            setup_table_map(table, table_list, tablenr);
....
7480          }
7481          tablenr++;
7482        }

Fix

Call setup_tables() or setup_table_map(). setup_tables() seems to be excessive, setup_table_map() should be enough.

midenok commented 6 years ago

rr_quick() check in TR_table

Fill TRANSACTION_REGISTRY by given number of records

delimiter ~~
create or replace procedure update_tr(size int)
begin
    declare i int default 0;
    create or replace table tmp (
        x int,
        row_start bigint unsigned as row start invisible,
        row_end bigint unsigned as row end invisible,
        period for system_time (row_start, row_end))
    engine innodb
    with system versioning;

    insert into tmp (x) values (-1);

    while i < size do
        update tmp set x= i;
        set i= i + 1; 
    end while;
end~~
delimiter ;

After table->map init rr_quick() is now successfully used:

#0  rr_quick (info=0x7fffe52a8fb0) at /home/midenok/src/mariadb/trunk/src/sql/records.cc:366
#1  0x00000000006fa60b in READ_RECORD::read_record (this=0x7fffe52a8fb0) at /home/midenok/src/mariadb/trunk/src/sql/records.h:73
#2  0x00000000009069f4 in TR_table::query (this=0x7fffe52a90e8, commit_time=..., backwards=false) at /home/midenok/src/mariadb/trunk/src/sql/table.cc:8720
#3  0x00000000009fffba in Item_func_vtq_id::get_by_commit_ts (this=0x7fff7c014de8, commit_ts=..., backwards=false) at /home/midenok/src/mariadb/trunk/src/sql/item_vers.cc:124
#4  0x0000000000a00237 in Item_func_vtq_id::val_int (this=0x7fff7c014de8) at /home/midenok/src/mariadb/trunk/src/sql/item_vers.cc:156
#5  0x0000000000670149 in Item::val_int_result (this=0x7fff7c014de8) at /home/midenok/src/mariadb/trunk/src/sql/item.h:1221
#6  0x0000000000b3edb9 in Item_cache_int::cache_value (this=0x7fff7c017000) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:9895
#7  0x00000000009f07b1 in Item_cache::has_value (this=0x7fff7c017000) at /home/midenok/src/mariadb/trunk/src/sql/item.h:6053
#8  0x0000000000b3f10f in Item_cache_int::val_int (this=0x7fff7c017000) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:9932
#9  0x00000000006b5389 in Item::val_uint (this=0x7fff7c017000) at /home/midenok/src/mariadb/trunk/src/sql/item.h:1007
#10 0x0000000000a004bd in Item_func_vtq_trx_sees::val_int (this=0x7fff7c014f78) at /home/midenok/src/mariadb/trunk/src/sql/item_vers.cc:176
#11 0x00000000009df6a8 in Type_handler_int_result::Item_val_bool (this=0x20583d0 <type_handler_long>, item=0x7fff7c014f78) at /home/midenok/src/mariadb/trunk/src/sql/sql_type.cc:3240
#12 0x000000000066ffe5 in Item::val_bool (this=0x7fff7c014f78) at /home/midenok/src/mariadb/trunk/src/sql/item.h:1158
#13 0x0000000000b613ea in Item_cond_and::val_int (this=0x7fff7c017280) at /home/midenok/src/mariadb/trunk/src/sql/item_cmpfunc.cc:5105
#14 0x000000000083a2c3 in evaluate_join_record (join=0x7fff7c014650, join_tab=0x7fff7c0166b0, error=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:19343
#15 0x0000000000839a81 in sub_select (join=0x7fff7c014650, join_tab=0x7fff7c0166b0, end_of_records=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:19248
#16 0x0000000000822248 in do_select (join=0x7fff7c014650, procedure=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:18788
#17 0x000000000082103a in JOIN::exec_inner (this=0x7fff7c014650) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4003
#18 0x00000000008201ae in JOIN::exec (this=0x7fff7c014650) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:3797
#19 0x00000000007f7e2c in mysql_select (thd=0x7fff7c000d50, tables=0x7fff7c013f08, wild_num=1, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff7c014630, unit=0x7fff7c004b88, select_lex=0x7fff7c005300) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4202
#20 0x00000000007f7683 in handle_select (thd=0x7fff7c000d50, lex=0x7fff7c004ac0, result=0x7fff7c014630, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#21 0x00000000007b8f8f in execute_sqlcom_select (thd=0x7fff7c000d50, all_tables=0x7fff7c013f08) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6552
#22 0x00000000007addf0 in mysql_execute_command (thd=0x7fff7c000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3763
#23 0x00000000007a88b3 in mysql_parse (thd=0x7fff7c000d50, rawbuf=0x7fff7c013978 "select *,row_start,row_end from i1 for system_time as of now()", length=62, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8009
midenok commented 6 years ago

Performance increase: x2.5 vs non-index for 10k records

Non-index

call select_tr(100);
Query OK, 101 rows affected (12.083 sec)

Index

call select_tr(100);
Query OK, 101 rows affected (5.175 sec)
midenok commented 6 years ago

Accessing TRT via vers_setup_conds()

Parser execution

On historical query TRT should be added like this:

11790             table_ident opt_use_partition opt_for_system_time_clause opt_table_alias opt_key_definition
11791             {
11792               if (!($$= Select->add_table_to_list(thd, $2, $5,
11793                                                   Select->get_table_join_options(),
11794                                                   YYPS->m_lock_type,
11795                                                   YYPS->m_mdl_type,
11796                                                   Select->pop_index_hints(),
11797                                                   $3)))
midenok commented 6 years ago

Bug 1: segfault when using rr_quick()

Reproduce

select * from mysql.transaction_registry where transaction_id > 60165;
select *,row_start,row_end from i1 for system_time as of timestamp '2018-04-04 16:40:23';

Result

#0  0x000000000099f561 in DsMrr_impl::dsmrr_next (this=0x7fff840e2bd0, range_info=0x7fffe50fdca8) at /home/midenok/src/mariadb/trunk/src/sql/multi_range_read.cc:1399
#1  0x0000000000da8d5f in ha_innobase::multi_range_read_next (this=0x7fff840e2788, range_info=0x7fffe50fdca8) at /home/midenok/src/mariadb/trunk/src/storage/innobase/handler/ha_innodb.cc:21222
#2  0x0000000000ccdca0 in QUICK_RANGE_SELECT::get_next (this=0x7fff8410f590) at /home/midenok/src/mariadb/trunk/src/sql/opt_range.cc:11446
#3  0x0000000000ce6780 in rr_quick (info=0x7fffe50fdfb0) at /home/midenok/src/mariadb/trunk/src/sql/records.cc:366
#4  0x00000000006fa69b in READ_RECORD::read_record (this=0x7fffe50fdfb0) at /home/midenok/src/mariadb/trunk/src/sql/records.h:73
#5  0x0000000000906c14 in TR_table::query (this=0x7fffe50fe0e8, commit_time=..., backwards=false) at /home/midenok/src/mariadb/trunk/src/sql/table.cc:8733
#6  0x0000000000a001fa in Item_func_vtq_id::get_by_commit_ts (this=0x7fff84014e78, commit_ts=..., backwards=false) at /home/midenok/src/mariadb/trunk/src/sql/item_vers.cc:124
#7  0x0000000000a00477 in Item_func_vtq_id::val_int (this=0x7fff84014e78) at /home/midenok/src/mariadb/trunk/src/sql/item_vers.cc:156
#8  0x00000000006701d9 in Item::val_int_result (this=0x7fff84014e78) at /home/midenok/src/mariadb/trunk/src/sql/item.h:1221
#9  0x0000000000b3f0a9 in Item_cache_int::cache_value (this=0x7fff84017090) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:9895
#10 0x00000000009f09f1 in Item_cache::has_value (this=0x7fff84017090) at /home/midenok/src/mariadb/trunk/src/sql/item.h:6053
#11 0x0000000000b3f3ff in Item_cache_int::val_int (this=0x7fff84017090) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:9932
#12 0x00000000006b5419 in Item::val_uint (this=0x7fff84017090) at /home/midenok/src/mariadb/trunk/src/sql/item.h:1007
#13 0x0000000000a006fd in Item_func_vtq_trx_sees::val_int (this=0x7fff84015008) at /home/midenok/src/mariadb/trunk/src/sql/item_vers.cc:176
#14 0x00000000009df8e8 in Type_handler_int_result::Item_val_bool (this=0x20583d0 <type_handler_long>, item=0x7fff84015008) at /home/midenok/src/mariadb/trunk/src/sql/sql_type.cc:3240
#15 0x0000000000670075 in Item::val_bool (this=0x7fff84015008) at /home/midenok/src/mariadb/trunk/src/sql/item.h:1158
#16 0x0000000000b616da in Item_cond_and::val_int (this=0x7fff84017310) at /home/midenok/src/mariadb/trunk/src/sql/item_cmpfunc.cc:5105
#17 0x000000000083a4c3 in evaluate_join_record (join=0x7fff840146e0, join_tab=0x7fff84016740, error=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:19357
#18 0x0000000000839c81 in sub_select (join=0x7fff840146e0, join_tab=0x7fff84016740, end_of_records=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:19262
#19 0x0000000000822448 in do_select (join=0x7fff840146e0, procedure=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:18802
#20 0x000000000082123a in JOIN::exec_inner (this=0x7fff840146e0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4017
#21 0x00000000008203ae in JOIN::exec (this=0x7fff840146e0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:3811
#22 0x00000000007f7ebc in mysql_select (thd=0x7fff84000d50, tables=0x7fff84013f18, wild_num=1, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff840146c0, unit=0x7fff84004b88, select_lex=0x7fff84005300) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4216
#23 0x00000000007f7713 in handle_select (thd=0x7fff84000d50, lex=0x7fff84004ac0, result=0x7fff840146c0, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#24 0x00000000007b901f in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff84013f18) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6552
#25 0x00000000007ade80 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3763
#26 0x00000000007a8943 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013978 "select *,row_start,row_end from i1 for system_time as of timestamp '2018-04-04 16:40:23'", length=88, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8009
1399      while ((res= strategy->get_next(range_info)) == HA_ERR_END_OF_FILE)
(gdb) p strategy
$7 = (Mrr_reader *) 0x0
midenok commented 6 years ago

Bad: DsMrr_impl constructed

#0  DsMrr_impl::DsMrr_impl (this=0x7fff840e2b40) at /home/midenok/src/mariadb/trunk/src/sql/multi_range_read.h:557
#1  0x0000000000d86a04 in ha_innobase::ha_innobase (this=0x7fff840e26f8, hton=0x294f160, table_arg=0x7fff840dc9a8) at /home/midenok/src/mariadb/trunk/src/storage/innobase/handler/ha_innodb.cc:2960
#2  0x0000000000daf467 in innobase_create_handler (hton=0x294f160, table=0x7fff840dc9a8, mem_root=0x7fff840e2578) at /home/midenok/src/mariadb/trunk/src/storage/innobase/handler/ha_innodb.cc:1534
#3  0x0000000000aff1b5 in get_new_handler (share=0x7fff840dc9a8, alloc=0x7fff840e2578, db_type=0x294f160) at /home/midenok/src/mariadb/trunk/src/sql/handler.cc:267
#4  0x00000000008f35a6 in open_table_from_share (thd=0x7fff84000d50, share=0x7fff840dc9a8, alias=0x7fff84013c40, db_stat=33, prgflag=8, ha_open_flags=16, outparam=0x7fff840e1ab0, is_create_table=false, partitions_to_open=0x0) at /home/midenok/src/mariadb/trunk/src/sql/table.cc:3169
#5  0x00000000007022c7 in open_table (thd=0x7fff84000d50, table_list=0x7fff84013bf8, ot_ctx=0x7fffe52aa6f8) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:1920
#6  0x0000000000706588 in open_and_process_table (thd=0x7fff84000d50, lex=0x7fff84004ac0, tables=0x7fff84013bf8, counter=0x7fffe52aa7fc, flags=0, prelocking_strategy=0x7fffe52aa870, has_prelocking_list=false, ot_ctx=0x7fffe52aa6f8) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:3512
#7  0x00000000007052ed in open_tables (thd=0x7fff84000d50, options=..., start=0x7fffe52aa810, counter=0x7fffe52aa7fc, flags=0, prelocking_strategy=0x7fffe52aa870) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:4030
#8  0x0000000000709895 in open_and_lock_tables (thd=0x7fff84000d50, options=..., tables=0x7fff84013bf8, derived=true, flags=0, prelocking_strategy=0x7fffe52aa870) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:4907
#9  0x00000000006b75ac in open_and_lock_tables (thd=0x7fff84000d50, tables=0x7fff84013bf8, derived=true, flags=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.h:487
#10 0x00000000007b898c in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff84013bf8) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6473
#11 0x00000000007ade80 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3763
#12 0x00000000007a8943 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013978 "select * from mysql.transaction_registry where transaction_id > 60165", length=69, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8009

Good: DsMrr_impl inited

#0  DsMrr_impl::dsmrr_init (this=0x7fff840e2bd0, h_arg=0x7fff840e2788, seq_funcs=0x7fffe52aa060, seq_init_param=0x7fff840e65b0, n_ranges=1, mode=76, buf=0x7fffe52aa0d0) at /home/midenok/src/mariadb/trunk/src/sql/multi_range_read.cc:818
#1  0x0000000000da8d28 in ha_innobase::multi_range_read_init (this=0x7fff840e2788, seq=0x7fffe52aa060, seq_init_param=0x7fff840e65b0, n_ranges=1, mode=76, buf=0x7fffe52aa0d0) at /home/midenok/src/mariadb/trunk/src/storage/innobase/handler/ha_innodb.cc:21214
#2  0x0000000000ccdb89 in QUICK_RANGE_SELECT::reset (this=0x7fff840e65b0) at /home/midenok/src/mariadb/trunk/src/sql/opt_range.cc:11412
#3  0x000000000081e601 in join_init_read_record (tab=0x7fff84016700) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:20170
#4  0x0000000000839c1a in sub_select (join=0x7fff84014650, join_tab=0x7fff84016700, end_of_records=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:19259
#5  0x0000000000822448 in do_select (join=0x7fff84014650, procedure=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:18802
#6  0x000000000082123a in JOIN::exec_inner (this=0x7fff84014650) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4017
#7  0x00000000008203ae in JOIN::exec (this=0x7fff84014650) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:3811
#8  0x00000000007f7ebc in mysql_select (thd=0x7fff84000d50, tables=0x7fff84013bf8, wild_num=1, fields=..., conds=0x7fff84014410, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff84014630, unit=0x7fff84004b88, select_lex=0x7fff84005300) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4216
#9  0x00000000007f7713 in handle_select (thd=0x7fff84000d50, lex=0x7fff84004ac0, result=0x7fff84014630, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#10 0x00000000007b901f in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff84013bf8) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6552
#11 0x00000000007ade80 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3763
#12 0x00000000007a8943 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013978 "select * from mysql.transaction_registry where transaction_id > 60165", length=69, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8009
  if (tab->select && tab->select->quick && tab->select->quick->reset())
  {
    /* Ensures error status is propagated back to client */
    report_error(tab->table,
                 tab->join->thd->killed ? HA_ERR_QUERY_INTERRUPTED : HA_ERR_OUT_OF_MEM);
    return 1;
  }

Fix

This should be placed in correct place:

  if (select->quick && select->quick->reset())
  {
    if (thd->killed)
      my_error(ER_QUERY_INTERRUPTED, MYF(0));
    else
      my_error(ER_OUT_OF_RESOURCES, MYF(0));
    return false;
  }
midenok commented 6 years ago

Accessing TRT via vers_setup_conds() ^

Prototype query

select *,
       row_start,
       row_end
from
    i1 for system_time all,
    (
        select transaction_id __trx_id
        from mysql.transaction_registry
        where commit_timestamp <= '2018-04-04 16:40:23'
        order by commit_timestamp desc
        limit 1
    ) __transaction_registry
where vtq_trx_sees(__trx_id, row_start)
  and vtq_trx_sees_eq(row_end, __trx_id);

Info

midenok commented 6 years ago

Info

Print inner SELECT

#0  st_select_lex::print (this=0x7fff84013b68, thd=0x7fff84000d50, str=0x7fffe52ab4f8, query_type=QT_EXPLAIN) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:26073
#1  0x000000000077e197 in st_select_lex_unit::print (this=0x7fff84013f80, str=0x7fffe52ab4f8, query_type=QT_EXPLAIN) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.cc:2860
#2  0x000000000084257e in TABLE_LIST::print (this=0x7fff840147f0, thd=0x7fff84000d50, eliminated_tables=0, str=0x7fffe52ab4f8, query_type=QT_EXPLAIN) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:25987
#3  0x000000000084f77c in print_table_array (thd=0x7fff84000d50, eliminated_tables=0, str=0x7fffe52ab4f8, table=0x7fff84014e60, end=0x7fff84014e68, query_type=QT_EXPLAIN) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:25726
#4  0x0000000000842f79 in print_join (thd=0x7fff84000d50, eliminated_tables=0, str=0x7fffe52ab4f8, tables=0x7fff840054b0, query_type=QT_EXPLAIN) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:25882
#5  0x00000000008434e9 in st_select_lex::print (this=0x7fff84005310, thd=0x7fff84000d50, str=0x7fffe52ab4f8, query_type=QT_EXPLAIN) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:26165
#6  0x0000000000b43668 in dbug_print_select (sl=0x7fff84005310) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:10637
#7  0x00000000007abd94 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3272
#8  0x00000000007a89f3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "select * from (select 1) x", length=26, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8035
26161     if (table_list.elements)
26162     {
26163       str->append(STRING_WITH_LEN(" from "));
26164       /* go through join tree */
26165       print_join(thd, join? join->eliminated_tables: 0, str, &top_join_list, query_type);
26166     }

join_list vs top_join_list

void st_select_lex::init_query()
{
...
  top_join_list.empty();
  join_list= &top_join_list;

TR_table::add_subquery()

(gdb) p &sel->top_join_list
$19 = (List<TABLE_LIST> *) 0x7fff84014770
(gdb) p sel->join_list
$20 = (List<TABLE_LIST> *) 0x7fff84014770
8582      { // add table
8583        sel->parsing_place= NO_MATTER;
8584        Table_ident *ti= newx Table_ident(thd, &MYSQL_SCHEMA_NAME,
8585                                          &TRANSACTION_REG_NAME, true);
8586        if (!ti)
8587          return true; // FIXME: error
8588
8589        sel->table_join_options= 0;
8590        TABLE_LIST *tl= sel->add_table_to_list(thd, ti, &TRANSACTION_REG_NAME,
8591                                    sel->get_table_join_options(),
8592                                    TL_READ, MDL_SHARED_READ, NULL, NULL, NULL);
8593        if (!tl)
8594          return true; // FIXME: error
8595        sel->add_joined_table(tl); // FIXME: is it needed?
8596        sel->context.table_list= tl;
8597        sel->context.first_name_resolution_table= tl;
8598        p.trt= tl;
8599      }
midenok commented 6 years ago

Assertion on prepared statement

#3  0x00007ffff600dfc2 in __GI___assert_fail (assertion=0x152e980 "trt", file=0x152e74e "/home/midenok/src/mariadb/trunk/src/sql/sql_select.cc", line=939, function=0x152e8fe "int st_select_lex::vers_setup_conds(THD *, TABLE_LIST *, COND **)") at assert.c:101
#4  0x00000000007fa75d in st_select_lex::vers_setup_conds (this=0x7fff78170290, thd=0x7fff78000d50, tables=0x7fff78171500, where_expr=0x7fff78131370) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:939
#5  0x00000000007fbbab in JOIN::prepare (this=0x7fff78130f68, tables_init=0x7fff78171500, wild_num=0, conds_init=0x0, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff78170290, unit_arg=0x7fff7816fb08) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1101
#6  0x00000000008d0aed in st_select_lex_unit::prepare_join (this=0x7fff7816fb08, thd_arg=0x7fff78000d50, sl=0x7fff78170290, tmp_result=0x0, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:662
#7  0x00000000008cbd09 in st_select_lex_unit::prepare (this=0x7fff7816fb08, thd_arg=0x7fff78000d50, sel_result=0x0, additional_options=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:947
#8  0x00000000007dfd3f in mysql_test_select (stmt=0x7fff7816d490, tables=0x7fff78171500) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:1531
#9  0x00000000007daa36 in check_prepared_statement (stmt=0x7fff7816d490) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:2319
#10 0x00000000007d4dee in Prepared_statement::prepare (this=0x7fff7816d490, packet=0x7fff7811fe70 "select x from tmp for system_time as of now() into @x;", packet_len=54) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3963
#11 0x00000000007d5818 in mysql_sql_stmt_prepare (thd=0x7fff78000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:2796
#12 0x00000000007ae080 in mysql_execute_command (thd=0x7fff78000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3800
#13 0x00000000006b0345 in sp_instr_stmt::exec_core (this=0x7fff7811ff68, thd=0x7fff78000d50, nextp=0x7fffe52aa758) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:3595
#14 0x00000000006aeb62 in sp_lex_keeper::reset_lex_and_exec_core (this=0x7fff7811ffb8, thd=0x7fff78000d50, nextp=0x7fffe52aa758, open_tables=false, instr=0x7fff7811ff68) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:3311
#15 0x00000000006af56d in sp_instr_stmt::execute (this=0x7fff7811ff68, thd=0x7fff78000d50, nextp=0x7fffe52aa758) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:3498
#16 0x00000000006a6614 in sp_head::execute (this=0x7fff78115878, thd=0x7fff78000d50, merge_da_on_success=true) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:1349
#17 0x00000000006a8d68 in sp_head::execute_procedure (this=0x7fff78115878, thd=0x7fff78000d50, args=0x7fff78005930) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:2287
#18 0x00000000007ab878 in do_execute_sp (thd=0x7fff78000d50, sp=0x7fff78115878) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:2936
#19 0x00000000007ab21b in Sql_cmd_call::execute (this=0x7fff78013a78, thd=0x7fff78000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3178
#20 0x00000000007b6eef in mysql_execute_command (thd=0x7fff78000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6306
#21 0x00000000007a89a3 in mysql_parse (thd=0x7fff78000d50, rawbuf=0x7fff78013998 "call select_tr(100)", length=19, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8035

Fix

Call add_subquery() under check_prepared_statement().

midenok commented 6 years ago

Error under PS+SP

Reproduce

delimiter ~~
create or replace procedure select_tr(size int)
begin
    declare i int default 0;
    create or replace table tmp (
        x int,
        row_start bigint unsigned as row start invisible,
        row_end bigint unsigned as row end invisible,
        period for system_time (row_start, row_end))
    engine innodb
    with system versioning;

    insert into tmp (x) values (-1);
    prepare stmt from "select x from tmp for system_time as of now() into @x;";

    while i < size do
        execute stmt;
        set i= i + 1; 
    end while;
    drop prepare stmt;
end~~
delimiter ;
call select_tr(1);

Result

#0  my_error (nr=1054, MyFlags=0) at /home/midenok/src/mariadb/trunk/src/mysys/my_error.c:113
#1  0x000000000070d15c in find_field_in_tables (thd=0x7fff78000d50, item=0x7fff7816f118, first_table=0x7fff7816c880, last_table=0x0, ref=0x7fff7816f3b8, report_error=REPORT_ALL_ERRORS, check_privileges=true, register_tree_change=true) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:6202
#2  0x0000000000b3241f in Item_field::fix_outer_field (this=0x7fff7816f118, thd=0x7fff78000d50, from_field=0x7fffe52a3cc0, reference=0x7fff7816f3b8) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:5991
#3  0x0000000000b336c8 in Item_field::fix_fields (this=0x7fff7816f118, thd=0x7fff78000d50, reference=0x7fff7816f3b8) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6245
#4  0x0000000000ba06ad in Item_func::fix_fields (this=0x7fff7816f320, thd=0x7fff78000d50, ref=0x7fff78125c18) at /home/midenok/src/mariadb/trunk/src/sql/item_func.cc:362
#5  0x0000000000b61174 in Item_cond::fix_fields (this=0x7fff78125b00, thd=0x7fff78000d50, ref=0x7fff78126130) at /home/midenok/src/mariadb/trunk/src/sql/item_cmpfunc.cc:4697
#6  0x000000000071105d in setup_conds (thd=0x7fff78000d50, tables=0x7fff7816c880, leaves=..., conds=0x7fff78126130) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:8057
#7  0x00000000007fdc3c in setup_without_group (thd=0x7fff78000d50, ref_pointer_array=..., tables=0x7fff7816c880, leaves=..., fields=..., all_fields=..., conds=0x7fff78126130, order=0x0, group=0x0, win_specs=..., win_funcs=..., hidden_group_fields=0x7fff7812600f, reserved=0x7fff7816b8ec) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:646
#8  0x00000000007fc191 in JOIN::prepare (this=0x7fff78125d28, tables_init=0x7fff7816c880, wild_num=0, conds_init=0x7fff78125b00, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff7816b610, unit_arg=0x7fff7816ae88) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1172
#9  0x00000000007f7f99 in mysql_select (thd=0x7fff78000d50, tables=0x7fff7816c880, wild_num=0, fields=..., conds=0x7fff78125b00, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2416185088, result=0x7fff7816cef8, unit=0x7fff7816ae88, select_lex=0x7fff7816b610) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#10 0x00000000007f7913 in handle_select (thd=0x7fff78000d50, lex=0x7fff7816adc0, result=0x7fff7816cef8, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#11 0x00000000007b91ff in execute_sqlcom_select (thd=0x7fff78000d50, all_tables=0x7fff7816c880) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#12 0x00000000007ae05c in mysql_execute_command (thd=0x7fff78000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#13 0x00000000007db8f2 in Prepared_statement::execute (this=0x7fff7816a960, expanded_query=0x7fffe52a7df0, open_cursor=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4741
#14 0x00000000007d7668 in Prepared_statement::execute_loop (this=0x7fff7816a960, expanded_query=0x7fffe52a7df0, open_cursor=false, packet=0x0, packet_end=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4172
#15 0x00000000007d72f1 in mysql_sql_stmt_execute (thd=0x7fff78000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3280
#16 0x00000000007ae0a9 in mysql_execute_command (thd=0x7fff78000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3783
#17 0x00000000006b0385 in sp_instr_stmt::exec_core (this=0x7fff78116850, thd=0x7fff78000d50, nextp=0x7fffe52aa788) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:3595
#18 0x00000000006aeba2 in sp_lex_keeper::reset_lex_and_exec_core (this=0x7fff781168a0, thd=0x7fff78000d50, nextp=0x7fffe52aa788, open_tables=false, instr=0x7fff78116850) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:3311
#19 0x00000000006af5ad in sp_instr_stmt::execute (this=0x7fff78116850, thd=0x7fff78000d50, nextp=0x7fffe52aa788) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:3498
#20 0x00000000006a6654 in sp_head::execute (this=0x7fff7810a238, thd=0x7fff78000d50, merge_da_on_success=true) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:1349
#21 0x00000000006a8da8 in sp_head::execute_procedure (this=0x7fff7810a238, thd=0x7fff78000d50, args=0x7fff78005930) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:2287
#22 0x00000000007ab9c8 in do_execute_sp (thd=0x7fff78000d50, sp=0x7fff7810a238) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:2936
#23 0x00000000007ab36b in Sql_cmd_call::execute (this=0x7fff78013a70, thd=0x7fff78000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3178
#24 0x00000000007b6f05 in mysql_execute_command (thd=0x7fff78000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6284
#25 0x00000000007a8af3 in mysql_parse (thd=0x7fff78000d50, rawbuf=0x7fff78013998 "call select_tr(1)", length=17, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013
Unknown column 'mysql.transaction_registry.transaction_id' in 'where clause'
(gdb) p context->first_name_resolution_table->alias
$12 = {
  str = 0x7fff7816c878 "tmp", 
  length = 3
}
(gdb) p context->first_name_resolution_table->next_local->alias
$15 = {
  str = 0x153fdc4 "_trt_subquery", 
  length = 13
}
(gdb) p context->first_name_resolution_table->next_global->alias
$17 = {
  str = 0x163fdc3 "transaction_registry", 
  length = 20
}
(gdb) p context->first_name_resolution_table->next_name_resolution_table->alias
$22 = {
  str = 0x153fdc4 "_trt_subquery", 
  length = 13
}

Good

(gdb) p dbug_print_item(this)
$7 = 0x205b680 <dbug_item_print_buf> "`mysql`.transaction_registry.transaction_id"
(gdb) p context->first_name_resolution_table->alias
$8 = {
  str = 0x163fdc3 "transaction_registry", 
  length = 20
}
(gdb) p context->first_name_resolution_table->next_local
$9 = (TABLE_LIST *) 0x0
(gdb) p context->first_name_resolution_table->next_global->alias
$10 = {
  str = 0x153fdc4 "_trt_subquery", 
  length = 13
}
(gdb) p context->first_name_resolution_table->next_name_resolution_table
$11 = (TABLE_LIST *) 0x0
midenok commented 6 years ago

Bad

1. LEX::vers_add_trt_query() called

#0  0x00000000007da7c8 in check_prepared_statement (stmt=0x7fff70169410) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:2253
#1  0x00000000007d4e0e in Prepared_statement::prepare (this=0x7fff70169410, packet=0x7fff70114280 "select x from tmp for system_time as of now() into @x;", packet_len=54) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3965
#2  0x00000000007d5838 in mysql_sql_stmt_prepare (thd=0x7fff70000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:2798
#3  0x00000000007ae096 in mysql_execute_command (thd=0x7fff70000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3778
#4  0x00000000006b0385 in sp_instr_stmt::exec_core (this=0x7fff70114378, thd=0x7fff70000d50, nextp=0x7fffe52aa788) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:3595
#5  0x00000000006aeba2 in sp_lex_keeper::reset_lex_and_exec_core (this=0x7fff701143c8, thd=0x7fff70000d50, nextp=0x7fffe52aa788, open_tables=false, instr=0x7fff70114378) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:3311
#6  0x00000000006af5ad in sp_instr_stmt::execute (this=0x7fff70114378, thd=0x7fff70000d50, nextp=0x7fffe52aa788) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:3498
#7  0x00000000006a6654 in sp_head::execute (this=0x7fff70109b88, thd=0x7fff70000d50, merge_da_on_success=true) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:1349
#8  0x00000000006a8da8 in sp_head::execute_procedure (this=0x7fff70109b88, thd=0x7fff70000d50, args=0x7fff70005930) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:2287
#9  0x00000000007ab9c8 in do_execute_sp (thd=0x7fff70000d50, sp=0x7fff70109b88) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:2936
#10 0x00000000007ab36b in Sql_cmd_call::execute (this=0x7fff70013a70, thd=0x7fff70000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3178
#11 0x00000000007b6f05 in mysql_execute_command (thd=0x7fff70000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6284
#12 0x00000000007a8af3 in mysql_parse (thd=0x7fff70000d50, rawbuf=0x7fff70013998 "call select_tr(1)", length=17, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013
(gdb) p dbug_print_select(&thd->lex->select_lex)
$14 = 0x205b680 <dbug_item_print_buf> "select x AS x from test.tmp join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= current_timestamp(6) order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery"
select x as x
from test.tmp
join
  (select mysql.transaction_registry.transaction_id as transaction_id
   from mysql.transaction_registry
   where mysql.transaction_registry.commit_timestamp <= current_timestamp(6)
   order by mysql.transaction_registry.commit_timestamp desc
   limit 1) _trt_subquery

Looks good.

LEX::vers_add_trt_query() called 2nd time

#0  0x00000000007abd6a in mysql_execute_command (thd=0x7fff70000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3251
#1  0x00000000007db8f2 in Prepared_statement::execute (this=0x7fff70169410, expanded_query=0x7fffe52a7df0, open_cursor=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4741
#2  0x00000000007d7668 in Prepared_statement::execute_loop (this=0x7fff70169410, expanded_query=0x7fffe52a7df0, open_cursor=false, packet=0x0, packet_end=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4172
#3  0x00000000007d72f1 in mysql_sql_stmt_execute (thd=0x7fff70000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3280
#4  0x00000000007ae0a9 in mysql_execute_command (thd=0x7fff70000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3783
#5  0x00000000006b0385 in sp_instr_stmt::exec_core (this=0x7fff701160e0, thd=0x7fff70000d50, nextp=0x7fffe52aa788) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:3595
#6  0x00000000006aeba2 in sp_lex_keeper::reset_lex_and_exec_core (this=0x7fff70116130, thd=0x7fff70000d50, nextp=0x7fffe52aa788, open_tables=false, instr=0x7fff701160e0) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:3311
#7  0x00000000006af5ad in sp_instr_stmt::execute (this=0x7fff701160e0, thd=0x7fff70000d50, nextp=0x7fffe52aa788) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:3498
#8  0x00000000006a6654 in sp_head::execute (this=0x7fff70109b88, thd=0x7fff70000d50, merge_da_on_success=true) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:1349
#9  0x00000000006a8da8 in sp_head::execute_procedure (this=0x7fff70109b88, thd=0x7fff70000d50, args=0x7fff70005930) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:2287
#10 0x00000000007ab9c8 in do_execute_sp (thd=0x7fff70000d50, sp=0x7fff70109b88) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:2936
#11 0x00000000007ab36b in Sql_cmd_call::execute (this=0x7fff70013a70, thd=0x7fff70000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3178
#12 0x00000000007b6f05 in mysql_execute_command (thd=0x7fff70000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6284
#13 0x00000000007a8af3 in mysql_parse (thd=0x7fff70000d50, rawbuf=0x7fff70013998 "call select_tr(1)", length=17, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013
(gdb) p dbug_print_select(&thd->lex->select_lex)
$15 = 0x205b680 <dbug_item_print_buf> "select x AS x from test.tmp join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= current_timestamp(6) order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(tmp.row_end,`mysql`.transaction_registry.transaction_id) and vtq_trx_sees_eq(`mysql`.transaction_registry.transaction_id,tmp.row_start)"
select x as x
from test.tmp
join
  (select mysql.transaction_registry.transaction_id as transaction_id
   from mysql.transaction_registry
   where mysql.transaction_registry.commit_timestamp <= current_timestamp(6)
   order by mysql.transaction_registry.commit_timestamp desc
   limit 1) _trt_subquery
where vtq_trx_sees(tmp.row_end,mysql.transaction_registry.transaction_id)
  and vtq_trx_sees_eq(mysql.transaction_registry.transaction_id,tmp.row_start)

Fix

  1. vtq_trx_sees must be called on _trt_subquery.transaction_id instead of mysql.transaction_registry.transaction_id.
  2. LEX::vers_add_trt_query() must be called once at prepare stage.
midenok commented 6 years ago

Assertion on PS 2

Reproduce

call select_tr(1);

Result

#3  0x00007ffff600dfc2 in __GI___assert_fail (assertion=0x164d3f3 "outer_context || !*from_field || *from_field == not_found_field", file=0x164bbe5 "/home/midenok/src/mariadb/trunk/src/sql/item.cc", line=5820, function=0x164d433 "int Item_field::fix_outer_field(THD *, Field **, Item **)") at assert.c:101
#4  0x0000000000b319e6 in Item_field::fix_outer_field (this=0x7fff7816f118, thd=0x7fff78000d50, from_field=0x7fffe52a3c90, reference=0x7fff7816f3b0) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:5819
#5  0x0000000000b3389a in Item_field::fix_fields (this=0x7fff7816f118, thd=0x7fff78000d50, reference=0x7fff7816f3b0) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6264
#6  0x0000000000ba06ed in Item_func::fix_fields (this=0x7fff7816f318, thd=0x7fff78000d50, ref=0x7fff78125c18) at /home/midenok/src/mariadb/trunk/src/sql/item_func.cc:362
#7  0x0000000000b611b4 in Item_cond::fix_fields (this=0x7fff78125b00, thd=0x7fff78000d50, ref=0x7fff78126130) at /home/midenok/src/mariadb/trunk/src/sql/item_cmpfunc.cc:4697
#8  0x000000000071105d in setup_conds (thd=0x7fff78000d50, tables=0x7fff7816c880, leaves=..., conds=0x7fff78126130) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:8057
#9  0x00000000007fdc7c in setup_without_group (thd=0x7fff78000d50, ref_pointer_array=..., tables=0x7fff7816c880, leaves=..., fields=..., all_fields=..., conds=0x7fff78126130, order=0x0, group=0x0, win_specs=..., win_funcs=..., hidden_group_fields=0x7fff7812600f, reserved=0x7fff7816b8ec) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:646
#10 0x00000000007fc1d1 in JOIN::prepare (this=0x7fff78125d28, tables_init=0x7fff7816c880, wild_num=0, conds_init=0x7fff78125b00, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff7816b610, unit_arg=0x7fff7816ae88) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1172
#11 0x00000000007f7fd9 in mysql_select (thd=0x7fff78000d50, tables=0x7fff7816c880, wild_num=0, fields=..., conds=0x7fff78125b00, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2416185088, result=0x7fff7816cef8, unit=0x7fff7816ae88, select_lex=0x7fff7816b610) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#12 0x00000000007f7953 in handle_select (thd=0x7fff78000d50, lex=0x7fff7816adc0, result=0x7fff7816cef8, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#13 0x00000000007b921f in execute_sqlcom_select (thd=0x7fff78000d50, all_tables=0x7fff7816c880) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#14 0x00000000007ae08a in mysql_execute_command (thd=0x7fff78000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#15 0x00000000007db932 in Prepared_statement::execute (this=0x7fff7816a960, expanded_query=0x7fffe52a7dd0, open_cursor=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4741
#16 0x00000000007d7688 in Prepared_statement::execute_loop (this=0x7fff7816a960, expanded_query=0x7fffe52a7dd0, open_cursor=false, packet=0x0, packet_end=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4172
#17 0x00000000007d7311 in mysql_sql_stmt_execute (thd=0x7fff78000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3280
#18 0x00000000007ae0d7 in mysql_execute_command (thd=0x7fff78000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3783
#19 0x00000000006b0385 in sp_instr_stmt::exec_core (this=0x7fff78116850, thd=0x7fff78000d50, nextp=0x7fffe52aa778) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:3595
#20 0x00000000006aeba2 in sp_lex_keeper::reset_lex_and_exec_core (this=0x7fff781168a0, thd=0x7fff78000d50, nextp=0x7fffe52aa778, open_tables=false, instr=0x7fff78116850) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:3311
#21 0x00000000006af5ad in sp_instr_stmt::execute (this=0x7fff78116850, thd=0x7fff78000d50, nextp=0x7fffe52aa778) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:3498
#22 0x00000000006a6654 in sp_head::execute (this=0x7fff7810a238, thd=0x7fff78000d50, merge_da_on_success=true) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:1349
#23 0x00000000006a8da8 in sp_head::execute_procedure (this=0x7fff7810a238, thd=0x7fff78000d50, args=0x7fff78005930) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:2287
#24 0x00000000007ab9c8 in do_execute_sp (thd=0x7fff78000d50, sp=0x7fff7810a238) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:2936
#25 0x00000000007ab36b in Sql_cmd_call::execute (this=0x7fff78013a70, thd=0x7fff78000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3178
#26 0x00000000007b6f33 in mysql_execute_command (thd=0x7fff78000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6284
#27 0x00000000007a8af3 in mysql_parse (thd=0x7fff78000d50, rawbuf=0x7fff78013998 "call select_tr(1)", length=17, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013
6257        if (!outer_fixed && table_list && table_list->select_lex &&
6258            context->select_lex &&
6259            table_list->select_lex != context->select_lex &&
6260            !context->select_lex->is_merged_child_of(table_list->select_lex) &&
6261            is_outer_table(table_list, context->select_lex))
6262        {
6263          int ret;
6264          if ((ret= fix_outer_field(thd, &from_field, reference)) < 0)
5819      DBUG_ASSERT(outer_context || !*from_field ||
5820                  *from_field == not_found_field);
(gdb) p from_field->field_name
$37 = {
  str = 0x170cc39 "transaction_id", 
  length = 14
}
(gdb) p table_list->alias
$43 = {
  str = 0x153fe04 "_trt_subquery", 
  length = 13
}
(gdb) p dbug_print_select(table_list->select_lex)
$44 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= current_timestamp(6) order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
(gdb) p dbug_print_select(context->select_lex)
$45 = 0x205b680 <dbug_item_print_buf> "select tmp.x AS x from test.tmp FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= current_timestamp(6) order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(tmp.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,tmp.row_start)"
midenok commented 6 years ago

Good

select x from (select 1 as x) q1;
(gdb) p dbug_print_select(context->select_lex)
$47 = 0x205b680 <dbug_item_print_buf> "select x AS x from (select 1 AS x) q1"
(gdb) p dbug_print_select(table_list->select_lex)
$48 = 0x205b680 <dbug_item_print_buf> "select x AS x from (select 1 AS x) q1"
(gdb) p table_list->alias
$49 = {
  str = 0x7fff800147d0 "q1", 
  length = 2
}

Cause

Wrong select_lex of _trt_subquery TABLE_LIST.

midenok commented 6 years ago

Good: fix_fields() behavior

select *,row_start,row_end from i1 for system_time as of timestamp '2018-04-04 16:40:23';

1. setup_fields()

$298 = 0x163fde3 "transaction_registry"
$299 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
$300 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
#0  Item_field::fix_fields (this=0x7fff7c015150, thd=0x7fff7c000d50, reference=0x7fff7c015268) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x000000000070f1c5 in setup_fields (thd=0x7fff7c000d50, ref_pointer_array=..., fields=..., column_usage=MARK_COLUMNS_READ, sum_func_list=0x7fff7c016e68, pre_fix=0x7fff7c0146f0, allow_sum_func=true) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7311
#2  0x00000000007fc07c in JOIN::prepare (this=0x7fff7c016b48, tables_init=0x7fff7c015298, wild_num=0, conds_init=0x7fff7c015a18, og_num=1, order_init=0x7fff7c015c88, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff7c0145b0, unit_arg=0x7fff7c0149c8) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1167
#3  0x00000000008d0b4d in st_select_lex_unit::prepare_join (this=0x7fff7c0149c8, thd_arg=0x7fff7c000d50, sl=0x7fff7c0145b0, tmp_result=0x7fff7c016a60, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:662
#4  0x00000000008cbd69 in st_select_lex_unit::prepare (this=0x7fff7c0149c8, thd_arg=0x7fff7c000d50, sel_result=0x7fff7c016a60, additional_options=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:947
#5  0x0000000000758d70 in mysql_derived_prepare (thd=0x7fff7c000d50, lex=0x7fff7c004ac0, derived=0x7fff7c015d98) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:769
#6  0x000000000075bc17 in mysql_handle_single_derived (lex=0x7fff7c004ac0, derived=0x7fff7c015d98, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:197
#7  0x0000000000903c0f in TABLE_LIST::handle_derived (this=0x7fff7c015d98, lex=0x7fff7c004ac0, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/table.cc:8053
#8  0x0000000000781603 in st_select_lex::handle_derived (this=0x7fff7c005310, lex=0x7fff7c004ac0, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.cc:4058
#9  0x00000000007fb9f1 in JOIN::prepare (this=0x7fff7c0164f8, tables_init=0x7fff7c013f38, wild_num=1, conds_init=0x0, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff7c005310, unit_arg=0x7fff7c004b88) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1067
#10 0x00000000007f7fb9 in mysql_select (thd=0x7fff7c000d50, tables=0x7fff7c013f38, wild_num=1, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff7c0164d8, unit=0x7fff7c004b88, select_lex=0x7fff7c005310) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#11 0x00000000007f7933 in handle_select (thd=0x7fff7c000d50, lex=0x7fff7c004ac0, result=0x7fff7c0164d8, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#12 0x00000000007b921f in execute_sqlcom_select (thd=0x7fff7c000d50, all_tables=0x7fff7c013f38) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#13 0x00000000007ae08a in mysql_execute_command (thd=0x7fff7c000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#14 0x00000000007a8af3 in mysql_parse (thd=0x7fff7c000d50, rawbuf=0x7fff7c013998 "select *,row_start,row_end from i1 for system_time as of timestamp '2018-04-04 16:40:23'", length=88, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

2. setup_conds()

$259 = 0x163fde3 "transaction_registry"
$260 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
$261 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
#0  Item_field::fix_fields (this=0x7fff7c015908, thd=0x7fff7c000d50, reference=0x7fff7c015aa8) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x0000000000ba06cd in Item_func::fix_fields (this=0x7fff7c015a18, thd=0x7fff7c000d50, ref=0x7fff7c016f50) at /home/midenok/src/mariadb/trunk/src/sql/item_func.cc:362
#2  0x000000000071105d in setup_conds (thd=0x7fff7c000d50, tables=0x7fff7c015298, leaves=..., conds=0x7fff7c016f50) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:8057
#3  0x00000000007fdc5c in setup_without_group (thd=0x7fff7c000d50, ref_pointer_array=..., tables=0x7fff7c015298, leaves=..., fields=..., all_fields=..., conds=0x7fff7c016f50, order=0x7fff7c015c88, group=0x0, win_specs=..., win_funcs=..., hidden_group_fields=0x7fff7c016e2f, reserved=0x7fff7c01488c) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:646
#4  0x00000000007fc1b1 in JOIN::prepare (this=0x7fff7c016b48, tables_init=0x7fff7c015298, wild_num=0, conds_init=0x7fff7c015a18, og_num=1, order_init=0x7fff7c015c88, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff7c0145b0, unit_arg=0x7fff7c0149c8) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1172
#5  0x00000000008d0b4d in st_select_lex_unit::prepare_join (this=0x7fff7c0149c8, thd_arg=0x7fff7c000d50, sl=0x7fff7c0145b0, tmp_result=0x7fff7c016a60, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:662
#6  0x00000000008cbd69 in st_select_lex_unit::prepare (this=0x7fff7c0149c8, thd_arg=0x7fff7c000d50, sel_result=0x7fff7c016a60, additional_options=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:947
#7  0x0000000000758d70 in mysql_derived_prepare (thd=0x7fff7c000d50, lex=0x7fff7c004ac0, derived=0x7fff7c015d98) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:769
#8  0x000000000075bc17 in mysql_handle_single_derived (lex=0x7fff7c004ac0, derived=0x7fff7c015d98, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:197
#9  0x0000000000903c0f in TABLE_LIST::handle_derived (this=0x7fff7c015d98, lex=0x7fff7c004ac0, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/table.cc:8053
#10 0x0000000000781603 in st_select_lex::handle_derived (this=0x7fff7c005310, lex=0x7fff7c004ac0, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.cc:4058
#11 0x00000000007fb9f1 in JOIN::prepare (this=0x7fff7c0164f8, tables_init=0x7fff7c013f38, wild_num=1, conds_init=0x0, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff7c005310, unit_arg=0x7fff7c004b88) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1067
#12 0x00000000007f7fb9 in mysql_select (thd=0x7fff7c000d50, tables=0x7fff7c013f38, wild_num=1, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff7c0164d8, unit=0x7fff7c004b88, select_lex=0x7fff7c005310) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#13 0x00000000007f7933 in handle_select (thd=0x7fff7c000d50, lex=0x7fff7c004ac0, result=0x7fff7c0164d8, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#14 0x00000000007b921f in execute_sqlcom_select (thd=0x7fff7c000d50, all_tables=0x7fff7c013f38) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#15 0x00000000007ae08a in mysql_execute_command (thd=0x7fff7c000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#16 0x00000000007a8af3 in mysql_parse (thd=0x7fff7c000d50, rawbuf=0x7fff7c013998 "select *,row_start,row_end from i1 for system_time as of timestamp '2018-04-04 16:40:23'", length=88, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

3. setup_order()

$262 = 0x163fde3 "transaction_registry"
$263 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
$264 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
#0  Item_field::fix_fields (this=0x7fff7c015b78, thd=0x7fff7c000d50, reference=0x7fff7c015c98) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x00000000007fe538 in find_order_in_list (thd=0x7fff7c000d50, ref_pointer_array=..., tables=0x7fff7c015298, order=0x7fff7c015c88, fields=..., all_fields=..., is_group_field=false, add_to_all_fields=true, from_window_spec=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:22996
#2  0x000000000083e7a7 in setup_order (thd=0x7fff7c000d50, ref_pointer_array=..., tables=0x7fff7c015298, fields=..., all_fields=..., order=0x7fff7c015c88, from_window_spec=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:23040
#3  0x00000000007fde01 in setup_without_group (thd=0x7fff7c000d50, ref_pointer_array=..., tables=0x7fff7c015298, leaves=..., fields=..., all_fields=..., conds=0x7fff7c016f50, order=0x7fff7c015c88, group=0x0, win_specs=..., win_funcs=..., hidden_group_fields=0x7fff7c016e2f, reserved=0x7fff7c01488c) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:662
#4  0x00000000007fc1b1 in JOIN::prepare (this=0x7fff7c016b48, tables_init=0x7fff7c015298, wild_num=0, conds_init=0x7fff7c015a18, og_num=1, order_init=0x7fff7c015c88, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff7c0145b0, unit_arg=0x7fff7c0149c8) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1172
#5  0x00000000008d0b4d in st_select_lex_unit::prepare_join (this=0x7fff7c0149c8, thd_arg=0x7fff7c000d50, sl=0x7fff7c0145b0, tmp_result=0x7fff7c016a60, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:662
#6  0x00000000008cbd69 in st_select_lex_unit::prepare (this=0x7fff7c0149c8, thd_arg=0x7fff7c000d50, sel_result=0x7fff7c016a60, additional_options=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:947
#7  0x0000000000758d70 in mysql_derived_prepare (thd=0x7fff7c000d50, lex=0x7fff7c004ac0, derived=0x7fff7c015d98) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:769
#8  0x000000000075bc17 in mysql_handle_single_derived (lex=0x7fff7c004ac0, derived=0x7fff7c015d98, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:197
#9  0x0000000000903c0f in TABLE_LIST::handle_derived (this=0x7fff7c015d98, lex=0x7fff7c004ac0, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/table.cc:8053
#10 0x0000000000781603 in st_select_lex::handle_derived (this=0x7fff7c005310, lex=0x7fff7c004ac0, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.cc:4058
#11 0x00000000007fb9f1 in JOIN::prepare (this=0x7fff7c0164f8, tables_init=0x7fff7c013f38, wild_num=1, conds_init=0x0, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff7c005310, unit_arg=0x7fff7c004b88) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1067
#12 0x00000000007f7fb9 in mysql_select (thd=0x7fff7c000d50, tables=0x7fff7c013f38, wild_num=1, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff7c0164d8, unit=0x7fff7c004b88, select_lex=0x7fff7c005310) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#13 0x00000000007f7933 in handle_select (thd=0x7fff7c000d50, lex=0x7fff7c004ac0, result=0x7fff7c0164d8, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#14 0x00000000007b921f in execute_sqlcom_select (thd=0x7fff7c000d50, all_tables=0x7fff7c013f38) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#15 0x00000000007ae08a in mysql_execute_command (thd=0x7fff7c000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#16 0x00000000007a8af3 in mysql_parse (thd=0x7fff7c000d50, rawbuf=0x7fff7c013998 "select *,row_start,row_end from i1 for system_time as of timestamp '2018-04-04 16:40:23'", length=88, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

4. vers_setup_conds()

#0  st_select_lex::vers_setup_conds (this=0x7fff7c005310, thd=0x7fff7c000d50, tables=0x7fff7c013f38, where_expr=0x7fff7c016900) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:942
#1  0x00000000007fbc0b in JOIN::prepare (this=0x7fff7c0164f8, tables_init=0x7fff7c013f38, wild_num=1, conds_init=0x0, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff7c005310, unit_arg=0x7fff7c004b88) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1101
#2  0x00000000007f7fb9 in mysql_select (thd=0x7fff7c000d50, tables=0x7fff7c013f38, wild_num=1, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff7c0164d8, unit=0x7fff7c004b88, select_lex=0x7fff7c005310) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#3  0x00000000007f7933 in handle_select (thd=0x7fff7c000d50, lex=0x7fff7c004ac0, result=0x7fff7c0164d8, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#4  0x00000000007b921f in execute_sqlcom_select (thd=0x7fff7c000d50, all_tables=0x7fff7c013f38) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#5  0x00000000007ae08a in mysql_execute_command (thd=0x7fff7c000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#6  0x00000000007a8af3 in mysql_parse (thd=0x7fff7c000d50, rawbuf=0x7fff7c013998 "select *,row_start,row_end from i1 for system_time as of timestamp '2018-04-04 16:40:23'", length=88, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

5. setup_fields()

$265 = 0x7fff7c013f30 "i1"
$266 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
$267 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
#0  Item_field::fix_fields (this=0x7fff7c013bf0, thd=0x7fff7c000d50, reference=0x7fff7c013d08) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x000000000070f1c5 in setup_fields (thd=0x7fff7c000d50, ref_pointer_array=..., fields=..., column_usage=MARK_COLUMNS_READ, sum_func_list=0x7fff7c016818, pre_fix=0x7fff7c005450, allow_sum_func=true) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7311
#2  0x00000000007fc07c in JOIN::prepare (this=0x7fff7c0164f8, tables_init=0x7fff7c013f38, wild_num=1, conds_init=0x0, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff7c005310, unit_arg=0x7fff7c004b88) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1167
#3  0x00000000007f7fb9 in mysql_select (thd=0x7fff7c000d50, tables=0x7fff7c013f38, wild_num=1, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff7c0164d8, unit=0x7fff7c004b88, select_lex=0x7fff7c005310) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#4  0x00000000007f7933 in handle_select (thd=0x7fff7c000d50, lex=0x7fff7c004ac0, result=0x7fff7c0164d8, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#5  0x00000000007b921f in execute_sqlcom_select (thd=0x7fff7c000d50, all_tables=0x7fff7c013f38) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#6  0x00000000007ae08a in mysql_execute_command (thd=0x7fff7c000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#7  0x00000000007a8af3 in mysql_parse (thd=0x7fff7c000d50, rawbuf=0x7fff7c013998 "select *,row_start,row_end from i1 for system_time as of timestamp '2018-04-04 16:40:23'", length=88, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

6. setup_fields()

$268 = 0x7fff7c013f30 "i1"
$269 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,i1.row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
$270 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,i1.row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
#0  Item_field::fix_fields (this=0x7fff7c013d18, thd=0x7fff7c000d50, reference=0x7fff7c013e30) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x000000000070f1c5 in setup_fields (thd=0x7fff7c000d50, ref_pointer_array=..., fields=..., column_usage=MARK_COLUMNS_READ, sum_func_list=0x7fff7c016818, pre_fix=0x7fff7c005450, allow_sum_func=true) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7311
#2  0x00000000007fc07c in JOIN::prepare (this=0x7fff7c0164f8, tables_init=0x7fff7c013f38, wild_num=1, conds_init=0x0, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff7c005310, unit_arg=0x7fff7c004b88) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1167
#3  0x00000000007f7fb9 in mysql_select (thd=0x7fff7c000d50, tables=0x7fff7c013f38, wild_num=1, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff7c0164d8, unit=0x7fff7c004b88, select_lex=0x7fff7c005310) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#4  0x00000000007f7933 in handle_select (thd=0x7fff7c000d50, lex=0x7fff7c004ac0, result=0x7fff7c0164d8, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#5  0x00000000007b921f in execute_sqlcom_select (thd=0x7fff7c000d50, all_tables=0x7fff7c013f38) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#6  0x00000000007ae08a in mysql_execute_command (thd=0x7fff7c000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#7  0x00000000007a8af3 in mysql_parse (thd=0x7fff7c000d50, rawbuf=0x7fff7c013998 "select *,row_start,row_end from i1 for system_time as of timestamp '2018-04-04 16:40:23'", length=88, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

7. setup_conds()

$271 = 0x7fff7c013f30 "i1"
$272 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,i1.row_start AS row_start,i1.row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
$273 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,i1.row_start AS row_start,i1.row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
#0  Item_field::fix_fields (this=0x7fff7c0173e8, thd=0x7fff7c000d50, reference=0x7fff7c017788) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x0000000000ba06cd in Item_func::fix_fields (this=0x7fff7c0176f8, thd=0x7fff7c000d50, ref=0x7fff7c0178d8) at /home/midenok/src/mariadb/trunk/src/sql/item_func.cc:362
#2  0x0000000000b61194 in Item_cond::fix_fields (this=0x7fff7c0177c0, thd=0x7fff7c000d50, ref=0x7fff7c016900) at /home/midenok/src/mariadb/trunk/src/sql/item_cmpfunc.cc:4697
#3  0x000000000071105d in setup_conds (thd=0x7fff7c000d50, tables=0x7fff7c013f38, leaves=..., conds=0x7fff7c016900) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:8057
#4  0x00000000007fdc5c in setup_without_group (thd=0x7fff7c000d50, ref_pointer_array=..., tables=0x7fff7c013f38, leaves=..., fields=..., all_fields=..., conds=0x7fff7c016900, order=0x0, group=0x0, win_specs=..., win_funcs=..., hidden_group_fields=0x7fff7c0167df, reserved=0x7fff7c0055ec) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:646
#5  0x00000000007fc1b1 in JOIN::prepare (this=0x7fff7c0164f8, tables_init=0x7fff7c013f38, wild_num=1, conds_init=0x0, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff7c005310, unit_arg=0x7fff7c004b88) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1172
#6  0x00000000007f7fb9 in mysql_select (thd=0x7fff7c000d50, tables=0x7fff7c013f38, wild_num=1, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff7c0164d8, unit=0x7fff7c004b88, select_lex=0x7fff7c005310) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#7  0x00000000007f7933 in handle_select (thd=0x7fff7c000d50, lex=0x7fff7c004ac0, result=0x7fff7c0164d8, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#8  0x00000000007b921f in execute_sqlcom_select (thd=0x7fff7c000d50, all_tables=0x7fff7c013f38) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#9  0x00000000007ae08a in mysql_execute_command (thd=0x7fff7c000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#10 0x00000000007a8af3 in mysql_parse (thd=0x7fff7c000d50, rawbuf=0x7fff7c013998 "select *,row_start,row_end from i1 for system_time as of timestamp '2018-04-04 16:40:23'", length=88, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

8. setup_conds()

$274 = 0x7fff7c013f30 "i1"
$275 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,i1.row_start AS row_start,i1.row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
$276 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,i1.row_start AS row_start,i1.row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
#0  Item_field::fix_fields (this=0x7fff7c0172d8, thd=0x7fff7c000d50, reference=0x7fff7c0176c8) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x0000000000ba06cd in Item_func::fix_fields (this=0x7fff7c017630, thd=0x7fff7c000d50, ref=0x7fff7c0178e8) at /home/midenok/src/mariadb/trunk/src/sql/item_func.cc:362
#2  0x0000000000b61194 in Item_cond::fix_fields (this=0x7fff7c0177c0, thd=0x7fff7c000d50, ref=0x7fff7c016900) at /home/midenok/src/mariadb/trunk/src/sql/item_cmpfunc.cc:4697
#3  0x000000000071105d in setup_conds (thd=0x7fff7c000d50, tables=0x7fff7c013f38, leaves=..., conds=0x7fff7c016900) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:8057
#4  0x00000000007fdc5c in setup_without_group (thd=0x7fff7c000d50, ref_pointer_array=..., tables=0x7fff7c013f38, leaves=..., fields=..., all_fields=..., conds=0x7fff7c016900, order=0x0, group=0x0, win_specs=..., win_funcs=..., hidden_group_fields=0x7fff7c0167df, reserved=0x7fff7c0055ec) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:646
#5  0x00000000007fc1b1 in JOIN::prepare (this=0x7fff7c0164f8, tables_init=0x7fff7c013f38, wild_num=1, conds_init=0x0, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff7c005310, unit_arg=0x7fff7c004b88) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1172
#6  0x00000000007f7fb9 in mysql_select (thd=0x7fff7c000d50, tables=0x7fff7c013f38, wild_num=1, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff7c0164d8, unit=0x7fff7c004b88, select_lex=0x7fff7c005310) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#7  0x00000000007f7933 in handle_select (thd=0x7fff7c000d50, lex=0x7fff7c004ac0, result=0x7fff7c0164d8, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#8  0x00000000007b921f in execute_sqlcom_select (thd=0x7fff7c000d50, all_tables=0x7fff7c013f38) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#9  0x00000000007ae08a in mysql_execute_command (thd=0x7fff7c000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#10 0x00000000007a8af3 in mysql_parse (thd=0x7fff7c000d50, rawbuf=0x7fff7c013998 "select *,row_start,row_end from i1 for system_time as of timestamp '2018-04-04 16:40:23'", length=88, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013
midenok commented 6 years ago

Bad: PREPARE

prepare stmt from "select *,row_start,row_end from i1 for system_time as of timestamp '2018-04-04 16:40:23'";
execute stmt;

1. setup_fields(), mysql.transaction_registry.transaction_id

$92 = 0x205b680 <dbug_item_print_buf> "`mysql`.transaction_registry.transaction_id"
$93 = (TABLE_LIST *) 0x7fff840fcbe0
$94 = 0x163fde3 "transaction_registry"
table_list->select_lex:
$95 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
context->select_lex:
$96 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
#0  Item_field::fix_fields (this=0x7fff840fca98, thd=0x7fff84000d50, reference=0x7fff840fcbb0) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x000000000070f1c5 in setup_fields (thd=0x7fff84000d50, ref_pointer_array=..., fields=..., column_usage=MARK_COLUMNS_READ, sum_func_list=0x7fff840145f0, pre_fix=0x7fff840fc038, allow_sum_func=true) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7311
#2  0x00000000007fc07c in JOIN::prepare (this=0x7fff840142d0, tables_init=0x7fff840fcbe0, wild_num=0, conds_init=0x7fff840fd360, og_num=1, order_init=0x7fff840fd5d0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fbef8, unit_arg=0x7fff840fc310) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1167
#3  0x00000000008d0b4d in st_select_lex_unit::prepare_join (this=0x7fff840fc310, thd_arg=0x7fff84000d50, sl=0x7fff840fbef8, tmp_result=0x7fff840141e8, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:662
#4  0x00000000008cbd69 in st_select_lex_unit::prepare (this=0x7fff840fc310, thd_arg=0x7fff84000d50, sel_result=0x7fff840141e8, additional_options=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:947
#5  0x0000000000758d70 in mysql_derived_prepare (thd=0x7fff84000d50, lex=0x7fff840f9b50, derived=0x7fff840fd6e0) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:769
#6  0x000000000075bc17 in mysql_handle_single_derived (lex=0x7fff840f9b50, derived=0x7fff840fd6e0, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:197
#7  0x0000000000903c0f in TABLE_LIST::handle_derived (this=0x7fff840fd6e0, lex=0x7fff840f9b50, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/table.cc:8053
#8  0x0000000000781603 in st_select_lex::handle_derived (this=0x7fff840fa3a0, lex=0x7fff840f9b50, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.cc:4058
#9  0x00000000007fb9f1 in JOIN::prepare (this=0x7fff84013c80, tables_init=0x7fff840fb880, wild_num=0, conds_init=0x7fff84013a58, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fa3a0, unit_arg=0x7fff840f9c18) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1067
#10 0x00000000007f7fb9 in mysql_select (thd=0x7fff84000d50, tables=0x7fff840fb880, wild_num=0, fields=..., conds=0x7fff84013a58, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2416184064, result=0x7fff840fdd50, unit=0x7fff840f9c18, select_lex=0x7fff840fa3a0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#11 0x00000000007f7933 in handle_select (thd=0x7fff84000d50, lex=0x7fff840f9b50, result=0x7fff840fdd50, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#12 0x00000000007b921f in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff840fb880) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#13 0x00000000007ae08a in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#14 0x00000000007db912 in Prepared_statement::execute (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4741
#15 0x00000000007d7688 in Prepared_statement::execute_loop (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false, packet=0x0, packet_end=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4172
#16 0x00000000007d7311 in mysql_sql_stmt_execute (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3280
#17 0x00000000007ae0d7 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3783
#18 0x00000000007a8af3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "execute stmt", length=12, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

2. setup_conds(), mysql.transaction_registry.commit_timestamp

$97 = 0x205b680 <dbug_item_print_buf> "`mysql`.transaction_registry.commit_timestamp"
$98 = (TABLE_LIST *) 0x7fff840fcbe0
$99 = 0x163fde3 "transaction_registry"
table_list->select_lex:
$100 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
context->select_lex:
$101 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
#0  Item_field::fix_fields (this=0x7fff840fd250, thd=0x7fff84000d50, reference=0x7fff840fd3f0) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x0000000000ba06cd in Item_func::fix_fields (this=0x7fff840fd360, thd=0x7fff84000d50, ref=0x7fff840146d8) at /home/midenok/src/mariadb/trunk/src/sql/item_func.cc:362
#2  0x000000000071105d in setup_conds (thd=0x7fff84000d50, tables=0x7fff840fcbe0, leaves=..., conds=0x7fff840146d8) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:8057
#3  0x00000000007fdc5c in setup_without_group (thd=0x7fff84000d50, ref_pointer_array=..., tables=0x7fff840fcbe0, leaves=..., fields=..., all_fields=..., conds=0x7fff840146d8, order=0x7fff840fd5d0, group=0x0, win_specs=..., win_funcs=..., hidden_group_fields=0x7fff840145b7, reserved=0x7fff840fc1d4) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:646
#4  0x00000000007fc1b1 in JOIN::prepare (this=0x7fff840142d0, tables_init=0x7fff840fcbe0, wild_num=0, conds_init=0x7fff840fd360, og_num=1, order_init=0x7fff840fd5d0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fbef8, unit_arg=0x7fff840fc310) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1172
#5  0x00000000008d0b4d in st_select_lex_unit::prepare_join (this=0x7fff840fc310, thd_arg=0x7fff84000d50, sl=0x7fff840fbef8, tmp_result=0x7fff840141e8, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:662
#6  0x00000000008cbd69 in st_select_lex_unit::prepare (this=0x7fff840fc310, thd_arg=0x7fff84000d50, sel_result=0x7fff840141e8, additional_options=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:947
#7  0x0000000000758d70 in mysql_derived_prepare (thd=0x7fff84000d50, lex=0x7fff840f9b50, derived=0x7fff840fd6e0) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:769
#8  0x000000000075bc17 in mysql_handle_single_derived (lex=0x7fff840f9b50, derived=0x7fff840fd6e0, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:197
#9  0x0000000000903c0f in TABLE_LIST::handle_derived (this=0x7fff840fd6e0, lex=0x7fff840f9b50, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/table.cc:8053
#10 0x0000000000781603 in st_select_lex::handle_derived (this=0x7fff840fa3a0, lex=0x7fff840f9b50, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.cc:4058
#11 0x00000000007fb9f1 in JOIN::prepare (this=0x7fff84013c80, tables_init=0x7fff840fb880, wild_num=0, conds_init=0x7fff84013a58, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fa3a0, unit_arg=0x7fff840f9c18) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1067
#12 0x00000000007f7fb9 in mysql_select (thd=0x7fff84000d50, tables=0x7fff840fb880, wild_num=0, fields=..., conds=0x7fff84013a58, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2416184064, result=0x7fff840fdd50, unit=0x7fff840f9c18, select_lex=0x7fff840fa3a0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#13 0x00000000007f7933 in handle_select (thd=0x7fff84000d50, lex=0x7fff840f9b50, result=0x7fff840fdd50, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#14 0x00000000007b921f in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff840fb880) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#15 0x00000000007ae08a in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#16 0x00000000007db912 in Prepared_statement::execute (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4741
#17 0x00000000007d7688 in Prepared_statement::execute_loop (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false, packet=0x0, packet_end=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4172
#18 0x00000000007d7311 in mysql_sql_stmt_execute (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3280
#19 0x00000000007ae0d7 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3783
#20 0x00000000007a8af3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "execute stmt", length=12, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

3. setup_order(), mysql.transaction_registry.commit_timestamp

$102 = 0x205b680 <dbug_item_print_buf> "`mysql`.transaction_registry.commit_timestamp"
$103 = (TABLE_LIST *) 0x7fff840fcbe0
$104 = 0x163fde3 "transaction_registry"
table_list->select_lex:
$105 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
context->select_lex:
$106 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
#0  Item_field::fix_fields (this=0x7fff840fd4c0, thd=0x7fff84000d50, reference=0x7fff840fd5e0) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x00000000007fe538 in find_order_in_list (thd=0x7fff84000d50, ref_pointer_array=..., tables=0x7fff840fcbe0, order=0x7fff840fd5d0, fields=..., all_fields=..., is_group_field=false, add_to_all_fields=true, from_window_spec=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:22996
#2  0x000000000083e7a7 in setup_order (thd=0x7fff84000d50, ref_pointer_array=..., tables=0x7fff840fcbe0, fields=..., all_fields=..., order=0x7fff840fd5d0, from_window_spec=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:23040
#3  0x00000000007fde01 in setup_without_group (thd=0x7fff84000d50, ref_pointer_array=..., tables=0x7fff840fcbe0, leaves=..., fields=..., all_fields=..., conds=0x7fff840146d8, order=0x7fff840fd5d0, group=0x0, win_specs=..., win_funcs=..., hidden_group_fields=0x7fff840145b7, reserved=0x7fff840fc1d4) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:662
#4  0x00000000007fc1b1 in JOIN::prepare (this=0x7fff840142d0, tables_init=0x7fff840fcbe0, wild_num=0, conds_init=0x7fff840fd360, og_num=1, order_init=0x7fff840fd5d0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fbef8, unit_arg=0x7fff840fc310) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1172
#5  0x00000000008d0b4d in st_select_lex_unit::prepare_join (this=0x7fff840fc310, thd_arg=0x7fff84000d50, sl=0x7fff840fbef8, tmp_result=0x7fff840141e8, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:662
#6  0x00000000008cbd69 in st_select_lex_unit::prepare (this=0x7fff840fc310, thd_arg=0x7fff84000d50, sel_result=0x7fff840141e8, additional_options=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:947
#7  0x0000000000758d70 in mysql_derived_prepare (thd=0x7fff84000d50, lex=0x7fff840f9b50, derived=0x7fff840fd6e0) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:769
#8  0x000000000075bc17 in mysql_handle_single_derived (lex=0x7fff840f9b50, derived=0x7fff840fd6e0, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:197
#9  0x0000000000903c0f in TABLE_LIST::handle_derived (this=0x7fff840fd6e0, lex=0x7fff840f9b50, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/table.cc:8053
#10 0x0000000000781603 in st_select_lex::handle_derived (this=0x7fff840fa3a0, lex=0x7fff840f9b50, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.cc:4058
#11 0x00000000007fb9f1 in JOIN::prepare (this=0x7fff84013c80, tables_init=0x7fff840fb880, wild_num=0, conds_init=0x7fff84013a58, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fa3a0, unit_arg=0x7fff840f9c18) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1067
#12 0x00000000007f7fb9 in mysql_select (thd=0x7fff84000d50, tables=0x7fff840fb880, wild_num=0, fields=..., conds=0x7fff84013a58, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2416184064, result=0x7fff840fdd50, unit=0x7fff840f9c18, select_lex=0x7fff840fa3a0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#13 0x00000000007f7933 in handle_select (thd=0x7fff84000d50, lex=0x7fff840f9b50, result=0x7fff840fdd50, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#14 0x00000000007b921f in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff840fb880) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#15 0x00000000007ae08a in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#16 0x00000000007db912 in Prepared_statement::execute (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4741
#17 0x00000000007d7688 in Prepared_statement::execute_loop (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false, packet=0x0, packet_end=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4172
#18 0x00000000007d7311 in mysql_sql_stmt_execute (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3280
#19 0x00000000007ae0d7 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3783
#20 0x00000000007a8af3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "execute stmt", length=12, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

4. setup_fields(), i1.x

$107 = 0x205b680 <dbug_item_print_buf> "i1.x"
$108 = (TABLE_LIST *) 0x7fff840fb880
$109 = 0x7fff840fb878 "i1"
table_list->select_lex:
$110 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
context->select_lex:
$111 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
#0  Item_field::fix_fields (this=0x7fff840fe4b0, thd=0x7fff84000d50, reference=0x7fff840fb520) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x000000000070f1c5 in setup_fields (thd=0x7fff84000d50, ref_pointer_array=..., fields=..., column_usage=MARK_COLUMNS_READ, sum_func_list=0x7fff84013fa0, pre_fix=0x7fff840fa4e0, allow_sum_func=true) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7311
#2  0x00000000007fc07c in JOIN::prepare (this=0x7fff84013c80, tables_init=0x7fff840fb880, wild_num=0, conds_init=0x7fff84013a58, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fa3a0, unit_arg=0x7fff840f9c18) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1167
#3  0x00000000007f7fb9 in mysql_select (thd=0x7fff84000d50, tables=0x7fff840fb880, wild_num=0, fields=..., conds=0x7fff84013a58, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2416184064, result=0x7fff840fdd50, unit=0x7fff840f9c18, select_lex=0x7fff840fa3a0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#4  0x00000000007f7933 in handle_select (thd=0x7fff84000d50, lex=0x7fff840f9b50, result=0x7fff840fdd50, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#5  0x00000000007b921f in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff840fb880) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#6  0x00000000007ae08a in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#7  0x00000000007db912 in Prepared_statement::execute (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4741
#8  0x00000000007d7688 in Prepared_statement::execute_loop (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false, packet=0x0, packet_end=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4172
#9  0x00000000007d7311 in mysql_sql_stmt_execute (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3280
#10 0x00000000007ae0d7 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3783
#11 0x00000000007a8af3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "execute stmt", length=12, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

5. setup_fields(), _trt_subquery.transaction_id

$112 = 0x205b680 <dbug_item_print_buf> "_trt_subquery.transaction_id"
$113 = (TABLE_LIST *) 0x7fff840fd6e0
$114 = 0x153fde4 "_trt_subquery"
table_list->select_lex:
$115 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
context->select_lex:
$116 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
#0  Item_field::fix_fields (this=0x7fff840fe5d8, thd=0x7fff84000d50, reference=0x7fff840fe718) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x000000000070f1c5 in setup_fields (thd=0x7fff84000d50, ref_pointer_array=..., fields=..., column_usage=MARK_COLUMNS_READ, sum_func_list=0x7fff84013fa0, pre_fix=0x7fff840fa4e0, allow_sum_func=true) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7311
#2  0x00000000007fc07c in JOIN::prepare (this=0x7fff84013c80, tables_init=0x7fff840fb880, wild_num=0, conds_init=0x7fff84013a58, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fa3a0, unit_arg=0x7fff840f9c18) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1167
#3  0x00000000007f7fb9 in mysql_select (thd=0x7fff84000d50, tables=0x7fff840fb880, wild_num=0, fields=..., conds=0x7fff84013a58, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2416184064, result=0x7fff840fdd50, unit=0x7fff840f9c18, select_lex=0x7fff840fa3a0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#4  0x00000000007f7933 in handle_select (thd=0x7fff84000d50, lex=0x7fff840f9b50, result=0x7fff840fdd50, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#5  0x00000000007b921f in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff840fb880) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#6  0x00000000007ae08a in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#7  0x00000000007db912 in Prepared_statement::execute (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4741
#8  0x00000000007d7688 in Prepared_statement::execute_loop (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false, packet=0x0, packet_end=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4172
#9  0x00000000007d7311 in mysql_sql_stmt_execute (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3280
#10 0x00000000007ae0d7 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3783
#11 0x00000000007a8af3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "execute stmt", length=12, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013
midenok commented 6 years ago

Bad: EXECUTE

execute stmt;

1. setup_fields()

$396 = (TABLE_LIST *) 0x7fff840fcbe0
$397 = 0x163fde3 "transaction_registry"
$398 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
$399 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
#0  Item_field::fix_fields (this=0x7fff7c109858, thd=0x7fff7c000d50, reference=0x7fff7c109970) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x000000000070f1c5 in setup_fields (thd=0x7fff7c000d50, ref_pointer_array=..., fields=..., column_usage=MARK_COLUMNS_READ, sum_func_list=0x7fff7c0145f0, pre_fix=0x7fff7c108df8, allow_sum_func=true) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7311
#2  0x00000000007fc07c in JOIN::prepare (this=0x7fff7c0142d0, tables_init=0x7fff7c1099a0, wild_num=0, conds_init=0x7fff7c10a120, og_num=1, order_init=0x7fff7c10a390, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff7c108cb8, unit_arg=0x7fff7c1090d0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1167
#3  0x00000000008d0b4d in st_select_lex_unit::prepare_join (this=0x7fff7c1090d0, thd_arg=0x7fff7c000d50, sl=0x7fff7c108cb8, tmp_result=0x7fff7c0141e8, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:662
#4  0x00000000008cbd69 in st_select_lex_unit::prepare (this=0x7fff7c1090d0, thd_arg=0x7fff7c000d50, sel_result=0x7fff7c0141e8, additional_options=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:947
#5  0x0000000000758d70 in mysql_derived_prepare (thd=0x7fff7c000d50, lex=0x7fff7c106910, derived=0x7fff7c10a4a0) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:769
#6  0x000000000075bc17 in mysql_handle_single_derived (lex=0x7fff7c106910, derived=0x7fff7c10a4a0, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:197
#7  0x0000000000903c0f in TABLE_LIST::handle_derived (this=0x7fff7c10a4a0, lex=0x7fff7c106910, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/table.cc:8053
#8  0x0000000000781603 in st_select_lex::handle_derived (this=0x7fff7c107160, lex=0x7fff7c106910, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.cc:4058
#9  0x00000000007fb9f1 in JOIN::prepare (this=0x7fff7c013c80, tables_init=0x7fff7c108640, wild_num=0, conds_init=0x7fff7c013a58, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff7c107160, unit_arg=0x7fff7c1069d8) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1067
#10 0x00000000007f7fb9 in mysql_select (thd=0x7fff7c000d50, tables=0x7fff7c108640, wild_num=0, fields=..., conds=0x7fff7c013a58, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2416184064, result=0x7fff7c10ab10, unit=0x7fff7c1069d8, select_lex=0x7fff7c107160) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#11 0x00000000007f7933 in handle_select (thd=0x7fff7c000d50, lex=0x7fff7c106910, result=0x7fff7c10ab10, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#12 0x00000000007b921f in execute_sqlcom_select (thd=0x7fff7c000d50, all_tables=0x7fff7c108640) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#13 0x00000000007ae08a in mysql_execute_command (thd=0x7fff7c000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#14 0x00000000007db912 in Prepared_statement::execute (this=0x7fff7c1032b0, expanded_query=0x7fffe52ab510, open_cursor=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4741
#15 0x00000000007d7688 in Prepared_statement::execute_loop (this=0x7fff7c1032b0, expanded_query=0x7fffe52ab510, open_cursor=false, packet=0x0, packet_end=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4172
#16 0x00000000007d7311 in mysql_sql_stmt_execute (thd=0x7fff7c000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3280
#17 0x00000000007ae0d7 in mysql_execute_command (thd=0x7fff7c000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3783
#18 0x00000000007a8af3 in mysql_parse (thd=0x7fff7c000d50, rawbuf=0x7fff7c013998 "execute stmt", length=12, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

2. setup_conds()

$400 = (TABLE_LIST *) 0x7fff840fcbe0
$401 = 0x163fde3 "transaction_registry"
$402 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
$403 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
#0  Item_field::fix_fields (this=0x7fff7c10a010, thd=0x7fff7c000d50, reference=0x7fff7c10a1b0) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x0000000000ba06cd in Item_func::fix_fields (this=0x7fff7c10a120, thd=0x7fff7c000d50, ref=0x7fff7c0146d8) at /home/midenok/src/mariadb/trunk/src/sql/item_func.cc:362
#2  0x000000000071105d in setup_conds (thd=0x7fff7c000d50, tables=0x7fff7c1099a0, leaves=..., conds=0x7fff7c0146d8) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:8057
#3  0x00000000007fdc5c in setup_without_group (thd=0x7fff7c000d50, ref_pointer_array=..., tables=0x7fff7c1099a0, leaves=..., fields=..., all_fields=..., conds=0x7fff7c0146d8, order=0x7fff7c10a390, group=0x0, win_specs=..., win_funcs=..., hidden_group_fields=0x7fff7c0145b7, reserved=0x7fff7c108f94) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:646
#4  0x00000000007fc1b1 in JOIN::prepare (this=0x7fff7c0142d0, tables_init=0x7fff7c1099a0, wild_num=0, conds_init=0x7fff7c10a120, og_num=1, order_init=0x7fff7c10a390, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff7c108cb8, unit_arg=0x7fff7c1090d0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1172
#5  0x00000000008d0b4d in st_select_lex_unit::prepare_join (this=0x7fff7c1090d0, thd_arg=0x7fff7c000d50, sl=0x7fff7c108cb8, tmp_result=0x7fff7c0141e8, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:662
#6  0x00000000008cbd69 in st_select_lex_unit::prepare (this=0x7fff7c1090d0, thd_arg=0x7fff7c000d50, sel_result=0x7fff7c0141e8, additional_options=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:947
#7  0x0000000000758d70 in mysql_derived_prepare (thd=0x7fff7c000d50, lex=0x7fff7c106910, derived=0x7fff7c10a4a0) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:769
#8  0x000000000075bc17 in mysql_handle_single_derived (lex=0x7fff7c106910, derived=0x7fff7c10a4a0, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:197
#9  0x0000000000903c0f in TABLE_LIST::handle_derived (this=0x7fff7c10a4a0, lex=0x7fff7c106910, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/table.cc:8053
#10 0x0000000000781603 in st_select_lex::handle_derived (this=0x7fff7c107160, lex=0x7fff7c106910, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.cc:4058
#11 0x00000000007fb9f1 in JOIN::prepare (this=0x7fff7c013c80, tables_init=0x7fff7c108640, wild_num=0, conds_init=0x7fff7c013a58, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff7c107160, unit_arg=0x7fff7c1069d8) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1067
#12 0x00000000007f7fb9 in mysql_select (thd=0x7fff7c000d50, tables=0x7fff7c108640, wild_num=0, fields=..., conds=0x7fff7c013a58, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2416184064, result=0x7fff7c10ab10, unit=0x7fff7c1069d8, select_lex=0x7fff7c107160) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#13 0x00000000007f7933 in handle_select (thd=0x7fff7c000d50, lex=0x7fff7c106910, result=0x7fff7c10ab10, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#14 0x00000000007b921f in execute_sqlcom_select (thd=0x7fff7c000d50, all_tables=0x7fff7c108640) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#15 0x00000000007ae08a in mysql_execute_command (thd=0x7fff7c000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#16 0x00000000007db912 in Prepared_statement::execute (this=0x7fff7c1032b0, expanded_query=0x7fffe52ab510, open_cursor=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4741
#17 0x00000000007d7688 in Prepared_statement::execute_loop (this=0x7fff7c1032b0, expanded_query=0x7fffe52ab510, open_cursor=false, packet=0x0, packet_end=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4172
#18 0x00000000007d7311 in mysql_sql_stmt_execute (thd=0x7fff7c000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3280
#19 0x00000000007ae0d7 in mysql_execute_command (thd=0x7fff7c000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3783
#20 0x00000000007a8af3 in mysql_parse (thd=0x7fff7c000d50, rawbuf=0x7fff7c013998 "execute stmt", length=12, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

3. setup_order()

$404 = (TABLE_LIST *) 0x7fff840fcbe0
$405 = 0x163fde3 "transaction_registry"
$406 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
$407 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
#0  Item_field::fix_fields (this=0x7fff7c10a280, thd=0x7fff7c000d50, reference=0x7fff7c10a3a0) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x00000000007fe538 in find_order_in_list (thd=0x7fff7c000d50, ref_pointer_array=..., tables=0x7fff7c1099a0, order=0x7fff7c10a390, fields=..., all_fields=..., is_group_field=false, add_to_all_fields=true, from_window_spec=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:22996
#2  0x000000000083e7a7 in setup_order (thd=0x7fff7c000d50, ref_pointer_array=..., tables=0x7fff7c1099a0, fields=..., all_fields=..., order=0x7fff7c10a390, from_window_spec=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:23040
#3  0x00000000007fde01 in setup_without_group (thd=0x7fff7c000d50, ref_pointer_array=..., tables=0x7fff7c1099a0, leaves=..., fields=..., all_fields=..., conds=0x7fff7c0146d8, order=0x7fff7c10a390, group=0x0, win_specs=..., win_funcs=..., hidden_group_fields=0x7fff7c0145b7, reserved=0x7fff7c108f94) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:662
#4  0x00000000007fc1b1 in JOIN::prepare (this=0x7fff7c0142d0, tables_init=0x7fff7c1099a0, wild_num=0, conds_init=0x7fff7c10a120, og_num=1, order_init=0x7fff7c10a390, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff7c108cb8, unit_arg=0x7fff7c1090d0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1172
#5  0x00000000008d0b4d in st_select_lex_unit::prepare_join (this=0x7fff7c1090d0, thd_arg=0x7fff7c000d50, sl=0x7fff7c108cb8, tmp_result=0x7fff7c0141e8, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:662
#6  0x00000000008cbd69 in st_select_lex_unit::prepare (this=0x7fff7c1090d0, thd_arg=0x7fff7c000d50, sel_result=0x7fff7c0141e8, additional_options=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:947
#7  0x0000000000758d70 in mysql_derived_prepare (thd=0x7fff7c000d50, lex=0x7fff7c106910, derived=0x7fff7c10a4a0) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:769
#8  0x000000000075bc17 in mysql_handle_single_derived (lex=0x7fff7c106910, derived=0x7fff7c10a4a0, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:197
#9  0x0000000000903c0f in TABLE_LIST::handle_derived (this=0x7fff7c10a4a0, lex=0x7fff7c106910, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/table.cc:8053
#10 0x0000000000781603 in st_select_lex::handle_derived (this=0x7fff7c107160, lex=0x7fff7c106910, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.cc:4058
#11 0x00000000007fb9f1 in JOIN::prepare (this=0x7fff7c013c80, tables_init=0x7fff7c108640, wild_num=0, conds_init=0x7fff7c013a58, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff7c107160, unit_arg=0x7fff7c1069d8) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1067
#12 0x00000000007f7fb9 in mysql_select (thd=0x7fff7c000d50, tables=0x7fff7c108640, wild_num=0, fields=..., conds=0x7fff7c013a58, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2416184064, result=0x7fff7c10ab10, unit=0x7fff7c1069d8, select_lex=0x7fff7c107160) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#13 0x00000000007f7933 in handle_select (thd=0x7fff7c000d50, lex=0x7fff7c106910, result=0x7fff7c10ab10, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#14 0x00000000007b921f in execute_sqlcom_select (thd=0x7fff7c000d50, all_tables=0x7fff7c108640) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#15 0x00000000007ae08a in mysql_execute_command (thd=0x7fff7c000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#16 0x00000000007db912 in Prepared_statement::execute (this=0x7fff7c1032b0, expanded_query=0x7fffe52ab510, open_cursor=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4741
#17 0x00000000007d7688 in Prepared_statement::execute_loop (this=0x7fff7c1032b0, expanded_query=0x7fffe52ab510, open_cursor=false, packet=0x0, packet_end=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4172
#18 0x00000000007d7311 in mysql_sql_stmt_execute (thd=0x7fff7c000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3280
#19 0x00000000007ae0d7 in mysql_execute_command (thd=0x7fff7c000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3783
#20 0x00000000007a8af3 in mysql_parse (thd=0x7fff7c000d50, rawbuf=0x7fff7c013998 "execute stmt", length=12, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

4. setup_fields()

$408 = (TABLE_LIST *) 0x7fff840fb880
$409 = 0x7fff840fb878 "i1"
$410 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
$411 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
#0  Item_field::fix_fields (this=0x7fff7c10b270, thd=0x7fff7c000d50, reference=0x7fff7c1082e0) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x000000000070f1c5 in setup_fields (thd=0x7fff7c000d50, ref_pointer_array=..., fields=..., column_usage=MARK_COLUMNS_READ, sum_func_list=0x7fff7c013fa0, pre_fix=0x7fff7c1072a0, allow_sum_func=true) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7311
#2  0x00000000007fc07c in JOIN::prepare (this=0x7fff7c013c80, tables_init=0x7fff7c108640, wild_num=0, conds_init=0x7fff7c013a58, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff7c107160, unit_arg=0x7fff7c1069d8) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1167
#3  0x00000000007f7fb9 in mysql_select (thd=0x7fff7c000d50, tables=0x7fff7c108640, wild_num=0, fields=..., conds=0x7fff7c013a58, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2416184064, result=0x7fff7c10ab10, unit=0x7fff7c1069d8, select_lex=0x7fff7c107160) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#4  0x00000000007f7933 in handle_select (thd=0x7fff7c000d50, lex=0x7fff7c106910, result=0x7fff7c10ab10, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#5  0x00000000007b921f in execute_sqlcom_select (thd=0x7fff7c000d50, all_tables=0x7fff7c108640) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#6  0x00000000007ae08a in mysql_execute_command (thd=0x7fff7c000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#7  0x00000000007db912 in Prepared_statement::execute (this=0x7fff7c1032b0, expanded_query=0x7fffe52ab510, open_cursor=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4741
#8  0x00000000007d7688 in Prepared_statement::execute_loop (this=0x7fff7c1032b0, expanded_query=0x7fffe52ab510, open_cursor=false, packet=0x0, packet_end=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4172
#9  0x00000000007d7311 in mysql_sql_stmt_execute (thd=0x7fff7c000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3280
#10 0x00000000007ae0d7 in mysql_execute_command (thd=0x7fff7c000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3783
#11 0x00000000007a8af3 in mysql_parse (thd=0x7fff7c000d50, rawbuf=0x7fff7c013998 "execute stmt", length=12, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

5. setup_fields()

$412 = (TABLE_LIST *) 0x7fff840fd6e0
$413 = 0x153fde4 "_trt_subquery"
$414 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
$415 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
#0  Item_field::fix_fields (this=0x7fff7c10b398, thd=0x7fff7c000d50, reference=0x7fff7c10b4d8) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x000000000070f1c5 in setup_fields (thd=0x7fff7c000d50, ref_pointer_array=..., fields=..., column_usage=MARK_COLUMNS_READ, sum_func_list=0x7fff7c013fa0, pre_fix=0x7fff7c1072a0, allow_sum_func=true) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7311
#2  0x00000000007fc07c in JOIN::prepare (this=0x7fff7c013c80, tables_init=0x7fff7c108640, wild_num=0, conds_init=0x7fff7c013a58, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff7c107160, unit_arg=0x7fff7c1069d8) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1167
#3  0x00000000007f7fb9 in mysql_select (thd=0x7fff7c000d50, tables=0x7fff7c108640, wild_num=0, fields=..., conds=0x7fff7c013a58, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2416184064, result=0x7fff7c10ab10, unit=0x7fff7c1069d8, select_lex=0x7fff7c107160) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#4  0x00000000007f7933 in handle_select (thd=0x7fff7c000d50, lex=0x7fff7c106910, result=0x7fff7c10ab10, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#5  0x00000000007b921f in execute_sqlcom_select (thd=0x7fff7c000d50, all_tables=0x7fff7c108640) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#6  0x00000000007ae08a in mysql_execute_command (thd=0x7fff7c000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#7  0x00000000007db912 in Prepared_statement::execute (this=0x7fff7c1032b0, expanded_query=0x7fffe52ab510, open_cursor=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4741
#8  0x00000000007d7688 in Prepared_statement::execute_loop (this=0x7fff7c1032b0, expanded_query=0x7fffe52ab510, open_cursor=false, packet=0x0, packet_end=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4172
#9  0x00000000007d7311 in mysql_sql_stmt_execute (thd=0x7fff7c000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3280
#10 0x00000000007ae0d7 in mysql_execute_command (thd=0x7fff7c000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3783
#11 0x00000000007a8af3 in mysql_parse (thd=0x7fff7c000d50, rawbuf=0x7fff7c013998 "execute stmt", length=12, parser_state=0x7fffe52ae640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013
midenok commented 6 years ago

Good: PREPARE

prepare stmt from "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)";

1. setup_fields(), mysql.transaction_registry.transaction_id

this:
$1 = 0x205b680 <dbug_item_print_buf> "`mysql`.transaction_registry.transaction_id"
table_list:
$2 = (TABLE_LIST *) 0x7fff840fd0d8
alias:
$3 = 0x7fff840fd0c0 "transaction_registry"
table_list_sl:
$4 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
context_sl:
$5 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
#0  Item_field::fix_fields (this=0x7fff840fcf38, thd=0x7fff84000d50, reference=0x7fff840fd060) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x000000000070f1c5 in setup_fields (thd=0x7fff84000d50, ref_pointer_array=..., fields=..., column_usage=MARK_COLUMNS_READ, sum_func_list=0x7fff84014628, pre_fix=0x7fff840fc4a8, allow_sum_func=true) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7311
#2  0x00000000007fc07c in JOIN::prepare (this=0x7fff84014308, tables_init=0x7fff840fd0d8, wild_num=0, conds_init=0x7fff840fd958, og_num=1, order_init=0x7fff840fdc00, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fc368, unit_arg=0x7fff840fc780) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1167
#3  0x00000000008d0b4d in st_select_lex_unit::prepare_join (this=0x7fff840fc780, thd_arg=0x7fff84000d50, sl=0x7fff840fc368, tmp_result=0x7fff84014220, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:662
#4  0x00000000008cbd69 in st_select_lex_unit::prepare (this=0x7fff840fc780, thd_arg=0x7fff84000d50, sel_result=0x7fff84014220, additional_options=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:947
#5  0x0000000000758d70 in mysql_derived_prepare (thd=0x7fff84000d50, lex=0x7fff840f9b50, derived=0x7fff840fdd38) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:769
#6  0x000000000075b8cd in mysql_handle_derived (lex=0x7fff840f9b50, phases=35) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:121
#7  0x0000000000709ce6 in open_normal_and_derived_tables (thd=0x7fff84000d50, tables=0x7fff840fbcf8, flags=512, dt_phases=35) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:4971
#8  0x00000000007dfd52 in mysql_test_select (stmt=0x7fff840f7020, tables=0x7fff840fbcf8) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:1520
#9  0x00000000007daa97 in check_prepared_statement (stmt=0x7fff840f7020) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:2321
#10 0x00000000007d4e2e in Prepared_statement::prepare (this=0x7fff840f7020, packet=0x7fff84013e70 "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)", packet_len=539) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3965
#11 0x00000000007d5858 in mysql_sql_stmt_prepare (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:2798
#12 0x00000000007ae0c4 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3778
#13 0x00000000007a8af3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "prepare stmt from \"select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)\"", length=559, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

2. setup_conds(), mysql.transaction_registry.commit_timestamp

this:
$6 = 0x205b680 <dbug_item_print_buf> "`mysql`.transaction_registry.commit_timestamp"
table_list:
$7 = (TABLE_LIST *) 0x7fff840fd0d8
alias:
$8 = 0x7fff840fd0c0 "transaction_registry"
table_list_sl:
$9 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
context_sl:
$10 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
#0  Item_field::fix_fields (this=0x7fff840fd780, thd=0x7fff84000d50, reference=0x7fff840fd9e8) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x0000000000ba06cd in Item_func::fix_fields (this=0x7fff840fd958, thd=0x7fff84000d50, ref=0x7fff84014710) at /home/midenok/src/mariadb/trunk/src/sql/item_func.cc:362
#2  0x000000000071105d in setup_conds (thd=0x7fff84000d50, tables=0x7fff840fd0d8, leaves=..., conds=0x7fff84014710) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:8057
#3  0x00000000007fdc5c in setup_without_group (thd=0x7fff84000d50, ref_pointer_array=..., tables=0x7fff840fd0d8, leaves=..., fields=..., all_fields=..., conds=0x7fff84014710, order=0x7fff840fdc00, group=0x0, win_specs=..., win_funcs=..., hidden_group_fields=0x7fff840145ef, reserved=0x7fff840fc644) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:646
#4  0x00000000007fc1b1 in JOIN::prepare (this=0x7fff84014308, tables_init=0x7fff840fd0d8, wild_num=0, conds_init=0x7fff840fd958, og_num=1, order_init=0x7fff840fdc00, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fc368, unit_arg=0x7fff840fc780) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1172
#5  0x00000000008d0b4d in st_select_lex_unit::prepare_join (this=0x7fff840fc780, thd_arg=0x7fff84000d50, sl=0x7fff840fc368, tmp_result=0x7fff84014220, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:662
#6  0x00000000008cbd69 in st_select_lex_unit::prepare (this=0x7fff840fc780, thd_arg=0x7fff84000d50, sel_result=0x7fff84014220, additional_options=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:947
#7  0x0000000000758d70 in mysql_derived_prepare (thd=0x7fff84000d50, lex=0x7fff840f9b50, derived=0x7fff840fdd38) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:769
#8  0x000000000075b8cd in mysql_handle_derived (lex=0x7fff840f9b50, phases=35) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:121
#9  0x0000000000709ce6 in open_normal_and_derived_tables (thd=0x7fff84000d50, tables=0x7fff840fbcf8, flags=512, dt_phases=35) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:4971
#10 0x00000000007dfd52 in mysql_test_select (stmt=0x7fff840f7020, tables=0x7fff840fbcf8) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:1520
#11 0x00000000007daa97 in check_prepared_statement (stmt=0x7fff840f7020) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:2321
#12 0x00000000007d4e2e in Prepared_statement::prepare (this=0x7fff840f7020, packet=0x7fff84013e70 "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)", packet_len=539) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3965
#13 0x00000000007d5858 in mysql_sql_stmt_prepare (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:2798
#14 0x00000000007ae0c4 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3778
#15 0x00000000007a8af3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "prepare stmt from \"select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)\"", length=559, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

3. setup_order(), mysql.transaction_registry.commit_timestamp

this:
$11 = 0x205b680 <dbug_item_print_buf> "`mysql`.transaction_registry.commit_timestamp"
table_list:
$12 = (TABLE_LIST *) 0x7fff840fd0d8
alias:
$13 = 0x7fff840fd0c0 "transaction_registry"
table_list_sl:
$14 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
context_sl:
$15 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
#0  Item_field::fix_fields (this=0x7fff840fdaf0, thd=0x7fff84000d50, reference=0x7fff840fdc10) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x00000000007fe538 in find_order_in_list (thd=0x7fff84000d50, ref_pointer_array=..., tables=0x7fff840fd0d8, order=0x7fff840fdc00, fields=..., all_fields=..., is_group_field=false, add_to_all_fields=true, from_window_spec=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:22996
#2  0x000000000083e7a7 in setup_order (thd=0x7fff84000d50, ref_pointer_array=..., tables=0x7fff840fd0d8, fields=..., all_fields=..., order=0x7fff840fdc00, from_window_spec=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:23040
#3  0x00000000007fde01 in setup_without_group (thd=0x7fff84000d50, ref_pointer_array=..., tables=0x7fff840fd0d8, leaves=..., fields=..., all_fields=..., conds=0x7fff84014710, order=0x7fff840fdc00, group=0x0, win_specs=..., win_funcs=..., hidden_group_fields=0x7fff840145ef, reserved=0x7fff840fc644) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:662
#4  0x00000000007fc1b1 in JOIN::prepare (this=0x7fff84014308, tables_init=0x7fff840fd0d8, wild_num=0, conds_init=0x7fff840fd958, og_num=1, order_init=0x7fff840fdc00, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fc368, unit_arg=0x7fff840fc780) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1172
#5  0x00000000008d0b4d in st_select_lex_unit::prepare_join (this=0x7fff840fc780, thd_arg=0x7fff84000d50, sl=0x7fff840fc368, tmp_result=0x7fff84014220, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:662
#6  0x00000000008cbd69 in st_select_lex_unit::prepare (this=0x7fff840fc780, thd_arg=0x7fff84000d50, sel_result=0x7fff84014220, additional_options=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:947
#7  0x0000000000758d70 in mysql_derived_prepare (thd=0x7fff84000d50, lex=0x7fff840f9b50, derived=0x7fff840fdd38) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:769
#8  0x000000000075b8cd in mysql_handle_derived (lex=0x7fff840f9b50, phases=35) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:121
#9  0x0000000000709ce6 in open_normal_and_derived_tables (thd=0x7fff84000d50, tables=0x7fff840fbcf8, flags=512, dt_phases=35) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:4971
#10 0x00000000007dfd52 in mysql_test_select (stmt=0x7fff840f7020, tables=0x7fff840fbcf8) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:1520
#11 0x00000000007daa97 in check_prepared_statement (stmt=0x7fff840f7020) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:2321
#12 0x00000000007d4e2e in Prepared_statement::prepare (this=0x7fff840f7020, packet=0x7fff84013e70 "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)", packet_len=539) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3965
#13 0x00000000007d5858 in mysql_sql_stmt_prepare (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:2798
#14 0x00000000007ae0c4 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3778
#15 0x00000000007a8af3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "prepare stmt from \"select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)\"", length=559, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

4. setup_fields(), i1.x

this:
$16 = 0x205b680 <dbug_item_print_buf> "i1.x"
table_list:
$17 = (TABLE_LIST *) 0x7fff840fbcf8
alias:
$18 = 0x7fff840fbcf0 "i1"
table_list_sl:
$19 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
context_sl:
$20 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
#0  Item_field::fix_fields (this=0x7fff840fb7a0, thd=0x7fff84000d50, reference=0x7fff840fb8c0) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x000000000070f1c5 in setup_fields (thd=0x7fff84000d50, ref_pointer_array=..., fields=..., column_usage=MARK_COLUMNS_READ, sum_func_list=0x7fff84014c70, pre_fix=0x7fff840fa4e0, allow_sum_func=true) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7311
#2  0x00000000007fc07c in JOIN::prepare (this=0x7fff84014950, tables_init=0x7fff840fbcf8, wild_num=0, conds_init=0x7fff840ff168, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fa3a0, unit_arg=0x7fff840f9c18) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1167
#3  0x00000000008d0b4d in st_select_lex_unit::prepare_join (this=0x7fff840f9c18, thd_arg=0x7fff84000d50, sl=0x7fff840fa3a0, tmp_result=0x0, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:662
#4  0x00000000008cbd69 in st_select_lex_unit::prepare (this=0x7fff840f9c18, thd_arg=0x7fff84000d50, sel_result=0x0, additional_options=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:947
#5  0x00000000007dfd9f in mysql_test_select (stmt=0x7fff840f7020, tables=0x7fff840fbcf8) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:1531
#6  0x00000000007daa97 in check_prepared_statement (stmt=0x7fff840f7020) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:2321
#7  0x00000000007d4e2e in Prepared_statement::prepare (this=0x7fff840f7020, packet=0x7fff84013e70 "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)", packet_len=539) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3965
#8  0x00000000007d5858 in mysql_sql_stmt_prepare (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:2798
#9  0x00000000007ae0c4 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3778
#10 0x00000000007a8af3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "prepare stmt from \"select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)\"", length=559, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

5. setup_fields(), _trt_subquery.transaction_id

this:
$21 = 0x205b680 <dbug_item_print_buf> "_trt_subquery.transaction_id"
table_list:
$22 = (TABLE_LIST *) 0x7fff840fdd38
alias:
$23 = 0x7fff840fdcf0 "_trt_subquery"
table_list_sl:
$24 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
context_sl:
$25 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
#0  Item_field::fix_fields (this=0x7fff840fb8f0, thd=0x7fff84000d50, reference=0x7fff840fba18) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x000000000070f1c5 in setup_fields (thd=0x7fff84000d50, ref_pointer_array=..., fields=..., column_usage=MARK_COLUMNS_READ, sum_func_list=0x7fff84014c70, pre_fix=0x7fff840fa4e0, allow_sum_func=true) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7311
#2  0x00000000007fc07c in JOIN::prepare (this=0x7fff84014950, tables_init=0x7fff840fbcf8, wild_num=0, conds_init=0x7fff840ff168, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fa3a0, unit_arg=0x7fff840f9c18) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1167
#3  0x00000000008d0b4d in st_select_lex_unit::prepare_join (this=0x7fff840f9c18, thd_arg=0x7fff84000d50, sl=0x7fff840fa3a0, tmp_result=0x0, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:662
#4  0x00000000008cbd69 in st_select_lex_unit::prepare (this=0x7fff840f9c18, thd_arg=0x7fff84000d50, sel_result=0x0, additional_options=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:947
#5  0x00000000007dfd9f in mysql_test_select (stmt=0x7fff840f7020, tables=0x7fff840fbcf8) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:1531
#6  0x00000000007daa97 in check_prepared_statement (stmt=0x7fff840f7020) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:2321
#7  0x00000000007d4e2e in Prepared_statement::prepare (this=0x7fff840f7020, packet=0x7fff84013e70 "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)", packet_len=539) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3965
#8  0x00000000007d5858 in mysql_sql_stmt_prepare (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:2798
#9  0x00000000007ae0c4 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3778
#10 0x00000000007a8af3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "prepare stmt from \"select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)\"", length=559, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

6. setup_fields(), row_start

this:
$26 = 0x205b680 <dbug_item_print_buf> "row_start"
table_list:
$27 = (TABLE_LIST *) 0x7fff840fbcf8
alias:
$28 = 0x7fff840fbcf0 "i1"
table_list_sl:
$29 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
context_sl:
$30 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
#0  Item_field::fix_fields (this=0x7fff840fba40, thd=0x7fff84000d50, reference=0x7fff840fbb68) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x000000000070f1c5 in setup_fields (thd=0x7fff84000d50, ref_pointer_array=..., fields=..., column_usage=MARK_COLUMNS_READ, sum_func_list=0x7fff84014c70, pre_fix=0x7fff840fa4e0, allow_sum_func=true) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7311
#2  0x00000000007fc07c in JOIN::prepare (this=0x7fff84014950, tables_init=0x7fff840fbcf8, wild_num=0, conds_init=0x7fff840ff168, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fa3a0, unit_arg=0x7fff840f9c18) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1167
#3  0x00000000008d0b4d in st_select_lex_unit::prepare_join (this=0x7fff840f9c18, thd_arg=0x7fff84000d50, sl=0x7fff840fa3a0, tmp_result=0x0, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:662
#4  0x00000000008cbd69 in st_select_lex_unit::prepare (this=0x7fff840f9c18, thd_arg=0x7fff84000d50, sel_result=0x0, additional_options=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:947
#5  0x00000000007dfd9f in mysql_test_select (stmt=0x7fff840f7020, tables=0x7fff840fbcf8) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:1531
#6  0x00000000007daa97 in check_prepared_statement (stmt=0x7fff840f7020) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:2321
#7  0x00000000007d4e2e in Prepared_statement::prepare (this=0x7fff840f7020, packet=0x7fff84013e70 "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)", packet_len=539) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3965
#8  0x00000000007d5858 in mysql_sql_stmt_prepare (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:2798
#9  0x00000000007ae0c4 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3778
#10 0x00000000007a8af3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "prepare stmt from \"select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)\"", length=559, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

7. setup_fields(), row_end

this:
$31 = 0x205b680 <dbug_item_print_buf> "row_end"
table_list:
$32 = (TABLE_LIST *) 0x7fff840fbcf8
alias:
$33 = 0x7fff840fbcf0 "i1"
table_list_sl:
$34 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,i1.row_start AS row_start,row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
context_sl:
$35 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,i1.row_start AS row_start,row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
#0  Item_field::fix_fields (this=0x7fff840fbb88, thd=0x7fff84000d50, reference=0x7fff840fbca8) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x000000000070f1c5 in setup_fields (thd=0x7fff84000d50, ref_pointer_array=..., fields=..., column_usage=MARK_COLUMNS_READ, sum_func_list=0x7fff84014c70, pre_fix=0x7fff840fa4e0, allow_sum_func=true) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7311
#2  0x00000000007fc07c in JOIN::prepare (this=0x7fff84014950, tables_init=0x7fff840fbcf8, wild_num=0, conds_init=0x7fff840ff168, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fa3a0, unit_arg=0x7fff840f9c18) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1167
#3  0x00000000008d0b4d in st_select_lex_unit::prepare_join (this=0x7fff840f9c18, thd_arg=0x7fff84000d50, sl=0x7fff840fa3a0, tmp_result=0x0, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:662
#4  0x00000000008cbd69 in st_select_lex_unit::prepare (this=0x7fff840f9c18, thd_arg=0x7fff84000d50, sel_result=0x0, additional_options=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:947
#5  0x00000000007dfd9f in mysql_test_select (stmt=0x7fff840f7020, tables=0x7fff840fbcf8) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:1531
#6  0x00000000007daa97 in check_prepared_statement (stmt=0x7fff840f7020) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:2321
#7  0x00000000007d4e2e in Prepared_statement::prepare (this=0x7fff840f7020, packet=0x7fff84013e70 "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)", packet_len=539) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3965
#8  0x00000000007d5858 in mysql_sql_stmt_prepare (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:2798
#9  0x00000000007ae0c4 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3778
#10 0x00000000007a8af3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "prepare stmt from \"select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)\"", length=559, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

8. setup_conds(), i1.row_end

this:
$36 = 0x205b680 <dbug_item_print_buf> "i1.row_end"
table_list:
$37 = (TABLE_LIST *) 0x7fff840fbcf8
alias:
$38 = 0x7fff840fbcf0 "i1"
table_list_sl:
$39 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,i1.row_start AS row_start,i1.row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
context_sl:
$40 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,i1.row_start AS row_start,i1.row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
#0  Item_field::fix_fields (this=0x7fff840feac0, thd=0x7fff84000d50, reference=0x7fff840fedc8) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x0000000000ba06cd in Item_func::fix_fields (this=0x7fff840fed38, thd=0x7fff84000d50, ref=0x7fff840ff280) at /home/midenok/src/mariadb/trunk/src/sql/item_func.cc:362
#2  0x0000000000b61194 in Item_cond::fix_fields (this=0x7fff840ff168, thd=0x7fff84000d50, ref=0x7fff84014d58) at /home/midenok/src/mariadb/trunk/src/sql/item_cmpfunc.cc:4697
#3  0x000000000071105d in setup_conds (thd=0x7fff84000d50, tables=0x7fff840fbcf8, leaves=..., conds=0x7fff84014d58) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:8057
#4  0x00000000007fdc5c in setup_without_group (thd=0x7fff84000d50, ref_pointer_array=..., tables=0x7fff840fbcf8, leaves=..., fields=..., all_fields=..., conds=0x7fff84014d58, order=0x0, group=0x0, win_specs=..., win_funcs=..., hidden_group_fields=0x7fff84014c37, reserved=0x7fff840fa67c) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:646
#5  0x00000000007fc1b1 in JOIN::prepare (this=0x7fff84014950, tables_init=0x7fff840fbcf8, wild_num=0, conds_init=0x7fff840ff168, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fa3a0, unit_arg=0x7fff840f9c18) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1172
#6  0x00000000008d0b4d in st_select_lex_unit::prepare_join (this=0x7fff840f9c18, thd_arg=0x7fff84000d50, sl=0x7fff840fa3a0, tmp_result=0x0, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:662
#7  0x00000000008cbd69 in st_select_lex_unit::prepare (this=0x7fff840f9c18, thd_arg=0x7fff84000d50, sel_result=0x0, additional_options=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:947
#8  0x00000000007dfd9f in mysql_test_select (stmt=0x7fff840f7020, tables=0x7fff840fbcf8) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:1531
#9  0x00000000007daa97 in check_prepared_statement (stmt=0x7fff840f7020) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:2321
#10 0x00000000007d4e2e in Prepared_statement::prepare (this=0x7fff840f7020, packet=0x7fff84013e70 "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)", packet_len=539) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3965
#11 0x00000000007d5858 in mysql_sql_stmt_prepare (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:2798
#12 0x00000000007ae0c4 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3778
#13 0x00000000007a8af3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "prepare stmt from \"select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)\"", length=559, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

9. setup_conds(), _trt_subquery.transaction_id

this:
$41 = 0x205b680 <dbug_item_print_buf> "_trt_subquery.transaction_id"
table_list:
$42 = (TABLE_LIST *) 0x7fff840fdd38
alias:
$43 = 0x7fff840fdcf0 "_trt_subquery"
table_list_sl:
$44 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,i1.row_start AS row_start,i1.row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
context_sl:
$45 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,i1.row_start AS row_start,i1.row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
#0  Item_field::fix_fields (this=0x7fff840fec18, thd=0x7fff84000d50, reference=0x7fff840fedd0) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x0000000000ba06cd in Item_func::fix_fields (this=0x7fff840fed38, thd=0x7fff84000d50, ref=0x7fff840ff280) at /home/midenok/src/mariadb/trunk/src/sql/item_func.cc:362
#2  0x0000000000b61194 in Item_cond::fix_fields (this=0x7fff840ff168, thd=0x7fff84000d50, ref=0x7fff84014d58) at /home/midenok/src/mariadb/trunk/src/sql/item_cmpfunc.cc:4697
#3  0x000000000071105d in setup_conds (thd=0x7fff84000d50, tables=0x7fff840fbcf8, leaves=..., conds=0x7fff84014d58) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:8057
#4  0x00000000007fdc5c in setup_without_group (thd=0x7fff84000d50, ref_pointer_array=..., tables=0x7fff840fbcf8, leaves=..., fields=..., all_fields=..., conds=0x7fff84014d58, order=0x0, group=0x0, win_specs=..., win_funcs=..., hidden_group_fields=0x7fff84014c37, reserved=0x7fff840fa67c) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:646
#5  0x00000000007fc1b1 in JOIN::prepare (this=0x7fff84014950, tables_init=0x7fff840fbcf8, wild_num=0, conds_init=0x7fff840ff168, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fa3a0, unit_arg=0x7fff840f9c18) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1172
#6  0x00000000008d0b4d in st_select_lex_unit::prepare_join (this=0x7fff840f9c18, thd_arg=0x7fff84000d50, sl=0x7fff840fa3a0, tmp_result=0x0, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:662
#7  0x00000000008cbd69 in st_select_lex_unit::prepare (this=0x7fff840f9c18, thd_arg=0x7fff84000d50, sel_result=0x0, additional_options=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:947
#8  0x00000000007dfd9f in mysql_test_select (stmt=0x7fff840f7020, tables=0x7fff840fbcf8) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:1531
#9  0x00000000007daa97 in check_prepared_statement (stmt=0x7fff840f7020) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:2321
#10 0x00000000007d4e2e in Prepared_statement::prepare (this=0x7fff840f7020, packet=0x7fff84013e70 "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)", packet_len=539) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3965
#11 0x00000000007d5858 in mysql_sql_stmt_prepare (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:2798
#12 0x00000000007ae0c4 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3778
#13 0x00000000007a8af3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "prepare stmt from \"select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)\"", length=559, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

10. setup_conds(), _trt_subquery.transaction_id

this:
$46 = 0x205b680 <dbug_item_print_buf> "_trt_subquery.transaction_id"
table_list:
$47 = (TABLE_LIST *) 0x7fff840fdd38
alias:
$48 = 0x7fff840fdcf0 "_trt_subquery"
table_list_sl:
$49 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,i1.row_start AS row_start,i1.row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
context_sl:
$50 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,i1.row_start AS row_start,i1.row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
#0  Item_field::fix_fields (this=0x7fff840fee30, thd=0x7fff84000d50, reference=0x7fff840ff130) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x0000000000ba06cd in Item_func::fix_fields (this=0x7fff840ff0a0, thd=0x7fff84000d50, ref=0x7fff840ff290) at /home/midenok/src/mariadb/trunk/src/sql/item_func.cc:362
#2  0x0000000000b61194 in Item_cond::fix_fields (this=0x7fff840ff168, thd=0x7fff84000d50, ref=0x7fff84014d58) at /home/midenok/src/mariadb/trunk/src/sql/item_cmpfunc.cc:4697
#3  0x000000000071105d in setup_conds (thd=0x7fff84000d50, tables=0x7fff840fbcf8, leaves=..., conds=0x7fff84014d58) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:8057
#4  0x00000000007fdc5c in setup_without_group (thd=0x7fff84000d50, ref_pointer_array=..., tables=0x7fff840fbcf8, leaves=..., fields=..., all_fields=..., conds=0x7fff84014d58, order=0x0, group=0x0, win_specs=..., win_funcs=..., hidden_group_fields=0x7fff84014c37, reserved=0x7fff840fa67c) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:646
#5  0x00000000007fc1b1 in JOIN::prepare (this=0x7fff84014950, tables_init=0x7fff840fbcf8, wild_num=0, conds_init=0x7fff840ff168, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fa3a0, unit_arg=0x7fff840f9c18) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1172
#6  0x00000000008d0b4d in st_select_lex_unit::prepare_join (this=0x7fff840f9c18, thd_arg=0x7fff84000d50, sl=0x7fff840fa3a0, tmp_result=0x0, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:662
#7  0x00000000008cbd69 in st_select_lex_unit::prepare (this=0x7fff840f9c18, thd_arg=0x7fff84000d50, sel_result=0x0, additional_options=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:947
#8  0x00000000007dfd9f in mysql_test_select (stmt=0x7fff840f7020, tables=0x7fff840fbcf8) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:1531
#9  0x00000000007daa97 in check_prepared_statement (stmt=0x7fff840f7020) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:2321
#10 0x00000000007d4e2e in Prepared_statement::prepare (this=0x7fff840f7020, packet=0x7fff84013e70 "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)", packet_len=539) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3965
#11 0x00000000007d5858 in mysql_sql_stmt_prepare (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:2798
#12 0x00000000007ae0c4 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3778
#13 0x00000000007a8af3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "prepare stmt from \"select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)\"", length=559, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

11. setup_conds(), i1.row_start

this:
$51 = 0x205b680 <dbug_item_print_buf> "i1.row_start"
table_list:
$52 = (TABLE_LIST *) 0x7fff840fbcf8
alias:
$53 = 0x7fff840fbcf0 "i1"
table_list_sl:
$54 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,i1.row_start AS row_start,i1.row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
context_sl:
$55 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,i1.row_start AS row_start,i1.row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
#0  Item_field::fix_fields (this=0x7fff840fef80, thd=0x7fff84000d50, reference=0x7fff840ff138) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x0000000000ba06cd in Item_func::fix_fields (this=0x7fff840ff0a0, thd=0x7fff84000d50, ref=0x7fff840ff290) at /home/midenok/src/mariadb/trunk/src/sql/item_func.cc:362
#2  0x0000000000b61194 in Item_cond::fix_fields (this=0x7fff840ff168, thd=0x7fff84000d50, ref=0x7fff84014d58) at /home/midenok/src/mariadb/trunk/src/sql/item_cmpfunc.cc:4697
#3  0x000000000071105d in setup_conds (thd=0x7fff84000d50, tables=0x7fff840fbcf8, leaves=..., conds=0x7fff84014d58) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:8057
#4  0x00000000007fdc5c in setup_without_group (thd=0x7fff84000d50, ref_pointer_array=..., tables=0x7fff840fbcf8, leaves=..., fields=..., all_fields=..., conds=0x7fff84014d58, order=0x0, group=0x0, win_specs=..., win_funcs=..., hidden_group_fields=0x7fff84014c37, reserved=0x7fff840fa67c) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:646
#5  0x00000000007fc1b1 in JOIN::prepare (this=0x7fff84014950, tables_init=0x7fff840fbcf8, wild_num=0, conds_init=0x7fff840ff168, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fa3a0, unit_arg=0x7fff840f9c18) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1172
#6  0x00000000008d0b4d in st_select_lex_unit::prepare_join (this=0x7fff840f9c18, thd_arg=0x7fff84000d50, sl=0x7fff840fa3a0, tmp_result=0x0, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:662
#7  0x00000000008cbd69 in st_select_lex_unit::prepare (this=0x7fff840f9c18, thd_arg=0x7fff84000d50, sel_result=0x0, additional_options=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:947
#8  0x00000000007dfd9f in mysql_test_select (stmt=0x7fff840f7020, tables=0x7fff840fbcf8) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:1531
#9  0x00000000007daa97 in check_prepared_statement (stmt=0x7fff840f7020) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:2321
#10 0x00000000007d4e2e in Prepared_statement::prepare (this=0x7fff840f7020, packet=0x7fff84013e70 "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)", packet_len=539) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3965
#11 0x00000000007d5858 in mysql_sql_stmt_prepare (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:2798
#12 0x00000000007ae0c4 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3778
#13 0x00000000007a8af3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "prepare stmt from \"select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)\"", length=559, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013
midenok commented 6 years ago

Good: EXECUTE

1. setup_fields(), mysql.transaction_registry.transaction_id

$1 = 0x205b680 <dbug_item_print_buf> "`mysql`.transaction_registry.transaction_id"
$2 = (TABLE_LIST *) 0x7fff840fd0d8
$3 = 0x7fff840fd0c0 "transaction_registry"
table_list->select_lex:
$4 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
context->select_lex:
$5 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
#0  Item_field::fix_fields (this=0x7fff840fcf38, thd=0x7fff84000d50, reference=0x7fff840fd060) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x000000000070f1c5 in setup_fields (thd=0x7fff84000d50, ref_pointer_array=..., fields=..., column_usage=MARK_COLUMNS_READ, sum_func_list=0x7fff840145f0, pre_fix=0x7fff840fc4a8, allow_sum_func=true) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7311
#2  0x00000000007fc07c in JOIN::prepare (this=0x7fff840142d0, tables_init=0x7fff840fd0d8, wild_num=0, conds_init=0x7fff840fd958, og_num=1, order_init=0x7fff840fdc00, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fc368, unit_arg=0x7fff840fc780) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1167
#3  0x00000000008d0b4d in st_select_lex_unit::prepare_join (this=0x7fff840fc780, thd_arg=0x7fff84000d50, sl=0x7fff840fc368, tmp_result=0x7fff840141e8, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:662
#4  0x00000000008cbd69 in st_select_lex_unit::prepare (this=0x7fff840fc780, thd_arg=0x7fff84000d50, sel_result=0x7fff840141e8, additional_options=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:947
#5  0x0000000000758d70 in mysql_derived_prepare (thd=0x7fff84000d50, lex=0x7fff840f9b50, derived=0x7fff840fdd38) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:769
#6  0x000000000075bc17 in mysql_handle_single_derived (lex=0x7fff840f9b50, derived=0x7fff840fdd38, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:197
#7  0x0000000000903c0f in TABLE_LIST::handle_derived (this=0x7fff840fdd38, lex=0x7fff840f9b50, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/table.cc:8053
#8  0x0000000000781603 in st_select_lex::handle_derived (this=0x7fff840fa3a0, lex=0x7fff840f9b50, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.cc:4058
#9  0x00000000007fb9f1 in JOIN::prepare (this=0x7fff84013c80, tables_init=0x7fff840fbcf8, wild_num=0, conds_init=0x7fff84013a58, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fa3a0, unit_arg=0x7fff840f9c18) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1067
#10 0x00000000007f7fb9 in mysql_select (thd=0x7fff84000d50, tables=0x7fff840fbcf8, wild_num=0, fields=..., conds=0x7fff84013a58, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2416184064, result=0x7fff840ff298, unit=0x7fff840f9c18, select_lex=0x7fff840fa3a0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#11 0x00000000007f7933 in handle_select (thd=0x7fff84000d50, lex=0x7fff840f9b50, result=0x7fff840ff298, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#12 0x00000000007b921f in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff840fbcf8) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#13 0x00000000007ae08a in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#14 0x00000000007db912 in Prepared_statement::execute (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4741
#15 0x00000000007d7688 in Prepared_statement::execute_loop (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false, packet=0x0, packet_end=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4172
#16 0x00000000007d7311 in mysql_sql_stmt_execute (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3280
#17 0x00000000007ae0d7 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3783
#18 0x00000000007a8af3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "execute stmt", length=12, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

2. setup_conds(), mysql.transaction_registry.commit_timestamp

$6 = 0x205b680 <dbug_item_print_buf> "`mysql`.transaction_registry.commit_timestamp"
$7 = (TABLE_LIST *) 0x7fff840fd0d8
$8 = 0x7fff840fd0c0 "transaction_registry"
table_list->select_lex:
$9 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
context->select_lex:
$10 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
#0  Item_field::fix_fields (this=0x7fff840fd780, thd=0x7fff84000d50, reference=0x7fff840fd9e8) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x0000000000ba06cd in Item_func::fix_fields (this=0x7fff840fd958, thd=0x7fff84000d50, ref=0x7fff840146d8) at /home/midenok/src/mariadb/trunk/src/sql/item_func.cc:362
#2  0x000000000071105d in setup_conds (thd=0x7fff84000d50, tables=0x7fff840fd0d8, leaves=..., conds=0x7fff840146d8) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:8057
#3  0x00000000007fdc5c in setup_without_group (thd=0x7fff84000d50, ref_pointer_array=..., tables=0x7fff840fd0d8, leaves=..., fields=..., all_fields=..., conds=0x7fff840146d8, order=0x7fff840fdc00, group=0x0, win_specs=..., win_funcs=..., hidden_group_fields=0x7fff840145b7, reserved=0x7fff840fc644) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:646
#4  0x00000000007fc1b1 in JOIN::prepare (this=0x7fff840142d0, tables_init=0x7fff840fd0d8, wild_num=0, conds_init=0x7fff840fd958, og_num=1, order_init=0x7fff840fdc00, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fc368, unit_arg=0x7fff840fc780) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1172
#5  0x00000000008d0b4d in st_select_lex_unit::prepare_join (this=0x7fff840fc780, thd_arg=0x7fff84000d50, sl=0x7fff840fc368, tmp_result=0x7fff840141e8, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:662
#6  0x00000000008cbd69 in st_select_lex_unit::prepare (this=0x7fff840fc780, thd_arg=0x7fff84000d50, sel_result=0x7fff840141e8, additional_options=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:947
#7  0x0000000000758d70 in mysql_derived_prepare (thd=0x7fff84000d50, lex=0x7fff840f9b50, derived=0x7fff840fdd38) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:769
#8  0x000000000075bc17 in mysql_handle_single_derived (lex=0x7fff840f9b50, derived=0x7fff840fdd38, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:197
#9  0x0000000000903c0f in TABLE_LIST::handle_derived (this=0x7fff840fdd38, lex=0x7fff840f9b50, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/table.cc:8053
#10 0x0000000000781603 in st_select_lex::handle_derived (this=0x7fff840fa3a0, lex=0x7fff840f9b50, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.cc:4058
#11 0x00000000007fb9f1 in JOIN::prepare (this=0x7fff84013c80, tables_init=0x7fff840fbcf8, wild_num=0, conds_init=0x7fff84013a58, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fa3a0, unit_arg=0x7fff840f9c18) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1067
#12 0x00000000007f7fb9 in mysql_select (thd=0x7fff84000d50, tables=0x7fff840fbcf8, wild_num=0, fields=..., conds=0x7fff84013a58, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2416184064, result=0x7fff840ff298, unit=0x7fff840f9c18, select_lex=0x7fff840fa3a0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#13 0x00000000007f7933 in handle_select (thd=0x7fff84000d50, lex=0x7fff840f9b50, result=0x7fff840ff298, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#14 0x00000000007b921f in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff840fbcf8) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#15 0x00000000007ae08a in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#16 0x00000000007db912 in Prepared_statement::execute (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4741
#17 0x00000000007d7688 in Prepared_statement::execute_loop (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false, packet=0x0, packet_end=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4172
#18 0x00000000007d7311 in mysql_sql_stmt_execute (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3280
#19 0x00000000007ae0d7 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3783
#20 0x00000000007a8af3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "execute stmt", length=12, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

3. setup_order(), mysql.transaction_registry.commit_timestamp

$11 = 0x205b680 <dbug_item_print_buf> "`mysql`.transaction_registry.commit_timestamp"
$12 = (TABLE_LIST *) 0x7fff840fd0d8
$13 = 0x7fff840fd0c0 "transaction_registry"
table_list->select_lex:
$14 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
context->select_lex:
$15 = 0x205b680 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
#0  Item_field::fix_fields (this=0x7fff840fdaf0, thd=0x7fff84000d50, reference=0x7fff840fdc10) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x00000000007fe538 in find_order_in_list (thd=0x7fff84000d50, ref_pointer_array=..., tables=0x7fff840fd0d8, order=0x7fff840fdc00, fields=..., all_fields=..., is_group_field=false, add_to_all_fields=true, from_window_spec=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:22996
#2  0x000000000083e7a7 in setup_order (thd=0x7fff84000d50, ref_pointer_array=..., tables=0x7fff840fd0d8, fields=..., all_fields=..., order=0x7fff840fdc00, from_window_spec=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:23040
#3  0x00000000007fde01 in setup_without_group (thd=0x7fff84000d50, ref_pointer_array=..., tables=0x7fff840fd0d8, leaves=..., fields=..., all_fields=..., conds=0x7fff840146d8, order=0x7fff840fdc00, group=0x0, win_specs=..., win_funcs=..., hidden_group_fields=0x7fff840145b7, reserved=0x7fff840fc644) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:662
#4  0x00000000007fc1b1 in JOIN::prepare (this=0x7fff840142d0, tables_init=0x7fff840fd0d8, wild_num=0, conds_init=0x7fff840fd958, og_num=1, order_init=0x7fff840fdc00, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fc368, unit_arg=0x7fff840fc780) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1172
#5  0x00000000008d0b4d in st_select_lex_unit::prepare_join (this=0x7fff840fc780, thd_arg=0x7fff84000d50, sl=0x7fff840fc368, tmp_result=0x7fff840141e8, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:662
#6  0x00000000008cbd69 in st_select_lex_unit::prepare (this=0x7fff840fc780, thd_arg=0x7fff84000d50, sel_result=0x7fff840141e8, additional_options=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:947
#7  0x0000000000758d70 in mysql_derived_prepare (thd=0x7fff84000d50, lex=0x7fff840f9b50, derived=0x7fff840fdd38) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:769
#8  0x000000000075bc17 in mysql_handle_single_derived (lex=0x7fff840f9b50, derived=0x7fff840fdd38, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:197
#9  0x0000000000903c0f in TABLE_LIST::handle_derived (this=0x7fff840fdd38, lex=0x7fff840f9b50, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/table.cc:8053
#10 0x0000000000781603 in st_select_lex::handle_derived (this=0x7fff840fa3a0, lex=0x7fff840f9b50, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.cc:4058
#11 0x00000000007fb9f1 in JOIN::prepare (this=0x7fff84013c80, tables_init=0x7fff840fbcf8, wild_num=0, conds_init=0x7fff84013a58, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fa3a0, unit_arg=0x7fff840f9c18) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1067
#12 0x00000000007f7fb9 in mysql_select (thd=0x7fff84000d50, tables=0x7fff840fbcf8, wild_num=0, fields=..., conds=0x7fff84013a58, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2416184064, result=0x7fff840ff298, unit=0x7fff840f9c18, select_lex=0x7fff840fa3a0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#13 0x00000000007f7933 in handle_select (thd=0x7fff84000d50, lex=0x7fff840f9b50, result=0x7fff840ff298, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#14 0x00000000007b921f in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff840fbcf8) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#15 0x00000000007ae08a in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#16 0x00000000007db912 in Prepared_statement::execute (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4741
#17 0x00000000007d7688 in Prepared_statement::execute_loop (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false, packet=0x0, packet_end=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4172
#18 0x00000000007d7311 in mysql_sql_stmt_execute (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3280
#19 0x00000000007ae0d7 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3783
#20 0x00000000007a8af3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "execute stmt", length=12, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

4. setup_fields(), i1.x

$16 = 0x205b680 <dbug_item_print_buf> "i1.x"
$17 = (TABLE_LIST *) 0x7fff840fbcf8
$18 = 0x7fff840fbcf0 "i1"
table_list->select_lex:
$19 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
context->select_lex:
$20 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
#0  Item_field::fix_fields (this=0x7fff840fb7a0, thd=0x7fff84000d50, reference=0x7fff840fb8c0) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x000000000070f1c5 in setup_fields (thd=0x7fff84000d50, ref_pointer_array=..., fields=..., column_usage=MARK_COLUMNS_READ, sum_func_list=0x7fff84013fa0, pre_fix=0x7fff840fa4e0, allow_sum_func=true) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7311
#2  0x00000000007fc07c in JOIN::prepare (this=0x7fff84013c80, tables_init=0x7fff840fbcf8, wild_num=0, conds_init=0x7fff84013a58, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fa3a0, unit_arg=0x7fff840f9c18) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1167
#3  0x00000000007f7fb9 in mysql_select (thd=0x7fff84000d50, tables=0x7fff840fbcf8, wild_num=0, fields=..., conds=0x7fff84013a58, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2416184064, result=0x7fff840ff298, unit=0x7fff840f9c18, select_lex=0x7fff840fa3a0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#4  0x00000000007f7933 in handle_select (thd=0x7fff84000d50, lex=0x7fff840f9b50, result=0x7fff840ff298, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#5  0x00000000007b921f in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff840fbcf8) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#6  0x00000000007ae08a in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#7  0x00000000007db912 in Prepared_statement::execute (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4741
#8  0x00000000007d7688 in Prepared_statement::execute_loop (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false, packet=0x0, packet_end=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4172
#9  0x00000000007d7311 in mysql_sql_stmt_execute (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3280
#10 0x00000000007ae0d7 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3783
#11 0x00000000007a8af3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "execute stmt", length=12, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

5. setup_fields(), _trt_subquery.transaction_id

$21 = 0x205b680 <dbug_item_print_buf> "_trt_subquery.transaction_id"
$22 = (TABLE_LIST *) 0x7fff840fdd38
$23 = 0x7fff840fdcf0 "_trt_subquery"
table_list->select_lex:
$24 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
context->select_lex:
$25 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
#0  Item_field::fix_fields (this=0x7fff840fb8f0, thd=0x7fff84000d50, reference=0x7fff840fba18) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x000000000070f1c5 in setup_fields (thd=0x7fff84000d50, ref_pointer_array=..., fields=..., column_usage=MARK_COLUMNS_READ, sum_func_list=0x7fff84013fa0, pre_fix=0x7fff840fa4e0, allow_sum_func=true) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7311
#2  0x00000000007fc07c in JOIN::prepare (this=0x7fff84013c80, tables_init=0x7fff840fbcf8, wild_num=0, conds_init=0x7fff84013a58, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fa3a0, unit_arg=0x7fff840f9c18) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1167
#3  0x00000000007f7fb9 in mysql_select (thd=0x7fff84000d50, tables=0x7fff840fbcf8, wild_num=0, fields=..., conds=0x7fff84013a58, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2416184064, result=0x7fff840ff298, unit=0x7fff840f9c18, select_lex=0x7fff840fa3a0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#4  0x00000000007f7933 in handle_select (thd=0x7fff84000d50, lex=0x7fff840f9b50, result=0x7fff840ff298, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#5  0x00000000007b921f in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff840fbcf8) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#6  0x00000000007ae08a in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#7  0x00000000007db912 in Prepared_statement::execute (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4741
#8  0x00000000007d7688 in Prepared_statement::execute_loop (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false, packet=0x0, packet_end=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4172
#9  0x00000000007d7311 in mysql_sql_stmt_execute (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3280
#10 0x00000000007ae0d7 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3783
#11 0x00000000007a8af3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "execute stmt", length=12, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

6. setup_fields(), row_start

$26 = 0x205b680 <dbug_item_print_buf> "row_start"
$27 = (TABLE_LIST *) 0x7fff840fbcf8
$28 = 0x7fff840fbcf0 "i1"
table_list->select_lex:
$29 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
context->select_lex:
$30 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,row_start AS row_start,row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
#0  Item_field::fix_fields (this=0x7fff840fba40, thd=0x7fff84000d50, reference=0x7fff840fbb68) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x000000000070f1c5 in setup_fields (thd=0x7fff84000d50, ref_pointer_array=..., fields=..., column_usage=MARK_COLUMNS_READ, sum_func_list=0x7fff84013fa0, pre_fix=0x7fff840fa4e0, allow_sum_func=true) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7311
#2  0x00000000007fc07c in JOIN::prepare (this=0x7fff84013c80, tables_init=0x7fff840fbcf8, wild_num=0, conds_init=0x7fff84013a58, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fa3a0, unit_arg=0x7fff840f9c18) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1167
#3  0x00000000007f7fb9 in mysql_select (thd=0x7fff84000d50, tables=0x7fff840fbcf8, wild_num=0, fields=..., conds=0x7fff84013a58, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2416184064, result=0x7fff840ff298, unit=0x7fff840f9c18, select_lex=0x7fff840fa3a0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#4  0x00000000007f7933 in handle_select (thd=0x7fff84000d50, lex=0x7fff840f9b50, result=0x7fff840ff298, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#5  0x00000000007b921f in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff840fbcf8) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#6  0x00000000007ae08a in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#7  0x00000000007db912 in Prepared_statement::execute (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4741
#8  0x00000000007d7688 in Prepared_statement::execute_loop (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false, packet=0x0, packet_end=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4172
#9  0x00000000007d7311 in mysql_sql_stmt_execute (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3280
#10 0x00000000007ae0d7 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3783
#11 0x00000000007a8af3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "execute stmt", length=12, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

7. setup_fields(), row_end

$31 = 0x205b680 <dbug_item_print_buf> "row_end"
$32 = (TABLE_LIST *) 0x7fff840fbcf8
$33 = 0x7fff840fbcf0 "i1"
table_list->select_lex:
$34 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,i1.row_start AS row_start,row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
context->select_lex:
$35 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,i1.row_start AS row_start,row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
#0  Item_field::fix_fields (this=0x7fff840fbb88, thd=0x7fff84000d50, reference=0x7fff840fbca8) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x000000000070f1c5 in setup_fields (thd=0x7fff84000d50, ref_pointer_array=..., fields=..., column_usage=MARK_COLUMNS_READ, sum_func_list=0x7fff84013fa0, pre_fix=0x7fff840fa4e0, allow_sum_func=true) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7311
#2  0x00000000007fc07c in JOIN::prepare (this=0x7fff84013c80, tables_init=0x7fff840fbcf8, wild_num=0, conds_init=0x7fff84013a58, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fa3a0, unit_arg=0x7fff840f9c18) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1167
#3  0x00000000007f7fb9 in mysql_select (thd=0x7fff84000d50, tables=0x7fff840fbcf8, wild_num=0, fields=..., conds=0x7fff84013a58, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2416184064, result=0x7fff840ff298, unit=0x7fff840f9c18, select_lex=0x7fff840fa3a0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#4  0x00000000007f7933 in handle_select (thd=0x7fff84000d50, lex=0x7fff840f9b50, result=0x7fff840ff298, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#5  0x00000000007b921f in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff840fbcf8) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#6  0x00000000007ae08a in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#7  0x00000000007db912 in Prepared_statement::execute (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4741
#8  0x00000000007d7688 in Prepared_statement::execute_loop (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false, packet=0x0, packet_end=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4172
#9  0x00000000007d7311 in mysql_sql_stmt_execute (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3280
#10 0x00000000007ae0d7 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3783
#11 0x00000000007a8af3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "execute stmt", length=12, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

8. setup_conds(), i1.row_end

$36 = 0x205b680 <dbug_item_print_buf> "i1.row_end"
$37 = (TABLE_LIST *) 0x7fff840fbcf8
$38 = 0x7fff840fbcf0 "i1"
table_list->select_lex:
$39 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,i1.row_start AS row_start,i1.row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
context->select_lex:
$40 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,i1.row_start AS row_start,i1.row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
#0  Item_field::fix_fields (this=0x7fff840feac0, thd=0x7fff84000d50, reference=0x7fff840fedc8) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x0000000000ba06cd in Item_func::fix_fields (this=0x7fff840fed38, thd=0x7fff84000d50, ref=0x7fff84013b70) at /home/midenok/src/mariadb/trunk/src/sql/item_func.cc:362
#2  0x0000000000b61194 in Item_cond::fix_fields (this=0x7fff84013a58, thd=0x7fff84000d50, ref=0x7fff84014088) at /home/midenok/src/mariadb/trunk/src/sql/item_cmpfunc.cc:4697
#3  0x000000000071105d in setup_conds (thd=0x7fff84000d50, tables=0x7fff840fbcf8, leaves=..., conds=0x7fff84014088) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:8057
#4  0x00000000007fdc5c in setup_without_group (thd=0x7fff84000d50, ref_pointer_array=..., tables=0x7fff840fbcf8, leaves=..., fields=..., all_fields=..., conds=0x7fff84014088, order=0x0, group=0x0, win_specs=..., win_funcs=..., hidden_group_fields=0x7fff84013f67, reserved=0x7fff840fa67c) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:646
#5  0x00000000007fc1b1 in JOIN::prepare (this=0x7fff84013c80, tables_init=0x7fff840fbcf8, wild_num=0, conds_init=0x7fff84013a58, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fa3a0, unit_arg=0x7fff840f9c18) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1172
#6  0x00000000007f7fb9 in mysql_select (thd=0x7fff84000d50, tables=0x7fff840fbcf8, wild_num=0, fields=..., conds=0x7fff84013a58, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2416184064, result=0x7fff840ff298, unit=0x7fff840f9c18, select_lex=0x7fff840fa3a0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#7  0x00000000007f7933 in handle_select (thd=0x7fff84000d50, lex=0x7fff840f9b50, result=0x7fff840ff298, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#8  0x00000000007b921f in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff840fbcf8) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#9  0x00000000007ae08a in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#10 0x00000000007db912 in Prepared_statement::execute (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4741
#11 0x00000000007d7688 in Prepared_statement::execute_loop (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false, packet=0x0, packet_end=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4172
#12 0x00000000007d7311 in mysql_sql_stmt_execute (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3280
#13 0x00000000007ae0d7 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3783
#14 0x00000000007a8af3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "execute stmt", length=12, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

9. setup_conds(), _trt_subquery.transaction_id

$41 = 0x205b680 <dbug_item_print_buf> "_trt_subquery.transaction_id"
$42 = (TABLE_LIST *) 0x7fff840fdd38
$43 = 0x7fff840fdcf0 "_trt_subquery"
table_list->select_lex:
$44 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,i1.row_start AS row_start,i1.row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
context->select_lex:
$45 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,i1.row_start AS row_start,i1.row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
#0  Item_field::fix_fields (this=0x7fff840fec18, thd=0x7fff84000d50, reference=0x7fff840fedd0) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x0000000000ba06cd in Item_func::fix_fields (this=0x7fff840fed38, thd=0x7fff84000d50, ref=0x7fff84013b70) at /home/midenok/src/mariadb/trunk/src/sql/item_func.cc:362
#2  0x0000000000b61194 in Item_cond::fix_fields (this=0x7fff84013a58, thd=0x7fff84000d50, ref=0x7fff84014088) at /home/midenok/src/mariadb/trunk/src/sql/item_cmpfunc.cc:4697
#3  0x000000000071105d in setup_conds (thd=0x7fff84000d50, tables=0x7fff840fbcf8, leaves=..., conds=0x7fff84014088) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:8057
#4  0x00000000007fdc5c in setup_without_group (thd=0x7fff84000d50, ref_pointer_array=..., tables=0x7fff840fbcf8, leaves=..., fields=..., all_fields=..., conds=0x7fff84014088, order=0x0, group=0x0, win_specs=..., win_funcs=..., hidden_group_fields=0x7fff84013f67, reserved=0x7fff840fa67c) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:646
#5  0x00000000007fc1b1 in JOIN::prepare (this=0x7fff84013c80, tables_init=0x7fff840fbcf8, wild_num=0, conds_init=0x7fff84013a58, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fa3a0, unit_arg=0x7fff840f9c18) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1172
#6  0x00000000007f7fb9 in mysql_select (thd=0x7fff84000d50, tables=0x7fff840fbcf8, wild_num=0, fields=..., conds=0x7fff84013a58, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2416184064, result=0x7fff840ff298, unit=0x7fff840f9c18, select_lex=0x7fff840fa3a0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#7  0x00000000007f7933 in handle_select (thd=0x7fff84000d50, lex=0x7fff840f9b50, result=0x7fff840ff298, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#8  0x00000000007b921f in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff840fbcf8) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#9  0x00000000007ae08a in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#10 0x00000000007db912 in Prepared_statement::execute (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4741
#11 0x00000000007d7688 in Prepared_statement::execute_loop (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false, packet=0x0, packet_end=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4172
#12 0x00000000007d7311 in mysql_sql_stmt_execute (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3280
#13 0x00000000007ae0d7 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3783
#14 0x00000000007a8af3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "execute stmt", length=12, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

10. setup_conds(), _trt_subquery.transaction_id

$46 = 0x205b680 <dbug_item_print_buf> "_trt_subquery.transaction_id"
$47 = (TABLE_LIST *) 0x7fff840fdd38
$48 = 0x7fff840fdcf0 "_trt_subquery"
table_list->select_lex:
$49 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,i1.row_start AS row_start,i1.row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
context->select_lex:
$50 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,i1.row_start AS row_start,i1.row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
#0  Item_field::fix_fields (this=0x7fff840fee30, thd=0x7fff84000d50, reference=0x7fff840ff130) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x0000000000ba06cd in Item_func::fix_fields (this=0x7fff840ff0a0, thd=0x7fff84000d50, ref=0x7fff84013b80) at /home/midenok/src/mariadb/trunk/src/sql/item_func.cc:362
#2  0x0000000000b61194 in Item_cond::fix_fields (this=0x7fff84013a58, thd=0x7fff84000d50, ref=0x7fff84014088) at /home/midenok/src/mariadb/trunk/src/sql/item_cmpfunc.cc:4697
#3  0x000000000071105d in setup_conds (thd=0x7fff84000d50, tables=0x7fff840fbcf8, leaves=..., conds=0x7fff84014088) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:8057
#4  0x00000000007fdc5c in setup_without_group (thd=0x7fff84000d50, ref_pointer_array=..., tables=0x7fff840fbcf8, leaves=..., fields=..., all_fields=..., conds=0x7fff84014088, order=0x0, group=0x0, win_specs=..., win_funcs=..., hidden_group_fields=0x7fff84013f67, reserved=0x7fff840fa67c) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:646
#5  0x00000000007fc1b1 in JOIN::prepare (this=0x7fff84013c80, tables_init=0x7fff840fbcf8, wild_num=0, conds_init=0x7fff84013a58, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fa3a0, unit_arg=0x7fff840f9c18) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1172
#6  0x00000000007f7fb9 in mysql_select (thd=0x7fff84000d50, tables=0x7fff840fbcf8, wild_num=0, fields=..., conds=0x7fff84013a58, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2416184064, result=0x7fff840ff298, unit=0x7fff840f9c18, select_lex=0x7fff840fa3a0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#7  0x00000000007f7933 in handle_select (thd=0x7fff84000d50, lex=0x7fff840f9b50, result=0x7fff840ff298, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#8  0x00000000007b921f in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff840fbcf8) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#9  0x00000000007ae08a in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#10 0x00000000007db912 in Prepared_statement::execute (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4741
#11 0x00000000007d7688 in Prepared_statement::execute_loop (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false, packet=0x0, packet_end=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4172
#12 0x00000000007d7311 in mysql_sql_stmt_execute (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3280
#13 0x00000000007ae0d7 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3783
#14 0x00000000007a8af3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "execute stmt", length=12, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

11. setup_conds(), i1.row_start

$51 = 0x205b680 <dbug_item_print_buf> "i1.row_start"
$52 = (TABLE_LIST *) 0x7fff840fbcf8
$53 = 0x7fff840fbcf0 "i1"
table_list->select_lex:
$54 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,i1.row_start AS row_start,i1.row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
context->select_lex:
$55 = 0x205b680 <dbug_item_print_buf> "select i1.x AS x,_trt_subquery.transaction_id AS transaction_id,i1.row_start AS row_start,i1.row_end AS row_end from (test.i1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) _trt_subquery) where vtq_trx_sees(i1.row_end,_trt_subquery.transaction_id) and vtq_trx_sees_eq(_trt_subquery.transaction_id,i1.row_start)"
#0  Item_field::fix_fields (this=0x7fff840fef80, thd=0x7fff84000d50, reference=0x7fff840ff138) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6257
#1  0x0000000000ba06cd in Item_func::fix_fields (this=0x7fff840ff0a0, thd=0x7fff84000d50, ref=0x7fff84013b80) at /home/midenok/src/mariadb/trunk/src/sql/item_func.cc:362
#2  0x0000000000b61194 in Item_cond::fix_fields (this=0x7fff84013a58, thd=0x7fff84000d50, ref=0x7fff84014088) at /home/midenok/src/mariadb/trunk/src/sql/item_cmpfunc.cc:4697
#3  0x000000000071105d in setup_conds (thd=0x7fff84000d50, tables=0x7fff840fbcf8, leaves=..., conds=0x7fff84014088) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:8057
#4  0x00000000007fdc5c in setup_without_group (thd=0x7fff84000d50, ref_pointer_array=..., tables=0x7fff840fbcf8, leaves=..., fields=..., all_fields=..., conds=0x7fff84014088, order=0x0, group=0x0, win_specs=..., win_funcs=..., hidden_group_fields=0x7fff84013f67, reserved=0x7fff840fa67c) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:646
#5  0x00000000007fc1b1 in JOIN::prepare (this=0x7fff84013c80, tables_init=0x7fff840fbcf8, wild_num=0, conds_init=0x7fff84013a58, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff840fa3a0, unit_arg=0x7fff840f9c18) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1172
#6  0x00000000007f7fb9 in mysql_select (thd=0x7fff84000d50, tables=0x7fff840fbcf8, wild_num=0, fields=..., conds=0x7fff84013a58, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2416184064, result=0x7fff840ff298, unit=0x7fff840f9c18, select_lex=0x7fff840fa3a0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#7  0x00000000007f7933 in handle_select (thd=0x7fff84000d50, lex=0x7fff840f9b50, result=0x7fff840ff298, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#8  0x00000000007b921f in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff840fbcf8) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#9  0x00000000007ae08a in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#10 0x00000000007db912 in Prepared_statement::execute (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4741
#11 0x00000000007d7688 in Prepared_statement::execute_loop (this=0x7fff840f7020, expanded_query=0x7fffe5100510, open_cursor=false, packet=0x0, packet_end=0x0) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:4172
#12 0x00000000007d7311 in mysql_sql_stmt_execute (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_prepare.cc:3280
#13 0x00000000007ae0d7 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3783
#14 0x00000000007a8af3 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "execute stmt", length=12, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013
midenok commented 6 years ago

Unknown column error

#0  my_error (nr=1054, MyFlags=0) at /home/midenok/src/mariadb/trunk/src/mysys/my_error.c:113
#1  0x000000000070d22c in find_field_in_tables (thd=0x7fff84000d50, item=0x7fff84013ae8, first_table=0x7fff84013f60, last_table=0x0, ref=0x7fff84013c00, report_error=REPORT_ALL_ERRORS, check_privileges=true, register_tree_change=true) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:6202
#2  0x0000000000b3286f in Item_field::fix_outer_field (this=0x7fff84013ae8, thd=0x7fff84000d50, from_field=0x7fffe50fee50, reference=0x7fff84013c00) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:5991
#3  0x0000000000b33b18 in Item_field::fix_fields (this=0x7fff84013ae8, thd=0x7fff84000d50, reference=0x7fff84013c00) at /home/midenok/src/mariadb/trunk/src/sql/item.cc:6245
#4  0x000000000070f295 in setup_fields (thd=0x7fff84000d50, ref_pointer_array=..., fields=..., column_usage=MARK_COLUMNS_READ, sum_func_list=0x7fff84016860, pre_fix=0x7fff84005450, allow_sum_func=true) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7311
#5  0x00000000007fc1dc in JOIN::prepare (this=0x7fff84016540, tables_init=0x7fff84013f60, wild_num=0, conds_init=0x0, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff84005310, unit_arg=0x7fff84004b88) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1167
#6  0x00000000007f8119 in mysql_select (thd=0x7fff84000d50, tables=0x7fff84013f60, wild_num=0, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff84016520, unit=0x7fff84004b88, select_lex=0x7fff84005310) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#7  0x00000000007f7a93 in handle_select (thd=0x7fff84000d50, lex=0x7fff84004ac0, result=0x7fff84016520, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#8  0x00000000007b935f in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff84013f60) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#9  0x00000000007ae1c0 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#10 0x00000000007a8c23 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "select transaction_idd,row_start,row_end from i1 for system_time as of timestamp '2018-04-04 16:40:23'", length=102, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013

__trt_subquery should be excluded from name resolution tables.

midenok commented 6 years ago

Name resolution overwritten

#0  setup_natural_join_row_types (thd=0x7fff84000d50, from_clause=0x7fff840054b0, context=0x7fff84005358) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7135
#1  0x000000000071013c in setup_tables (thd=0x7fff84000d50, context=0x7fff84005358, from_clause=0x7fff840054b0, tables=0x7fff84013f60, leaves=..., select_insert=false, full_table_list=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7542
#2  0x00000000007105d7 in setup_tables_and_check_access (thd=0x7fff84000d50, context=0x7fff84005358, from_clause=0x7fff840054b0, tables=0x7fff84013f60, leaves=..., select_insert=false, want_access_first=1, want_access=1, full_table_list=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7585
#3  0x00000000007fbc7d in JOIN::prepare (this=0x7fff84016540, tables_init=0x7fff84013f60, wild_num=0, conds_init=0x0, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff84005310, unit_arg=0x7fff84004b88) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1079
#4  0x00000000007f8139 in mysql_select (thd=0x7fff84000d50, tables=0x7fff84013f60, wild_num=0, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff84016520, unit=0x7fff84004b88, select_lex=0x7fff84005310) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4203
#5  0x00000000007f7ab3 in handle_select (thd=0x7fff84000d50, lex=0x7fff84004ac0, result=0x7fff84016520, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#6  0x00000000007b937f in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff84013f60) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6556
#7  0x00000000007ae1e0 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3767
#8  0x00000000007a8c23 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "select transaction_id,row_start,row_end from i1 for system_time as of timestamp '2018-04-04 16:40:23'", length=101, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8013
7129        if (left_neighbor)
7130        {
7131          TABLE_LIST *first_leaf_on_the_right;
7132          first_leaf_on_the_right= table_ref->first_leaf_for_name_resolution();
7133          left_neighbor->next_name_resolution_table= first_leaf_on_the_right;
7134        }
TABLE_LIST *TABLE_LIST::first_leaf_for_name_resolution()
{
  TABLE_LIST *UNINIT_VAR(cur_table_ref);
  NESTED_JOIN *cur_nested_join;

  if (is_leaf_for_name_resolution())
    return this;
/*
  Test if this is a leaf with respect to name resolution.

  SYNOPSIS
    TABLE_LIST::is_leaf_for_name_resolution()

  DESCRIPTION
    A table reference is a leaf with respect to name resolution if
    it is either a leaf node in a nested join tree (table, view,
    schema table, subquery), or an inner node that represents a
    NATURAL/USING join, or a nested join with materialized join
    columns.

  RETURN
    TRUE if a leaf, FALSE otherwise.
*/
bool TABLE_LIST::is_leaf_for_name_resolution()
{
  return (is_merged_derived() || is_natural_join || is_join_columns_complete ||
          !nested_join);
}
midenok commented 6 years ago

Uninitialized tr_table->table

Reproduce

Run versioning.select2,trx_id until

select IJ2_x1,y1,x2,y2 from (select t1.x as IJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 inner join t2 on t1.x = t2.x)
for system_time as of timestamp @t0 as t;

Result

#3  0x00007ffff600dfc2 in __GI___assert_fail (assertion=0x153fa4d "tr_table->table", file=0x153d0fe "/home/midenok/src/mariadb/trunk/src/sql/table.cc", line=8568, function=0x153fa02 "Item *Vers_history_point::get_item(THD *, Name_resolution_context &) const") at assert.c:101
#4  0x0000000000905289 in Vers_history_point::get_item (this=0x7fff84015710, thd=0x7fff84000d50, ctx=...) at /home/midenok/src/mariadb/trunk/src/sql/table.cc:8568
#5  0x00000000007fab35 in st_select_lex::vers_setup_conds (this=0x7fff84014018, thd=0x7fff84000d50, tables=0x7fff840150f0, where_expr=0x7fff840f7ea8) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:936
#6  0x00000000007fbaab in JOIN::prepare (this=0x7fff840f7aa0, tables_init=0x7fff840150f0, wild_num=0, conds_init=0x0, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff84014018, unit_arg=0x7fff84014430) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1084
#7  0x00000000008d09ad in st_select_lex_unit::prepare_join (this=0x7fff84014430, thd_arg=0x7fff84000d50, sl=0x7fff84014018, tmp_result=0x7fff84019748, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:662
#8  0x00000000008cbbc9 in st_select_lex_unit::prepare (this=0x7fff84014430, thd_arg=0x7fff84000d50, sel_result=0x7fff84019748, additional_options=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:947
#9  0x0000000000758fc0 in mysql_derived_prepare (thd=0x7fff84000d50, lex=0x7fff84004ac0, derived=0x7fff84016a50) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:769
#10 0x000000000075be67 in mysql_handle_single_derived (lex=0x7fff84004ac0, derived=0x7fff84016a50, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:197
#11 0x0000000000903a9f in TABLE_LIST::handle_derived (this=0x7fff84016a50, lex=0x7fff84004ac0, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/table.cc:8056
#12 0x00000000007818c3 in st_select_lex::handle_derived (this=0x7fff84005310, lex=0x7fff84004ac0, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.cc:4058
#13 0x00000000007fb891 in JOIN::prepare (this=0x7fff840f7538, tables_init=0x7fff84016a50, wild_num=0, conds_init=0x0, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff84005310, unit_arg=0x7fff84004b88) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1050
#14 0x00000000007f8379 in mysql_select (thd=0x7fff84000d50, tables=0x7fff84016a50, wild_num=0, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748612, result=0x7fff84019018, unit=0x7fff84004b88, select_lex=0x7fff84005310) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4186
#15 0x0000000000841ea3 in mysql_explain_union (thd=0x7fff84000d50, unit=0x7fff84004b88, result=0x7fff84019018) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:25683
#16 0x00000000007b9096 in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff84016a50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6507
#17 0x00000000007ae420 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3779
#18 0x00000000007a8e43 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "explain extended select IJ2_x1,y1,x2,y2 from (select t1.x as IJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 inner join t2 on t1.x = t2.x) for system_time as of timestamp @t0 as t", length=182, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8025

frame 12

(gdb) p dbug_print_select(this)
$15 = 0x2013a00 <dbug_item_print_buf> "select IJ2_x1 AS IJ2_x1,y1 AS y1,x2 AS x2,y2 AS y2 from (select t1.x AS IJ2_x1,t1.y AS y1,t2.x AS x2,t2.y AS y2 from (test.t1 FOR SYSTEM_TIME AS OF TIMESTAMP @t0 join test.t2 on(t1.x = t2.x))) t join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= @t0 order by `mysql`.transaction_registry.commit_timestamp desc limit 1) __trt_0"

select IJ2_x1 as IJ2_x1,
       y1 as y1,
       x2 as x2,
       y2 as y2
from
  (select t1.x as IJ2_x1,
          t1.y as y1,
          t2.x as x2,
          t2.y as y2
   from (test.t1
         for SYSTEM_TIME as of timestamp @t0
         join test.t2 on(t1.x = t2.x))) t
join
  (select `mysql`.transaction_registry.transaction_id as transaction_id
   from `mysql`.transaction_registry
   where `mysql`.transaction_registry.commit_timestamp <= @t0
   order by `mysql`.transaction_registry.commit_timestamp desc
   limit 1) __trt_0

frame 5

(gdb) p dbug_print_select(this)
$16 = 0x2013a00 <dbug_item_print_buf> "select t1.x AS IJ2_x1,t1.y AS y1,t2.x AS x2,t2.y AS y2 from (test.t1 FOR SYSTEM_TIME AS OF TIMESTAMP @t0 join test.t2 on(t1.x = t2.x))"
midenok commented 6 years ago

Good: tr_table->table assigned

select *,row_start,row_end from i1 for system_time as of timestamp '2018-04-04 16:40:23';
#0  mysql_derived_prepare (thd=0x7fff84000d50, lex=0x7fff84004ac0, derived=0x7fff84015db8) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:813
#1  0x000000000075be67 in mysql_handle_single_derived (lex=0x7fff84004ac0, derived=0x7fff84015db8, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:197
#2  0x0000000000903a9f in TABLE_LIST::handle_derived (this=0x7fff84015db8, lex=0x7fff84004ac0, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/table.cc:8056
#3  0x00000000007818c3 in st_select_lex::handle_derived (this=0x7fff84005310, lex=0x7fff84004ac0, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.cc:4058
#4  0x00000000007fb891 in JOIN::prepare (this=0x7fff84016518, tables_init=0x7fff84013f38, wild_num=1, conds_init=0x0, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff84005310, unit_arg=0x7fff84004b88) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1050
#5  0x00000000007f8379 in mysql_select (thd=0x7fff84000d50, tables=0x7fff84013f38, wild_num=1, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff840164f8, unit=0x7fff84004b88, select_lex=0x7fff84005310) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4186
#6  0x00000000007f7cf3 in handle_select (thd=0x7fff84000d50, lex=0x7fff84004ac0, result=0x7fff840164f8, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#7  0x00000000007b95bf in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff84013f38) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6568
#8  0x00000000007ae420 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3779
#9  0x00000000007a8e43 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84013998 "select *,row_start,row_end from i1 for system_time as of timestamp '2018-04-04 16:40:23'", length=88, parser_state=0x7fffe5103640, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8025
811       if (!derived->table)
812         derived->table= derived->derived_result->table;
(gdb) p derived->alias.str
$12 = 0x7fff7c03fa00 "__trt_0"

frame 3

(gdb) p dbug_print_select(this)
$14 = 0x2013a00 <dbug_item_print_buf> "select `*` AS `*`,row_start AS row_start,row_end AS row_end from test.i1 FOR SYSTEM_TIME AS OF TIMESTAMP TIMESTAMP'2018-04-04 16:40:23' join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= TIMESTAMP'2018-04-04 16:40:23' order by `mysql`.transaction_registry.commit_timestamp desc limit 1) __trt_0"

Cause

vers_setup_conds() is called before tr_table->table is assigned (sql_derived.cc:769 vs sql_derived.cc:813).

midenok commented 6 years ago

Info: make have_innodb work with started server

diff --git a/mysql-test/suite.pm b/mysql-test/suite.pm
index c8201b0a554..5037af1a47b 100644
--- a/mysql-test/suite.pm
+++ b/mysql-test/suite.pm
@@ -9,7 +9,7 @@ sub skip_combinations {
   # disable innodb combinations for configurations that were not built
   push @combinations, 'innodb_plugin' unless $ENV{HA_INNODB_SO};

-  push @combinations, 'innodb' unless $::mysqld_variables{'innodb'} eq "ON";
+  # push @combinations, 'innodb' unless $::mysqld_variables{'innodb'} eq "ON";

   my %skip = ( 'include/have_innodb.combinations' => [ @combinations ]);
midenok commented 6 years ago

Cause

Historical table is derived query, but TRT query is appended to outer query (see frame 12). Trivial case is:

select *
from
  (select * from t1 where t1.x = __trt.y) t
join
  (select * from t2 limit 1) __trt;

this fails with error:

ERROR 1054 (42S22): Unknown column '__trt.y' in 'where clause'

Fix

__trt_0 query must be added to inner query.

--- a/sql/sql_lex.cc
+++ b/sql/sql_lex.cc
@@ -7187,20 +7187,24 @@ bool LEX::vers_add_trt_query(THD *thd)
   uint subq_n= 0;
   for (TABLE_LIST *tl= query_tables; tl; tl= tl->next_global)
   {
+    if (!tl->vers_conditions.is_set())
+      continue;
+    SELECT_LEX *select_lex=
+      tl->derived ? tl->derived->first_select() : tl->select_lex;
     switch (tl->vers_conditions.type)
     {
     case SYSTEM_TIME_AS_OF:
     case SYSTEM_TIME_BEFORE:
       if (tl->vers_conditions.start.unit == VERS_TRX_ID)
         break;
-      if (TR_table::add_subquery(thd, tl->vers_conditions.start, subq_n))
+      if (TR_table::add_subquery(thd, tl->vers_conditions.start, select_lex, subq_n))
         return true;
       break;
     case SYSTEM_TIME_FROM_TO:
     case SYSTEM_TIME_BETWEEN:
-      if (TR_table::add_subquery(thd, tl->vers_conditions.start, subq_n, true))
+      if (TR_table::add_subquery(thd, tl->vers_conditions.start, select_lex, subq_n, true))
         return true;
-      if (TR_table::add_subquery(thd, tl->vers_conditions.end, subq_n))
+      if (TR_table::add_subquery(thd, tl->vers_conditions.end, select_lex, subq_n))
         return true;
       break;
     default:;
midenok commented 6 years ago

Bug 2: Prematurely freed nested_join

Reproduce

Run select2,trx_id until

select RJ2_x1,y1,x2,y2 from (select t1.x as RJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 right join t2 on t1.x = t2.x) for system_time as of timestamp @t0 as t;

Result

#0  0x000000000080e298 in build_bitmap_for_nested_joins (join_list=0x7fff800054f8, first_unused=0) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:15367
#1  0x000000000080afc8 in JOIN::optimize_inner (this=0x7fff80018fe8) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:1610
#2  0x00000000008079d5 in JOIN::optimize (this=0x7fff80018fe8) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:1430
#3  0x00000000008004cf in mysql_select (thd=0x7fff80000d50, tables=0x7fff80016a00, wild_num=0, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff80018fc8, unit=0x7fff80004bd0, select_lex=0x7fff80005358) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:4174
#4  0x00000000007ffdf3 in handle_select (thd=0x7fff80000d50, lex=0x7fff80004b08, result=0x7fff80018fc8, setup_tables_done_option=0) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:370
#5  0x00000000007c13c1 in execute_sqlcom_select (thd=0x7fff80000d50, all_tables=0x7fff80016a00) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6549
#6  0x00000000007b64c0 in mysql_execute_command (thd=0x7fff80000d50) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:3772
#7  0x00000000007b0e9f in mysql_parse (thd=0x7fff80000d50, rawbuf=0x7fff80013948 "select RJ2_x1,y1,x2,y2 from (select t1.x as RJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 right join t2 on t1.x = t2.x)\nfor system_time as of timestamp @t0 as t", length=165, parser_state=0x7fffe4e8d650, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:8023
(gdb) p nested_join
$28 = (NESTED_JOIN *) 0x8f8f8f8f8f8f8f8f
(gdb) p ((TABLE_LIST *)(join_list->first->info))->alias
$65 = {
  str = 0x7fff7c32b520 "__trt_0", 
  length = 7
}
(gdb) p ((TABLE_LIST *)(join_list->first->next->info))->alias
$66 = {
  str = 0x7fff7c015078 "t1", 
  length = 2
}
(gdb) p ((TABLE_LIST *)(join_list->first->next->next->info))->alias
$67 = {
  str = 0x8f8f8f8f8f8f8f8f <error: Cannot access memory at address 0x8f8f8f8f8f8f8f8f>, 
  length = 10344644715844964239
}

frame 1

(gdb) p dbug_print_select(select_lex)
$173 = 0x2013a00 <dbug_item_print_buf> "select t1.x AS RJ2_x1,t1.y AS y1,t2.x AS x2,t2.y AS y2 from test.t1 FOR SYSTEM_TIME ALL join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= @t0 order by `mysql`.transaction_registry.commit_timestamp desc limit 1) __trt_0 where trt_trx_sees(t2.sys_end,__trt_0.transaction_id) and trt_trx_sees_eq(__trt_0.transaction_id,t2.sys_start)"
select t1.x as RJ2_x1,
       t1.y as y1,
       t2.x as x2,
       t2.y as y2
from test.t1
for SYSTEM_TIME all
join
  (select mysql.transaction_registry.transaction_id
   from mysql.transaction_registry
   where mysql.transaction_registry.commit_timestamp <= @t0
   order by mysql.transaction_registry.commit_timestamp desc
   limit 1) __trt_0
where trt_trx_sees(t2.sys_end, __trt_0.transaction_id)
  and trt_trx_sees_eq(__trt_0.transaction_id, t2.sys_start);
midenok commented 6 years ago

Bug 2: Segfault on accessing item

Reproduce

Run select2,trx_id until

select * from (select * from t1 cross join t2 for system_time as of timestamp ('0-0-0')) as tmp;

Result

#0  0x0000000000b68630 in Item_cond::copy_andor_arguments (this=0x7fff802f0478, thd=0x7fff80000d50, item=0x7fff802f02c8) at /home/midenok/src/mariadb/midenok/src/sql/item_cmpfunc.cc:4521
#1  0x0000000000b6855c in Item_cond_and::copy_andor_structure (this=0x7fff802f02c8, thd=0x7fff80000d50) at /home/midenok/src/mariadb/midenok/src/sql/item_cmpfunc.cc:4512
#2  0x000000000080b00c in JOIN::optimize_inner (this=0x7fff80018438) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:1612
#3  0x00000000008079d5 in JOIN::optimize (this=0x7fff80018438) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:1430
#4  0x00000000008004cf in mysql_select (thd=0x7fff80000d50, tables=0x7fff80015e50, wild_num=1, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff80018418, unit=0x7fff80004bd0, select_lex=0x7fff80005358) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:4174
#5  0x00000000007ffdf3 in handle_select (thd=0x7fff80000d50, lex=0x7fff80004b08, result=0x7fff80018418, setup_tables_done_option=0) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:370
#6  0x00000000007c13c1 in execute_sqlcom_select (thd=0x7fff80000d50, all_tables=0x7fff80015e50) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6549
#7  0x00000000007b64c0 in mysql_execute_command (thd=0x7fff80000d50) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:3772
#8  0x00000000007b0e9f in mysql_parse (thd=0x7fff80000d50, rawbuf=0x7fff80013948 "select * from (select * from t1 cross join t2 for system_time as of timestamp ('0-0-0')) as tmp", length=95, parser_state=0x7fffe4e8d650, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:8023

Valgrind log

1. Block was alloc'd at

   at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
   by 0x145A465: sf_malloc (safemalloc.c:118)
   by 0x14443BC: my_malloc (my_malloc.c:101)
   by 0x1434FFE: alloc_root (my_alloc.c:249)
   by 0x65DC90: Query_arena::alloc(unsigned long) (sql_class.h:1013)
   by 0x736FEB: thd_alloc (sql_class.cc:1187)
   by 0x6A4786: Sql_alloc::operator new(unsigned long) (sql_alloc.h:30)
   by 0x8D7B0B: st_select_lex_unit::prepare_join(THD*, st_select_lex*, select_result*, unsigned long, bool) (sql_union.cc:643)
   by 0x8D3088: st_select_lex_unit::prepare(TABLE_LIST*, select_result*, unsigned long) (sql_union.cc:949)
   by 0x75C5C9: mysql_derived_prepare(THD*, LEX*, TABLE_LIST*) (sql_derived.cc:768)
   by 0x75F476: mysql_handle_single_derived(LEX*, TABLE_LIST*, unsigned int) (sql_derived.cc:197)
   by 0x90B68E: TABLE_LIST::handle_derived(LEX*, unsigned int) (table.cc:8042)
   by 0x7861D2: st_select_lex::handle_derived(LEX*, unsigned int) (sql_lex.cc:4083)
   by 0x90B615: TABLE_LIST::handle_derived(LEX*, unsigned int) (table.cc:8039)
   by 0x7861D2: st_select_lex::handle_derived(LEX*, unsigned int) (sql_lex.cc:4083)
   by 0x803710: JOIN::prepare(TABLE_LIST*, unsigned int, Item*, unsigned int, st_order*, bool, st_order*, Item*, st_order*, st_select_lex*, st_select_lex_unit*) (sql_select.cc:989)
   by 0x800498: mysql_select(THD*, TABLE_LIST*, unsigned int, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*) (sql_select.cc:4166)
   by 0x7FFDF2: handle_select(THD*, LEX*, select_result*, unsigned long) (sql_select.cc:370)
   by 0x7C13C0: execute_sqlcom_select(THD*, TABLE_LIST*) (sql_parse.cc:6549)
   by 0x7B64BF: mysql_execute_command(THD*) (sql_parse.cc:3772)
   by 0x7B0E9E: mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) (sql_parse.cc:8023)
bool st_select_lex_unit::prepare_join(THD *thd_arg, SELECT_LEX *sl,
                                      select_result *tmp_result,
                                      ulong additional_options,
                                      bool is_union_select)
{
  ...
  JOIN *join= new JOIN(thd_arg, sl->item_list,
                       (sl->options | thd_arg->variables.option_bits |
                        additional_options),
                       tmp_result);

2. Address 0x1a85c968 is 10,488 bytes inside a block of size 16,460 free'd

   at 0x4C30D3B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
   by 0x145AAC9: free_memory (safemalloc.c:279)
   by 0x145AB0D: sf_free (safemalloc.c:197)
   by 0x1444601: my_free (my_malloc.c:222)
   by 0x1435783: free_root (my_alloc.c:418)
   by 0x7AE9C3: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) (sql_parse.cc:2436)
   by 0x7AFC7C: do_command(THD*) (sql_parse.cc:1390)
   by 0x9574C0: do_handle_one_connection(CONNECT*) (sql_connect.cc:1402)
   by 0x957299: handle_one_connection (sql_connect.cc:1308)
   by 0x13CB2B3: pfs_spawn_thread (pfs.cc:1862)
   by 0x4E437FB: start_thread (pthread_create.c:465)
   by 0x6BD8B5E: clone (clone.S:95)

3. Invalid write of size 8

   at 0x660E8D: base_list::push_back(void*, st_mem_root*) (sql_list.h:185)
   by 0x71A4BF: List<TABLE_LIST>::push_back(TABLE_LIST*, st_mem_root*) (sql_list.h:493)
   by 0x7874D0: st_select_lex::save_leaf_tables(THD*) (sql_lex.cc:4745)
   by 0x80AF28: JOIN::optimize_inner() (sql_select.cc:1604)
   by 0x8079D4: JOIN::optimize() (sql_select.cc:1430)
   by 0x8004CE: mysql_select(THD*, TABLE_LIST*, unsigned int, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*) (sql_select.cc:4174)
   by 0x7FFDF2: handle_select(THD*, LEX*, select_result*, unsigned long) (sql_select.cc:370)
   by 0x7C13C0: execute_sqlcom_select(THD*, TABLE_LIST*) (sql_parse.cc:6549)
   by 0x7B64BF: mysql_execute_command(THD*) (sql_parse.cc:3772)
   by 0x7B0E9E: mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) (sql_parse.cc:8023)
   by 0x7AC78C: dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) (sql_parse.cc:1845)
   by 0x7AFC7C: do_command(THD*) (sql_parse.cc:1390)
midenok commented 6 years ago

Good (prematurely freed nested_join)

select * from (select *, row_start, row_end from i1 for system_time as of timestamp @t1) x;

unit->thd assigned

#0  mysql_new_select (lex=0x7fff70004b08, move_down=true, select_lex=0x7fff70013c38) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7688
#1  0x0000000000a4d962 in MYSQLparse (thd=0x7fff70000d50) at /home/midenok/src/mariadb/midenok/src/sql/sql_yacc.yy:12075
#2  0x00000000007c5c7a in parse_sql (thd=0x7fff70000d50, parser_state=0x7fffe4ebe650, creation_ctx=0x0, do_pfs_digest=true) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:10034
#3  0x00000000007b0c70 in mysql_parse (thd=0x7fff70000d50, rawbuf=0x7fff700139e8 "select * from (select *, row_start, row_end from i1 for system_time as of timestamp @t1) x", length=90, parser_state=0x7fffe4ebe650, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7976
7678      if (move_down)
7679      {
7680        SELECT_LEX_UNIT *unit;
7681        lex->subqueries= TRUE;
7682        /* first select_lex of subselect or derived table */
7683        if (!(unit= new (thd->mem_root) SELECT_LEX_UNIT()))
7684          DBUG_RETURN(1);
7685
7686        unit->init_query();
7687        unit->thd= thd;
midenok commented 6 years ago

Info: join_list increased

#0  base_list::push_front_impl (this=0x7fff800054e8, node=0x7fff8007af60) at /home/midenok/src/mariadb/trunk/src/sql/sql_list.h:201
#1  0x00000000006c3dc1 in base_list::push_front (this=0x7fff800054e8, info=0x7fff8007a908, mem_root=0x7fff80006278) at /home/midenok/src/mariadb/trunk/src/sql/sql_list.h:208
#2  0x00000000007cb220 in List<TABLE_LIST>::push_front (this=0x7fff800054e8, a=0x7fff8007a908, mem_root=0x7fff80006278) at /home/midenok/src/mariadb/trunk/src/sql/sql_list.h:496
#3  0x00000000007c6722 in st_select_lex::add_joined_table (this=0x7fff80005348, table=0x7fff8007a908) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8503
#4  0x0000000000a4b8c0 in MYSQLparse (thd=0x7fff80000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_yacc.yy:11801
#5  0x00000000007c588a in parse_sql (thd=0x7fff80000d50, parser_state=0x7fffe4f02650, creation_ctx=0x0, do_pfs_digest=true) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:10030
#6  0x00000000007b08e0 in mysql_parse (thd=0x7fff80000d50, rawbuf=0x7fff8007a718 "select * from t1", length=16, parser_state=0x7fffe4f02650, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:7972
midenok commented 6 years ago

Good

create or replace table t1(
  x int,
  y int,
  sys_start bigint(20) unsigned as row start invisible,
  sys_end bigint(20) unsigned as row end invisible,
  period for system_time (sys_start, sys_end))
with system versioning;
create or replace table t2 like t1;

insert into t1 values (1, 1), (1, 2), (1, 3), (4, 4), (5, 5);
insert into t2 values (1, 2), (2, 1), (3, 1);
set @t0= now(6);

delete from t1;
delete from t2;

select RJ2_x1,y1,x2,y2 from (select t1.x as RJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 right join t2 on t1.x = t2.x)
for system_time as of timestamp @t0 as t;
#0  build_bitmap_for_nested_joins (join_list=0x7fff800054e8, first_unused=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:15364
#1  0x000000000080af48 in JOIN::optimize_inner (this=0x7fff8007dee0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1618
#2  0x0000000000807955 in JOIN::optimize (this=0x7fff8007dee0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1438
#3  0x00000000008000bf in mysql_select (thd=0x7fff80000d50, tables=0x7fff8007d790, wild_num=0, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff8007dec0, unit=0x7fff80004bd0, select_lex=0x7fff80005348) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4182
#4  0x00000000007ff9e3 in handle_select (thd=0x7fff80000d50, lex=0x7fff80004b08, result=0x7fff8007dec0, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#5  0x00000000007c0fd1 in execute_sqlcom_select (thd=0x7fff80000d50, all_tables=0x7fff8007d790) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6545
#6  0x00000000007b60d0 in mysql_execute_command (thd=0x7fff80000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3768
#7  0x00000000007b0b0f in mysql_parse (thd=0x7fff80000d50, rawbuf=0x7fff8007a718 "select RJ2_x1,y1,x2,y2 from (select t1.x as RJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 right join t2 on t1.x = t2.x)\nfor system_time as of timestamp @t0 as t", length=165, parser_state=0x7fffe4f02650, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8019
(gdb) p ((TABLE_LIST *)(join_list->first->info))->alias
$3 = {
  str = 0x7fff8007be38 "t1", 
  length = 2
}
(gdb) p ((TABLE_LIST *)(join_list->first->next->info))->alias
$4 = {
  str = 0x7fff8007c4d8 "t2", 
  length = 2
}
select t1.x as RJ2_x1,
       t1.y as y1,
       t2.x as x2,
       t2.y as y2
from test.t2
for SYSTEM_TIME all
left join test.t1
for SYSTEM_TIME all on(t1.x = t2.x
                       and trt_trx_sees(t1.sys_end, trt_trx_id(@t0))
                       and trt_trx_sees_eq(trt_trx_id(@t0), t1.sys_start))
where trt_trx_sees(t2.sys_end, trt_trx_id(@t0))
  and trt_trx_sees_eq(trt_trx_id(@t0), t2.sys_start)

Bad

select t1.x as RJ2_x1,
       t1.y as y1,
       t2.x as x2,
       t2.y as y2
from test.t1
for SYSTEM_TIME all
join
  (select mysql.transaction_registry.transaction_id
   from mysql.transaction_registry
   where mysql.transaction_registry.commit_timestamp <= @t0
   order by mysql.transaction_registry.commit_timestamp desc
   limit 1) __trt_0
where trt_trx_sees(t2.sys_end, __trt_0.transaction_id)
  and trt_trx_sees_eq(__trt_0.transaction_id, t2.sys_start);

Cause

Lost join between t1 and t2.

midenok commented 6 years ago

Bad

Before add_subquery()

select t1.x AS RJ2_x1,t1.y AS y1,t2.x AS x2,t2.y AS y2 from (test.t2 left join test.t1 on(t1.x = t2.x))

After add_subquery()

select t1.x as RJ2_x1,
       t1.y as y1,
       t2.x as x2,
       t2.y as y2
from (test.t2
      left join test.t1 on(t1.x = t2.x))
join
  (select mysql.transaction_registry.transaction_id
   from mysql.transaction_registry
   where mysql.transaction_registry.commit_timestamp <= @t0
   order by mysql.transaction_registry.commit_timestamp desc
   limit 1) __trt_0
midenok commented 6 years ago

Good

1. leaf_tables_exec emptied

7466          select_lex->leaf_tables_exec.empty();
#0  setup_tables (thd=0x7fff70000d50, context=0x7fff700183f8, from_clause=0x7fff70018550, tables=0x7fff700190f0, leaves=..., select_insert=false, full_table_list=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7466
#1  0x0000000000713617 in setup_tables_and_check_access (thd=0x7fff70000d50, context=0x7fff700183f8, from_clause=0x7fff70018550, tables=0x7fff700190f0, leaves=..., select_insert=false, want_access_first=1, want_access=1, full_table_list=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7604
#2  0x000000000080379d in JOIN::prepare (this=0x7fff70082748, tables_init=0x7fff700190f0, wild_num=0, conds_init=0x7fff70019990, og_num=1, order_init=0x7fff70019c38, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff700183b0, unit_arg=0x7fff700187c8) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1009
#3  0x00000000008d7ddd in st_select_lex_unit::prepare_join (this=0x7fff700187c8, thd_arg=0x7fff70000d50, sl=0x7fff700183b0, tmp_result=0x7fff7001b900, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:654
#4  0x00000000008d2ff9 in st_select_lex_unit::prepare (this=0x7fff700187c8, derived_arg=0x7fff70019d68, sel_result=0x7fff7001b900, additional_options=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:949
#5  0x000000000075c44a in mysql_derived_prepare (thd=0x7fff70000d50, lex=0x7fff70004b08, derived=0x7fff70019d68) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:768
#6  0x000000000075f2f7 in mysql_handle_single_derived (lex=0x7fff70004b08, derived=0x7fff70019d68, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:197
#7  0x000000000090b5ff in TABLE_LIST::handle_derived (this=0x7fff70019d68, lex=0x7fff70004b08, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/table.cc:8042
#8  0x0000000000786043 in st_select_lex::handle_derived (this=0x7fff70005348, lex=0x7fff70004b08, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.cc:4083
#9  0x0000000000803691 in JOIN::prepare (this=0x7fff7001b398, tables_init=0x7fff70016ba8, wild_num=0, conds_init=0x7fff7001b168, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff70005348, unit_arg=0x7fff70004bd0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:997
#10 0x0000000000800089 in mysql_select (thd=0x7fff70000d50, tables=0x7fff70016ba8, wild_num=0, fields=..., conds=0x7fff7001b168, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff7001b378, unit=0x7fff70004bd0, select_lex=0x7fff70005348) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4174
#11 0x00000000007ff9e3 in handle_select (thd=0x7fff70000d50, lex=0x7fff70004b08, result=0x7fff7001b378, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#12 0x00000000007c0fd1 in execute_sqlcom_select (thd=0x7fff70000d50, all_tables=0x7fff70016ba8) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6545
#13 0x00000000007b60d0 in mysql_execute_command (thd=0x7fff70000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3768
#14 0x00000000007b0b0f in mysql_parse (thd=0x7fff70000d50, rawbuf=0x7fff70015b88 "select g1.x as RJ2_x1,\n       g1.y as y1,\n       g2.x as x2,\n       g2.y as y2\nfrom (g2 left join g1 on (g1.x = g2.x))\njoin\n  (select mysql.transaction_registry.transaction_id\n   from mysql.transaction_registry\n   where mysql.transaction_registry.commit_timestamp <= @t0\n   order by mysql.transaction_registry.commit_timestamp desc\n   limit 1) __trt_0\nwhere trt_trx_sees(g2.sys_end, __trt_0.transaction_id)\n  and trt_trx_sees_eq(__trt_0.transaction_id, g2.sys_start)", length=466, parser_state=0x7fffe4f02650, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8019

$31 = (SELECT_LEX *) 0x7fff700183b0
$32 = 0x2011a00 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= @t0 order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
7466          select_lex->leaf_tables_exec.empty();
#0  setup_tables (thd=0x7fff70000d50, context=0x7fff70005390, from_clause=0x7fff700054e8, tables=0x7fff70016ba8, leaves=..., select_insert=false, full_table_list=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7466
#1  0x0000000000713617 in setup_tables_and_check_access (thd=0x7fff70000d50, context=0x7fff70005390, from_clause=0x7fff700054e8, tables=0x7fff70016ba8, leaves=..., select_insert=false, want_access_first=1, want_access=1, full_table_list=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:7604
#2  0x000000000080379d in JOIN::prepare (this=0x7fff7001b398, tables_init=0x7fff70016ba8, wild_num=0, conds_init=0x7fff7001b168, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff70005348, unit_arg=0x7fff70004bd0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1009
#3  0x0000000000800089 in mysql_select (thd=0x7fff70000d50, tables=0x7fff70016ba8, wild_num=0, fields=..., conds=0x7fff7001b168, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff7001b378, unit=0x7fff70004bd0, select_lex=0x7fff70005348) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4174
#4  0x00000000007ff9e3 in handle_select (thd=0x7fff70000d50, lex=0x7fff70004b08, result=0x7fff7001b378, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#5  0x00000000007c0fd1 in execute_sqlcom_select (thd=0x7fff70000d50, all_tables=0x7fff70016ba8) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6545
#6  0x00000000007b60d0 in mysql_execute_command (thd=0x7fff70000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3768
#7  0x00000000007b0b0f in mysql_parse (thd=0x7fff70000d50, rawbuf=0x7fff70015b88 "select g1.x as RJ2_x1,\n       g1.y as y1,\n       g2.x as x2,\n       g2.y as y2\nfrom (g2 left join g1 on (g1.x = g2.x))\njoin\n  (select mysql.transaction_registry.transaction_id\n   from mysql.transaction_registry\n   where mysql.transaction_registry.commit_timestamp <= @t0\n   order by mysql.transaction_registry.commit_timestamp desc\n   limit 1) __trt_0\nwhere trt_trx_sees(g2.sys_end, __trt_0.transaction_id)\n  and trt_trx_sees_eq(__trt_0.transaction_id, g2.sys_start)", length=466, parser_state=0x7fffe4f02650, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8019

$33 = (SELECT_LEX *) 0x7fff70005348
$34 = 0x2011a00 <dbug_item_print_buf> "select g1.x AS RJ2_x1,g1.y AS y1,g2.x AS x2,g2.y AS y2 from ((test.g2 left join test.g1 on(g1.x = g2.x)) join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= @t0 order by `mysql`.transaction_registry.commit_timestamp desc limit 1) __trt_0) where trt_trx_sees(g2.sys_end,__trt_0.transaction_id) and trt_trx_sees_eq(__trt_0.transaction_id,g2.sys_start)"

2. leaf_tables_exec increased

4745        if (leaf_tables_exec.push_back(table, thd->mem_root))
#0  st_select_lex::save_leaf_tables (this=0x7fff70005348, thd=0x7fff70000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.cc:4745
#1  0x000000000080aea9 in JOIN::optimize_inner (this=0x7fff7001b398) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1612
#2  0x0000000000807955 in JOIN::optimize (this=0x7fff7001b398) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1438
#3  0x00000000008000bf in mysql_select (thd=0x7fff70000d50, tables=0x7fff70016ba8, wild_num=0, fields=..., conds=0x7fff7001b168, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff7001b378, unit=0x7fff70004bd0, select_lex=0x7fff70005348) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4182
#4  0x00000000007ff9e3 in handle_select (thd=0x7fff70000d50, lex=0x7fff70004b08, result=0x7fff7001b378, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#5  0x00000000007c0fd1 in execute_sqlcom_select (thd=0x7fff70000d50, all_tables=0x7fff70016ba8) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6545
#6  0x00000000007b60d0 in mysql_execute_command (thd=0x7fff70000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3768
#7  0x00000000007b0b0f in mysql_parse (thd=0x7fff70000d50, rawbuf=0x7fff70015b88 "select g1.x as RJ2_x1,\n       g1.y as y1,\n       g2.x as x2,\n       g2.y as y2\nfrom (g2 left join g1 on (g1.x = g2.x))\njoin\n  (select mysql.transaction_registry.transaction_id\n   from mysql.transaction_registry\n   where mysql.transaction_registry.commit_timestamp <= @t0\n   order by mysql.transaction_registry.commit_timestamp desc\n   limit 1) __trt_0\nwhere trt_trx_sees(g2.sys_end, __trt_0.transaction_id)\n  and trt_trx_sees_eq(__trt_0.transaction_id, g2.sys_start)", length=466, parser_state=0x7fffe4f02650, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8019

$35 = (st_select_lex *) 0x7fff70005348
$36 = 0x7fff70016ba0 "g2"
$37 = 0x2011a00 <dbug_item_print_buf> "select g1.x AS RJ2_x1,g1.y AS y1,g2.x AS x2,g2.y AS y2 from test.g2 left join test.g1 on(g1.x = g2.x) join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= @t0 order by `mysql`.transaction_registry.commit_timestamp desc limit 1) __trt_0 where trt_trx_sees(g2.sys_end,__trt_0.transaction_id) and trt_trx_sees_eq(__trt_0.transaction_id,g2.sys_start)"
4745        if (leaf_tables_exec.push_back(table, thd->mem_root))
#0  st_select_lex::save_leaf_tables (this=0x7fff70005348, thd=0x7fff70000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.cc:4745
#1  0x000000000080aea9 in JOIN::optimize_inner (this=0x7fff7001b398) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1612
#2  0x0000000000807955 in JOIN::optimize (this=0x7fff7001b398) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1438
#3  0x00000000008000bf in mysql_select (thd=0x7fff70000d50, tables=0x7fff70016ba8, wild_num=0, fields=..., conds=0x7fff7001b168, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff7001b378, unit=0x7fff70004bd0, select_lex=0x7fff70005348) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4182
#4  0x00000000007ff9e3 in handle_select (thd=0x7fff70000d50, lex=0x7fff70004b08, result=0x7fff7001b378, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#5  0x00000000007c0fd1 in execute_sqlcom_select (thd=0x7fff70000d50, all_tables=0x7fff70016ba8) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6545
#6  0x00000000007b60d0 in mysql_execute_command (thd=0x7fff70000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3768
#7  0x00000000007b0b0f in mysql_parse (thd=0x7fff70000d50, rawbuf=0x7fff70015b88 "select g1.x as RJ2_x1,\n       g1.y as y1,\n       g2.x as x2,\n       g2.y as y2\nfrom (g2 left join g1 on (g1.x = g2.x))\njoin\n  (select mysql.transaction_registry.transaction_id\n   from mysql.transaction_registry\n   where mysql.transaction_registry.commit_timestamp <= @t0\n   order by mysql.transaction_registry.commit_timestamp desc\n   limit 1) __trt_0\nwhere trt_trx_sees(g2.sys_end, __trt_0.transaction_id)\n  and trt_trx_sees_eq(__trt_0.transaction_id, g2.sys_start)", length=466, parser_state=0x7fffe4f02650, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8019

$38 = (st_select_lex *) 0x7fff70005348
$39 = 0x7fff70017240 "g1"
$40 = 0x2011a00 <dbug_item_print_buf> "select g1.x AS RJ2_x1,g1.y AS y1,g2.x AS x2,g2.y AS y2 from test.g2 left join test.g1 on(g1.x = g2.x) join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= @t0 order by `mysql`.transaction_registry.commit_timestamp desc limit 1) __trt_0 where trt_trx_sees(g2.sys_end,__trt_0.transaction_id) and trt_trx_sees_eq(__trt_0.transaction_id,g2.sys_start)"
4745        if (leaf_tables_exec.push_back(table, thd->mem_root))
#0  st_select_lex::save_leaf_tables (this=0x7fff70005348, thd=0x7fff70000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.cc:4745
#1  0x000000000080aea9 in JOIN::optimize_inner (this=0x7fff7001b398) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1612
#2  0x0000000000807955 in JOIN::optimize (this=0x7fff7001b398) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1438
#3  0x00000000008000bf in mysql_select (thd=0x7fff70000d50, tables=0x7fff70016ba8, wild_num=0, fields=..., conds=0x7fff7001b168, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff7001b378, unit=0x7fff70004bd0, select_lex=0x7fff70005348) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4182
#4  0x00000000007ff9e3 in handle_select (thd=0x7fff70000d50, lex=0x7fff70004b08, result=0x7fff7001b378, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#5  0x00000000007c0fd1 in execute_sqlcom_select (thd=0x7fff70000d50, all_tables=0x7fff70016ba8) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6545
#6  0x00000000007b60d0 in mysql_execute_command (thd=0x7fff70000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3768
#7  0x00000000007b0b0f in mysql_parse (thd=0x7fff70000d50, rawbuf=0x7fff70015b88 "select g1.x as RJ2_x1,\n       g1.y as y1,\n       g2.x as x2,\n       g2.y as y2\nfrom (g2 left join g1 on (g1.x = g2.x))\njoin\n  (select mysql.transaction_registry.transaction_id\n   from mysql.transaction_registry\n   where mysql.transaction_registry.commit_timestamp <= @t0\n   order by mysql.transaction_registry.commit_timestamp desc\n   limit 1) __trt_0\nwhere trt_trx_sees(g2.sys_end, __trt_0.transaction_id)\n  and trt_trx_sees_eq(__trt_0.transaction_id, g2.sys_start)", length=466, parser_state=0x7fffe4f02650, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8019

$41 = (st_select_lex *) 0x7fff70005348
$42 = 0x7fff70019d28 "__trt_0"
$43 = 0x2011a00 <dbug_item_print_buf> "select g1.x AS RJ2_x1,g1.y AS y1,g2.x AS x2,g2.y AS y2 from test.g2 left join test.g1 on(g1.x = g2.x) join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= @t0 order by `mysql`.transaction_registry.commit_timestamp desc limit 1) __trt_0 where trt_trx_sees(g2.sys_end,__trt_0.transaction_id) and trt_trx_sees_eq(__trt_0.transaction_id,g2.sys_start)"
4745        if (leaf_tables_exec.push_back(table, thd->mem_root))
#0  st_select_lex::save_leaf_tables (this=0x7fff700183b0, thd=0x7fff70000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.cc:4745
#1  0x000000000080aea9 in JOIN::optimize_inner (this=0x7fff70082748) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1612
#2  0x0000000000807955 in JOIN::optimize (this=0x7fff70082748) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1438
#3  0x000000000075cf47 in mysql_derived_optimize (thd=0x7fff70000d50, lex=0x7fff70004b08, derived=0x7fff70019d68) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:937
#4  0x000000000075f2f7 in mysql_handle_single_derived (lex=0x7fff70004b08, derived=0x7fff70019d68, phases=4) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:197
#5  0x000000000080b58b in JOIN::optimize_inner (this=0x7fff7001b398) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1682
#6  0x0000000000807955 in JOIN::optimize (this=0x7fff7001b398) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:1438
#7  0x00000000008000bf in mysql_select (thd=0x7fff70000d50, tables=0x7fff70016ba8, wild_num=0, fields=..., conds=0x7fff7001b168, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff7001b378, unit=0x7fff70004bd0, select_lex=0x7fff70005348) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4182
#8  0x00000000007ff9e3 in handle_select (thd=0x7fff70000d50, lex=0x7fff70004b08, result=0x7fff7001b378, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#9  0x00000000007c0fd1 in execute_sqlcom_select (thd=0x7fff70000d50, all_tables=0x7fff70016ba8) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6545
#10 0x00000000007b60d0 in mysql_execute_command (thd=0x7fff70000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3768
#11 0x00000000007b0b0f in mysql_parse (thd=0x7fff70000d50, rawbuf=0x7fff70015b88 "select g1.x as RJ2_x1,\n       g1.y as y1,\n       g2.x as x2,\n       g2.y as y2\nfrom (g2 left join g1 on (g1.x = g2.x))\njoin\n  (select mysql.transaction_registry.transaction_id\n   from mysql.transaction_registry\n   where mysql.transaction_registry.commit_timestamp <= @t0\n   order by mysql.transaction_registry.commit_timestamp desc\n   limit 1) __trt_0\nwhere trt_trx_sees(g2.sys_end, __trt_0.transaction_id)\n  and trt_trx_sees_eq(__trt_0.transaction_id, g2.sys_start)", length=466, parser_state=0x7fffe4f02650, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8019

$44 = (st_select_lex *) 0x7fff700183b0
$45 = 0x7fff700190d8 "transaction_registry"
$46 = 0x2011a00 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= @t0 order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
midenok commented 6 years ago

Bad

1. leaf_tables_exec emptied

7466          select_lex->leaf_tables_exec.empty();
#0  setup_tables (thd=0x62a00009c270, context=0x62b0000039f8, from_clause=0x62b000003b50, tables=0x62b000004698, leaves=..., select_insert=false, full_table_list=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:7466
#1  0x00000000009879e8 in setup_tables_and_check_access (thd=0x62a00009c270, context=0x62b0000039f8, from_clause=0x62b000003b50, tables=0x62b000004698, leaves=..., select_insert=false, want_access_first=1, want_access=1, full_table_list=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:7604
#2  0x0000000000c0ae47 in JOIN::prepare (this=0x62900005a288, tables_init=0x62b000004698, wild_num=0, conds_init=0x62b000004e18, og_num=1, order_init=0x62b000005088, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x62b0000039b0, unit_arg=0x62b000003dc8) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:1001
#3  0x0000000000e8675e in st_select_lex_unit::prepare_join (this=0x62b000003dc8, thd_arg=0x62a00009c270, sl=0x62b0000039b0, tmp_result=0x62b000005e90, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_union.cc:654
#4  0x0000000000e7533f in st_select_lex_unit::prepare (this=0x62b000003dc8, derived_arg=0x62b0000051b8, sel_result=0x62b000005e90, additional_options=0) at /home/midenok/src/mariadb/midenok/src/sql/sql_union.cc:949
#5  0x0000000000a4be22 in mysql_derived_prepare (thd=0x62a00009c270, lex=0x62a0000a0028, derived=0x62b0000051b8) at /home/midenok/src/mariadb/midenok/src/sql/sql_derived.cc:768
#6  0x0000000000a54127 in mysql_handle_single_derived (lex=0x62a0000a0028, derived=0x62b0000051b8, phases=2) at /home/midenok/src/mariadb/midenok/src/sql/sql_derived.cc:197
#7  0x0000000000f25caf in TABLE_LIST::handle_derived (this=0x62b0000051b8, lex=0x62a0000a0028, phases=2) at /home/midenok/src/mariadb/midenok/src/sql/table.cc:8042
#8  0x0000000000ac897f in st_select_lex::handle_derived (this=0x62b0000008e8, lex=0x62a0000a0028, phases=2) at /home/midenok/src/mariadb/midenok/src/sql/sql_lex.cc:4083
#9  0x0000000000f25be3 in TABLE_LIST::handle_derived (this=0x62b000003340, lex=0x62a0000a0028, phases=2) at /home/midenok/src/mariadb/midenok/src/sql/table.cc:8039
#10 0x0000000000ac897f in st_select_lex::handle_derived (this=0x62a0000a0878, lex=0x62a0000a0028, phases=2) at /home/midenok/src/mariadb/midenok/src/sql/sql_lex.cc:4083
#11 0x0000000000c0a988 in JOIN::prepare (this=0x62b000005928, tables_init=0x62b000003340, wild_num=0, conds_init=0x0, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x62a0000a0878, unit_arg=0x62a0000a00f0) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:989
#12 0x0000000000c03c8b in mysql_select (thd=0x62a00009c270, tables=0x62b000003340, wild_num=0, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x62b000005908, unit=0x62a0000a00f0, select_lex=0x62a0000a0878) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:4166
#13 0x0000000000c02d0a in handle_select (thd=0x62a00009c270, lex=0x62a0000a0028, result=0x62b000005908, setup_tables_done_option=0) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:370
#14 0x0000000000b5177b in execute_sqlcom_select (thd=0x62a00009c270, all_tables=0x62b000003340) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6549
#15 0x0000000000b39a7d in mysql_execute_command (thd=0x62a00009c270) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:3772
#16 0x0000000000b2b6e4 in mysql_parse (thd=0x62a00009c270, rawbuf=0x62b000000288 "select RJ2_x1,y1,x2,y2 from (select t1.x as RJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 right join t2 on t1.x = t2.x) for system_time as of timestamp @t0 as t", length=165, parser_state=0x7fffcea3f040, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:8023

$1 = (SELECT_LEX *) 0x62b0000039b0
$2 = 0x53a0240 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= @t0 order by `mysql`.transaction_registry.commit_timestamp desc limit 1"
7466          select_lex->leaf_tables_exec.empty();
#0  setup_tables (thd=0x62a00009c270, context=0x62b000000930, from_clause=0x62b000000a88, tables=0x62b0000019c0, leaves=..., select_insert=false, full_table_list=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:7466
#1  0x00000000009879e8 in setup_tables_and_check_access (thd=0x62a00009c270, context=0x62b000000930, from_clause=0x62b000000a88, tables=0x62b0000019c0, leaves=..., select_insert=false, want_access_first=1, want_access=1, full_table_list=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:7604
#2  0x0000000000c0ae47 in JOIN::prepare (this=0x62900005a8d8, tables_init=0x62b0000019c0, wild_num=0, conds_init=0x0, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x62b0000008e8, unit_arg=0x62b000000d00) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:1001
#3  0x0000000000e8675e in st_select_lex_unit::prepare_join (this=0x62b000000d00, thd_arg=0x62a00009c270, sl=0x62b0000008e8, tmp_result=0x62900005a7f0, additional_options=0, is_union_select=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_union.cc:654
#4  0x0000000000e7533f in st_select_lex_unit::prepare (this=0x62b000000d00, derived_arg=0x62b000003340, sel_result=0x62900005a7f0, additional_options=0) at /home/midenok/src/mariadb/midenok/src/sql/sql_union.cc:949
#5  0x0000000000a4be22 in mysql_derived_prepare (thd=0x62a00009c270, lex=0x62a0000a0028, derived=0x62b000003340) at /home/midenok/src/mariadb/midenok/src/sql/sql_derived.cc:768
#6  0x0000000000a54127 in mysql_handle_single_derived (lex=0x62a0000a0028, derived=0x62b000003340, phases=2) at /home/midenok/src/mariadb/midenok/src/sql/sql_derived.cc:197
#7  0x0000000000f25caf in TABLE_LIST::handle_derived (this=0x62b000003340, lex=0x62a0000a0028, phases=2) at /home/midenok/src/mariadb/midenok/src/sql/table.cc:8042
#8  0x0000000000ac897f in st_select_lex::handle_derived (this=0x62a0000a0878, lex=0x62a0000a0028, phases=2) at /home/midenok/src/mariadb/midenok/src/sql/sql_lex.cc:4083
#9  0x0000000000c0a988 in JOIN::prepare (this=0x62b000005928, tables_init=0x62b000003340, wild_num=0, conds_init=0x0, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x62a0000a0878, unit_arg=0x62a0000a00f0) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:989
#10 0x0000000000c03c8b in mysql_select (thd=0x62a00009c270, tables=0x62b000003340, wild_num=0, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x62b000005908, unit=0x62a0000a00f0, select_lex=0x62a0000a0878) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:4166
#11 0x0000000000c02d0a in handle_select (thd=0x62a00009c270, lex=0x62a0000a0028, result=0x62b000005908, setup_tables_done_option=0) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:370
#12 0x0000000000b5177b in execute_sqlcom_select (thd=0x62a00009c270, all_tables=0x62b000003340) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6549
#13 0x0000000000b39a7d in mysql_execute_command (thd=0x62a00009c270) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:3772
#14 0x0000000000b2b6e4 in mysql_parse (thd=0x62a00009c270, rawbuf=0x62b000000288 "select RJ2_x1,y1,x2,y2 from (select t1.x as RJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 right join t2 on t1.x = t2.x) for system_time as of timestamp @t0 as t", length=165, parser_state=0x7fffcea3f040, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:8023

$3 = (SELECT_LEX *) 0x62b0000008e8
$4 = 0x53a0240 <dbug_item_print_buf> "select t1.x AS RJ2_x1,t1.y AS y1,t2.x AS x2,t2.y AS y2 from (test.t2 left join test.t1 on(t1.x = t2.x)) join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= @t0 order by `mysql`.transaction_registry.commit_timestamp desc limit 1) __trt_0"
7466          select_lex->leaf_tables_exec.empty();
#0  setup_tables (thd=0x62a00009c270, context=0x62a0000a08c0, from_clause=0x62a0000a0a18, tables=0x62b000003340, leaves=..., select_insert=false, full_table_list=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:7466
#1  0x00000000009879e8 in setup_tables_and_check_access (thd=0x62a00009c270, context=0x62a0000a08c0, from_clause=0x62a0000a0a18, tables=0x62b000003340, leaves=..., select_insert=false, want_access_first=1, want_access=1, full_table_list=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:7604
#2  0x0000000000c0ae47 in JOIN::prepare (this=0x62b000005928, tables_init=0x62b000003340, wild_num=0, conds_init=0x0, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x62a0000a0878, unit_arg=0x62a0000a00f0) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:1001
#3  0x0000000000c03c8b in mysql_select (thd=0x62a00009c270, tables=0x62b000003340, wild_num=0, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x62b000005908, unit=0x62a0000a00f0, select_lex=0x62a0000a0878) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:4166
#4  0x0000000000c02d0a in handle_select (thd=0x62a00009c270, lex=0x62a0000a0028, result=0x62b000005908, setup_tables_done_option=0) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:370
#5  0x0000000000b5177b in execute_sqlcom_select (thd=0x62a00009c270, all_tables=0x62b000003340) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6549
#6  0x0000000000b39a7d in mysql_execute_command (thd=0x62a00009c270) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:3772
#7  0x0000000000b2b6e4 in mysql_parse (thd=0x62a00009c270, rawbuf=0x62b000000288 "select RJ2_x1,y1,x2,y2 from (select t1.x as RJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 right join t2 on t1.x = t2.x) for system_time as of timestamp @t0 as t", length=165, parser_state=0x7fffcea3f040, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:8023

$5 = (SELECT_LEX *) 0x62b0000008e8
$6 = 0x53a0240 <dbug_item_print_buf> "select t1.x AS RJ2_x1,t1.y AS y1,t2.x AS x2,t2.y AS y2 from (test.t2 FOR SYSTEM_TIME ALL left join test.t1 FOR SYSTEM_TIME ALL on(t1.x = t2.x and trt_trx_sees(t1.sys_end,__trt_0.transaction_id) and trt_trx_sees_eq(__trt_0.transaction_id,t1.sys_start))) join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= @t0 order by `mysql`.transaction_registry.commit_timestamp desc limit 1) __trt_0"

2. leaf_tables_exec increased

4745        if (leaf_tables_exec.push_back(table, thd->mem_root))
#0  st_select_lex::save_leaf_tables (this=0x62a0000a0878, thd=0x62a00009c270) at /home/midenok/src/mariadb/midenok/src/sql/sql_lex.cc:4745
#1  0x0000000000c26a68 in JOIN::optimize_inner (this=0x62b000005928) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:1604
#2  0x0000000000c1a8d8 in JOIN::optimize (this=0x62b000005928) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:1430
#3  0x0000000000c03cc5 in mysql_select (thd=0x62a00009c270, tables=0x62b000003340, wild_num=0, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x62b000005908, unit=0x62a0000a00f0, select_lex=0x62a0000a0878) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:4174
#4  0x0000000000c02d0a in handle_select (thd=0x62a00009c270, lex=0x62a0000a0028, result=0x62b000005908, setup_tables_done_option=0) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:370
#5  0x0000000000b5177b in execute_sqlcom_select (thd=0x62a00009c270, all_tables=0x62b000003340) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6549
#6  0x0000000000b39a7d in mysql_execute_command (thd=0x62a00009c270) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:3772
#7  0x0000000000b2b6e4 in mysql_parse (thd=0x62a00009c270, rawbuf=0x62b000000288 "select RJ2_x1,y1,x2,y2 from (select t1.x as RJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 right join t2 on t1.x = t2.x) for system_time as of timestamp @t0 as t", length=165, parser_state=0x7fffcea3f040, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:8023

$7 = (st_select_lex *) 0x62a0000a0878
$8 = 0x62b0000019b8 "t1"
$9 = 0x53a0240 <dbug_item_print_buf> "select t1.x AS RJ2_x1,t1.y AS y1,t2.x AS x2,t2.y AS y2 from test.t2 FOR SYSTEM_TIME ALL left join test.t1 FOR SYSTEM_TIME ALL on(t1.x = t2.x and trt_trx_sees(t1.sys_end,__trt_0.transaction_id) and trt_trx_sees_eq(__trt_0.transaction_id,t1.sys_start)) join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= @t0 order by `mysql`.transaction_registry.commit_timestamp desc limit 1) __trt_0 where trt_trx_sees(t2.sys_end,__trt_0.transaction_id) and trt_trx_sees_eq(__trt_0.transaction_id,t2.sys_start)"
4745        if (leaf_tables_exec.push_back(table, thd->mem_root))
#0  st_select_lex::save_leaf_tables (this=0x62a0000a0878, thd=0x62a00009c270) at /home/midenok/src/mariadb/midenok/src/sql/sql_lex.cc:4745
#1  0x0000000000c26a68 in JOIN::optimize_inner (this=0x62b000005928) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:1604
#2  0x0000000000c1a8d8 in JOIN::optimize (this=0x62b000005928) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:1430
#3  0x0000000000c03cc5 in mysql_select (thd=0x62a00009c270, tables=0x62b000003340, wild_num=0, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x62b000005908, unit=0x62a0000a00f0, select_lex=0x62a0000a0878) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:4174
#4  0x0000000000c02d0a in handle_select (thd=0x62a00009c270, lex=0x62a0000a0028, result=0x62b000005908, setup_tables_done_option=0) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:370
#5  0x0000000000b5177b in execute_sqlcom_select (thd=0x62a00009c270, all_tables=0x62b000003340) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6549
#6  0x0000000000b39a7d in mysql_execute_command (thd=0x62a00009c270) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:3772
#7  0x0000000000b2b6e4 in mysql_parse (thd=0x62a00009c270, rawbuf=0x62b000000288 "select RJ2_x1,y1,x2,y2 from (select t1.x as RJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 right join t2 on t1.x = t2.x) for system_time as of timestamp @t0 as t", length=165, parser_state=0x7fffcea3f040, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:8023

$10 = (st_select_lex *) 0x62a0000a0878
$11 = 0x62b000002068 "t2"
$12 = 0x53a0240 <dbug_item_print_buf> "select t1.x AS RJ2_x1,t1.y AS y1,t2.x AS x2,t2.y AS y2 from test.t2 FOR SYSTEM_TIME ALL left join test.t1 FOR SYSTEM_TIME ALL on(t1.x = t2.x and trt_trx_sees(t1.sys_end,__trt_0.transaction_id) and trt_trx_sees_eq(__trt_0.transaction_id,t1.sys_start)) join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= @t0 order by `mysql`.transaction_registry.commit_timestamp desc limit 1) __trt_0 where trt_trx_sees(t2.sys_end,__trt_0.transaction_id) and trt_trx_sees_eq(__trt_0.transaction_id,t2.sys_start)"
4745        if (leaf_tables_exec.push_back(table, thd->mem_root))
#0  st_select_lex::save_leaf_tables (this=0x62a0000a0878, thd=0x62a00009c270) at /home/midenok/src/mariadb/midenok/src/sql/sql_lex.cc:4745
#1  0x0000000000c26a68 in JOIN::optimize_inner (this=0x62b000005928) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:1604
#2  0x0000000000c1a8d8 in JOIN::optimize (this=0x62b000005928) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:1430
#3  0x0000000000c03cc5 in mysql_select (thd=0x62a00009c270, tables=0x62b000003340, wild_num=0, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x62b000005908, unit=0x62a0000a00f0, select_lex=0x62a0000a0878) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:4174
#4  0x0000000000c02d0a in handle_select (thd=0x62a00009c270, lex=0x62a0000a0028, result=0x62b000005908, setup_tables_done_option=0) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:370
#5  0x0000000000b5177b in execute_sqlcom_select (thd=0x62a00009c270, all_tables=0x62b000003340) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6549
#6  0x0000000000b39a7d in mysql_execute_command (thd=0x62a00009c270) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:3772
#7  0x0000000000b2b6e4 in mysql_parse (thd=0x62a00009c270, rawbuf=0x62b000000288 "select RJ2_x1,y1,x2,y2 from (select t1.x as RJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 right join t2 on t1.x = t2.x) for system_time as of timestamp @t0 as t", length=165, parser_state=0x7fffcea3f040, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:8023

$13 = (st_select_lex *) 0x62a0000a0878
$14 = 0x60e0000108f0 "__trt_0"
$15 = 0x53a0240 <dbug_item_print_buf> "select t1.x AS RJ2_x1,t1.y AS y1,t2.x AS x2,t2.y AS y2 from test.t2 FOR SYSTEM_TIME ALL left join test.t1 FOR SYSTEM_TIME ALL on(t1.x = t2.x and trt_trx_sees(t1.sys_end,__trt_0.transaction_id) and trt_trx_sees_eq(__trt_0.transaction_id,t1.sys_start)) join (select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= @t0 order by `mysql`.transaction_registry.commit_timestamp desc limit 1) __trt_0 where trt_trx_sees(t2.sys_end,__trt_0.transaction_id) and trt_trx_sees_eq(__trt_0.transaction_id,t2.sys_start)"
4745        if (leaf_tables_exec.push_back(table, thd->mem_root))
#0  st_select_lex::save_leaf_tables (this=0x62b0000039b0, thd=0x62a00009c270) at /home/midenok/src/mariadb/midenok/src/sql/sql_lex.cc:4745
#1  0x0000000000c26a68 in JOIN::optimize_inner (this=0x62900005a288) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:1604
#2  0x0000000000c1a8d8 in JOIN::optimize (this=0x62900005a288) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:1430
#3  0x0000000000a4daca in mysql_derived_optimize (thd=0x62a00009c270, lex=0x62a0000a0028, derived=0x62b0000051b8) at /home/midenok/src/mariadb/midenok/src/sql/sql_derived.cc:937
#4  0x0000000000a54127 in mysql_handle_single_derived (lex=0x62a0000a0028, derived=0x62b0000051b8, phases=4) at /home/midenok/src/mariadb/midenok/src/sql/sql_derived.cc:197
#5  0x0000000000c28006 in JOIN::optimize_inner (this=0x62b000005928) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:1674
#6  0x0000000000c1a8d8 in JOIN::optimize (this=0x62b000005928) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:1430
#7  0x0000000000c03cc5 in mysql_select (thd=0x62a00009c270, tables=0x62b000003340, wild_num=0, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x62b000005908, unit=0x62a0000a00f0, select_lex=0x62a0000a0878) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:4174
#8  0x0000000000c02d0a in handle_select (thd=0x62a00009c270, lex=0x62a0000a0028, result=0x62b000005908, setup_tables_done_option=0) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:370
#9  0x0000000000b5177b in execute_sqlcom_select (thd=0x62a00009c270, all_tables=0x62b000003340) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6549
#10 0x0000000000b39a7d in mysql_execute_command (thd=0x62a00009c270) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:3772
#11 0x0000000000b2b6e4 in mysql_parse (thd=0x62a00009c270, rawbuf=0x62b000000288 "select RJ2_x1,y1,x2,y2 from (select t1.x as RJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 right join t2 on t1.x = t2.x) for system_time as of timestamp @t0 as t", length=165, parser_state=0x7fffcea3f040, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:8023

$16 = (st_select_lex *) 0x62b0000039b0
$17 = 0x2f4c3a0 <.str.5> "transaction_registry"
$18 = 0x53a0240 <dbug_item_print_buf> "select `mysql`.transaction_registry.transaction_id AS transaction_id from `mysql`.transaction_registry where `mysql`.transaction_registry.commit_timestamp <= @t0 order by `mysql`.transaction_registry.commit_timestamp desc limit 1"

Cause

0x62a0000a0878->leaf_tables_exec was never emptied.

midenok commented 6 years ago

Cause

bool setup_tables(THD *thd, Name_resolution_context *context,
...
{
  ...
  SELECT_LEX *select_lex= select_insert ? &thd->lex->select_lex :
                                          thd->lex->current_select;
  if (select_lex->first_cond_optimization)
  {
      ...
      select_lex->leaf_tables_exec.empty();

setup_tables() depends on thd->lex->current_select.

Fix

Restore lex->current_select in TR_table::add_subquery().

midenok commented 6 years ago

Good

select g1.x as RJ2_x1,
       g1.y as y1,
       g2.x as x2,
       g2.y as y2
from (g2 left join g1 on (g1.x = g2.x))
join
  (select mysql.transaction_registry.transaction_id
   from mysql.transaction_registry
   where mysql.transaction_registry.commit_timestamp <= @t0
   order by mysql.transaction_registry.commit_timestamp desc
   limit 1) __trt_0
where trt_trx_sees(g2.sys_end, __trt_0.transaction_id)
  and trt_trx_sees_eq(__trt_0.transaction_id, g2.sys_start);

1. thd->lex->current_select assigned (0x7fff84005348)

#0  0x000000000077cd2a in LEX::start (this=0x7fff84004b08, thd_arg=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.cc:686
#1  0x000000000077b88d in lex_start (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.cc:641
#2  0x00000000007b0824 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84015b88 "select g1.x as RJ2_x1,        g1.y as y1,        g2.x as x2,        g2.y as y2 from (g2 left join g1 on (g1.x = g2.x)) join   (select mysql.transaction_registry.transaction_id    from mysql.transaction_registry    where mysql.transaction_registry.commit_timestamp <= @t0    order by mysql.transaction_registry.commit_timestamp desc    limit 1) __trt_0 where trt_trx_sees(g2.sys_end, __trt_0.transaction_id)   and trt_trx_sees_eq(__trt_0.transaction_id, g2.sys_start)", length=466, parser_state=0x7fffe4f02650, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:7959

2. thd->lex->current_select changed (0x7fff840183b0)

#0  mysql_new_select (lex=0x7fff84004b08, move_down=true, select_lex=0x7fff840183b0) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:7742
#1  0x0000000000a4c649 in MYSQLparse (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_yacc.yy:12075
#2  0x00000000007c588a in parse_sql (thd=0x7fff84000d50, parser_state=0x7fffe4f02650, creation_ctx=0x0, do_pfs_digest=true) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:10030
#3  0x00000000007b08e0 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84015b88 "select g1.x as RJ2_x1,        g1.y as y1,        g2.x as x2,        g2.y as y2 from (g2 left join g1 on (g1.x = g2.x)) join   (select mysql.transaction_registry.transaction_id    from mysql.transaction_registry    where mysql.transaction_registry.commit_timestamp <= @t0    order by mysql.transaction_registry.commit_timestamp desc    limit 1) __trt_0 where trt_trx_sees(g2.sys_end, __trt_0.transaction_id)   and trt_trx_sees_eq(__trt_0.transaction_id, g2.sys_start)", length=466, parser_state=0x7fffe4f02650, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:7972

3. Important: thd->lex->current_select set to outer_select() (0x7fff84005348)

#0  MYSQLparse (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_yacc.yy:11849
#1  0x00000000007c588a in parse_sql (thd=0x7fff84000d50, parser_state=0x7fffe4f02650, creation_ctx=0x0, do_pfs_digest=true) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:10030
#2  0x00000000007b08e0 in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84015b88 "select g1.x as RJ2_x1,        g1.y as y1,        g2.x as x2,        g2.y as y2 from (g2 left join g1 on (g1.x = g2.x)) join   (select mysql.transaction_registry.transaction_id    from mysql.transaction_registry    where mysql.transaction_registry.commit_timestamp <= @t0    order by mysql.transaction_registry.commit_timestamp desc    limit 1) __trt_0 where trt_trx_sees(g2.sys_end, __trt_0.transaction_id)   and trt_trx_sees_eq(__trt_0.transaction_id, g2.sys_start)", length=466, parser_state=0x7fffe4f02650, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:7972
11841                 /* Handle case of derived table, alias may be NULL if there
11842                    are no outer parentheses, add_table_to_list() will throw
11843                    error in this case */
11844                 LEX *lex=Lex;
11845                 lex->check_automatic_up(UNSPECIFIED_TYPE);
11846                 SELECT_LEX *sel= lex->current_select;
11847                 SELECT_LEX_UNIT *unit= sel->master_unit();
11848                 lex->current_select= sel= unit->outer_select();
11849                 Table_ident *ti= new (thd->mem_root) Table_ident(unit);
11850                 if (unlikely(ti == NULL))
11851                   MYSQL_YYABORT;
11852                 if (unlikely(!($$= sel->add_table_to_list(thd,
11853                                                           ti, $6, 0,
11854                                                           TL_READ,
11855                                                           MDL_SHARED_READ))))
11856                   MYSQL_YYABORT;
11857                 sel->add_joined_table($$);
11858                 lex->pop_context();
11859                 lex->nest_level--;

4. thd->lex->current_select temporarily changed and restored (0x7fff840183b0, then back to 0x7fff84005348)

#0  st_select_lex_unit::prepare (this=0x7fff840187c8, derived_arg=0x7fff84019d68, sel_result=0x7fff8401b900, additional_options=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_union.cc:887
#1  0x000000000075c44a in mysql_derived_prepare (thd=0x7fff84000d50, lex=0x7fff84004b08, derived=0x7fff84019d68) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:768
#2  0x000000000075f2f7 in mysql_handle_single_derived (lex=0x7fff84004b08, derived=0x7fff84019d68, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_derived.cc:197
#3  0x000000000090b5ff in TABLE_LIST::handle_derived (this=0x7fff84019d68, lex=0x7fff84004b08, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/table.cc:8042
#4  0x0000000000786043 in st_select_lex::handle_derived (this=0x7fff84005348, lex=0x7fff84004b08, phases=2) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.cc:4083
#5  0x0000000000803691 in JOIN::prepare (this=0x7fff8401b398, tables_init=0x7fff84016ba8, wild_num=0, conds_init=0x7fff8401b168, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fff84005348, unit_arg=0x7fff84004bd0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:997
#6  0x0000000000800089 in mysql_select (thd=0x7fff84000d50, tables=0x7fff84016ba8, wild_num=0, fields=..., conds=0x7fff8401b168, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff8401b378, unit=0x7fff84004bd0, select_lex=0x7fff84005348) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:4174
#7  0x00000000007ff9e3 in handle_select (thd=0x7fff84000d50, lex=0x7fff84004b08, result=0x7fff8401b378, setup_tables_done_option=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_select.cc:370
#8  0x00000000007c0fd1 in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff84016ba8) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6545
#9  0x00000000007b60d0 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3768
#10 0x00000000007b0b0f in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84015b88 "select g1.x as RJ2_x1,        g1.y as y1,        g2.x as x2,        g2.y as y2 from (g2 left join g1 on (g1.x = g2.x)) join   (select mysql.transaction_registry.transaction_id    from mysql.transaction_registry    where mysql.transaction_registry.commit_timestamp <= @t0    order by mysql.transaction_registry.commit_timestamp desc    limit 1) __trt_0 where trt_trx_sees(g2.sys_end, __trt_0.transaction_id)   and trt_trx_sees_eq(__trt_0.transaction_id, g2.sys_start)", length=466, parser_state=0x7fffe4f02650, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8019

5. etc: thd->lex->current_select always restored to 0x7fff84005348

midenok commented 6 years ago

Bug 3: segfault in SP

Reproduce

create or replace table t1 (called_bad int) with system versioning;
create or replace view v1 as select called_bad from t1 where called_bad < 5;
create or replace procedure bad() select called_bad from v1;
call bad;

Result 1

#0  0x0000000000729d55 in __asan_memcpy ()
#1  0x0000000000af1bf7 in Lex_input_stream::skip_binary (this=0x7fffce9f74b8, n=0) at /home/midenok/src/mariadb/midenok/src/sql/sql_lex.h:2204
#2  0x0000000000ab8130 in Lex_input_stream::scan_ident_middle (this=0x7fffce9f74b8, thd=0x62a00009c270, str=0x7fffce9dd460, introducer=0x7fffce9dd460, st=0x7fffce9dc7a0) at /home/midenok/src/mariadb/midenok/src/sql/sql_lex.cc:2049
#3  0x0000000000ab435a in Lex_input_stream::lex_one_token (this=0x7fffce9f74b8, yylval=0x7fffce9dd460, thd=0x62a00009c270) at /home/midenok/src/mariadb/midenok/src/sql/sql_lex.cc:1486
#4  0x0000000000ab2d5d in Lex_input_stream::lex_token (this=0x7fffce9f74b8, yylval=0x7fffce9dd460, thd=0x62a00009c270) at /home/midenok/src/mariadb/midenok/src/sql/sql_lex.cc:1289
#5  0x0000000000ab2bd7 in MYSQLlex (yylval=0x7fffce9dd460, thd=0x62a00009c270) at /home/midenok/src/mariadb/midenok/src/sql/sql_lex.cc:1262
#6  0x000000000121f1f5 in MYSQLparse (thd=0x62a00009c270) at sql/sql_yacc.cc:24454
#7  0x0000000000b5f000 in parse_sql (thd=0x62a00009c270, parser_state=0x7fffce9f74b0, creation_ctx=0x6250000f18e0, do_pfs_digest=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:10034
#8  0x0000000000ec0d34 in mysql_make_view (thd=0x62a00009c270, share=0x61b000071d08, table=0x6250000f0f68, open_view_no_parse=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_view.cc:1396
#9  0x000000000095e4d5 in open_table (thd=0x62a00009c270, table_list=0x6250000f0f68, ot_ctx=0x7fffce9fa240) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:1841
#10 0x000000000096acf7 in open_and_process_table (thd=0x62a00009c270, lex=0x6250000f2988, tables=0x6250000f0f68, counter=0x7fffce9fa8e0, flags=0, prelocking_strategy=0x7fffce9fab60, has_prelocking_list=false, ot_ctx=0x7fffce9fa240) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:3526
#11 0x0000000000967cf9 in open_tables (thd=0x62a00009c270, options=..., start=0x7fffce9fa8c0, counter=0x7fffce9fa8e0, flags=0, prelocking_strategy=0x7fffce9fab60) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:4044
#12 0x0000000000973f51 in open_and_lock_tables (thd=0x62a00009c270, options=..., tables=0x6250000f0f68, derived=true, flags=0, prelocking_strategy=0x7fffce9fab60) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:4921
#13 0x00000000008a2a26 in open_and_lock_tables (thd=0x62a00009c270, tables=0x6250000f0f68, derived=true, flags=0) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.h:491
#14 0x0000000000b5094f in execute_sqlcom_select (thd=0x62a00009c270, all_tables=0x6250000f0f68) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6470
#15 0x0000000000b39afd in mysql_execute_command (thd=0x62a00009c270) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:3772
#16 0x000000000088fa95 in sp_instr_stmt::exec_core (this=0x6250000f15d8, thd=0x62a00009c270, nextp=0x7fffcea011e0) at /home/midenok/src/mariadb/midenok/src/sql/sp_head.cc:3601
#17 0x000000000088beb5 in sp_lex_keeper::reset_lex_and_exec_core (this=0x6250000f1628, thd=0x62a00009c270, nextp=0x7fffcea011e0, open_tables=false, instr=0x6250000f15d8) at /home/midenok/src/mariadb/midenok/src/sql/sp_head.cc:3317
#18 0x000000000088d434 in sp_instr_stmt::execute (this=0x6250000f15d8, thd=0x62a00009c270, nextp=0x7fffcea011e0) at /home/midenok/src/mariadb/midenok/src/sql/sp_head.cc:3504
#19 0x00000000008775c7 in sp_head::execute (this=0x6250000f0188, thd=0x62a00009c270, merge_da_on_success=true) at /home/midenok/src/mariadb/midenok/src/sql/sp_head.cc:1354
#20 0x000000000087d97c in sp_head::execute_procedure (this=0x6250000f0188, thd=0x62a00009c270, args=0x62a0000a0e98) at /home/midenok/src/mariadb/midenok/src/sql/sp_head.cc:2293
#21 0x0000000000b33f72 in do_execute_sp (thd=0x62a00009c270, sp=0x6250000f0188) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:2944
#22 0x0000000000b330a3 in Sql_cmd_call::execute (this=0x62b000000348, thd=0x62a00009c270) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:3186
#23 0x0000000000b4c863 in mysql_execute_command (thd=0x62a00009c270) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6287
#24 0x0000000000b2b764 in mysql_parse (thd=0x62a00009c270, rawbuf=0x62b000000288 "call bad", length=8, parser_state=0x7fffcea09040, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:8023

frame 1

2196      /**
2197        Skip binary from the input stream.
2198        @param n number of bytes to accept.
2199      */
2200      void skip_binary(int n)
2201      {
2202        if (m_echo)
2203        {
2204          memcpy(m_cpp_ptr, m_ptr, n);
2205          m_cpp_ptr += n;
2206        }
2207        m_ptr += n;
2208      }

frame 2

(gdb) p cs
$10 = (CHARSET_INFO * const) 0x466a440 <my_charset_utf8_general_ci>
(gdb) p *this
$1 = {
  lookahead_token = -1, 
  lookahead_yylval = 0x0, 
  m_thd = 0x62a00009c270, 
  m_ptr = 0x625000120f89 "elect `test`.`t1`.`called_bad` AS `called_bad` from `test`.`t1` where `test`.`t1`.`called_bad` < 5", 
  m_tok_start = 0x625000120f88 "select `test`.`t1`.`called_bad` AS `called_bad` from `test`.`t1` where `test`.`t1`.`called_bad` < 5", 
  m_tok_end = 0x625000120f88 "select `test`.`t1`.`called_bad` AS `called_bad` from `test`.`t1` where `test`.`t1`.`called_bad` < 5", 
  m_end_of_query = 0x625000120feb "", 
  m_tok_start_prev = 0x0, 
  m_buf = 0x625000120f88 "select `test`.`t1`.`called_bad` AS `called_bad` from `test`.`t1` where `test`.`t1`.`called_bad` < 5", 
  m_buf_length = 99, 
  m_echo = true, 
  m_echo_saved = 128, 
  m_cpp_buf = 0x6250001210f8 "s", '\245' <repeats 103 times>, " 57\005", 
  m_cpp_ptr = 0x6250001210f9 '\245' <repeats 103 times>, " 57\005", 
  m_cpp_tok_start = 0x6250001210f8 "s", '\245' <repeats 103 times>, " 57\005", 
  m_cpp_tok_start_prev = 0x0, 
  m_cpp_tok_end = 0x6250001210f8 "s", '\245' <repeats 103 times>, " 57\005", 
  m_body_utf8 = 0x0, 
  m_body_utf8_ptr = 0x45e0360e <error: Cannot access memory at address 0x45e0360e>, 
  m_cpp_utf8_processed_ptr = 0x0, 
  next_state = MY_LEX_OPERATOR_OR_IDENT, 
  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 = 0x0, 
  m_cpp_text_end = 0x7fffcea2d690 "Pۢ\316\377\177", 
  m_underscore_cs = 0x0
}

Reproduce 2

Run versioning.select2,trx_id until MDEV-14786 case.

Result 2

#0  0x0000000000af1a8a in Lex_input_stream::yyGet (this=0x7fffce92b4b8) at /home/midenok/src/mariadb/midenok/src/sql/sql_lex.h:2218
#1  0x0000000000ababc5 in Lex_input_stream::get_7bit_or_8bit_ident (this=0x7fffce92b4b8, thd=0x62a00009c270, last_char=0x7fffce910100 "") at /home/midenok/src/mariadb/midenok/src/sql/sql_lex.cc:1935
#2  0x0000000000ab8323 in Lex_input_stream::scan_ident_middle (this=0x7fffce92b4b8, thd=0x62a00009c270, str=0x7fffce911460, introducer=0x7fffce911460, st=0x7fffce9107a0) at /home/midenok/src/mariadb/midenok/src/sql/sql_lex.cc:2063
#3  0x0000000000ab435a in Lex_input_stream::lex_one_token (this=0x7fffce92b4b8, yylval=0x7fffce911460, thd=0x62a00009c270) at /home/midenok/src/mariadb/midenok/src/sql/sql_lex.cc:1486
#4  0x0000000000ab2d5d in Lex_input_stream::lex_token (this=0x7fffce92b4b8, yylval=0x7fffce911460, thd=0x62a00009c270) at /home/midenok/src/mariadb/midenok/src/sql/sql_lex.cc:1289
#5  0x0000000000ab2bd7 in MYSQLlex (yylval=0x7fffce911460, thd=0x62a00009c270) at /home/midenok/src/mariadb/midenok/src/sql/sql_lex.cc:1262
#6  0x000000000121f1f5 in MYSQLparse (thd=0x62a00009c270) at sql/sql_yacc.cc:24454
#7  0x0000000000b5f000 in parse_sql (thd=0x62a00009c270, parser_state=0x7fffce92b4b0, creation_ctx=0x6250002e3110, do_pfs_digest=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:10034
#8  0x0000000000ec0d34 in mysql_make_view (thd=0x62a00009c270, share=0x61b00014e508, table=0x6250002e2790, open_view_no_parse=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_view.cc:1396
#9  0x000000000095e4d5 in open_table (thd=0x62a00009c270, table_list=0x6250002e2790, ot_ctx=0x7fffce92e240) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:1841
#10 0x000000000096acf7 in open_and_process_table (thd=0x62a00009c270, lex=0x6250002e4188, tables=0x6250002e2790, counter=0x7fffce92e8e0, flags=0, prelocking_strategy=0x7fffce92eb60, has_prelocking_list=false, ot_ctx=0x7fffce92e240) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:3526
#11 0x0000000000967cf9 in open_tables (thd=0x62a00009c270, options=..., start=0x7fffce92e8c0, counter=0x7fffce92e8e0, flags=0, prelocking_strategy=0x7fffce92eb60) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:4044
#12 0x0000000000973f51 in open_and_lock_tables (thd=0x62a00009c270, options=..., tables=0x6250002e2790, derived=true, flags=0, prelocking_strategy=0x7fffce92eb60) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:4921
#13 0x00000000008a2a26 in open_and_lock_tables (thd=0x62a00009c270, tables=0x6250002e2790, derived=true, flags=0) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.h:491
#14 0x0000000000b5094f in execute_sqlcom_select (thd=0x62a00009c270, all_tables=0x6250002e2790) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6470
#15 0x0000000000b39afd in mysql_execute_command (thd=0x62a00009c270) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:3772
#16 0x000000000088fa95 in sp_instr_stmt::exec_core (this=0x6250002e2e00, thd=0x62a00009c270, nextp=0x7fffce9351e0) at /home/midenok/src/mariadb/midenok/src/sql/sp_head.cc:3601
#17 0x000000000088beb5 in sp_lex_keeper::reset_lex_and_exec_core (this=0x6250002e2e50, thd=0x62a00009c270, nextp=0x7fffce9351e0, open_tables=false, instr=0x6250002e2e00) at /home/midenok/src/mariadb/midenok/src/sql/sp_head.cc:3317
#18 0x000000000088d434 in sp_instr_stmt::execute (this=0x6250002e2e00, thd=0x62a00009c270, nextp=0x7fffce9351e0) at /home/midenok/src/mariadb/midenok/src/sql/sp_head.cc:3504
#19 0x00000000008775c7 in sp_head::execute (this=0x6250002e1988, thd=0x62a00009c270, merge_da_on_success=true) at /home/midenok/src/mariadb/midenok/src/sql/sp_head.cc:1354
#20 0x000000000087d97c in sp_head::execute_procedure (this=0x6250002e1988, thd=0x62a00009c270, args=0x62a0000a0e98) at /home/midenok/src/mariadb/midenok/src/sql/sp_head.cc:2293
#21 0x0000000000b33f72 in do_execute_sp (thd=0x62a00009c270, sp=0x6250002e1988) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:2944
#22 0x0000000000b330a3 in Sql_cmd_call::execute (this=0x62b000000348, thd=0x62a00009c270) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:3186
#23 0x0000000000b4c863 in mysql_execute_command (thd=0x62a00009c270) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6287
#24 0x0000000000b2b764 in mysql_parse (thd=0x62a00009c270, rawbuf=0x62b000000288 "call bad", length=8, parser_state=0x7fffce93d040, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:8023

frame 2

(gdb) p cs
$11 = (CHARSET_INFO * const) 0x450a4a0 <my_charset_latin1>
(gdb) p *this
$15 = {
  lookahead_token = -1, 
  lookahead_yylval = 0x0, 
  m_thd = 0x62a00009c270, 
  m_ptr = 0x6250003037b2 "lect `test`.`t1`.`called_bad` AS `called_bad` from `test`.`t1` where `test`.`t1`.`called_bad` < 5", 
  m_tok_start = 0x6250003037b0 "select `test`.`t1`.`called_bad` AS `called_bad` from `test`.`t1` where `test`.`t1`.`called_bad` < 5", 
  m_tok_end = 0x6250003037b0 "select `test`.`t1`.`called_bad` AS `called_bad` from `test`.`t1` where `test`.`t1`.`called_bad` < 5", 
  m_end_of_query = 0x625000303813 "", 
  m_tok_start_prev = 0x0, 
  m_buf = 0x6250003037b0 "select `test`.`t1`.`called_bad` AS `called_bad` from `test`.`t1` where `test`.`t1`.`called_bad` < 5", 
  m_buf_length = 99, 
  m_echo = true, 
  m_echo_saved = 128, 
  m_cpp_buf = 0x625000303928 "s", '\245' <repeats 103 times>, " 57\005", 
  m_cpp_ptr = 0x62500030392a '\245' <repeats 102 times>, " 57\005", 
  m_cpp_tok_start = 0x625000303928 "s", '\245' <repeats 103 times>, " 57\005", 
  m_cpp_tok_start_prev = 0x0, 
  m_cpp_tok_end = 0x625000303928 "s", '\245' <repeats 103 times>, " 57\005", 
  m_body_utf8 = 0x0, 
  m_body_utf8_ptr = 0x45e0360e <error: Cannot access memory at address 0x45e0360e>, 
  m_cpp_utf8_processed_ptr = 0x0, 
  next_state = MY_LEX_OPERATOR_OR_IDENT, 
  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 = 0x0, 
  m_cpp_text_end = 0x7fffcea2d690 "Pۢ\316\377\177", 
  m_underscore_cs = 0x0
}

Stack divergence is on Lex_input_stream::scan_ident_middle() (sql_lex.cc:2049 vs sql_lex.cc:2063).

2030      CHARSET_INFO *const cs= thd->charset();
....
2040      if (use_mb(cs))
2041      {
....
2049        skip_binary(char_length - 1);
....
2060      }
2061      else
2062      {
2063        is_8bit= get_7bit_or_8bit_ident(thd, &c) || (m_tok_start[0] & 0x80);
....
2065      }

Info

#define use_mb(s)                     ((s)->mbmaxlen > 1)

  /** Pre-processed buffer. */
  char *m_cpp_buf;

  /** Pointer to the current position in the pre-processed input stream. */
  char *m_cpp_ptr;
midenok commented 6 years ago

Good (trunk build)

#0  Lex_input_stream::skip_binary (this=0x7fffe4efaa70, n=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.h:2204
#1  0x0000000000780851 in Lex_input_stream::scan_ident_middle (this=0x7fffe4efaa70, thd=0x7fff84000d50, str=0x7fffe4efa150, introducer=0x7fffe4efa150, st=0x7fffe4ef2090) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.cc:2049
#2  0x000000000077f15d in Lex_input_stream::lex_one_token (this=0x7fffe4efaa70, yylval=0x7fffe4efa150, thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.cc:1486
#3  0x000000000077ea56 in Lex_input_stream::lex_token (this=0x7fffe4efaa70, yylval=0x7fffe4efa150, thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.cc:1289
#4  0x000000000077e9d7 in MYSQLlex (yylval=0x7fffe4efa150, thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_lex.cc:1262
#5  0x0000000000a232f3 in MYSQLparse (thd=0x7fff84000d50) at sql/sql_yacc.cc:24454
#6  0x00000000007c588a in parse_sql (thd=0x7fff84000d50, parser_state=0x7fffe4efaa68, creation_ctx=0x7fff84065350, do_pfs_digest=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:10030
#7  0x00000000008eb553 in mysql_make_view (thd=0x7fff84000d50, share=0x7fff84050688, table=0x7fff840649e8, open_view_no_parse=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_view.cc:1396
#8  0x0000000000704dc0 in open_table (thd=0x7fff84000d50, table_list=0x7fff840649e8, ot_ctx=0x7fffe4efb6c8) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:1841
#9  0x00000000007095c8 in open_and_process_table (thd=0x7fff84000d50, lex=0x7fff84065da8, tables=0x7fff840649e8, counter=0x7fffe4efb7cc, flags=0, prelocking_strategy=0x7fffe4efb840, has_prelocking_list=false, ot_ctx=0x7fffe4efb6c8) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:3526
#10 0x000000000070831d in open_tables (thd=0x7fff84000d50, options=..., start=0x7fffe4efb7e0, counter=0x7fffe4efb7cc, flags=0, prelocking_strategy=0x7fffe4efb840) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:4044
#11 0x000000000070c905 in open_and_lock_tables (thd=0x7fff84000d50, options=..., tables=0x7fff840649e8, derived=true, flags=0, prelocking_strategy=0x7fffe4efb840) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.cc:4921
#12 0x00000000006ba0dc in open_and_lock_tables (thd=0x7fff84000d50, tables=0x7fff840649e8, derived=true, flags=0) at /home/midenok/src/mariadb/trunk/src/sql/sql_base.h:491
#13 0x00000000007c093b in execute_sqlcom_select (thd=0x7fff84000d50, all_tables=0x7fff840649e8) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6466
#14 0x00000000007b60d0 in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3768
#15 0x00000000006b2e85 in sp_instr_stmt::exec_core (this=0x7fff84065048, thd=0x7fff84000d50, nextp=0x7fffe4efe798) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:3601
#16 0x00000000006b168f in sp_lex_keeper::reset_lex_and_exec_core (this=0x7fff84065098, thd=0x7fff84000d50, nextp=0x7fffe4efe798, open_tables=false, instr=0x7fff84065048) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:3317
#17 0x00000000006b20ad in sp_instr_stmt::execute (this=0x7fff84065048, thd=0x7fff84000d50, nextp=0x7fffe4efe798) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:3504
#18 0x00000000006a9094 in sp_head::execute (this=0x7fff84063c08, thd=0x7fff84000d50, merge_da_on_success=true) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:1354
#19 0x00000000006ab828 in sp_head::execute_procedure (this=0x7fff84063c08, thd=0x7fff84000d50, args=0x7fff84005968) at /home/midenok/src/mariadb/trunk/src/sql/sp_head.cc:2293
#20 0x00000000007b3a68 in do_execute_sp (thd=0x7fff84000d50, sp=0x7fff84063c08) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:2944
#21 0x00000000007b343b in Sql_cmd_call::execute (this=0x7fff84015c48, thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:3186
#22 0x00000000007befeb in mysql_execute_command (thd=0x7fff84000d50) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:6283
#23 0x00000000007b0b0f in mysql_parse (thd=0x7fff84000d50, rawbuf=0x7fff84015b88 "call bad", length=8, parser_state=0x7fffe4f02650, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/trunk/src/sql/sql_parse.cc:8019
(gdb) p m_cpp_ptr
$5 = 0x7fff84065369 '\245' <repeats 103 times>, " \353\376\001"
(gdb) p m_ptr
$6 = 0x7fff840651f9 "elect `test`.`t1`.`called_bad` AS `called_bad` from `test`.`t1` where `test`.`t1`.`called_bad` < 5"

frame 1

(gdb) p *this
$1 = {
  lookahead_token = -1,
  lookahead_yylval = 0x0,
  m_thd = 0x7fff84000d50,
  m_ptr = 0x7fff840651f9 "elect `test`.`t1`.`called_bad` AS `called_bad` from `test`.`t1` where `test`.`t1`.`called_bad` < 5",
  m_tok_start = 0x7fff840651f8 "select `test`.`t1`.`called_bad` AS `called_bad` from `test`.`t1` where `test`.`t1`.`called_bad` < 5",
  m_tok_end = 0x7fff840651f8 "select `test`.`t1`.`called_bad` AS `called_bad` from `test`.`t1` where `test`.`t1`.`called_bad` < 5",
  m_end_of_query = 0x7fff8406525b "",
  m_tok_start_prev = 0x0,
  m_buf = 0x7fff840651f8 "select `test`.`t1`.`called_bad` AS `called_bad` from `test`.`t1` where `test`.`t1`.`called_bad` < 5",
  m_buf_length = 99,
  m_echo = true,
  m_echo_saved = 11,
  m_cpp_buf = 0x7fff84065368 "s", '\245' <repeats 103 times>, " \353\376\001",
  m_cpp_ptr = 0x7fff84065369 '\245' <repeats 103 times>, " \353\376\001",
  m_cpp_tok_start = 0x7fff84065368 "s", '\245' <repeats 103 times>, " \353\376\001",
  m_cpp_tok_start_prev = 0x0,
  m_cpp_tok_end = 0x7fff84065368 "s", '\245' <repeats 103 times>, " \353\376\001",
  m_body_utf8 = 0x0,
  m_body_utf8_ptr = 0x28f34b8 "",
  m_cpp_utf8_processed_ptr = 0x0,
  next_state = MY_LEX_OPERATOR_OR_IDENT,
  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 = (PRESERVE_COMMENT | DISCARD_COMMENT | unknown: 32764),
  m_cpp_text_start = 0x7fffe4efab50 "",
  m_cpp_text_end = 0x14505d9 <remove_from_active_list+153> "H\213M\360H\211", <incomplete sequence \351>,
  m_underscore_cs = 0x0
}
(gdb) p cs
$3 = (CHARSET_INFO * const) 0x1fe1690 <my_charset_utf8_general_ci>