summaryrefslogtreecommitdiff
path: root/src/parser/outfuncs.c
diff options
context:
space:
mode:
authorpengbo2017-09-22 08:02:04 +0000
committerpengbo2017-09-22 08:02:04 +0000
commitd9b35160a66b1e9c4c32cd0363e2099c93c968b6 (patch)
treed6511f176b60e41760cccf0465b1e1dd96b20afe /src/parser/outfuncs.c
parentbe3712a31628a4378f0844c9181463c42fac5dd3 (diff)
Import PostgreSQL 10.0 SQL parser.
Diffstat (limited to 'src/parser/outfuncs.c')
-rw-r--r--src/parser/outfuncs.c209
1 files changed, 142 insertions, 67 deletions
diff --git a/src/parser/outfuncs.c b/src/parser/outfuncs.c
index bc9888ffb..0d99343f0 100644
--- a/src/parser/outfuncs.c
+++ b/src/parser/outfuncs.c
@@ -3,8 +3,8 @@
* outfuncs.c
* Output functions for Postgres tree nodes.
*
- * Portions Copyright (c) 2003-2016, PgPool Global Development Group
- * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group
+ * Portions Copyright (c) 2003-2017, PgPool Global Development Group
+ * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
*
@@ -183,7 +183,7 @@ static void _outSetRest(String *str, VariableSetStmt *node);
static void _outSetTransactionModeList(String *str, List *list);
static void _outAlterTableCmd(String *str, AlterTableCmd *node);
static void _outOptSeqList(String *str, List *options);
-static void _outFuncWithArgs(String *str, FuncWithArgs *node);
+static void _outObjectWithArgs(String *str, ObjectWithArgs *node);
static void _outFunctionParameter(String *str, FunctionParameter *node);
static void _outPrivilegeList(String *str, List *list);
static void _outFuncOptList(String *str, List *list);
@@ -359,7 +359,7 @@ _outRangeVar(String *str, RangeVar *node)
if (node->alias)
_outNode(str, node->alias);
- if (node->inhOpt == INH_YES)
+ if (node->inh)
{
string_append_char(str, " * ");
}
@@ -985,6 +985,11 @@ _outIndexStmt(String *str, IndexStmt *node)
}
static void
+_outCreateStatsStmt(String *str, CreateStatsStmt *node)
+{
+}
+
+static void
_outNotifyStmt(String *str, NotifyStmt *node)
{
string_append_char(str, "NOTIFY ");
@@ -1289,6 +1294,11 @@ _outLockingClause(String *str, LockingClause *node)
}
static void
+_outTriggerTransition(String *str, TriggerTransition *node)
+{
+}
+
+static void
_outColumnDef(String *str, ColumnDef *node)
{
string_append_char(str, "\"");
@@ -2753,7 +2763,7 @@ static void _outRenameStmt(String *str, RenameStmt *node)
case OBJECT_FUNCTION:
string_append_char(str, "FUNCTION ");
- foreach (lc, node->object)
+ foreach (lc, castNode(List, node->object))
{
Node *n = lfirst(lc);
if (IsA(n, String))
@@ -2772,7 +2782,6 @@ static void _outRenameStmt(String *str, RenameStmt *node)
}
string_append_char(str, "(");
- _outNode(str, node->objarg);
string_append_char(str, ")");
string_append_char(str, " RENAME TO \"");
string_append_char(str, node->newname);
@@ -3777,15 +3786,15 @@ _outCreateOpClassItem(String *str, CreateOpClassItem *node)
snprintf(buf, 16, "%d", node->number);
string_append_char(str, buf);
string_append_char(str, " ");
- _outOperatorName(str, node->name);
+ _outOperatorName(str, node->name->objname);
- if (node->args != NIL)
+ if (node->name->objname != NIL)
{
string_append_char(str, "(");
- _outNode(str, node->args);
+ _outNode(str, node->name->objname);
string_append_char(str, ")");
}
- /* XXX
+ /*
if (node->recheck == TRUE)
string_append_char(str, " RECHECK");
*/
@@ -3796,9 +3805,9 @@ _outCreateOpClassItem(String *str, CreateOpClassItem *node)
snprintf(buf, 16, "%d", node->number);
string_append_char(str, buf);
string_append_char(str, " ");
- _outFuncName(str, node->name);
+ _outFuncName(str, node->name->objname);
string_append_char(str, "(");
- _outNode(str, node->args);
+ _outNode(str, node->name->objname);
string_append_char(str, ")");
break;
@@ -3991,7 +4000,6 @@ _outDropStmt(String *str, DropStmt *node)
objname = linitial(node->objects);
_outNode(str, linitial(objname));
string_append_char(str, " AS ");
- objname = linitial(node->arguments);
_outNode(str, linitial(objname));
string_append_char(str, ")");
break;
@@ -4003,7 +4011,6 @@ _outDropStmt(String *str, DropStmt *node)
objname = linitial(node->objects);
_outIdList(str, objname);
string_append_char(str, " USING ");
- objname = linitial(node->arguments);
_outIdList(str, objname);
break;
@@ -4129,11 +4136,11 @@ _outFunctionParameter(String *str, FunctionParameter *node)
}
static void
-_outFuncWithArgs(String *str, FuncWithArgs *node)
+_outObjectWithArgs(String *str, ObjectWithArgs *node)
{
- _outFuncName(str, node->funcname);
+ _outFuncName(str, node->objname);
string_append_char(str, "(");
- _outNode(str, node->funcargs);
+ _outNode(str, node->objargs);
string_append_char(str, ")");
}
@@ -4405,16 +4412,18 @@ _outAlterObjectSchemaStmt(String *str, AlterObjectSchemaStmt *node)
{
string_append_char(str, "ALTER ");
+ ObjectWithArgs *owa = castNode(ObjectWithArgs, node);
+
switch (node->objectType)
{
case OBJECT_AGGREGATE:
string_append_char(str, "AGGREGATE ");
- _outFuncName(str, node->object);
+ _outFuncName(str, owa->objname);
string_append_char(str, "(");
- if (lfirst(list_head(node->objarg)) == NULL)
+ if (lfirst(list_head(owa->objargs)) == NULL)
string_append_char(str, "*");
else
- _outNode(str, lfirst(list_head(node->objarg)));
+ _outNode(str, lfirst(list_head(owa->objargs)));
string_append_char(str, ") SET SCHAME \"");
string_append_char(str, node->newschema);
string_append_char(str, "\"");
@@ -4422,7 +4431,7 @@ _outAlterObjectSchemaStmt(String *str, AlterObjectSchemaStmt *node)
case OBJECT_DOMAIN:
string_append_char(str, "DOMAIN ");
- _outFuncName(str, node->object);
+ _outFuncName(str, owa->objname);
string_append_char(str, " SET SCHEMA \"");
string_append_char(str, node->newschema);
string_append_char(str, "\"");
@@ -4430,9 +4439,8 @@ _outAlterObjectSchemaStmt(String *str, AlterObjectSchemaStmt *node)
case OBJECT_FUNCTION:
string_append_char(str, "FUNCTION ");
- _outFuncName(str, node->object);
+ _outFuncName(str, owa->objname);
string_append_char(str, "(");
- _outNode(str, node->objarg);
string_append_char(str, ") SET SCHEMA \"");
string_append_char(str, node->newschema);
string_append_char(str, "\"");
@@ -4456,7 +4464,7 @@ _outAlterObjectSchemaStmt(String *str, AlterObjectSchemaStmt *node)
case OBJECT_TYPE:
string_append_char(str, "TYPE ");
- _outFuncName(str, node->object);
+ _outFuncName(str, owa->objname);
string_append_char(str, " SET SCHEMA \"");
string_append_char(str, node->newschema);
string_append_char(str, "\"");
@@ -4472,16 +4480,18 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node)
{
string_append_char(str, "ALTER ");
+ ObjectWithArgs *owa = castNode(ObjectWithArgs, node);
+
switch (node->objectType)
{
case OBJECT_AGGREGATE:
string_append_char(str, "AGGREGATE ");
- _outFuncName(str, node->object);
+ _outFuncName(str, owa->objname);
string_append_char(str, "(");
- if (lfirst(list_head(node->objarg)) == NULL)
+ if (lfirst(list_head(owa->objargs)) == NULL)
string_append_char(str, "*");
else
- _outNode(str, lfirst(list_head(node->objarg)));
+ _outNode(str, lfirst(list_head(owa->objargs)));
string_append_char(str, ") OWNER TO \"");
_outNode(str, node->newowner);
string_append_char(str, "\"");
@@ -4489,7 +4499,7 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node)
case OBJECT_CONVERSION:
string_append_char(str, "CONVERSION \"");
- string_append_char(str, strVal(linitial(node->object)));
+ string_append_char(str, strVal(linitial(owa->objname)));
string_append_char(str, "\" OWNER TO \"");
_outNode(str, node->newowner);
string_append_char(str, "\"");
@@ -4497,7 +4507,7 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node)
case OBJECT_DATABASE:
string_append_char(str, "DATABASE \"");
- string_append_char(str, strVal(linitial(node->object)));
+ string_append_char(str, strVal(linitial(owa->objname)));
string_append_char(str, "\" OWNER TO \"");
_outNode(str, node->newowner);
string_append_char(str, "\"");
@@ -4505,7 +4515,7 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node)
case OBJECT_DOMAIN:
string_append_char(str, "DOMAIN \"");
- string_append_char(str, strVal(linitial(node->object)));
+ string_append_char(str, strVal(linitial(owa->objname)));
string_append_char(str, "\" OWNER TO \"");
_outNode(str, node->newowner);
string_append_char(str, "\"");
@@ -4513,9 +4523,9 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node)
case OBJECT_FUNCTION:
string_append_char(str, "FUNCTION ");
- _outFuncName(str, node->object);
+ _outFuncName(str, owa->objname);
string_append_char(str, "(");
- _outNode(str, node->objarg);
+ _outNode(str, owa->objargs);
string_append_char(str, ") OWNER TO \"");
_outNode(str, node->newowner);
string_append_char(str, "\"");
@@ -4523,7 +4533,7 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node)
case OBJECT_LANGUAGE:
string_append_char(str, "LANGUAGE \"");
- string_append_char(str, strVal(linitial(node->object)));
+ string_append_char(str, strVal(linitial(owa->objname)));
string_append_char(str, "\" OWNER TO \"");
_outNode(str, node->newowner);
string_append_char(str, "\"");
@@ -4531,9 +4541,8 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node)
case OBJECT_OPERATOR:
string_append_char(str, "OPERATOR ");
- _outOperatorName(str, node->object);
+ _outOperatorName(str, owa->objname);
string_append_char(str, "(");
- _outOperatorArgTypes(str, node->objarg);
string_append_char(str, ") OWNER TO \"");
_outNode(str, node->newowner);
string_append_char(str, "\"");
@@ -4541,9 +4550,9 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node)
case OBJECT_OPCLASS:
string_append_char(str, "OPERATOR CLASS ");
- _outFuncName(str, node->object);
+ _outFuncName(str, owa->objname);
string_append_char(str, " USING ");
- string_append_char(str, strVal(linitial(node->objarg)));
+ string_append_char(str, strVal(linitial(owa->objargs)));
string_append_char(str, " OWNER TO \"");
_outNode(str, node->newowner);
string_append_char(str, "\"");
@@ -4551,9 +4560,9 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node)
case OBJECT_OPFAMILY:
string_append_char(str, "OPERATOR FAMILY ");
- _outFuncName(str, node->object);
+ _outFuncName(str, owa->objname);
string_append_char(str, " USING ");
- string_append_char(str, strVal(linitial(node->objarg)));
+ string_append_char(str, strVal(linitial(owa->objargs)));
string_append_char(str, " OWNER TO \"");
_outNode(str, node->newowner);
string_append_char(str, "\"");
@@ -4561,7 +4570,7 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node)
case OBJECT_SCHEMA:
string_append_char(str, "SCHEMA \"");
- string_append_char(str, strVal(linitial(node->object)));
+ string_append_char(str, strVal(linitial(owa->objname)));
string_append_char(str, "\" OWNER TO \"");
_outNode(str, node->newowner);
string_append_char(str, "\"");
@@ -4569,7 +4578,7 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node)
case OBJECT_TYPE:
string_append_char(str, "TYPE \"");
- string_append_char(str, strVal(linitial(node->object)));
+ string_append_char(str, strVal(linitial(owa->objname)));
string_append_char(str, "\" OWNER TO \"");
_outNode(str, node->newowner);
string_append_char(str, "\"");
@@ -4577,7 +4586,7 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node)
case OBJECT_TABLESPACE:
string_append_char(str, "TABLESPACE \"");
- string_append_char(str, strVal(linitial(node->object)));
+ string_append_char(str, strVal(linitial(owa->objname)));
string_append_char(str, "\" OWNER TO \"");
_outNode(str, node->newowner);
string_append_char(str, "\"");
@@ -4585,7 +4594,7 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node)
case OBJECT_TSDICTIONARY:
string_append_char(str, "TEXT SEARCH DICTIONARY \"");
- string_append_char(str, strVal(linitial(node->object)));
+ string_append_char(str, strVal(linitial(owa->objname)));
string_append_char(str, "\" OWNER TO \"");
_outNode(str, node->newowner);
string_append_char(str, "\"");
@@ -4593,7 +4602,7 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node)
case OBJECT_TSCONFIGURATION:
string_append_char(str, "TEXT SEARCH CONFIGURATION \"");
- string_append_char(str, strVal(linitial(node->object)));
+ string_append_char(str, strVal(linitial(owa->objname)));
string_append_char(str, "\" OWNER TO \"");
_outNode(str, node->newowner);
string_append_char(str, "\"");
@@ -4601,7 +4610,7 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node)
case OBJECT_FDW:
string_append_char(str, "FOREIGN DATA WRAPPER \"");
- string_append_char(str, strVal(linitial(node->object)));
+ string_append_char(str, strVal(linitial(owa->objname)));
string_append_char(str, "\" OWNER TO \"");
_outNode(str, node->newowner);
string_append_char(str, "\"");
@@ -4609,7 +4618,7 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node)
case OBJECT_FOREIGN_SERVER:
string_append_char(str, "SERVER \"");
- string_append_char(str, strVal(linitial(node->object)));
+ string_append_char(str, strVal(linitial(owa->objname)));
string_append_char(str, "\" OWNER TO \"");
_outNode(str, node->newowner);
string_append_char(str, "\"");
@@ -4990,14 +4999,16 @@ _outCommentStmt(String *str, CommentStmt *node)
string_append_char(str, "COMMENT ON ");
+ ObjectWithArgs *owa = castNode(ObjectWithArgs, node);
+
switch (node->objtype)
{
case OBJECT_AGGREGATE:
string_append_char(str, "AGGREGATE ");
- _outFuncName(str, node->objname);
+ _outFuncName(str, owa->objname);
string_append_char(str, "(");
- t = linitial(node->objargs);
+ t = linitial(owa->objargs);
if (t)
_outNode(str, t);
else
@@ -5007,56 +5018,56 @@ _outCommentStmt(String *str, CommentStmt *node)
case OBJECT_FUNCTION:
string_append_char(str, "FUNCTION ");
- _outFuncName(str, node->objname);
+ _outFuncName(str, owa->objname);
string_append_char(str, "(");
- _outNode(str, node->objargs);
+ _outNode(str, owa->objargs);
string_append_char(str, ")");
break;
case OBJECT_OPERATOR:
string_append_char(str, "OPERATOR ");
- _outOperatorName(str, node->objname);
+ _outOperatorName(str, owa->objname);
string_append_char(str, "(");
- _outOperatorArgTypes(str, node->objargs);
+ _outOperatorArgTypes(str, owa->objargs);
string_append_char(str, ")");
break;
case OBJECT_TABCONSTRAINT:
case OBJECT_DOMCONSTRAINT:
string_append_char(str, "CONSTRAINT \"");
- v = lsecond(node->objname);
+ v = lsecond(owa->objname);
string_append_char(str, v->val.str);
string_append_char(str, "\" ON ");
- _outFuncName(str, linitial(node->objargs));
+ _outFuncName(str, linitial(owa->objargs));
break;
case OBJECT_RULE:
string_append_char(str, "RULE \"");
- v = lsecond(node->objname);
+ v = lsecond(owa->objname);
string_append_char(str, v->val.str);
string_append_char(str, "\" ON ");
- _outFuncName(str, linitial(node->objargs));
+ _outFuncName(str, linitial(owa->objargs));
break;
case OBJECT_TRIGGER:
string_append_char(str, "TRIGGER \"");
- v = lsecond(node->objname);
+ v = lsecond(owa->objname);
string_append_char(str, v->val.str);
string_append_char(str, "\" ON ");
- _outFuncName(str, linitial(node->objargs));
+ _outFuncName(str, linitial(owa->objargs));
break;
case OBJECT_OPCLASS:
string_append_char(str, "OPERATOR CLASS ");
- _outFuncName(str, node->objname);
+ _outFuncName(str, owa->objname);
string_append_char(str, " USING ");
- v = linitial(node->objargs);
+ v = linitial(owa->objargs);
string_append_char(str, v->val.str);
break;
case OBJECT_LARGEOBJECT:
string_append_char(str, "LARGE OBJECT ");
- v = linitial(node->objname);
+ v = linitial(owa->objname);
if (IsA(v, String))
string_append_char(str, v->val.str);
else if (IsA(v, Integer))
@@ -5068,15 +5079,15 @@ _outCommentStmt(String *str, CommentStmt *node)
case OBJECT_CAST:
string_append_char(str, "CAST (");
- _outNode(str, linitial(node->objname));
+ _outNode(str, linitial(owa->objname));
string_append_char(str, " AS ");
- _outNode(str, linitial(node->objargs));
+ _outNode(str, linitial(owa->objargs));
string_append_char(str, ")");
break;
case OBJECT_LANGUAGE:
string_append_char(str, "LANGUAGE ");
- _outFuncName(str, node->objname);
+ _outFuncName(str, owa->objname);
break;
default:
@@ -5112,7 +5123,7 @@ _outCommentStmt(String *str, CommentStmt *node)
default:
break;
}
- _outFuncName(str, node->objname);
+ _outFuncName(str, owa->objname);
break;
}
@@ -5173,6 +5184,16 @@ _outRangeTableSample(String *str, RangeTableSample *node)
}
static void
+_outRangeTableFunc(String *str, RangeTableFunc *node)
+{
+}
+
+static void
+_outRangeTableFuncCol(String *str, RangeTableFuncCol *node)
+{
+}
+
+static void
_outDiscardStmt(String *str, DiscardStmt *node)
{
switch (node->target)
@@ -5445,6 +5466,25 @@ _outOnConflictClause(String *str, OnConflictClause *node)
}
}
+static void
+_outPartitionElem(String *str, PartitionElem *node)
+{
+}
+
+static void
+_outPartitionSpec(String *str, PartitionSpec *node)
+{
+}
+
+static void
+_outPartitionBoundSpec(String *str, PartitionBoundSpec *node)
+{
+}
+
+static void
+_outPartitionRangeDatum(String *str, PartitionRangeDatum *node)
+{
+}
/*
* _outNode -
@@ -5586,6 +5626,11 @@ _outNode(String *str, void *obj)
case T_MinMaxExpr:
_outMinMaxExpr(str, obj);
break;
+ /*
+ case T_SQLValueFunction:
+ _outSQLValueFunction(str, obj);
+ */
+ break;
case T_XmlExpr:
_outXmlExpr(str, obj);
break;
@@ -5607,6 +5652,11 @@ _outNode(String *str, void *obj)
case T_CurrentOfExpr:
_outCurrentOfExpr(str, obj);
break;
+ /*
+ case T_NextValueExpr:
+ _outNextValueExpr(str, obj);
+ break;
+ */
case T_InferenceElem:
_outInferenceElem(str, obj);
break;
@@ -5645,6 +5695,9 @@ _outNode(String *str, void *obj)
case T_IndexStmt:
_outIndexStmt(str, obj);
break;
+ case T_CreateStatsStmt:
+ _outCreateStatsStmt(str, obj);
+ break;
case T_NotifyStmt:
_outNotifyStmt(str, obj);
break;
@@ -5755,6 +5808,12 @@ _outNode(String *str, void *obj)
case T_RangeTableSample:
_outRangeTableSample(str, obj);
break;
+ case T_RangeTableFunc:
+ _outRangeTableFunc(str, obj);
+ break;
+ case T_RangeTableFuncCol:
+ _outRangeTableFuncCol(str, obj);
+ break;
case T_Constraint:
_outConstraint(str, obj);
break;
@@ -5775,6 +5834,21 @@ _outNode(String *str, void *obj)
case T_XmlSerialize:
_outXmlSerialize(str, obj);
break;
+ case T_TriggerTransition:
+ _outTriggerTransition(str, obj);
+ break;
+ case T_PartitionElem:
+ _outPartitionElem(str, obj);
+ break;
+ case T_PartitionSpec:
+ _outPartitionSpec(str, obj);
+ break;
+ case T_PartitionBoundSpec:
+ _outPartitionBoundSpec(str, obj);
+ break;
+ case T_PartitionRangeDatum:
+ _outPartitionRangeDatum(str, obj);
+ break;
case T_InsertStmt:
_outInsertStmt(str, obj);
@@ -5932,8 +6006,8 @@ _outNode(String *str, void *obj)
_outGrantStmt(str, obj);
break;
- case T_FuncWithArgs:
- _outFuncWithArgs(str, obj);
+ case T_ObjectWithArgs:
+ _outObjectWithArgs(str, obj);
break;
case T_FunctionParameter:
@@ -6082,3 +6156,4 @@ nodeToString(const void *obj)
return p;
}
+