This is an automated email from the ASF dual-hosted git repository.

cwylie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git


The following commit(s) were added to refs/heads/master by this push:
     new fef695115d4 allow Collection for VirtualColumns.create and tidy up 
callers (#19174)
fef695115d4 is described below

commit fef695115d4c27cc7658b9a31a73ac0cefbf2c9a
Author: Clint Wylie <[email protected]>
AuthorDate: Tue Mar 17 22:37:40 2026 -0700

    allow Collection for VirtualColumns.create and tidy up callers (#19174)
---
 .../benchmark/ExpressionSelectorBenchmark.java     |  36 ++++---
 .../ExpressionVectorSelectorBenchmark.java         |  13 +--
 .../druid/benchmark/JoinAndLookupBenchmark.java    |  24 ++---
 .../druid/segment/MapVirtualColumnGroupByTest.java |  12 +--
 .../druid/segment/MapVirtualColumnTopNTest.java    |   8 +-
 .../common/task/NativeCompactionRunnerTest.java    |  13 +--
 .../ReindexingDeletionRuleOptimizerTest.java       |  15 +--
 .../druid/msq/indexing/MSQCompactionRunner.java    |   4 +-
 .../input/table/DataSegmentWithLocationTest.java   |  13 +--
 .../processor/FrameChannelHashPartitioner.java     |   2 +-
 .../main/java/org/apache/druid/query/Druids.java   |   6 +-
 .../apache/druid/query/groupby/GroupByQuery.java   |   2 +-
 .../apache/druid/query/topn/TopNQueryBuilder.java  |   2 +-
 .../apache/druid/segment/UnnestCursorFactory.java  |   2 +-
 .../org/apache/druid/segment/VirtualColumns.java   |   3 +-
 .../apache/druid/frame/testutil/FrameTestUtil.java |   3 +-
 .../query/operator/ScanOperatorFactoryTest.java    |   4 +-
 .../search/SearchQueryQueryToolChestTest.java      |  12 +--
 .../druid/segment/RowBasedCursorFactoryTest.java   |  12 +--
 .../java/org/apache/druid/segment/TestIndex.java   |   5 +-
 .../apache/druid/segment/VirtualColumnsTest.java   |  28 +++--
 .../druid/segment/filter/BaseFilterTest.java       | 113 ++++++++++++++-------
 .../join/HashJoinSegmentCursorFactoryTest.java     |   9 +-
 .../druid/segment/join/JoinFilterAnalyzerTest.java |  48 ++++-----
 .../nested/NestedFieldColumnSelectorsTest.java     |  19 ++--
 .../transform/CompactionTransformSpecTest.java     |  13 +--
 .../virtual/ExpressionVectorSelectorsCastTest.java |  13 +--
 .../virtual/ExpressionVectorSelectorsTest.java     |  12 +--
 .../ListFilteredVirtualColumnSelectorTest.java     |   7 +-
 .../VirtualizedColumnSelectorFactoryTest.java      |   7 +-
 .../org/apache/druid/timeline/DataSegmentTest.java |  48 ++++-----
 .../compaction/ReindexingDeletionRuleTest.java     |  13 +--
 .../coordination/LoadableDataSegmentTest.java      |  13 +--
 ...InlineSchemaDataSourceCompactionConfigTest.java |  12 +--
 .../druid/server/http/DataSegmentPlusTest.java     |  12 +--
 .../druid/sql/calcite/CalciteArraysQueryTest.java  |   6 +-
 36 files changed, 262 insertions(+), 302 deletions(-)

diff --git 
a/benchmarks/src/test/java/org/apache/druid/benchmark/ExpressionSelectorBenchmark.java
 
b/benchmarks/src/test/java/org/apache/druid/benchmark/ExpressionSelectorBenchmark.java
index 9cd89cdfaac..1dc942e51c2 100644
--- 
a/benchmarks/src/test/java/org/apache/druid/benchmark/ExpressionSelectorBenchmark.java
+++ 
b/benchmarks/src/test/java/org/apache/druid/benchmark/ExpressionSelectorBenchmark.java
@@ -499,25 +499,23 @@ public class ExpressionSelectorBenchmark
     final CursorBuildSpec buildSpec = CursorBuildSpec.builder()
                                                      .setVirtualColumns(
                                                          VirtualColumns.create(
-                                                             ImmutableList.of(
-                                                                 new 
ExpressionVirtualColumn(
-                                                                     "ll",
-                                                                     
"lookup(s, 'lookyloo')",
-                                                                     
ColumnType.STRING,
-                                                                     
LookupEnabledTestExprMacroTable.INSTANCE
-                                                                 ),
-                                                                 new 
ExpressionVirtualColumn(
-                                                                     "v",
-                                                                     
"case_searched(n == 1001, -1, "
-                                                                     + "ll == 
'asd1', 1, "
-                                                                     + "ll == 
'asd2', 2, "
-                                                                     + "ll == 
'asd3', 3, "
-                                                                     + "ll == 
'asd4', 4, "
-                                                                     + "ll == 
'asd5', 5, "
-                                                                     + "-2)",
-                                                                     
ColumnType.LONG,
-                                                                     
LookupEnabledTestExprMacroTable.INSTANCE
-                                                                 )
+                                                             new 
ExpressionVirtualColumn(
+                                                                 "ll",
+                                                                 "lookup(s, 
'lookyloo')",
+                                                                 
ColumnType.STRING,
+                                                                 
LookupEnabledTestExprMacroTable.INSTANCE
+                                                             ),
+                                                             new 
ExpressionVirtualColumn(
+                                                                 "v",
+                                                                 
"case_searched(n == 1001, -1, "
+                                                                 + "ll == 
'asd1', 1, "
+                                                                 + "ll == 
'asd2', 2, "
+                                                                 + "ll == 
'asd3', 3, "
+                                                                 + "ll == 
'asd4', 4, "
+                                                                 + "ll == 
'asd5', 5, "
+                                                                 + "-2)",
+                                                                 
ColumnType.LONG,
+                                                                 
LookupEnabledTestExprMacroTable.INSTANCE
                                                              )
                                                          )
                                                      )
diff --git 
a/benchmarks/src/test/java/org/apache/druid/benchmark/ExpressionVectorSelectorBenchmark.java
 
b/benchmarks/src/test/java/org/apache/druid/benchmark/ExpressionVectorSelectorBenchmark.java
index 5071558e4fa..586a61c67bd 100644
--- 
a/benchmarks/src/test/java/org/apache/druid/benchmark/ExpressionVectorSelectorBenchmark.java
+++ 
b/benchmarks/src/test/java/org/apache/druid/benchmark/ExpressionVectorSelectorBenchmark.java
@@ -19,7 +19,6 @@
 
 package org.apache.druid.benchmark;
 
-import com.google.common.collect.ImmutableList;
 import org.apache.druid.java.util.common.granularity.Granularities;
 import org.apache.druid.java.util.common.io.Closer;
 import org.apache.druid.math.expr.Expr;
@@ -137,13 +136,11 @@ public class ExpressionVectorSelectorBenchmark
   public void scan(Blackhole blackhole)
   {
     final VirtualColumns virtualColumns = VirtualColumns.create(
-        ImmutableList.of(
-            new ExpressionVirtualColumn(
-                "v",
-                expression,
-                ExpressionType.toColumnType(outputType),
-                TestExprMacroTable.INSTANCE
-            )
+        new ExpressionVirtualColumn(
+            "v",
+            expression,
+            ExpressionType.toColumnType(outputType),
+            TestExprMacroTable.INSTANCE
         )
     );
     final CursorBuildSpec buildSpec = CursorBuildSpec.builder()
diff --git 
a/benchmarks/src/test/java/org/apache/druid/benchmark/JoinAndLookupBenchmark.java
 
b/benchmarks/src/test/java/org/apache/druid/benchmark/JoinAndLookupBenchmark.java
index 03278c453e9..9ec046e698f 100644
--- 
a/benchmarks/src/test/java/org/apache/druid/benchmark/JoinAndLookupBenchmark.java
+++ 
b/benchmarks/src/test/java/org/apache/druid/benchmark/JoinAndLookupBenchmark.java
@@ -317,19 +317,17 @@ public class JoinAndLookupBenchmark
     );
 
     lookupVirtualColumns = VirtualColumns.create(
-        ImmutableList.of(
-            new ExpressionVirtualColumn(
-                LOOKUP_COUNTRY_CODE_TO_NAME,
-                "lookup(countryIsoCode, '" + LOOKUP_COUNTRY_CODE_TO_NAME + 
"')",
-                ColumnType.STRING,
-                exprMacroTable
-            ),
-            new ExpressionVirtualColumn(
-                LOOKUP_COUNTRY_NUMBER_TO_NAME,
-                "lookup(countryNumber, '" + LOOKUP_COUNTRY_NUMBER_TO_NAME + 
"')",
-                ColumnType.STRING,
-                exprMacroTable
-            )
+        new ExpressionVirtualColumn(
+            LOOKUP_COUNTRY_CODE_TO_NAME,
+            "lookup(countryIsoCode, '" + LOOKUP_COUNTRY_CODE_TO_NAME + "')",
+            ColumnType.STRING,
+            exprMacroTable
+        ),
+        new ExpressionVirtualColumn(
+            LOOKUP_COUNTRY_NUMBER_TO_NAME,
+            "lookup(countryNumber, '" + LOOKUP_COUNTRY_NUMBER_TO_NAME + "')",
+            ColumnType.STRING,
+            exprMacroTable
         )
     );
   }
diff --git 
a/extensions-contrib/virtual-columns/src/test/java/org/apache/druid/segment/MapVirtualColumnGroupByTest.java
 
b/extensions-contrib/virtual-columns/src/test/java/org/apache/druid/segment/MapVirtualColumnGroupByTest.java
index 46248da5a7e..695d9964f7c 100644
--- 
a/extensions-contrib/virtual-columns/src/test/java/org/apache/druid/segment/MapVirtualColumnGroupByTest.java
+++ 
b/extensions-contrib/virtual-columns/src/test/java/org/apache/druid/segment/MapVirtualColumnGroupByTest.java
@@ -134,7 +134,7 @@ public class MapVirtualColumnGroupByTest extends 
InitializedNullHandlingTest
     final GroupByQuery query = new GroupByQuery(
         new TableDataSource(QueryRunnerTestHelper.DATA_SOURCE),
         new 
MultipleIntervalSegmentSpec(ImmutableList.of(Intervals.of("2011/2012"))),
-        VirtualColumns.create(ImmutableList.of(new MapVirtualColumn("keys", 
"values", "params"))),
+        VirtualColumns.create(new MapVirtualColumn("keys", "values", 
"params")),
         null,
         Granularities.ALL,
         ImmutableList.of(new DefaultDimensionSpec("params", "params")),
@@ -160,7 +160,7 @@ public class MapVirtualColumnGroupByTest extends 
InitializedNullHandlingTest
     final GroupByQuery query = new GroupByQuery(
         new TableDataSource(QueryRunnerTestHelper.DATA_SOURCE),
         new 
MultipleIntervalSegmentSpec(ImmutableList.of(Intervals.of("2011/2012"))),
-        VirtualColumns.create(ImmutableList.of(new MapVirtualColumn("keys", 
"values", "params"))),
+        VirtualColumns.create(new MapVirtualColumn("keys", "values", 
"params")),
         null,
         Granularities.ALL,
         ImmutableList.of(new DefaultDimensionSpec("params.key3", 
"params.key3")),
@@ -190,7 +190,7 @@ public class MapVirtualColumnGroupByTest extends 
InitializedNullHandlingTest
     final GroupByQuery query = new GroupByQuery(
         new TableDataSource(QueryRunnerTestHelper.DATA_SOURCE),
         new 
MultipleIntervalSegmentSpec(ImmutableList.of(Intervals.of("2011/2012"))),
-        VirtualColumns.create(ImmutableList.of(new MapVirtualColumn("keys", 
"values", "params"))),
+        VirtualColumns.create(new MapVirtualColumn("keys", "values", 
"params")),
         new EqualityFilter("params.key3", ColumnType.STRING, "value3", null),
         Granularities.ALL,
         ImmutableList.of(new DefaultDimensionSpec("params.key3", 
"params.key3")),
@@ -219,7 +219,7 @@ public class MapVirtualColumnGroupByTest extends 
InitializedNullHandlingTest
     final GroupByQuery query = new GroupByQuery(
         new TableDataSource(QueryRunnerTestHelper.DATA_SOURCE),
         new 
MultipleIntervalSegmentSpec(ImmutableList.of(Intervals.of("2011/2012"))),
-        VirtualColumns.create(ImmutableList.of(new MapVirtualColumn("keys", 
"values", "params"))),
+        VirtualColumns.create(new MapVirtualColumn("keys", "values", 
"params")),
         new InDimFilter("params.key3", ImmutableList.of("value1", "value3"), 
null),
         Granularities.ALL,
         ImmutableList.of(new DefaultDimensionSpec("params.key3", 
"params.key3")),
@@ -248,7 +248,7 @@ public class MapVirtualColumnGroupByTest extends 
InitializedNullHandlingTest
     final GroupByQuery query = new GroupByQuery(
         new TableDataSource(QueryRunnerTestHelper.DATA_SOURCE),
         new 
MultipleIntervalSegmentSpec(ImmutableList.of(Intervals.of("2011/2012"))),
-        VirtualColumns.create(ImmutableList.of(new MapVirtualColumn("keys", 
"values", "params"))),
+        VirtualColumns.create(new MapVirtualColumn("keys", "values", 
"params")),
         NotDimFilter.of(new EqualityFilter("params.key3", ColumnType.STRING, 
"value3", null)),
         Granularities.ALL,
         ImmutableList.of(new DefaultDimensionSpec("params.key3", 
"params.key3")),
@@ -272,7 +272,7 @@ public class MapVirtualColumnGroupByTest extends 
InitializedNullHandlingTest
     final GroupByQuery query = new GroupByQuery(
         new TableDataSource(QueryRunnerTestHelper.DATA_SOURCE),
         new 
MultipleIntervalSegmentSpec(ImmutableList.of(Intervals.of("2011/2012"))),
-        VirtualColumns.create(ImmutableList.of(new MapVirtualColumn("keys", 
"values", "params"))),
+        VirtualColumns.create(new MapVirtualColumn("keys", "values", 
"params")),
         NotDimFilter.of(new InDimFilter("params.key3", 
ImmutableList.of("value1", "value3"), null)),
         Granularities.ALL,
         ImmutableList.of(new DefaultDimensionSpec("params.key3", 
"params.key3")),
diff --git 
a/extensions-contrib/virtual-columns/src/test/java/org/apache/druid/segment/MapVirtualColumnTopNTest.java
 
b/extensions-contrib/virtual-columns/src/test/java/org/apache/druid/segment/MapVirtualColumnTopNTest.java
index 5e3c549a59d..4cbd0fdd43b 100644
--- 
a/extensions-contrib/virtual-columns/src/test/java/org/apache/druid/segment/MapVirtualColumnTopNTest.java
+++ 
b/extensions-contrib/virtual-columns/src/test/java/org/apache/druid/segment/MapVirtualColumnTopNTest.java
@@ -85,9 +85,7 @@ public class MapVirtualColumnTopNTest extends 
InitializedNullHandlingTest
     final TopNQuery query = new TopNQuery(
         new TableDataSource(QueryRunnerTestHelper.DATA_SOURCE),
         VirtualColumns.create(
-            ImmutableList.of(
-                new MapVirtualColumn("keys", "values", "params")
-            )
+            new MapVirtualColumn("keys", "values", "params")
         ),
         new DefaultDimensionSpec("params", "params"), // params is the map type
         new NumericTopNMetricSpec("count"),
@@ -111,9 +109,7 @@ public class MapVirtualColumnTopNTest extends 
InitializedNullHandlingTest
     final TopNQuery query = new TopNQuery(
         new TableDataSource(QueryRunnerTestHelper.DATA_SOURCE),
         VirtualColumns.create(
-            ImmutableList.of(
-                new MapVirtualColumn("keys", "values", "params")
-            )
+            new MapVirtualColumn("keys", "values", "params")
         ),
         new DefaultDimensionSpec("params.key3", "params.key3"), // params.key3 
is string
         new NumericTopNMetricSpec("count"),
diff --git 
a/indexing-service/src/test/java/org/apache/druid/indexing/common/task/NativeCompactionRunnerTest.java
 
b/indexing-service/src/test/java/org/apache/druid/indexing/common/task/NativeCompactionRunnerTest.java
index f13e98d3051..5ff01b3ffd9 100644
--- 
a/indexing-service/src/test/java/org/apache/druid/indexing/common/task/NativeCompactionRunnerTest.java
+++ 
b/indexing-service/src/test/java/org/apache/druid/indexing/common/task/NativeCompactionRunnerTest.java
@@ -19,7 +19,6 @@
 
 package org.apache.druid.indexing.common.task;
 
-import com.google.common.collect.ImmutableList;
 import org.apache.druid.indexing.common.SegmentCacheManagerFactory;
 import org.apache.druid.java.util.common.Intervals;
 import org.apache.druid.query.expression.TestExprMacroTable;
@@ -47,13 +46,11 @@ public class NativeCompactionRunnerTest
   public void testVirtualColumnsInTransformSpecAreNotSupported()
   {
     VirtualColumns virtualColumns = VirtualColumns.create(
-        ImmutableList.of(
-            new ExpressionVirtualColumn(
-                "extractedField",
-                "json_value(metadata, '$.category')",
-                ColumnType.STRING,
-                TestExprMacroTable.INSTANCE
-            )
+        new ExpressionVirtualColumn(
+            "extractedField",
+            "json_value(metadata, '$.category')",
+            ColumnType.STRING,
+            TestExprMacroTable.INSTANCE
         )
     );
 
diff --git 
a/indexing-service/src/test/java/org/apache/druid/indexing/compact/ReindexingDeletionRuleOptimizerTest.java
 
b/indexing-service/src/test/java/org/apache/druid/indexing/compact/ReindexingDeletionRuleOptimizerTest.java
index fdcc1a3c723..7e6c6b27b71 100644
--- 
a/indexing-service/src/test/java/org/apache/druid/indexing/compact/ReindexingDeletionRuleOptimizerTest.java
+++ 
b/indexing-service/src/test/java/org/apache/druid/indexing/compact/ReindexingDeletionRuleOptimizerTest.java
@@ -19,7 +19,6 @@
 
 package org.apache.druid.indexing.compact;
 
-import com.google.common.collect.ImmutableList;
 import org.apache.druid.jackson.DefaultObjectMapper;
 import org.apache.druid.java.util.common.DateTimes;
 import org.apache.druid.java.util.common.Intervals;
@@ -426,11 +425,9 @@ public class ReindexingDeletionRuleOptimizerTest
   {
     // Create virtual columns vc1, vc2, vc3
     VirtualColumns virtualColumns = VirtualColumns.create(
-        ImmutableList.of(
-            new ExpressionVirtualColumn("vc1", "col1 + 1", ColumnType.LONG, 
TestExprMacroTable.INSTANCE),
-            new ExpressionVirtualColumn("vc2", "col2 + 2", ColumnType.LONG, 
TestExprMacroTable.INSTANCE),
-            new ExpressionVirtualColumn("vc3", "col3 + 3", ColumnType.LONG, 
TestExprMacroTable.INSTANCE)
-        )
+        new ExpressionVirtualColumn("vc1", "col1 + 1", ColumnType.LONG, 
TestExprMacroTable.INSTANCE),
+        new ExpressionVirtualColumn("vc2", "col2 + 2", ColumnType.LONG, 
TestExprMacroTable.INSTANCE),
+        new ExpressionVirtualColumn("vc3", "col3 + 3", ColumnType.LONG, 
TestExprMacroTable.INSTANCE)
     );
 
     // Create a filter that only references vc1 and vc3 (vc2 is unreferenced)
@@ -469,10 +466,8 @@ public class ReindexingDeletionRuleOptimizerTest
   {
     // Create virtual columns
     VirtualColumns virtualColumns = VirtualColumns.create(
-        ImmutableList.of(
-            new ExpressionVirtualColumn("vc1", "col1 + 1", ColumnType.LONG, 
TestExprMacroTable.INSTANCE),
-            new ExpressionVirtualColumn("vc2", "col2 + 2", ColumnType.LONG, 
TestExprMacroTable.INSTANCE)
-        )
+        new ExpressionVirtualColumn("vc1", "col1 + 1", ColumnType.LONG, 
TestExprMacroTable.INSTANCE),
+        new ExpressionVirtualColumn("vc2", "col2 + 2", ColumnType.LONG, 
TestExprMacroTable.INSTANCE)
     );
 
     // Create a filter that references a physical column, not virtual columns
diff --git 
a/multi-stage-query/src/main/java/org/apache/druid/msq/indexing/MSQCompactionRunner.java
 
b/multi-stage-query/src/main/java/org/apache/druid/msq/indexing/MSQCompactionRunner.java
index 07dec885a77..7195303e4ef 100644
--- 
a/multi-stage-query/src/main/java/org/apache/druid/msq/indexing/MSQCompactionRunner.java
+++ 
b/multi-stage-query/src/main/java/org/apache/druid/msq/indexing/MSQCompactionRunner.java
@@ -509,7 +509,7 @@ public class MSQCompactionRunner implements CompactionRunner
   )
   {
     RowSignature rowSignature = getRowSignature(dataSchema);
-    VirtualColumns virtualColumns = VirtualColumns.create(new 
ArrayList<>(inputColToVirtualCol.values()));
+    VirtualColumns virtualColumns = 
VirtualColumns.create(inputColToVirtualCol.values());
     Druids.ScanQueryBuilder scanQueryBuilder = new Druids.ScanQueryBuilder()
         .dataSource(getInputDataSource(dataSchema.getDataSource()))
         .columns(rowSignature.getColumnNames())
@@ -648,7 +648,7 @@ public class MSQCompactionRunner implements CompactionRunner
   {
     DimFilter dimFilter = dataSchema.getTransformSpec().getFilter();
 
-    VirtualColumns virtualColumns = VirtualColumns.create(new 
ArrayList<>(inputColToVirtualCol.values()));
+    VirtualColumns virtualColumns = 
VirtualColumns.create(inputColToVirtualCol.values());
 
     // Convert MVDs converted to arrays back to MVDs, with the same name as 
the input column.
     // This is safe since input column names no longer exist at 
post-aggregation stage.
diff --git 
a/multi-stage-query/src/test/java/org/apache/druid/msq/input/table/DataSegmentWithLocationTest.java
 
b/multi-stage-query/src/test/java/org/apache/druid/msq/input/table/DataSegmentWithLocationTest.java
index 4fef5fd8d3d..dd75caaffa3 100644
--- 
a/multi-stage-query/src/test/java/org/apache/druid/msq/input/table/DataSegmentWithLocationTest.java
+++ 
b/multi-stage-query/src/test/java/org/apache/druid/msq/input/table/DataSegmentWithLocationTest.java
@@ -21,7 +21,6 @@ package org.apache.druid.msq.input.table;
 
 import com.fasterxml.jackson.databind.InjectableValues;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.collect.ImmutableList;
 import org.apache.druid.data.input.impl.DimensionsSpec;
 import org.apache.druid.indexer.granularity.GranularitySpec;
 import org.apache.druid.indexer.partitions.HashedPartitionsSpec;
@@ -80,13 +79,11 @@ public class DataSegmentWithLocationTest
         new CompactionTransformSpec(
             new SelectorDimFilter("dim1", "foo", null),
             VirtualColumns.create(
-                ImmutableList.of(
-                    new ExpressionVirtualColumn(
-                        "isRobotFiltered",
-                        "concat(isRobot, '_filtered')",
-                        ColumnType.STRING,
-                        ExprMacroTable.nil()
-                    )
+                new ExpressionVirtualColumn(
+                    "isRobotFiltered",
+                    "concat(isRobot, '_filtered')",
+                    ColumnType.STRING,
+                    ExprMacroTable.nil()
                 )
             )
         ),
diff --git 
a/processing/src/main/java/org/apache/druid/frame/processor/FrameChannelHashPartitioner.java
 
b/processing/src/main/java/org/apache/druid/frame/processor/FrameChannelHashPartitioner.java
index 033e8f921ea..d5f52465a08 100644
--- 
a/processing/src/main/java/org/apache/druid/frame/processor/FrameChannelHashPartitioner.java
+++ 
b/processing/src/main/java/org/apache/druid/frame/processor/FrameChannelHashPartitioner.java
@@ -209,7 +209,7 @@ public class FrameChannelHashPartitioner implements 
FrameProcessor<Long>
         cursor = FrameProcessors.makeCursor(
             frame,
             frameReader,
-            
VirtualColumns.create(Collections.singletonList(hashPartitionVirtualColumn))
+            VirtualColumns.create(hashPartitionVirtualColumn)
         );
 
         cursorRowPartitionNumberSupplier =
diff --git a/processing/src/main/java/org/apache/druid/query/Druids.java 
b/processing/src/main/java/org/apache/druid/query/Druids.java
index 24765f551e2..2bd173b22e0 100644
--- a/processing/src/main/java/org/apache/druid/query/Druids.java
+++ b/processing/src/main/java/org/apache/druid/query/Druids.java
@@ -200,7 +200,7 @@ public class Druids
 
     public TimeseriesQueryBuilder virtualColumns(VirtualColumn... 
virtualColumns)
     {
-      return 
virtualColumns(VirtualColumns.create(Arrays.asList(virtualColumns)));
+      return virtualColumns(VirtualColumns.create(virtualColumns));
     }
 
     public TimeseriesQueryBuilder filters(String dimensionName, String value)
@@ -445,7 +445,7 @@ public class Druids
 
     public SearchQueryBuilder virtualColumns(VirtualColumn... vc)
     {
-      virtualColumns = VirtualColumns.create(Arrays.asList(vc));
+      virtualColumns = VirtualColumns.create(vc);
       return this;
     }
 
@@ -906,7 +906,7 @@ public class Druids
 
     public ScanQueryBuilder virtualColumns(VirtualColumn... virtualColumns)
     {
-      return 
virtualColumns(VirtualColumns.create(Arrays.asList(virtualColumns)));
+      return virtualColumns(VirtualColumns.create(virtualColumns));
     }
 
     public ScanQueryBuilder context(Map<String, Object> c)
diff --git 
a/processing/src/main/java/org/apache/druid/query/groupby/GroupByQuery.java 
b/processing/src/main/java/org/apache/druid/query/groupby/GroupByQuery.java
index 4de4e592c7f..9faf0226bcb 100644
--- a/processing/src/main/java/org/apache/druid/query/groupby/GroupByQuery.java
+++ b/processing/src/main/java/org/apache/druid/query/groupby/GroupByQuery.java
@@ -1052,7 +1052,7 @@ public class GroupByQuery extends BaseQuery<ResultRow>
 
     public Builder setVirtualColumns(VirtualColumn... virtualColumns)
     {
-      this.virtualColumns = 
VirtualColumns.create(Arrays.asList(virtualColumns));
+      this.virtualColumns = VirtualColumns.create(virtualColumns);
       return this;
     }
 
diff --git 
a/processing/src/main/java/org/apache/druid/query/topn/TopNQueryBuilder.java 
b/processing/src/main/java/org/apache/druid/query/topn/TopNQueryBuilder.java
index 437f9fab101..8f2a7d44540 100644
--- a/processing/src/main/java/org/apache/druid/query/topn/TopNQueryBuilder.java
+++ b/processing/src/main/java/org/apache/druid/query/topn/TopNQueryBuilder.java
@@ -167,7 +167,7 @@ public class TopNQueryBuilder
 
   public TopNQueryBuilder virtualColumns(VirtualColumn... virtualColumns)
   {
-    return 
virtualColumns(VirtualColumns.create(Arrays.asList(virtualColumns)));
+    return virtualColumns(VirtualColumns.create(virtualColumns));
   }
 
   public TopNQueryBuilder dataSource(DataSource d)
diff --git 
a/processing/src/main/java/org/apache/druid/segment/UnnestCursorFactory.java 
b/processing/src/main/java/org/apache/druid/segment/UnnestCursorFactory.java
index 177f2c02416..8359b8664ab 100644
--- a/processing/src/main/java/org/apache/druid/segment/UnnestCursorFactory.java
+++ b/processing/src/main/java/org/apache/druid/segment/UnnestCursorFactory.java
@@ -514,7 +514,7 @@ public class UnnestCursorFactory implements CursorFactory
                           .setInterval(spec.getInterval())
                           .setFilter(baseTableFilter)
                           .setPhysicalColumns(physicalColumns)
-                          
.setVirtualColumns(VirtualColumns.create(List.of(unnestColumn)))
+                          
.setVirtualColumns(VirtualColumns.create(unnestColumn))
                           .setPreferredOrdering(maybeOrderByTime)
                           .setQueryContext(spec.getQueryContext())
                           .setQueryMetrics(spec.getQueryMetrics())
diff --git 
a/processing/src/main/java/org/apache/druid/segment/VirtualColumns.java 
b/processing/src/main/java/org/apache/druid/segment/VirtualColumns.java
index c0a3c885eea..c7d5cc54cb4 100644
--- a/processing/src/main/java/org/apache/druid/segment/VirtualColumns.java
+++ b/processing/src/main/java/org/apache/druid/segment/VirtualColumns.java
@@ -53,6 +53,7 @@ import 
org.apache.druid.segment.virtual.VirtualizedColumnSelectorFactory;
 import javax.annotation.Nullable;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -88,7 +89,7 @@ public class VirtualColumns implements Cacheable
   }
 
   @JsonCreator
-  public static VirtualColumns create(@Nullable List<VirtualColumn> 
virtualColumns)
+  public static VirtualColumns create(@Nullable Collection<VirtualColumn> 
virtualColumns)
   {
     if (virtualColumns == null || virtualColumns.isEmpty()) {
       return EMPTY;
diff --git 
a/processing/src/test/java/org/apache/druid/frame/testutil/FrameTestUtil.java 
b/processing/src/test/java/org/apache/druid/frame/testutil/FrameTestUtil.java
index 9ec348d7ea6..73f71375de4 100644
--- 
a/processing/src/test/java/org/apache/druid/frame/testutil/FrameTestUtil.java
+++ 
b/processing/src/test/java/org/apache/druid/frame/testutil/FrameTestUtil.java
@@ -62,7 +62,6 @@ import java.nio.channels.Channels;
 import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
@@ -308,7 +307,7 @@ public class FrameTestUtil
 
     if (populateRowNumber) {
       rowNumberVirtualColumn = new 
SettableLongVirtualColumn(ROW_NUMBER_COLUMN);
-      virtualColumns = 
VirtualColumns.create(Collections.singletonList(rowNumberVirtualColumn));
+      virtualColumns = VirtualColumns.create(rowNumberVirtualColumn);
     } else {
       rowNumberVirtualColumn = null;
       virtualColumns = VirtualColumns.EMPTY;
diff --git 
a/processing/src/test/java/org/apache/druid/query/operator/ScanOperatorFactoryTest.java
 
b/processing/src/test/java/org/apache/druid/query/operator/ScanOperatorFactoryTest.java
index 7e5fdc0e414..575d44d5918 100644
--- 
a/processing/src/test/java/org/apache/druid/query/operator/ScanOperatorFactoryTest.java
+++ 
b/processing/src/test/java/org/apache/druid/query/operator/ScanOperatorFactoryTest.java
@@ -88,9 +88,9 @@ public class ScanOperatorFactoryTest
         Collections.emptyList()
     };
     VirtualColumns[] virtualCols = new VirtualColumns[]{
-        VirtualColumns.create(Collections.singletonList(
+        VirtualColumns.create(
             new ExpressionVirtualColumn("test", "2", null, 
TestExprMacroTable.INSTANCE)
-        ))
+        )
     };
 
     for (int i = 0; i <= intervals.length; ++i) {
diff --git 
a/processing/src/test/java/org/apache/druid/query/search/SearchQueryQueryToolChestTest.java
 
b/processing/src/test/java/org/apache/druid/query/search/SearchQueryQueryToolChestTest.java
index fc2f4d24931..bff440e4720 100644
--- 
a/processing/src/test/java/org/apache/druid/query/search/SearchQueryQueryToolChestTest.java
+++ 
b/processing/src/test/java/org/apache/druid/query/search/SearchQueryQueryToolChestTest.java
@@ -94,9 +94,7 @@ public class SearchQueryQueryToolChestTest extends 
InitializedNullHandlingTest
         new 
MultipleIntervalSegmentSpec(ImmutableList.of(Intervals.of("2015-01-01/2015-01-02"))),
         ImmutableList.of(Druids.DIMENSION_IDENTITY.apply("v0")),
         VirtualColumns.create(
-            ImmutableList.of(
-                new ExpressionVirtualColumn("v0", "concat(dim1, 'foo')", 
ColumnType.STRING, TestExprMacroTable.INSTANCE)
-            )
+            new ExpressionVirtualColumn("v0", "concat(dim1, 'foo')", 
ColumnType.STRING, TestExprMacroTable.INSTANCE)
         ),
         new FragmentSearchQuerySpec(ImmutableList.of("a", "b")),
         null,
@@ -111,9 +109,7 @@ public class SearchQueryQueryToolChestTest extends 
InitializedNullHandlingTest
         new 
MultipleIntervalSegmentSpec(ImmutableList.of(Intervals.of("2015-01-01/2015-01-02"))),
         ImmutableList.of(Druids.DIMENSION_IDENTITY.apply("v0")),
         VirtualColumns.create(
-            ImmutableList.of(
-                new ExpressionVirtualColumn("v0", "concat(dim2, 'foo')", 
ColumnType.STRING, TestExprMacroTable.INSTANCE)
-            )
+            new ExpressionVirtualColumn("v0", "concat(dim2, 'foo')", 
ColumnType.STRING, TestExprMacroTable.INSTANCE)
         ),
         new FragmentSearchQuerySpec(ImmutableList.of("a", "b")),
         null,
@@ -128,9 +124,7 @@ public class SearchQueryQueryToolChestTest extends 
InitializedNullHandlingTest
         new 
MultipleIntervalSegmentSpec(ImmutableList.of(Intervals.of("2015-01-01/2015-01-02"))),
         ImmutableList.of(Druids.DIMENSION_IDENTITY.apply("v0")),
         VirtualColumns.create(
-            ImmutableList.of(
-                new ExpressionVirtualColumn("v0", "concat(dim1, 'foo')", 
ColumnType.STRING, TestExprMacroTable.INSTANCE)
-            )
+            new ExpressionVirtualColumn("v0", "concat(dim1, 'foo')", 
ColumnType.STRING, TestExprMacroTable.INSTANCE)
         ),
         new FragmentSearchQuerySpec(ImmutableList.of("a", "b")),
         null,
diff --git 
a/processing/src/test/java/org/apache/druid/segment/RowBasedCursorFactoryTest.java
 
b/processing/src/test/java/org/apache/druid/segment/RowBasedCursorFactoryTest.java
index 2b261346508..288603bead0 100644
--- 
a/processing/src/test/java/org/apache/druid/segment/RowBasedCursorFactoryTest.java
+++ 
b/processing/src/test/java/org/apache/druid/segment/RowBasedCursorFactoryTest.java
@@ -432,13 +432,11 @@ public class RowBasedCursorFactoryTest
                                                      .setFilter(new 
SelectorDimFilter("vc", "2", null).toFilter())
                                                      .setVirtualColumns(
                                                          VirtualColumns.create(
-                                                             ImmutableList.of(
-                                                                 new 
ExpressionVirtualColumn(
-                                                                     "vc",
-                                                                     "\"LONG\" 
+ 1",
-                                                                     
ColumnType.LONG,
-                                                                     
ExprMacroTable.nil()
-                                                                 )
+                                                             new 
ExpressionVirtualColumn(
+                                                                 "vc",
+                                                                 "\"LONG\" + 
1",
+                                                                 
ColumnType.LONG,
+                                                                 
ExprMacroTable.nil()
                                                              )
                                                          )
                                                      )
diff --git a/processing/src/test/java/org/apache/druid/segment/TestIndex.java 
b/processing/src/test/java/org/apache/druid/segment/TestIndex.java
index c4d363b8ae8..bc9006954a0 100644
--- a/processing/src/test/java/org/apache/druid/segment/TestIndex.java
+++ b/processing/src/test/java/org/apache/druid/segment/TestIndex.java
@@ -73,7 +73,6 @@ import java.io.IOException;
 import java.net.URL;
 import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.stream.Collectors;
@@ -172,9 +171,7 @@ public class TestIndex
   public static final Interval DATA_INTERVAL = 
Intervals.of("2011-01-12T00:00:00.000Z/2011-05-01T00:00:00.000Z");
   private static final Logger log = new Logger(TestIndex.class);
   private static final VirtualColumns VIRTUAL_COLUMNS = VirtualColumns.create(
-      Collections.singletonList(
-          new ExpressionVirtualColumn("expr", "index + 10", ColumnType.FLOAT, 
TestExprMacroTable.INSTANCE)
-      )
+      new ExpressionVirtualColumn("expr", "index + 10", ColumnType.FLOAT, 
TestExprMacroTable.INSTANCE)
   );
   public static final AggregatorFactory[] METRIC_AGGS = new 
AggregatorFactory[]{
       new DoubleSumAggregatorFactory(DOUBLE_METRICS[0], "index"),
diff --git 
a/processing/src/test/java/org/apache/druid/segment/VirtualColumnsTest.java 
b/processing/src/test/java/org/apache/druid/segment/VirtualColumnsTest.java
index 5466748a76a..c3ffe267638 100644
--- a/processing/src/test/java/org/apache/druid/segment/VirtualColumnsTest.java
+++ b/processing/src/test/java/org/apache/druid/segment/VirtualColumnsTest.java
@@ -347,7 +347,7 @@ public class VirtualColumnsTest extends 
InitializedNullHandlingTest
 
     Throwable t = Assert.assertThrows(
         IllegalArgumentException.class,
-        () -> VirtualColumns.create(ImmutableList.of(expr))
+        () -> VirtualColumns.create(expr)
     );
     Assert.assertEquals("virtualColumn name[__time] not allowed", 
t.getMessage());
   }
@@ -371,7 +371,7 @@ public class VirtualColumnsTest extends 
InitializedNullHandlingTest
 
     Throwable t = Assert.assertThrows(
         IllegalArgumentException.class,
-        () -> VirtualColumns.create(ImmutableList.of(expr, expr2))
+        () -> VirtualColumns.create(expr, expr2)
     );
     Assert.assertEquals("Duplicate virtualColumn name[expr]", t.getMessage());
   }
@@ -398,7 +398,7 @@ public class VirtualColumnsTest extends 
InitializedNullHandlingTest
 
     Throwable t = Assert.assertThrows(
         IllegalArgumentException.class,
-        () -> VirtualColumns.create(ImmutableList.of(expr, expr2))
+        () -> VirtualColumns.create(expr, expr2)
     );
     Assert.assertEquals("Self-referential column[expr]", t.getMessage());
   }
@@ -431,7 +431,7 @@ public class VirtualColumnsTest extends 
InitializedNullHandlingTest
         TestExprMacroTable.INSTANCE
     );
 
-    final VirtualColumns virtualColumns = 
VirtualColumns.create(ImmutableList.of(expr, expr2, expr3));
+    final VirtualColumns virtualColumns = VirtualColumns.create(expr, expr2, 
expr3);
     Assert.assertEquals(3, virtualColumns.getColumnNames().size());
   }
 
@@ -439,15 +439,11 @@ public class VirtualColumnsTest extends 
InitializedNullHandlingTest
   public void testGetCacheKey()
   {
     final VirtualColumns virtualColumns = VirtualColumns.create(
-        ImmutableList.of(
-            new ExpressionVirtualColumn("expr", "x + y", ColumnType.FLOAT, 
TestExprMacroTable.INSTANCE)
-        )
+        new ExpressionVirtualColumn("expr", "x + y", ColumnType.FLOAT, 
TestExprMacroTable.INSTANCE)
     );
 
     final VirtualColumns virtualColumns2 = VirtualColumns.create(
-        ImmutableList.of(
-            new ExpressionVirtualColumn("expr", "x + y", ColumnType.FLOAT, 
TestExprMacroTable.INSTANCE)
-        )
+        new ExpressionVirtualColumn("expr", "x + y", ColumnType.FLOAT, 
TestExprMacroTable.INSTANCE)
     );
 
     Assert.assertArrayEquals(virtualColumns.getCacheKey(), 
virtualColumns2.getCacheKey());
@@ -478,7 +474,7 @@ public class VirtualColumnsTest extends 
InitializedNullHandlingTest
         ColumnType.FLOAT,
         TestExprMacroTable.INSTANCE
     );
-    final VirtualColumns virtualColumns = 
VirtualColumns.create(ImmutableList.of(v0));
+    final VirtualColumns virtualColumns = VirtualColumns.create(v0);
 
     final VirtualColumn v1 = new ExpressionVirtualColumn(
         "differentNameExpr",
@@ -538,7 +534,7 @@ public class VirtualColumnsTest extends 
InitializedNullHandlingTest
     final ExpressionVirtualColumn expr1 = new ExpressionVirtualColumn("v1", "1 
+ x", ColumnType.LONG, TestExprMacroTable.INSTANCE);
     final ExpressionVirtualColumn expr2 = new ExpressionVirtualColumn("v2", "1 
+ y", ColumnType.LONG, TestExprMacroTable.INSTANCE);
     final ExpressionVirtualColumn expr0 = new ExpressionVirtualColumn("v0", 
"case_searched(notnull(1 + x), v1, v2)", ColumnType.LONG, 
TestExprMacroTable.INSTANCE);
-    final VirtualColumns virtualColumns = 
VirtualColumns.create(ImmutableList.of(expr0, expr1, expr2));
+    final VirtualColumns virtualColumns = VirtualColumns.create(expr0, expr1, 
expr2);
 
     Assert.assertTrue(virtualColumns.exists("v0"));
     Assert.assertTrue(virtualColumns.exists("v1"));
@@ -551,7 +547,7 @@ public class VirtualColumnsTest extends 
InitializedNullHandlingTest
     final ExpressionVirtualColumn expr1 = new ExpressionVirtualColumn("v1", "1 
+ x", ColumnType.LONG, TestExprMacroTable.INSTANCE);
     final ExpressionVirtualColumn expr2 = new ExpressionVirtualColumn("v2", "1 
+ y", ColumnType.LONG, TestExprMacroTable.INSTANCE);
     final ExpressionVirtualColumn expr0 = new ExpressionVirtualColumn("v0", 
"case_searched(notnull(v1), v1, v2)", ColumnType.LONG, 
TestExprMacroTable.INSTANCE);
-    final VirtualColumns virtualColumns = 
VirtualColumns.create(ImmutableList.of(expr0, expr1, expr2));
+    final VirtualColumns virtualColumns = VirtualColumns.create(expr0, expr1, 
expr2);
 
     Assert.assertTrue(virtualColumns.exists("v0"));
     Assert.assertTrue(virtualColumns.exists("v1"));
@@ -564,7 +560,7 @@ public class VirtualColumnsTest extends 
InitializedNullHandlingTest
     final ExpressionVirtualColumn expr1 = new ExpressionVirtualColumn("v1", "1 
+ x", ColumnType.LONG, TestExprMacroTable.INSTANCE);
     final ExpressionVirtualColumn expr2 = new ExpressionVirtualColumn("v2", "1 
+ v1", ColumnType.LONG, TestExprMacroTable.INSTANCE);
     final ExpressionVirtualColumn expr0 = new ExpressionVirtualColumn("v0", 
"v1 + v2", ColumnType.LONG, TestExprMacroTable.INSTANCE);
-    final VirtualColumns virtualColumns = 
VirtualColumns.create(ImmutableList.of(expr0, expr1, expr2));
+    final VirtualColumns virtualColumns = VirtualColumns.create(expr0, expr1, 
expr2);
 
     Assert.assertTrue(virtualColumns.exists("v0"));
     Assert.assertTrue(virtualColumns.exists("v1"));
@@ -593,7 +589,7 @@ public class VirtualColumnsTest extends 
InitializedNullHandlingTest
     final NestedFieldVirtualColumn v1 = new NestedFieldVirtualColumn("n", 
"$.y", "v1", ColumnType.LONG);
     final ExpressionVirtualColumn expr1 = new ExpressionVirtualColumn("v2", 
"v0 * v1", null, TestExprMacroTable.INSTANCE);
     final ExpressionVirtualColumn expr2 = new ExpressionVirtualColumn("v3", 
"v0 * x", null, TestExprMacroTable.INSTANCE);
-    final VirtualColumns virtualColumns = 
VirtualColumns.create(ImmutableList.of(v0, v1, expr1, expr2));
+    final VirtualColumns virtualColumns = VirtualColumns.create(v0, v1, expr1, 
expr2);
 
     Assert.assertEquals(ColumnType.STRING, 
virtualColumns.getColumnCapabilitiesWithoutFallback(baseInspector, 
"v0").toColumnType());
     Assert.assertEquals(ColumnType.LONG, 
virtualColumns.getColumnCapabilitiesWithoutFallback(baseInspector, 
"v1").toColumnType());
@@ -628,7 +624,7 @@ public class VirtualColumnsTest extends 
InitializedNullHandlingTest
         TestExprMacroTable.INSTANCE
     );
     final DottyVirtualColumn dotty = new DottyVirtualColumn("foo");
-    return VirtualColumns.create(ImmutableList.of(expr, expr2i, expr2, dotty));
+    return VirtualColumns.create(expr, expr2i, expr2, dotty);
   }
 
   static class DottyVirtualColumn implements VirtualColumn
diff --git 
a/processing/src/test/java/org/apache/druid/segment/filter/BaseFilterTest.java 
b/processing/src/test/java/org/apache/druid/segment/filter/BaseFilterTest.java
index a198e22f7a1..01f1aa4b427 100644
--- 
a/processing/src/test/java/org/apache/druid/segment/filter/BaseFilterTest.java
+++ 
b/processing/src/test/java/org/apache/druid/segment/filter/BaseFilterTest.java
@@ -130,41 +130,84 @@ public abstract class BaseFilterTest extends 
InitializedNullHandlingTest
   static final String TIMESTAMP_COLUMN = "timestamp";
 
   static final VirtualColumns VIRTUAL_COLUMNS = VirtualColumns.create(
-      ImmutableList.of(
-          new ExpressionVirtualColumn("expr", "1.0 + 0.1", ColumnType.FLOAT, 
TestExprMacroTable.INSTANCE),
-          new ExpressionVirtualColumn("exprDouble", "1.0 + 1.1", 
ColumnType.DOUBLE, TestExprMacroTable.INSTANCE),
-          new ExpressionVirtualColumn("exprLong", "1 + 2", ColumnType.LONG, 
TestExprMacroTable.INSTANCE),
-          new ExpressionVirtualColumn("vdim0", "dim0", ColumnType.STRING, 
TestExprMacroTable.INSTANCE),
-          new ExpressionVirtualColumn("vdim1", "dim1", ColumnType.STRING, 
TestExprMacroTable.INSTANCE),
-          new ExpressionVirtualColumn("vs0", "s0", ColumnType.STRING, 
TestExprMacroTable.INSTANCE),
-          new ExpressionVirtualColumn("vd0", "d0", ColumnType.DOUBLE, 
TestExprMacroTable.INSTANCE),
-          new ExpressionVirtualColumn("vf0", "f0", ColumnType.FLOAT, 
TestExprMacroTable.INSTANCE),
-          new ExpressionVirtualColumn("vl0", "l0", ColumnType.LONG, 
TestExprMacroTable.INSTANCE),
-          new ExpressionVirtualColumn("vd0-nvl-2", "nvl(vd0, 2.0)", 
ColumnType.DOUBLE, TestExprMacroTable.INSTANCE),
-          new ExpressionVirtualColumn("vd0-add-sub", "d0 + (d0 - d0)", 
ColumnType.DOUBLE, TestExprMacroTable.INSTANCE),
-          new ExpressionVirtualColumn("vf0-add-sub", "f0 + (f0 - f0)", 
ColumnType.FLOAT, TestExprMacroTable.INSTANCE),
-          new ExpressionVirtualColumn("vl0-add-sub", "l0 + (l0 - l0)", 
ColumnType.LONG, TestExprMacroTable.INSTANCE),
-          new ExpressionVirtualColumn("double-vd0-add-sub", "vd0 + (vd0 - 
vd0)", ColumnType.DOUBLE, TestExprMacroTable.INSTANCE),
-          new ExpressionVirtualColumn("double-vf0-add-sub", "vf0 + (vf0 - 
vf0)", ColumnType.FLOAT, TestExprMacroTable.INSTANCE),
-          new ExpressionVirtualColumn("double-vl0-add-sub", "vl0 + (vl0 - 
vl0)", ColumnType.LONG, TestExprMacroTable.INSTANCE),
-          new ExpressionVirtualColumn("vdim3-concat", "dim3 + dim3", 
ColumnType.LONG, TestExprMacroTable.INSTANCE),
-          new ExpressionVirtualColumn("vdim2-offset", "array_offset(dim2, 1)", 
ColumnType.STRING, TestExprMacroTable.INSTANCE),
-          new ExpressionVirtualColumn("nestedArrayLong", "array(arrayLong)", 
ColumnType.ofArray(ColumnType.LONG_ARRAY), TestExprMacroTable.INSTANCE),
-          new ExpressionVirtualColumn("fake-nvl", "nvl(fake, 'hello')", 
ColumnType.STRING, TestExprMacroTable.INSTANCE),
-          new ListFilteredVirtualColumn("allow-dim0", 
DefaultDimensionSpec.of("dim0"), ImmutableSet.of("3", "4"), true),
-          new ListFilteredVirtualColumn("deny-dim0", 
DefaultDimensionSpec.of("dim0"), ImmutableSet.of("3", "4"), false),
-          new ListFilteredVirtualColumn("allow-dim2", 
DefaultDimensionSpec.of("dim2"), ImmutableSet.of("a"), true),
-          new ListFilteredVirtualColumn("deny-dim2", 
DefaultDimensionSpec.of("dim2"), ImmutableSet.of("a"), false),
-          new NestedFieldVirtualColumn("nested", "$.s0", "nested.s0", 
ColumnType.STRING),
-          new NestedFieldVirtualColumn("nested", "$.d0", "nested.d0", 
ColumnType.DOUBLE),
-          new NestedFieldVirtualColumn("nested", "$.l0", "nested.l0", 
ColumnType.LONG),
-          new NestedFieldVirtualColumn("nested", "$.arrayLong", 
"nested.arrayLong", ColumnType.LONG_ARRAY),
-          new NestedFieldVirtualColumn("nested", "$.arrayDouble", 
"nested.arrayDouble", ColumnType.DOUBLE_ARRAY),
-          new NestedFieldVirtualColumn("nested", "$.arrayString", 
"nested.arrayString", ColumnType.STRING_ARRAY),
-          new ExpressionVirtualColumn("arrayLongAsMvd", 
"array_to_mv(arrayLong)", ColumnType.STRING, TestExprMacroTable.INSTANCE),
-          new ExpressionVirtualColumn("arrayDoubleAsMvd", 
"array_to_mv(arrayDouble)", ColumnType.STRING, TestExprMacroTable.INSTANCE),
-          new ExpressionVirtualColumn("arrayStringAsMvd", 
"array_to_mv(arrayString)", ColumnType.STRING, TestExprMacroTable.INSTANCE),
-          new ExpressionVirtualColumn("arrayConstantAsMvd", 
"array_to_mv(array(1,2,3))", ColumnType.STRING, TestExprMacroTable.INSTANCE)
+      new ExpressionVirtualColumn("expr", "1.0 + 0.1", ColumnType.FLOAT, 
TestExprMacroTable.INSTANCE),
+      new ExpressionVirtualColumn("exprDouble", "1.0 + 1.1", 
ColumnType.DOUBLE, TestExprMacroTable.INSTANCE),
+      new ExpressionVirtualColumn("exprLong", "1 + 2", ColumnType.LONG, 
TestExprMacroTable.INSTANCE),
+      new ExpressionVirtualColumn("vdim0", "dim0", ColumnType.STRING, 
TestExprMacroTable.INSTANCE),
+      new ExpressionVirtualColumn("vdim1", "dim1", ColumnType.STRING, 
TestExprMacroTable.INSTANCE),
+      new ExpressionVirtualColumn("vs0", "s0", ColumnType.STRING, 
TestExprMacroTable.INSTANCE),
+      new ExpressionVirtualColumn("vd0", "d0", ColumnType.DOUBLE, 
TestExprMacroTable.INSTANCE),
+      new ExpressionVirtualColumn("vf0", "f0", ColumnType.FLOAT, 
TestExprMacroTable.INSTANCE),
+      new ExpressionVirtualColumn("vl0", "l0", ColumnType.LONG, 
TestExprMacroTable.INSTANCE),
+      new ExpressionVirtualColumn("vd0-nvl-2", "nvl(vd0, 2.0)", 
ColumnType.DOUBLE, TestExprMacroTable.INSTANCE),
+      new ExpressionVirtualColumn("vd0-add-sub", "d0 + (d0 - d0)", 
ColumnType.DOUBLE, TestExprMacroTable.INSTANCE),
+      new ExpressionVirtualColumn("vf0-add-sub", "f0 + (f0 - f0)", 
ColumnType.FLOAT, TestExprMacroTable.INSTANCE),
+      new ExpressionVirtualColumn("vl0-add-sub", "l0 + (l0 - l0)", 
ColumnType.LONG, TestExprMacroTable.INSTANCE),
+      new ExpressionVirtualColumn(
+          "double-vd0-add-sub",
+          "vd0 + (vd0 - vd0)",
+          ColumnType.DOUBLE,
+          TestExprMacroTable.INSTANCE
+      ),
+      new ExpressionVirtualColumn(
+          "double-vf0-add-sub",
+          "vf0 + (vf0 - vf0)",
+          ColumnType.FLOAT,
+          TestExprMacroTable.INSTANCE
+      ),
+      new ExpressionVirtualColumn(
+          "double-vl0-add-sub",
+          "vl0 + (vl0 - vl0)",
+          ColumnType.LONG,
+          TestExprMacroTable.INSTANCE
+      ),
+      new ExpressionVirtualColumn("vdim3-concat", "dim3 + dim3", 
ColumnType.LONG, TestExprMacroTable.INSTANCE),
+      new ExpressionVirtualColumn(
+          "vdim2-offset",
+          "array_offset(dim2, 1)",
+          ColumnType.STRING,
+          TestExprMacroTable.INSTANCE
+      ),
+      new ExpressionVirtualColumn(
+          "nestedArrayLong",
+          "array(arrayLong)",
+          ColumnType.ofArray(ColumnType.LONG_ARRAY),
+          TestExprMacroTable.INSTANCE
+      ),
+      new ExpressionVirtualColumn("fake-nvl", "nvl(fake, 'hello')", 
ColumnType.STRING, TestExprMacroTable.INSTANCE),
+      new ListFilteredVirtualColumn("allow-dim0", 
DefaultDimensionSpec.of("dim0"), ImmutableSet.of("3", "4"), true),
+      new ListFilteredVirtualColumn("deny-dim0", 
DefaultDimensionSpec.of("dim0"), ImmutableSet.of("3", "4"), false),
+      new ListFilteredVirtualColumn("allow-dim2", 
DefaultDimensionSpec.of("dim2"), ImmutableSet.of("a"), true),
+      new ListFilteredVirtualColumn("deny-dim2", 
DefaultDimensionSpec.of("dim2"), ImmutableSet.of("a"), false),
+      new NestedFieldVirtualColumn("nested", "$.s0", "nested.s0", 
ColumnType.STRING),
+      new NestedFieldVirtualColumn("nested", "$.d0", "nested.d0", 
ColumnType.DOUBLE),
+      new NestedFieldVirtualColumn("nested", "$.l0", "nested.l0", 
ColumnType.LONG),
+      new NestedFieldVirtualColumn("nested", "$.arrayLong", 
"nested.arrayLong", ColumnType.LONG_ARRAY),
+      new NestedFieldVirtualColumn("nested", "$.arrayDouble", 
"nested.arrayDouble", ColumnType.DOUBLE_ARRAY),
+      new NestedFieldVirtualColumn("nested", "$.arrayString", 
"nested.arrayString", ColumnType.STRING_ARRAY),
+      new ExpressionVirtualColumn(
+          "arrayLongAsMvd",
+          "array_to_mv(arrayLong)",
+          ColumnType.STRING,
+          TestExprMacroTable.INSTANCE
+      ),
+      new ExpressionVirtualColumn(
+          "arrayDoubleAsMvd",
+          "array_to_mv(arrayDouble)",
+          ColumnType.STRING,
+          TestExprMacroTable.INSTANCE
+      ),
+      new ExpressionVirtualColumn(
+          "arrayStringAsMvd",
+          "array_to_mv(arrayString)",
+          ColumnType.STRING,
+          TestExprMacroTable.INSTANCE
+      ),
+      new ExpressionVirtualColumn(
+          "arrayConstantAsMvd",
+          "array_to_mv(array(1,2,3))",
+          ColumnType.STRING,
+          TestExprMacroTable.INSTANCE
       )
   );
 
diff --git 
a/processing/src/test/java/org/apache/druid/segment/join/HashJoinSegmentCursorFactoryTest.java
 
b/processing/src/test/java/org/apache/druid/segment/join/HashJoinSegmentCursorFactoryTest.java
index 32acee4cd73..e1b4ffdf541 100644
--- 
a/processing/src/test/java/org/apache/druid/segment/join/HashJoinSegmentCursorFactoryTest.java
+++ 
b/processing/src/test/java/org/apache/druid/segment/join/HashJoinSegmentCursorFactoryTest.java
@@ -46,7 +46,6 @@ import org.junit.Assert;
 import org.junit.Test;
 
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.List;
 
 public class HashJoinSegmentCursorFactoryTest extends 
BaseHashJoinSegmentCursorFactoryTest
@@ -1295,9 +1294,7 @@ public class HashJoinSegmentCursorFactoryTest extends 
BaseHashJoinSegmentCursorF
     );
 
     VirtualColumns virtualColumns = VirtualColumns.create(
-        Collections.singletonList(
-            makeExpressionVirtualColumn("concat(substring(countryIsoCode, 0, 
1),'L')")
-        )
+        makeExpressionVirtualColumn("concat(substring(countryIsoCode, 0, 
1),'L')")
     );
 
     JoinFilterPreAnalysis joinFilterPreAnalysis = makeDefaultConfigPreAnalysis(
@@ -1347,9 +1344,7 @@ public class HashJoinSegmentCursorFactoryTest extends 
BaseHashJoinSegmentCursorF
     );
 
     VirtualColumns virtualColumns = VirtualColumns.create(
-        Collections.singletonList(
-            makeExpressionVirtualColumn("concat(substring(countryIsoCode, 0, 
1),'L')")
-        )
+        makeExpressionVirtualColumn("concat(substring(countryIsoCode, 0, 
1),'L')")
     );
 
     JoinFilterPreAnalysis joinFilterPreAnalysis = makeDefaultConfigPreAnalysis(
diff --git 
a/processing/src/test/java/org/apache/druid/segment/join/JoinFilterAnalyzerTest.java
 
b/processing/src/test/java/org/apache/druid/segment/join/JoinFilterAnalyzerTest.java
index 4cbec2dbe9a..2bf14b74983 100644
--- 
a/processing/src/test/java/org/apache/druid/segment/join/JoinFilterAnalyzerTest.java
+++ 
b/processing/src/test/java/org/apache/druid/segment/join/JoinFilterAnalyzerTest.java
@@ -378,13 +378,11 @@ public class JoinFilterAnalyzerTest extends 
BaseHashJoinSegmentCursorFactoryTest
     );
 
     VirtualColumns virtualColumns = VirtualColumns.create(
-        ImmutableList.of(
-            new ExpressionVirtualColumn(
-                "v1",
-                "concat('virtual-column-', \"channel\")",
-                ColumnType.STRING,
-                TestExprMacroTable.INSTANCE
-            )
+        new ExpressionVirtualColumn(
+            "v1",
+            "concat('virtual-column-', \"channel\")",
+            ColumnType.STRING,
+            TestExprMacroTable.INSTANCE
         )
     );
 
@@ -448,13 +446,11 @@ public class JoinFilterAnalyzerTest extends 
BaseHashJoinSegmentCursorFactoryTest
     // a selector filter on an ExpressionVirtualColumn
     Filter originalFilter = new SelectorFilter("v0", "VIRGINIA");
     VirtualColumns virtualColumns = VirtualColumns.create(
-        ImmutableList.of(
-            new ExpressionVirtualColumn(
-                "v0",
-                "upper(\"r1.regionName\")",
-                ColumnType.STRING,
-                TestExprMacroTable.INSTANCE
-            )
+        new ExpressionVirtualColumn(
+            "v0",
+            "upper(\"r1.regionName\")",
+            ColumnType.STRING,
+            TestExprMacroTable.INSTANCE
         )
     );
 
@@ -514,19 +510,17 @@ public class JoinFilterAnalyzerTest extends 
BaseHashJoinSegmentCursorFactoryTest
     );
 
     final VirtualColumns virtualColumns = VirtualColumns.create(
-        ImmutableList.of(
-            new ExpressionVirtualColumn(
-                "v0",
-                "concat('virtual-column-', \"channel\")",
-                ColumnType.STRING,
-                TestExprMacroTable.INSTANCE
-            ),
-            new ExpressionVirtualColumn(
-                "v1",
-                "upper(\"r1.regionName\")",
-                ColumnType.STRING,
-                TestExprMacroTable.INSTANCE
-            )
+        new ExpressionVirtualColumn(
+            "v0",
+            "concat('virtual-column-', \"channel\")",
+            ColumnType.STRING,
+            TestExprMacroTable.INSTANCE
+        ),
+        new ExpressionVirtualColumn(
+            "v1",
+            "upper(\"r1.regionName\")",
+            ColumnType.STRING,
+            TestExprMacroTable.INSTANCE
         )
     );
 
diff --git 
a/processing/src/test/java/org/apache/druid/segment/nested/NestedFieldColumnSelectorsTest.java
 
b/processing/src/test/java/org/apache/druid/segment/nested/NestedFieldColumnSelectorsTest.java
index 7db1445f60f..8e694cbcd93 100644
--- 
a/processing/src/test/java/org/apache/druid/segment/nested/NestedFieldColumnSelectorsTest.java
+++ 
b/processing/src/test/java/org/apache/druid/segment/nested/NestedFieldColumnSelectorsTest.java
@@ -20,7 +20,6 @@
 package org.apache.druid.segment.nested;
 
 import com.fasterxml.jackson.databind.Module;
-import com.google.common.collect.ImmutableList;
 import org.apache.druid.error.DruidException;
 import org.apache.druid.guice.BuiltInTypesModule;
 import org.apache.druid.java.util.common.granularity.Granularities;
@@ -317,16 +316,14 @@ public class NestedFieldColumnSelectorsTest extends 
InitializedNullHandlingTest
     );
 
     return VirtualColumns.create(
-        ImmutableList.of(
-            longVirtualColumn,
-            doubleVirtualColumn,
-            mixedNumericVirtualColumn,
-            mixedVirtualColumn,
-            sparseLongVirtualColumn,
-            sparseDoubleVirtualColumn,
-            sparseMixedNumericVirtualColumn,
-            sparseMixedVirtualColumn
-        )
+        longVirtualColumn,
+        doubleVirtualColumn,
+        mixedNumericVirtualColumn,
+        mixedVirtualColumn,
+        sparseLongVirtualColumn,
+        sparseDoubleVirtualColumn,
+        sparseMixedNumericVirtualColumn,
+        sparseMixedVirtualColumn
     );
   }
 
diff --git 
a/processing/src/test/java/org/apache/druid/segment/transform/CompactionTransformSpecTest.java
 
b/processing/src/test/java/org/apache/druid/segment/transform/CompactionTransformSpecTest.java
index 110605286bd..5f966a82424 100644
--- 
a/processing/src/test/java/org/apache/druid/segment/transform/CompactionTransformSpecTest.java
+++ 
b/processing/src/test/java/org/apache/druid/segment/transform/CompactionTransformSpecTest.java
@@ -21,7 +21,6 @@ package org.apache.druid.segment.transform;
 
 import com.fasterxml.jackson.databind.InjectableValues;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.collect.ImmutableList;
 import nl.jqno.equalsverifier.EqualsVerifier;
 import org.apache.druid.jackson.DefaultObjectMapper;
 import org.apache.druid.math.expr.ExprMacroTable;
@@ -52,13 +51,11 @@ public class CompactionTransformSpecTest
     final CompactionTransformSpec expected = new CompactionTransformSpec(
         new SelectorDimFilter("dim1", "foo", null),
         VirtualColumns.create(
-            ImmutableList.of(
-                new ExpressionVirtualColumn(
-                    "isRobotFiltered",
-                    "concat(isRobot, '_filtered')",
-                    ColumnType.STRING,
-                    ExprMacroTable.nil()
-                )
+            new ExpressionVirtualColumn(
+                "isRobotFiltered",
+                "concat(isRobot, '_filtered')",
+                ColumnType.STRING,
+                ExprMacroTable.nil()
             )
         )
     );
diff --git 
a/processing/src/test/java/org/apache/druid/segment/virtual/ExpressionVectorSelectorsCastTest.java
 
b/processing/src/test/java/org/apache/druid/segment/virtual/ExpressionVectorSelectorsCastTest.java
index e103413ae9c..90c7e56c329 100644
--- 
a/processing/src/test/java/org/apache/druid/segment/virtual/ExpressionVectorSelectorsCastTest.java
+++ 
b/processing/src/test/java/org/apache/druid/segment/virtual/ExpressionVectorSelectorsCastTest.java
@@ -19,7 +19,6 @@
 
 package org.apache.druid.segment.virtual;
 
-import com.google.common.collect.ImmutableList;
 import org.apache.druid.java.util.common.granularity.Granularities;
 import org.apache.druid.java.util.common.io.Closer;
 import org.apache.druid.math.expr.ExpressionType;
@@ -107,13 +106,11 @@ public class ExpressionVectorSelectorsCastTest
   )
   {
     final VirtualColumns virtualColumns = VirtualColumns.create(
-        ImmutableList.of(
-            new ExpressionVirtualColumn(
-                "v",
-                "cast(" + column + ", '" + 
ExpressionType.fromColumnType(castTo) + "')",
-                castTo,
-                TestExprMacroTable.INSTANCE
-            )
+        new ExpressionVirtualColumn(
+            "v",
+            "cast(" + column + ", '" + ExpressionType.fromColumnType(castTo) + 
"')",
+            castTo,
+            TestExprMacroTable.INSTANCE
         )
     );
     final QueryableIndexCursorFactory cursorFactory = new 
QueryableIndexCursorFactory(index);
diff --git 
a/processing/src/test/java/org/apache/druid/segment/virtual/ExpressionVectorSelectorsTest.java
 
b/processing/src/test/java/org/apache/druid/segment/virtual/ExpressionVectorSelectorsTest.java
index 56466868f40..8c81c6b1fef 100644
--- 
a/processing/src/test/java/org/apache/druid/segment/virtual/ExpressionVectorSelectorsTest.java
+++ 
b/processing/src/test/java/org/apache/druid/segment/virtual/ExpressionVectorSelectorsTest.java
@@ -224,13 +224,11 @@ public class ExpressionVectorSelectorsTest extends 
InitializedNullHandlingTest
   {
     final List<Object> results = new ArrayList<>(rowsPerSegment);
     final VirtualColumns virtualColumns = VirtualColumns.create(
-        ImmutableList.of(
-            new ExpressionVirtualColumn(
-                "v",
-                expression,
-                ExpressionType.toColumnType(outputType),
-                TestExprMacroTable.INSTANCE
-            )
+        new ExpressionVirtualColumn(
+            "v",
+            expression,
+            ExpressionType.toColumnType(outputType),
+            TestExprMacroTable.INSTANCE
         )
     );
     final QueryableIndexCursorFactory cursorFactory = new 
QueryableIndexCursorFactory(index);
diff --git 
a/processing/src/test/java/org/apache/druid/segment/virtual/ListFilteredVirtualColumnSelectorTest.java
 
b/processing/src/test/java/org/apache/druid/segment/virtual/ListFilteredVirtualColumnSelectorTest.java
index 54670e7fca5..3337729b4e3 100644
--- 
a/processing/src/test/java/org/apache/druid/segment/virtual/ListFilteredVirtualColumnSelectorTest.java
+++ 
b/processing/src/test/java/org/apache/druid/segment/virtual/ListFilteredVirtualColumnSelectorTest.java
@@ -51,7 +51,6 @@ import org.junit.Assert;
 import org.junit.Test;
 
 import java.io.IOException;
-import java.util.List;
 
 public class ListFilteredVirtualColumnSelectorTest extends 
InitializedNullHandlingTest
 {
@@ -205,7 +204,7 @@ public class ListFilteredVirtualColumnSelectorTest extends 
InitializedNullHandli
     try (final Closer closer = Closer.create()) {
       ColumnIndexSelector bitmapIndexSelector = new ColumnCache(
           queryableIndex,
-          VirtualColumns.create(List.of(virtualColumn)),
+          VirtualColumns.create(virtualColumn),
           closer
       );
 
@@ -266,7 +265,7 @@ public class ListFilteredVirtualColumnSelectorTest extends 
InitializedNullHandli
     try (final Closer closer = Closer.create()) {
       ColumnIndexSelector bitmapIndexSelector = new ColumnCache(
           queryableIndex,
-          VirtualColumns.create(List.of(virtualColumn)),
+          VirtualColumns.create(virtualColumn),
           closer
       );
 
@@ -302,7 +301,7 @@ public class ListFilteredVirtualColumnSelectorTest extends 
InitializedNullHandli
             rowSignature,
             false
         ),
-        VirtualColumns.create(ImmutableList.of(virtualColumn))
+        VirtualColumns.create(virtualColumn)
     );
 
     return selectorFactory;
diff --git 
a/processing/src/test/java/org/apache/druid/segment/virtual/VirtualizedColumnSelectorFactoryTest.java
 
b/processing/src/test/java/org/apache/druid/segment/virtual/VirtualizedColumnSelectorFactoryTest.java
index 02bcb59fe77..8323888f51d 100644
--- 
a/processing/src/test/java/org/apache/druid/segment/virtual/VirtualizedColumnSelectorFactoryTest.java
+++ 
b/processing/src/test/java/org/apache/druid/segment/virtual/VirtualizedColumnSelectorFactoryTest.java
@@ -19,7 +19,6 @@
 
 package org.apache.druid.segment.virtual;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import org.apache.druid.data.input.MapBasedRow;
 import org.apache.druid.math.expr.ExprMacroTable;
@@ -44,10 +43,8 @@ public class VirtualizedColumnSelectorFactoryTest extends 
InitializedNullHandlin
           false
       ),
       VirtualColumns.create(
-          ImmutableList.of(
-              new ExpressionVirtualColumn("v0", "x + 1", null, 
ExprMacroTable.nil()),
-              new ExpressionVirtualColumn("v1", "v0 + y", null, 
ExprMacroTable.nil())
-          )
+          new ExpressionVirtualColumn("v0", "x + 1", null, 
ExprMacroTable.nil()),
+          new ExpressionVirtualColumn("v1", "v0 + y", null, 
ExprMacroTable.nil())
       )
   );
 
diff --git 
a/processing/src/test/java/org/apache/druid/timeline/DataSegmentTest.java 
b/processing/src/test/java/org/apache/druid/timeline/DataSegmentTest.java
index 37c175b57f2..73a9628ce19 100644
--- a/processing/src/test/java/org/apache/druid/timeline/DataSegmentTest.java
+++ b/processing/src/test/java/org/apache/druid/timeline/DataSegmentTest.java
@@ -91,13 +91,11 @@ public class DataSegmentTest
         new CompactionTransformSpec(
             new SelectorDimFilter("dim1", "foo", null),
             VirtualColumns.create(
-                ImmutableList.of(
-                    new ExpressionVirtualColumn(
-                        "isRobotFiltered",
-                        "concat(isRobot, '_filtered')",
-                        ColumnType.STRING,
-                        ExprMacroTable.nil()
-                    )
+                new ExpressionVirtualColumn(
+                    "isRobotFiltered",
+                    "concat(isRobot, '_filtered')",
+                    ColumnType.STRING,
+                    ExprMacroTable.nil()
                 )
             )
         ),
@@ -168,13 +166,11 @@ public class DataSegmentTest
                                          new CompactionTransformSpec(
                                              new SelectorDimFilter("dim1", 
"foo", null),
                                              VirtualColumns.create(
-                                                 ImmutableList.of(
-                                                     new 
ExpressionVirtualColumn(
-                                                         "isRobotFiltered",
-                                                         "concat(isRobot, 
'_filtered')",
-                                                         ColumnType.STRING,
-                                                         ExprMacroTable.nil()
-                                                     )
+                                                 new ExpressionVirtualColumn(
+                                                     "isRobotFiltered",
+                                                     "concat(isRobot, 
'_filtered')",
+                                                     ColumnType.STRING,
+                                                     ExprMacroTable.nil()
                                                  )
                                              )
                                          ),
@@ -380,13 +376,11 @@ public class DataSegmentTest
         new CompactionTransformSpec(
             new SelectorDimFilter("dim1", "foo", null),
             VirtualColumns.create(
-                ImmutableList.of(
-                    new ExpressionVirtualColumn(
-                        "isRobotFiltered",
-                        "concat(isRobot, '_filtered')",
-                        ColumnType.STRING,
-                        ExprMacroTable.nil()
-                    )
+                new ExpressionVirtualColumn(
+                    "isRobotFiltered",
+                    "concat(isRobot, '_filtered')",
+                    ColumnType.STRING,
+                    ExprMacroTable.nil()
                 )
             )
         ),
@@ -421,13 +415,11 @@ public class DataSegmentTest
     CompactionTransformSpec transformSpec = new CompactionTransformSpec(
         new SelectorDimFilter("dim1", "foo", null),
         VirtualColumns.create(
-            ImmutableList.of(
-                new ExpressionVirtualColumn(
-                    "isRobotFiltered",
-                    "concat(isRobot, '_filtered')",
-                    ColumnType.STRING,
-                    ExprMacroTable.nil()
-                )
+            new ExpressionVirtualColumn(
+                "isRobotFiltered",
+                "concat(isRobot, '_filtered')",
+                ColumnType.STRING,
+                ExprMacroTable.nil()
             )
         )
     );
diff --git 
a/server/src/test/java/org/apache/druid/server/compaction/ReindexingDeletionRuleTest.java
 
b/server/src/test/java/org/apache/druid/server/compaction/ReindexingDeletionRuleTest.java
index a99f3157527..7df4fef3c54 100644
--- 
a/server/src/test/java/org/apache/druid/server/compaction/ReindexingDeletionRuleTest.java
+++ 
b/server/src/test/java/org/apache/druid/server/compaction/ReindexingDeletionRuleTest.java
@@ -19,7 +19,6 @@
 
 package org.apache.druid.server.compaction;
 
-import com.google.common.collect.ImmutableList;
 import org.apache.druid.error.DruidException;
 import org.apache.druid.java.util.common.DateTimes;
 import org.apache.druid.java.util.common.Intervals;
@@ -43,13 +42,11 @@ public class ReindexingDeletionRuleTest
 
   private final DimFilter testFilter = new EqualityFilter("isRobot", 
ColumnType.STRING, "true", null);
   private final VirtualColumns virtualColumns = VirtualColumns.create(
-      ImmutableList.of(
-          new ExpressionVirtualColumn(
-              "isRobotFiltered",
-              "concat(isRobot, '_filtered')",
-              ColumnType.STRING,
-              ExprMacroTable.nil()
-          )
+      new ExpressionVirtualColumn(
+          "isRobotFiltered",
+          "concat(isRobot, '_filtered')",
+          ColumnType.STRING,
+          ExprMacroTable.nil()
       )
   );
 
diff --git 
a/server/src/test/java/org/apache/druid/server/coordination/LoadableDataSegmentTest.java
 
b/server/src/test/java/org/apache/druid/server/coordination/LoadableDataSegmentTest.java
index 21e5626cae7..fada2acaa4b 100644
--- 
a/server/src/test/java/org/apache/druid/server/coordination/LoadableDataSegmentTest.java
+++ 
b/server/src/test/java/org/apache/druid/server/coordination/LoadableDataSegmentTest.java
@@ -21,7 +21,6 @@ package org.apache.druid.server.coordination;
 
 import com.fasterxml.jackson.databind.InjectableValues;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.collect.ImmutableList;
 import org.apache.druid.data.input.impl.DimensionsSpec;
 import org.apache.druid.indexer.granularity.GranularitySpec;
 import org.apache.druid.indexer.partitions.HashedPartitionsSpec;
@@ -77,13 +76,11 @@ public class LoadableDataSegmentTest
         new CompactionTransformSpec(
             new SelectorDimFilter("dim1", "foo", null),
             VirtualColumns.create(
-                ImmutableList.of(
-                    new ExpressionVirtualColumn(
-                        "isRobotFiltered",
-                        "concat(isRobot, '_filtered')",
-                        ColumnType.STRING,
-                        ExprMacroTable.nil()
-                    )
+                new ExpressionVirtualColumn(
+                    "isRobotFiltered",
+                    "concat(isRobot, '_filtered')",
+                    ColumnType.STRING,
+                    ExprMacroTable.nil()
                 )
             )
         ),
diff --git 
a/server/src/test/java/org/apache/druid/server/coordinator/InlineSchemaDataSourceCompactionConfigTest.java
 
b/server/src/test/java/org/apache/druid/server/coordinator/InlineSchemaDataSourceCompactionConfigTest.java
index 4c58d551509..35b325d7ae3 100644
--- 
a/server/src/test/java/org/apache/druid/server/coordinator/InlineSchemaDataSourceCompactionConfigTest.java
+++ 
b/server/src/test/java/org/apache/druid/server/coordinator/InlineSchemaDataSourceCompactionConfigTest.java
@@ -454,13 +454,11 @@ public class InlineSchemaDataSourceCompactionConfigTest 
extends InitializedNullH
             new CompactionTransformSpec(
                 new SelectorDimFilter("dim1", "foo", null),
                 VirtualColumns.create(
-                    ImmutableList.of(
-                        new ExpressionVirtualColumn(
-                            "isRobotFiltered",
-                            "concat(isRobot, '_filtered')",
-                            ColumnType.STRING,
-                            ExprMacroTable.nil()
-                        )
+                    new ExpressionVirtualColumn(
+                        "isRobotFiltered",
+                        "concat(isRobot, '_filtered')",
+                        ColumnType.STRING,
+                        ExprMacroTable.nil()
                     )
                 )
             )
diff --git 
a/server/src/test/java/org/apache/druid/server/http/DataSegmentPlusTest.java 
b/server/src/test/java/org/apache/druid/server/http/DataSegmentPlusTest.java
index 84d8021700a..3ce6c4b418b 100644
--- a/server/src/test/java/org/apache/druid/server/http/DataSegmentPlusTest.java
+++ b/server/src/test/java/org/apache/druid/server/http/DataSegmentPlusTest.java
@@ -104,13 +104,11 @@ public class DataSegmentPlusTest
                        new CompactionTransformSpec(
                            new SelectorDimFilter("dim1", "foo", null),
                            VirtualColumns.create(
-                               ImmutableList.of(
-                                   new ExpressionVirtualColumn(
-                                       "isRobotFiltered",
-                                       "concat(isRobot, '_filtered')",
-                                       ColumnType.STRING,
-                                       ExprMacroTable.nil()
-                                   )
+                               new ExpressionVirtualColumn(
+                                   "isRobotFiltered",
+                                   "concat(isRobot, '_filtered')",
+                                   ColumnType.STRING,
+                                   ExprMacroTable.nil()
                                )
                            )
                        ),
diff --git 
a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteArraysQueryTest.java 
b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteArraysQueryTest.java
index a4b99952fd0..2ca95310e1c 100644
--- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteArraysQueryTest.java
+++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteArraysQueryTest.java
@@ -1555,10 +1555,8 @@ public class CalciteArraysQueryTest extends 
BaseCalciteQueryTest
                 .intervals(querySegmentSpec(Filtration.eternity()))
                 .virtualColumns(
                     VirtualColumns.create(
-                        ImmutableList.of(
-                            expressionVirtualColumn("v0", "substring(\"dim1\", 
0, 1)", ColumnType.STRING),
-                            expressionVirtualColumn("v1", "(\"cnt\" * 2)", 
ColumnType.LONG)
-                        )
+                        expressionVirtualColumn("v0", "substring(\"dim1\", 0, 
1)", ColumnType.STRING),
+                        expressionVirtualColumn("v1", "(\"cnt\" * 2)", 
ColumnType.LONG)
                     )
                 )
                 .filters(


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to