You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hawq.apache.org by hu...@apache.org on 2015/12/30 10:54:22 UTC

incubator-hawq git commit: HAWQ-293. Enable writable external table to support on number syntax.

Repository: incubator-hawq
Updated Branches:
  refs/heads/master 2ba5a1966 -> dbde72018


HAWQ-293. Enable writable external table to support on number syntax.


Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/dbde7201
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/dbde7201
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/dbde7201

Branch: refs/heads/master
Commit: dbde72018993960a0872de0281642493a4ee65ee
Parents: 2ba5a19
Author: hubertzhang <hz...@pivotal.io>
Authored: Wed Dec 30 15:46:31 2015 +0800
Committer: hubertzhang <hz...@pivotal.io>
Committed: Wed Dec 30 15:47:35 2015 +0800

----------------------------------------------------------------------
 src/backend/commands/tablecmds.c                 | 18 +++++++++++++++---
 src/backend/parser/gram.y                        |  7 -------
 src/test/regress/output/exttab1_optimizer.source |  4 ++--
 3 files changed, 17 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/dbde7201/src/backend/commands/tablecmds.c
----------------------------------------------------------------------
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index bbfecfc..1d44f43 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -370,7 +370,7 @@ static void update_ri_trigger_args(Oid relid,
 					   bool fk_scan,
 					   bool update_relname);
 static Datum transformLocationUris(List *locs, List* fmtopts, bool isweb, bool iswritable);
-static Datum transformExecOnClause(List	*on_clause, int *preferred_segment_num);
+static Datum transformExecOnClause(List	*on_clause, int *preferred_segment_num, bool iswritable);
 static char transformFormatType(char *formatname);
 static Datum transformFormatOpts(char formattype, List *formatOpts, int numcols, bool iswritable);
 
@@ -954,7 +954,7 @@ DefineExternalRelation(CreateExternalStmt *createExtStmt)
 			break;
 
 		case EXTTBL_TYPE_EXECUTE:
-			locationExec = transformExecOnClause(exttypeDesc->on_clause, &preferred_segment_num);
+			locationExec = transformExecOnClause(exttypeDesc->on_clause, &preferred_segment_num, iswritable);
 			if (createStmt->policy)
 			{
 			  createStmt->policy->bucketnum = preferred_segment_num;
@@ -17595,7 +17595,7 @@ static Datum transformLocationUris(List *locs, List* fmtopts, bool isweb, bool i
 
 }
 
-static Datum transformExecOnClause(List	*on_clause, int *preferred_segment_num)
+static Datum transformExecOnClause(List	*on_clause, int *preferred_segment_num, bool iswritable)
 {
 	ArrayBuildState *astate;
 	Datum		result;
@@ -17666,6 +17666,12 @@ static Datum transformExecOnClause(List	*on_clause, int *preferred_segment_num)
 		}
 		else if (strcmp(defel->defname, "master") == 0)
 		{
+			if(iswritable){
+			  ereport(ERROR,
+	 	      (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+			    errmsg("the ON master syntax for writable external tables is deprecated"),
+		      errOmitLocation(true)));
+			}
 			/* result: "MASTER_ONLY" */
 			exec_location_str = (char *) palloc(11 + 1);
 			exec_location_str = "MASTER_ONLY";
@@ -17673,6 +17679,12 @@ static Datum transformExecOnClause(List	*on_clause, int *preferred_segment_num)
 		}
 		else if (strcmp(defel->defname, "segment") == 0)
 		{
+			if(iswritable){
+			  ereport(ERROR,
+				  (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+			    errmsg("the ON segment syntax for writable external tables is deprecated"),
+	        errOmitLocation(true)));
+			}
 			/* result: "SEGMENT_ID:<segid>" */
 			value_int = intVal(defel->arg);
 			exec_location_str = (char *) palloc(10 + 1 + 8 + 1);

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/dbde7201/src/backend/parser/gram.y
----------------------------------------------------------------------
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 4bf54b3..d137fc0 100755
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -4597,13 +4597,6 @@ CreateExternalStmt:	CREATE OptWritable EXTERNAL OptWeb OptTemp TABLE qualified_n
 									extdesc->on_clause = lappend(extdesc->on_clause, 
 										   				   		 makeDefElem("all", (Node *)makeInteger(TRUE)));
 								}
-								else if(n->iswritable)
-								{
-									ereport(ERROR,
-											(errcode(ERRCODE_SYNTAX_ERROR),
-									 		 errmsg("ON clause may not be used with a writable external table"),
-									 		 errOmitLocation(true)));							
-								}
 							}
 
 							if(n->sreh && n->iswritable)

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/dbde7201/src/test/regress/output/exttab1_optimizer.source
----------------------------------------------------------------------
diff --git a/src/test/regress/output/exttab1_optimizer.source b/src/test/regress/output/exttab1_optimizer.source
index d578670..9519769 100755
--- a/src/test/regress/output/exttab1_optimizer.source
+++ b/src/test/regress/output/exttab1_optimizer.source
@@ -669,7 +669,7 @@ HINT:  use the gpfdist protocol or COPY FROM instead
 create writable external table wet_neg1(a text, b text) location('gpfdist://@hostname@:7070/wet.out', 'gpfdist://@hostname@:7070/wet.out') format 'text';
 ERROR:  location uri "gpfdist://@hostname@:7070/wet.out" appears more than once
 create writable external web table wet_pos5(a text, b text) execute 'some command' on segment 0 format 'text';
-ERROR:  ON clause may not be used with a writable external table
+ERROR:  the ON segment syntax for writable        external tables is deprecated
 --
 -- SELECT from WET (negative)
 --
@@ -896,4 +896,4 @@ select * from gpfdist_status;
 -- end_ignore
 drop external table gpfdist_status;
 drop external table gpfdist_start;
-drop external table gpfdist_stop;
\ No newline at end of file
+drop external table gpfdist_stop;