Skip to content

chore: util method for creating statement with params #3817

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Apr 14, 2025

Conversation

olavloite
Copy link
Collaborator

Currently, statements with parameters can only be created through a Statement.Builder. This has the disadvantage that Statement.Builder uses a StringBuilder internally, which means that each time Statement.newBuilder() is called, a new StringBuilder with the initial SQL statement is created. Later, when the statement is built, the contents of the StringBuilder are copied into a new string. This is efficient for statements that are built with multiple SQL fragements that are appended together. It is however inefficient for statements that are created with a fixed SQL string.

This change therefore adds an additional util method to directly create a Statement from a string and an immutable map of parameters. Calling this method directly does not invoke any internal copy methods, and is more efficient for clients that have both the SQL string and the parameters readily available. This method will be used by PGAdapter, that does have this information available directly.

Currently, statements with parameters can only be created through a Statement.Builder.
This has the disadvantage that Statement.Builder uses a StringBuilder internally, which
means that each time Statement.newBuilder() is called, a new StringBuilder with the initial
SQL statement is created. Later, when the statement is built, the contents of the StringBuilder
are copied into a new string. This is efficient for statements that are built with multiple
SQL fragements that are appended together. It is however inefficient for statements that are
created with a fixed SQL string.

This change therefore adds an additional util method to directly create a Statement from a
string and an immutable map of parameters. Calling this method directly does not invoke any
internal copy methods, and is more efficient for clients that have both the SQL string and
the parameters readily available. This method will be used by PGAdapter, that does have this
information available directly.
@olavloite olavloite requested review from a team as code owners April 12, 2025 07:00
@product-auto-label product-auto-label bot added size: s Pull request size is small. api: spanner Issues related to the googleapis/java-spanner API. labels Apr 12, 2025
@olavloite olavloite merged commit 92494d0 into main Apr 14, 2025
34 checks passed
@olavloite olavloite deleted the create-statement-with-params branch April 14, 2025 07:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api: spanner Issues related to the googleapis/java-spanner API. size: s Pull request size is small.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants