sql: support query strings containing multiple statements #2707
+226
−6
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Adds support for query strings containing multiple statements to the various SQL components. When a string contains multiple statements, they are all executed in the same database transaction.
Interpolated parameters (
?
,$1
, etc.) may only be used in the first statement, similarly to the MySQL and Snowflake drivers which support this when not using the standarddatabase/sql
interfaces.Affected components:
query
argument to thesql_raw
input, processor, and outputinit_statement
arg andinit_files
contents provided tosql_raw
,sql_select
, andsql_write
componentsThis is incredibly useful for more complex use cases, and required in cases where you must execute multiple statements in the same transaction. Examples:
Create Postgres tables on the fly based on topic names coming in:
Upsert individual rows into Snowflake:
Put batches into a Snowflake staging table and then merge them into the main table: