*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.1 1998/02/11 04:11:19 thomas Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.2 1998/02/13 08:10:30 vadim Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
n->subselect = $7;
$$ = (Node *)n;
}
+ | '(' row_descriptor ')' Op '(' SubSelect ')'
+ {
+ SubLink *n = makeNode(SubLink);
+ n->lefthand = $2;
+ n->oper = lcons($4, NIL);
+ if (strcmp($4,"<>") == 0)
+ n->useor = true;
+ else
+ n->useor = false;
+ n->subLinkType = EXPR_SUBLINK;
+ n->subselect = $6;
+ $$ = (Node *)n;
+ }
+ | '(' row_descriptor ')' '+' '(' SubSelect ')'
+ {
+ SubLink *n = makeNode(SubLink);
+ n->lefthand = $2;
+ n->oper = lcons("+", NIL);
+ n->useor = false;
+ n->subLinkType = EXPR_SUBLINK;
+ n->subselect = $6;
+ $$ = (Node *)n;
+ }
+ | '(' row_descriptor ')' '-' '(' SubSelect ')'
+ {
+ SubLink *n = makeNode(SubLink);
+ n->lefthand = $2;
+ n->oper = lcons("-", NIL);
+ n->useor = false;
+ n->subLinkType = EXPR_SUBLINK;
+ n->subselect = $6;
+ $$ = (Node *)n;
+ }
+ | '(' row_descriptor ')' '/' '(' SubSelect ')'
+ {
+ SubLink *n = makeNode(SubLink);
+ n->lefthand = $2;
+ n->oper = lcons("/", NIL);
+ n->useor = false;
+ n->subLinkType = EXPR_SUBLINK;
+ n->subselect = $6;
+ $$ = (Node *)n;
+ }
+ | '(' row_descriptor ')' '*' '(' SubSelect ')'
+ {
+ SubLink *n = makeNode(SubLink);
+ n->lefthand = $2;
+ n->oper = lcons("*", NIL);
+ n->useor = false;
+ n->subLinkType = EXPR_SUBLINK;
+ n->subselect = $6;
+ $$ = (Node *)n;
+ }
+ | '(' row_descriptor ')' '<' '(' SubSelect ')'
+ {
+ SubLink *n = makeNode(SubLink);
+ n->lefthand = $2;
+ n->oper = lcons("<", NIL);
+ n->useor = false;
+ n->subLinkType = EXPR_SUBLINK;
+ n->subselect = $6;
+ $$ = (Node *)n;
+ }
+ | '(' row_descriptor ')' '>' '(' SubSelect ')'
+ {
+ SubLink *n = makeNode(SubLink);
+ n->lefthand = $2;
+ n->oper = lcons(">", NIL);
+ n->useor = false;
+ n->subLinkType = EXPR_SUBLINK;
+ n->subselect = $6;
+ $$ = (Node *)n;
+ }
+ | '(' row_descriptor ')' '=' '(' SubSelect ')'
+ {
+ SubLink *n = makeNode(SubLink);
+ n->lefthand = $2;
+ n->oper = lcons("=", NIL);
+ n->useor = false;
+ n->subLinkType = EXPR_SUBLINK;
+ n->subselect = $6;
+ $$ = (Node *)n;
+ }
| '(' row_descriptor ')' Op ANY '(' SubSelect ')'
{
SubLink *n = makeNode(SubLink);
n->subselect = $7;
$$ = (Node *)n;
}
- | '(' row_descriptor ')' Op '(' SubSelect ')'
- {
- SubLink *n = makeNode(SubLink);
- n->lefthand = $2;
- n->oper = lcons($4, NIL);
- if (strcmp($4,"<>") == 0)
- n->useor = true;
- else
- n->useor = false;
- n->subLinkType = EXPR_SUBLINK;
- n->subselect = $6;
- $$ = (Node *)n;
- }
- | '(' row_descriptor ')' '+' '(' SubSelect ')'
- {
- SubLink *n = makeNode(SubLink);
- n->lefthand = $2;
- n->oper = lcons("+", NIL);
- n->useor = false;
- n->subLinkType = EXPR_SUBLINK;
- n->subselect = $6;
- $$ = (Node *)n;
- }
- | '(' row_descriptor ')' '-' '(' SubSelect ')'
- {
- SubLink *n = makeNode(SubLink);
- n->lefthand = $2;
- n->oper = lcons("-", NIL);
- n->useor = false;
- n->subLinkType = EXPR_SUBLINK;
- n->subselect = $6;
- $$ = (Node *)n;
- }
- | '(' row_descriptor ')' '/' '(' SubSelect ')'
- {
- SubLink *n = makeNode(SubLink);
- n->lefthand = $2;
- n->oper = lcons("/", NIL);
- n->useor = false;
- n->subLinkType = EXPR_SUBLINK;
- n->subselect = $6;
- $$ = (Node *)n;
- }
- | '(' row_descriptor ')' '*' '(' SubSelect ')'
- {
- SubLink *n = makeNode(SubLink);
- n->lefthand = $2;
- n->oper = lcons("*", NIL);
- n->useor = false;
- n->subLinkType = EXPR_SUBLINK;
- n->subselect = $6;
- $$ = (Node *)n;
- }
- | '(' row_descriptor ')' '<' '(' SubSelect ')'
- {
- SubLink *n = makeNode(SubLink);
- n->lefthand = $2;
- n->oper = lcons("<", NIL);
- n->useor = false;
- n->subLinkType = EXPR_SUBLINK;
- n->subselect = $6;
- $$ = (Node *)n;
- }
- | '(' row_descriptor ')' '>' '(' SubSelect ')'
- {
- SubLink *n = makeNode(SubLink);
- n->lefthand = $2;
- n->oper = lcons(">", NIL);
- n->useor = false;
- n->subLinkType = EXPR_SUBLINK;
- n->subselect = $6;
- $$ = (Node *)n;
- }
- | '(' row_descriptor ')' '=' '(' SubSelect ')'
- {
- SubLink *n = makeNode(SubLink);
- n->lefthand = $2;
- n->oper = lcons("=", NIL);
- n->useor = false;
- n->subLinkType = EXPR_SUBLINK;
- n->subselect = $6;
- $$ = (Node *)n;
- }
| '(' row_descriptor ')' Op '(' row_descriptor ')'
{
$$ = makeRowExpr($4, $2, $6);
}
else $$ = $6;
}
- | a_expr Op ANY '(' SubSelect ')'
+ | a_expr Op '(' SubSelect ')'
{
SubLink *n = makeNode(SubLink);
- n->lefthand = lcons($1,NIL);
+ n->lefthand = lcons($1, NULL);
n->oper = lcons($2,NIL);
n->useor = false;
- n->subLinkType = ANY_SUBLINK;
- n->subselect = $5;
+ n->subLinkType = EXPR_SUBLINK;
+ n->subselect = $4;
$$ = (Node *)n;
}
- | a_expr '+' ANY '(' SubSelect ')'
+ | a_expr '+' '(' SubSelect ')'
{
SubLink *n = makeNode(SubLink);
- n->lefthand = lcons($1,NIL);
+ n->lefthand = lcons($1, NULL);
n->oper = lcons("+",NIL);
n->useor = false;
- n->subLinkType = ANY_SUBLINK;
- n->subselect = $5;
+ n->subLinkType = EXPR_SUBLINK;
+ n->subselect = $4;
$$ = (Node *)n;
}
- | a_expr '-' ANY '(' SubSelect ')'
+ | a_expr '-' '(' SubSelect ')'
{
SubLink *n = makeNode(SubLink);
- n->lefthand = lcons($1,NIL);
+ n->lefthand = lcons($1, NULL);
n->oper = lcons("-",NIL);
n->useor = false;
- n->subLinkType = ANY_SUBLINK;
- n->subselect = $5;
+ n->subLinkType = EXPR_SUBLINK;
+ n->subselect = $4;
$$ = (Node *)n;
}
- | a_expr '/' ANY '(' SubSelect ')'
+ | a_expr '/' '(' SubSelect ')'
{
SubLink *n = makeNode(SubLink);
- n->lefthand = lcons($1,NIL);
+ n->lefthand = lcons($1, NULL);
n->oper = lcons("/",NIL);
n->useor = false;
- n->subLinkType = ANY_SUBLINK;
- n->subselect = $5;
+ n->subLinkType = EXPR_SUBLINK;
+ n->subselect = $4;
$$ = (Node *)n;
}
- | a_expr '*' ANY '(' SubSelect ')'
+ | a_expr '*' '(' SubSelect ')'
{
SubLink *n = makeNode(SubLink);
- n->lefthand = lcons($1,NIL);
+ n->lefthand = lcons($1, NULL);
n->oper = lcons("*",NIL);
n->useor = false;
- n->subLinkType = ANY_SUBLINK;
- n->subselect = $5;
+ n->subLinkType = EXPR_SUBLINK;
+ n->subselect = $4;
$$ = (Node *)n;
}
- | a_expr '<' ANY '(' SubSelect ')'
+ | a_expr '<' '(' SubSelect ')'
{
SubLink *n = makeNode(SubLink);
- n->lefthand = lcons($1,NIL);
+ n->lefthand = lcons($1, NULL);
n->oper = lcons("<",NIL);
n->useor = false;
- n->subLinkType = ANY_SUBLINK;
- n->subselect = $5;
+ n->subLinkType = EXPR_SUBLINK;
+ n->subselect = $4;
$$ = (Node *)n;
}
- | a_expr '>' ANY '(' SubSelect ')'
+ | a_expr '>' '(' SubSelect ')'
{
SubLink *n = makeNode(SubLink);
- n->lefthand = lcons($1,NIL);
+ n->lefthand = lcons($1, NULL);
n->oper = lcons(">",NIL);
n->useor = false;
- n->subLinkType = ANY_SUBLINK;
- n->subselect = $5;
+ n->subLinkType = EXPR_SUBLINK;
+ n->subselect = $4;
$$ = (Node *)n;
}
- | a_expr '=' ANY '(' SubSelect ')'
+ | a_expr '=' '(' SubSelect ')'
{
SubLink *n = makeNode(SubLink);
- n->lefthand = lcons($1,NIL);
+ n->lefthand = lcons($1, NULL);
n->oper = lcons("=",NIL);
n->useor = false;
- n->subLinkType = ANY_SUBLINK;
- n->subselect = $5;
+ n->subLinkType = EXPR_SUBLINK;
+ n->subselect = $4;
$$ = (Node *)n;
}
- | a_expr Op ALL '(' SubSelect ')'
+ | a_expr Op ANY '(' SubSelect ')'
{
SubLink *n = makeNode(SubLink);
- n->lefthand = lcons($1, NULL);
+ n->lefthand = lcons($1,NIL);
n->oper = lcons($2,NIL);
n->useor = false;
- n->subLinkType = ALL_SUBLINK;
+ n->subLinkType = ANY_SUBLINK;
n->subselect = $5;
$$ = (Node *)n;
}
- | a_expr '+' ALL '(' SubSelect ')'
+ | a_expr '+' ANY '(' SubSelect ')'
{
SubLink *n = makeNode(SubLink);
- n->lefthand = lcons($1, NULL);
+ n->lefthand = lcons($1,NIL);
n->oper = lcons("+",NIL);
n->useor = false;
- n->subLinkType = ALL_SUBLINK;
+ n->subLinkType = ANY_SUBLINK;
n->subselect = $5;
$$ = (Node *)n;
}
- | a_expr '-' ALL '(' SubSelect ')'
+ | a_expr '-' ANY '(' SubSelect ')'
{
SubLink *n = makeNode(SubLink);
- n->lefthand = lcons($1, NULL);
+ n->lefthand = lcons($1,NIL);
n->oper = lcons("-",NIL);
n->useor = false;
- n->subLinkType = ALL_SUBLINK;
+ n->subLinkType = ANY_SUBLINK;
n->subselect = $5;
$$ = (Node *)n;
}
- | a_expr '/' ALL '(' SubSelect ')'
+ | a_expr '/' ANY '(' SubSelect ')'
{
SubLink *n = makeNode(SubLink);
- n->lefthand = lcons($1, NULL);
+ n->lefthand = lcons($1,NIL);
n->oper = lcons("/",NIL);
n->useor = false;
- n->subLinkType = ALL_SUBLINK;
+ n->subLinkType = ANY_SUBLINK;
n->subselect = $5;
$$ = (Node *)n;
}
- | a_expr '*' ALL '(' SubSelect ')'
+ | a_expr '*' ANY '(' SubSelect ')'
{
SubLink *n = makeNode(SubLink);
- n->lefthand = lcons($1, NULL);
+ n->lefthand = lcons($1,NIL);
n->oper = lcons("*",NIL);
n->useor = false;
- n->subLinkType = ALL_SUBLINK;
+ n->subLinkType = ANY_SUBLINK;
n->subselect = $5;
$$ = (Node *)n;
}
- | a_expr '<' ALL '(' SubSelect ')'
+ | a_expr '<' ANY '(' SubSelect ')'
{
SubLink *n = makeNode(SubLink);
- n->lefthand = lcons($1, NULL);
+ n->lefthand = lcons($1,NIL);
n->oper = lcons("<",NIL);
n->useor = false;
- n->subLinkType = ALL_SUBLINK;
+ n->subLinkType = ANY_SUBLINK;
n->subselect = $5;
$$ = (Node *)n;
}
- | a_expr '>' ALL '(' SubSelect ')'
+ | a_expr '>' ANY '(' SubSelect ')'
{
SubLink *n = makeNode(SubLink);
- n->lefthand = lcons($1, NULL);
+ n->lefthand = lcons($1,NIL);
n->oper = lcons(">",NIL);
n->useor = false;
- n->subLinkType = ALL_SUBLINK;
+ n->subLinkType = ANY_SUBLINK;
n->subselect = $5;
$$ = (Node *)n;
}
- | a_expr '=' ALL '(' SubSelect ')'
+ | a_expr '=' ANY '(' SubSelect ')'
{
SubLink *n = makeNode(SubLink);
- n->lefthand = lcons($1, NULL);
+ n->lefthand = lcons($1,NIL);
n->oper = lcons("=",NIL);
n->useor = false;
- n->subLinkType = ALL_SUBLINK;
+ n->subLinkType = ANY_SUBLINK;
n->subselect = $5;
$$ = (Node *)n;
}
- | a_expr Op '(' SubSelect ')'
+ | a_expr Op ALL '(' SubSelect ')'
{
SubLink *n = makeNode(SubLink);
n->lefthand = lcons($1, NULL);
n->oper = lcons($2,NIL);
n->useor = false;
n->subLinkType = ALL_SUBLINK;
- n->subselect = $4;
+ n->subselect = $5;
$$ = (Node *)n;
}
- | a_expr '+' '(' SubSelect ')'
+ | a_expr '+' ALL '(' SubSelect ')'
{
SubLink *n = makeNode(SubLink);
n->lefthand = lcons($1, NULL);
n->oper = lcons("+",NIL);
n->useor = false;
n->subLinkType = ALL_SUBLINK;
- n->subselect = $4;
+ n->subselect = $5;
$$ = (Node *)n;
}
- | a_expr '-' '(' SubSelect ')'
+ | a_expr '-' ALL '(' SubSelect ')'
{
SubLink *n = makeNode(SubLink);
n->lefthand = lcons($1, NULL);
n->oper = lcons("-",NIL);
n->useor = false;
n->subLinkType = ALL_SUBLINK;
- n->subselect = $4;
+ n->subselect = $5;
$$ = (Node *)n;
}
- | a_expr '/' '(' SubSelect ')'
+ | a_expr '/' ALL '(' SubSelect ')'
{
SubLink *n = makeNode(SubLink);
n->lefthand = lcons($1, NULL);
n->oper = lcons("/",NIL);
n->useor = false;
n->subLinkType = ALL_SUBLINK;
- n->subselect = $4;
+ n->subselect = $5;
$$ = (Node *)n;
}
- | a_expr '*' '(' SubSelect ')'
+ | a_expr '*' ALL '(' SubSelect ')'
{
SubLink *n = makeNode(SubLink);
n->lefthand = lcons($1, NULL);
n->oper = lcons("*",NIL);
n->useor = false;
n->subLinkType = ALL_SUBLINK;
- n->subselect = $4;
+ n->subselect = $5;
$$ = (Node *)n;
}
- | a_expr '<' '(' SubSelect ')'
+ | a_expr '<' ALL '(' SubSelect ')'
{
SubLink *n = makeNode(SubLink);
n->lefthand = lcons($1, NULL);
n->oper = lcons("<",NIL);
n->useor = false;
n->subLinkType = ALL_SUBLINK;
- n->subselect = $4;
+ n->subselect = $5;
$$ = (Node *)n;
}
- | a_expr '>' '(' SubSelect ')'
+ | a_expr '>' ALL '(' SubSelect ')'
{
SubLink *n = makeNode(SubLink);
n->lefthand = lcons($1, NULL);
n->oper = lcons(">",NIL);
n->useor = false;
n->subLinkType = ALL_SUBLINK;
- n->subselect = $4;
+ n->subselect = $5;
$$ = (Node *)n;
}
- | a_expr '=' '(' SubSelect ')'
+ | a_expr '=' ALL '(' SubSelect ')'
{
SubLink *n = makeNode(SubLink);
n->lefthand = lcons($1, NULL);
n->oper = lcons("=",NIL);
n->useor = false;
n->subLinkType = ALL_SUBLINK;
- n->subselect = $4;
+ n->subselect = $5;
$$ = (Node *)n;
}
| a_expr AND a_expr