GSheetsEngineSpec inherited SqliteEngineSpec.convert_dttm, which returns
None for types.Date, so Superset fell back to a datetime-with-microseconds
literal for Date-typed filter bounds. shillelagh's virtual table layer
parses that value with datetime.date.fromisoformat, which rejects the
trailing time and silently drops it to None, causing the GSheets adapter
to embed a bare, unquoted `null` literal in the query sent to Google's
API instead of a real value -- producing "Invalid query: NO_COLUMN: null".
Override convert_dttm on GSheetsEngineSpec to emit a plain 'YYYY-MM-DD'
literal for Date columns, which shillelagh can parse and quote correctly.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>