summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormike bayer <mike_mp@zzzcomputing.com>2021-11-03 15:13:22 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2021-11-03 11:15:33 -0400
commit2cc49191e28bcf05d97787d6cdc561dd6815e847 (patch)
treec91dc5c29a72fe20df5169b8fc1c99f6fd8aed21
parentd80f5277e1c6a6043408244288effb08713c8d70 (diff)
downloadsqlalchemy-2cc49191e28bcf05d97787d6cdc561dd6815e847.tar.gz
Revert "Gracefully degrade unsupported types with asyncpg"
This reverts commit 96c294da8a50d692b3f0b8e508dbbca5d9c22f1b. I have another approach that is more obvious, easier to override explicitly and also I can test it more easily. Change-Id: I11a3be7700dbc6f25d436e450b6fb8e8f6c4fd16
-rw-r--r--doc/build/changelog/unreleased_14/7284.rst11
-rw-r--r--lib/sqlalchemy/dialects/postgresql/asyncpg.py43
2 files changed, 14 insertions, 40 deletions
diff --git a/doc/build/changelog/unreleased_14/7284.rst b/doc/build/changelog/unreleased_14/7284.rst
deleted file mode 100644
index fbbbafa80..000000000
--- a/doc/build/changelog/unreleased_14/7284.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-.. change::
- :tags: postgresql, usecase, asyncpg
- :tickets: 7284
- :versions: 2.0.0b1
-
- Modified the asyncpg dialect to gracefully degrade types that are
- not supported by PostgreSQL work-alike databases. For example,
- CockroachDB supports JSONB but not JSON. Third-party dialects that
- are derived from ``PGDialect_asyncpg`` will no longer have to
- work around ValueError being raised by trying to register a codec
- for an unsupported type.
diff --git a/lib/sqlalchemy/dialects/postgresql/asyncpg.py b/lib/sqlalchemy/dialects/postgresql/asyncpg.py
index 21f9e3e26..2225a7278 100644
--- a/lib/sqlalchemy/dialects/postgresql/asyncpg.py
+++ b/lib/sqlalchemy/dialects/postgresql/asyncpg.py
@@ -878,8 +878,6 @@ class PGDialect_asyncpg(PGDialect):
use_native_uuid = True
- _exclude_type_codecs = util.EMPTY_SET
-
colspecs = util.update_copy(
PGDialect.colspecs,
{
@@ -1034,34 +1032,21 @@ class PGDialect_asyncpg(PGDialect):
See https://github.com/MagicStack/asyncpg/issues/623 for reference
on why it's set up this way.
- See #7284 for the rationale behind adding
- self._exclude_type_codecs
-
"""
-
- if "json" not in self._exclude_type_codecs:
- try:
- await conn._connection.set_type_codec(
- "json",
- encoder=str.encode,
- decoder=_json_decoder,
- schema="pg_catalog",
- format="binary",
- )
- except ValueError:
- self._exclude_type_codecs |= {"json"}
-
- if "jsonb" not in self._exclude_type_codecs:
- try:
- await conn._connection.set_type_codec(
- "jsonb",
- encoder=_jsonb_encoder,
- decoder=_jsonb_decoder,
- schema="pg_catalog",
- format="binary",
- )
- except ValueError:
- self._exclude_type_codecs |= {"jsonb"}
+ await conn._connection.set_type_codec(
+ "json",
+ encoder=str.encode,
+ decoder=_json_decoder,
+ schema="pg_catalog",
+ format="binary",
+ )
+ await conn._connection.set_type_codec(
+ "jsonb",
+ encoder=_jsonb_encoder,
+ decoder=_jsonb_decoder,
+ schema="pg_catalog",
+ format="binary",
+ )
def connect(conn):
conn.await_(_setup_type_codecs(conn))