The second patch adds aliases for "ISNULL" to "IS NULL" and likewise for
authorMarc G. Fournier <[email protected]>
Fri, 11 Oct 1996 03:28:14 +0000 (03:28 +0000)
committerMarc G. Fournier <[email protected]>
Fri, 11 Oct 1996 03:28:14 +0000 (03:28 +0000)
"NOTNULL" to "IS NOT NULL".  I have not removed the postgres specific
ISNULL and NOTNULL.  I noticed this on the TODO list, and figured it would
be easy to remove.

The full semantics are:
        [ expression IS NULL ]
        [ expression IS NOT NULL ]

Submitted by: Jason Wright <[email protected]>

src/backend/parser/gram.y
src/backend/parser/keywords.c

index 7c85373dc4f424228c13ccf9b32d799dc11c7172..5d5bc1b5fde9b6d7860a2f610043330b1c877419 100644 (file)
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.2.2.1 1996/08/24 20:54:06 scrappy Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.2.2.2 1996/10/11 03:28:08 scrappy Exp $
  *
  * HISTORY
  *    AUTHOR       DATE        MAJOR EVENT
@@ -173,7 +173,7 @@ static Node *makeA_Expr(int op, char *opname, Node *lexpr, Node *rexpr);
    CURSOR, DATABASE, DECLARE, DELETE, DELIMITERS, DESC, DISTINCT, DO,
    DROP, END_TRANS,
    EXTEND, FETCH, FOR, FORWARD, FROM, FUNCTION, GRANT, GROUP, 
-   HAVING, HEAVY, IN, INDEX, INHERITS, INSERT, INSTEAD, INTO, 
+   HAVING, HEAVY, IN, INDEX, INHERITS, INSERT, INSTEAD, INTO, IS,
    ISNULL, LANGUAGE, LIGHT, LISTEN, LOAD, MERGE, MOVE, NEW, 
    NONE, NOT, NOTHING, NOTIFY, NOTNULL, 
         OIDS, ON, OPERATOR, OPTION, OR, ORDER, 
@@ -201,6 +201,7 @@ static Node *makeA_Expr(int op, char *opname, Node *lexpr, Node *rexpr);
 %nonassoc Op
 %nonassoc NOTNULL
 %nonassoc ISNULL
+%nonassoc IS
 %left      '+' '-'
 %left      '*' '/'
 %left  '|'     /* this is the relation union op, not logical or */
@@ -1810,8 +1811,12 @@ a_expr:  attr opt_indirection
        }
    | a_expr ISNULL
        {   $$ = makeA_Expr(ISNULL, NULL, $1, NULL); }
+   | a_expr IS PNULL
+       {   $$ = makeA_Expr(ISNULL, NULL, $1, NULL); }
    | a_expr NOTNULL
        {   $$ = makeA_Expr(NOTNULL, NULL, $1, NULL); }
+   | a_expr IS NOT PNULL
+       {   $$ = makeA_Expr(NOTNULL, NULL, $1, NULL); }
    | a_expr AND a_expr
        {   $$ = makeA_Expr(AND, NULL, $1, $3); }
    | a_expr OR a_expr
index 4424eda2466d26186d5a410c80569237dc5942eb..61207702a25c9041596f04867a1358353ecb89fa 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/parser/keywords.c,v 1.1.1.1.2.1 1996/08/24 20:54:11 scrappy Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/parser/keywords.c,v 1.1.1.1.2.2 1996/10/11 03:28:14 scrappy Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -87,6 +87,7 @@ static ScanKeyword ScanKeywords[] = {
    { "insert",     INSERT      },
    { "instead",        INSTEAD     },
    { "into",       INTO        },
+   { "is",         IS      },
    { "isnull",             ISNULL          },
    { "language",       LANGUAGE    },
    { "light",      LIGHT       },