]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
Added regtype spelling of data types to oid table
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Sat, 28 Mar 2020 15:31:31 +0000 (04:31 +1300)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Sat, 28 Mar 2020 15:39:41 +0000 (04:39 +1300)
psycopg3/types/oids.py

index b6d006e3771d4625b1ab4eec937a42ba62730f1e..3f1e9fa54f9b5c9f19168624788fc8a763807279 100644 (file)
@@ -7,103 +7,111 @@ to a Postgres server.
 
 # Copyright (C) 2020 The Psycopg Team
 
+# typname, oid, array oid, regtype
 _oids_table = [
     # autogenerated start
     # Generated from PostgreSQL 11
-    ("abstime", 702, 1023),
-    ("aclitem", 1033, 1034),
-    ("any", 2276, 0),
-    ("anyarray", 2277, 0),
-    ("anyelement", 2283, 0),
-    ("anyenum", 3500, 0),
-    ("anynonarray", 2776, 0),
-    ("anyrange", 3831, 0),
-    ("bit", 1560, 1561),
-    ("bool", 16, 1000),
-    ("box", 603, 1020),
-    ("bpchar", 1042, 1014),
-    ("bytea", 17, 1001),
-    ("char", 18, 1002),
-    ("cid", 29, 1012),
-    ("cidr", 650, 651),
-    ("circle", 718, 719),
-    ("cstring", 2275, 1263),
-    ("date", 1082, 1182),
-    ("daterange", 3912, 3913),
-    ("event_trigger", 3838, 0),
-    ("float4", 700, 1021),
-    ("float8", 701, 1022),
-    ("gtsvector", 3642, 3644),
-    ("inet", 869, 1041),
-    ("int2", 21, 1005),
-    ("int2vector", 22, 1006),
-    ("int4", 23, 1007),
-    ("int4range", 3904, 3905),
-    ("int8", 20, 1016),
-    ("int8range", 3926, 3927),
-    ("internal", 2281, 0),
-    ("interval", 1186, 1187),
-    ("json", 114, 199),
-    ("jsonb", 3802, 3807),
-    ("line", 628, 629),
-    ("lseg", 601, 1018),
-    ("macaddr", 829, 1040),
-    ("macaddr8", 774, 775),
-    ("money", 790, 791),
-    ("name", 19, 1003),
-    ("numeric", 1700, 1231),
-    ("numrange", 3906, 3907),
-    ("oid", 26, 1028),
-    ("oidvector", 30, 1013),
-    ("opaque", 2282, 0),
-    ("path", 602, 1019),
-    ("point", 600, 1017),
-    ("polygon", 604, 1027),
-    ("record", 2249, 2287),
-    ("refcursor", 1790, 2201),
-    ("reltime", 703, 1024),
-    ("smgr", 210, 0),
-    ("text", 25, 1009),
-    ("tid", 27, 1010),
-    ("time", 1083, 1183),
-    ("timestamp", 1114, 1115),
-    ("timestamptz", 1184, 1185),
-    ("timetz", 1266, 1270),
-    ("tinterval", 704, 1025),
-    ("trigger", 2279, 0),
-    ("tsquery", 3615, 3645),
-    ("tsrange", 3908, 3909),
-    ("tstzrange", 3910, 3911),
-    ("tsvector", 3614, 3643),
-    ("txid_snapshot", 2970, 2949),
-    ("unknown", 705, 0),
-    ("uuid", 2950, 2951),
-    ("varbit", 1562, 1563),
-    ("varchar", 1043, 1015),
-    ("void", 2278, 0),
-    ("xid", 28, 1011),
-    ("xml", 142, 143),
+    ("abstime", 702, 1023, "abstime"),
+    ("aclitem", 1033, 1034, "aclitem"),
+    ("any", 2276, 0, '"any"'),
+    ("anyarray", 2277, 0, "anyarray"),
+    ("anyelement", 2283, 0, "anyelement"),
+    ("anyenum", 3500, 0, "anyenum"),
+    ("anynonarray", 2776, 0, "anynonarray"),
+    ("anyrange", 3831, 0, "anyrange"),
+    ("int8", 20, 1016, "bigint"),
+    ("bit", 1560, 1561, "bit"),
+    ("varbit", 1562, 1563, "bit varying"),
+    ("bool", 16, 1000, "boolean"),
+    ("box", 603, 1020, "box"),
+    ("bytea", 17, 1001, "bytea"),
+    ("char", 18, 1002, '"char"'),
+    ("bpchar", 1042, 1014, "character"),
+    ("varchar", 1043, 1015, "character varying"),
+    ("cid", 29, 1012, "cid"),
+    ("cidr", 650, 651, "cidr"),
+    ("circle", 718, 719, "circle"),
+    ("cstring", 2275, 1263, "cstring"),
+    ("date", 1082, 1182, "date"),
+    ("daterange", 3912, 3913, "daterange"),
+    ("float8", 701, 1022, "double precision"),
+    ("event_trigger", 3838, 0, "event_trigger"),
+    ("gtsvector", 3642, 3644, "gtsvector"),
+    ("inet", 869, 1041, "inet"),
+    ("int2vector", 22, 1006, "int2vector"),
+    ("int4range", 3904, 3905, "int4range"),
+    ("int8range", 3926, 3927, "int8range"),
+    ("int4", 23, 1007, "integer"),
+    ("internal", 2281, 0, "internal"),
+    ("interval", 1186, 1187, "interval"),
+    ("json", 114, 199, "json"),
+    ("jsonb", 3802, 3807, "jsonb"),
+    ("line", 628, 629, "line"),
+    ("lseg", 601, 1018, "lseg"),
+    ("macaddr", 829, 1040, "macaddr"),
+    ("macaddr8", 774, 775, "macaddr8"),
+    ("money", 790, 791, "money"),
+    ("name", 19, 1003, "name"),
+    ("numeric", 1700, 1231, "numeric"),
+    ("numrange", 3906, 3907, "numrange"),
+    ("oid", 26, 1028, "oid"),
+    ("oidvector", 30, 1013, "oidvector"),
+    ("opaque", 2282, 0, "opaque"),
+    ("path", 602, 1019, "path"),
+    ("point", 600, 1017, "point"),
+    ("polygon", 604, 1027, "polygon"),
+    ("float4", 700, 1021, "real"),
+    ("record", 2249, 2287, "record"),
+    ("refcursor", 1790, 2201, "refcursor"),
+    ("reltime", 703, 1024, "reltime"),
+    ("int2", 21, 1005, "smallint"),
+    ("smgr", 210, 0, "smgr"),
+    ("text", 25, 1009, "text"),
+    ("tid", 27, 1010, "tid"),
+    ("timestamp", 1114, 1115, "timestamp without time zone"),
+    ("timestamptz", 1184, 1185, "timestamp with time zone"),
+    ("time", 1083, 1183, "time without time zone"),
+    ("timetz", 1266, 1270, "time with time zone"),
+    ("tinterval", 704, 1025, "tinterval"),
+    ("trigger", 2279, 0, "trigger"),
+    ("tsquery", 3615, 3645, "tsquery"),
+    ("tsrange", 3908, 3909, "tsrange"),
+    ("tstzrange", 3910, 3911, "tstzrange"),
+    ("tsvector", 3614, 3643, "tsvector"),
+    ("txid_snapshot", 2970, 2949, "txid_snapshot"),
+    ("unknown", 705, 0, "unknown"),
+    ("uuid", 2950, 2951, "uuid"),
+    ("void", 2278, 0, "void"),
+    ("xid", 28, 1011, "xid"),
+    ("xml", 142, 143, "xml"),
     # autogenerated end
 ]
 
-type_oid = {name: oid for name, oid, array_oid in _oids_table}
+type_oid = {name: oid for name, oid, _, _ in _oids_table}
 
 
 def self_update():
     import subprocess as sp
 
+    # queries output should make black happy
     queries = [
         """
 select format('    # Generated from PostgreSQL %s', setting::int / 10000)
     from pg_settings
-    where name = 'server_version_num';
+    where name = 'server_version_num'
 """,
-        """
-select format('    (\"%s\", %s, %s),', typname, oid, typarray)
+        r"""
+select format(
+        '    ("%s", %s, %s, %s),',
+        typname, oid, typarray,
+        case when oid::regtype::text ~ '^"'
+            then '''' || oid::regtype::text || ''''
+            else '"' || oid::regtype::text || '"'
+        end)
     from pg_type
     where oid < 10000
     and typname !~ all('{^(_|pg_|reg),_handler$}')
-    order by 1;
+    order by replace(oid::regtype::text, '"', '')
 """,
     ]
 
@@ -117,10 +125,12 @@ select format('    (\"%s\", %s, %s),', typname, oid, typarray)
         )
         new.extend(out.stdout.splitlines())
 
-    istart, = [
+    (istart,) = [
         i for i, l in enumerate(lines) if b"autogenerated " + b"start" in l
     ]
-    iend, = [i for i, l in enumerate(lines) if b"autogenerated " + b"end" in l]
+    (iend,) = [
+        i for i, l in enumerate(lines) if b"autogenerated " + b"end" in l
+    ]
     lines[istart + 1 : iend] = new
 
     with open(__file__, "wb") as f: