[FEAT MERGE]Query Interface Enhancement
Co-authored-by: chinaxing <chen.yack@gmail.com>
This commit is contained in:
@ -724,6 +724,7 @@ expr opt_as column_label
|
||||
dup_expr_string($$, result, @3.first_column, @3.last_column);
|
||||
dup_node_string($3, alias_node, result->malloc_pool_);
|
||||
alias_node->param_num_ = 0;
|
||||
alias_node->sql_str_off_ = @2.first_column;
|
||||
}
|
||||
}
|
||||
| expr opt_as STRING_VALUE
|
||||
@ -743,8 +744,10 @@ expr opt_as column_label
|
||||
if (0 == $3->str_len_) {
|
||||
alias_name_node->str_value_ = NULL;
|
||||
alias_name_node->str_len_ = 0;
|
||||
alias_name_node->sql_str_off_ = $3->sql_str_off_;
|
||||
} else {
|
||||
dup_node_string($3, alias_name_node, result->malloc_pool_);
|
||||
alias_name_node->sql_str_off_ = $3->sql_str_off_;
|
||||
}
|
||||
|
||||
malloc_non_terminal_node(alias_node, result->malloc_pool_, T_ALIAS, 2, $1, alias_name_node);
|
||||
@ -753,8 +756,10 @@ expr opt_as column_label
|
||||
if (0 == $3->str_len_) {
|
||||
alias_node->str_value_ = NULL;
|
||||
alias_node->str_len_ = 0;
|
||||
alias_node->sql_str_off_ = @2.first_column;
|
||||
} else {
|
||||
dup_node_string($3, alias_node, result->malloc_pool_);
|
||||
alias_node->sql_str_off_ = @2.first_column;
|
||||
}
|
||||
alias_node->param_num_ = 1;
|
||||
}
|
||||
@ -893,6 +898,7 @@ STRING_VALUE %prec LOWER_THAN_COMP
|
||||
$$->str_len_ = $1->str_len_;
|
||||
$$->raw_text_ = $1->raw_text_;
|
||||
$$->text_len_ = $1->text_len_;
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
@$.first_column = @1.first_column;
|
||||
@$.last_column = @1.last_column;
|
||||
}
|
||||
@ -903,6 +909,7 @@ STRING_VALUE %prec LOWER_THAN_COMP
|
||||
$$->str_len_ = $2->str_len_;
|
||||
$$->raw_text_ = $2->raw_text_;
|
||||
$$->text_len_ = $2->text_len_;
|
||||
$$->sql_str_off_ = $2->sql_str_off_;
|
||||
}
|
||||
| charset_introducer HEX_STRING_VALUE
|
||||
{
|
||||
@ -912,6 +919,7 @@ STRING_VALUE %prec LOWER_THAN_COMP
|
||||
$$->str_len_ = $2->str_len_;
|
||||
$$->raw_text_ = $2->raw_text_;
|
||||
$$->text_len_ = $2->text_len_;
|
||||
$$->sql_str_off_ = $2->sql_str_off_;
|
||||
}
|
||||
| STRING_VALUE string_val_list %prec LOWER_THAN_COMP
|
||||
{
|
||||
@ -1017,14 +1025,15 @@ complex_string_literal { $$ = $1; }
|
||||
;
|
||||
|
||||
number_literal:
|
||||
INTNUM { $$ = $1; $$->param_num_ = 1;}
|
||||
| DECIMAL_VAL { $$ = $1; $$->param_num_ = 1;}
|
||||
INTNUM { $$ = $1; $$->param_num_ = 1; $$->sql_str_off_=$1->sql_str_off_;}
|
||||
| DECIMAL_VAL { $$ = $1; $$->param_num_ = 1;$$->sql_str_off_=$1->sql_str_off_;}
|
||||
;
|
||||
|
||||
expr_const:
|
||||
literal
|
||||
{
|
||||
$$ = $1;
|
||||
$$->sql_str_off_ = $1->sql_str_off_;
|
||||
CHECK_MYSQL_COMMENT(result, $$);
|
||||
}
|
||||
| SYSTEM_VARIABLE { $$ = $1; }
|
||||
@ -1243,6 +1252,7 @@ bit_expr IN in_expr
|
||||
malloc_terminal_node(node, result->malloc_pool_, T_VARCHAR);
|
||||
node->str_value_ = "\\";
|
||||
node->str_len_ = 1;
|
||||
node->sql_str_off_ = @5.first_column;
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_OP_LIKE, 3, $1, $3, node);
|
||||
} else {
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_OP_LIKE, 3, $1, $3, $5);
|
||||
@ -1263,6 +1273,7 @@ bit_expr IN in_expr
|
||||
malloc_terminal_node(node, result->malloc_pool_, T_VARCHAR);
|
||||
node->str_value_ = "\\";
|
||||
node->str_len_ = 1;
|
||||
node->sql_str_off_ = @6.first_column;
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_OP_NOT_LIKE, 3, $1, $4, node);
|
||||
} else {
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_OP_NOT_LIKE, 3, $1, $4, $6);
|
||||
@ -1434,7 +1445,10 @@ simple_expr collation %prec NEG
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_FUN_SYS, 2, $$, params);
|
||||
}
|
||||
| column_ref { $$ = $1; }
|
||||
| expr_const { $$ = $1; }
|
||||
| expr_const {
|
||||
$$ = $1;
|
||||
$$->sql_str_off_ = $1->sql_str_off_;
|
||||
}
|
||||
| simple_expr CNNOP simple_expr
|
||||
{
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_OP_CNN, 2, $1, $3);
|
||||
@ -2928,6 +2942,7 @@ NOW '(' ')'
|
||||
malloc_terminal_node(params, result->malloc_pool_, T_INT);
|
||||
params->value_ = $2[0];
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_FUN_SYS_CUR_TIMESTAMP, 1, params);
|
||||
params->sql_str_off_ = @$.first_column;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2959,6 +2974,7 @@ CURTIME '(' ')'
|
||||
ParseNode *params = NULL;
|
||||
malloc_terminal_node(params, result->malloc_pool_, T_INT);
|
||||
params->value_ = $2[0];
|
||||
params->sql_str_off_ = @1.first_column;
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_FUN_SYS_CUR_TIME, 1, params);
|
||||
}
|
||||
else
|
||||
@ -3137,6 +3153,7 @@ ws_level_list_item
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_WEIGHT_STRING_LEVEL_PARAM);
|
||||
$$->value_ = $3->value_ | $1->value_;
|
||||
$$->param_num_ = $1->param_num_ + $3->param_num_;
|
||||
$$->sql_str_off_ = $1->sql_str_off_;
|
||||
}
|
||||
;
|
||||
|
||||
@ -3146,6 +3163,7 @@ ws_level_number ws_level_flags
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_INT);
|
||||
$$->value_ = (1 | $2->value_) << $1->value_ ;
|
||||
$$->param_num_ = 1;
|
||||
$$->sql_str_off_ = $1->sql_str_off_;
|
||||
}
|
||||
;
|
||||
|
||||
@ -3153,6 +3171,7 @@ ws_level_range:
|
||||
ws_level_number '-' ws_level_number
|
||||
{
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_WEIGHT_STRING_LEVEL_PARAM);
|
||||
$$->sql_str_off_ = $1->sql_str_off_;
|
||||
uint32_t res = 0;
|
||||
uint32_t start = $1->value_ ;
|
||||
uint32_t end = $3->value_ ;
|
||||
@ -3171,6 +3190,7 @@ ws_level_number:
|
||||
INTNUM
|
||||
{
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_INT);
|
||||
$$->sql_str_off_ = $1->sql_str_off_;
|
||||
if ($1->value_ < 1) {
|
||||
$$->value_ = 1;
|
||||
} else if ($1->value_ > OB_STRXFRM_NLEVELS) {
|
||||
@ -3199,6 +3219,7 @@ ws_level_flags:
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_INT);
|
||||
$$->value_ = $1->value_ | $2->value_;
|
||||
$$->param_num_ = 1;
|
||||
$$->sql_str_off_ = $1->sql_str_off_;
|
||||
}
|
||||
| ws_level_flag_reverse
|
||||
{
|
||||
@ -3696,6 +3717,7 @@ LOGONLY_REPLICA_NUM opt_equal_mark INTNUM
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_CHARSET);
|
||||
$$->str_value_ = $3->str_value_;
|
||||
$$->str_len_ = $3->str_len_;
|
||||
$$->sql_str_off_ = $3->sql_str_off_;
|
||||
}
|
||||
| COLLATE opt_equal_mark collation_name
|
||||
{
|
||||
@ -3704,6 +3726,7 @@ LOGONLY_REPLICA_NUM opt_equal_mark INTNUM
|
||||
$$->str_value_ = $3->str_value_;
|
||||
$$->str_len_ = $3->str_len_;
|
||||
$$->param_num_ = $3->param_num_;
|
||||
$$->sql_str_off_ = $3->sql_str_off_;
|
||||
}
|
||||
| read_only_or_write
|
||||
{
|
||||
@ -3929,6 +3952,7 @@ opt_default_mark charset_key opt_equal_mark charset_name
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_CHARSET);
|
||||
$$->str_value_ = $4->str_value_;
|
||||
$$->str_len_ = $4->str_len_;
|
||||
$$->sql_str_off_ = $4->sql_str_off_;
|
||||
}
|
||||
| opt_default_mark COLLATE opt_equal_mark collation_name
|
||||
{
|
||||
@ -3938,12 +3962,14 @@ opt_default_mark charset_key opt_equal_mark charset_name
|
||||
$$->str_value_ = $4->str_value_;
|
||||
$$->str_len_ = $4->str_len_;
|
||||
$$->param_num_ = $4->param_num_;
|
||||
$$->sql_str_off_ = $4->sql_str_off_;
|
||||
}
|
||||
| REPLICA_NUM opt_equal_mark INTNUM
|
||||
{
|
||||
(void)($2);
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_REPLICA_NUM);
|
||||
$$->value_ = $3->value_;
|
||||
$$->sql_str_off_ = $3->sql_str_off_;
|
||||
}
|
||||
| read_only_or_write
|
||||
{
|
||||
@ -4687,11 +4713,13 @@ NOT NULLX
|
||||
{
|
||||
(void)($2) ; /* make bison mute */
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_CONSTR_NOT_NULL);
|
||||
$$->sql_str_off_ = $2->sql_str_off_;
|
||||
}
|
||||
| NULLX
|
||||
{
|
||||
(void)($1) ; /* make bison mute */
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_CONSTR_NULL);
|
||||
$$->sql_str_off_ = $1->sql_str_off_;
|
||||
}
|
||||
| UNIQUE KEY
|
||||
{
|
||||
@ -4780,6 +4808,7 @@ BINARY opt_string_length_i_v2
|
||||
$$->int16_values_[OB_NODE_CAST_COLL_IDX] = BINARY_COLLATION; /* is binary */
|
||||
$$->int32_values_[OB_NODE_CAST_C_LEN_IDX] = $2[0]; /* length */
|
||||
$$->param_num_ = $2[1];
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| CHARACTER opt_string_length_i_v2 opt_binary
|
||||
{
|
||||
@ -4790,6 +4819,7 @@ BINARY opt_string_length_i_v2
|
||||
$$->int16_values_[OB_NODE_CAST_COLL_IDX] = INVALID_COLLATION; /* is char */
|
||||
$$->int32_values_[OB_NODE_CAST_C_LEN_IDX] = $2[0]; /* length */
|
||||
$$->param_num_ = $2[1]; /* opt_binary的常数个数一定为0 */
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| CHARACTER opt_string_length_i_v2 charset_key charset_name
|
||||
{
|
||||
@ -4801,6 +4831,7 @@ BINARY opt_string_length_i_v2
|
||||
$$->param_num_ = $2[1];
|
||||
$$->str_value_ = $4->str_value_;
|
||||
$$->str_len_ = $4->str_len_;
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| cast_datetime_type_i opt_datetime_fsp_i
|
||||
{
|
||||
@ -4809,6 +4840,7 @@ BINARY opt_string_length_i_v2
|
||||
$$->int16_values_[OB_NODE_CAST_TYPE_IDX] = $1[0];
|
||||
$$->int16_values_[OB_NODE_CAST_N_SCALE_IDX] = $2[0];
|
||||
$$->param_num_ = $1[1] + $2[1];
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| NUMBER opt_number_precision
|
||||
{
|
||||
@ -4819,6 +4851,7 @@ BINARY opt_string_length_i_v2
|
||||
$$->int16_values_[OB_NODE_CAST_N_PREC_IDX] = $2->int16_values_[0]; /* precision */
|
||||
$$->int16_values_[OB_NODE_CAST_N_SCALE_IDX] = $2->int16_values_[1]; /* scale */
|
||||
$$->param_num_ = $2->param_num_;
|
||||
$$->sql_str_off_ = $2->sql_str_off_;
|
||||
}
|
||||
}
|
||||
| DECIMAL opt_number_precision
|
||||
@ -4830,6 +4863,7 @@ BINARY opt_string_length_i_v2
|
||||
$$->int16_values_[OB_NODE_CAST_N_PREC_IDX] = $2->int16_values_[0]; /* precision */
|
||||
$$->int16_values_[OB_NODE_CAST_N_SCALE_IDX] = $2->int16_values_[1]; /* scale */
|
||||
$$->param_num_ = $2->param_num_;
|
||||
$$->sql_str_off_ = $2->sql_str_off_;
|
||||
}
|
||||
}
|
||||
| FIXED opt_number_precision
|
||||
@ -4841,6 +4875,7 @@ BINARY opt_string_length_i_v2
|
||||
$$->int16_values_[OB_NODE_CAST_N_PREC_IDX] = $2->int16_values_[0]; /* precision */
|
||||
$$->int16_values_[OB_NODE_CAST_N_SCALE_IDX] = $2->int16_values_[1]; /* scale */
|
||||
$$->param_num_ = $2->param_num_;
|
||||
$$->sql_str_off_ = $2->sql_str_off_;
|
||||
}
|
||||
}
|
||||
| NUMERIC opt_number_precision
|
||||
@ -4852,6 +4887,7 @@ BINARY opt_string_length_i_v2
|
||||
$$->int16_values_[OB_NODE_CAST_N_PREC_IDX] = $2->int16_values_[0]; /* precision */
|
||||
$$->int16_values_[OB_NODE_CAST_N_SCALE_IDX] = $2->int16_values_[1]; /* scale */
|
||||
$$->param_num_ = $2->param_num_;
|
||||
$$->sql_str_off_ = $2->sql_str_off_;
|
||||
}
|
||||
}
|
||||
| SIGNED opt_integer
|
||||
@ -4861,6 +4897,7 @@ BINARY opt_string_length_i_v2
|
||||
$$->value_ = 0;
|
||||
$$->int16_values_[OB_NODE_CAST_TYPE_IDX] = T_INT;
|
||||
$$->param_num_ = $2[1];
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| UNSIGNED opt_integer
|
||||
{
|
||||
@ -4868,6 +4905,7 @@ BINARY opt_string_length_i_v2
|
||||
$$->value_ = 0;
|
||||
$$->int16_values_[OB_NODE_CAST_TYPE_IDX] = T_UINT64;
|
||||
$$->param_num_ = $2[1];
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| DOUBLE
|
||||
{
|
||||
@ -4877,6 +4915,7 @@ BINARY opt_string_length_i_v2
|
||||
$$->int16_values_[OB_NODE_CAST_N_PREC_IDX] = -1; /* precision */
|
||||
$$->int16_values_[OB_NODE_CAST_N_SCALE_IDX] = -1; /* scale */
|
||||
$$->param_num_ = 0;
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| FLOAT opt_cast_float_precision
|
||||
{ /* If p is provided and 0 <= < p <= 24, the result is of type FLOAT. */
|
||||
@ -4887,6 +4926,7 @@ BINARY opt_string_length_i_v2
|
||||
$$->int16_values_[OB_NODE_CAST_N_PREC_IDX] = $2[0]; /* precision */
|
||||
$$->int16_values_[OB_NODE_CAST_N_SCALE_IDX] = -1; /* scale */
|
||||
$$->param_num_ = $2[1]; /* param only use to choose float or double convert */
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| JSON
|
||||
{
|
||||
@ -4896,6 +4936,7 @@ BINARY opt_string_length_i_v2
|
||||
$$->int16_values_[OB_NODE_CAST_COLL_IDX] = INVALID_COLLATION;
|
||||
$$->int32_values_[OB_NODE_CAST_C_LEN_IDX] = 0; /* length */
|
||||
$$->param_num_ = 0;
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| POINT
|
||||
{
|
||||
@ -4905,6 +4946,7 @@ BINARY opt_string_length_i_v2
|
||||
$$->int16_values_[OB_NODE_CAST_GEO_TYPE_IDX] = 1; /* point */
|
||||
$$->int32_values_[OB_NODE_CAST_C_LEN_IDX] = 0; /* length */
|
||||
$$->param_num_ = 0;
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| LINESTRING
|
||||
{
|
||||
@ -4914,6 +4956,7 @@ BINARY opt_string_length_i_v2
|
||||
$$->int16_values_[OB_NODE_CAST_GEO_TYPE_IDX] = 2; /* linestring */
|
||||
$$->int32_values_[OB_NODE_CAST_C_LEN_IDX] = 0; /* length */
|
||||
$$->param_num_ = 0;
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| POLYGON
|
||||
{
|
||||
@ -4923,6 +4966,7 @@ BINARY opt_string_length_i_v2
|
||||
$$->int16_values_[OB_NODE_CAST_GEO_TYPE_IDX] = 3; /* polygon */
|
||||
$$->int32_values_[OB_NODE_CAST_C_LEN_IDX] = 0; /* length */
|
||||
$$->param_num_ = 0;
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| MULTIPOINT
|
||||
{
|
||||
@ -4932,6 +4976,7 @@ BINARY opt_string_length_i_v2
|
||||
$$->int16_values_[OB_NODE_CAST_GEO_TYPE_IDX] = 4; /* multipoint */
|
||||
$$->int32_values_[OB_NODE_CAST_C_LEN_IDX] = 0; /* length */
|
||||
$$->param_num_ = 0;
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| MULTILINESTRING
|
||||
{
|
||||
@ -4941,6 +4986,7 @@ BINARY opt_string_length_i_v2
|
||||
$$->int16_values_[OB_NODE_CAST_GEO_TYPE_IDX] = 5; /* multilinestring */
|
||||
$$->int32_values_[OB_NODE_CAST_C_LEN_IDX] = 0; /* length */
|
||||
$$->param_num_ = 0;
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| MULTIPOLYGON
|
||||
{
|
||||
@ -4950,6 +4996,7 @@ BINARY opt_string_length_i_v2
|
||||
$$->int16_values_[OB_NODE_CAST_GEO_TYPE_IDX] = 6; /* multipolygon */
|
||||
$$->int32_values_[OB_NODE_CAST_C_LEN_IDX] = 0; /* length */
|
||||
$$->param_num_ = 0;
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| GEOMETRYCOLLECTION
|
||||
{
|
||||
@ -4959,6 +5006,7 @@ BINARY opt_string_length_i_v2
|
||||
$$->int16_values_[OB_NODE_CAST_GEO_TYPE_IDX] = 7; /* geometrycollection */
|
||||
$$->int32_values_[OB_NODE_CAST_C_LEN_IDX] = 0; /* length */
|
||||
$$->param_num_ = 0;
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
;
|
||||
|
||||
@ -5007,6 +5055,7 @@ int_type_i opt_int_length_i opt_unsigned_i opt_zerofill_i
|
||||
malloc_terminal_node($$, result->malloc_pool_, ($3[0] || $4[0]) ? $1[0] + (T_UTINYINT - T_TINYINT) : $1[0]);
|
||||
$$->int16_values_[0] = $2[0];
|
||||
$$->int16_values_[2] = $4[0]; /* 2 is the same index as float or number. */
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| float_type_i opt_float_precision opt_unsigned_i opt_zerofill_i
|
||||
{
|
||||
@ -5021,6 +5070,7 @@ int_type_i opt_int_length_i opt_unsigned_i opt_zerofill_i
|
||||
}
|
||||
/* malloc_terminal_node() has set memory to 0 filled, so there is no else. */
|
||||
$$->int16_values_[2] = $4[0];
|
||||
$$->sql_str_off_ = @$.first_column;
|
||||
}
|
||||
| NUMBER opt_number_precision opt_unsigned_i opt_zerofill_i
|
||||
{
|
||||
@ -5031,6 +5081,7 @@ int_type_i opt_int_length_i opt_unsigned_i opt_zerofill_i
|
||||
}
|
||||
/* malloc_terminal_node() has set memory to 0 filled, so there is no else. */
|
||||
$$->int16_values_[2] = $4[0];
|
||||
$$->sql_str_off_ = $2->sql_str_off_;
|
||||
}
|
||||
| DECIMAL opt_number_precision opt_unsigned_i opt_zerofill_i
|
||||
{
|
||||
@ -5041,6 +5092,7 @@ int_type_i opt_int_length_i opt_unsigned_i opt_zerofill_i
|
||||
}
|
||||
/* malloc_terminal_node() has set memory to 0 filled, so there is no else. */
|
||||
$$->int16_values_[2] = $4[0];
|
||||
$$->sql_str_off_ = $2->sql_str_off_;
|
||||
}
|
||||
| FIXED opt_number_precision opt_unsigned_i opt_zerofill_i
|
||||
{
|
||||
@ -5051,6 +5103,7 @@ int_type_i opt_int_length_i opt_unsigned_i opt_zerofill_i
|
||||
}
|
||||
/* malloc_terminal_node() has set memory to 0 filled, so there is no else. */
|
||||
$$->int16_values_[2] = $4[0];
|
||||
$$->sql_str_off_ = $2->sql_str_off_;
|
||||
}
|
||||
| NUMERIC opt_number_precision opt_unsigned_i opt_zerofill_i
|
||||
{
|
||||
@ -5061,6 +5114,7 @@ int_type_i opt_int_length_i opt_unsigned_i opt_zerofill_i
|
||||
}
|
||||
/* malloc_terminal_node() has set memory to 0 filled, so there is no else. */
|
||||
$$->int16_values_[2] = $4[0];
|
||||
$$->sql_str_off_ = $2->sql_str_off_;
|
||||
}
|
||||
| BOOL
|
||||
{
|
||||
@ -5078,16 +5132,19 @@ int_type_i opt_int_length_i opt_unsigned_i opt_zerofill_i
|
||||
{
|
||||
malloc_terminal_node($$, result->malloc_pool_, $1[0]);
|
||||
$$->int16_values_[1] = $2[0];
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| date_year_type_i
|
||||
{
|
||||
malloc_terminal_node($$, result->malloc_pool_, $1[0]);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| CHARACTER opt_string_length_i opt_binary opt_charset opt_collation
|
||||
{
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_CHAR, 3, $4, $5, $3);
|
||||
$$->int32_values_[0] = $2[0];
|
||||
$$->int32_values_[1] = 0; /* is char */
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
/* | TEXT opt_binary opt_charset opt_collation
|
||||
// {
|
||||
@ -5119,6 +5176,7 @@ int_type_i opt_int_length_i opt_unsigned_i opt_zerofill_i
|
||||
}
|
||||
$$->int32_values_[0] = $2[0];
|
||||
$$->int32_values_[1] = 1; /* is binary */
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| text_type_i opt_string_length_i_v2 opt_binary opt_charset opt_collation
|
||||
{
|
||||
@ -5140,18 +5198,21 @@ int_type_i opt_int_length_i opt_unsigned_i opt_zerofill_i
|
||||
}
|
||||
$$->int32_values_[0] = $2[0];
|
||||
$$->int32_values_[1] = 1; /* is binary */
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| VARBINARY string_length_i
|
||||
{
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_VARCHAR);
|
||||
$$->int32_values_[0] = $2[0];
|
||||
$$->int32_values_[1] = 1; /* is binary */
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| STRING_VALUE /* wrong or unsupported data type */
|
||||
{
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_INVALID);
|
||||
$$->str_value_ = $1->str_value_;
|
||||
$$->str_len_ = $1->str_len_;
|
||||
$$->sql_str_off_ = $1->sql_str_off_;
|
||||
}
|
||||
| BIT opt_bit_length_i
|
||||
{
|
||||
@ -5162,6 +5223,7 @@ int_type_i opt_int_length_i opt_unsigned_i opt_zerofill_i
|
||||
} else {
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_BIT);
|
||||
$$->int16_values_[0] = $2[0];
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
}
|
||||
| ENUM '(' string_list ')' opt_binary opt_charset opt_collation
|
||||
@ -5329,12 +5391,14 @@ opt_float_precision:
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_LINK_NODE);
|
||||
$$->int16_values_[0] = $2->value_;
|
||||
$$->int16_values_[1] = $4->value_;
|
||||
$$->sql_str_off_ = $2->sql_str_off_;
|
||||
}
|
||||
| '(' INTNUM ')'
|
||||
{
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_LINK_NODE);
|
||||
$$->int16_values_[0] = $2->value_;
|
||||
$$->int16_values_[1] = -1;
|
||||
$$->sql_str_off_ = $2->sql_str_off_;
|
||||
}
|
||||
| '(' DECIMAL_VAL ')'
|
||||
{
|
||||
@ -5343,6 +5407,7 @@ opt_float_precision:
|
||||
$2->value_ = ob_strntoll($2->str_value_, $2->str_len_, 10, NULL, &err_no);
|
||||
$$->int16_values_[0] = $2->value_;
|
||||
$$->int16_values_[1] = -1;
|
||||
$$->sql_str_off_ = $2->sql_str_off_;
|
||||
}
|
||||
| /*EMPTY*/
|
||||
{
|
||||
@ -5364,6 +5429,7 @@ opt_number_precision:
|
||||
} else {
|
||||
$$->int16_values_[1] = $4->value_;
|
||||
}
|
||||
$$->sql_str_off_ = $2->sql_str_off_;
|
||||
$$->param_num_ = 2;
|
||||
}
|
||||
| '(' INTNUM ')'
|
||||
@ -5373,6 +5439,7 @@ opt_number_precision:
|
||||
$$->int16_values_[0] = OB_MAX_PARSER_INT16_VALUE;
|
||||
} else {
|
||||
$$->int16_values_[0] = $2->value_;
|
||||
$$->sql_str_off_ = $2->sql_str_off_;
|
||||
}
|
||||
$$->int16_values_[1] = 0;
|
||||
$$->param_num_ = 1;
|
||||
@ -5561,6 +5628,7 @@ charset_key charset_name
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_CHARSET);
|
||||
$$->str_value_ = $2->str_value_;
|
||||
$$->str_len_ = $2->str_len_;
|
||||
$$->sql_str_off_ = $2->sql_str_off_;
|
||||
}
|
||||
| /*EMPTY*/
|
||||
{ $$ = NULL; }
|
||||
@ -5573,6 +5641,7 @@ COLLATE collation_name
|
||||
$$->str_value_ = $2->str_value_;
|
||||
$$->str_len_ = $2->str_len_;
|
||||
$$->param_num_ = $2->param_num_;
|
||||
$$->sql_str_off_ = $2->sql_str_off_;
|
||||
};
|
||||
|
||||
opt_collation:
|
||||
@ -5597,11 +5666,13 @@ not NULLX
|
||||
(void)($1) ;
|
||||
(void)($2) ; /* make bison mute */
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_CONSTR_NOT_NULL);
|
||||
$$->sql_str_off_ = $2->sql_str_off_;
|
||||
}
|
||||
| NULLX
|
||||
{
|
||||
(void)($1) ; /* make bison mute */
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_CONSTR_NULL);
|
||||
$$->sql_str_off_ = $1->sql_str_off_;
|
||||
}
|
||||
| DEFAULT now_or_signed_literal
|
||||
{
|
||||
@ -5843,6 +5914,7 @@ TABLE_MODE opt_equal_mark STRING_VALUE
|
||||
$$->str_value_ = $4->str_value_;
|
||||
$$->str_len_ = $4->str_len_;
|
||||
$$->param_num_ = $4->param_num_;
|
||||
$$->sql_str_off_ = $4->sql_str_off_;
|
||||
}
|
||||
| COMMENT opt_equal_mark STRING_VALUE
|
||||
{
|
||||
@ -6842,6 +6914,7 @@ opt_default_mark TABLEGROUP opt_equal_mark relation_name
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_DEFAULT_TABLEGROUP);
|
||||
$$->str_value_ = $4->str_value_;
|
||||
$$->str_len_ = $4->str_len_;
|
||||
$$->sql_str_off_ = $4->sql_str_off_;
|
||||
}
|
||||
| opt_default_mark TABLEGROUP opt_equal_mark NULLX
|
||||
{
|
||||
@ -6849,6 +6922,7 @@ opt_default_mark TABLEGROUP opt_equal_mark relation_name
|
||||
(void)($3) ; /* make bison mute */
|
||||
(void)($4) ; /* make bison mute */
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_DEFAULT_TABLEGROUP);
|
||||
$$->sql_str_off_ = $4->sql_str_off_;
|
||||
}
|
||||
;
|
||||
|
||||
@ -7945,6 +8019,7 @@ select_with_parens order_by
|
||||
// from_list
|
||||
ParseNode *alias_node = NULL;
|
||||
make_name_node(alias_node, result->malloc_pool_, "");
|
||||
alias_node->sql_str_off_ = @1.first_column;
|
||||
malloc_non_terminal_node(alias_node, result->malloc_pool_, T_ALIAS, 2, $1, alias_node);
|
||||
|
||||
ParseNode *from_list = NULL;
|
||||
@ -7975,6 +8050,7 @@ select_with_parens order_by
|
||||
// from_list
|
||||
ParseNode *alias_node = NULL;
|
||||
make_name_node(alias_node, result->malloc_pool_, "");
|
||||
alias_node->sql_str_off_ = @1.first_column;
|
||||
malloc_non_terminal_node(alias_node, result->malloc_pool_, T_ALIAS, 2, $1, alias_node);
|
||||
|
||||
ParseNode *from_list = NULL;
|
||||
@ -9222,22 +9298,26 @@ opt_for_update_wait:
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_SFU_DECIMAL);
|
||||
$$->str_value_ = $2->str_value_;
|
||||
$$->str_len_ = $2->str_len_;
|
||||
$$->sql_str_off_ = $2->sql_str_off_;
|
||||
}
|
||||
| WAIT INTNUM
|
||||
{
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_SFU_INT);
|
||||
$$->value_ = $2->value_;
|
||||
$$->sql_str_off_ = $2->sql_str_off_;
|
||||
}
|
||||
| NOWAIT
|
||||
{
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_SFU_INT);
|
||||
$$->value_ = 0;
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
$$->is_hidden_const_ = 1;
|
||||
}
|
||||
| NO_WAIT
|
||||
{
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_SFU_INT);
|
||||
$$->value_ = 0;
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
$$->is_hidden_const_ = 1;
|
||||
};
|
||||
|
||||
@ -9510,6 +9590,7 @@ expr %prec LOWER_PARENS
|
||||
dup_expr_string($$, result, @1.first_column, @1.last_column);
|
||||
dup_node_string($2, alias_node, result->malloc_pool_);
|
||||
alias_node->param_num_ = 0;
|
||||
alias_node->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
}
|
||||
| expr AS column_label
|
||||
@ -9528,6 +9609,7 @@ expr %prec LOWER_PARENS
|
||||
dup_expr_string($$, result, @1.first_column, @1.last_column);
|
||||
dup_node_string($3, alias_node, result->malloc_pool_);
|
||||
alias_node->param_num_ = 0;
|
||||
alias_node->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
}
|
||||
| expr opt_as STRING_VALUE
|
||||
@ -9556,8 +9638,10 @@ expr %prec LOWER_PARENS
|
||||
if (NULL == $3->str_value_) {
|
||||
alias_node->str_value_ = NULL;
|
||||
alias_node->str_len_ = 0;
|
||||
alias_node->sql_str_off_ = $3->sql_str_off_;
|
||||
} else {
|
||||
dup_node_string($3, alias_node, result->malloc_pool_);
|
||||
alias_node->sql_str_off_ = $3->sql_str_off_;
|
||||
}
|
||||
alias_node->param_num_ = 1;
|
||||
}
|
||||
@ -9641,12 +9725,14 @@ tbl_name
|
||||
ParseNode *unname_node = NULL;
|
||||
make_name_node(unname_node, result->malloc_pool_, "");
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 2, $1, unname_node);
|
||||
unname_node->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| select_with_parens use_flashback %prec LOWER_PARENS
|
||||
{
|
||||
ParseNode *unname_node = NULL;
|
||||
make_name_node(unname_node, result->malloc_pool_, "");
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 6, $1, unname_node, unname_node, unname_node, unname_node, $2);
|
||||
unname_node->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| '(' table_references ')'
|
||||
{
|
||||
@ -9732,22 +9818,27 @@ relation_factor %prec LOWER_PARENS
|
||||
| relation_factor AS relation_name
|
||||
{
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 5, $1, $3, NULL, NULL, NULL);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| relation_factor use_partition AS relation_name
|
||||
{
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 5, $1, $4, NULL, $2, NULL);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| relation_factor use_flashback AS relation_name
|
||||
{
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 6, $1, $4, NULL, NULL, NULL, $2);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| relation_factor use_partition use_flashback AS relation_name
|
||||
{
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 6, $1, $5, NULL, $2, NULL, $3);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| relation_factor sample_clause AS relation_name
|
||||
{
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 5, $1, $4, NULL, NULL, $2);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| relation_factor sample_clause seed AS relation_name
|
||||
{
|
||||
@ -9755,10 +9846,12 @@ relation_factor %prec LOWER_PARENS
|
||||
$2->children_[2] = $3;
|
||||
}
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 5, $1, $5, NULL, NULL, $2);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| relation_factor use_partition sample_clause AS relation_name
|
||||
{
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 5, $1, $5, NULL, $2, $3);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| relation_factor use_partition sample_clause seed AS relation_name
|
||||
{
|
||||
@ -9766,22 +9859,26 @@ relation_factor %prec LOWER_PARENS
|
||||
$3->children_[2] = $4;
|
||||
}
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 5, $1, $6, NULL, $2, $3);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| relation_factor AS relation_name index_hint_list
|
||||
{
|
||||
merge_nodes($$, result, T_INDEX_HINT_LIST, $4);
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 5, $1, $3, $$, NULL, NULL);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| relation_factor use_partition AS relation_name index_hint_list
|
||||
{
|
||||
merge_nodes($$, result, T_INDEX_HINT_LIST, $5);
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 5, $1, $4, $$, $2, NULL);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
|
||||
| relation_factor sample_clause AS relation_name index_hint_list
|
||||
{
|
||||
merge_nodes($$, result, T_INDEX_HINT_LIST, $5);
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 5, $1, $4, $$, NULL, $2);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| relation_factor sample_clause seed AS relation_name index_hint_list
|
||||
{
|
||||
@ -9790,11 +9887,13 @@ relation_factor %prec LOWER_PARENS
|
||||
}
|
||||
merge_nodes($$, result, T_INDEX_HINT_LIST, $6);
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 5, $1, $5, $$, NULL, $2);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| relation_factor use_partition sample_clause AS relation_name index_hint_list
|
||||
{
|
||||
merge_nodes($$, result, T_INDEX_HINT_LIST, $6);
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 5, $1, $5, $$, $2, $3);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| relation_factor use_partition sample_clause seed AS relation_name index_hint_list
|
||||
{
|
||||
@ -9803,36 +9902,44 @@ relation_factor %prec LOWER_PARENS
|
||||
}
|
||||
merge_nodes($$, result, T_INDEX_HINT_LIST, $7);
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 5, $1, $6, $$, $2, $3);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| relation_factor relation_name
|
||||
{
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 5, $1, $2, NULL, NULL, NULL);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| relation_factor use_partition relation_name
|
||||
{
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 5, $1, $3, NULL, $2, NULL);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| relation_factor use_flashback relation_name
|
||||
{
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 6, $1, $3, NULL, NULL, NULL, $2);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| relation_factor use_partition use_flashback relation_name
|
||||
{
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 6, $1, $4, NULL, $2, NULL, $3);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| relation_factor relation_name index_hint_list
|
||||
{
|
||||
merge_nodes($$, result, T_INDEX_HINT_LIST, $3);
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 5, $1, $2, $$, NULL, NULL);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| relation_factor use_partition relation_name index_hint_list
|
||||
{
|
||||
merge_nodes($$, result, T_INDEX_HINT_LIST, $4);
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 5, $1, $3, $$, $2, NULL);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| relation_factor sample_clause seed relation_name
|
||||
{
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 5, $1, $4, NULL, NULL, $2);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
if ($2 != NULL) {
|
||||
$2->children_[2] = $3;
|
||||
}
|
||||
@ -9840,6 +9947,7 @@ relation_factor %prec LOWER_PARENS
|
||||
| relation_factor use_partition sample_clause seed relation_name
|
||||
{
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 5, $1, $5, NULL, $2, $3);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
if ($3 != NULL) {
|
||||
$3->children_[2] = $4;
|
||||
}
|
||||
@ -9848,6 +9956,7 @@ relation_factor %prec LOWER_PARENS
|
||||
{
|
||||
merge_nodes($$, result, T_INDEX_HINT_LIST, $5);
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 5, $1, $4, $$, NULL, $2);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
if ($2 != NULL) {
|
||||
$2->children_[2] = $3;
|
||||
}
|
||||
@ -9856,6 +9965,7 @@ relation_factor %prec LOWER_PARENS
|
||||
{
|
||||
merge_nodes($$, result, T_INDEX_HINT_LIST, $6);
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 5, $1, $5, $$, $2, $3);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
if ($3 != NULL) {
|
||||
$3->children_[2] = $4;
|
||||
}
|
||||
@ -9863,20 +9973,24 @@ relation_factor %prec LOWER_PARENS
|
||||
| relation_factor sample_clause relation_name
|
||||
{
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 5, $1, $3, NULL, NULL, $2);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| relation_factor use_partition sample_clause relation_name
|
||||
{
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 5, $1, $4, NULL, $2, $3);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| relation_factor sample_clause relation_name index_hint_list
|
||||
{
|
||||
merge_nodes($$, result, T_INDEX_HINT_LIST, $4);
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 5, $1, $3, $$, NULL, $2);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| relation_factor use_partition sample_clause relation_name index_hint_list
|
||||
{
|
||||
merge_nodes($$, result, T_INDEX_HINT_LIST, $5);
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 5, $1, $4, $$, $2, $3);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| TABLE '(' simple_expr ')' %prec LOWER_PARENS
|
||||
{
|
||||
@ -9906,6 +10020,7 @@ SEED '(' INTNUM ')'
|
||||
/* USE T_SFU_XXX to avoid being parsed by plan cache as template var */
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_SFU_INT);
|
||||
$$->value_ = $3->value_;
|
||||
$$->sql_str_off_ = $3->sql_str_off_;
|
||||
};
|
||||
|
||||
sample_percent:
|
||||
@ -9914,6 +10029,7 @@ INTNUM
|
||||
/* USE T_SFU_XXX to avoid being parsed by plan cache as template var */
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_SFU_INT);
|
||||
$$->value_ = $1->value_;
|
||||
$$->sql_str_off_ = $1->sql_str_off_;
|
||||
}
|
||||
|
|
||||
DECIMAL_VAL
|
||||
@ -9922,6 +10038,7 @@ DECIMAL_VAL
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_SFU_DECIMAL);
|
||||
$$->str_len_ = $1->str_len_;
|
||||
$$->str_value_ = $1->str_value_;
|
||||
$$->sql_str_off_ = $1->sql_str_off_;
|
||||
};
|
||||
|
||||
opt_sample_scope:
|
||||
@ -9966,18 +10083,22 @@ table_subquery:
|
||||
select_with_parens relation_name
|
||||
{
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 2, $1, $2);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| select_with_parens AS relation_name
|
||||
{
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 2, $1, $3);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| select_with_parens use_flashback relation_name
|
||||
{
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 6, $1, $3, NULL, NULL, NULL, $2);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
| select_with_parens use_flashback AS relation_name
|
||||
{
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 6, $1, $4, NULL, NULL, NULL, $2);
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
;
|
||||
|
||||
@ -10404,6 +10525,7 @@ table_reference inner_join_type opt_full_table_factor %prec LOWER_ON
|
||||
$$->children_[i] = $1->children_[i - 1];
|
||||
}
|
||||
}
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
} else if ($1->type_ == T_ALIAS && $1->children_[1] != NULL &&
|
||||
strlen($1->children_[1]->str_value_) == 0) {
|
||||
@ -10451,6 +10573,7 @@ table_factor %prec LOWER_COMMA
|
||||
$$->children_[i] = $1->children_[i - 1];
|
||||
}
|
||||
}
|
||||
$$->sql_str_off_ = @1.first_column;
|
||||
}
|
||||
} else if ($1->type_ == T_ALIAS && $1->children_[1] != NULL &&
|
||||
strlen($1->children_[1]->str_value_) == 0) {
|
||||
@ -10988,6 +11111,7 @@ INTNUM
|
||||
| BOOL_VALUE
|
||||
{
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_INT);
|
||||
$$->sql_str_off_ = $1->sql_str_off_;
|
||||
$$->value_ = $1->value_;
|
||||
}
|
||||
| QUESTIONMARK
|
||||
@ -11824,11 +11948,13 @@ MAX_CONNECTIONS_PER_HOUR INTNUM
|
||||
{
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_MAX_CONNECTIONS_PER_HOUR);
|
||||
$$->value_ = $2->value_;
|
||||
$$->sql_str_off_ = $2->sql_str_off_;
|
||||
}
|
||||
| MAX_USER_CONNECTIONS INTNUM
|
||||
{
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_MAX_USER_CONNECTIONS);
|
||||
$$->value_ = $2->value_;
|
||||
$$->sql_str_off_ = $2->sql_str_off_;
|
||||
}
|
||||
/*
|
||||
| MAX_QUERIES_PER_HOUR INTNUM
|
||||
@ -14846,12 +14972,14 @@ relation_name_or_string
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_TENANT_NAME);
|
||||
$$->str_value_ = $1->str_value_;
|
||||
$$->str_len_ = $1->str_len_;
|
||||
$$->sql_str_off_ = $1->sql_str_off_;
|
||||
}
|
||||
| TENANT_ID opt_equal_mark INTNUM
|
||||
{
|
||||
(void)($2);
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_TENANT_ID);
|
||||
$$->value_ = $3->value_;
|
||||
$$->sql_str_off_ = $3->sql_str_off_;
|
||||
}
|
||||
;
|
||||
|
||||
@ -15451,6 +15579,7 @@ TENANT_ID opt_equal_mark INTNUM
|
||||
(void)($2);
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_TENANT_ID);
|
||||
$$->value_ = $3->value_;
|
||||
$$->sql_str_off_ = $3->sql_str_off_;
|
||||
}
|
||||
|
|
||||
TENANT opt_equal_mark relation_name_or_string
|
||||
@ -15459,6 +15588,7 @@ TENANT opt_equal_mark relation_name_or_string
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_TENANT_NAME);
|
||||
$$->str_value_ = $3->str_value_;
|
||||
$$->str_len_ = $3->str_len_;
|
||||
$$->sql_str_off_ = $3->sql_str_off_;
|
||||
}
|
||||
| /* EMPTY */
|
||||
{
|
||||
@ -16104,6 +16234,7 @@ SAVEPOINT var_name
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_CREATE_SAVEPOINT);
|
||||
$$->str_value_ = $2->str_value_;
|
||||
$$->str_len_ = $2->str_len_;
|
||||
$$->sql_str_off_ = $2->sql_str_off_;
|
||||
}
|
||||
;
|
||||
rollback_savepoint_stmt:
|
||||
@ -16112,18 +16243,21 @@ ROLLBACK TO var_name
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_ROLLBACK_SAVEPOINT);
|
||||
$$->str_value_ = $3->str_value_;
|
||||
$$->str_len_ = $3->str_len_;
|
||||
$$->sql_str_off_ = $3->sql_str_off_;
|
||||
}
|
||||
| ROLLBACK WORK TO var_name
|
||||
{
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_ROLLBACK_SAVEPOINT);
|
||||
$$->str_value_ = $4->str_value_;
|
||||
$$->str_len_ = $4->str_len_;
|
||||
$$->sql_str_off_ = $4->sql_str_off_;
|
||||
}
|
||||
| ROLLBACK TO SAVEPOINT var_name
|
||||
{
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_ROLLBACK_SAVEPOINT);
|
||||
$$->str_value_ = $4->str_value_;
|
||||
$$->str_len_ = $4->str_len_;
|
||||
$$->sql_str_off_ = $4->sql_str_off_;
|
||||
}
|
||||
;
|
||||
release_savepoint_stmt:
|
||||
@ -16132,6 +16266,7 @@ RELEASE SAVEPOINT var_name
|
||||
malloc_terminal_node($$, result->malloc_pool_, T_RELEASE_SAVEPOINT);
|
||||
$$->str_value_ = $3->str_value_;
|
||||
$$->str_len_ = $3->str_len_;
|
||||
$$->sql_str_off_ = $3->sql_str_off_;
|
||||
}
|
||||
;
|
||||
|
||||
@ -16652,10 +16787,12 @@ ERROR_P
|
||||
malloc_terminal_node(type_node, result->malloc_pool_, T_NULLX_CLAUSE);
|
||||
type_node->value_ = 1;
|
||||
type_node->param_num_ = 1;
|
||||
type_node->sql_str_off_ = $1->sql_str_off_;
|
||||
|
||||
ParseNode *v_node = NULL;
|
||||
malloc_terminal_node(v_node, result->malloc_pool_, T_NULL);
|
||||
v_node->is_hidden_const_ = 1;
|
||||
v_node->sql_str_off_ = $1->sql_str_off_;
|
||||
|
||||
malloc_non_terminal_node($$, result->malloc_pool_, T_LINK_NODE, 2, type_node, v_node);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user