Skip to content

Commit a15d9c7

Browse files
authored
feat: introduce DefaultExtensionCatalog.DEFAULT_COLLECTION (#529)
Provide convenient static instance of default ExtensionCollection BREAKING CHANGE: removed SimpleExtension.loadDefaults
1 parent cf4ad93 commit a15d9c7

12 files changed

Lines changed: 49 additions & 34 deletions

File tree

core/src/main/java/io/substrait/extendedexpression/ProtoExtendedExpressionConverter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import io.substrait.expression.Expression;
44
import io.substrait.expression.proto.ProtoExpressionConverter;
5+
import io.substrait.extension.DefaultExtensionCatalog;
56
import io.substrait.extension.ExtensionCollector;
67
import io.substrait.extension.ExtensionLookup;
78
import io.substrait.extension.ImmutableExtensionLookup;
@@ -23,7 +24,7 @@ public class ProtoExtendedExpressionConverter {
2324
new ExtensionCollector(), SimpleExtension.ExtensionCollection.builder().build());
2425

2526
public ProtoExtendedExpressionConverter() {
26-
this(SimpleExtension.loadDefaults());
27+
this(DefaultExtensionCatalog.DEFAULT_COLLECTION);
2728
}
2829

2930
public ProtoExtendedExpressionConverter(SimpleExtension.ExtensionCollection extensionCollection) {

core/src/main/java/io/substrait/extension/DefaultExtensionCatalog.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package io.substrait.extension;
22

3+
import java.util.Arrays;
4+
import java.util.List;
5+
import java.util.stream.Collectors;
6+
37
public class DefaultExtensionCatalog {
48
public static final String FUNCTIONS_AGGREGATE_APPROX = "/functions_aggregate_approx.yaml";
59
public static final String FUNCTIONS_AGGREGATE_GENERIC = "/functions_aggregate_generic.yaml";
@@ -14,4 +18,28 @@ public class DefaultExtensionCatalog {
1418
public static final String FUNCTIONS_ROUNDING_DECIMAL = "/functions_rounding_decimal.yaml";
1519
public static final String FUNCTIONS_SET = "/functions_set.yaml";
1620
public static final String FUNCTIONS_STRING = "/functions_string.yaml";
21+
22+
public static final SimpleExtension.ExtensionCollection DEFAULT_COLLECTION =
23+
loadDefaultCollection();
24+
25+
private static SimpleExtension.ExtensionCollection loadDefaultCollection() {
26+
List<String> defaultFiles =
27+
Arrays.asList(
28+
"boolean",
29+
"aggregate_generic",
30+
"aggregate_approx",
31+
"arithmetic_decimal",
32+
"arithmetic",
33+
"comparison",
34+
"datetime",
35+
"logarithmic",
36+
"rounding",
37+
"rounding_decimal",
38+
"string")
39+
.stream()
40+
.map(c -> String.format("/functions_%s.yaml", c))
41+
.collect(Collectors.toList());
42+
43+
return SimpleExtension.load(defaultFiles);
44+
}
1745
}

core/src/main/java/io/substrait/extension/SimpleExtension.java

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import java.io.IOException;
2323
import java.io.InputStream;
2424
import java.io.UncheckedIOException;
25-
import java.util.Arrays;
2625
import java.util.List;
2726
import java.util.Map;
2827
import java.util.Optional;
@@ -701,27 +700,6 @@ public ExtensionCollection merge(ExtensionCollection extensionCollection) {
701700
}
702701
}
703702

704-
public static ExtensionCollection loadDefaults() {
705-
List<String> defaultFiles =
706-
Arrays.asList(
707-
"boolean",
708-
"aggregate_generic",
709-
"aggregate_approx",
710-
"arithmetic_decimal",
711-
"arithmetic",
712-
"comparison",
713-
"datetime",
714-
"logarithmic",
715-
"rounding",
716-
"rounding_decimal",
717-
"string")
718-
.stream()
719-
.map(c -> String.format("/functions_%s.yaml", c))
720-
.collect(Collectors.toList());
721-
722-
return load(defaultFiles);
723-
}
724-
725703
public static ExtensionCollection load(List<String> resourcePaths) {
726704
if (resourcePaths.isEmpty()) {
727705
throw new IllegalArgumentException("Require at least one resource path.");

core/src/main/java/io/substrait/plan/ProtoPlanConverter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.substrait.plan;
22

3+
import io.substrait.extension.DefaultExtensionCatalog;
34
import io.substrait.extension.ExtensionLookup;
45
import io.substrait.extension.ImmutableExtensionLookup;
56
import io.substrait.extension.SimpleExtension;
@@ -16,7 +17,7 @@ public class ProtoPlanConverter {
1617
protected final SimpleExtension.ExtensionCollection extensionCollection;
1718

1819
public ProtoPlanConverter() {
19-
this(SimpleExtension.loadDefaults());
20+
this(DefaultExtensionCatalog.DEFAULT_COLLECTION);
2021
}
2122

2223
public ProtoPlanConverter(SimpleExtension.ExtensionCollection extensionCollection) {

core/src/main/java/io/substrait/relation/ProtoAggregateFunctionConverter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import io.substrait.expression.FunctionArg;
66
import io.substrait.expression.FunctionOption;
77
import io.substrait.expression.proto.ProtoExpressionConverter;
8+
import io.substrait.extension.DefaultExtensionCatalog;
89
import io.substrait.extension.ExtensionLookup;
910
import io.substrait.extension.SimpleExtension;
1011
import io.substrait.type.proto.ProtoTypeConverter;
@@ -24,7 +25,7 @@ public class ProtoAggregateFunctionConverter {
2425

2526
public ProtoAggregateFunctionConverter(
2627
ExtensionLookup lookup, ProtoExpressionConverter protoExpressionConverter) {
27-
this(lookup, SimpleExtension.loadDefaults(), protoExpressionConverter);
28+
this(lookup, DefaultExtensionCatalog.DEFAULT_COLLECTION, protoExpressionConverter);
2829
}
2930

3031
public ProtoAggregateFunctionConverter(

core/src/main/java/io/substrait/relation/ProtoRelConverter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import io.substrait.expression.Expression;
44
import io.substrait.expression.proto.ProtoExpressionConverter;
55
import io.substrait.extension.AdvancedExtension;
6+
import io.substrait.extension.DefaultExtensionCatalog;
67
import io.substrait.extension.ExtensionLookup;
78
import io.substrait.extension.SimpleExtension;
89
import io.substrait.hint.Hint;
@@ -55,7 +56,7 @@ public class ProtoRelConverter {
5556
private final ProtoTypeConverter protoTypeConverter;
5657

5758
public ProtoRelConverter(ExtensionLookup lookup) {
58-
this(lookup, SimpleExtension.loadDefaults());
59+
this(lookup, DefaultExtensionCatalog.DEFAULT_COLLECTION);
5960
}
6061

6162
public ProtoRelConverter(ExtensionLookup lookup, SimpleExtension.ExtensionCollection extensions) {

core/src/test/java/io/substrait/TestBase.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import static org.junit.jupiter.api.Assertions.assertEquals;
44

55
import io.substrait.dsl.SubstraitBuilder;
6+
import io.substrait.extension.DefaultExtensionCatalog;
67
import io.substrait.extension.ExtensionCollector;
78
import io.substrait.extension.SimpleExtension;
89
import io.substrait.relation.ProtoRelConverter;
@@ -13,7 +14,7 @@
1314
public abstract class TestBase {
1415

1516
protected static final SimpleExtension.ExtensionCollection defaultExtensionCollection =
16-
SimpleExtension.loadDefaults();
17+
DefaultExtensionCatalog.DEFAULT_COLLECTION;
1718

1819
protected TypeCreator R = TypeCreator.REQUIRED;
1920

isthmus-cli/src/main/java/io/substrait/isthmus/cli/IsthmusEntryPoint.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import com.google.protobuf.Message;
55
import com.google.protobuf.TextFormat;
66
import com.google.protobuf.util.JsonFormat;
7-
import io.substrait.extension.SimpleExtension;
7+
import io.substrait.extension.DefaultExtensionCatalog;
88
import io.substrait.isthmus.FeatureBoard;
99
import io.substrait.isthmus.ImmutableFeatureBoard;
1010
import io.substrait.isthmus.SqlExpressionToSubstrait;
@@ -87,7 +87,7 @@ public Integer call() throws Exception {
8787
// Isthmus image is parsing SQL Expression if that argument is defined
8888
if (sqlExpressions != null) {
8989
SqlExpressionToSubstrait converter =
90-
new SqlExpressionToSubstrait(featureBoard, SimpleExtension.loadDefaults());
90+
new SqlExpressionToSubstrait(featureBoard, DefaultExtensionCatalog.DEFAULT_COLLECTION);
9191
ExtendedExpression extendedExpression = converter.convert(sqlExpressions, createStatements);
9292
printMessage(extendedExpression);
9393
} else { // by default Isthmus image are parsing SQL Query

isthmus/src/main/java/io/substrait/isthmus/SqlConverterBase.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.substrait.isthmus;
22

3+
import io.substrait.extension.DefaultExtensionCatalog;
34
import io.substrait.extension.SimpleExtension;
45
import org.apache.calcite.config.CalciteConnectionConfig;
56
import org.apache.calcite.config.CalciteConnectionProperty;
@@ -20,7 +21,7 @@
2021

2122
class SqlConverterBase {
2223
protected static final SimpleExtension.ExtensionCollection EXTENSION_COLLECTION =
23-
SimpleExtension.loadDefaults();
24+
DefaultExtensionCatalog.DEFAULT_COLLECTION;
2425

2526
final RelDataTypeFactory factory;
2627
final RelOptCluster relOptCluster;

isthmus/src/test/java/io/substrait/isthmus/CalciteCallTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.google.common.collect.ImmutableList;
77
import io.substrait.expression.Expression;
88
import io.substrait.expression.ExpressionCreator;
9+
import io.substrait.extension.DefaultExtensionCatalog;
910
import io.substrait.extension.SimpleExtension;
1011
import io.substrait.isthmus.SubstraitRelNodeConverter.Context;
1112
import io.substrait.isthmus.expression.ExpressionRexConverter;
@@ -22,7 +23,7 @@
2223
public class CalciteCallTest extends CalciteObjs {
2324

2425
private static final SimpleExtension.ExtensionCollection EXTENSION_COLLECTION =
25-
SimpleExtension.loadDefaults();
26+
DefaultExtensionCatalog.DEFAULT_COLLECTION;
2627
private final ScalarFunctionConverter functionConverter =
2728
new ScalarFunctionConverter(EXTENSION_COLLECTION.scalarFunctions(), type);
2829
private final RexExpressionConverter rexExpressionConverter =

0 commit comments

Comments
 (0)