Skip to content

Commit

Permalink
repair pg8000 and pin to 1.16.6 min version
Browse files Browse the repository at this point in the history
Due to tlocke/pg8000@3a2e743
we no longer decode the description.  pin to 1.16.6 as minimum version
so that we don't need to track version changes in code.

Change-Id: I192c851eb2337f37467560a3cbb87f7235884788
  • Loading branch information
zzzeek committed Oct 12, 2020
1 parent d0b5ce2 commit b2f2bf1
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 17 deletions.
28 changes: 12 additions & 16 deletions lib/sqlalchemy/dialects/postgresql/pg8000.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
:url: https://pypi.org/project/pg8000/
.. versionchanged:: 1.4 The pg8000 dialect has been updated for version
1.16.5 and higher, and is again part of SQLAlchemy's continuous integration
1.16.6 and higher, and is again part of SQLAlchemy's continuous integration
with full feature support.
.. _pg8000_unicode:
Expand Down Expand Up @@ -119,21 +119,15 @@ def bind_processor(self, dialect):

class _PGJSON(JSON):
def result_processor(self, dialect, coltype):
if dialect._dbapi_version > (1, 10, 1):
return None # Has native JSON
else:
return super(_PGJSON, self).result_processor(dialect, coltype)
return None

def get_dbapi_type(self, dbapi):
return dbapi.JSON


class _PGJSONB(JSONB):
def result_processor(self, dialect, coltype):
if dialect._dbapi_version > (1, 10, 1):
return None # Has native JSON
else:
return super(_PGJSON, self).result_processor(dialect, coltype)
return None

def get_dbapi_type(self, dbapi):
return dbapi.JSONB
Expand Down Expand Up @@ -240,8 +234,7 @@ def pre_exec(self):
if not self.compiled:
return

if self.dialect._dbapi_version > (1, 16, 0):
self.set_input_sizes()
self.set_input_sizes()


class PGCompiler_pg8000(PGCompiler):
Expand Down Expand Up @@ -271,7 +264,11 @@ class PGDialect_pg8000(PGDialect):
execution_ctx_cls = PGExecutionContext_pg8000
statement_compiler = PGCompiler_pg8000
preparer = PGIdentifierPreparer_pg8000
description_encoding = "use_encoding"

# reversed as of pg8000 1.16.6. 1.16.5 and lower
# are no longer compatible
description_encoding = None
# description_encoding = "use_encoding"

colspecs = util.update_copy(
PGDialect.colspecs,
Expand Down Expand Up @@ -302,9 +299,8 @@ def __init__(self, client_encoding=None, **kwargs):
PGDialect.__init__(self, **kwargs)
self.client_encoding = client_encoding

def initialize(self, connection):
self.supports_sane_multi_rowcount = self._dbapi_version >= (1, 9, 14)
super(PGDialect_pg8000, self).initialize(connection)
if self._dbapi_version < (1, 16, 6):
raise NotImplementedError("pg8000 1.16.6 or greater is required")

@util.memoized_property
def _dbapi_version(self):
Expand Down Expand Up @@ -452,7 +448,7 @@ def on_connect(conn):

fns.append(on_connect)

if self._dbapi_version > (1, 16, 0) and self._json_deserializer:
if self._json_deserializer:

def on_connect(conn):
# json
Expand Down
2 changes: 1 addition & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ oracle =
cx_oracle>=7,<8;python_version<"3"
cx_oracle>=7;python_version>="3"
postgresql = psycopg2>=2.7
postgresql_pg8000 = pg8000
postgresql_pg8000 = pg8000>=1.16.6
postgresql_asyncpg =
asyncpg;python_version>="3"
greenlet
Expand Down

0 comments on commit b2f2bf1

Please sign in to comment.