From 2d248d6585672d67e65e90c68622d98e431b8dc8 Mon Sep 17 00:00:00 2001
From: Michael Meskes <meskes@postgresql.org>
Date: Mon, 20 Nov 2000 10:50:42 +0000
Subject: [PATCH] Parser synced.

---
 src/interfaces/ecpg/ChangeLog         |  4 ++++
 src/interfaces/ecpg/preproc/preproc.y | 26 ++++++++++++++------------
 2 files changed, 18 insertions(+), 12 deletions(-)

diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog
index c0f5b1a4060..f97f42adce4 100644
--- a/src/interfaces/ecpg/ChangeLog
+++ b/src/interfaces/ecpg/ChangeLog
@@ -1019,5 +1019,9 @@ Thu Nov  9 14:40:18 CET 2000
 	- Synced gram.y and preproc.y. 
 	- Synced keyword.c.
 	- Added just another patch by Christof Petig.
+
+Sat Nov 18 16:28:11 CET 2000
+
+	- Synced gram.y and preproc.y.         
 	- Set ecpg version to 2.8.0. 
 	- Set library version to 3.2.0.
diff --git a/src/interfaces/ecpg/preproc/preproc.y b/src/interfaces/ecpg/preproc/preproc.y
index 1e2550c19c0..49a513ead38 100644
--- a/src/interfaces/ecpg/preproc/preproc.y
+++ b/src/interfaces/ecpg/preproc/preproc.y
@@ -199,7 +199,7 @@ make_name(void)
                 READ, REFERENCES, RELATIVE, REVOKE, RIGHT, ROLLBACK,
                 SCHEMA, SCROLL, SECOND_P, SELECT, SESSION, SESSION_USER, SET, SOME, SUBSTRING,
                 TABLE, TEMPORARY, THEN, TIME, TIMESTAMP, TIMEZONE_HOUR,
-		TIMEZONE_MINUTE, TO, TOAST, TRAILING, TRANSACTION, TRIM, TRUE_P,
+		TIMEZONE_MINUTE, TO, TRAILING, TRANSACTION, TRIM, TRUE_P,
                 UNION, UNIQUE, UPDATE, USER, USING,
                 VALUES, VARCHAR, VARYING, VIEW,
                 WHEN, WHERE, WITH, WITHOUT, WORK, YEAR_P, ZONE
@@ -232,7 +232,7 @@ make_name(void)
 		OPERATOR, OWNER, PASSWORD, PROCEDURAL, REINDEX, RENAME, RESET,
 		RETURNS, ROW, RULE, SEQUENCE, SERIAL, SETOF, SHARE,
 		SHOW, START, STATEMENT, STDIN, STDOUT, SYSID TEMP,
-		TRUNCATE, TRUSTED, UNDER, UNLISTEN, UNTIL, VACUUM,
+		TEMPLATE, TOAST, TRUNCATE, TRUSTED, UNDER, UNLISTEN, UNTIL, VACUUM,
 		VALID, VERBOSE, VERSION
 
 /* The grammar thinks these are keywords, but they are not in the keywords.c
@@ -2251,11 +2251,8 @@ LoadStmt:  LOAD file_name
  *
  *****************************************************************************/
 
-CreatedbStmt:  CREATE DATABASE database_name WITH createdb_opt_location createdb_opt_encoding
+CreatedbStmt:  CREATE DATABASE database_name WITH createdb_opt_list
 			{
-				if (strlen($5) == 0 || strlen($6) == 0) 
-					mmerror(ET_ERROR, "CREATE DATABASE WITH requires at least an option.");
-
 				$$ = cat_str(5, make_str("create database"), $3, make_str("with"), $5, $6);
 			}
 		| CREATE DATABASE database_name
@@ -2264,12 +2261,17 @@ CreatedbStmt:  CREATE DATABASE database_name WITH createdb_opt_location createdb
 			}
 		;
 
-createdb_opt_location:  LOCATION '=' StringConst	{ $$ = cat2_str(make_str("location ="), $3); }
-		| LOCATION '=' DEFAULT		{ $$ = make_str("location = default"); }
-		| /*EMPTY*/			{ $$ = EMPTY; }
-		;
+createdb_opt_list:  createdb_opt_item
+                               { $$ = $1; }
+                | createdb_opt_list createdb_opt_item
+                               { $$ = cat2_str($1, $2); }
+                ;                
 
-createdb_opt_encoding:  ENCODING '=' PosIntStringConst  
+createdb_opt_item:  LOCATION '=' StringConst	{ $$ = cat2_str(make_str("location ="), $3); }
+		| LOCATION '=' DEFAULT		{ $$ = make_str("location = default"); }
+		| TEMPLATE '=' name  		{ $$ = cat2_str(make_str("template ="), $3); }
+		| TEMPLATE '=' DEFAULT		{ $$ = make_str("template = default"); }
+		| ENCODING '=' PosIntStringConst  
 			{
 				$$ = cat2_str(make_str("encoding ="), $3);
 			}
@@ -2277,7 +2279,6 @@ createdb_opt_encoding:  ENCODING '=' PosIntStringConst
 			{
 				$$ = make_str("encoding = default");
 			}
-                | /*EMPTY*/	        { $$ = NULL; }
                 ;
 
 /*****************************************************************************
@@ -5076,6 +5077,7 @@ TokenId:  ABSOLUTE			{ $$ = make_str("absolute"); }
 	| STDOUT                        { $$ = make_str("stdout"); }
 	| SYSID                         { $$ = make_str("sysid"); }
 	| TEMP				{ $$ = make_str("temp"); }
+	| TEMPLATE			{ $$ = make_str("template"); }
 	| TEMPORARY			{ $$ = make_str("temporary"); }
 	| TIMEZONE_HOUR                 { $$ = make_str("timezone_hour"); }
         | TIMEZONE_MINUTE               { $$ = make_str("timezone_minute"); } 
-- 
GitLab