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

adarshsanjeev 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 716a7c6822d Remove the deprecated CTX_SCAN_SIGNATURE (#18509)
716a7c6822d is described below

commit 716a7c6822d7b4151f989222f8378a29e85c6a81
Author: Adarsh Sanjeev <[email protected]>
AuthorDate: Thu Sep 25 14:55:29 2025 +0530

    Remove the deprecated CTX_SCAN_SIGNATURE (#18509)
    
    The method of passing the scan signature as a parameter scanSignature was 
marked as deprecated in 06deda9, which added a new function, 
ScanQuery#getRowSignature().
    
    This pull request finally removes this deprecated usage.
    
    Since it removes the context parameter, this will cause scan queries to 
fail during upgrade from Druid versions BEFORE Druid 29. (i.e - Druid 28 and 
older).
---
 .../msq/dart/controller/sql/DartSqlEngine.java     |   1 -
 .../druid/msq/querykit/scan/ScanQueryKit.java      |  15 +-
 .../org/apache/druid/msq/sql/MSQTaskSqlEngine.java |   1 -
 .../org/apache/druid/msq/exec/MSQArraysTest.java   |  12 +-
 .../druid/msq/exec/MSQComplexGroupByTest.java      |   2 +-
 .../druid/msq/exec/MSQLoadedSegmentTests.java      |   4 +-
 .../druid/msq/exec/MSQParseExceptionsTest.java     |  16 +-
 .../org/apache/druid/msq/exec/MSQSelectTest.java   | 106 +++----------
 .../org/apache/druid/msq/exec/MSQWindowTest.java   | 173 ++-------------------
 .../resources/SqlMSQStatementResourcePostTest.java |   2 +-
 .../org/apache/druid/msq/test/MSQTestBase.java     |  21 ---
 .../msqJoinHint.iq                                 |   9 --
 .../msqNestedJoinHint.iq                           |  11 --
 .../qaArray/ops_funcs_mv_funcs.02.msq.iq           |  36 ++---
 .../qaArray/ops_funcs_mv_funcs.03.msq.iq           |  12 +-
 .../qaArray/sql_explain.msq.iq                     |  22 ---
 .../funcs_and_sql_func_json_keys.03.msq.iq         |   3 -
 .../funcs_and_sql_func_json_object.03.msq.iq       |   2 -
 .../funcs_and_sql_func_json_paths.03.msq.iq        |   1 -
 .../funcs_and_sql_func_json_query.04.msq.iq        |   3 -
 .../funcs_and_sql_func_json_value.03.dart.iq       |  48 +++---
 .../funcs_and_sql_func_json_value.03.msq.iq        |  48 +++---
 .../funcs_and_sql_func_json_value.04.msq.iq        |   1 -
 .../funcs_and_sql_func_parse_json.02.msq.iq        |   1 -
 .../funcs_and_sql_func_to_json_string.02.msq.iq    |   1 -
 .../funcs_and_sql_func_try_parse_json.02.msq.iq    |   1 -
 .../qaUnnest/array_sql_explain.msq.iq              |   2 -
 .../qaUnnest/mv_sql_explain.msq.iq                 |   2 -
 .../apache/druid/sql/calcite/rel/DruidQuery.java   |  65 +-------
 .../sql/calcite/rel/VirtualColumnRegistry.java     |  50 ------
 .../druid/sql/calcite/run/EngineFeature.java       |   9 --
 .../druid/sql/calcite/run/NativeSqlEngine.java     |   3 -
 .../druid/sql/calcite/view/ViewSqlEngine.java      |   1 -
 .../sql/calcite/CalciteScanSignatureTest.java      |  90 -----------
 .../druid/sql/calcite/IngestionTestSqlEngine.java  |   1 -
 35 files changed, 124 insertions(+), 651 deletions(-)

diff --git 
a/multi-stage-query/src/main/java/org/apache/druid/msq/dart/controller/sql/DartSqlEngine.java
 
b/multi-stage-query/src/main/java/org/apache/druid/msq/dart/controller/sql/DartSqlEngine.java
index 2836a1e3ceb..cbef28d98ec 100644
--- 
a/multi-stage-query/src/main/java/org/apache/druid/msq/dart/controller/sql/DartSqlEngine.java
+++ 
b/multi-stage-query/src/main/java/org/apache/druid/msq/dart/controller/sql/DartSqlEngine.java
@@ -146,7 +146,6 @@ public class DartSqlEngine implements SqlEngine
     switch (feature) {
       case CAN_SELECT:
       case SCAN_ORDER_BY_NON_TIME:
-      case SCAN_NEEDS_SIGNATURE:
       case WINDOW_FUNCTIONS:
       case WINDOW_LEAF_OPERATOR:
       case UNNEST:
diff --git 
a/multi-stage-query/src/main/java/org/apache/druid/msq/querykit/scan/ScanQueryKit.java
 
b/multi-stage-query/src/main/java/org/apache/druid/msq/querykit/scan/ScanQueryKit.java
index 418f0dce666..6382d63f7cd 100644
--- 
a/multi-stage-query/src/main/java/org/apache/druid/msq/querykit/scan/ScanQueryKit.java
+++ 
b/multi-stage-query/src/main/java/org/apache/druid/msq/querykit/scan/ScanQueryKit.java
@@ -19,7 +19,6 @@
 
 package org.apache.druid.msq.querykit.scan;
 
-import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.druid.frame.key.ClusterBy;
 import org.apache.druid.frame.key.KeyColumn;
@@ -43,7 +42,6 @@ import org.apache.druid.query.OrderBy;
 import org.apache.druid.query.scan.ScanQuery;
 import org.apache.druid.segment.column.ColumnType;
 import org.apache.druid.segment.column.RowSignature;
-import org.apache.druid.sql.calcite.rel.DruidQuery;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -59,18 +57,7 @@ public class ScanQueryKit implements QueryKit<ScanQuery>
 
   public static RowSignature getAndValidateSignature(final ScanQuery 
scanQuery, final ObjectMapper jsonMapper)
   {
-    RowSignature scanSignature;
-    try {
-      final String s = 
scanQuery.context().getString(DruidQuery.CTX_SCAN_SIGNATURE);
-      if (s == null) {
-        scanSignature = scanQuery.getRowSignature();
-      } else {
-        scanSignature = jsonMapper.readValue(s, RowSignature.class);
-      }
-    }
-    catch (JsonProcessingException e) {
-      throw new RuntimeException(e);
-    }
+    RowSignature scanSignature = scanQuery.getRowSignature();
     // Verify the signature prior to any actual processing.
     QueryKitUtils.verifyRowSignature(scanSignature);
     return scanSignature;
diff --git 
a/multi-stage-query/src/main/java/org/apache/druid/msq/sql/MSQTaskSqlEngine.java
 
b/multi-stage-query/src/main/java/org/apache/druid/msq/sql/MSQTaskSqlEngine.java
index 1f1d0b1334f..9e96eb7dd7d 100644
--- 
a/multi-stage-query/src/main/java/org/apache/druid/msq/sql/MSQTaskSqlEngine.java
+++ 
b/multi-stage-query/src/main/java/org/apache/druid/msq/sql/MSQTaskSqlEngine.java
@@ -168,7 +168,6 @@ public class MSQTaskSqlEngine implements SqlEngine
       case READ_EXTERNAL_DATA:
       case WRITE_EXTERNAL_DATA:
       case SCAN_ORDER_BY_NON_TIME:
-      case SCAN_NEEDS_SIGNATURE:
         return true;
       default:
         throw 
SqlEngines.generateUnrecognizedFeatureException(MSQTaskSqlEngine.class.getSimpleName(),
 feature);
diff --git 
a/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQArraysTest.java 
b/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQArraysTest.java
index 5651fdfa386..824508f280c 100644
--- 
a/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQArraysTest.java
+++ 
b/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQArraysTest.java
@@ -762,7 +762,7 @@ public class MSQArraysTest extends MSQTestBase
             ColumnType.LONG,
             TestExprMacroTable.INSTANCE
         ))
-        .context(defaultScanQueryContext(adjustedContext, scanSignature))
+        .context(adjustedContext)
         .build();
 
     testSelectQuery().setSql("SELECT\n"
@@ -838,7 +838,7 @@ public class MSQArraysTest extends MSQTestBase
         .columns("arrayString")
         .columnTypes(scanSignature.getColumnTypes())
         .orderBy(Collections.singletonList(OrderBy.descending("arrayString")))
-        .context(defaultScanQueryContext(context, scanSignature))
+        .context(context)
         .build();
 
     testSelectQuery().setSql("SELECT\n"
@@ -902,7 +902,7 @@ public class MSQArraysTest extends MSQTestBase
         .columns("arrayLong")
         .columnTypes(scanSignature.getColumnTypes())
         .orderBy(Collections.singletonList(OrderBy.ascending("arrayLong")))
-        .context(defaultScanQueryContext(context, scanSignature))
+        .context(context)
         .build();
 
     testSelectQuery().setSql("SELECT\n"
@@ -966,7 +966,7 @@ public class MSQArraysTest extends MSQTestBase
         .columns("arrayDouble")
         .columnTypes(scanSignature.getColumnTypes())
         .orderBy(Collections.singletonList(OrderBy.ascending("arrayDouble")))
-        .context(defaultScanQueryContext(context, scanSignature))
+        .context(context)
         .build();
 
     testSelectQuery().setSql("SELECT\n"
@@ -1018,7 +1018,7 @@ public class MSQArraysTest extends MSQTestBase
         .intervals(querySegmentSpec(Filtration.eternity()))
         .columns("a_bool")
         .columnTypes(scanSignature.getColumnTypes())
-        .context(defaultScanQueryContext(context, scanSignature))
+        .context(context)
         .build();
 
     testSelectQuery().setSql("SELECT a_bool FROM TABLE(\n"
@@ -1067,7 +1067,7 @@ public class MSQArraysTest extends MSQTestBase
         .intervals(querySegmentSpec(Filtration.eternity()))
         .columns("a_bool")
         .columnTypes(scanSignature.getColumnTypes())
-        .context(defaultScanQueryContext(context, scanSignature))
+        .context(context)
         .build();
 
     testSelectQuery().setSql("SELECT a_bool FROM TABLE(\n"
diff --git 
a/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQComplexGroupByTest.java
 
b/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQComplexGroupByTest.java
index 3c0dd86b7f6..274eb0027c4 100644
--- 
a/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQComplexGroupByTest.java
+++ 
b/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQComplexGroupByTest.java
@@ -420,7 +420,7 @@ public class MSQComplexGroupByTest extends MSQTestBase
                                                         
.intervals(querySegmentSpec(Filtration.eternity()))
                                                         .columns("obj")
                                                         
.columnTypes(ColumnType.NESTED_DATA)
-                                                        
.context(defaultScanQueryContext(context, rowSignature))
+                                                        .context(context)
                                                         
.orderBy(Collections.singletonList(OrderBy.ascending("obj")))
                                                         .build()
                                              )
diff --git 
a/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQLoadedSegmentTests.java
 
b/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQLoadedSegmentTests.java
index cb4a75d7b1c..130b4a9c615 100644
--- 
a/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQLoadedSegmentTests.java
+++ 
b/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQLoadedSegmentTests.java
@@ -131,7 +131,7 @@ public class MSQLoadedSegmentTests extends MSQTestBase
                            .intervals(querySegmentSpec(Filtration.eternity()))
                            .columns("cnt", "dim1")
                            .columnTypes(resultSignature.getColumnTypes())
-                           
.context(defaultScanQueryContext(REALTIME_QUERY_CTX, resultSignature))
+                           .context(REALTIME_QUERY_CTX)
                            .build()
                    )
                    .columnMappings(ColumnMappings.identity(resultSignature))
@@ -198,7 +198,7 @@ public class MSQLoadedSegmentTests extends MSQTestBase
                            .columns("cnt", "dim1")
                            .columnTypes(resultSignature.getColumnTypes())
                            
.orderBy(ImmutableList.of(OrderBy.ascending("dim1")))
-                           
.context(defaultScanQueryContext(REALTIME_QUERY_CTX, resultSignature))
+                           .context(REALTIME_QUERY_CTX)
                            .build()
                    )
                    .columnMappings(ColumnMappings.identity(resultSignature))
diff --git 
a/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQParseExceptionsTest.java
 
b/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQParseExceptionsTest.java
index 778bf22c760..c46d6386415 100644
--- 
a/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQParseExceptionsTest.java
+++ 
b/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQParseExceptionsTest.java
@@ -182,13 +182,7 @@ public class MSQParseExceptionsTest extends MSQTestBase
             .columns("v0", "v1")
             .columnTypes(ColumnType.LONG, ColumnType.STRING)
             .resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
-            .context(defaultScanQueryContext(
-                context,
-                RowSignature.builder()
-                            .add("v0", ColumnType.LONG)
-                            .add("v1", ColumnType.STRING)
-                            .build()
-            ))
+            .context(context)
             .build();
 
 
@@ -276,13 +270,7 @@ public class MSQParseExceptionsTest extends MSQTestBase
             .columns("v0", "agent_category")
             .columnTypes(ColumnType.LONG, ColumnType.STRING)
             .resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
-            .context(defaultScanQueryContext(
-                context,
-                RowSignature.builder()
-                            .add("v0", ColumnType.LONG)
-                            .add("agent_category", ColumnType.STRING)
-                            .build()
-            ))
+            .context(context)
             .build();
 
 
diff --git 
a/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQSelectTest.java 
b/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQSelectTest.java
index e96127d0f44..bfdc0a4af92 100644
--- 
a/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQSelectTest.java
+++ 
b/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQSelectTest.java
@@ -169,7 +169,7 @@ public class MSQSelectTest extends MSQTestBase
                            .intervals(querySegmentSpec(Filtration.eternity()))
                            .columns("EXPR$0")
                            .columnTypes(ColumnType.LONG)
-                           .context(defaultScanQueryContext(context, 
resultSignature))
+                           .context(context)
                            .build()
                    )
                    .columnMappings(ColumnMappings.identity(resultSignature))
@@ -203,7 +203,7 @@ public class MSQSelectTest extends MSQTestBase
                            .intervals(querySegmentSpec(Filtration.eternity()))
                            .columns("cnt", "dim1")
                            .columnTypes(ColumnType.LONG, ColumnType.STRING)
-                           .context(defaultScanQueryContext(context, 
resultSignature))
+                           .context(context)
                            .build()
                    )
                    .columnMappings(ColumnMappings.identity(resultSignature))
@@ -262,13 +262,7 @@ public class MSQSelectTest extends MSQTestBase
                               
.intervals(querySegmentSpec(Filtration.eternity()))
                               .columns("m1", "dim2")
                               .columnTypes(ColumnType.LONG, ColumnType.STRING)
-                              .context(defaultScanQueryContext(
-                                  context,
-                                  RowSignature.builder()
-                                              .add("m1", ColumnType.LONG)
-                                              .add("dim2", ColumnType.STRING)
-                                              .build()
-                              ))
+                              .context(context)
                               .build())
                    .columnMappings(ColumnMappings.identity(resultSignature))
                    .tuningConfig(MSQTuningConfig.defaultConfig())
@@ -339,7 +333,7 @@ public class MSQSelectTest extends MSQTestBase
                            .intervals(querySegmentSpec(Filtration.eternity()))
                            .columns("cnt", "dim1")
                            .columnTypes(ColumnType.LONG, ColumnType.STRING)
-                           .context(defaultScanQueryContext(context, 
expectedScanSignature))
+                           .context(context)
                            .build()
                    )
                    .columnMappings(expectedColumnMappings)
@@ -404,7 +398,7 @@ public class MSQSelectTest extends MSQTestBase
                            )
                            .columns("cnt", "dim1")
                            .columnTypes(ColumnType.LONG, ColumnType.STRING)
-                           .context(defaultScanQueryContext(context, 
resultSignature))
+                           .context(context)
                            .build()
                    )
                    .columnMappings(ColumnMappings.identity(resultSignature))
@@ -447,7 +441,7 @@ public class MSQSelectTest extends MSQTestBase
                            )
                            .columns("cnt", "dim1")
                            .columnTypes(ColumnType.LONG, ColumnType.STRING)
-                           .context(defaultScanQueryContext(context, 
resultSignature))
+                           .context(context)
                            .build()
                    )
                    .columnMappings(ColumnMappings.identity(resultSignature))
@@ -488,7 +482,7 @@ public class MSQSelectTest extends MSQTestBase
                            .columns("cnt", "dim1")
                            .columnTypes(ColumnType.LONG, ColumnType.STRING)
                            .filters(equality("dim2", "nonexistent", 
ColumnType.STRING))
-                           .context(defaultScanQueryContext(context, 
resultSignature))
+                           .context(context)
                            .build()
                    )
                    .columnMappings(ColumnMappings.identity(resultSignature))
@@ -524,7 +518,7 @@ public class MSQSelectTest extends MSQTestBase
                            .columns("cnt", "dim1")
                            .columnTypes(ColumnType.LONG, ColumnType.STRING)
                            .filters(equality("dim2", "nonexistent", 
ColumnType.STRING))
-                           .context(defaultScanQueryContext(context, 
resultSignature))
+                           .context(context)
                            
.orderBy(ImmutableList.of(OrderBy.ascending("dim1")))
                            .build()
                    )
@@ -706,7 +700,7 @@ public class MSQSelectTest extends MSQTestBase
                            .intervals(querySegmentSpec(Filtration.eternity()))
                            .columns("cnt", "dim1")
                            .columnTypes(ColumnType.LONG, ColumnType.STRING)
-                           .context(defaultScanQueryContext(context, 
resultSignature))
+                           .context(context)
                            .limit(10)
                            .build()
                    )
@@ -1099,16 +1093,7 @@ public class MSQSelectTest extends MSQTestBase
                                     
.intervals(querySegmentSpec(Filtration.eternity()))
                                     .columns("dim2", "m1", "m2")
                                     .columnTypes(ColumnType.STRING, 
ColumnType.FLOAT, ColumnType.DOUBLE)
-                                    .context(
-                                        defaultScanQueryContext(
-                                            queryContext,
-                                            RowSignature.builder()
-                                                        .add("dim2", 
ColumnType.STRING)
-                                                        .add("m1", 
ColumnType.FLOAT)
-                                                        .add("m2", 
ColumnType.DOUBLE)
-                                                        .build()
-                                        )
-                                    )
+                                    .context(queryContext)
                                     .limit(10)
                                     .build()
                                     .withOverriddenContext(queryContext)
@@ -1120,12 +1105,7 @@ public class MSQSelectTest extends MSQTestBase
                                     .columns("m1")
                                     .columnTypes(ColumnType.FLOAT)
                                     
.resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
-                                    .context(
-                                        defaultScanQueryContext(
-                                            queryContext,
-                                            RowSignature.builder().add("m1", 
ColumnType.FLOAT).build()
-                                        )
-                                    )
+                                    .context(queryContext)
                                     .build()
                                     .withOverriddenContext(queryContext)
                             ),
@@ -1574,13 +1554,7 @@ public class MSQSelectTest extends MSQTestBase
                              .columns("v0", "user")
                              .columnTypes(ColumnType.LONG, ColumnType.STRING)
                              .filters(new LikeDimFilter("user", "%ot%", null, 
null))
-                             .context(defaultScanQueryContext(
-                                 multipleWorkerContext,
-                                 RowSignature.builder()
-                                     .add("v0", ColumnType.LONG)
-                                     .add("user", ColumnType.STRING)
-                                     .build()
-                             ))
+                             .context(multipleWorkerContext)
                              .build();
 
     SelectTester selectTester = testSelectQuery()
@@ -1767,13 +1741,7 @@ public class MSQSelectTest extends MSQTestBase
                            .intervals(querySegmentSpec(Filtration.eternity()))
                            .columns("m1", "dim2")
                            .columnTypes(ColumnType.LONG, ColumnType.STRING)
-                           .context(defaultScanQueryContext(
-                               context,
-                               RowSignature.builder()
-                                           .add("m1", ColumnType.LONG)
-                                           .add("dim2", ColumnType.STRING)
-                                           .build()
-                           ))
+                           .context(context)
                            .build()
                    )
                    .columnMappings(ColumnMappings.identity(resultSignature))
@@ -1839,7 +1807,7 @@ public class MSQSelectTest extends MSQTestBase
                                               )
                                               .columns("dim3", "v0")
                                               .columnTypes(ColumnType.STRING, 
ColumnType.STRING_ARRAY)
-                                              
.context(defaultScanQueryContext(context, expectedScanSignature))
+                                              .context(context)
                                               .build())
                                    .columnMappings(
                                        new ColumnMappings(
@@ -2531,10 +2499,7 @@ public class MSQSelectTest extends MSQTestBase
                            .columns("v0")
                            .columnTypes(ColumnType.LONG)
                            .virtualColumns(new ExpressionVirtualColumn("v0", 
ExprEval.of(1L).toExpr(), ColumnType.LONG))
-                           .context(defaultScanQueryContext(
-                               context,
-                               RowSignature.builder().add("v0", 
ColumnType.LONG).build()
-                           ))
+                           .context(context)
                            .build()
                 )
                 .columnMappings(new ColumnMappings(
@@ -2587,10 +2552,7 @@ public class MSQSelectTest extends MSQTestBase
                               
.intervals(querySegmentSpec(Filtration.eternity()))
                               .columns("EXPR$0")
                               .columnTypes(ColumnType.LONG)
-                              .context(defaultScanQueryContext(
-                                  context,
-                                  resultSignature
-                              ))
+                              .context(context)
                               .build())
                    .columnMappings(expectedColumnMappings)
                    .tuningConfig(MSQTuningConfig.defaultConfig())
@@ -2640,10 +2602,7 @@ public class MSQSelectTest extends MSQTestBase
                               ))
                               
.intervals(querySegmentSpec(Filtration.eternity()))
                               
.resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
-                              .context(defaultScanQueryContext(
-                                  context,
-                                  resultSignature
-                              ))
+                              .context(context)
                               .columns("j0.unnest")
                               .columnTypes(ColumnType.STRING)
                               .build())
@@ -2708,10 +2667,7 @@ public class MSQSelectTest extends MSQTestBase
                                           .filters(equality("dim2", "a", 
ColumnType.STRING))
                                           .columns("dim3")
                                           .columnTypes(ColumnType.STRING)
-                                          .context(defaultScanQueryContext(
-                                              context,
-                                              resultSignature1
-                                          ))
+                                          .context(context)
                                           .limit(10)
                                           .build()
                                   ),
@@ -2720,10 +2676,7 @@ public class MSQSelectTest extends MSQTestBase
                               ))
                               
.intervals(querySegmentSpec(Filtration.eternity()))
                               
.resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
-                              .context(defaultScanQueryContext(
-                                  context,
-                                  resultSignature
-                              ))
+                              .context(context)
                               .columns("j0.unnest")
                               .columnTypes(ColumnType.STRING)
                               .build())
@@ -2768,13 +2721,7 @@ public class MSQSelectTest extends MSQTestBase
                                     
.intervals(querySegmentSpec(Filtration.eternity()))
                                     .columns("m1", "dim2")
                                     .columnTypes(ColumnType.LONG, 
ColumnType.STRING)
-                                    .context(defaultScanQueryContext(
-                                        timeoutContext,
-                                        RowSignature.builder()
-                                                    .add("m1", ColumnType.LONG)
-                                                    .add("dim2", 
ColumnType.STRING)
-                                                    .build()
-                                    ))
+                                    .context(timeoutContext)
                                     .build())
                          
.columnMappings(ColumnMappings.identity(resultSignature))
                          .tuningConfig(MSQTuningConfig.defaultConfig())
@@ -2813,13 +2760,7 @@ public class MSQSelectTest extends MSQTestBase
                                     
.intervals(querySegmentSpec(Filtration.eternity()))
                                     .columns("m1", "dim2")
                                     .columnTypes(ColumnType.LONG, 
ColumnType.STRING)
-                                    .context(defaultScanQueryContext(
-                                        context,
-                                        RowSignature.builder()
-                                                    .add("m1", ColumnType.LONG)
-                                                    .add("dim2", 
ColumnType.STRING)
-                                                    .build()
-                                    ))
+                                    .context(context)
                                     .build())
                          
.columnMappings(ColumnMappings.identity(resultSignature))
                          .tuningConfig(MSQTuningConfig.defaultConfig())
@@ -2885,10 +2826,7 @@ public class MSQSelectTest extends MSQTestBase
                               ))
                               
.intervals(querySegmentSpec(Filtration.eternity()))
                               
.resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
-                              .context(defaultScanQueryContext(
-                                  context,
-                                  rowSignature
-                              ))
+                              .context(context)
                               .columns("__time", "dim1")
                               .columnTypes(ColumnType.LONG, ColumnType.STRING)
                               .build())
diff --git 
a/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQWindowTest.java 
b/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQWindowTest.java
index f6a305de801..b9057208552 100644
--- 
a/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQWindowTest.java
+++ 
b/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQWindowTest.java
@@ -61,7 +61,6 @@ import 
org.apache.druid.sql.calcite.expression.DruidExpression;
 import org.apache.druid.sql.calcite.filtration.Filtration;
 import org.apache.druid.sql.calcite.planner.ColumnMapping;
 import org.apache.druid.sql.calcite.planner.ColumnMappings;
-import org.apache.druid.sql.calcite.rel.DruidQuery;
 import org.apache.druid.sql.calcite.util.CalciteTests;
 import org.apache.druid.timeline.SegmentId;
 import org.hamcrest.CoreMatchers;
@@ -578,12 +577,6 @@ public class MSQWindowTest extends MSQTestBase
     };
     WindowFramedAggregateProcessor proc = new 
WindowFramedAggregateProcessor(theFrame, theAggs);
 
-    final Map<String, Object> contextWithRowSignature =
-        ImmutableMap.<String, Object>builder()
-                    .putAll(DEFAULT_MSQ_CONTEXT)
-                    .put(DruidQuery.CTX_SCAN_SIGNATURE, 
"[{\"name\":\"m1\",\"type\":\"FLOAT\"}]")
-                    .build();
-
     final WindowOperatorQuery query = new WindowOperatorQuery(
         new QueryDataSource(
             newScanQueryBuilder()
@@ -592,7 +585,7 @@ public class MSQWindowTest extends MSQTestBase
                 .columns("m1")
                 .columnTypes(ColumnType.FLOAT)
                 
.resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
-                .context(contextWithRowSignature)
+                .context(DEFAULT_MSQ_CONTEXT)
                 .build()),
         new LegacySegmentSpec(Intervals.ETERNITY),
         DEFAULT_MSQ_CONTEXT,
@@ -643,15 +636,6 @@ public class MSQWindowTest extends MSQTestBase
     };
     WindowFramedAggregateProcessor proc = new 
WindowFramedAggregateProcessor(theFrame, theAggs);
 
-    final Map<String, Object> contextWithRowSignature =
-        ImmutableMap.<String, Object>builder()
-                    .putAll(DEFAULT_MSQ_CONTEXT)
-                    .put(
-                        DruidQuery.CTX_SCAN_SIGNATURE,
-                        
"[{\"name\":\"m1\",\"type\":\"FLOAT\"},{\"name\":\"m2\",\"type\":\"DOUBLE\"}]"
-                    )
-                    .build();
-
     final WindowOperatorQuery query = new WindowOperatorQuery(
         new QueryDataSource(
             newScanQueryBuilder()
@@ -660,7 +644,7 @@ public class MSQWindowTest extends MSQTestBase
                 .columns("m1", "m2")
                 .columnTypes(ColumnType.FLOAT, ColumnType.DOUBLE)
                 
.resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
-                .context(contextWithRowSignature)
+                .context(DEFAULT_MSQ_CONTEXT)
                 .build()),
         new LegacySegmentSpec(Intervals.ETERNITY),
         DEFAULT_MSQ_CONTEXT,
@@ -714,15 +698,6 @@ public class MSQWindowTest extends MSQTestBase
     };
     WindowFramedAggregateProcessor proc = new 
WindowFramedAggregateProcessor(theFrame, theAggs);
 
-    final Map<String, Object> contextWithRowSignature =
-        ImmutableMap.<String, Object>builder()
-                    .putAll(DEFAULT_MSQ_CONTEXT)
-                    .put(
-                        DruidQuery.CTX_SCAN_SIGNATURE,
-                        
"[{\"name\":\"m1\",\"type\":\"FLOAT\"},{\"name\":\"m2\",\"type\":\"DOUBLE\"}]"
-                    )
-                    .build();
-
     final WindowOperatorQuery query = new WindowOperatorQuery(
         new QueryDataSource(
             newScanQueryBuilder()
@@ -731,7 +706,7 @@ public class MSQWindowTest extends MSQTestBase
                 .columns("m1", "m2")
                 .columnTypes(ColumnType.FLOAT, ColumnType.DOUBLE)
                 
.resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
-                .context(contextWithRowSignature)
+                .context(DEFAULT_MSQ_CONTEXT)
                 .build()),
         new LegacySegmentSpec(Intervals.ETERNITY),
         DEFAULT_MSQ_CONTEXT,
@@ -845,15 +820,6 @@ public class MSQWindowTest extends MSQTestBase
   @Test
   public void testWindowOnFooWithNoGroupByAndPartitionAndVirtualColumns()
   {
-    final Map<String, Object> contextWithRowSignature =
-        ImmutableMap.<String, Object>builder()
-                    .putAll(DEFAULT_MSQ_CONTEXT)
-                    .put(
-                        DruidQuery.CTX_SCAN_SIGNATURE,
-                        
"[{\"name\":\"m1\",\"type\":\"FLOAT\"},{\"name\":\"v0\",\"type\":\"LONG\"}]"
-                    )
-                    .build();
-
     RowSignature rowSignature = RowSignature.builder()
                                             .add("ld", ColumnType.LONG)
                                             .add("m1", ColumnType.FLOAT)
@@ -875,7 +841,7 @@ public class MSQWindowTest extends MSQTestBase
                 .columnTypes(ColumnType.FLOAT, ColumnType.LONG)
                 .virtualColumns(expressionVirtualColumn("v0", 
"strlen(\"dim1\")", ColumnType.LONG))
                 
.resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
-                .context(contextWithRowSignature)
+                .context(DEFAULT_MSQ_CONTEXT)
                 .build()),
         new LegacySegmentSpec(Intervals.ETERNITY),
         DEFAULT_MSQ_CONTEXT,
@@ -921,13 +887,6 @@ public class MSQWindowTest extends MSQTestBase
   @Test
   public void testWindowOnFooWithNoGroupByAndEmptyOver()
   {
-
-    final Map<String, Object> contextWithRowSignature =
-        ImmutableMap.<String, Object>builder()
-                    .putAll(DEFAULT_MSQ_CONTEXT)
-                    .put(DruidQuery.CTX_SCAN_SIGNATURE, 
"[{\"name\":\"m1\",\"type\":\"FLOAT\"}]")
-                    .build();
-
     RowSignature rowSignature = RowSignature.builder()
                                             .add("m1", ColumnType.FLOAT)
                                             .add("cc", ColumnType.DOUBLE)
@@ -947,7 +906,7 @@ public class MSQWindowTest extends MSQTestBase
                 .columns("m1")
                 .columnTypes(ColumnType.FLOAT)
                 
.resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
-                .context(contextWithRowSignature)
+                .context(DEFAULT_MSQ_CONTEXT)
                 .build()),
         new LegacySegmentSpec(Intervals.ETERNITY),
         DEFAULT_MSQ_CONTEXT,
@@ -986,24 +945,6 @@ public class MSQWindowTest extends MSQTestBase
   @Test
   public void testWindowOnFooWithPartitionByOrderBYWithJoin()
   {
-    final Map<String, Object> contextWithRowSignature =
-        ImmutableMap.<String, Object>builder()
-                    .putAll(DEFAULT_MSQ_CONTEXT)
-                    .put(
-                        DruidQuery.CTX_SCAN_SIGNATURE,
-                        
"[{\"name\":\"m1\",\"type\":\"FLOAT\"},{\"name\":\"j0.m2\",\"type\":\"DOUBLE\"}]"
-                    )
-                    .build();
-
-    final Map<String, Object> contextWithRowSignature1 =
-        ImmutableMap.<String, Object>builder()
-                    .putAll(DEFAULT_MSQ_CONTEXT)
-                    .put(
-                        DruidQuery.CTX_SCAN_SIGNATURE,
-                        
"[{\"name\":\"m2\",\"type\":\"DOUBLE\"},{\"name\":\"v0\",\"type\":\"FLOAT\"}]"
-                    )
-                    .build();
-
     RowSignature rowSignature = RowSignature.builder()
                                             .add("m1", ColumnType.FLOAT)
                                             .add("cc", ColumnType.DOUBLE)
@@ -1030,7 +971,7 @@ public class MSQWindowTest extends MSQTestBase
                                 .columns("m2", "v0")
                                 .columnTypes(ColumnType.DOUBLE, 
ColumnType.FLOAT)
                                 
.resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
-                                .context(contextWithRowSignature1)
+                                .context(DEFAULT_MSQ_CONTEXT)
                                 .build()
                         ),
                         "j0.",
@@ -1045,7 +986,7 @@ public class MSQWindowTest extends MSQTestBase
                 .columns("m1", "j0.m2")
                 .columnTypes(ColumnType.FLOAT, ColumnType.DOUBLE)
                 
.resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
-                .context(contextWithRowSignature)
+                .context(DEFAULT_MSQ_CONTEXT)
                 .build()),
         new LegacySegmentSpec(Intervals.ETERNITY),
         DEFAULT_MSQ_CONTEXT,
@@ -1091,24 +1032,6 @@ public class MSQWindowTest extends MSQTestBase
   @Test
   public void testWindowOnFooWithEmptyOverWithJoin()
   {
-    final Map<String, Object> contextWithRowSignature =
-        ImmutableMap.<String, Object>builder()
-                    .putAll(DEFAULT_MSQ_CONTEXT)
-                    .put(
-                        DruidQuery.CTX_SCAN_SIGNATURE,
-                        
"[{\"name\":\"m1\",\"type\":\"FLOAT\"},{\"name\":\"j0.m2\",\"type\":\"DOUBLE\"}]"
-                    )
-                    .build();
-
-    final Map<String, Object> contextWithRowSignature1 =
-        ImmutableMap.<String, Object>builder()
-                    .putAll(DEFAULT_MSQ_CONTEXT)
-                    .put(
-                        DruidQuery.CTX_SCAN_SIGNATURE,
-                        
"[{\"name\":\"m2\",\"type\":\"DOUBLE\"},{\"name\":\"v0\",\"type\":\"FLOAT\"}]"
-                    )
-                    .build();
-
     RowSignature rowSignature = RowSignature.builder()
                                             .add("m1", ColumnType.FLOAT)
                                             .add("cc", ColumnType.DOUBLE)
@@ -1135,7 +1058,7 @@ public class MSQWindowTest extends MSQTestBase
                                 .columns("m2", "v0")
                                 .columnTypes(ColumnType.DOUBLE, 
ColumnType.FLOAT)
                                 
.resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
-                                .context(contextWithRowSignature1)
+                                .context(DEFAULT_MSQ_CONTEXT)
                                 .build()
                         ),
                         "j0.",
@@ -1150,7 +1073,7 @@ public class MSQWindowTest extends MSQTestBase
                 .columns("m1", "j0.m2")
                 .columnTypes(ColumnType.FLOAT, ColumnType.DOUBLE)
                 
.resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
-                .context(contextWithRowSignature)
+                .context(DEFAULT_MSQ_CONTEXT)
                 .build()),
         new LegacySegmentSpec(Intervals.ETERNITY),
         DEFAULT_MSQ_CONTEXT,
@@ -1206,15 +1129,6 @@ public class MSQWindowTest extends MSQTestBase
     };
     WindowFramedAggregateProcessor proc = new 
WindowFramedAggregateProcessor(theFrame, theAggs);
 
-    final Map<String, Object> contextWithRowSignature =
-        ImmutableMap.<String, Object>builder()
-                    .putAll(DEFAULT_MSQ_CONTEXT)
-                    .put(
-                        DruidQuery.CTX_SCAN_SIGNATURE,
-                        
"[{\"name\":\"dim2\",\"type\":\"STRING\"},{\"name\":\"m1\",\"type\":\"FLOAT\"}]"
-                    )
-                    .build();
-
     final WindowOperatorQuery query = new WindowOperatorQuery(
         new QueryDataSource(
             newScanQueryBuilder()
@@ -1223,7 +1137,7 @@ public class MSQWindowTest extends MSQTestBase
                 .columns("dim2", "m1")
                 .columnTypes(ColumnType.STRING, ColumnType.FLOAT)
                 
.resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
-                .context(contextWithRowSignature)
+                .context(DEFAULT_MSQ_CONTEXT)
                 .build()),
         new LegacySegmentSpec(Intervals.ETERNITY),
         DEFAULT_MSQ_CONTEXT,
@@ -1264,16 +1178,6 @@ public class MSQWindowTest extends MSQTestBase
   @Test
   public void testWindowOnFooWithEmptyOverWithUnnest()
   {
-    final Map<String, Object> contextWithRowSignature =
-        ImmutableMap.<String, Object>builder()
-                    .putAll(DEFAULT_MSQ_CONTEXT)
-                    .put(
-                        DruidQuery.CTX_SCAN_SIGNATURE,
-                        
"[{\"name\":\"m1\",\"type\":\"FLOAT\"},{\"name\":\"j0.unnest\",\"type\":\"STRING\"}]"
-                    )
-                    .build();
-
-
     RowSignature rowSignature = RowSignature.builder()
                                             .add("m1", ColumnType.FLOAT)
                                             .add("cc", ColumnType.DOUBLE)
@@ -1300,7 +1204,7 @@ public class MSQWindowTest extends MSQTestBase
                 .columns("m1", "j0.unnest")
                 .columnTypes(ColumnType.FLOAT, ColumnType.STRING)
                 
.resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
-                .context(contextWithRowSignature)
+                .context(DEFAULT_MSQ_CONTEXT)
                 .build()),
         new LegacySegmentSpec(Intervals.ETERNITY),
         DEFAULT_MSQ_CONTEXT,
@@ -1347,16 +1251,6 @@ public class MSQWindowTest extends MSQTestBase
   @Test
   public void testWindowOnFooWithPartitionByAndWithUnnest()
   {
-    final Map<String, Object> contextWithRowSignature =
-        ImmutableMap.<String, Object>builder()
-                    .putAll(DEFAULT_MSQ_CONTEXT)
-                    .put(
-                        DruidQuery.CTX_SCAN_SIGNATURE,
-                        
"[{\"name\":\"m1\",\"type\":\"FLOAT\"},{\"name\":\"j0.unnest\",\"type\":\"STRING\"}]"
-                    )
-                    .build();
-
-
     RowSignature rowSignature = RowSignature.builder()
                                             .add("m1", ColumnType.FLOAT)
                                             .add("cc", ColumnType.DOUBLE)
@@ -1383,7 +1277,7 @@ public class MSQWindowTest extends MSQTestBase
                 .columns("m1", "j0.unnest")
                 .columnTypes(ColumnType.FLOAT, ColumnType.STRING)
                 
.resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
-                .context(contextWithRowSignature)
+                .context(DEFAULT_MSQ_CONTEXT)
                 .build()),
         new LegacySegmentSpec(Intervals.ETERNITY),
         DEFAULT_MSQ_CONTEXT,
@@ -1737,15 +1631,6 @@ public class MSQWindowTest extends MSQTestBase
     };
     WindowFramedAggregateProcessor proc = new 
WindowFramedAggregateProcessor(theFrame, theAggs);
 
-    final Map<String, Object> contextWithRowSignature =
-        ImmutableMap.<String, Object>builder()
-                    .putAll(DEFAULT_MSQ_CONTEXT)
-                    .put(
-                        DruidQuery.CTX_SCAN_SIGNATURE,
-                        
"[{\"name\":\"cityName\",\"type\":\"STRING\"},{\"name\":\"added\",\"type\":\"LONG\"}]"
-                    )
-                    .build();
-
     final WindowOperatorQuery query = new WindowOperatorQuery(
         new QueryDataSource(
             newScanQueryBuilder()
@@ -1755,7 +1640,7 @@ public class MSQWindowTest extends MSQTestBase
                 .columns("cityName", "added")
                 .columnTypes(ColumnType.STRING, ColumnType.LONG)
                 
.resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
-                .context(contextWithRowSignature)
+                .context(DEFAULT_MSQ_CONTEXT)
                 .build()),
         new LegacySegmentSpec(Intervals.ETERNITY),
         DEFAULT_MSQ_CONTEXT,
@@ -1827,15 +1712,6 @@ public class MSQWindowTest extends MSQTestBase
     };
     WindowFramedAggregateProcessor proc = new 
WindowFramedAggregateProcessor(theFrame, theAggs);
 
-    final Map<String, Object> innerContextWithRowSignature =
-        ImmutableMap.<String, Object>builder()
-                    .putAll(DEFAULT_MSQ_CONTEXT)
-                    .put(
-                        DruidQuery.CTX_SCAN_SIGNATURE,
-                        
"[{\"name\":\"cityName\",\"type\":\"STRING\"},{\"name\":\"countryIsoCode\",\"type\":\"STRING\"},{\"name\":\"added\",\"type\":\"LONG\"}]"
-                    )
-                    .build();
-
     final WindowOperatorQuery query = new WindowOperatorQuery(
         new QueryDataSource(
             newScanQueryBuilder()
@@ -1845,7 +1721,7 @@ public class MSQWindowTest extends MSQTestBase
                 .columns("cityName", "countryIsoCode", "added")
                 .columnTypes(ColumnType.STRING, ColumnType.STRING, 
ColumnType.LONG)
                 
.resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
-                .context(innerContextWithRowSignature)
+                .context(DEFAULT_MSQ_CONTEXT)
                 .build()),
         new LegacySegmentSpec(Intervals.ETERNITY),
         DEFAULT_MSQ_CONTEXT,
@@ -1860,14 +1736,6 @@ public class MSQWindowTest extends MSQTestBase
         ImmutableList.of()
     );
 
-    final Map<String, Object> outerContextWithRowSignature =
-        ImmutableMap.<String, Object>builder()
-                    .putAll(DEFAULT_MSQ_CONTEXT)
-                    .put(
-                        DruidQuery.CTX_SCAN_SIGNATURE,
-                        
"[{\"name\":\"cityName\",\"type\":\"STRING\"},{\"name\":\"added\",\"type\":\"LONG\"},{\"name\":\"w0\",\"type\":\"LONG\"}]"
-                    )
-                    .build();
     final Query scanQuery = Druids.newScanQueryBuilder()
                                   .dataSource(new QueryDataSource(query))
                                   
.intervals(querySegmentSpec(Filtration.eternity()))
@@ -1875,7 +1743,7 @@ public class MSQWindowTest extends MSQTestBase
                                   .columnTypes(ColumnType.STRING, 
ColumnType.LONG, ColumnType.LONG)
                                   .limit(5)
                                   
.resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
-                                  .context(outerContextWithRowSignature)
+                                  .context(DEFAULT_MSQ_CONTEXT)
                                   .build();
 
     testSelectQuery()
@@ -2028,15 +1896,6 @@ public class MSQWindowTest extends MSQTestBase
                                             .add("c2", ColumnType.LONG)
                                             .build();
 
-    final Map<String, Object> contextWithRowSignature =
-        ImmutableMap.<String, Object>builder()
-                    .putAll(multipleWorkerContext)
-                    .put(
-                        DruidQuery.CTX_SCAN_SIGNATURE,
-                        
"[{\"name\":\"d0\",\"type\":\"STRING\"},{\"name\":\"d1\",\"type\":\"STRING\"},{\"name\":\"d2\",\"type\":\"STRING\"},{\"name\":\"w0\",\"type\":\"LONG\"},{\"name\":\"w1\",\"type\":\"LONG\"}]"
-                    )
-                    .build();
-
     final GroupByQuery groupByQuery = GroupByQuery.builder()
                                            
.setDataSource(CalciteTests.WIKIPEDIA)
                                            
.setInterval(querySegmentSpec(Filtration
@@ -2103,7 +1962,7 @@ public class MSQWindowTest extends MSQTestBase
                                   .columnTypes(ColumnType.STRING, 
ColumnType.STRING, ColumnType.STRING, ColumnType.LONG, ColumnType.LONG)
                                   .limit(Long.MAX_VALUE)
                                   
.resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
-                                  .context(contextWithRowSignature)
+                                  .context(multipleWorkerContext)
                                   .build();
 
     final String sql = "select countryName, cityName, channel, \n"
diff --git 
a/multi-stage-query/src/test/java/org/apache/druid/msq/sql/resources/SqlMSQStatementResourcePostTest.java
 
b/multi-stage-query/src/test/java/org/apache/druid/msq/sql/resources/SqlMSQStatementResourcePostTest.java
index 4784dfea377..73502be0b81 100644
--- 
a/multi-stage-query/src/test/java/org/apache/druid/msq/sql/resources/SqlMSQStatementResourcePostTest.java
+++ 
b/multi-stage-query/src/test/java/org/apache/druid/msq/sql/resources/SqlMSQStatementResourcePostTest.java
@@ -303,7 +303,7 @@ public class SqlMSQStatementResourcePostTest extends 
MSQTestBase
     ), SqlStatementResourceTest.makeOkRequest());
 
     Assert.assertEquals(
-        
"{PLAN=[{\"query\":{\"queryType\":\"scan\",\"dataSource\":{\"type\":\"table\",\"name\":\"foo\"},\"intervals\":{\"type\":\"intervals\",\"intervals\":[\"-146136543-09-08T08:23:32.096Z/146140482-04-24T15:36:27.903Z\"]},\"resultFormat\":\"compactedList\",\"columns\":[\"__time\",\"dim1\",\"dim2\",\"dim3\",\"cnt\",\"m1\",\"m2\",\"unique_dim1\"],\"context\":{\"__resultFormat\":\"object\",\"debug\":\"false\",\"executionMode\":\"ASYNC\",\"scanSignature\":\"[{\\\"name\\\":\\\"__time\\\",\\
 [...]
+        
"{PLAN=[{\"query\":{\"queryType\":\"scan\",\"dataSource\":{\"type\":\"table\",\"name\":\"foo\"},\"intervals\":{\"type\":\"intervals\",\"intervals\":[\"-146136543-09-08T08:23:32.096Z/146140482-04-24T15:36:27.903Z\"]},\"resultFormat\":\"compactedList\",\"columns\":[\"__time\",\"dim1\",\"dim2\",\"dim3\",\"cnt\",\"m1\",\"m2\",\"unique_dim1\"],\"context\":{\"__resultFormat\":\"object\",\"debug\":\"false\",\"executionMode\":\"ASYNC\",\"sqlQueryId\":\"queryId\"},\"columnTypes\":[\"LONG\
 [...]
         
String.valueOf(SqlStatementResourceTest.getResultRowsFromResponse(response).get(0))
     );
   }
diff --git 
a/multi-stage-query/src/test/java/org/apache/druid/msq/test/MSQTestBase.java 
b/multi-stage-query/src/test/java/org/apache/druid/msq/test/MSQTestBase.java
index 4254250b500..8e6e38bb39b 100644
--- a/multi-stage-query/src/test/java/org/apache/druid/msq/test/MSQTestBase.java
+++ b/multi-stage-query/src/test/java/org/apache/druid/msq/test/MSQTestBase.java
@@ -185,7 +185,6 @@ import 
org.apache.druid.sql.calcite.planner.CalciteRulesManager;
 import org.apache.druid.sql.calcite.planner.CatalogResolver;
 import org.apache.druid.sql.calcite.planner.PlannerConfig;
 import org.apache.druid.sql.calcite.planner.PlannerFactory;
-import org.apache.druid.sql.calcite.rel.DruidQuery;
 import org.apache.druid.sql.calcite.run.SqlEngine;
 import org.apache.druid.sql.calcite.schema.DruidSchemaCatalog;
 import org.apache.druid.sql.calcite.schema.NoopDruidSchemaManager;
@@ -651,26 +650,6 @@ public class MSQTestBase extends BaseCalciteQueryTest
     return CatalogResolver.NULL_RESOLVER;
   }
 
-  /**
-   * Returns query context expected for a scan query. Same as {@link 
#DEFAULT_MSQ_CONTEXT}, but
-   * includes {@link DruidQuery#CTX_SCAN_SIGNATURE}.
-   */
-  protected Map<String, Object> defaultScanQueryContext(Map<String, Object> 
context, final RowSignature signature)
-  {
-    try {
-      return ImmutableMap.<String, Object>builder()
-                         .putAll(context)
-                         .put(
-                             DruidQuery.CTX_SCAN_SIGNATURE,
-                             
queryFramework().queryJsonMapper().writeValueAsString(signature)
-                         )
-                         .build();
-    }
-    catch (JsonProcessingException e) {
-      throw new RuntimeException(e);
-    }
-  }
-
   /**
    * Creates an array of length and containing values decided by the 
parameters.
    */
diff --git 
a/multi-stage-query/src/test/quidem/org.apache.druid.msq.quidem.MSQQuidemTest/msqJoinHint.iq
 
b/multi-stage-query/src/test/quidem/org.apache.druid.msq.quidem.MSQQuidemTest/msqJoinHint.iq
index 7c347b59d49..3dfead41f01 100644
--- 
a/multi-stage-query/src/test/quidem/org.apache.druid.msq.quidem.MSQQuidemTest/msqJoinHint.iq
+++ 
b/multi-stage-query/src/test/quidem/org.apache.druid.msq.quidem.MSQQuidemTest/msqJoinHint.iq
@@ -43,7 +43,6 @@ where w1.cityName='New York';
         },
         "columns" : [ "cityName" ],
         "context" : {
-          "scanSignature" : "[{\"name\":\"cityName\",\"type\":\"STRING\"}]",
           "sqlInsertSegmentGranularity" : null,
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false
@@ -106,7 +105,6 @@ where w1.cityName='New York';
         "resultFormat" : "compactedList",
         "columns" : [ "cityName", "countryName" ],
         "context" : {
-          "scanSignature" : 
"[{\"name\":\"cityName\",\"type\":\"STRING\"},{\"name\":\"countryName\",\"type\":\"STRING\"}]",
           "sqlInsertSegmentGranularity" : null,
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false
@@ -195,7 +193,6 @@ where w1.cityName='New York';
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : 
"[{\"name\":\"v0\",\"type\":\"STRING\"},{\"name\":\"j0.countryName\",\"type\":\"STRING\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -287,7 +284,6 @@ LogicalJoin:[[broadcast inheritPath:[0, 0]]]
         },
         "columns" : [ "cityName" ],
         "context" : {
-          "scanSignature" : "[{\"name\":\"cityName\",\"type\":\"STRING\"}]",
           "sqlInsertSegmentGranularity" : null,
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false
@@ -350,7 +346,6 @@ LogicalJoin:[[broadcast inheritPath:[0, 0]]]
         "resultFormat" : "compactedList",
         "columns" : [ "cityName", "countryName" ],
         "context" : {
-          "scanSignature" : 
"[{\"name\":\"cityName\",\"type\":\"STRING\"},{\"name\":\"countryName\",\"type\":\"STRING\"}]",
           "sqlInsertSegmentGranularity" : null,
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false
@@ -439,7 +434,6 @@ LogicalJoin:[[broadcast inheritPath:[0, 0]]]
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : 
"[{\"name\":\"v0\",\"type\":\"STRING\"},{\"name\":\"j0.countryName\",\"type\":\"STRING\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -532,7 +526,6 @@ LogicalJoin:[[sort_merge inheritPath:[0, 0]]]
         },
         "columns" : [ "cityName" ],
         "context" : {
-          "scanSignature" : "[{\"name\":\"cityName\",\"type\":\"STRING\"}]",
           "sqlInsertSegmentGranularity" : null,
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false
@@ -595,7 +588,6 @@ LogicalJoin:[[sort_merge inheritPath:[0, 0]]]
         "resultFormat" : "compactedList",
         "columns" : [ "cityName", "countryName" ],
         "context" : {
-          "scanSignature" : 
"[{\"name\":\"cityName\",\"type\":\"STRING\"},{\"name\":\"countryName\",\"type\":\"STRING\"}]",
           "sqlInsertSegmentGranularity" : null,
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false
@@ -711,7 +703,6 @@ LogicalJoin:[[sort_merge inheritPath:[0, 0]]]
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : 
"[{\"name\":\"v0\",\"type\":\"STRING\"},{\"name\":\"j0.countryName\",\"type\":\"STRING\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
diff --git 
a/multi-stage-query/src/test/quidem/org.apache.druid.msq.quidem.MSQQuidemTest/msqNestedJoinHint.iq
 
b/multi-stage-query/src/test/quidem/org.apache.druid.msq.quidem.MSQQuidemTest/msqNestedJoinHint.iq
index 221f7db0fad..617ae774dc2 100644
--- 
a/multi-stage-query/src/test/quidem/org.apache.druid.msq.quidem.MSQQuidemTest/msqNestedJoinHint.iq
+++ 
b/multi-stage-query/src/test/quidem/org.apache.druid.msq.quidem.MSQQuidemTest/msqNestedJoinHint.iq
@@ -33,7 +33,6 @@ where w1.cityName='New York';
         "resultFormat" : "compactedList",
         "columns" : [ "regionName" ],
         "context" : {
-          "scanSignature" : "[{\"name\":\"regionName\",\"type\":\"STRING\"}]",
           "sqlInsertSegmentGranularity" : null,
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false
@@ -96,7 +95,6 @@ where w1.cityName='New York';
         "resultFormat" : "compactedList",
         "columns" : [ "cityName", "countryName" ],
         "context" : {
-          "scanSignature" : 
"[{\"name\":\"cityName\",\"type\":\"STRING\"},{\"name\":\"countryName\",\"type\":\"STRING\"}]",
           "sqlInsertSegmentGranularity" : null,
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false
@@ -212,7 +210,6 @@ where w1.cityName='New York';
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : 
"[{\"name\":\"v0\",\"type\":\"STRING\"},{\"name\":\"_j0.countryName\",\"type\":\"STRING\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -294,7 +291,6 @@ LogicalJoin:[[sort_merge inheritPath:[0]]]
         "resultFormat" : "compactedList",
         "columns" : [ "cityName", "regionName" ],
         "context" : {
-          "scanSignature" : 
"[{\"name\":\"cityName\",\"type\":\"STRING\"},{\"name\":\"regionName\",\"type\":\"STRING\"}]",
           "sqlInsertSegmentGranularity" : null,
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false
@@ -360,7 +356,6 @@ LogicalJoin:[[sort_merge inheritPath:[0]]]
         "resultFormat" : "compactedList",
         "columns" : [ "regionName" ],
         "context" : {
-          "scanSignature" : "[{\"name\":\"regionName\",\"type\":\"STRING\"}]",
           "sqlInsertSegmentGranularity" : null,
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false
@@ -423,7 +418,6 @@ LogicalJoin:[[sort_merge inheritPath:[0]]]
         "resultFormat" : "compactedList",
         "columns" : [ "cityName", "countryName" ],
         "context" : {
-          "scanSignature" : 
"[{\"name\":\"cityName\",\"type\":\"STRING\"},{\"name\":\"countryName\",\"type\":\"STRING\"}]",
           "sqlInsertSegmentGranularity" : null,
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false
@@ -532,7 +526,6 @@ LogicalJoin:[[sort_merge inheritPath:[0]]]
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : 
"[{\"name\":\"v0\",\"type\":\"STRING\"},{\"name\":\"_j0.countryName\",\"type\":\"STRING\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -610,7 +603,6 @@ where w1.cityName='New York';
         "resultFormat" : "compactedList",
         "columns" : [ "regionName" ],
         "context" : {
-          "scanSignature" : "[{\"name\":\"regionName\",\"type\":\"STRING\"}]",
           "sqlInsertSegmentGranularity" : null,
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false
@@ -687,7 +679,6 @@ where w1.cityName='New York';
         "resultFormat" : "compactedList",
         "columns" : [ "cityName" ],
         "context" : {
-          "scanSignature" : "[{\"name\":\"cityName\",\"type\":\"STRING\"}]",
           "sqlInsertSegmentGranularity" : null,
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false
@@ -750,7 +741,6 @@ where w1.cityName='New York';
         "resultFormat" : "compactedList",
         "columns" : [ "cityName", "countryName" ],
         "context" : {
-          "scanSignature" : 
"[{\"name\":\"cityName\",\"type\":\"STRING\"},{\"name\":\"countryName\",\"type\":\"STRING\"}]",
           "sqlInsertSegmentGranularity" : null,
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false
@@ -872,7 +862,6 @@ where w1.cityName='New York';
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : 
"[{\"name\":\"v0\",\"type\":\"STRING\"},{\"name\":\"_j0.countryName\",\"type\":\"STRING\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
diff --git 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaArray/ops_funcs_mv_funcs.02.msq.iq
 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaArray/ops_funcs_mv_funcs.02.msq.iq
index b171eca42a4..a77d80d7857 100644
--- 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaArray/ops_funcs_mv_funcs.02.msq.iq
+++ 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaArray/ops_funcs_mv_funcs.02.msq.iq
@@ -391,10 +391,10 @@ FROM test_array;
 +-----+
 | col |
 +-----+
-|   1 |
-|   1 |
 |     |
 |     |
+| 1   |
+| 1   |
 +-----+
 (4 rows)
 
@@ -408,10 +408,10 @@ FROM test_array;
 +-----+
 | col |
 +-----+
-|   1 |
-|   1 |
 |     |
 |     |
+| 1   |
+| 1   |
 +-----+
 (4 rows)
 
@@ -425,10 +425,10 @@ FROM test_array;
 +-----+
 | col |
 +-----+
-|   1 |
-|   1 |
 |     |
 |     |
+| 1   |
+| 1   |
 +-----+
 (4 rows)
 
@@ -442,10 +442,10 @@ FROM test_array;
 +-----+
 | col |
 +-----+
-|   1 |
-|   1 |
 |     |
 |     |
+| 1   |
+| 1   |
 +-----+
 (4 rows)
 
@@ -459,10 +459,10 @@ FROM test_array;
 +-----+
 | col |
 +-----+
-|   1 |
-|   1 |
 |     |
 |     |
+| 1   |
+| 1   |
 +-----+
 (4 rows)
 
@@ -476,10 +476,10 @@ FROM test_array;
 +-----+
 | col |
 +-----+
-|   1 |
-|   1 |
 |     |
 |     |
+| 1   |
+| 1   |
 +-----+
 (4 rows)
 
@@ -790,10 +790,10 @@ FROM test_array;
 +-----+
 | col |
 +-----+
-|   1 |
-|   1 |
 |     |
 |     |
+| 1   |
+| 1   |
 +-----+
 (4 rows)
 
@@ -807,10 +807,10 @@ FROM test_array;
 +-----+
 | col |
 +-----+
-|   1 |
-|   1 |
 |     |
 |     |
+| 1   |
+| 1   |
 +-----+
 (4 rows)
 
@@ -824,10 +824,10 @@ FROM test_array;
 +-----+
 | col |
 +-----+
-|   1 |
-|   1 |
 |     |
 |     |
+| 1   |
+| 1   |
 +-----+
 (4 rows)
 
diff --git 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaArray/ops_funcs_mv_funcs.03.msq.iq
 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaArray/ops_funcs_mv_funcs.03.msq.iq
index 69b55ee0f36..82f9467f033 100644
--- 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaArray/ops_funcs_mv_funcs.03.msq.iq
+++ 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaArray/ops_funcs_mv_funcs.03.msq.iq
@@ -9,10 +9,10 @@ FROM test_array;
 +-----+
 | col |
 +-----+
-|   1 |
-|   1 |
 |     |
 |     |
+| 1   |
+| 1   |
 +-----+
 (4 rows)
 
@@ -26,10 +26,10 @@ FROM test_array;
 +-----+
 | col |
 +-----+
-|   1 |
-|   1 |
 |     |
 |     |
+| 1   |
+| 1   |
 +-----+
 (4 rows)
 
@@ -43,10 +43,10 @@ FROM test_array;
 +-----+
 | col |
 +-----+
-|   1 |
-|   1 |
 |     |
 |     |
+| 1   |
+| 1   |
 +-----+
 (4 rows)
 
diff --git 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaArray/sql_explain.msq.iq
 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaArray/sql_explain.msq.iq
index f12cf1a8d2d..01f31cb3308 100644
--- 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaArray/sql_explain.msq.iq
+++ 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaArray/sql_explain.msq.iq
@@ -61,7 +61,6 @@ FROM test_array;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"a_bool\",\"type\":\"ARRAY<LONG>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -151,7 +150,6 @@ FROM test_array;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"a_int\",\"type\":\"ARRAY<LONG>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -252,7 +250,6 @@ FROM test_array;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"v0\",\"type\":\"ARRAY<LONG>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -356,7 +353,6 @@ FROM test_array;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"v0\",\"type\":\"ARRAY<LONG>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -446,7 +442,6 @@ FROM test_array;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : 
"[{\"name\":\"a_float\",\"type\":\"ARRAY<DOUBLE>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -547,7 +542,6 @@ FROM test_array;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"v0\",\"type\":\"ARRAY<DOUBLE>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -651,7 +645,6 @@ FROM test_array;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"v0\",\"type\":\"ARRAY<DOUBLE>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -741,7 +734,6 @@ FROM test_array;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : 
"[{\"name\":\"a_str\",\"type\":\"ARRAY<STRING>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -842,7 +834,6 @@ FROM test_array;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"v0\",\"type\":\"ARRAY<STRING>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -946,7 +937,6 @@ FROM test_array;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"v0\",\"type\":\"ARRAY<STRING>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -1036,7 +1026,6 @@ FROM test_array;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"a_null\",\"type\":\"ARRAY<LONG>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -1137,7 +1126,6 @@ FROM test_array;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"v0\",\"type\":\"ARRAY<STRING>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -1241,7 +1229,6 @@ FROM test_array;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"v0\",\"type\":\"ARRAY<STRING>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -1331,7 +1318,6 @@ FROM test_array;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : 
"[{\"name\":\"a_empty\",\"type\":\"ARRAY<LONG>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -1432,7 +1418,6 @@ FROM test_array;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"v0\",\"type\":\"ARRAY<STRING>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -1536,7 +1521,6 @@ FROM test_array;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"v0\",\"type\":\"ARRAY<STRING>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -1626,7 +1610,6 @@ FROM test_array;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : 
"[{\"name\":\"a_mixed\",\"type\":\"ARRAY<STRING>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -1727,7 +1710,6 @@ FROM test_array;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"v0\",\"type\":\"ARRAY<STRING>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -1831,7 +1813,6 @@ FROM test_array;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"v0\",\"type\":\"ARRAY<STRING>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -1921,7 +1902,6 @@ FROM test_array;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : 
"[{\"name\":\"a_nested\",\"type\":\"COMPLEX<json>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -2022,7 +2002,6 @@ FROM test_array;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"v0\",\"type\":\"ARRAY<STRING>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -2126,7 +2105,6 @@ FROM test_array;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"v0\",\"type\":\"ARRAY<STRING>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
diff --git 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_keys.03.msq.iq
 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_keys.03.msq.iq
index 6b63f070175..788359f319f 100644
--- 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_keys.03.msq.iq
+++ 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_keys.03.msq.iq
@@ -684,7 +684,6 @@ FROM test_json_cols;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"v0\",\"type\":\"ARRAY<STRING>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -780,7 +779,6 @@ FROM test_json_cols;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"v0\",\"type\":\"ARRAY<STRING>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -876,7 +874,6 @@ FROM test_json_cols;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"v0\",\"type\":\"ARRAY<STRING>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
diff --git 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_object.03.msq.iq
 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_object.03.msq.iq
index 01e00169169..4f2bf8b90c8 100644
--- 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_object.03.msq.iq
+++ 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_object.03.msq.iq
@@ -678,7 +678,6 @@ FROM test_json_cols;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"v0\",\"type\":\"COMPLEX<json>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -774,7 +773,6 @@ FROM test_json_cols;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"v0\",\"type\":\"COMPLEX<json>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
diff --git 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_paths.03.msq.iq
 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_paths.03.msq.iq
index 82a34f198d5..66d3f32bdd4 100644
--- 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_paths.03.msq.iq
+++ 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_paths.03.msq.iq
@@ -53,7 +53,6 @@ FROM test_json_cols;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"v0\",\"type\":\"ARRAY<STRING>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
diff --git 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_query.04.msq.iq
 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_query.04.msq.iq
index e31f525107e..c9c6164297e 100644
--- 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_query.04.msq.iq
+++ 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_query.04.msq.iq
@@ -620,7 +620,6 @@ FROM test_json_cols;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"v0\",\"type\":\"COMPLEX<json>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -724,7 +723,6 @@ FROM test_json_cols;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"v0\",\"type\":\"COMPLEX<json>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -828,7 +826,6 @@ FROM test_json_cols;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"v0\",\"type\":\"COMPLEX<json>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
diff --git 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_value.03.dart.iq
 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_value.03.dart.iq
index 4fcc0ef0d18..d5d2ee57da5 100644
--- 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_value.03.dart.iq
+++ 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_value.03.dart.iq
@@ -533,14 +533,14 @@ FROM test_json_cols;
 #-------------------------------------------------------------------------
 SELECT json_value(c1, '$.a_bool' RETURNING boolean) c
 FROM test_json_cols;
-+-------+
-| c     |
-+-------+
-| false |
-| false |
-|       |
-|       |
-+-------+
++------+
+| c    |
++------+
+| true |
+| true |
+|      |
+|      |
++------+
 (4 rows)
 
 !ok
@@ -550,14 +550,14 @@ FROM test_json_cols;
 #-------------------------------------------------------------------------
 SELECT json_value(c1, '$.a_obj.a_bool' RETURNING boolean) c
 FROM test_json_cols;
-+-------+
-| c     |
-+-------+
-| false |
-| false |
-|       |
-|       |
-+-------+
++------+
+| c    |
++------+
+| true |
+| true |
+|      |
+|      |
++------+
 (4 rows)
 
 !ok
@@ -567,14 +567,14 @@ FROM test_json_cols;
 #-------------------------------------------------------------------------
 SELECT json_value(c1, '$.a_array[0].a_bool' RETURNING boolean) c
 FROM test_json_cols;
-+-------+
-| c     |
-+-------+
-| false |
-| false |
-|       |
-|       |
-+-------+
++------+
+| c    |
++------+
+| true |
+| true |
+|      |
+|      |
++------+
 (4 rows)
 
 !ok
diff --git 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_value.03.msq.iq
 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_value.03.msq.iq
index 2b653c19055..50a21696f44 100644
--- 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_value.03.msq.iq
+++ 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_value.03.msq.iq
@@ -533,14 +533,14 @@ FROM test_json_cols;
 #-------------------------------------------------------------------------
 SELECT json_value(c1, '$.a_bool' RETURNING boolean) c
 FROM test_json_cols;
-+-------+
-| c     |
-+-------+
-| false |
-| false |
-|       |
-|       |
-+-------+
++------+
+| c    |
++------+
+| true |
+| true |
+|      |
+|      |
++------+
 (4 rows)
 
 !ok
@@ -550,14 +550,14 @@ FROM test_json_cols;
 #-------------------------------------------------------------------------
 SELECT json_value(c1, '$.a_obj.a_bool' RETURNING boolean) c
 FROM test_json_cols;
-+-------+
-| c     |
-+-------+
-| false |
-| false |
-|       |
-|       |
-+-------+
++------+
+| c    |
++------+
+| true |
+| true |
+|      |
+|      |
++------+
 (4 rows)
 
 !ok
@@ -567,14 +567,14 @@ FROM test_json_cols;
 #-------------------------------------------------------------------------
 SELECT json_value(c1, '$.a_array[0].a_bool' RETURNING boolean) c
 FROM test_json_cols;
-+-------+
-| c     |
-+-------+
-| false |
-| false |
-|       |
-|       |
-+-------+
++------+
+| c    |
++------+
+| true |
+| true |
+|      |
+|      |
++------+
 (4 rows)
 
 !ok
diff --git 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_value.04.msq.iq
 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_value.04.msq.iq
index 26b7f2afec4..5c52e4ca727 100644
--- 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_value.04.msq.iq
+++ 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_json_value.04.msq.iq
@@ -375,7 +375,6 @@ FROM test_json_cols;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"v0\",\"type\":\"STRING\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
diff --git 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_parse_json.02.msq.iq
 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_parse_json.02.msq.iq
index c78001c265b..8f85301bfb4 100644
--- 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_parse_json.02.msq.iq
+++ 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_parse_json.02.msq.iq
@@ -114,7 +114,6 @@ FROM test_json_cols;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"v0\",\"type\":\"COMPLEX<json>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
diff --git 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_to_json_string.02.msq.iq
 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_to_json_string.02.msq.iq
index 706f7f588a1..996b5e93d14 100644
--- 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_to_json_string.02.msq.iq
+++ 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_to_json_string.02.msq.iq
@@ -195,7 +195,6 @@ FROM test_json_cols;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"v0\",\"type\":\"STRING\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
diff --git 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_try_parse_json.02.msq.iq
 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_try_parse_json.02.msq.iq
index 745f7f36f23..71d7cf0e5a5 100644
--- 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_try_parse_json.02.msq.iq
+++ 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaJsonCols/funcs_and_sql_func_try_parse_json.02.msq.iq
@@ -157,7 +157,6 @@ FROM test_json_cols;
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"v0\",\"type\":\"COMPLEX<json>\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
diff --git 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaUnnest/array_sql_explain.msq.iq
 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaUnnest/array_sql_explain.msq.iq
index 2b75c767ea1..7ecb7c0bda2 100644
--- 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaUnnest/array_sql_explain.msq.iq
+++ 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaUnnest/array_sql_explain.msq.iq
@@ -79,7 +79,6 @@ FROM test_unnest,
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"j0.unnest\",\"type\":\"LONG\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -187,7 +186,6 @@ FROM
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : 
"[{\"name\":\"__time\",\"type\":\"LONG\"},{\"name\":\"s_int\",\"type\":\"LONG\"},{\"name\":\"s_null\",\"type\":\"STRING\"},{\"name\":\"a_bool\",\"type\":\"ARRAY<LONG>\"},{\"name\":\"a_int\",\"type\":\"ARRAY<LONG>\"},{\"name\":\"a_float\",\"type\":\"ARRAY<DOUBLE>\"},{\"name\":\"a_str\",\"type\":\"ARRAY<STRING>\"},{\"name\":\"a_null\",\"type\":\"ARRAY<LONG>\"},{\"name\":\"a_empty\",\"type\":\"ARRAY<LONG>\"},{\"name\":\"a_mixed\",\"type\":\"ARRAY<STRING>\"},{\"na
 [...]
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
diff --git 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaUnnest/mv_sql_explain.msq.iq
 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaUnnest/mv_sql_explain.msq.iq
index 18449467c88..4d322ee76c3 100644
--- 
a/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaUnnest/mv_sql_explain.msq.iq
+++ 
b/quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaUnnest/mv_sql_explain.msq.iq
@@ -97,7 +97,6 @@ FROM test_unnest,
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : "[{\"name\":\"j0.unnest\",\"type\":\"STRING\"}]",
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
@@ -221,7 +220,6 @@ FROM
           "finalize" : true,
           "maxParseExceptions" : 0,
           "rowBasedFrameType" : 19,
-          "scanSignature" : 
"[{\"name\":\"__time\",\"type\":\"LONG\"},{\"name\":\"c_str\",\"type\":\"STRING\"},{\"name\":\"c_long\",\"type\":\"LONG\"},{\"name\":\"c_float\",\"type\":\"FLOAT\"},{\"name\":\"c_double\",\"type\":\"DOUBLE\"},{\"name\":\"c_mv_complex\",\"type\":\"STRING\"},{\"name\":\"c_mv_num\",\"type\":\"STRING\"},{\"name\":\"c_mv_complex_with_null_and_empty_val\",\"type\":\"STRING\"},{\"name\":\"c_mv_num_with_null_and_empty_val\",\"type\":\"STRING\"},{\"name\":\"c_mv_comple
 [...]
           "sqlQueryId" : __SQL_QUERY_ID__
           "sqlStringifyArrays" : false,
           "startTime" : __TIMESTAMP__
diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java 
b/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java
index 6d1b9550d1c..5aaf1d80ef8 100644
--- a/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java
+++ b/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java
@@ -19,7 +19,6 @@
 
 package org.apache.druid.sql.calcite.rel;
 
-import com.fasterxml.jackson.core.JsonProcessingException;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
@@ -88,7 +87,6 @@ import org.apache.druid.query.topn.TopNMetricSpec;
 import org.apache.druid.query.topn.TopNQuery;
 import org.apache.druid.segment.VirtualColumn;
 import org.apache.druid.segment.VirtualColumns;
-import org.apache.druid.segment.column.ColumnCapabilities;
 import org.apache.druid.segment.column.ColumnHolder;
 import org.apache.druid.segment.column.ColumnType;
 import org.apache.druid.segment.column.RowSignature;
@@ -126,14 +124,6 @@ import java.util.stream.Collectors;
  */
 public class DruidQuery
 {
-  /**
-   * Native query context key that is set when {@link 
EngineFeature#SCAN_NEEDS_SIGNATURE}.
-   *
-   * {@link Deprecated} Instead of the context value {@link 
ScanQuery#getRowSignature()} can be used.
-   */
-  @Deprecated
-  public static final String CTX_SCAN_SIGNATURE = "scanSignature";
-
   /**
    * Maximum number of time-granular buckets that we allow for non-Druid 
tables.
    * <p>
@@ -1741,64 +1731,11 @@ public class DruidQuery
         orderByColumns,
         filtration.getDimFilter(),
         scanColumnsList,
-        withScanSignatureIfNeeded(
-            virtualColumns,
-            scanColumnsList,
-            plannerContext.queryContextMap()
-        ),
+        plannerContext.queryContextMap(),
         outputRowSignature.buildSafeSignature(scanColumnsList).getColumnTypes()
     );
   }
 
-  /**
-   * Returns a copy of "queryContext" with {@link #CTX_SCAN_SIGNATURE} added 
if the execution context has the
-   * {@link EngineFeature#SCAN_NEEDS_SIGNATURE} feature.
-   *
-   * {@link Deprecated} Instead of the context value {@link 
ScanQuery#getRowSignature()} can be used.
-   */
-  @Deprecated
-  private Map<String, Object> withScanSignatureIfNeeded(
-      final VirtualColumns virtualColumns,
-      final List<String> scanColumns,
-      final Map<String, Object> queryContext
-  )
-  {
-    if (!plannerContext.featureAvailable(EngineFeature.SCAN_NEEDS_SIGNATURE)) {
-      return queryContext;
-    }
-    final RowSignature signature = buildRowSignature(virtualColumns, 
scanColumns);
-
-    try {
-      Map<String, Object> revised = new HashMap<>(queryContext);
-      revised.put(
-          CTX_SCAN_SIGNATURE,
-          plannerContext.getJsonMapper().writeValueAsString(signature)
-      );
-      return revised;
-    }
-    catch (JsonProcessingException e) {
-      throw new RuntimeException(e);
-    }
-  }
-
-  private RowSignature buildRowSignature(final VirtualColumns virtualColumns, 
final List<String> columns)
-  {
-    // Compute the signature of the columns that we are selecting.
-    final RowSignature.Builder builder = RowSignature.builder();
-
-    for (final String columnName : columns) {
-      final ColumnCapabilities capabilities =
-          virtualColumns.getColumnCapabilitiesWithFallback(sourceRowSignature, 
columnName);
-
-      if (capabilities == null) {
-        // No type for this column. This is a planner bug.
-        throw new ISE("No type for column [%s]", columnName);
-      }
-      builder.add(columnName, capabilities.toColumnType());
-    }
-    return builder.build();
-  }
-
   public DimFilter getFilter()
   {
     return filter;
diff --git 
a/sql/src/main/java/org/apache/druid/sql/calcite/rel/VirtualColumnRegistry.java 
b/sql/src/main/java/org/apache/druid/sql/calcite/rel/VirtualColumnRegistry.java
index 3503838d6fd..3734d2a6d42 100644
--- 
a/sql/src/main/java/org/apache/druid/sql/calcite/rel/VirtualColumnRegistry.java
+++ 
b/sql/src/main/java/org/apache/druid/sql/calcite/rel/VirtualColumnRegistry.java
@@ -41,7 +41,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Objects;
-import java.util.Optional;
 import java.util.Queue;
 import java.util.Set;
 import java.util.stream.Collectors;
@@ -172,12 +171,6 @@ public class VirtualColumnRegistry
            : expression.toVirtualColumn(virtualColumnName, columnType, 
expressionParser);
   }
 
-  @Nullable
-  public String getVirtualColumnByExpression(DruidExpression expression, 
RelDataType typeHint)
-  {
-    return virtualColumnsByExpression.get(wrap(expression, 
Calcites.getColumnTypeForRelDataType(typeHint)));
-  }
-
   /**
    * Get a signature representing the base signature plus all registered 
virtual columns.
    */
@@ -244,18 +237,6 @@ public class VirtualColumnRegistry
                           .collect(Collectors.toList());
   }
 
-  /**
-   * @deprecated use {@link #findVirtualColumnExpressions(List)} instead
-   */
-  @Deprecated
-  public List<VirtualColumn> findVirtualColumns(List<String> allColumns)
-  {
-    return allColumns.stream()
-                     .filter(this::isVirtualColumnDefined)
-                     .map(this::getVirtualColumn)
-                     .collect(Collectors.toList());
-  }
-
   /**
    * @deprecated use {@link 
#getOrCreateVirtualColumnForExpression(DruidExpression, ColumnType)} instead
    */
@@ -270,37 +251,6 @@ public class VirtualColumnRegistry
     return getVirtualColumn(name);
   }
 
-  /**
-   * @deprecated use {@link 
#getOrCreateVirtualColumnForExpression(DruidExpression, RelDataType)} instead
-   */
-  @Deprecated
-  public VirtualColumn getOrCreateVirtualColumnForExpression(
-      PlannerContext plannerContext,
-      DruidExpression expression,
-      RelDataType dataType
-  )
-  {
-    return getOrCreateVirtualColumnForExpression(
-        plannerContext,
-        expression,
-        Calcites.getColumnTypeForRelDataType(dataType)
-    );
-  }
-
-  /**
-   * @deprecated use {@link #getVirtualColumnByExpression(DruidExpression, 
RelDataType)} instead
-   */
-  @Deprecated
-  @Nullable
-  public VirtualColumn getVirtualColumnByExpression(String expression, 
RelDataType type)
-  {
-    final ColumnType columnType = Calcites.getColumnTypeForRelDataType(type);
-    ExpressionAndTypeHint wrapped = 
wrap(DruidExpression.fromExpression(expression), columnType);
-    return Optional.ofNullable(virtualColumnsByExpression.get(wrapped))
-                   .map(this::getVirtualColumn)
-                   .orElse(null);
-  }
-
   private static ExpressionAndTypeHint wrap(DruidExpression expression, 
ColumnType typeHint)
   {
     return new ExpressionAndTypeHint(expression, typeHint);
diff --git 
a/sql/src/main/java/org/apache/druid/sql/calcite/run/EngineFeature.java 
b/sql/src/main/java/org/apache/druid/sql/calcite/run/EngineFeature.java
index 9bf4fac8e1e..aad9d2a71af 100644
--- a/sql/src/main/java/org/apache/druid/sql/calcite/run/EngineFeature.java
+++ b/sql/src/main/java/org/apache/druid/sql/calcite/run/EngineFeature.java
@@ -68,15 +68,6 @@ public enum EngineFeature
    */
   SCAN_ORDER_BY_NON_TIME,
 
-  /**
-   * Scan queries must have {@link 
org.apache.druid.sql.calcite.rel.DruidQuery#CTX_SCAN_SIGNATURE} set in their
-   * query contexts.
-   *
-   * {@link Deprecated} Instead of the context value {@link 
org.apache.druid.query.scan.ScanQuery#getRowSignature()} can be used.
-   */
-  @Deprecated
-  SCAN_NEEDS_SIGNATURE,
-
   /**
    * Planner is permitted to use a {@link org.apache.calcite.runtime.Bindable} 
plan on local resources, instead
    * of {@link QueryMaker}, for SELECT query implementation. Used for system 
tables and the like.
diff --git 
a/sql/src/main/java/org/apache/druid/sql/calcite/run/NativeSqlEngine.java 
b/sql/src/main/java/org/apache/druid/sql/calcite/run/NativeSqlEngine.java
index 1562da6d92c..997dcc3cbf1 100644
--- a/sql/src/main/java/org/apache/druid/sql/calcite/run/NativeSqlEngine.java
+++ b/sql/src/main/java/org/apache/druid/sql/calcite/run/NativeSqlEngine.java
@@ -39,7 +39,6 @@ import org.apache.druid.sql.SqlToolbox;
 import org.apache.druid.sql.calcite.parser.DruidSqlInsert;
 import org.apache.druid.sql.calcite.parser.DruidSqlReplace;
 import org.apache.druid.sql.calcite.planner.PlannerContext;
-import org.apache.druid.sql.calcite.rel.DruidQuery;
 import org.apache.druid.sql.destination.IngestDestination;
 
 import java.util.Map;
@@ -57,7 +56,6 @@ public class NativeSqlEngine implements SqlEngine
       GroupByQuery.CTX_TIMESTAMP_RESULT_FIELD,
       GroupByQuery.CTX_TIMESTAMP_RESULT_FIELD_GRANULARITY,
       GroupByQuery.CTX_TIMESTAMP_RESULT_FIELD_INDEX,
-      DruidQuery.CTX_SCAN_SIGNATURE,
       DruidSqlInsert.SQL_INSERT_SEGMENT_GRANULARITY,
       DruidSqlReplace.SQL_REPLACE_TIME_CHUNKS
   );
@@ -146,7 +144,6 @@ public class NativeSqlEngine implements SqlEngine
       case READ_EXTERNAL_DATA:
       case WRITE_EXTERNAL_DATA:
       case SCAN_ORDER_BY_NON_TIME:
-      case SCAN_NEEDS_SIGNATURE:
       case WINDOW_LEAF_OPERATOR:
         return false;
       default:
diff --git 
a/sql/src/main/java/org/apache/druid/sql/calcite/view/ViewSqlEngine.java 
b/sql/src/main/java/org/apache/druid/sql/calcite/view/ViewSqlEngine.java
index 34064916655..5f9da88baea 100644
--- a/sql/src/main/java/org/apache/druid/sql/calcite/view/ViewSqlEngine.java
+++ b/sql/src/main/java/org/apache/druid/sql/calcite/view/ViewSqlEngine.java
@@ -78,7 +78,6 @@ public class ViewSqlEngine implements SqlEngine
       case TOPN_QUERY:
       case TIMESERIES_QUERY:
       case TIME_BOUNDARY_QUERY:
-      case SCAN_NEEDS_SIGNATURE:
       case GROUPBY_IMPLICITLY_SORTS:
         return false;
 
diff --git 
a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteScanSignatureTest.java 
b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteScanSignatureTest.java
index 2010c335480..20fb1d26d0e 100644
--- 
a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteScanSignatureTest.java
+++ 
b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteScanSignatureTest.java
@@ -20,25 +20,12 @@
 package org.apache.druid.sql.calcite;
 
 import com.google.common.collect.ImmutableList;
-import com.google.inject.Inject;
-import org.apache.calcite.rel.RelRoot;
-import org.apache.calcite.rel.type.RelDataType;
-import org.apache.calcite.rel.type.RelDataTypeFactory;
-import org.apache.calcite.tools.ValidationException;
 import org.apache.druid.query.scan.ScanQuery;
 import org.apache.druid.segment.column.ColumnType;
-import org.apache.druid.sql.SqlStatementFactory;
 import 
org.apache.druid.sql.calcite.CalciteScanSignatureTest.ScanSignatureComponentSupplier;
 import org.apache.druid.sql.calcite.filtration.Filtration;
-import org.apache.druid.sql.calcite.planner.PlannerContext;
-import org.apache.druid.sql.calcite.rel.DruidQuery;
-import org.apache.druid.sql.calcite.run.EngineFeature;
-import org.apache.druid.sql.calcite.run.NativeSqlEngine;
-import org.apache.druid.sql.calcite.run.QueryMaker;
-import org.apache.druid.sql.calcite.run.SqlEngine;
 import org.apache.druid.sql.calcite.util.CalciteTests;
 import 
org.apache.druid.sql.calcite.util.SqlTestFramework.StandardComponentSupplier;
-import org.apache.druid.sql.destination.IngestDestination;
 import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
@@ -51,7 +38,6 @@ public class CalciteScanSignatureTest extends 
BaseCalciteQueryTest
   public void testScanSignature()
   {
     final Map<String, Object> context = new HashMap<>(QUERY_CONTEXT_DEFAULT);
-    context.put(DruidQuery.CTX_SCAN_SIGNATURE, 
"[{\"name\":\"v0\",\"type\":\"STRING\"}]");
 
     testQuery(
         "SELECT CONCAT(dim1, '-', dim1, '_', dim1) as dimX FROM foo",
@@ -115,81 +101,5 @@ public class CalciteScanSignatureTest extends 
BaseCalciteQueryTest
     {
       super(tempFolderProducer);
     }
-
-
-    @Override
-    public Class<? extends SqlEngine> getSqlEngineClass()
-    {
-      return ScanSignatureTestSqlEngine.class;
-    }
-
-    // Create an engine that says yes to EngineFeature.SCAN_NEEDS_SIGNATURE.
-    private static class ScanSignatureTestSqlEngine implements SqlEngine
-    {
-      private final SqlEngine parent;
-
-      @Inject
-      public ScanSignatureTestSqlEngine(final NativeSqlEngine parent)
-      {
-        this.parent = parent;
-      }
-
-      @Override
-      public String name()
-      {
-        return getClass().getName();
-      }
-
-      @Override
-      public boolean featureAvailable(EngineFeature feature)
-      {
-        return feature == EngineFeature.SCAN_NEEDS_SIGNATURE || 
parent.featureAvailable(feature);
-      }
-
-      @Override
-      public void validateContext(Map<String, Object> queryContext)
-      {
-        // No validation.
-      }
-
-      @Override
-      public RelDataType resultTypeForSelect(
-          RelDataTypeFactory typeFactory,
-          RelDataType validatedRowType,
-          Map<String, Object> queryContext
-      )
-      {
-        return validatedRowType;
-      }
-
-      @Override
-      public RelDataType resultTypeForInsert(
-          RelDataTypeFactory typeFactory,
-          RelDataType validatedRowType,
-          Map<String, Object> queryContext
-      )
-      {
-        throw new UnsupportedOperationException();
-      }
-
-      @Override
-      public QueryMaker buildQueryMakerForSelect(RelRoot relRoot, 
PlannerContext plannerContext)
-          throws ValidationException
-      {
-        return parent.buildQueryMakerForSelect(relRoot, plannerContext);
-      }
-
-      @Override
-      public QueryMaker buildQueryMakerForInsert(IngestDestination 
destination, RelRoot relRoot, PlannerContext plannerContext)
-      {
-        throw new UnsupportedOperationException();
-      }
-
-      @Override
-      public SqlStatementFactory getSqlStatementFactory()
-      {
-        throw new UnsupportedOperationException();
-      }
-    }
   }
 }
diff --git 
a/sql/src/test/java/org/apache/druid/sql/calcite/IngestionTestSqlEngine.java 
b/sql/src/test/java/org/apache/druid/sql/calcite/IngestionTestSqlEngine.java
index f2b9a26239d..75d9b5164fc 100644
--- a/sql/src/test/java/org/apache/druid/sql/calcite/IngestionTestSqlEngine.java
+++ b/sql/src/test/java/org/apache/druid/sql/calcite/IngestionTestSqlEngine.java
@@ -92,7 +92,6 @@ public class IngestionTestSqlEngine implements SqlEngine
       case TIMESERIES_QUERY:
       case TOPN_QUERY:
       case TIME_BOUNDARY_QUERY:
-      case SCAN_NEEDS_SIGNATURE:
       case UNNEST:
       case GROUPBY_IMPLICITLY_SORTS:
       case WINDOW_FUNCTIONS:


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

Reply via email to