From: Daniele Varrazzo Date: Sat, 28 Mar 2020 15:31:31 +0000 (+1300) Subject: Added regtype spelling of data types to oid table X-Git-Tag: 3.0.dev0~655 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4cc994dc3a93f7a6d27d4248526d8610d351ea9b;p=thirdparty%2Fpsycopg.git Added regtype spelling of data types to oid table --- diff --git a/psycopg3/types/oids.py b/psycopg3/types/oids.py index b6d006e37..3f1e9fa54 100644 --- a/psycopg3/types/oids.py +++ b/psycopg3/types/oids.py @@ -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: