David-Wobrock / sqlvalidator

SQL queries formatting, syntactic and semantic validation

Home Page:https://pypi.org/project/sqlvalidator/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Validator is not handling BigQuery CAST function properly

alexandregirbal-loxsolution opened this issue · comments

Using Python3.8 in a virtual environment, this query is showing an error even though it's working properly for Google BigQuery:

query = """
SELECT
    CAST(
        DATE_ADD(invoice_date, INTERVAL payment_term DAY) 
    AS STRING) AS invoice_due_date,
    
FROM Invoicing
"""
parsed_query = sqlvalidator.parse(query)
parsed_query.is_valid() # crashes here

Here is the error:

  File "home/alexandre/TestSqlValidator/venv/lib/python3.8/site-packages/sqlvalidator/sql_validator.py", line 25, in is_valid
    self._validate()
  File "home/alexandre/TestSqlValidator/venv/lib/python3.8/site-packages/sqlvalidator/sql_validator.py", line 31, in _validate
    self.errors = self.sql_query.validate()
  File "home/alexandre/TestSqlValidator/venv/lib/python3.8/site-packages/sqlvalidator/grammar/sql.py", line 133, in validate
    errors += e.validate(known_fields)
  File "home/alexandre/TestSqlValidator/venv/lib/python3.8/site-packages/sqlvalidator/grammar/sql.py", line 1064, in validate
    errors += self.expression.validate(known_fields)
  File "home/alexandre/TestSqlValidator/venv/lib/python3.8/site-packages/sqlvalidator/grammar/sql.py", line 557, in validate
    errors += a.validate(known_fields)
AttributeError: 'str' object has no attribute 'validate'

@alexandregirbal-loxsolution this pull request also solves your issue: #52 (comment)

Is this able to be merged? I am also running into the same issue where validating with cast is not working

Also seeing this issue