diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c
index 98dcc04122b..9b5e2e17b18 100644
--- a/src/backend/utils/adt/xml.c
+++ b/src/backend/utils/adt/xml.c
@@ -3855,7 +3855,9 @@ xml_xmlnodetoxmltype(xmlNodePtr cur, PgXmlErrorContext *xmlerrcxt)
{
xmltype *result = NULL;
- if (cur->type != XML_ATTRIBUTE_NODE && cur->type != XML_TEXT_NODE)
+ if (cur->type != XML_ATTRIBUTE_NODE &&
+ cur->type != XML_TEXT_NODE &&
+ cur->type != XML_NAMESPACE_DECL)
{
void (*volatile nodefree) (xmlNodePtr) = NULL;
volatile xmlBufferPtr buf = NULL;
diff --git a/src/test/regress/expected/xml.out b/src/test/regress/expected/xml.out
index f9b7ec0bab8..5924deff665 100644
--- a/src/test/regress/expected/xml.out
+++ b/src/test/regress/expected/xml.out
@@ -710,6 +710,12 @@ SELECT xpath('root', '');
{}
(1 row)
+SELECT xpath('//namespace::foo', '');
+ xpath
+--------------------
+ {http://127.0.0.1}
+(1 row)
+
-- Round-trip non-ASCII data through xpath().
DO $$
DECLARE
diff --git a/src/test/regress/expected/xml_1.out b/src/test/regress/expected/xml_1.out
index fcf5d0f4aa2..d22a6f82153 100644
--- a/src/test/regress/expected/xml_1.out
+++ b/src/test/regress/expected/xml_1.out
@@ -624,6 +624,12 @@ LINE 1: SELECT xpath('root', '');
^
DETAIL: This functionality requires the server to be built with libxml support.
HINT: You need to rebuild PostgreSQL using --with-libxml.
+SELECT xpath('//namespace::foo', '');
+ERROR: unsupported XML feature
+LINE 1: SELECT xpath('//namespace::foo', '');
-- Round-trip non-ASCII data through xpath().
DO $$