Skip to content

Commit d236954

Browse files
committed
Add support for data types added in PostgreSQL 10.
1 parent 12497ee commit d236954

File tree

5 files changed

+33
-2
lines changed

5 files changed

+33
-2
lines changed

.flake8

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
[flake8]
22
ignore = E402,E731
3-
exclude = .git,__pycache__,build,dist,.eggs,.github
3+
exclude = .git,__pycache__,build,dist,.eggs,.github,.local

asyncpg/protocol/codecs/misc.pyx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ cdef init_pseudo_codecs():
6868
ANYOID, TRIGGEROID, EVENT_TRIGGEROID, LANGUAGE_HANDLEROID,
6969
FDW_HANDLEROID, TSM_HANDLEROID, INTERNALOID, OPAQUEOID,
7070
ANYELEMENTOID, ANYNONARRAYOID, PG_DDL_COMMANDOID,
71+
INDEX_AM_HANDLEROID,
7172
]
7273

7374
register_core_codec(ANYENUMOID,
@@ -104,5 +105,16 @@ cdef init_pseudo_codecs():
104105
<decode_func>&text_decode,
105106
PG_FORMAT_TEXT)
106107

108+
# pg_dependencies and pg_ndistinct are special types
109+
# used in pg_statistic_ext columns.
110+
register_core_codec(PG_DEPENDENCIESOID,
111+
<encode_func>&text_encode,
112+
<decode_func>&text_decode,
113+
PG_FORMAT_TEXT)
114+
115+
register_core_codec(PG_NDISTINCTOID,
116+
<encode_func>&text_encode,
117+
<decode_func>&text_decode,
118+
PG_FORMAT_TEXT)
107119

108120
init_pseudo_codecs()

asyncpg/protocol/codecs/network.pyx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,5 +135,10 @@ cdef init_network_codecs():
135135
<decode_func>&text_decode,
136136
PG_FORMAT_TEXT)
137137

138+
register_core_codec(MACADDR8OID,
139+
<encode_func>&text_encode,
140+
<decode_func>&text_decode,
141+
PG_FORMAT_TEXT)
142+
138143

139144
init_network_codecs()

asyncpg/protocol/pgtypes.pxi

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ DEF JSONOID = 114
3030
DEF XMLOID = 142
3131
DEF PG_NODE_TREEOID = 194
3232
DEF SMGROID = 210
33+
DEF INDEX_AM_HANDLEROID = 325
3334
DEF POINTOID = 600
3435
DEF LSEGOID = 601
3536
DEF PATHOID = 602
@@ -44,6 +45,7 @@ DEF RELTIMEOID = 703
4445
DEF TINTERVALOID = 704
4546
DEF UNKNOWNOID = 705
4647
DEF CIRCLEOID = 718
48+
DEF MACADDR8OID = 774
4749
DEF MONEYOID = 790
4850
DEF MACADDROID = 829
4951
DEF INETOID = 869
@@ -83,6 +85,8 @@ DEF TXID_SNAPSHOTOID = 2970
8385
DEF FDW_HANDLEROID = 3115
8486
DEF PG_LSNOID = 3220
8587
DEF TSM_HANDLEROID = 3310
88+
DEF PG_NDISTINCTOID = 3361
89+
DEF PG_DEPENDENCIESOID = 3402
8690
DEF ANYENUMOID = 3500
8791
DEF TSVECTOROID = 3614
8892
DEF TSQUERYOID = 3615
@@ -122,6 +126,7 @@ TYPEMAP = {
122126
FLOAT4OID: 'float4',
123127
FLOAT8OID: 'float8',
124128
GTSVECTOROID: 'gtsvector',
129+
INDEX_AM_HANDLEROID: 'index_am_handler',
125130
INETOID: 'inet',
126131
INT2OID: 'int2',
127132
INT4OID: 'int4',
@@ -133,6 +138,7 @@ TYPEMAP = {
133138
LANGUAGE_HANDLEROID: 'language_handler',
134139
LINEOID: 'line',
135140
LSEGOID: 'lseg',
141+
MACADDR8OID: 'macaddr8',
136142
MACADDROID: 'macaddr',
137143
MONEYOID: 'money',
138144
NAMEOID: 'name',
@@ -141,7 +147,9 @@ TYPEMAP = {
141147
OPAQUEOID: 'opaque',
142148
PATHOID: 'path',
143149
PG_DDL_COMMANDOID: 'pg_ddl_command',
150+
PG_DEPENDENCIESOID: 'pg_dependencies',
144151
PG_LSNOID: 'pg_lsn',
152+
PG_NDISTINCTOID: 'pg_ndistinct',
145153
PG_NODE_TREEOID: 'pg_node_tree',
146154
POINTOID: 'point',
147155
POLYGONOID: 'polygon',

tools/generate_type_map.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@ async def runner(args):
2929
user=args.pguser)
3030

3131
buf = (
32+
'# Copyright (C) 2016-present the asyncpg authors and contributors\n'
33+
'# <see AUTHORS file>\n'
34+
'#\n'
35+
'# This module is part of asyncpg and is released under\n'
36+
'# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0'
37+
'\n\n\n'
3238
'# GENERATED FROM pg_catalog.pg_type\n' +
3339
'# DO NOT MODIFY, use tools/generate_type_map.py to update\n\n' +
3440
'DEF INVALIDOID = {}\n'.format(_INVALIDOID) +
@@ -70,7 +76,7 @@ async def runner(args):
7076

7177
buf += '\n'.join(defs)
7278

73-
buf += '\n\nARRAY_TYPES = ({},)'.format(', '.join(array_types))
79+
buf += '\n\ncdef ARRAY_TYPES = ({},)'.format(', '.join(array_types))
7480

7581
f_typemap = ('{}: {!r}'.format(dn, n) for dn, n in sorted(typemap.items()))
7682
buf += '\n\nTYPEMAP = {{\n {}}}'.format(',\n '.join(f_typemap))

0 commit comments

Comments
 (0)