Custom scalar to sql overrides support for DuckDB Unparser dialect(#68) #13915
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.
Which issue does this PR close?
Unparser does not currently support extending dialect with custom handlers for internal UDFs or new engine extensions. Possible workarounds here are creating a custom dialect wrapper around original dialect with overrided
scalar_function_to_sql_overrides
or usingCustomDialect
. This is not very convenient and robust as requires tracking changes to the main dialect and reflecting the same improvements in the custom dialect.Rationale for this change
Propose introducing a pattern and approach for extending
scalar_function_to_sql_overrides
for dialects with additional handlers, example usage.What changes are included in this PR?
PR introduces new pattern for extending dialects with custom
scalar_function_to_sql_overrides
handlers starting from DuckDB that could be extended to other dialects nextAre these changes tested?
Added unit test
test_custom_scalar_overrides_duckdb
Are there any user-facing changes?
Breaking change: as we are adding additional field to DuckDB dialect, existing approach to construct
DuckDBDialect {}
can't be used and needs to be updated toDuckDBDialect::new()