deparse/core: enable deparse of function defaults expr
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Tue, 15 Apr 2014 19:44:23 +0000 (16:44 -0300)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Wed, 18 Jun 2014 15:15:34 +0000 (11:15 -0400)
src/backend/utils/adt/ruleutils.c
src/include/utils/ruleutils.h

index 522ccf4f25fb09c23d8648abbcf8db295bbc87c4..ac007ee3816d6175bbfc1a921e4329340d57e5b7 100644 (file)
@@ -9580,3 +9580,28 @@ RelationGetColumnDefault(Relation rel, AttrNumber attno, List *dpcontext)
 
    return defstr;
 }
+
+/*
+ * Return the defaults values of arguments to a function, as a list of
+ * deparsed expressions.
+ */
+List *
+FunctionGetDefaults(text *proargdefaults)
+{
+   List   *nodedefs;
+   List   *strdefs = NIL;
+   ListCell *cell;
+
+   nodedefs = (List *) stringToNode(TextDatumGetCString(proargdefaults));
+   if (!IsA(nodedefs, List))
+       elog(ERROR, "proargdefaults is not a list");
+
+   foreach(cell, nodedefs)
+   {
+       Node   *onedef = lfirst(cell);
+
+       strdefs = lappend(strdefs, deparse_expression_pretty(onedef, NIL, false, false, 0, 0));
+   }
+
+   return strdefs;
+}
index 657069d3ae451e8bb6a1effae6c2b1044eaabb03..56489386fd09dc21185d480cf3928fedbc09c5cc 100644 (file)
@@ -43,6 +43,7 @@ extern List *deparse_context_for_planstate(Node *planstate, List *ancestors,
 extern List *select_rtable_names_for_explain(List *rtable,
                                Bitmapset *rels_used);
 extern char *generate_collation_name(Oid collid);
+extern List *FunctionGetDefaults(text *proargdefaults);
 
 extern char *RelationGetColumnDefault(Relation rel, AttrNumber attno,
                         List *dpcontext);