-
Notifications
You must be signed in to change notification settings - Fork 45
Open
Description
Regarding #42 (which applies the type bind processors when adding parameters to the queries), I found that the reverse direction is not working yet — the type result processors (both for user-defined type decroators and dialect-specific types) are not invoked when reading the fetched rows.
I tried to fix this by myself, but it seems to be much more complicated than I first thought:
- It requires major rewriting of the current
SAConnectionclass so thatcompiled._result_columnsare passed around. This is not trivial because we currently subclassesasyncpg.connection.Connectiondirectly and extends its API by overrides, e.g., we need to know which methods are invoked by who (either the base class or our class). RecordandRecordGeneratorclasses should have reference to both thecompiled._result_columnsand_dialect.dbapi_type_map. SoRecordis no longer just a thin wrapper of the given "row" dict but an active post-processor of row fields, like in aiopg.- Whenever accessing the row values, we need to lookup and apply result processors based on the above two maps.
For custom types, maybe I need to fall back to aiopg for more complete SA functionality due to my time limits. It is unfortunate not to have public/documented SQLAlchemy APIs to make low-level adaptor libraries like asyncpgsa and aiopg. 😢
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels