1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

Parser, SQL: (0.4) TRANSACTION support in queries

Syntax extension: TIMESTAMP/TRANSACTION keyword can be used before FROM ... TO, BETWEEN ... AND.
Example:
    SELECT * FROM t1 FOR SYSTEM_TIME TIMESTAMP FROM '1-1-1' TO NOW();

Closes #27
This commit is contained in:
Aleksey Midenkov
2016-10-14 13:25:28 +00:00
parent a22cbc453f
commit 6d89a4a49b
6 changed files with 101 additions and 31 deletions

View File

@@ -1812,7 +1812,7 @@ class Item_in_subselect;
4) jtbm semi-join (jtbm_subselect != NULL)
*/
enum for_system_time_type
enum vers_range_type_t
{
FOR_SYSTEM_TIME_UNSPECIFIED = 0,
FOR_SYSTEM_TIME_AS_OF,
@@ -1820,24 +1820,34 @@ enum for_system_time_type
FOR_SYSTEM_TIME_BETWEEN
};
enum vers_range_unit_t
{
UNIT_TIMESTAMP = 0,
UNIT_TRX_ID
};
/** System versioning support. */
struct vers_select_conds_t
{
enum for_system_time_type type;
vers_range_type_t type;
vers_range_unit_t unit;
Item *start, *end;
void empty()
{
type= FOR_SYSTEM_TIME_UNSPECIFIED;
unit= UNIT_TIMESTAMP;
start= end= NULL;
}
void init(
const enum for_system_time_type t,
Item * const s,
Item * const e= NULL)
vers_range_type_t t,
vers_range_unit_t u,
Item * s,
Item * e= NULL)
{
type= t;
unit= u;
start= s;
end= e;
}