Redshift dialect: `regtype 'int4'` parses as a column with an alias, not a typed literal
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 48/100
Rechercherichtung
The bug is in how the parser decides between a typed string literal and an alias, so start where it handles the Regclass type, which already parses as a typed string. Check how the Redshift dialect is gated, then run select regtype 'int4', select regproc 'version' and select regclass 'pg_user' under that dialect to compare. Done when the first two parse as typed literals with the expected type and the existing parser tests still pass.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Redshift, like Postgres, accepts the generic typed-literal form type 'string' for any type name. sqlparser parses it as a typed string only for types it knows, such as regclass. For other type names it reads the type as a column and the string as an alias.
select regtype 'int4'
- sqlparser 0.64.0:
ExprWithAlias { expr: Identifier("regtype"), alias: Ident { value: "int4", quote_style: Some('\'') } }, i.e. the columnregtypealiased as'int4'. - Redshift: one row,
integer, i.e. the literal'int4'cast toregtype.
Other forms behave the same way: select "regtype" 'int4' returns integer and select regproc 'version' returns version on Redshift, while sqlparser parses both as aliased columns. select regclass 'pg_user' already parses as a typed string because sqlparser has a Regclass data type.
Postgres documents the syntax under "Constants of Other Types" (https://www.postgresql.org/docs/8.0/sql-syntax.html#SQL-SYNTAX-CONSTANTS-GENERIC), and Redshift is based on PostgreSQL 8.0.2 (https://docs.aws.amazon.com/redshift/latest/dg/c_redshift-and-postgres-sql.html).
- Vorherrschende Sprache
- Rust
- Sterne
- 3.5k
- Forks
- 805
- Ø Merge
- 2 T. 3 Std.
- Gemergte PRs (30 T.)
- 116
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Kein Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus apache/datafusion-sqlparser-rs
-
Redshift
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
apache/datafusion-sqlparser-rs#2959 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Redshift
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
apache/datafusion-sqlparser-rs#2958 ·
Maintainer antworten meist innerhalb von 1 Tag
-
PostgreSQL
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
apache/datafusion-sqlparser-rs#2862 ·
Maintainer antworten meist innerhalb von 1 Tag
-
PostgreSQL
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
apache/datafusion-sqlparser-rs#2861 ·
Maintainer antworten meist innerhalb von 1 Tag
-
PostgreSQL
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 77/100
apache/datafusion-sqlparser-rs#2858 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in apache/datafusion-sqlparser-rs
Ähnliche Issues
-
P3
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
HerringtonDarkholme/hd-lang#1770 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
jonathanong/no-mistakes#3332 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
swc-project/swc-next-issues#310 ·
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
swc-project/swc-ai-issues#653 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
lbjlaq/Antigravity-Manager#3937 ·
Maintainer antworten meist innerhalb von 1 Tag