diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c
index 615ed1f410e..d9a61be8109 100644
--- a/src/backend/utils/adt/ruleutils.c
+++ b/src/backend/utils/adt/ruleutils.c
@@ -11181,7 +11181,8 @@ get_tablefunc(TableFunc *tf, deparse_context *context, bool showimplicit)
if (ns_node != NULL)
{
get_rule_expr(expr, context, showimplicit);
- appendStringInfo(buf, " AS %s", strVal(ns_node));
+ appendStringInfo(buf, " AS %s",
+ quote_identifier(strVal(ns_node)));
}
else
{
diff --git a/src/test/regress/expected/xml.out b/src/test/regress/expected/xml.out
index 894ee6bd2b7..fba881f10be 100644
--- a/src/test/regress/expected/xml.out
+++ b/src/test/regress/expected/xml.out
@@ -1379,16 +1379,20 @@ SELECT * FROM XMLTABLE(XMLNAMESPACES('http://x.y' AS zz),
10
(1 row)
-CREATE VIEW xmltableview2 AS SELECT * FROM XMLTABLE(XMLNAMESPACES('http://x.y' AS zz),
- '/zz:rows/zz:row'
+CREATE VIEW xmltableview2 AS SELECT * FROM XMLTABLE(XMLNAMESPACES('http://x.y' AS "Zz"),
+ '/Zz:rows/Zz:row'
PASSING '10
'
- COLUMNS a int PATH 'zz:a');
+ COLUMNS a int PATH 'Zz:a');
SELECT * FROM xmltableview2;
a
----
10
(1 row)
+\sv xmltableview2
+CREATE OR REPLACE VIEW public.xmltableview2 AS
+ SELECT a
+ FROM XMLTABLE(XMLNAMESPACES ('http://x.y'::text AS "Zz"), ('/Zz:rows/Zz:row'::text) PASSING ('10
'::xml) COLUMNS a integer PATH ('Zz:a'::text))
SELECT * FROM XMLTABLE(XMLNAMESPACES(DEFAULT 'http://x.y'),
'/rows/row'
PASSING '10
'
diff --git a/src/test/regress/expected/xml_1.out b/src/test/regress/expected/xml_1.out
index 7e9611f1d38..2aa7ed73c23 100644
--- a/src/test/regress/expected/xml_1.out
+++ b/src/test/regress/expected/xml_1.out
@@ -1046,10 +1046,10 @@ ERROR: unsupported XML feature
LINE 3: PASSING '10
'
- COLUMNS a int PATH 'zz:a');
+ COLUMNS a int PATH 'Zz:a');
ERROR: unsupported XML feature
LINE 3: PASSING '10
'
diff --git a/src/test/regress/expected/xml_2.out b/src/test/regress/expected/xml_2.out
index 7d5c961e240..25ac0c1b909 100644
--- a/src/test/regress/expected/xml_2.out
+++ b/src/test/regress/expected/xml_2.out
@@ -1365,16 +1365,20 @@ SELECT * FROM XMLTABLE(XMLNAMESPACES('http://x.y' AS zz),
10
(1 row)
-CREATE VIEW xmltableview2 AS SELECT * FROM XMLTABLE(XMLNAMESPACES('http://x.y' AS zz),
- '/zz:rows/zz:row'
+CREATE VIEW xmltableview2 AS SELECT * FROM XMLTABLE(XMLNAMESPACES('http://x.y' AS "Zz"),
+ '/Zz:rows/Zz:row'
PASSING '10
'
- COLUMNS a int PATH 'zz:a');
+ COLUMNS a int PATH 'Zz:a');
SELECT * FROM xmltableview2;
a
----
10
(1 row)
+\sv xmltableview2
+CREATE OR REPLACE VIEW public.xmltableview2 AS
+ SELECT a
+ FROM XMLTABLE(XMLNAMESPACES ('http://x.y'::text AS "Zz"), ('/Zz:rows/Zz:row'::text) PASSING ('10
'::xml) COLUMNS a integer PATH ('Zz:a'::text))
SELECT * FROM XMLTABLE(XMLNAMESPACES(DEFAULT 'http://x.y'),
'/rows/row'
PASSING '10
'
diff --git a/src/test/regress/sql/xml.sql b/src/test/regress/sql/xml.sql
index 0b07075414e..7f891ac982a 100644
--- a/src/test/regress/sql/xml.sql
+++ b/src/test/regress/sql/xml.sql
@@ -439,13 +439,15 @@ SELECT * FROM XMLTABLE(XMLNAMESPACES('http://x.y' AS zz),
PASSING '10
'
COLUMNS a int PATH 'zz:a');
-CREATE VIEW xmltableview2 AS SELECT * FROM XMLTABLE(XMLNAMESPACES('http://x.y' AS zz),
- '/zz:rows/zz:row'
+CREATE VIEW xmltableview2 AS SELECT * FROM XMLTABLE(XMLNAMESPACES('http://x.y' AS "Zz"),
+ '/Zz:rows/Zz:row'
PASSING '10
'
- COLUMNS a int PATH 'zz:a');
+ COLUMNS a int PATH 'Zz:a');
SELECT * FROM xmltableview2;
+\sv xmltableview2
+
SELECT * FROM XMLTABLE(XMLNAMESPACES(DEFAULT 'http://x.y'),
'/rows/row'
PASSING '10
'