DATE_ADD/DATE_SUB with a single argument raises AttributeError (BigQuery, MySQL, Doris, StarRocks)
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 42/100
Direzione di ricerca
Start at build_date_delta_with_interval in the dialect module, which returns None when fewer than two args are passed, then follow it into Parser.validate_expression in parser.py where the None is dereferenced. Reproduce with sqlglot.parse_one("SELECT DATE_ADD(x)", read="bigquery") and compare against the DuckDB path that already raises a clean ParseError. Done means every listed dialect registration raises ParseError instead of AttributeError, with a test per dialect in the corresponding tests/dialects suite. Note an open pull request (#9105) already targets this, so coordinate before starting.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Fully reproducible code snippet
import sqlglot
sqlglot.parse_one("SELECT DATE_ADD(x)", read="bigquery")
# AttributeError: 'NoneType' object has no attribute 'error_messages'
The same applies to DATE_SUB, DATETIME_ADD/SUB, TIME_ADD/SUB and TIMESTAMP_ADD/SUB in BigQuery, DATE_ADD/DATE_SUB in MySQL, and the Doris/StarRocks registrations of the same builder.
Expected
A ParseError. The same input in DuckDB raises a clean ParseError; BigQuery DATE_DIFF(x) raises ParseError; and BigQuery DATE_SUB(x, 1) raises "ParseError: INTERVAL expression expected but got '1'".
Actual
The dialect builder build_date_delta_with_interval returns None when len(args) < 2, and Parser.validate_expression then dereferences None.error_messages (in parser.py), producing the AttributeError.
Checked against main at commit b294f7f.
Official Documentation
BigQuery DATE_ADD requires a date expression and an INTERVAL: https://cloud.google.com/bigquery/docs/reference/standard-sql/date_functions#date_add
MySQL DATE_ADD: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html
Found by property-based testing (a no-crash property over mutated inputs drawn from sqlglot's own test corpus).
- Lingua principale
- Python
- Stelle
- 9.8k
- Fork
- 1.4k
- Merge medio
- 13h 19m
- PR unite (30g)
- 243
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di tobymao/sqlglot
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
SQLite: CAST(x AS JSON) is generated verbatim, which SQLite evaluates as a numeric castForse già presa @Gowthamsuryagolla l’ha presa oggi. Aperta
Difficoltà 3/5 Mezza giornata Idoneità per principianti 32/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 30/100
I maintainer di solito rispondono entro 1 giorno
-
Optimizer drops parentheses for `NOT (<date> = DATE_TRUNC(...))`, changing query resultsForse già presa @parthdembla007 l’ha presa oggi. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 28/100
I maintainer di solito rispondono entro 1 giorno
-
BigQuery: region-qualified INFORMATION_SCHEMA reference is rewritten across transpile passes, gaining an invented aliasForse già presa @ansh-rohilla l’ha presa oggi. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 28/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di tobymao/sqlglot
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
alltheplaces/alltheplaces#20570 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 1 giorno
-
area:ci bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
catincloud-labs/dagster-dex#206 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
number_to_words raises ValueError with threshold= for ordinals ("12th") and comma-grouped strings ("1,000")Forse già presa @hemtilva l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 1 giorno
-
providers security
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
agentbreeder/agentbreeder#1031 ·
I maintainer di solito rispondono entro 1 giorno