From 7b84c850606c7b093b4260c08ff4636ff1bdbfef Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Tue, 13 Dec 2022 20:07:14 -0500 Subject: 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 --- lib/sqlalchemy/dialects/postgresql/asyncpg.py | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'lib/sqlalchemy/dialects/postgresql/asyncpg.py') 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, -- cgit v1.2.1