Skip to content

Conversation

@maishivamhoo123
Copy link

Description

This PR addresses an issue where named parameters present in a SQL statement were not being validated against the provided arguments. Previously, if a user omitted a parameter, the driver would remain silent and Spanner would default the value to NULL, often leading to incorrect query results or unexpected behavior.

Changes

  • Updated stmt.go to validate that all named parameters parsed from the SQL string exist in the provided args.
  • Returns a descriptive error if a required parameter is missing, preventing silent NULL assignments.
  • Added regression tests in driver_test.go to ensure validation works for various edge cases.

Testing

I have verified these changes by running the test suite in short mode:

  • go test -v -short ./...
  • Result: PASS (specifically TestQuery_NamedParameterValidation)

Related Issue

Fixes #709

@maishivamhoo123 maishivamhoo123 requested a review from a team as a code owner January 20, 2026 13:58
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @maishivamhoo123, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces crucial validation for named parameters in SQL statements, preventing a previous issue where missing parameters would silently default to NULL in Spanner, potentially leading to incorrect query results. By explicitly checking for the presence of all required named parameters and returning a clear error when one is missing, this change significantly enhances data integrity and developer experience by providing immediate feedback on malformed queries.

Highlights

  • Named Parameter Validation: Implemented validation to ensure that all named parameters specified in a SQL query are explicitly provided in the arguments, preventing silent NULL assignments.
  • Improved Error Handling: Replaced the previous behavior of silently defaulting missing parameters to NULL with explicit, descriptive error messages when a required named parameter is not found.
  • Regression Tests: Added new test cases in driver_test.go to specifically cover scenarios involving missing named parameters, ensuring the new validation logic functions correctly.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

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

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 effectively addresses the critical issue of missing named parameter validation in SQL statements, preventing silent NULL assignments and improving query reliability. The changes in stmt.go introduce a clear error message when a parameter is not found, and the new test case in driver_test.go provides good coverage for this validation. The dependency updates in go.sum are standard and expected.

@maishivamhoo123
Copy link
Author

maishivamhoo123 commented Jan 23, 2026

@bhatt4982 @olavloite Sir can you please review the changes?

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.

Query parameter with wrong name does not trigger an error

1 participant