11
11
*
12
12
*
13
13
* IDENTIFICATION
14
- * $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.515 2005/11/22 15:24:17 adunstan Exp $
14
+ * $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.516 2005/11/28 04:35:31 tgl Exp $
15
15
*
16
16
* HISTORY
17
17
* AUTHOR DATE MAJOR EVENT
@@ -6721,7 +6721,7 @@ a_expr: c_expr { $$ = $1; }
6721
6721
}
6722
6722
| a_expr IS NOT OF ' (' type_list ' )' %prec IS
6723
6723
{
6724
- $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, " != " , $1 , (Node *) $6 );
6724
+ $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, " <> " , $1 , (Node *) $6 );
6725
6725
}
6726
6726
| a_expr BETWEEN opt_asymmetric b_expr AND b_expr %prec BETWEEN
6727
6727
{
@@ -6760,38 +6760,30 @@ a_expr: c_expr { $$ = $1; }
6760
6760
/* in_expr returns a SubLink or a list of a_exprs */
6761
6761
if (IsA($3 , SubLink))
6762
6762
{
6763
- SubLink *n = (SubLink *)$3 ;
6764
- n->subLinkType = ANY_SUBLINK;
6765
- if (IsA($1 , RowExpr))
6766
- n->lefthand = ((RowExpr *) $1 )->args;
6767
- else
6768
- n->lefthand = list_make1($1 );
6769
- n->operName = list_make1(makeString(" =" ));
6770
- $$ = (Node *)n;
6763
+ /* generate foo = ANY (subquery) */
6764
+ SubLink *n = (SubLink *) $3 ;
6765
+ n->subLinkType = ANY_SUBLINK;
6766
+ if (IsA($1 , RowExpr))
6767
+ n->lefthand = ((RowExpr *) $1 )->args;
6768
+ else
6769
+ n->lefthand = list_make1($1 );
6770
+ n->operName = list_make1(makeString(" =" ));
6771
+ $$ = (Node *)n;
6771
6772
}
6772
6773
else
6773
6774
{
6774
- Node *n = NULL ;
6775
- ListCell *l;
6776
- foreach (l, (List *) $3)
6777
- {
6778
- Node *cmp;
6779
- cmp = (Node *) makeSimpleA_Expr (AEXPR_OP, " =" , $1 , lfirst (l));
6780
- if (n == NULL )
6781
- n = cmp;
6782
- else
6783
- n = (Node *) makeA_Expr (AEXPR_OR, NIL, n, cmp);
6784
- }
6785
- $$ = n;
6775
+ /* generate scalar IN expression */
6776
+ $$ = (Node *) makeSimpleA_Expr(AEXPR_IN, " =" , $1 , $3 );
6786
6777
}
6787
6778
}
6788
6779
| a_expr NOT IN_P in_expr
6789
6780
{
6790
6781
/* in_expr returns a SubLink or a list of a_exprs */
6791
6782
if (IsA($4 , SubLink))
6792
6783
{
6793
- /* Make an IN node */
6794
- SubLink *n = (SubLink *)$4 ;
6784
+ /* generate NOT (foo = ANY (subquery)) */
6785
+ /* Make an = ANY node */
6786
+ SubLink *n = (SubLink *) $4 ;
6795
6787
n->subLinkType = ANY_SUBLINK;
6796
6788
if (IsA($1 , RowExpr))
6797
6789
n->lefthand = ((RowExpr *) $1 )->args;
@@ -6803,18 +6795,8 @@ a_expr: c_expr { $$ = $1; }
6803
6795
}
6804
6796
else
6805
6797
{
6806
- Node *n = NULL ;
6807
- ListCell *l;
6808
- foreach (l, (List *) $4)
6809
- {
6810
- Node *cmp;
6811
- cmp = (Node *) makeSimpleA_Expr (AEXPR_OP, " <>" , $1 , lfirst (l));
6812
- if (n == NULL )
6813
- n = cmp;
6814
- else
6815
- n = (Node *) makeA_Expr (AEXPR_AND, NIL, n, cmp);
6816
- }
6817
- $$ = n;
6798
+ /* generate scalar NOT IN expression */
6799
+ $$ = (Node *) makeSimpleA_Expr(AEXPR_IN, " <>" , $1 , $4 );
6818
6800
}
7715
6819
6801
}
6820
6802
| a_expr subquery_Op sub_type select_with_parens %prec Op
@@ -6904,7 +6886,7 @@ b_expr: c_expr
6904
6886
}
6905
6887
| b_expr IS NOT OF ' (' type_list ' )' %prec IS
6906
6888
{
6907
- $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, " != " , $1 , (Node *) $6 );
6889
+ $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, " <> " , $1 , (Node *) $6 );
6908
6890
}
6909
6891
;
6910
6892
0 commit comments