@@ -10810,79 +10810,47 @@ dumpBaseType(Archive *fout, TypeInfo *tyinfo)
10810
10810
bool typdefault_is_literal = false;
10811
10811
10812
10812
/* Fetch type-specific details */
10813
+ appendPQExpBufferStr(query, "SELECT typlen, "
10814
+ "typinput, typoutput, typreceive, typsend, "
10815
+ "typreceive::pg_catalog.oid AS typreceiveoid, "
10816
+ "typsend::pg_catalog.oid AS typsendoid, "
10817
+ "typanalyze, "
10818
+ "typanalyze::pg_catalog.oid AS typanalyzeoid, "
10819
+ "typdelim, typbyval, typalign, typstorage, ");
10820
+
10821
+ if (fout->remoteVersion >= 80300)
10822
+ appendPQExpBufferStr(query,
10823
+ "typmodin, typmodout, "
10824
+ "typmodin::pg_catalog.oid AS typmodinoid, "
10825
+ "typmodout::pg_catalog.oid AS typmodoutoid, ");
10826
+ else
10827
+ appendPQExpBufferStr(query,
10828
+ "'-' AS typmodin, '-' AS typmodout, "
10829
+ "0 AS typmodinoid, 0 AS typmodoutoid, ");
10830
+
10831
+ if (fout->remoteVersion >= 80400)
10832
+ appendPQExpBufferStr(query,
10833
+ "typcategory, typispreferred, ");
10834
+ else
10835
+ appendPQExpBufferStr(query,
10836
+ "'U' AS typcategory, false AS typispreferred, ");
10837
+
10813
10838
if (fout->remoteVersion >= 90100)
10814
- {
10815
- appendPQExpBuffer(query, "SELECT typlen, "
10816
- "typinput, typoutput, typreceive, typsend, "
10817
- "typmodin, typmodout, typanalyze, "
10818
- "typreceive::pg_catalog.oid AS typreceiveoid, "
10819
- "typsend::pg_catalog.oid AS typsendoid, "
10820
- "typmodin::pg_catalog.oid AS typmodinoid, "
10821
- "typmodout::pg_catalog.oid AS typmodoutoid, "
10822
- "typanalyze::pg_catalog.oid AS typanalyzeoid, "
10823
- "typcategory, typispreferred, "
10824
- "typdelim, typbyval, typalign, typstorage, "
10825
- "(typcollation <> 0) AS typcollatable, "
10826
- "pg_catalog.pg_get_expr(typdefaultbin, 0) AS typdefaultbin, typdefault "
10827
- "FROM pg_catalog.pg_type "
10828
- "WHERE oid = '%u'::pg_catalog.oid",
10829
- tyinfo->dobj.catId.oid);
10830
- }
10831
- else if (fout->remoteVersion >= 80400)
10832
- {
10833
- appendPQExpBuffer(query, "SELECT typlen, "
10834
- "typinput, typoutput, typreceive, typsend, "
10835
- "typmodin, typmodout, typanalyze, "
10836
- "typreceive::pg_catalog.oid AS typreceiveoid, "
10837
- "typsend::pg_catalog.oid AS typsendoid, "
10838
- "typmodin::pg_catalog.oid AS typmodinoid, "
10839
- "typmodout::pg_catalog.oid AS typmodoutoid, "
10840
- "typanalyze::pg_catalog.oid AS typanalyzeoid, "
10841
- "typcategory, typispreferred, "
10842
- "typdelim, typbyval, typalign, typstorage, "
10843
- "false AS typcollatable, "
10844
- "pg_catalog.pg_get_expr(typdefaultbin, 0) AS typdefaultbin, typdefault "
10845
- "FROM pg_catalog.pg_type "
10846
- "WHERE oid = '%u'::pg_catalog.oid",
10847
- tyinfo->dobj.catId.oid);
10848
- }
10849
- else if (fout->remoteVersion >= 80300)
10850
- {
10851
- /* Before 8.4, pg_get_expr does not allow 0 for its second arg */
10852
- appendPQExpBuffer(query, "SELECT typlen, "
10853
- "typinput, typoutput, typreceive, typsend, "
10854
- "typmodin, typmodout, typanalyze, "
10855
- "typreceive::pg_catalog.oid AS typreceiveoid, "
10856
- "typsend::pg_catalog.oid AS typsendoid, "
10857
- "typmodin::pg_catalog.oid AS typmodinoid, "
10858
- "typmodout::pg_catalog.oid AS typmodoutoid, "
10859
- "typanalyze::pg_catalog.oid AS typanalyzeoid, "
10860
- "'U' AS typcategory, false AS typispreferred, "
10861
- "typdelim, typbyval, typalign, typstorage, "
10862
- "false AS typcollatable, "
10863
- "pg_catalog.pg_get_expr(typdefaultbin, 'pg_catalog.pg_type'::pg_catalog.regclass) AS typdefaultbin, typdefault "
10864
- "FROM pg_catalog.pg_type "
10865
- "WHERE oid = '%u'::pg_catalog.oid",
10866
- tyinfo->dobj.catId.oid);
10867
- }
10839
+ appendPQExpBufferStr(query, "(typcollation <> 0) AS typcollatable, ");
10868
10840
else
10869
- {
10870
- appendPQExpBuffer(query, "SELECT typlen, "
10871
- "typinput, typoutput, typreceive, typsend, "
10872
- "'-' AS typmodin, '-' AS typmodout, "
10873
- "typanalyze, "
10874
- "typreceive::pg_catalog.oid AS typreceiveoid, "
10875
- "typsend::pg_catalog.oid AS typsendoid, "
10876
- "0 AS typmodinoid, 0 AS typmodoutoid, "
10877
- "typanalyze::pg_catalog.oid AS typanalyzeoid, "
10878
- "'U' AS typcategory, false AS typispreferred, "
10879
- "typdelim, typbyval, typalign, typstorage, "
10880
- "false AS typcollatable, "
10881
- "pg_catalog.pg_get_expr(typdefaultbin, 'pg_catalog.pg_type'::pg_catalog.regclass) AS typdefaultbin, typdefault "
10882
- "FROM pg_catalog.pg_type "
10883
- "WHERE oid = '%u'::pg_catalog.oid",
10884
- tyinfo->dobj.catId.oid);
10885
- }
10841
+ appendPQExpBufferStr(query, "false AS typcollatable, ");
10842
+
10843
+ /* Before 8.4, pg_get_expr does not allow 0 for its second arg */
10844
+ if (fout->remoteVersion >= 80400)
10845
+ appendPQExpBufferStr(query,
10846
+ "pg_catalog.pg_get_expr(typdefaultbin, 0) AS typdefaultbin, typdefault ");
10847
+ else
10848
+ appendPQExpBufferStr(query,
10849
+ "pg_catalog.pg_get_expr(typdefaultbin, 'pg_catalog.pg_type'::pg_catalog.regclass) AS typdefaultbin, typdefault ");
10850
+
10851
+ appendPQExpBuffer(query, "FROM pg_catalog.pg_type "
10852
+ "WHERE oid = '%u'::pg_catalog.oid",
10853
+ tyinfo->dobj.catId.oid);
10886
10854
10887
10855
res = ExecuteSqlQueryForSingleRow(fout, query->data);
10888
10856
0 commit comments