Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

fix: avoid invalid CAST(NULL AS NULL) in SQLGlot compiler#17487

Merged
shuoweil merged 3 commits into
maingoogleapis/google-cloud-python:mainfrom
shuowei-fix-sqlglot-null-castgoogleapis/google-cloud-python:shuowei-fix-sqlglot-null-castCopy head branch name to clipboard
Jun 18, 2026
Merged

fix: avoid invalid CAST(NULL AS NULL) in SQLGlot compiler#17487
shuoweil merged 3 commits into
maingoogleapis/google-cloud-python:mainfrom
shuowei-fix-sqlglot-null-castgoogleapis/google-cloud-python:shuowei-fix-sqlglot-null-castCopy head branch name to clipboard

Conversation

@shuoweil

Copy link
Copy Markdown
Contributor

This PR resolves a compilation crash caused by the SQLGlot compiler attempting to generate an invalid CAST(NULL AS NULL) statement in BigQuery, which triggers a syntax/validation error (e.g., Unexpected keyword NULL).

Fixes #<524701452> 🦕

@shuoweil shuoweil self-assigned this Jun 16, 2026
@shuoweil shuoweil requested review from a team as code owners June 16, 2026 19:34
@shuoweil shuoweil requested review from TrevorBergeron and tswast and removed request for a team June 16, 2026 19:34

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the SQLGlot compilation logic to return a plain NULL expression instead of a cast when the value is None and the SQLGlot type is "NULL". It also adds a unit test to verify this behavior. The reviewer noted that calling .upper() directly on sqlglot_type could raise an AttributeError if it is a DataType object rather than a string, and suggested converting it to a string first.

Comment thread packages/bigframes/bigframes/core/compile/sqlglot/sql/base.py Outdated
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

@TrevorBergeron TrevorBergeron left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like on ok fix, but I wonder if we should be handling this earlier, upstream? Like where are the casts to NULL type happening?

@shuoweil

Copy link
Copy Markdown
Contributor Author

Seems like on ok fix, but I wonder if we should be handling this earlier, upstream? Like where are the casts to NULL type happening?

Good idea. I will use another PR for this upstream fix.

@shuoweil shuoweil enabled auto-merge (squash) June 18, 2026 01:09
@shuoweil shuoweil merged commit 3b79caa into main Jun 18, 2026
30 of 31 checks passed
@shuoweil shuoweil deleted the shuowei-fix-sqlglot-null-cast branch June 18, 2026 01:25
chalmerlowe pushed a commit that referenced this pull request Jun 25, 2026
This PR resolves a compilation crash caused by the SQLGlot compiler
attempting to generate an invalid CAST(NULL AS NULL) statement in
BigQuery, which triggers a syntax/validation error (e.g., Unexpected
keyword NULL).

Fixes #<524701452> 🦕

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
shuoweil pushed a commit that referenced this pull request Jun 25, 2026
🤖 I have created a release *beep* *boop*
---


##
[2.44.0](bigframes-v2.43.0...bigframes-v2.44.0)
(2026-06-25)


### Features

* add date functions to `bigframes.bigquery` module
([#17514](#17514))
([e5d2e35](e5d2e35))
* **bigframes:** add AI TVFs to the pandas bq accessor
([#17402](#17402))
([ee74e31](ee74e31))
* Experimental transpilation of unannotated python callables
([#17419](#17419))
([ea9aad9](ea9aad9))
* support gemini-3.x models in loader and update default model to
gemini-3.5-flash
([#17557](#17557))
([3619b29](3619b29))
* support interactive execution of deferred DataFrames in TableWidget
([#17486](#17486))
([421eebd](421eebd))


### Bug Fixes

* avoid invalid CAST(NULL AS NULL) in SQLGlot compiler
([#17487](#17487))
([3b79caa](3b79caa))
* **bigframes:** world-readable temp zip in create_cloud_function
([#17522](#17522))
([e726878](e726878))
* bump @angular/common, @angular/forms, @angular/platform-browser and
@angular/router in
/packages/bigframes/bigframes/display/table_widget_angular
([#17525](#17525))
([2f893b1](2f893b1))
* bump langsmith from 0.8.0 to 0.8.18 in /packages/bigframes
([#17518](#17518))
([f23063f](f23063f))
* bump msgpack from 1.1.1 to 1.2.1 in /packages/bigframes
([#17520](#17520))
([36b5b7e](36b5b7e))
* bump undici and @angular/build in
/packages/bigframes/bigframes/display/table_widget_angular
([#17519](#17519))
([6fc45e3](6fc45e3))
* handle empty endpoints during cloud function reuse
([#17501](#17501))
([4f5593a](4f5593a))


### Documentation

* ensure that PlotAccessor is included in the API reference
([#17513](#17513))
([6febabf](6febabf))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

Morty Proxy This is a proxified and sanitized view of the page, visit original site.