MagicStack / MagicStack/asyncpg
When using Redshift - PostgresSyntaxError: syntax error at or near "ORDER" - in query with no "ORDER"
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 8.1k
- Forks
- 469
- Ø Merge
- 18 Min.
- Gemergte PRs (30 T.)
- 4
Beschreibung
- asyncpg version: asyncpg==0.27.0.
- PostgreSQL version: PostgreSQL 8.0.2 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.4.2 20041017 (Red Hat 3.4.2-6.fc3), Redshift 1.0.46987.
- Do you use a PostgreSQL SaaS? If so, which? Can you reproduce
the issue with a local PostgreSQL install?: I am using Amazon Redshift. I could not reproduce the issue withpotgres:9.0Docker image. - Python version: Python 3.9.12.
- Platform: Windows 10 Pro, 22H2, 19045.2604.
- Do you use pgbouncer?: No.
- Did you install asyncpg with pip?: Yes.
- If you built asyncpg locally, which version of Cython did you use?: -
- Can the issue be reproduced under both asyncio and
uvloop?: Have not trieduvloop.
Running this snippet:
options = ConnectionOptions()
sslctx = ssl.create_default_context(ssl.Purpose.SERVER_AUTH)
sslctx.check_hostname = False
sslctx.verify_mode = ssl.CERT_NONE
connection = await asyncpg.connect(options.dsn, ssl=sslctx)
try:
query = "select 'all' = any($1::text[])"
await connection.fetch(query, ["all"])
finally:
await connection.close()
I get this exception:
asyncpg.exceptions.PostgresSyntaxError: syntax error at or near "ORDER"
I am wondering, where the "syntax error at or near "ORDER" comes from, as there is no "ORDER" in the original query.
If asyncpg does not rewrite queries in any way, and the query passed to fetch is forwarded to the database without modification (https://github.com/MagicStack/asyncpg/issues/434#issuecomment-910474719, https://github.com/MagicStack/asyncpg/discussions/859#discussioncomment-1742492) - where does the "ORDER" come from?
Can this issue be worked around, or I should abandon asyncpg as a Redshift client? I do understand that Redshift is not officially supported, but this client is very good otherwise.
I was not able to reproduce the error with the postgres:9.0 instance (the oldest I was able to find quickly). The same (except ssl=False) snippet works without errors.
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit dem Einstiegspunkt connection.fetch und der reproduzierten Abfrage select 'all' = any($1::text[]), und vergleiche anschließend ihr Verhalten auf Redshift mit dem des gemeldeten PostgreSQL-Docker-Images. Bestimme, ob der Syntaxfehler in asyncpg oder in Redshift entsteht, und dokumentiere einen bestätigten Workaround oder die Kompatibilitätsbeschränkung.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- postgresql, python
- Bereich
- databases
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 25/100