Fix collation of JSON_TABLE output columns
authorPeter Eisentraut <[email protected]>
Fri, 10 Jun 2022 04:05:08 +0000 (06:05 +0200)
committerPeter Eisentraut <[email protected]>
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 <[email protected]>
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);
    }
 }