Changes of merge moved to oracle mode parser.
This commit is contained in:
parent
8990e3e2b9
commit
7a8747f757
@ -281,7 +281,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
|
|||||||
Currently there are 55 shift/reduce conflicts.
|
Currently there are 55 shift/reduce conflicts.
|
||||||
We should not introduce new conflicts any more.
|
We should not introduce new conflicts any more.
|
||||||
*/
|
*/
|
||||||
%expect 55
|
%expect 54
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Comments for TOKENS.
|
Comments for TOKENS.
|
||||||
@ -1059,10 +1059,6 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
|
|||||||
%token <kwd> YEAR_SYM /* SQL-2003-R */
|
%token <kwd> YEAR_SYM /* SQL-2003-R */
|
||||||
|
|
||||||
|
|
||||||
%left JOIN_SYM INNER_SYM STRAIGHT_JOIN CROSS LEFT RIGHT
|
|
||||||
/* A dummy token to force the priority of table_ref production in a join. */
|
|
||||||
%left TABLE_REF_PRIORITY
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Give ESCAPE (in LIKE) a very low precedence.
|
Give ESCAPE (in LIKE) a very low precedence.
|
||||||
This allows the concatenation operator || to be used on the right
|
This allows the concatenation operator || to be used on the right
|
||||||
@ -1072,6 +1068,9 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
|
|||||||
%left PREC_BELOW_ESCAPE
|
%left PREC_BELOW_ESCAPE
|
||||||
%left ESCAPE_SYM
|
%left ESCAPE_SYM
|
||||||
|
|
||||||
|
/* A dummy token to force the priority of table_ref production in a join. */
|
||||||
|
%left CONDITIONLESS_JOIN
|
||||||
|
%left JOIN_SYM INNER_SYM STRAIGHT_JOIN CROSS LEFT RIGHT ON_SYM USING
|
||||||
%left SET_VAR
|
%left SET_VAR
|
||||||
%left OR_SYM OR2_SYM
|
%left OR_SYM OR2_SYM
|
||||||
%left XOR
|
%left XOR
|
||||||
@ -11809,9 +11808,9 @@ join_table_list:
|
|||||||
and are ignored.
|
and are ignored.
|
||||||
*/
|
*/
|
||||||
esc_table_ref:
|
esc_table_ref:
|
||||||
table_ref { $$=$1; }
|
table_ref { $$=$1; }
|
||||||
| '{' ident table_ref '}' { $$=$3; }
|
| '{' ident table_ref '}' { $$=$3; }
|
||||||
;
|
;
|
||||||
|
|
||||||
/* Equivalent to <table reference list> in the SQL:2003 standard. */
|
/* Equivalent to <table reference list> in the SQL:2003 standard. */
|
||||||
/* Warning - may return NULL in case of incomplete SELECT */
|
/* Warning - may return NULL in case of incomplete SELECT */
|
||||||
@ -11824,11 +11823,9 @@ derived_table_list:
|
|||||||
;
|
;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Notice that JOIN is a left-associative operation, and it must be parsed
|
Notice that JOIN can be a left-associative operator in one context and
|
||||||
as such, that is, the parser must process first the left join operand
|
a right-associative operator in another context (see the comment for
|
||||||
then the right one. Such order of processing ensures that the parser
|
st_select_lex::add_cross_joined_table).
|
||||||
produces correct join trees which is essential for semantic analysis
|
|
||||||
and subsequent optimization phases.
|
|
||||||
*/
|
*/
|
||||||
join_table:
|
join_table:
|
||||||
/* INNER JOIN variants */
|
/* INNER JOIN variants */
|
||||||
@ -11837,8 +11834,13 @@ join_table:
|
|||||||
so that [INNER | CROSS] JOIN is properly nested as other
|
so that [INNER | CROSS] JOIN is properly nested as other
|
||||||
left-associative joins.
|
left-associative joins.
|
||||||
*/
|
*/
|
||||||
table_ref normal_join table_ref %prec TABLE_REF_PRIORITY
|
table_ref normal_join table_ref %prec CONDITIONLESS_JOIN
|
||||||
{ MYSQL_YYABORT_UNLESS($1 && ($$=$3)); $3->straight=$2; }
|
{
|
||||||
|
MYSQL_YYABORT_UNLESS($1 && ($$=$3));
|
||||||
|
|
||||||
|
if (unlikely(Select->add_cross_joined_table($1, $3, $2)))
|
||||||
|
MYSQL_YYABORT;
|
||||||
|
}
|
||||||
| table_ref normal_join table_ref
|
| table_ref normal_join table_ref
|
||||||
ON
|
ON
|
||||||
{
|
{
|
||||||
@ -11852,7 +11854,7 @@ join_table:
|
|||||||
{
|
{
|
||||||
$3->straight=$2;
|
$3->straight=$2;
|
||||||
add_join_on(thd, $3, $6);
|
add_join_on(thd, $3, $6);
|
||||||
Lex->pop_context();
|
$3->on_context= Lex->pop_context();
|
||||||
Select->parsing_place= NO_MATTER;
|
Select->parsing_place= NO_MATTER;
|
||||||
}
|
}
|
||||||
| table_ref normal_join table_ref
|
| table_ref normal_join table_ref
|
||||||
@ -11886,7 +11888,7 @@ join_table:
|
|||||||
expr
|
expr
|
||||||
{
|
{
|
||||||
add_join_on(thd, $5, $8);
|
add_join_on(thd, $5, $8);
|
||||||
Lex->pop_context();
|
$5->on_context= Lex->pop_context();
|
||||||
$5->outer_join|=JOIN_TYPE_LEFT;
|
$5->outer_join|=JOIN_TYPE_LEFT;
|
||||||
$$=$5;
|
$$=$5;
|
||||||
Select->parsing_place= NO_MATTER;
|
Select->parsing_place= NO_MATTER;
|
||||||
@ -11925,7 +11927,7 @@ join_table:
|
|||||||
if (unlikely(!($$= lex->current_select->convert_right_join())))
|
if (unlikely(!($$= lex->current_select->convert_right_join())))
|
||||||
MYSQL_YYABORT;
|
MYSQL_YYABORT;
|
||||||
add_join_on(thd, $$, $8);
|
add_join_on(thd, $$, $8);
|
||||||
Lex->pop_context();
|
$1->on_context= Lex->pop_context();
|
||||||
Select->parsing_place= NO_MATTER;
|
Select->parsing_place= NO_MATTER;
|
||||||
}
|
}
|
||||||
| table_ref RIGHT opt_outer JOIN_SYM table_factor
|
| table_ref RIGHT opt_outer JOIN_SYM table_factor
|
||||||
|
Loading…
x
Reference in New Issue
Block a user