aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/catalog/sql_features.txt4
-rw-r--r--src/backend/parser/gram.y15
2 files changed, 12 insertions, 7 deletions
diff --git a/src/backend/catalog/sql_features.txt b/src/backend/catalog/sql_features.txt
index aeb262a5b0e..bade0fe9aeb 100644
--- a/src/backend/catalog/sql_features.txt
+++ b/src/backend/catalog/sql_features.txt
@@ -635,8 +635,8 @@ X204 XMLQuery: initializing an XQuery variable NO
X205 XMLQuery: EMPTY ON EMPTY option NO
X206 XMLQuery: NULL ON EMPTY option NO
X211 XML 1.1 support NO
-X221 XML passing mechanism BY VALUE NO
-X222 XML passing mechanism BY REF YES
+X221 XML passing mechanism BY VALUE YES
+X222 XML passing mechanism BY REF NO parser accepts BY REF but ignores it; passing is always BY VALUE
X231 XML(CONTENT(UNTYPED)) type NO
X232 XML(CONTENT(ANY)) type NO
X241 RETURNING CONTENT in XML publishing NO
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 753af6073f3..e23e68fdb33 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -13951,20 +13951,25 @@ xmlexists_argument:
{
$$ = $2;
}
- | PASSING c_expr BY REF
+ | PASSING c_expr xml_passing_mech
{
$$ = $2;
}
- | PASSING BY REF c_expr
+ | PASSING xml_passing_mech c_expr
{
- $$ = $4;
+ $$ = $3;
}
- | PASSING BY REF c_expr BY REF
+ | PASSING xml_passing_mech c_expr xml_passing_mech
{
- $$ = $4;
+ $$ = $3;
}
;
+xml_passing_mech:
+ BY REF
+ | BY VALUE_P
+ ;
+
/*
* Aggregate decoration clauses