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

gianm 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 b3f08c83aa0 feat: Allow BINDABLE plans for Dart. (#19952)
b3f08c83aa0 is described below

commit b3f08c83aa0492a8ed0e16b1b715f5abc0fa3d3a
Author: Gian Merlino <[email protected]>
AuthorDate: Mon Aug 10 19:39:05 2026 -0700

    feat: Allow BINDABLE plans for Dart. (#19952)
    
    This switch allows the "msq-dart" engine to be used for metadata tables
    such as those in "sys' and "INFORMATION_SCHEMA".
---
 .../msq/dart/controller/sql/DartSqlEngine.java     |  2 +-
 .../dart/controller/http/DartSqlResourceTest.java  | 60 ++++++++++++++++++++++
 2 files changed, 61 insertions(+), 1 deletion(-)

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 c62c57b2880..aaf7eea7496 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,12 +146,12 @@ public class DartSqlEngine implements SqlEngine
       case WINDOW_FUNCTIONS:
       case WINDOW_LEAF_OPERATOR:
       case UNNEST:
+      case ALLOW_BINDABLE_PLAN:
         return true;
 
       case CAN_INSERT:
       case CAN_REPLACE:
       case READ_EXTERNAL_DATA:
-      case ALLOW_BINDABLE_PLAN:
       case ALLOW_BROADCAST_RIGHTY_JOIN:
       case ALLOW_TOP_LEVEL_UNION_ALL:
       case TIMESERIES_QUERY:
diff --git 
a/multi-stage-query/src/test/java/org/apache/druid/msq/dart/controller/http/DartSqlResourceTest.java
 
b/multi-stage-query/src/test/java/org/apache/druid/msq/dart/controller/http/DartSqlResourceTest.java
index 999de322393..e579ee427d7 100644
--- 
a/multi-stage-query/src/test/java/org/apache/druid/msq/dart/controller/http/DartSqlResourceTest.java
+++ 
b/multi-stage-query/src/test/java/org/apache/druid/msq/dart/controller/http/DartSqlResourceTest.java
@@ -535,6 +535,66 @@ public class DartSqlResourceTest extends MSQTestBase
     Assertions.assertEquals("[[2]]\n", 
StringUtils.fromUtf8(asyncResponse.baos.toByteArray()));
   }
 
+  @Test
+  public void test_doPost_informationSchema()
+  {
+    final MockAsyncContext asyncContext = new MockAsyncContext();
+    final MockHttpServletResponse asyncResponse = new 
MockHttpServletResponse();
+    asyncContext.response = asyncResponse;
+
+    
Mockito.when(httpServletRequest.getAttribute(AuthConfig.DRUID_AUTHENTICATION_RESULT))
+           
.thenReturn(makeAuthenticationResult(CalciteTests.TEST_SUPERUSER_NAME));
+    Mockito.when(httpServletRequest.startAsync())
+           .thenReturn(asyncContext);
+
+    final SqlQuery sqlQuery = new SqlQuery(
+        "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA ORDER BY 
SCHEMA_NAME",
+        ResultFormat.ARRAY,
+        false,
+        false,
+        false,
+        Map.of(QueryContexts.ENGINE, DartSqlEngine.NAME),
+        Collections.emptyList()
+    );
+
+    Assertions.assertNull(sqlResource.doPost(sqlQuery, httpServletRequest));
+    Assertions.assertEquals(Response.Status.OK.getStatusCode(), 
asyncResponse.getStatus());
+    Assertions.assertEquals(
+        
"[[\"INFORMATION_SCHEMA\"],[\"druid\"],[\"lookup\"],[\"sys\"],[\"view\"]]\n",
+        StringUtils.fromUtf8(asyncResponse.baos.toByteArray())
+    );
+  }
+
+  @Test
+  public void test_doPost_sysTableJoinedToDatasource()
+  {
+    final MockAsyncContext asyncContext = new MockAsyncContext();
+    final MockHttpServletResponse asyncResponse = new 
MockHttpServletResponse();
+    asyncContext.response = asyncResponse;
+
+    
Mockito.when(httpServletRequest.getAttribute(AuthConfig.DRUID_AUTHENTICATION_RESULT))
+           
.thenReturn(makeAuthenticationResult(CalciteTests.TEST_SUPERUSER_NAME));
+    Mockito.when(httpServletRequest.startAsync())
+           .thenReturn(asyncContext);
+
+    final SqlQuery sqlQuery = new SqlQuery(
+        StringUtils.format(
+            "SELECT s.segment_id, f.dim1 FROM sys.segments AS s, %s AS f",
+            CalciteTests.DATASOURCE1
+        ),
+        ResultFormat.ARRAY,
+        false,
+        false,
+        false,
+        Map.of(QueryContexts.ENGINE, DartSqlEngine.NAME),
+        Collections.emptyList()
+    );
+
+    // 501 Not Implemented.
+    final Response response = sqlResource.doPost(sqlQuery, httpServletRequest);
+    Assertions.assertEquals(501, response.getStatus());
+  }
+
   @Test
   public void test_doPost_regularUser_forbidden()
   {


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

Reply via email to