mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
@ -93,7 +93,45 @@ A x y x y
|
|||||||
1 5 15 5 15
|
1 5 15 5 15
|
||||||
1 6 16 6 16
|
1 6 16 6 16
|
||||||
1 7 17 7 17
|
1 7 17 7 17
|
||||||
|
call test_01('bigint unsigned', 'innodb', 'commit_ts(sys_end)');
|
||||||
|
A x y x y
|
||||||
|
1 1 11 1 11
|
||||||
|
1 2 12 2 12
|
||||||
|
1 3 13 3 13
|
||||||
|
1 4 14 4 14
|
||||||
|
1 5 15 5 15
|
||||||
|
1 6 16 6 16
|
||||||
|
1 7 17 7 17
|
||||||
|
1 8 18 8 18
|
||||||
|
1 9 19 9 19
|
||||||
|
A x y x y
|
||||||
|
1 1 11 1 11
|
||||||
|
1 3 13 3 13
|
||||||
|
1 4 14 4 14
|
||||||
|
1 5 15 5 15
|
||||||
|
1 6 16 6 16
|
||||||
|
1 7 17 7 17
|
||||||
|
1 8 18 8 18
|
||||||
|
1 9 19 9 19
|
||||||
|
A x y x y
|
||||||
|
1 1 11 1 11
|
||||||
|
1 3 13 3 13
|
||||||
|
1 4 14 4 14
|
||||||
|
1 5 15 5 15
|
||||||
|
1 6 16 6 16
|
||||||
|
1 7 17 7 17
|
||||||
call verify_vtq;
|
call verify_vtq;
|
||||||
No A B C D
|
No A B C D
|
||||||
|
1 1 1 1 1
|
||||||
|
2 1 1 1 1
|
||||||
|
3 1 1 1 1
|
||||||
|
4 1 1 1 1
|
||||||
|
5 1 1 1 1
|
||||||
|
6 1 1 1 1
|
||||||
|
7 1 1 1 1
|
||||||
|
8 1 1 1 1
|
||||||
|
9 1 1 1 1
|
||||||
|
10 1 1 1 1
|
||||||
|
11 1 1 1 1
|
||||||
drop procedure test_01;
|
drop procedure test_01;
|
||||||
drop procedure verify_vtq;
|
drop procedure verify_vtq;
|
||||||
|
@ -60,8 +60,7 @@ end~~
|
|||||||
delimiter ;~~
|
delimiter ;~~
|
||||||
|
|
||||||
call test_01('timestamp(6)', 'myisam', 'sys_end');
|
call test_01('timestamp(6)', 'myisam', 'sys_end');
|
||||||
# Issue #52
|
call test_01('bigint unsigned', 'innodb', 'commit_ts(sys_end)');
|
||||||
# call test_01('bigint unsigned', 'innodb', 'commit_ts(sys_end)');
|
|
||||||
call verify_vtq;
|
call verify_vtq;
|
||||||
|
|
||||||
drop procedure test_01;
|
drop procedure test_01;
|
||||||
|
@ -701,44 +701,54 @@ setup_for_system_time(THD *thd, TABLE_LIST *tables, COND **where_expr, SELECT_LE
|
|||||||
if (select_lex->saved_where)
|
if (select_lex->saved_where)
|
||||||
{
|
{
|
||||||
DBUG_ASSERT(thd->stmt_arena->is_sp_execute());
|
DBUG_ASSERT(thd->stmt_arena->is_sp_execute());
|
||||||
*where_expr= select_lex->saved_where;
|
/* 2. this copy_andor_structure() is also required by the same reason */
|
||||||
|
*where_expr= select_lex->saved_where->copy_andor_structure(thd);
|
||||||
}
|
}
|
||||||
else if (thd->stmt_arena->is_sp_execute())
|
else if (thd->stmt_arena->is_sp_execute())
|
||||||
{
|
{
|
||||||
if (thd->stmt_arena->is_stmt_execute()) // SP executed second time (STMT_EXECUTED)
|
if (thd->stmt_arena->is_stmt_execute()) // SP executed second time (STMT_EXECUTED)
|
||||||
*where_expr= 0;
|
*where_expr= 0;
|
||||||
else if (*where_expr) // SP executed first time (STMT_INITIALIZED_FOR_SP)
|
else if (*where_expr) // SP executed first time (STMT_INITIALIZED_FOR_SP)
|
||||||
/* copy_andor_structure() is required since this andor tree
|
/* 1. copy_andor_structure() is required since this andor tree
|
||||||
is modified later (and on shorter arena) */
|
is modified later (and on shorter arena) */
|
||||||
select_lex->saved_where= (*where_expr)->copy_andor_structure(thd);
|
select_lex->saved_where= (*where_expr)->copy_andor_structure(thd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* We have to save also non-versioned on_expr since we may have
|
||||||
|
conjuction of versioned + non-versioned */
|
||||||
|
if (thd->stmt_arena->is_sp_execute())
|
||||||
|
{
|
||||||
|
for (table= tables; table; table= table->next_local)
|
||||||
|
{
|
||||||
|
if (!table->table)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (table->saved_on_expr) // same logic as saved_where
|
||||||
|
{
|
||||||
|
if (table->on_expr)
|
||||||
|
table->on_expr= table->saved_on_expr->copy_andor_structure(thd);
|
||||||
|
else
|
||||||
|
// on_expr was moved to WHERE (see below: Add ON expression to the WHERE)
|
||||||
|
*where_expr= and_items(thd,
|
||||||
|
*where_expr,
|
||||||
|
table->saved_on_expr->copy_andor_structure(thd));
|
||||||
|
}
|
||||||
|
else if (table->on_expr &&
|
||||||
|
thd->stmt_arena->state == Query_arena::STMT_INITIALIZED_FOR_SP)
|
||||||
|
{
|
||||||
|
table->saved_on_expr= table->on_expr->copy_andor_structure(thd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (table= tables; table; table= table->next_local)
|
for (table= tables; table; table= table->next_local)
|
||||||
{
|
{
|
||||||
if (table->table && table->table->versioned())
|
if (table->table && table->table->versioned())
|
||||||
{
|
{
|
||||||
COND** dst_cond= where_expr;
|
COND** dst_cond= where_expr;
|
||||||
if (table->saved_on_expr) // same logic as saved_where
|
if (table->on_expr)
|
||||||
{
|
|
||||||
DBUG_ASSERT(thd->stmt_arena->is_sp_execute());
|
|
||||||
if (table->on_expr)
|
|
||||||
{
|
|
||||||
table->on_expr= table->saved_on_expr;
|
|
||||||
dst_cond= &table->on_expr;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// on_expr was moved to WHERE (see below: Add ON expression to the WHERE)
|
|
||||||
*dst_cond= and_items(thd,
|
|
||||||
*where_expr,
|
|
||||||
table->saved_on_expr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (table->on_expr)
|
|
||||||
{
|
{
|
||||||
dst_cond= &table->on_expr;
|
dst_cond= &table->on_expr;
|
||||||
if (thd->stmt_arena->state == Query_arena::STMT_INITIALIZED_FOR_SP)
|
|
||||||
table->saved_on_expr= table->on_expr->copy_andor_structure(thd);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Field *fstart= table->table->vers_start_field();
|
Field *fstart= table->table->vers_start_field();
|
||||||
|
Reference in New Issue
Block a user