From 0626235c3e281de5a86a3e45f1acc8bc55a437b1 Mon Sep 17 00:00:00 2001
From: Petr Jelinek <pjmodos@pjmodos.net>
Date: Sat, 20 Dec 2014 08:56:54 +0100
Subject: [PATCH 38/44] deparse: Handle default security provider.

---
 src/backend/commands/seclabel.c    | 5 +++++
 src/backend/tcop/deparse_utility.c | 2 ++
 2 files changed, 7 insertions(+)

diff --git a/src/backend/commands/seclabel.c b/src/backend/commands/seclabel.c
index 6e15bc8..d74d857 100644
--- a/src/backend/commands/seclabel.c
+++ b/src/backend/commands/seclabel.c
@@ -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
 	{
diff --git a/src/backend/tcop/deparse_utility.c b/src/backend/tcop/deparse_utility.c
index 18fdd10..d31cb5b 100644
--- a/src/backend/tcop/deparse_utility.c
+++ b/src/backend/tcop/deparse_utility.c
@@ -4581,6 +4581,8 @@ deparse_SecLabelStmt(ObjectAddress address, Node *parsetree)
 	ObjTree	   *label;
 	char	   *fmt;
 
+	Assert(node->provider);
+
 	if (node->label)
 	{
 		fmt = psprintf("SECURITY LABEL FOR %%{provider}s ON %s %%{identity}s IS %%{label}L",
-- 
2.1.4

