Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import io.substrait.expression.Expression;
import io.substrait.extension.DefaultExtensionCatalog;
import io.substrait.extension.SimpleExtension;
import io.substrait.isthmus.ConverterProvider;
import io.substrait.isthmus.DynamicConverterProvider;
import io.substrait.isthmus.SubstraitToSql;
import io.substrait.plan.Plan;
Expand Down Expand Up @@ -79,7 +80,8 @@ public void run(final String[] args) {

// Convert the plan to SQL
final SubstraitToSql substraitToSql =
new SubstraitToSql(new DynamicConverterProvider(extensions));
new SubstraitToSql(
new DynamicConverterProvider(ConverterProvider.builder().extensions(extensions)));

System.out.println("\nWith custom SparkSQL SqlDialect::");
substraitToSql.convert(plan, customSqlDialect()).stream().forEachOrdered(System.out::println);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import io.substrait.expression.Expression;
import io.substrait.extension.DefaultExtensionCatalog;
import io.substrait.extension.SimpleExtension;
import io.substrait.isthmus.ConverterProvider;
import io.substrait.isthmus.DynamicConverterProvider;
import io.substrait.isthmus.SubstraitToSql;
import io.substrait.plan.Plan;
Expand Down Expand Up @@ -77,7 +78,8 @@ public void run(final String[] args) {

// Convert the plan to SQL
final SubstraitToSql substraitToSql =
new SubstraitToSql(new DynamicConverterProvider(extensions));
new SubstraitToSql(
new DynamicConverterProvider(ConverterProvider.builder().extensions(extensions)));
System.out.println("\nWith default DuckDB SqlDialect::");
substraitToSql.convert(plan, SqlDialect.DatabaseProduct.DUCKDB.getDialect()).stream()
.forEachOrdered(System.out::println);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@ public void run(String[] args) {
final Plan substraitPlan = new ProtoPlanConverter().from(proto);

// Configure Isthmus Utilities
final SubstraitToCalcite substraitToCalcite = new SubstraitToCalcite(new ConverterProvider());
final SubstraitToCalcite substraitToCalcite =
new SubstraitToCalcite(ConverterProvider.DEFAULT);

// Configure Calcite Utilities
final SqlDialect sqlDialect = SqlDialect.DatabaseProduct.MYSQL.getDialect();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import java.util.concurrent.Callable;
import org.apache.calcite.avatica.util.Casing;
import org.apache.calcite.prepare.Prepare;
import org.apache.calcite.sql.parser.SqlParser;
import picocli.CommandLine;
import picocli.CommandLine.Command;
import picocli.CommandLine.Option;
Expand Down Expand Up @@ -60,15 +59,6 @@ enum OutputFormat {
description = "Calcite's casing policy for unquoted identifiers: ${COMPLETION-CANDIDATES}")
private Casing unquotedCasing = Casing.TO_UPPER;

private ConverterProvider converterProvider() {
return new ConverterProvider() {
@Override
public SqlParser.Config getSqlParserConfig() {
return super.getSqlParserConfig().withUnquotedCasing(unquotedCasing);
}
};
}

/**
* Standard Java Main method invoked by the isthmus CLI command.
*
Expand Down Expand Up @@ -96,7 +86,11 @@ public static void main(String... args) {

@Override
public Integer call() throws Exception {
ConverterProvider provider = converterProvider();
ConverterProvider provider =
ConverterProvider.builder()
.sqlParserConfig(
ConverterProvider.DEFAULT_SQL_PARSER_CONFIG.withUnquotedCasing(unquotedCasing))
.build();
// Isthmus image is parsing SQL Expression if that argument is defined
if (sqlExpressions != null) {
SqlExpressionToSubstrait converter = new SqlExpressionToSubstrait(provider);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,14 @@ public class AutomaticDynamicFunctionMappingConverterProvider extends ConverterP
*
* <p>Uses {@link DefaultExtensionCatalog#DEFAULT_COLLECTION} for extensions and {@link
* SubstraitTypeSystem#TYPE_FACTORY} for type operations.
*
* @deprecated Use {@link
* #AutomaticDynamicFunctionMappingConverterProvider(ConverterProvider.Builder)} with {@link
* ConverterProvider#builder()} instead.
*/
@Deprecated
public AutomaticDynamicFunctionMappingConverterProvider() {
this(DefaultExtensionCatalog.DEFAULT_COLLECTION, SubstraitTypeSystem.TYPE_FACTORY);
this(ConverterProvider.builder());
}

/**
Expand All @@ -58,10 +63,15 @@ public AutomaticDynamicFunctionMappingConverterProvider() {
* <p>Uses {@link SubstraitTypeSystem#TYPE_FACTORY} for type operations.
*
* @param extensions the extension collection containing function definitions
* @deprecated Use {@link
* #AutomaticDynamicFunctionMappingConverterProvider(ConverterProvider.Builder)} instead, e.g.
* {@code new AutomaticDynamicFunctionMappingConverterProvider(
* ConverterProvider.builder().extensions(extensions))}.
*/
@Deprecated
public AutomaticDynamicFunctionMappingConverterProvider(
SimpleExtension.ExtensionCollection extensions) {
this(extensions, SubstraitTypeSystem.TYPE_FACTORY);
this(ConverterProvider.builder().extensions(extensions));
}

/**
Expand All @@ -72,10 +82,27 @@ public AutomaticDynamicFunctionMappingConverterProvider(
*
* @param extensions the extension collection containing function definitions
* @param typeFactory the type factory for creating and managing Calcite data types
* @deprecated Use {@link
* #AutomaticDynamicFunctionMappingConverterProvider(ConverterProvider.Builder)} instead, e.g.
* {@code new AutomaticDynamicFunctionMappingConverterProvider(
* ConverterProvider.builder().extensions(extensions).typeFactory(typeFactory))}.
*/
@Deprecated
public AutomaticDynamicFunctionMappingConverterProvider(
SimpleExtension.ExtensionCollection extensions, RelDataTypeFactory typeFactory) {
super(extensions, typeFactory);
this(ConverterProvider.builder().extensions(extensions).typeFactory(typeFactory));
}

/**
* Creates a new provider from a {@link ConverterProvider.Builder}, seeding base state from the
* builder and then installing the automatically generated dynamic function mappings and operator
* table. This is the seam through which the other constructors — and subclasses, via {@code
* super(builder)} — route.
*
* @param builder the builder carrying the configured components
*/
public AutomaticDynamicFunctionMappingConverterProvider(ConverterProvider.Builder builder) {
super(builder);

List<SqlOperator> dynamicScalarOperators = getDynamicScalarOperators();
this.scalarFunctionConverter = createScalarFunctionConverter(dynamicScalarOperators);
Expand Down
Loading
Loading