deparse: Handle default security provider.
authorPetr Jelinek <pjmodos@pjmodos.net>
Sat, 20 Dec 2014 07:56:54 +0000 (08:56 +0100)
committerPetr Jelinek <pjmodos@pjmodos.net>
Sat, 20 Dec 2014 07:56:54 +0000 (08:56 +0100)
src/backend/commands/seclabel.c
src/backend/tcop/deparse_utility.c

index cff7bcbd9b0169d6fc158d9af5bda17f43d203b1..3c888116a58fbe99d1eaa93d7eeeaa9afbd890c1 100644 (file)
@@ -61,6 +61,11 @@ ExecSecLabelStmt(SecLabelStmt *stmt)
                    (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                     errmsg("must specify provider when multiple security label providers have been loaded")));
        provider = (LabelProvider *) linitial(label_provider_list);
+       /*
+        * Set the provider in the statement so that DDL deparse can use
+        * provider explicitly in generated statement.
+        */
+       stmt->provider = (char *) provider->provider_name;
    }
    else
    {
index d67ffd5073dc592be576fd2f2f1c15fcb49ac5dd..f7c0e21ef83f4db5138e17243a69037c8bc4c18b 100644 (file)
@@ -3840,6 +3840,8 @@ deparse_SecLabelStmt(Oid objectId, Oid objectSubId, Node *parsetree)
    ObjectAddress addr;
    char       *fmt;
 
+   Assert(node->provider);
+
    if (node->label)
    {
        fmt = psprintf("SECURITY LABEL FOR %%{provider}s ON %s %%{identity}s IS %%{label}L",