Fix collation of JSON_TABLE output columns
authorPeter Eisentraut <peter@eisentraut.org>
Fri, 10 Jun 2022 04:05:08 +0000 (06:05 +0200)
committerPeter Eisentraut <peter@eisentraut.org>
Fri, 10 Jun 2022 04:05:08 +0000 (06:05 +0200)
The output columns of JSON_TABLE should have the collations of their
data type.  The existing implementation sets the default collation if
the type is collatable.

Reviewed-by: Andrew Dunstan <andrew@dunslane.net>
Discussion: https://www.postgresql.org/message-id/flat/9d75ce67-0121-5050-5bec-bf5009db55ce%40enterprisedb.com

src/backend/parser/parse_jsontable.c

index dbd3e66205d6569fc486075f28d49d9dbdb25667..ae559d9cae566bb33184538a4ba9a76976746599 100644 (file)
@@ -514,10 +514,7 @@ appendJsonTableColumns(JsonTableContext *cxt, List *columns)
 
                tf->coltypes = lappend_oid(tf->coltypes, typid);
                tf->coltypmods = lappend_int(tf->coltypmods, typmod);
-               tf->colcollations = lappend_oid(tf->colcollations,
-                                                                               type_is_collatable(typid)
-                                                                               ? DEFAULT_COLLATION_OID
-                                                                               : InvalidOid);
+               tf->colcollations = lappend_oid(tf->colcollations, get_typcollation(typid));
                tf->colvalexprs = lappend(tf->colvalexprs, colexpr);
        }
 }