Skip to content

Commit e60bada

Browse files
committed
Ad missing configuration
1 parent b1ce845 commit e60bada

File tree

5 files changed

+22
-23
lines changed

5 files changed

+22
-23
lines changed

plugin/trino-lakehouse/src/main/java/io/trino/plugin/lakehouse/LakehouseConnector.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,12 @@
2626
import io.trino.spi.connector.ConnectorSession;
2727
import io.trino.spi.connector.ConnectorSplitManager;
2828
import io.trino.spi.connector.ConnectorTransactionHandle;
29+
import io.trino.spi.function.FunctionProvider;
2930
import io.trino.spi.session.PropertyMetadata;
3031
import io.trino.spi.transaction.IsolationLevel;
3132

3233
import java.util.List;
34+
import java.util.Optional;
3335
import java.util.Set;
3436

3537
import static com.google.common.collect.Sets.immutableEnumSet;
@@ -51,6 +53,7 @@ public class LakehouseConnector
5153
private final LakehouseSessionProperties sessionProperties;
5254
private final LakehouseTableProperties tableProperties;
5355
private final IcebergMaterializedViewProperties materializedViewProperties;
56+
private final FunctionProvider functionProvider;
5457

5558
@Inject
5659
public LakehouseConnector(
@@ -62,7 +65,8 @@ public LakehouseConnector(
6265
LakehouseNodePartitioningProvider nodePartitioningProvider,
6366
LakehouseSessionProperties sessionProperties,
6467
LakehouseTableProperties tableProperties,
65-
IcebergMaterializedViewProperties materializedViewProperties)
68+
IcebergMaterializedViewProperties materializedViewProperties,
69+
FunctionProvider functionProvider)
6670
{
6771
this.lifeCycleManager = requireNonNull(lifeCycleManager, "lifeCycleManager is null");
6872
this.transactionManager = requireNonNull(transactionManager, "transactionManager is null");
@@ -73,6 +77,7 @@ public LakehouseConnector(
7377
this.sessionProperties = requireNonNull(sessionProperties, "sessionProperties is null");
7478
this.tableProperties = requireNonNull(tableProperties, "tableProperties is null");
7579
this.materializedViewProperties = requireNonNull(materializedViewProperties, "materializedViewProperties is null");
80+
this.functionProvider = requireNonNull(functionProvider, "functionProvider is null");
7681
}
7782

7883
@Override
@@ -159,4 +164,10 @@ public Set<ConnectorCapabilities> getCapabilities()
159164
{
160165
return immutableEnumSet(NOT_NULL_COLUMN_CONSTRAINT, MATERIALIZED_VIEW_GRACE_PERIOD);
161166
}
167+
168+
@Override
169+
public Optional<FunctionProvider> getFunctionProvider()
170+
{
171+
return Optional.of(functionProvider);
172+
}
162173
}

plugin/trino-lakehouse/src/main/java/io/trino/plugin/lakehouse/LakehouseFunctionProvider.java

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -14,33 +14,25 @@
1414
package io.trino.plugin.lakehouse;
1515

1616
import com.google.inject.Inject;
17-
import io.trino.plugin.deltalake.DeltaLakeFunctionProvider;
18-
import io.trino.plugin.deltalake.functions.tablechanges.TableChangesTableFunctionHandle;
1917
import io.trino.plugin.iceberg.functions.IcebergFunctionProvider;
20-
import io.trino.plugin.iceberg.functions.tablechanges.TableChangesFunctionHandle;
2118
import io.trino.spi.function.BoundSignature;
2219
import io.trino.spi.function.FunctionDependencies;
2320
import io.trino.spi.function.FunctionId;
2421
import io.trino.spi.function.FunctionProvider;
2522
import io.trino.spi.function.InvocationConvention;
2623
import io.trino.spi.function.ScalarFunctionImplementation;
27-
import io.trino.spi.function.table.ConnectorTableFunctionHandle;
28-
import io.trino.spi.function.table.TableFunctionProcessorProviderFactory;
2924

3025
import static java.util.Objects.requireNonNull;
3126

3227
public class LakehouseFunctionProvider
3328
implements FunctionProvider
3429
{
35-
private final DeltaLakeFunctionProvider deltaLakeFunctionProvider;
3630
private final IcebergFunctionProvider icebergFunctionProvider;
3731

3832
@Inject
3933
public LakehouseFunctionProvider(
40-
DeltaLakeFunctionProvider deltaLakeFunctionProvider,
4134
IcebergFunctionProvider icebergFunctionProvider)
4235
{
43-
this.deltaLakeFunctionProvider = requireNonNull(deltaLakeFunctionProvider, "deltaLakeFunctionProvider is null");
4436
this.icebergFunctionProvider = requireNonNull(icebergFunctionProvider, "icebergFunctionProvider is null");
4537
}
4638

@@ -51,21 +43,9 @@ public ScalarFunctionImplementation getScalarFunctionImplementation(
5143
FunctionDependencies functionDependencies,
5244
InvocationConvention invocationConvention)
5345
{
54-
if ("bucket".equals(functionId.toString())) {
46+
if ("bucket".equals(boundSignature.getName().getFunctionName())) {
5547
return icebergFunctionProvider.getScalarFunctionImplementation(functionId, boundSignature, functionDependencies, invocationConvention);
5648
}
5749
throw new UnsupportedOperationException("%s provides only 'bucket' scalar function".formatted(getClass().getName()));
5850
}
59-
60-
@Override
61-
public TableFunctionProcessorProviderFactory getTableFunctionProcessorProviderFactory(ConnectorTableFunctionHandle functionHandle)
62-
{
63-
if (functionHandle instanceof TableChangesTableFunctionHandle) {
64-
return deltaLakeFunctionProvider.getTableFunctionProcessorProviderFactory(functionHandle);
65-
}
66-
if (functionHandle instanceof TableChangesFunctionHandle) {
67-
return icebergFunctionProvider.getTableFunctionProcessorProviderFactory(functionHandle);
68-
}
69-
throw new UnsupportedOperationException("Unsupported function: " + functionHandle);
70-
}
7151
}

plugin/trino-lakehouse/src/main/java/io/trino/plugin/lakehouse/LakehouseIcebergModule.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import io.trino.plugin.iceberg.catalog.glue.IcebergGlueCatalogModule;
4242
import io.trino.plugin.iceberg.catalog.hms.IcebergHiveMetastoreCatalogModule;
4343
import io.trino.plugin.iceberg.fileio.ForwardingFileIoFactory;
44+
import io.trino.plugin.iceberg.functions.IcebergFunctionProvider;
4445

4546
import static com.google.inject.multibindings.OptionalBinder.newOptionalBinder;
4647
import static io.airlift.configuration.ConfigBinder.configBinder;
@@ -75,6 +76,8 @@ protected void setup(Binder binder)
7576

7677
binder.bind(ForwardingFileIoFactory.class).in(Scopes.SINGLETON);
7778

79+
binder.bind(IcebergFunctionProvider.class).in(Scopes.SINGLETON);
80+
7881
install(switch (buildConfigObject(MetastoreTypeConfig.class).getMetastoreType()) {
7982
case THRIFT -> new IcebergHiveMetastoreCatalogModule();
8083
case FILE -> new IcebergFileMetastoreCatalogModule();

plugin/trino-lakehouse/src/main/java/io/trino/plugin/lakehouse/LakehouseMetadata.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ public FunctionMetadata getFunctionMetadata(ConnectorSession session, FunctionId
198198
@Override
199199
public FunctionDependencyDeclaration getFunctionDependencies(ConnectorSession session, FunctionId functionId, BoundSignature boundSignature)
200200
{
201-
return FunctionDependencyDeclaration.NO_DEPENDENCIES;
201+
return icebergMetadata.getFunctionDependencies(session, functionId, boundSignature);
202202
}
203203

204204
@Override

plugin/trino-lakehouse/src/main/java/io/trino/plugin/lakehouse/LakehouseModule.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
import io.trino.plugin.hive.orc.OrcWriterConfig;
2525
import io.trino.plugin.hive.parquet.ParquetReaderConfig;
2626
import io.trino.plugin.hive.parquet.ParquetWriterConfig;
27+
import io.trino.plugin.iceberg.functions.tablechanges.TableChangesFunctionProcessorProviderFactory;
28+
import io.trino.spi.function.FunctionProvider;
2729

2830
import static io.airlift.configuration.ConfigBinder.configBinder;
2931
import static org.weakref.jmx.guice.ExportBinder.newExporter;
@@ -53,6 +55,9 @@ protected void setup(Binder binder)
5355
binder.bind(FileFormatDataSourceStats.class).in(Scopes.SINGLETON);
5456
newExporter(binder).export(FileFormatDataSourceStats.class).withGeneratedName();
5557

58+
binder.bind(FunctionProvider.class).to(LakehouseFunctionProvider.class).in(Scopes.SINGLETON);
59+
binder.bind(TableChangesFunctionProcessorProviderFactory.class).in(Scopes.SINGLETON);
60+
5661
binder.bind(Key.get(boolean.class, HideDeltaLakeTables.class)).toInstance(false);
5762
}
5863
}

0 commit comments

Comments
 (0)