Skip to content

chore: util method for creating statement with params#3817

Merged
olavloite merged 1 commit intomainfrom
create-statement-with-params
Apr 14, 2025
Merged

chore: util method for creating statement with params#3817
olavloite merged 1 commit intomainfrom
create-statement-with-params

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 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