Skip to content

Commit 16143d6

Browse files
committed
Dump the COLLATABLE attribute in CREATE TYPE
This was previously omitted by accident.
1 parent 09b49a8 commit 16143d6

File tree

1 file changed

+34
-1
lines changed

1 file changed

+34
-1
lines changed

src/bin/pg_dump/pg_dump.c

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7305,14 +7305,35 @@ dumpBaseType(Archive *fout, TypeInfo *tyinfo)
73057305
char *typbyval;
73067306
char *typalign;
73077307
char *typstorage;
7308+
char *typcollatable;
73087309
char *typdefault;
73097310
bool typdefault_is_literal = false;
73107311

73117312
/* Set proper schema search path so regproc references list correctly */
73127313
selectSourceSchema(tyinfo->dobj.namespace->dobj.name);
73137314

73147315
/* Fetch type-specific details */
7315-
if (fout->remoteVersion >= 80400)
7316+
if (fout->remoteVersion >= 90100)
7317+
{
7318+
appendPQExpBuffer(query, "SELECT typlen, "
7319+
"typinput, typoutput, typreceive, typsend, "
7320+
"typmodin, typmodout, typanalyze, "
7321+
"typinput::pg_catalog.oid AS typinputoid, "
7322+
"typoutput::pg_catalog.oid AS typoutputoid, "
7323+
"typreceive::pg_catalog.oid AS typreceiveoid, "
7324+
"typsend::pg_catalog.oid AS typsendoid, "
7325+
"typmodin::pg_catalog.oid AS typmodinoid, "
7326+
"typmodout::pg_catalog.oid AS typmodoutoid, "
7327+
"typanalyze::pg_catalog.oid AS typanalyzeoid, "
7328+
"typcategory, typispreferred, "
7329+
"typdelim, typbyval, typalign, typstorage, "
7330+
"(typcollation = (SELECT oid FROM pg_catalog.pg_collation WHERE collname = 'default')) AS typcollatable, "
7331+
"pg_catalog.pg_get_expr(typdefaultbin, 0) AS typdefaultbin, typdefault "
7332+
"FROM pg_catalog.pg_type "
7333+
"WHERE oid = '%u'::pg_catalog.oid",
7334+
tyinfo->dobj.catId.oid);
7335+
}
7336+
else if (fout->remoteVersion >= 80400)
73167337
{
73177338
appendPQExpBuffer(query, "SELECT typlen, "
73187339
"typinput, typoutput, typreceive, typsend, "
@@ -7326,6 +7347,7 @@ dumpBaseType(Archive *fout, TypeInfo *tyinfo)
73267347
"typanalyze::pg_catalog.oid AS typanalyzeoid, "
73277348
"typcategory, typispreferred, "
73287349
"typdelim, typbyval, typalign, typstorage, "
7350+
"false AS typcollatable, "
73297351
"pg_catalog.pg_get_expr(typdefaultbin, 0) AS typdefaultbin, typdefault "
73307352
"FROM pg_catalog.pg_type "
73317353
"WHERE oid = '%u'::pg_catalog.oid",
@@ -7346,6 +7368,7 @@ dumpBaseType(Archive *fout, TypeInfo *tyinfo)
73467368
"typanalyze::pg_catalog.oid AS typanalyzeoid, "
73477369
"'U' AS typcategory, false AS typispreferred, "
73487370
"typdelim, typbyval, typalign, typstorage, "
7371+
"false AS typcollatable, "
73497372
"pg_catalog.pg_get_expr(typdefaultbin, 'pg_catalog.pg_type'::pg_catalog.regclass) AS typdefaultbin, typdefault "
73507373
"FROM pg_catalog.pg_type "
73517374
"WHERE oid = '%u'::pg_catalog.oid",
@@ -7365,6 +7388,7 @@ dumpBaseType(Archive *fout, TypeInfo *tyinfo)
73657388
"typanalyze::pg_catalog.oid AS typanalyzeoid, "
73667389
"'U' AS typcategory, false AS typispreferred, "
73677390
"typdelim, typbyval, typalign, typstorage, "
7391+
"false AS typcollatable, "
73687392
"pg_catalog.pg_get_expr(typdefaultbin, 'pg_catalog.pg_type'::pg_catalog.regclass) AS typdefaultbin, typdefault "
73697393
"FROM pg_catalog.pg_type "
73707394
"WHERE oid = '%u'::pg_catalog.oid",
@@ -7384,6 +7408,7 @@ dumpBaseType(Archive *fout, TypeInfo *tyinfo)
73847408
"0 AS typanalyzeoid, "
73857409
"'U' AS typcategory, false AS typispreferred, "
73867410
"typdelim, typbyval, typalign, typstorage, "
7411+
"false AS typcollatable, "
73877412
"pg_catalog.pg_get_expr(typdefaultbin, 'pg_catalog.pg_type'::pg_catalog.regclass) AS typdefaultbin, typdefault "
73887413
"FROM pg_catalog.pg_type "
73897414
"WHERE oid = '%u'::pg_catalog.oid",
@@ -7403,6 +7428,7 @@ dumpBaseType(Archive *fout, TypeInfo *tyinfo)
74037428
"0 AS typanalyzeoid, "
74047429
"'U' AS typcategory, false AS typispreferred, "
74057430
"typdelim, typbyval, typalign, typstorage, "
7431+
"false AS typcollatable, "
74067432
"pg_catalog.pg_get_expr(typdefaultbin, 'pg_catalog.pg_type'::pg_catalog.regclass) AS typdefaultbin, typdefault "
74077433
"FROM pg_catalog.pg_type "
74087434
"WHERE oid = '%u'::pg_catalog.oid",
@@ -7426,6 +7452,7 @@ dumpBaseType(Archive *fout, TypeInfo *tyinfo)
74267452
"0 AS typanalyzeoid, "
74277453
"'U' AS typcategory, false AS typispreferred, "
74287454
"typdelim, typbyval, typalign, typstorage, "
7455+
"false AS typcollatable, "
74297456
"NULL AS typdefaultbin, typdefault "
74307457
"FROM pg_type "
74317458
"WHERE oid = '%u'::oid",
@@ -7449,6 +7476,7 @@ dumpBaseType(Archive *fout, TypeInfo *tyinfo)
74497476
"0 AS typanalyzeoid, "
74507477
"'U' AS typcategory, false AS typispreferred, "
74517478
"typdelim, typbyval, typalign, typstorage, "
7479+
"false AS typcollatable, "
74527480
"NULL AS typdefaultbin, NULL AS typdefault "
74537481
"FROM pg_type "
74547482
"WHERE oid = '%u'::oid",
@@ -7469,6 +7497,7 @@ dumpBaseType(Archive *fout, TypeInfo *tyinfo)
74697497
"'U' AS typcategory, false AS typispreferred, "
74707498
"typdelim, typbyval, typalign, "
74717499
"'p'::char AS typstorage, "
7500+
"false AS typcollatable, "
74727501
"NULL AS typdefaultbin, NULL AS typdefault "
74737502
"FROM pg_type "
74747503
"WHERE oid = '%u'::oid",
@@ -7510,6 +7539,7 @@ dumpBaseType(Archive *fout, TypeInfo *tyinfo)
75107539
typbyval = PQgetvalue(res, 0, PQfnumber(res, "typbyval"));
75117540
typalign = PQgetvalue(res, 0, PQfnumber(res, "typalign"));
75127541
typstorage = PQgetvalue(res, 0, PQfnumber(res, "typstorage"));
7542+
typcollatable = PQgetvalue(res, 0, PQfnumber(res, "typcollatable"));
75137543
if (!PQgetisnull(res, 0, PQfnumber(res, "typdefaultbin")))
75147544
typdefault = PQgetvalue(res, 0, PQfnumber(res, "typdefaultbin"));
75157545
else if (!PQgetisnull(res, 0, PQfnumber(res, "typdefault")))
@@ -7566,6 +7596,9 @@ dumpBaseType(Archive *fout, TypeInfo *tyinfo)
75667596
/* receive/send/typmodin/typmodout/analyze need not be printed */
75677597
}
75687598

7599+
if (strcmp(typcollatable, "t") == 0)
7600+
appendPQExpBuffer(q, ",\n COLLATABLE = true");
7601+
75697602
if (typdefault != NULL)
75707603
{
75717604
appendPQExpBuffer(q, ",\n DEFAULT = ");

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy