Fixes:
authorMarc G. Fournier
Tue, 6 Aug 1996 16:43:41 +0000 (16:43 +0000)
committerMarc G. Fournier
Tue, 6 Aug 1996 16:43:41 +0000 (16:43 +0000)
I've enclosed two patches.  The first affects Solaris compilability.  The
bug stems from netdb.h (where MAXHOSTNAMELEN is defined on a stock
system).  If the user has installed the header files from BIND 4.9.x,
there will be no definition of MAXHOSTNAMELEN.  The patch will, if all
else fails, try to include  and set MAXHOSTNAMELEN to
MAXDNAME, which is 256 (just like MAXHOSTNAMELEN on a stock system).

The second patch adds aliases for "ISNULL" to "IS NULL" and likewise for
"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 ]

--Jason

Submitted by: Jason Wright 

src/backend/parser/gram.y
src/backend/parser/keywords.c
src/backend/postmaster/postmaster.c
src/backend/tcop/postgres.c

index 702766db3b5b33ce7b7c0ed263b369f71a6a924c..65ecfc376a660c73f7e83e8c86494449862955ce 100644 (file)
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.4 1996/08/06 16:38:03 scrappy Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.5 1996/08/06 16:43:06 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, 
         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 */
@@ -1814,8 +1815,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 b6cd549bf9bc74e9c967272fdeb5274c55aa4eda..80a1832575344523b4b1e243a0f348ac706ba093 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/parser/keywords.c,v 1.1.1.1 1996/07/09 06:21:40 scrappy Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/parser/keywords.c,v 1.2 1996/08/06 16:43:08 scrappy Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -87,6 +87,7 @@ static ScanKeyword ScanKeywords[] = {
    { "insert",     INSERT      },
    { "instead",        INSTEAD     },
    { "into",       INTO        },
+   { "is",         IS      },
    { "isnull",             ISNULL          },
    { "language",       LANGUAGE    },
    { "light",      LIGHT       },
index 570f7243fe41ae1eb17c43c70620007734336b68..74d0792e2aa7bbd1cfa85a1af668d28dea87d35a 100644 (file)
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.3 1996/07/23 02:23:47 scrappy Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.4 1996/08/06 16:43:24 scrappy Exp $
  *
  * NOTES
  *
 #define MAXINT        INT_MAX
 #else
 #include      /* for MAXHOSTNAMELEN on some */
+#ifndef MAXHOSTNAMELEN     /* for MAXHOSTNAMELEN everywhere else */
+#include 
+#define MAXHOSTNAMELEN     MAXDNAME
+#endif
 # if defined(PORTNAME_BSD44_derived) || \
      defined(PORTNAME_bsdi) || \
      defined(PORTNAME_bsdi_2_1)
index dfb2532bf32a310b8bce8846909102211340d64b..b9ed53d2c0b9bafac05c48d48f016acdc676b296 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.4 1996/07/22 23:00:26 scrappy Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.5 1996/08/06 16:43:41 scrappy Exp $
  *
  * NOTES
  *    this is the "main" module of the postgres backend and
 #include      /* for MAXHOSTNAMELEN on most */
 #ifndef WIN32
 #include      /* for MAXHOSTNAMELEN on some */
+#ifndef MAXHOSTNAMELEN     /* for MAXHOSTNAMELEN everywhere else */
+#include 
+#define MAXHOSTNAMELEN     MAXDNAME
+#endif
 #endif /* WIN32 */
 #include 
 #ifdef PORTNAME_aix
@@ -1223,7 +1227,7 @@ PostgresMain(int argc, char *argv[])
      */
     if (IsUnderPostmaster == false) {
    puts("\nPOSTGRES backend interactive interface");
-   puts("$Revision: 1.4 $ $Date: 1996/07/22 23:00:26 $");
+   puts("$Revision: 1.5 $ $Date: 1996/08/06 16:43:41 $");
     }
     
     /* ----------------