diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c index 16d15f9efb9..b9358687164 100644 --- a/src/backend/utils/adt/ruleutils.c +++ b/src/backend/utils/adt/ruleutils.c @@ -11814,7 +11814,8 @@ get_xmltable(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 fb5f345855c..2e9616acda1 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 ef7dc03c691..7505a140775 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 4a9cdd2afe4..c07ed2b269c 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 f752ecb1421..bac0388ac11 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'