fix: avoid invalid CAST(NULL AS NULL) in SQLGlot compiler#17487
fix: avoid invalid CAST(NULL AS NULL) in SQLGlot compiler#17487shuoweil merged 3 commits intomaingoogleapis/google-cloud-python:mainfrom shuowei-fix-sqlglot-null-castgoogleapis/google-cloud-python:shuowei-fix-sqlglot-null-castCopy head branch name to clipboard
Conversation
There was a problem hiding this comment.
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.
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
TrevorBergeron
left a comment
There was a problem hiding this comment.
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. |
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>
🤖 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>
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> 🦕