mirror of
https://github.com/apache/druid.git
synced 2025-02-17 07:25:02 +00:00
fix issue when distinct grouping dimensions are optimized into the same virtual column expression (#9429)
* fix issue when distinct grouping dimensions are optimized into the same virtual column expression * fix tests * more better * fixes
This commit is contained in:
parent
0136dba95d
commit
f8b1f2f7f3
@ -375,7 +375,7 @@ public class HllSketchSqlAggregatorTest extends CalciteTestBase
|
|||||||
Collections.singletonList(
|
Collections.singletonList(
|
||||||
new DefaultDimensionSpec(
|
new DefaultDimensionSpec(
|
||||||
"v0",
|
"v0",
|
||||||
"v0",
|
"d0",
|
||||||
ValueType.LONG
|
ValueType.LONG
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -371,7 +371,7 @@ public class ThetaSketchSqlAggregatorTest extends CalciteTestBase
|
|||||||
Collections.singletonList(
|
Collections.singletonList(
|
||||||
new DefaultDimensionSpec(
|
new DefaultDimensionSpec(
|
||||||
"v0",
|
"v0",
|
||||||
"v0",
|
"d0",
|
||||||
ValueType.LONG
|
ValueType.LONG
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -174,7 +174,10 @@ public class BloomFilterSqlAggregator implements SqlAggregator
|
|||||||
inputOperand.getType().getSqlTypeName()
|
inputOperand.getType().getSqlTypeName()
|
||||||
);
|
);
|
||||||
virtualColumns.add(virtualColumn);
|
virtualColumns.add(virtualColumn);
|
||||||
spec = new DefaultDimensionSpec(virtualColumn.getOutputName(), virtualColumn.getOutputName());
|
spec = new DefaultDimensionSpec(
|
||||||
|
virtualColumn.getOutputName(),
|
||||||
|
StringUtils.format("%s:%s", name, virtualColumn.getOutputName())
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
aggregatorFactory = new BloomFilterAggregatorFactory(
|
aggregatorFactory = new BloomFilterAggregatorFactory(
|
||||||
|
@ -529,7 +529,7 @@ public class BloomFilterSqlAggregatorTest extends InitializedNullHandlingTest
|
|||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
new BloomFilterAggregatorFactory(
|
new BloomFilterAggregatorFactory(
|
||||||
"a0:agg",
|
"a0:agg",
|
||||||
new DefaultDimensionSpec("v0", "v0"),
|
new DefaultDimensionSpec("v0", "a0:v0"),
|
||||||
TEST_NUM_ENTRIES
|
TEST_NUM_ENTRIES
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -597,7 +597,7 @@ public class BloomFilterSqlAggregatorTest extends InitializedNullHandlingTest
|
|||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
new BloomFilterAggregatorFactory(
|
new BloomFilterAggregatorFactory(
|
||||||
"a0:agg",
|
"a0:agg",
|
||||||
new DefaultDimensionSpec("v0", "v0"),
|
new DefaultDimensionSpec("v0", "a0:v0"),
|
||||||
TEST_NUM_ENTRIES
|
TEST_NUM_ENTRIES
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -665,7 +665,7 @@ public class BloomFilterSqlAggregatorTest extends InitializedNullHandlingTest
|
|||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
new BloomFilterAggregatorFactory(
|
new BloomFilterAggregatorFactory(
|
||||||
"a0:agg",
|
"a0:agg",
|
||||||
new DefaultDimensionSpec("v0", "v0"),
|
new DefaultDimensionSpec("v0", "a0:v0"),
|
||||||
TEST_NUM_ENTRIES
|
TEST_NUM_ENTRIES
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
package org.apache.druid.sql.calcite.aggregation;
|
package org.apache.druid.sql.calcite.aggregation;
|
||||||
|
|
||||||
|
import com.google.common.base.Preconditions;
|
||||||
import org.apache.druid.query.dimension.DefaultDimensionSpec;
|
import org.apache.druid.query.dimension.DefaultDimensionSpec;
|
||||||
import org.apache.druid.query.dimension.DimensionSpec;
|
import org.apache.druid.query.dimension.DimensionSpec;
|
||||||
import org.apache.druid.segment.column.ValueType;
|
import org.apache.druid.segment.column.ValueType;
|
||||||
@ -28,21 +29,55 @@ import java.util.Objects;
|
|||||||
|
|
||||||
public class DimensionExpression
|
public class DimensionExpression
|
||||||
{
|
{
|
||||||
private final String outputName;
|
/**
|
||||||
private final DruidExpression expression;
|
* Create a dimension expression for direct column access or simple extractions
|
||||||
private final ValueType outputType;
|
*/
|
||||||
|
public static DimensionExpression ofSimpleColumn(
|
||||||
public DimensionExpression(
|
|
||||||
final String outputName,
|
final String outputName,
|
||||||
final DruidExpression expression,
|
final DruidExpression expression,
|
||||||
final ValueType outputType
|
final ValueType outputType
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
return new DimensionExpression(outputName, outputName, expression, outputType);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a dimension expression for a virtual column
|
||||||
|
*/
|
||||||
|
public static DimensionExpression ofVirtualColumn(
|
||||||
|
final String virtualColumn,
|
||||||
|
final String outputName,
|
||||||
|
final DruidExpression expression,
|
||||||
|
final ValueType outputType
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return new DimensionExpression(virtualColumn, outputName, expression, outputType);
|
||||||
|
}
|
||||||
|
|
||||||
|
private final String virtualColumn;
|
||||||
|
private final String outputName;
|
||||||
|
private final DruidExpression expression;
|
||||||
|
private final ValueType outputType;
|
||||||
|
|
||||||
|
private DimensionExpression(
|
||||||
|
final String virtualColumn,
|
||||||
|
final String outputName,
|
||||||
|
final DruidExpression expression,
|
||||||
|
final ValueType outputType
|
||||||
|
)
|
||||||
|
{
|
||||||
|
Preconditions.checkArgument(!expression.isSimpleExtraction() || outputName.equals(virtualColumn));
|
||||||
|
this.virtualColumn = virtualColumn;
|
||||||
this.outputName = outputName;
|
this.outputName = outputName;
|
||||||
this.expression = expression;
|
this.expression = expression;
|
||||||
this.outputType = outputType;
|
this.outputType = outputType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getVirtualColumn()
|
||||||
|
{
|
||||||
|
return virtualColumn;
|
||||||
|
}
|
||||||
|
|
||||||
public String getOutputName()
|
public String getOutputName()
|
||||||
{
|
{
|
||||||
return outputName;
|
return outputName;
|
||||||
@ -58,7 +93,7 @@ public class DimensionExpression
|
|||||||
if (expression.isSimpleExtraction()) {
|
if (expression.isSimpleExtraction()) {
|
||||||
return expression.getSimpleExtraction().toDimensionSpec(outputName, outputType);
|
return expression.getSimpleExtraction().toDimensionSpec(outputName, outputType);
|
||||||
} else {
|
} else {
|
||||||
return new DefaultDimensionSpec(getOutputName(), getOutputName(), outputType);
|
return new DefaultDimensionSpec(virtualColumn, outputName, outputType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +107,8 @@ public class DimensionExpression
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
final DimensionExpression that = (DimensionExpression) o;
|
final DimensionExpression that = (DimensionExpression) o;
|
||||||
return Objects.equals(outputName, that.outputName) &&
|
return Objects.equals(virtualColumn, that.virtualColumn) &&
|
||||||
|
Objects.equals(outputName, that.outputName) &&
|
||||||
Objects.equals(expression, that.expression) &&
|
Objects.equals(expression, that.expression) &&
|
||||||
outputType == that.outputType;
|
outputType == that.outputType;
|
||||||
}
|
}
|
||||||
@ -80,14 +116,15 @@ public class DimensionExpression
|
|||||||
@Override
|
@Override
|
||||||
public int hashCode()
|
public int hashCode()
|
||||||
{
|
{
|
||||||
return Objects.hash(outputName, expression, outputType);
|
return Objects.hash(virtualColumn, outputName, expression, outputType);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString()
|
public String toString()
|
||||||
{
|
{
|
||||||
return "DimensionExpression{" +
|
return "DimensionExpression{" +
|
||||||
"outputName='" + outputName + '\'' +
|
"virtualColumn='" + virtualColumn + '\'' +
|
||||||
|
", outputName='" + outputName + '\'' +
|
||||||
", expression=" + expression +
|
", expression=" + expression +
|
||||||
", outputType=" + outputType +
|
", outputType=" + outputType +
|
||||||
'}';
|
'}';
|
||||||
|
@ -401,19 +401,18 @@ public class DruidQuery
|
|||||||
|
|
||||||
final VirtualColumn virtualColumn;
|
final VirtualColumn virtualColumn;
|
||||||
|
|
||||||
final String dimOutputName;
|
|
||||||
|
final String dimOutputName = outputNamePrefix + outputNameCounter++;
|
||||||
if (!druidExpression.isSimpleExtraction()) {
|
if (!druidExpression.isSimpleExtraction()) {
|
||||||
virtualColumn = virtualColumnRegistry.getOrCreateVirtualColumnForExpression(
|
virtualColumn = virtualColumnRegistry.getOrCreateVirtualColumnForExpression(
|
||||||
plannerContext,
|
plannerContext,
|
||||||
druidExpression,
|
druidExpression,
|
||||||
sqlTypeName
|
sqlTypeName
|
||||||
);
|
);
|
||||||
dimOutputName = virtualColumn.getOutputName();
|
dimensions.add(DimensionExpression.ofVirtualColumn(virtualColumn.getOutputName(), dimOutputName, druidExpression, outputType));
|
||||||
} else {
|
} else {
|
||||||
dimOutputName = outputNamePrefix + outputNameCounter++;
|
dimensions.add(DimensionExpression.ofSimpleColumn(dimOutputName, druidExpression, outputType));
|
||||||
}
|
}
|
||||||
|
|
||||||
dimensions.add(new DimensionExpression(dimOutputName, druidExpression, outputType));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return dimensions;
|
return dimensions;
|
||||||
@ -623,8 +622,8 @@ public class DruidQuery
|
|||||||
if (grouping != null) {
|
if (grouping != null) {
|
||||||
if (includeDimensions) {
|
if (includeDimensions) {
|
||||||
for (DimensionExpression expression : grouping.getDimensions()) {
|
for (DimensionExpression expression : grouping.getDimensions()) {
|
||||||
if (virtualColumnRegistry.isVirtualColumnDefined(expression.getOutputName())) {
|
if (virtualColumnRegistry.isVirtualColumnDefined(expression.getVirtualColumn())) {
|
||||||
virtualColumns.add(virtualColumnRegistry.getVirtualColumn(expression.getOutputName()));
|
virtualColumns.add(virtualColumnRegistry.getVirtualColumn(expression.getVirtualColumn()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -636,7 +636,7 @@ public class CalciteParameterQueryTest extends BaseCalciteQueryTest
|
|||||||
ValueType.STRING
|
ValueType.STRING
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "v0", ValueType.STRING)))
|
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "d0", ValueType.STRING)))
|
||||||
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
||||||
.setContext(QUERY_CONTEXT_DEFAULT)
|
.setContext(QUERY_CONTEXT_DEFAULT)
|
||||||
.build()
|
.build()
|
||||||
|
@ -3146,7 +3146,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
ValueType.STRING
|
ValueType.STRING
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "v0")))
|
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "d0")))
|
||||||
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
||||||
.setContext(QUERY_CONTEXT_DEFAULT)
|
.setContext(QUERY_CONTEXT_DEFAULT)
|
||||||
.build()
|
.build()
|
||||||
@ -3183,7 +3183,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
ValueType.STRING
|
ValueType.STRING
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "v0")))
|
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "d0")))
|
||||||
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
||||||
.setContext(QUERY_CONTEXT_DEFAULT)
|
.setContext(QUERY_CONTEXT_DEFAULT)
|
||||||
.build()
|
.build()
|
||||||
@ -3568,7 +3568,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
ValueType.STRING
|
ValueType.STRING
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "v0", ValueType.STRING)))
|
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "d0", ValueType.STRING)))
|
||||||
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
||||||
.setContext(QUERY_CONTEXT_DEFAULT)
|
.setContext(QUERY_CONTEXT_DEFAULT)
|
||||||
.build()
|
.build()
|
||||||
@ -4617,13 +4617,13 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
expressionVirtualColumn("v0", "(floor((\"m1\" / 2)) * 2)", ValueType.FLOAT)
|
expressionVirtualColumn("v0", "(floor((\"m1\" / 2)) * 2)", ValueType.FLOAT)
|
||||||
)
|
)
|
||||||
.setDimFilter(bound("v0", "-1", null, true, false, null, StringComparators.NUMERIC))
|
.setDimFilter(bound("v0", "-1", null, true, false, null, StringComparators.NUMERIC))
|
||||||
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "v0", ValueType.FLOAT)))
|
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "d0", ValueType.FLOAT)))
|
||||||
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
||||||
.setLimitSpec(
|
.setLimitSpec(
|
||||||
new DefaultLimitSpec(
|
new DefaultLimitSpec(
|
||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
new OrderByColumnSpec(
|
new OrderByColumnSpec(
|
||||||
"v0",
|
"d0",
|
||||||
OrderByColumnSpec.Direction.DESCENDING,
|
OrderByColumnSpec.Direction.DESCENDING,
|
||||||
StringComparators.NUMERIC
|
StringComparators.NUMERIC
|
||||||
)
|
)
|
||||||
@ -4668,13 +4668,13 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
.setDimFilter(
|
.setDimFilter(
|
||||||
bound("v0", "-1", null, true, false, null, StringComparators.NUMERIC)
|
bound("v0", "-1", null, true, false, null, StringComparators.NUMERIC)
|
||||||
)
|
)
|
||||||
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "v0", ValueType.LONG)))
|
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "d0", ValueType.LONG)))
|
||||||
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
||||||
.setLimitSpec(
|
.setLimitSpec(
|
||||||
new DefaultLimitSpec(
|
new DefaultLimitSpec(
|
||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
new OrderByColumnSpec(
|
new OrderByColumnSpec(
|
||||||
"v0",
|
"d0",
|
||||||
OrderByColumnSpec.Direction.DESCENDING,
|
OrderByColumnSpec.Direction.DESCENDING,
|
||||||
StringComparators.NUMERIC
|
StringComparators.NUMERIC
|
||||||
)
|
)
|
||||||
@ -4723,13 +4723,13 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
.setDimFilter(
|
.setDimFilter(
|
||||||
bound("v0", "-1", null, true, false, null, StringComparators.NUMERIC)
|
bound("v0", "-1", null, true, false, null, StringComparators.NUMERIC)
|
||||||
)
|
)
|
||||||
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "v0", ValueType.FLOAT)))
|
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "d0", ValueType.FLOAT)))
|
||||||
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
||||||
.setLimitSpec(
|
.setLimitSpec(
|
||||||
new DefaultLimitSpec(
|
new DefaultLimitSpec(
|
||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
new OrderByColumnSpec(
|
new OrderByColumnSpec(
|
||||||
"v0",
|
"d0",
|
||||||
OrderByColumnSpec.Direction.DESCENDING,
|
OrderByColumnSpec.Direction.DESCENDING,
|
||||||
StringComparators.NUMERIC
|
StringComparators.NUMERIC
|
||||||
)
|
)
|
||||||
@ -5478,7 +5478,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
StringComparators.NUMERIC
|
StringComparators.NUMERIC
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "v0", ValueType.LONG)))
|
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "d0", ValueType.LONG)))
|
||||||
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
||||||
.setContext(QUERY_CONTEXT_DEFAULT)
|
.setContext(QUERY_CONTEXT_DEFAULT)
|
||||||
.build()
|
.build()
|
||||||
@ -6045,8 +6045,8 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setDimensions(dimensions(
|
.setDimensions(dimensions(
|
||||||
new DefaultDimensionSpec("v0", "v0", ValueType.LONG),
|
new DefaultDimensionSpec("v0", "_d0", ValueType.LONG),
|
||||||
new DefaultDimensionSpec("d0", "_d0", ValueType.STRING)
|
new DefaultDimensionSpec("d0", "_d1", ValueType.STRING)
|
||||||
))
|
))
|
||||||
.setAggregatorSpecs(
|
.setAggregatorSpecs(
|
||||||
aggregators(
|
aggregators(
|
||||||
@ -6229,7 +6229,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
)
|
)
|
||||||
.setDimensions(dimensions(new DefaultDimensionSpec(
|
.setDimensions(dimensions(new DefaultDimensionSpec(
|
||||||
"v0",
|
"v0",
|
||||||
"v0",
|
"d0",
|
||||||
ValueType.LONG
|
ValueType.LONG
|
||||||
)))
|
)))
|
||||||
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
||||||
@ -6244,7 +6244,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
new LongMinAggregatorFactory("_a1", "a0"),
|
new LongMinAggregatorFactory("_a1", "a0"),
|
||||||
new LongSumAggregatorFactory("_a2:sum", "a0"),
|
new LongSumAggregatorFactory("_a2:sum", "a0"),
|
||||||
new CountAggregatorFactory("_a2:count"),
|
new CountAggregatorFactory("_a2:count"),
|
||||||
new LongMaxAggregatorFactory("_a3", "v0"),
|
new LongMaxAggregatorFactory("_a3", "d0"),
|
||||||
new CountAggregatorFactory("_a4")
|
new CountAggregatorFactory("_a4")
|
||||||
))
|
))
|
||||||
.setPostAggregatorSpecs(
|
.setPostAggregatorSpecs(
|
||||||
@ -6301,7 +6301,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
)
|
)
|
||||||
.setDimensions(dimensions(new DefaultDimensionSpec(
|
.setDimensions(dimensions(new DefaultDimensionSpec(
|
||||||
"v0",
|
"v0",
|
||||||
"v0",
|
"d0",
|
||||||
ValueType.LONG
|
ValueType.LONG
|
||||||
)))
|
)))
|
||||||
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
||||||
@ -6375,7 +6375,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
)
|
)
|
||||||
.setDimensions(dimensions(new DefaultDimensionSpec(
|
.setDimensions(dimensions(new DefaultDimensionSpec(
|
||||||
"v0",
|
"v0",
|
||||||
"v0",
|
"d0",
|
||||||
ValueType.LONG
|
ValueType.LONG
|
||||||
)))
|
)))
|
||||||
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
||||||
@ -6733,7 +6733,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
)
|
)
|
||||||
.setDimensions(dimensions(new DefaultDimensionSpec(
|
.setDimensions(dimensions(new DefaultDimensionSpec(
|
||||||
"v0",
|
"v0",
|
||||||
"v0",
|
"d0",
|
||||||
ValueType.LONG
|
ValueType.LONG
|
||||||
)))
|
)))
|
||||||
.setAggregatorSpecs(
|
.setAggregatorSpecs(
|
||||||
@ -7490,7 +7490,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
"(((timestamp_extract(\"__time\",'MONTH','UTC') - 1) / 3) + 1)",
|
"(((timestamp_extract(\"__time\",'MONTH','UTC') - 1) / 3) + 1)",
|
||||||
ValueType.LONG
|
ValueType.LONG
|
||||||
))
|
))
|
||||||
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "v0", ValueType.LONG)))
|
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "d0", ValueType.LONG)))
|
||||||
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
||||||
.setContext(QUERY_CONTEXT_DEFAULT)
|
.setContext(QUERY_CONTEXT_DEFAULT)
|
||||||
.build()
|
.build()
|
||||||
@ -8053,7 +8053,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
.setVirtualColumns(
|
.setVirtualColumns(
|
||||||
expressionVirtualColumn("v0", "floor(CAST(\"dim1\", 'DOUBLE'))", ValueType.FLOAT)
|
expressionVirtualColumn("v0", "floor(CAST(\"dim1\", 'DOUBLE'))", ValueType.FLOAT)
|
||||||
)
|
)
|
||||||
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "v0", ValueType.FLOAT)))
|
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "d0", ValueType.FLOAT)))
|
||||||
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
||||||
.setContext(QUERY_CONTEXT_DEFAULT)
|
.setContext(QUERY_CONTEXT_DEFAULT)
|
||||||
.build()
|
.build()
|
||||||
@ -8091,7 +8091,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
dimensions(
|
dimensions(
|
||||||
new DefaultDimensionSpec(
|
new DefaultDimensionSpec(
|
||||||
"v0",
|
"v0",
|
||||||
"v0",
|
"d0",
|
||||||
ValueType.FLOAT
|
ValueType.FLOAT
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -8101,7 +8101,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
new DefaultLimitSpec(
|
new DefaultLimitSpec(
|
||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
new OrderByColumnSpec(
|
new OrderByColumnSpec(
|
||||||
"v0",
|
"d0",
|
||||||
OrderByColumnSpec.Direction.DESCENDING,
|
OrderByColumnSpec.Direction.DESCENDING,
|
||||||
StringComparators.NUMERIC
|
StringComparators.NUMERIC
|
||||||
)
|
)
|
||||||
@ -8146,8 +8146,8 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
)
|
)
|
||||||
.setDimensions(
|
.setDimensions(
|
||||||
dimensions(
|
dimensions(
|
||||||
new DefaultDimensionSpec("v0", "v0", ValueType.LONG),
|
new DefaultDimensionSpec("v0", "d0", ValueType.LONG),
|
||||||
new DefaultDimensionSpec("dim2", "d0")
|
new DefaultDimensionSpec("dim2", "d1")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setAggregatorSpecs(
|
.setAggregatorSpecs(
|
||||||
@ -8159,12 +8159,12 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
new DefaultLimitSpec(
|
new DefaultLimitSpec(
|
||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
new OrderByColumnSpec(
|
new OrderByColumnSpec(
|
||||||
"v0",
|
"d0",
|
||||||
OrderByColumnSpec.Direction.ASCENDING,
|
OrderByColumnSpec.Direction.ASCENDING,
|
||||||
StringComparators.NUMERIC
|
StringComparators.NUMERIC
|
||||||
),
|
),
|
||||||
new OrderByColumnSpec(
|
new OrderByColumnSpec(
|
||||||
"d0",
|
"d1",
|
||||||
OrderByColumnSpec.Direction.ASCENDING,
|
OrderByColumnSpec.Direction.ASCENDING,
|
||||||
StringComparators.LEXICOGRAPHIC
|
StringComparators.LEXICOGRAPHIC
|
||||||
),
|
),
|
||||||
@ -8213,7 +8213,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
.setInterval(querySegmentSpec(Filtration.eternity()))
|
.setInterval(querySegmentSpec(Filtration.eternity()))
|
||||||
.setGranularity(Granularities.ALL)
|
.setGranularity(Granularities.ALL)
|
||||||
.setVirtualColumns(expressionVirtualColumn("v0", "strlen(\"dim1\")", ValueType.LONG))
|
.setVirtualColumns(expressionVirtualColumn("v0", "strlen(\"dim1\")", ValueType.LONG))
|
||||||
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "v0", ValueType.LONG)))
|
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "d0", ValueType.LONG)))
|
||||||
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
||||||
.setContext(QUERY_CONTEXT_DEFAULT)
|
.setContext(QUERY_CONTEXT_DEFAULT)
|
||||||
.build()
|
.build()
|
||||||
@ -8969,13 +8969,13 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
ValueType.LONG
|
ValueType.LONG
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "v0", ValueType.LONG)))
|
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "d0", ValueType.LONG)))
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
.setLimitSpec(
|
.setLimitSpec(
|
||||||
new DefaultLimitSpec(
|
new DefaultLimitSpec(
|
||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
new OrderByColumnSpec(
|
new OrderByColumnSpec(
|
||||||
"v0",
|
"d0",
|
||||||
OrderByColumnSpec.Direction.ASCENDING,
|
OrderByColumnSpec.Direction.ASCENDING,
|
||||||
StringComparators.NUMERIC
|
StringComparators.NUMERIC
|
||||||
)
|
)
|
||||||
@ -9020,13 +9020,13 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
ValueType.LONG
|
ValueType.LONG
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "v0", ValueType.LONG)))
|
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "d0", ValueType.LONG)))
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
.setLimitSpec(
|
.setLimitSpec(
|
||||||
new DefaultLimitSpec(
|
new DefaultLimitSpec(
|
||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
new OrderByColumnSpec(
|
new OrderByColumnSpec(
|
||||||
"v0",
|
"d0",
|
||||||
OrderByColumnSpec.Direction.ASCENDING,
|
OrderByColumnSpec.Direction.ASCENDING,
|
||||||
StringComparators.NUMERIC
|
StringComparators.NUMERIC
|
||||||
)
|
)
|
||||||
@ -9303,13 +9303,13 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
ValueType.LONG
|
ValueType.LONG
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "v0", ValueType.LONG)))
|
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "d0", ValueType.LONG)))
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
.setLimitSpec(
|
.setLimitSpec(
|
||||||
new DefaultLimitSpec(
|
new DefaultLimitSpec(
|
||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
new OrderByColumnSpec(
|
new OrderByColumnSpec(
|
||||||
"v0",
|
"d0",
|
||||||
OrderByColumnSpec.Direction.ASCENDING,
|
OrderByColumnSpec.Direction.ASCENDING,
|
||||||
StringComparators.NUMERIC
|
StringComparators.NUMERIC
|
||||||
)
|
)
|
||||||
@ -9352,13 +9352,13 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
ValueType.STRING
|
ValueType.STRING
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "v0", ValueType.STRING)))
|
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "d0", ValueType.STRING)))
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
.setLimitSpec(
|
.setLimitSpec(
|
||||||
new DefaultLimitSpec(
|
new DefaultLimitSpec(
|
||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
new OrderByColumnSpec(
|
new OrderByColumnSpec(
|
||||||
"v0",
|
"d0",
|
||||||
OrderByColumnSpec.Direction.ASCENDING,
|
OrderByColumnSpec.Direction.ASCENDING,
|
||||||
StringComparators.LEXICOGRAPHIC
|
StringComparators.LEXICOGRAPHIC
|
||||||
)
|
)
|
||||||
@ -9399,7 +9399,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
ValueType.LONG
|
ValueType.LONG
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "v0", ValueType.LONG)))
|
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "d0", ValueType.LONG)))
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
.setContext(QUERY_CONTEXT_DEFAULT)
|
.setContext(QUERY_CONTEXT_DEFAULT)
|
||||||
.build()
|
.build()
|
||||||
@ -9437,7 +9437,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
ValueType.LONG
|
ValueType.LONG
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "v0", ValueType.LONG)))
|
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "d0", ValueType.LONG)))
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
.setContext(QUERY_CONTEXT_LOS_ANGELES)
|
.setContext(QUERY_CONTEXT_LOS_ANGELES)
|
||||||
.build()
|
.build()
|
||||||
@ -9561,7 +9561,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
.setDimensions(
|
.setDimensions(
|
||||||
dimensions(
|
dimensions(
|
||||||
new DefaultDimensionSpec("dim2", "d0"),
|
new DefaultDimensionSpec("dim2", "d0"),
|
||||||
new DefaultDimensionSpec("v0", "v0", ValueType.LONG)
|
new DefaultDimensionSpec("v0", "d1", ValueType.LONG)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
@ -9570,7 +9570,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
new OrderByColumnSpec("d0", OrderByColumnSpec.Direction.ASCENDING),
|
new OrderByColumnSpec("d0", OrderByColumnSpec.Direction.ASCENDING),
|
||||||
new OrderByColumnSpec(
|
new OrderByColumnSpec(
|
||||||
"v0",
|
"d1",
|
||||||
OrderByColumnSpec.Direction.ASCENDING,
|
OrderByColumnSpec.Direction.ASCENDING,
|
||||||
StringComparators.NUMERIC
|
StringComparators.NUMERIC
|
||||||
)
|
)
|
||||||
@ -9629,16 +9629,16 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
)
|
)
|
||||||
.setDimensions(
|
.setDimensions(
|
||||||
dimensions(
|
dimensions(
|
||||||
new DefaultDimensionSpec("v0", "v0"),
|
new DefaultDimensionSpec("v0", "d0"),
|
||||||
new DefaultDimensionSpec("v1", "v1", ValueType.LONG)
|
new DefaultDimensionSpec("v1", "d1", ValueType.LONG)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
.setSubtotalsSpec(
|
.setSubtotalsSpec(
|
||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
ImmutableList.of("v0", "v1"),
|
ImmutableList.of("d0", "d1"),
|
||||||
ImmutableList.of("v0"),
|
ImmutableList.of("d0"),
|
||||||
ImmutableList.of("v1"),
|
ImmutableList.of("d1"),
|
||||||
ImmutableList.of()
|
ImmutableList.of()
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -9720,15 +9720,15 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
)
|
)
|
||||||
.setDimensions(
|
.setDimensions(
|
||||||
dimensions(
|
dimensions(
|
||||||
new DefaultDimensionSpec("v0", "v0"),
|
new DefaultDimensionSpec("v0", "d0"),
|
||||||
new DefaultDimensionSpec("v1", "v1", ValueType.LONG)
|
new DefaultDimensionSpec("v1", "d1", ValueType.LONG)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
.setSubtotalsSpec(
|
.setSubtotalsSpec(
|
||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
ImmutableList.of("v0", "v1"),
|
ImmutableList.of("d0", "d1"),
|
||||||
ImmutableList.of("v0"),
|
ImmutableList.of("d0"),
|
||||||
ImmutableList.of()
|
ImmutableList.of()
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -9779,15 +9779,15 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
)
|
)
|
||||||
.setDimensions(
|
.setDimensions(
|
||||||
dimensions(
|
dimensions(
|
||||||
new DefaultDimensionSpec("v0", "v0", ValueType.LONG),
|
new DefaultDimensionSpec("v0", "d0", ValueType.LONG),
|
||||||
new DefaultDimensionSpec("v1", "v1")
|
new DefaultDimensionSpec("v1", "d1")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
.setSubtotalsSpec(
|
.setSubtotalsSpec(
|
||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
ImmutableList.of("v0", "v1"),
|
ImmutableList.of("d0", "d1"),
|
||||||
ImmutableList.of("v0"),
|
ImmutableList.of("d0"),
|
||||||
ImmutableList.of()
|
ImmutableList.of()
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -9836,16 +9836,16 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
)
|
)
|
||||||
.setDimensions(
|
.setDimensions(
|
||||||
dimensions(
|
dimensions(
|
||||||
new DefaultDimensionSpec("v0", "v0"),
|
new DefaultDimensionSpec("v0", "d0"),
|
||||||
new DefaultDimensionSpec("v1", "v1", ValueType.LONG)
|
new DefaultDimensionSpec("v1", "d1", ValueType.LONG)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
.setSubtotalsSpec(
|
.setSubtotalsSpec(
|
||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
ImmutableList.of("v0", "v1"),
|
ImmutableList.of("d0", "d1"),
|
||||||
ImmutableList.of("v0"),
|
ImmutableList.of("d0"),
|
||||||
ImmutableList.of("v1"),
|
ImmutableList.of("d1"),
|
||||||
ImmutableList.of()
|
ImmutableList.of()
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -9897,17 +9897,17 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
)
|
)
|
||||||
.setDimensions(
|
.setDimensions(
|
||||||
dimensions(
|
dimensions(
|
||||||
new DefaultDimensionSpec("v0", "v0"),
|
new DefaultDimensionSpec("v0", "d0"),
|
||||||
new DefaultDimensionSpec("v2", "v2", ValueType.LONG)
|
new DefaultDimensionSpec("v2", "d2", ValueType.LONG)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
.setSubtotalsSpec(
|
.setSubtotalsSpec(
|
||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
ImmutableList.of("v0", "v2"),
|
ImmutableList.of("d0", "d2"),
|
||||||
ImmutableList.of("v0"),
|
ImmutableList.of("d0"),
|
||||||
ImmutableList.of(),
|
ImmutableList.of(),
|
||||||
ImmutableList.of("v2")
|
ImmutableList.of("d2")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setContext(QUERY_CONTEXT_DEFAULT)
|
.setContext(QUERY_CONTEXT_DEFAULT)
|
||||||
@ -9959,15 +9959,15 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
)
|
)
|
||||||
.setDimensions(
|
.setDimensions(
|
||||||
dimensions(
|
dimensions(
|
||||||
new DefaultDimensionSpec("v0", "v0"),
|
new DefaultDimensionSpec("v0", "d0"),
|
||||||
new DefaultDimensionSpec("v1", "v1", ValueType.LONG)
|
new DefaultDimensionSpec("v1", "d1", ValueType.LONG)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
.setSubtotalsSpec(
|
.setSubtotalsSpec(
|
||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
ImmutableList.of("v0"),
|
ImmutableList.of("d0"),
|
||||||
ImmutableList.of("v1"),
|
ImmutableList.of("d1"),
|
||||||
ImmutableList.of()
|
ImmutableList.of()
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -10015,15 +10015,15 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
)
|
)
|
||||||
.setDimensions(
|
.setDimensions(
|
||||||
dimensions(
|
dimensions(
|
||||||
new DefaultDimensionSpec("v0", "v0"),
|
new DefaultDimensionSpec("v0", "d0"),
|
||||||
new DefaultDimensionSpec("v1", "v1", ValueType.LONG)
|
new DefaultDimensionSpec("v1", "d1", ValueType.LONG)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
.setSubtotalsSpec(
|
.setSubtotalsSpec(
|
||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
ImmutableList.of("v0"),
|
ImmutableList.of("d0"),
|
||||||
ImmutableList.of("v1"),
|
ImmutableList.of("d1"),
|
||||||
ImmutableList.of()
|
ImmutableList.of()
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -10031,12 +10031,12 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
new DefaultLimitSpec(
|
new DefaultLimitSpec(
|
||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
new OrderByColumnSpec(
|
new OrderByColumnSpec(
|
||||||
"v1",
|
"d1",
|
||||||
Direction.ASCENDING,
|
Direction.ASCENDING,
|
||||||
StringComparators.NUMERIC
|
StringComparators.NUMERIC
|
||||||
),
|
),
|
||||||
new OrderByColumnSpec(
|
new OrderByColumnSpec(
|
||||||
"v0",
|
"d0",
|
||||||
Direction.DESCENDING,
|
Direction.DESCENDING,
|
||||||
StringComparators.LEXICOGRAPHIC
|
StringComparators.LEXICOGRAPHIC
|
||||||
)
|
)
|
||||||
@ -10088,15 +10088,15 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
)
|
)
|
||||||
.setDimensions(
|
.setDimensions(
|
||||||
dimensions(
|
dimensions(
|
||||||
new DefaultDimensionSpec("v0", "v0"),
|
new DefaultDimensionSpec("v0", "d0"),
|
||||||
new DefaultDimensionSpec("v1", "v1", ValueType.LONG)
|
new DefaultDimensionSpec("v1", "d1", ValueType.LONG)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
.setSubtotalsSpec(
|
.setSubtotalsSpec(
|
||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
ImmutableList.of("v0"),
|
ImmutableList.of("d0"),
|
||||||
ImmutableList.of("v1"),
|
ImmutableList.of("d1"),
|
||||||
ImmutableList.of()
|
ImmutableList.of()
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -10157,15 +10157,15 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
)
|
)
|
||||||
.setDimensions(
|
.setDimensions(
|
||||||
dimensions(
|
dimensions(
|
||||||
new DefaultDimensionSpec("v0", "v0"),
|
new DefaultDimensionSpec("v0", "d0"),
|
||||||
new DefaultDimensionSpec("v1", "v1", ValueType.LONG)
|
new DefaultDimensionSpec("v1", "d1", ValueType.LONG)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
.setSubtotalsSpec(
|
.setSubtotalsSpec(
|
||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
ImmutableList.of("v0"),
|
ImmutableList.of("d0"),
|
||||||
ImmutableList.of("v1"),
|
ImmutableList.of("d1"),
|
||||||
ImmutableList.of()
|
ImmutableList.of()
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -10457,7 +10457,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
selector("dim2", "abc", null)
|
selector("dim2", "abc", null)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "v0", ValueType.LONG)))
|
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "d0", ValueType.LONG)))
|
||||||
.setInterval(querySegmentSpec(Filtration.eternity()))
|
.setInterval(querySegmentSpec(Filtration.eternity()))
|
||||||
.setGranularity(Granularities.ALL)
|
.setGranularity(Granularities.ALL)
|
||||||
.setAggregatorSpecs(
|
.setAggregatorSpecs(
|
||||||
@ -10477,7 +10477,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
new DefaultLimitSpec(
|
new DefaultLimitSpec(
|
||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
new OrderByColumnSpec(
|
new OrderByColumnSpec(
|
||||||
"v0",
|
"d0",
|
||||||
OrderByColumnSpec.Direction.ASCENDING,
|
OrderByColumnSpec.Direction.ASCENDING,
|
||||||
StringComparators.NUMERIC
|
StringComparators.NUMERIC
|
||||||
)
|
)
|
||||||
@ -11444,7 +11444,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
ValueType.STRING
|
ValueType.STRING
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "v0", ValueType.STRING)))
|
.setDimensions(dimensions(new DefaultDimensionSpec("v0", "d0", ValueType.STRING)))
|
||||||
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
.setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0")))
|
||||||
.setContext(QUERY_CONTEXT_DEFAULT)
|
.setContext(QUERY_CONTEXT_DEFAULT)
|
||||||
.build()
|
.build()
|
||||||
@ -11501,7 +11501,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
.setVirtualColumns(expressionVirtualColumn("v0", "concat(\"dim3\",'foo')", ValueType.STRING))
|
.setVirtualColumns(expressionVirtualColumn("v0", "concat(\"dim3\",'foo')", ValueType.STRING))
|
||||||
.setDimensions(
|
.setDimensions(
|
||||||
dimensions(
|
dimensions(
|
||||||
new DefaultDimensionSpec("v0", "v0", ValueType.STRING)
|
new DefaultDimensionSpec("v0", "_d0", ValueType.STRING)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
@ -11536,7 +11536,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
.setVirtualColumns(expressionVirtualColumn("v0", "concat(\"dim3\",'foo')", ValueType.STRING))
|
.setVirtualColumns(expressionVirtualColumn("v0", "concat(\"dim3\",'foo')", ValueType.STRING))
|
||||||
.setDimensions(
|
.setDimensions(
|
||||||
dimensions(
|
dimensions(
|
||||||
new DefaultDimensionSpec("v0", "v0", ValueType.STRING)
|
new DefaultDimensionSpec("v0", "_d0", ValueType.STRING)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setDimFilter(selector("v0", "bfoo", null))
|
.setDimFilter(selector("v0", "bfoo", null))
|
||||||
@ -11820,13 +11820,13 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
.setDimensions(
|
.setDimensions(
|
||||||
dimensions(
|
dimensions(
|
||||||
new DefaultDimensionSpec("dim1", "_d0", ValueType.STRING),
|
new DefaultDimensionSpec("dim1", "_d0", ValueType.STRING),
|
||||||
new DefaultDimensionSpec("v0", "v0", ValueType.LONG)
|
new DefaultDimensionSpec("v0", "_d1", ValueType.LONG)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
.setLimitSpec(new DefaultLimitSpec(
|
.setLimitSpec(new DefaultLimitSpec(
|
||||||
ImmutableList.of(new OrderByColumnSpec(
|
ImmutableList.of(new OrderByColumnSpec(
|
||||||
"v0",
|
"_d1",
|
||||||
Direction.DESCENDING,
|
Direction.DESCENDING,
|
||||||
StringComparators.NUMERIC
|
StringComparators.NUMERIC
|
||||||
)),
|
)),
|
||||||
@ -11883,7 +11883,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
.setVirtualColumns(expressionVirtualColumn("v0", "array_append(\"dim3\",'foo')", ValueType.STRING))
|
.setVirtualColumns(expressionVirtualColumn("v0", "array_append(\"dim3\",'foo')", ValueType.STRING))
|
||||||
.setDimensions(
|
.setDimensions(
|
||||||
dimensions(
|
dimensions(
|
||||||
new DefaultDimensionSpec("v0", "v0", ValueType.STRING)
|
new DefaultDimensionSpec("v0", "_d0", ValueType.STRING)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
@ -11939,7 +11939,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
.setVirtualColumns(expressionVirtualColumn("v0", "array_prepend('foo',\"dim3\")", ValueType.STRING))
|
.setVirtualColumns(expressionVirtualColumn("v0", "array_prepend('foo',\"dim3\")", ValueType.STRING))
|
||||||
.setDimensions(
|
.setDimensions(
|
||||||
dimensions(
|
dimensions(
|
||||||
new DefaultDimensionSpec("v0", "v0", ValueType.STRING)
|
new DefaultDimensionSpec("v0", "_d0", ValueType.STRING)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
@ -11994,8 +11994,8 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
)
|
)
|
||||||
.setDimensions(
|
.setDimensions(
|
||||||
dimensions(
|
dimensions(
|
||||||
new DefaultDimensionSpec("v0", "v0", ValueType.STRING),
|
new DefaultDimensionSpec("v0", "_d0", ValueType.STRING),
|
||||||
new DefaultDimensionSpec("v1", "v1", ValueType.STRING)
|
new DefaultDimensionSpec("v1", "_d1", ValueType.STRING)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
@ -12049,7 +12049,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
.setVirtualColumns(expressionVirtualColumn("v0", "array_concat(\"dim3\",\"dim3\")", ValueType.STRING))
|
.setVirtualColumns(expressionVirtualColumn("v0", "array_concat(\"dim3\",\"dim3\")", ValueType.STRING))
|
||||||
.setDimensions(
|
.setDimensions(
|
||||||
dimensions(
|
dimensions(
|
||||||
new DefaultDimensionSpec("v0", "v0", ValueType.STRING)
|
new DefaultDimensionSpec("v0", "_d0", ValueType.STRING)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
@ -12084,7 +12084,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
.setVirtualColumns(expressionVirtualColumn("v0", "array_offset(\"dim3\",1)", ValueType.STRING))
|
.setVirtualColumns(expressionVirtualColumn("v0", "array_offset(\"dim3\",1)", ValueType.STRING))
|
||||||
.setDimensions(
|
.setDimensions(
|
||||||
dimensions(
|
dimensions(
|
||||||
new DefaultDimensionSpec("v0", "v0", ValueType.STRING)
|
new DefaultDimensionSpec("v0", "_d0", ValueType.STRING)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
@ -12123,7 +12123,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
.setVirtualColumns(expressionVirtualColumn("v0", "array_ordinal(\"dim3\",2)", ValueType.STRING))
|
.setVirtualColumns(expressionVirtualColumn("v0", "array_ordinal(\"dim3\",2)", ValueType.STRING))
|
||||||
.setDimensions(
|
.setDimensions(
|
||||||
dimensions(
|
dimensions(
|
||||||
new DefaultDimensionSpec("v0", "v0", ValueType.STRING)
|
new DefaultDimensionSpec("v0", "_d0", ValueType.STRING)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
@ -12162,7 +12162,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
.setVirtualColumns(expressionVirtualColumn("v0", "array_offset_of(\"dim3\",'b')", ValueType.LONG))
|
.setVirtualColumns(expressionVirtualColumn("v0", "array_offset_of(\"dim3\",'b')", ValueType.LONG))
|
||||||
.setDimensions(
|
.setDimensions(
|
||||||
dimensions(
|
dimensions(
|
||||||
new DefaultDimensionSpec("v0", "v0", ValueType.LONG)
|
new DefaultDimensionSpec("v0", "_d0", ValueType.LONG)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
@ -12201,7 +12201,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
.setVirtualColumns(expressionVirtualColumn("v0", "array_ordinal_of(\"dim3\",'b')", ValueType.LONG))
|
.setVirtualColumns(expressionVirtualColumn("v0", "array_ordinal_of(\"dim3\",'b')", ValueType.LONG))
|
||||||
.setDimensions(
|
.setDimensions(
|
||||||
dimensions(
|
dimensions(
|
||||||
new DefaultDimensionSpec("v0", "v0", ValueType.LONG)
|
new DefaultDimensionSpec("v0", "_d0", ValueType.LONG)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
@ -12257,7 +12257,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
.setVirtualColumns(expressionVirtualColumn("v0", "array_to_string(\"dim3\",',')", ValueType.STRING))
|
.setVirtualColumns(expressionVirtualColumn("v0", "array_to_string(\"dim3\",',')", ValueType.STRING))
|
||||||
.setDimensions(
|
.setDimensions(
|
||||||
dimensions(
|
dimensions(
|
||||||
new DefaultDimensionSpec("v0", "v0", ValueType.STRING)
|
new DefaultDimensionSpec("v0", "_d0", ValueType.STRING)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
@ -12319,7 +12319,7 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
.setDimFilter(bound("v0", "0", null, true, false, null, StringComparators.NUMERIC))
|
.setDimFilter(bound("v0", "0", null, true, false, null, StringComparators.NUMERIC))
|
||||||
.setDimensions(
|
.setDimensions(
|
||||||
dimensions(
|
dimensions(
|
||||||
new DefaultDimensionSpec("v1", "v1", ValueType.STRING)
|
new DefaultDimensionSpec("v1", "_d0", ValueType.STRING)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
.setAggregatorSpecs(aggregators(new LongSumAggregatorFactory("a0", "cnt")))
|
||||||
@ -12461,4 +12461,38 @@ public class CalciteQueryTest extends BaseCalciteQueryTest
|
|||||||
results2
|
results2
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testRepeatedIdenticalVirtualExpressionGrouping() throws Exception
|
||||||
|
{
|
||||||
|
cannotVectorize();
|
||||||
|
|
||||||
|
final String query = "SELECT \n"
|
||||||
|
+ "\tCASE dim1 WHEN NULL THEN FALSE ELSE TRUE END AS col_a,\n"
|
||||||
|
+ "\tCASE dim2 WHEN NULL THEN FALSE ELSE TRUE END AS col_b\n"
|
||||||
|
+ "FROM foo\n"
|
||||||
|
+ "GROUP BY 1, 2";
|
||||||
|
|
||||||
|
testQuery(
|
||||||
|
query,
|
||||||
|
ImmutableList.of(
|
||||||
|
GroupByQuery.builder()
|
||||||
|
.setDataSource(CalciteTests.DATASOURCE1)
|
||||||
|
.setInterval(querySegmentSpec(Filtration.eternity()))
|
||||||
|
.setGranularity(Granularities.ALL)
|
||||||
|
.setVirtualColumns(expressionVirtualColumn("v0", "1", ValueType.LONG))
|
||||||
|
.setDimensions(
|
||||||
|
dimensions(
|
||||||
|
new DefaultDimensionSpec("v0", "d0", ValueType.LONG),
|
||||||
|
new DefaultDimensionSpec("v0", "d1", ValueType.LONG)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.setContext(QUERY_CONTEXT_DEFAULT)
|
||||||
|
.build()
|
||||||
|
),
|
||||||
|
ImmutableList.of(
|
||||||
|
new Object[]{true, true}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user