clintropolis commented on code in PR #19061:
URL: https://github.com/apache/druid/pull/19061#discussion_r2943120622
##########
multi-stage-query/src/main/java/org/apache/druid/msq/indexing/MSQCompactionRunner.java:
##########
@@ -508,31 +548,47 @@ private Query<?> buildScanQuery(
Map<String, VirtualColumn> inputColToVirtualCol
)
{
- RowSignature rowSignature = getRowSignature(dataSchema);
- VirtualColumns virtualColumns = VirtualColumns.create(new
ArrayList<>(inputColToVirtualCol.values()));
+ RowSignature baseRowSignature = getRowSignature(dataSchema);
+ final List<String> columns = new
ArrayList<>(baseRowSignature.getColumnNames());
+ final List<OrderBy> orderBys;
+
+ RowSignature.Builder rowSignatureWithOrderByBuilder =
RowSignature.builder().addAll(baseRowSignature);
+
+ // when clustering by a virtual column, we might need to add the virtual
column to columns list and row signature
+ if (compactionTask.getTuningConfig() != null &&
compactionTask.getTuningConfig().getPartitionsSpec() != null) {
+ List<OrderByColumnSpec> orderByColumnSpecs =
getOrderBySpec(compactionTask.getTuningConfig().getPartitionsSpec());
+ orderBys = new ArrayList<>();
+ for (OrderByColumnSpec spec : orderByColumnSpecs) {
+ orderBys.add(new OrderBy(spec.getDimension(),
Order.fromString(spec.getDirection().toString())));
+
+ final VirtualColumn vc = inputColToVirtualCol.get(spec.getDimension());
+ if (vc != null) {
+ columns.add(spec.getDimension());
+ final ColumnCapabilities capabilities =
vc.capabilities(baseRowSignature, vc.getOutputName());
+ DruidException.conditionalDefensive(
+ capabilities != null,
+ "virtual column[%s] has null capabilities, cannot determine
output type",
+ vc.getOutputName()
+ );
+ rowSignatureWithOrderByBuilder.add(spec.getDimension(),
capabilities.toColumnType());
+ }
+ }
+ } else {
+ orderBys = null;
+ }
+
Druids.ScanQueryBuilder scanQueryBuilder = new Druids.ScanQueryBuilder()
.dataSource(getInputDataSource(dataSchema.getDataSource()))
- .columns(rowSignature.getColumnNames())
- .virtualColumns(virtualColumns)
- .columnTypes(rowSignature.getColumnTypes())
+ .columns(columns)
+ .virtualColumns(VirtualColumns.create(inputColToVirtualCol.values()))
+ .columnTypes(rowSignatureWithOrderByBuilder.build().getColumnTypes())
.intervals(segmentSpec)
.filters(dataSchema.getTransformSpec().getFilter())
+ .virtualColumns(VirtualColumns.create(inputColToVirtualCol.values()))
+ .columns(columns)
+ .columnTypes(rowSignatureWithOrderByBuilder.build().getColumnTypes())
Review Comment:
oops, made a mistake resolving merge conflicts
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]