diff --git a/query-service-impl/src/main/java/org/hypertrace/core/query/service/pinot/QueryRequestToPinotSQLConverter.java b/query-service-impl/src/main/java/org/hypertrace/core/query/service/pinot/QueryRequestToPinotSQLConverter.java index d3dcd4d8..1d99641b 100644 --- a/query-service-impl/src/main/java/org/hypertrace/core/query/service/pinot/QueryRequestToPinotSQLConverter.java +++ b/query-service-impl/src/main/java/org/hypertrace/core/query/service/pinot/QueryRequestToPinotSQLConverter.java @@ -450,7 +450,9 @@ private String convertLiteralToString(LiteralConstant literal, Params.Builder pa String ret = null; switch (value.getValueType()) { case STRING_ARRAY: - ret = buildArrayValue(value.getStringArrayList(), paramsBuilder::addStringParam); + List values = + value.getStringArrayList().size() > 0 ? value.getStringArrayList() : List.of("null"); + ret = buildArrayValue(values, paramsBuilder::addStringParam); break; case BYTES_ARRAY: ret = buildArrayValue(value.getBytesArrayList(), paramsBuilder::addByteStringParam); diff --git a/query-service-impl/src/test/java/org/hypertrace/core/query/service/pinot/QueryRequestToPinotSQLConverterTest.java b/query-service-impl/src/test/java/org/hypertrace/core/query/service/pinot/QueryRequestToPinotSQLConverterTest.java index f2c53196..605e00e1 100644 --- a/query-service-impl/src/test/java/org/hypertrace/core/query/service/pinot/QueryRequestToPinotSQLConverterTest.java +++ b/query-service-impl/src/test/java/org/hypertrace/core/query/service/pinot/QueryRequestToPinotSQLConverterTest.java @@ -520,6 +520,29 @@ public void testSQLiWithStringArrayFilter() { executionContext); } + @Test + public void testSQLiWithStringDefaultArrayFilter() { + Builder builder = QueryRequest.newBuilder(); + builder.addSelection(createColumnExpression("Span.displaySpanName")); + + Filter filter = createInFilter("Span.displaySpanName", List.of()); + builder.setFilter(filter); + + ViewDefinition viewDefinition = getDefaultViewDefinition(); + defaultMockingForExecutionContext(); + + assertPQLQuery( + builder.build(), + "SELECT span_name FROM SpanEventView WHERE " + + viewDefinition.getTenantIdColumn() + + " = '" + + TENANT_ID + + "' " + + "AND span_name IN ('null')", + viewDefinition, + executionContext); + } + @Test public void testSQLiWithBooleanArrayFilter() { Builder builder = QueryRequest.newBuilder();