Skip to content

Apache Druid Calcite Query Testing: Cannot read field "componentSupplier" because "config" is null #17920

@paulo-alves-flttr

Description

@paulo-alves-flttr

I have an druid extension project that adds new user defined function to Druid SQL, but I have been facing some problems when implementing tests. I have used this example as reference but it is broken, since configureGuice method no longer exists as Druid 32.

I have tried the following by reading the source code from Druid:

@ComponentSupplier(MyComponentSupplier.class)
public class CustomSqlAggregatorTest extends BaseCalciteQueryTest {

    @Test
    public void testCustomAggSql() {
        cannotVectorize();
        testBuilder()
                .sql("select CUSTOM_AGG(m1) from foo")
                .expectedQueries(
                        List.of(
                                Druids.newTimeseriesQueryBuilder()
                                        .dataSource(CalciteTests.DATASOURCE1)
                                        .intervals(querySegmentSpec(Filtration.eternity()))
                                        .granularity(Granularities.ALL)
                                        .aggregators(aggregators(getAggFactory()))
                                        .context(QUERY_CONTEXT_DEFAULT)
                                        .build()
                        )
                )
                .expectedResults(ImmutableList.of(new Object[]{21.0F}))
                .run();
    }
    ...
}

But I get the following error:

Caused by: java.lang.NullPointerException: Cannot read field "componentSupplier" because "config" is null
	at org.apache.druid.sql.calcite.SqlTestFrameworkConfig$ConfigurationInstance.<init>(SqlTestFrameworkConfig.java:378)
	at org.apache.druid.sql.calcite.SqlTestFrameworkConfig$SqlTestFrameworkConfigStore.getConfigurationInstance(SqlTestFrameworkConfig.java:253)
	at org.apache.druid.sql.calcite.SqlTestFrameworkConfig$Rule.get(SqlTestFrameworkConfig.java:344)
	at org.apache.druid.sql.calcite.BaseCalciteQueryTest.queryFramework(BaseCalciteQueryTest.java:535)
	... 34 more

My component supplier code looks like the following:

public class MyComponentSupplier extends SqlTestFramework.StandardComponentSupplier {
    public MyComponentSupplier(TempDirProducer tempDirProducer) {
        super(tempDirProducer);
    }

    @Override
    public DruidModule getCoreModule() {
        return DruidModuleCollection.of(
                super.getCoreModule(),
                new MyExtensionModule()
        );
    }
}

Any suggestions?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions