deparse: support COMMENT ON
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Thu, 25 Sep 2014 18:45:04 +0000 (15:45 -0300)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Mon, 13 Oct 2014 03:19:49 +0000 (00:19 -0300)
src/backend/tcop/deparse_utility.c

index bb08a5d79bea17b2b57072c8657536a9c17e3b4f..8e3ab33db63f0aad5768412410a260892bd4d272 100644 (file)
@@ -3780,6 +3780,38 @@ deparse_AlterOwnerStmt(Oid objectId, Node *parsetree)
    return ownerStmt;
 }
 
+static ObjTree *
+deparse_CommentStmt(Oid objectId, Oid objectSubId, Node *parsetree)
+{
+   CommentStmt *node = (CommentStmt *) parsetree;
+   ObjTree    *comment;
+   ObjectAddress addr;
+   char       *fmt;
+
+   if (node->comment)
+   {
+       fmt = psprintf("COMMENT ON %s %%{identity}s IS %%{comment}L",
+                      stringify_objtype(node->objtype));
+       comment = new_objtree_VA(fmt, 0);
+       append_string_object(comment, "comment", node->comment);
+   }
+   else
+   {
+       fmt = psprintf("COMMENT ON %s %%{identity}s IS NULL",
+                      stringify_objtype(node->objtype));
+       comment = new_objtree_VA(fmt, 0);
+   }
+
+   addr.classId = get_objtype_catalog_oid(node->objtype);
+   addr.objectId = objectId;
+   addr.objectSubId = objectSubId;
+
+   append_string_object(comment, "identity",
+                        getObjectIdentity(&addr));
+
+   return comment;
+}
+
 static ObjTree *
 deparse_CreateConversion(Oid objectId, Node *parsetree)
 {
@@ -4641,7 +4673,8 @@ deparse_simple_command(StashedCommand *cmd)
            break;
 
        case T_CommentStmt:
-           command = NULL;
+           command = deparse_CommentStmt(objectId, cmd->d.simple.objectSubId,
+                                         parsetree);
            break;
 
        case T_GrantStmt: