summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/dialects/postgresql/asyncpg.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2022-12-13 20:07:14 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2022-12-15 10:36:48 -0500
commit7b84c850606c7b093b4260c08ff4636ff1bdbfef (patch)
treea2500d653134f05981ea3b6618ff63dcefa91716 /lib/sqlalchemy/dialects/postgresql/asyncpg.py
parente0eea374c2df82f879d69b99ba2230c743bbae27 (diff)
downloadsqlalchemy-7b84c850606c7b093b4260c08ff4636ff1bdbfef.tar.gz
add explicit REGCONFIG, pg full text functions
Added support for explicit use of PG full text functions with asyncpg and psycopg (SQLAlchemy 2.0 only), with regards to the ``REGCONFIG`` type cast for the first argument, which previously would be incorrectly cast to a VARCHAR, causing failures on these dialects that rely upon explicit type casts. This includes support for :class:`_postgresql.to_tsvector`, :class:`_postgresql.to_tsquery`, :class:`_postgresql.plainto_tsquery`, :class:`_postgresql.phraseto_tsquery`, :class:`_postgresql.websearch_to_tsquery`, :class:`_postgresql.ts_headline`, each of which will determine based on number of arguments passed if the first string argument should be interpreted as a PostgreSQL "REGCONFIG" value; if so, the argument is typed using a newly added type object :class:`_postgresql.REGCONFIG` which is then explicitly cast in the SQL expression. Fixes: #8977 Change-Id: Ib36698a984fd4194bd6e0eb663105f790f3db7d3
Diffstat (limited to 'lib/sqlalchemy/dialects/postgresql/asyncpg.py')
-rw-r--r--lib/sqlalchemy/dialects/postgresql/asyncpg.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/sqlalchemy/dialects/postgresql/asyncpg.py b/lib/sqlalchemy/dialects/postgresql/asyncpg.py
index b8f614eba..3c1eaf918 100644
--- a/lib/sqlalchemy/dialects/postgresql/asyncpg.py
+++ b/lib/sqlalchemy/dialects/postgresql/asyncpg.py
@@ -142,6 +142,7 @@ from .base import PGDialect
from .base import PGExecutionContext
from .base import PGIdentifierPreparer
from .base import REGCLASS
+from .base import REGCONFIG
from ... import exc
from ... import pool
from ... import util
@@ -160,6 +161,10 @@ class AsyncpgString(sqltypes.String):
render_bind_cast = True
+class AsyncpgREGCONFIG(REGCONFIG):
+ render_bind_cast = True
+
+
class AsyncpgTime(sqltypes.Time):
render_bind_cast = True
@@ -899,6 +904,7 @@ class PGDialect_asyncpg(PGDialect):
PGDialect.colspecs,
{
sqltypes.String: AsyncpgString,
+ REGCONFIG: AsyncpgREGCONFIG,
sqltypes.Time: AsyncpgTime,
sqltypes.Date: AsyncpgDate,
sqltypes.DateTime: AsyncpgDateTime,