From: Marc G. Fournier <scrappy@hub.org>
Date: Tue, 6 Aug 1996 16:43:41 +0000 (+0000)
Subject: Fixes:
X-Git-Tag: Release_2_0~21
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bb0bdfd101933ab330093acb873a53d180460938;p=postgresql

Fixes:

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 <arpa/nameser.h> 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 <jason@oozoo.vnet.net>
---

diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 702766db3b..65ecfc376a 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -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
diff --git a/src/backend/parser/keywords.c b/src/backend/parser/keywords.c
index b6cd549bf9..80a1832575 100644
--- a/src/backend/parser/keywords.c
+++ b/src/backend/parser/keywords.c
@@ -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		},
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 570f7243fe..74d0792e2a 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -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
  *
@@ -49,6 +49,10 @@
 #define MAXINT        INT_MAX
 #else
 #include <netdb.h>		/* for MAXHOSTNAMELEN on some */
+#ifndef MAXHOSTNAMELEN		/* for MAXHOSTNAMELEN everywhere else */
+#include <arpa/nameser.h>
+#define MAXHOSTNAMELEN		MAXDNAME
+#endif
 # if defined(PORTNAME_BSD44_derived) || \
      defined(PORTNAME_bsdi) || \
      defined(PORTNAME_bsdi_2_1)
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index dfb2532bf3..b9ed53d2c0 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -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
@@ -29,6 +29,10 @@
 #include <sys/param.h>		/* for MAXHOSTNAMELEN on most */
 #ifndef WIN32
 #include <netdb.h>		/* for MAXHOSTNAMELEN on some */
+#ifndef MAXHOSTNAMELEN		/* for MAXHOSTNAMELEN everywhere else */
+#include <arpa/nameser.h>
+#define MAXHOSTNAMELEN		MAXDNAME
+#endif
 #endif /* WIN32 */
 #include <errno.h>
 #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 $");
     }
     
     /* ----------------