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

karan 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 94249755027 enable dart query on restricted datasource (#17979)
94249755027 is described below

commit 94249755027f2eba2f20314cb91d31cb97ecf07b
Author: Cece Mei <[email protected]>
AuthorDate: Mon May 5 19:37:45 2025 -0700

    enable dart query on restricted datasource (#17979)
---
 .../msq/dart/controller/sql/DartQueryMaker.java    |  5 --
 .../dart/controller/http/DartSqlResourceTest.java  | 55 ----------------------
 .../org/apache/druid/msq/test/CalciteDartTest.java | 33 +++++++++++++
 3 files changed, 33 insertions(+), 60 deletions(-)

diff --git 
a/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/dart/controller/sql/DartQueryMaker.java
 
b/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/dart/controller/sql/DartQueryMaker.java
index 10556116bd3..a19960c066a 100644
--- 
a/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/dart/controller/sql/DartQueryMaker.java
+++ 
b/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/dart/controller/sql/DartQueryMaker.java
@@ -53,7 +53,6 @@ import org.apache.druid.msq.sql.DartQueryKitSpecFactory;
 import org.apache.druid.msq.sql.MSQTaskQueryMaker;
 import org.apache.druid.segment.column.ColumnType;
 import org.apache.druid.server.QueryResponse;
-import org.apache.druid.server.security.ForbiddenException;
 import org.apache.druid.sql.calcite.planner.PlannerContext;
 import org.apache.druid.sql.calcite.rel.DruidQuery;
 import org.apache.druid.sql.calcite.run.QueryMaker;
@@ -129,10 +128,6 @@ public class DartQueryMaker implements QueryMaker
   @Override
   public QueryResponse<Object[]> runQuery(DruidQuery druidQuery)
   {
-    if 
(!plannerContext.getAuthorizationResult().allowAccessWithNoRestriction()) {
-      throw new 
ForbiddenException(plannerContext.getAuthorizationResult().getErrorMessage());
-    }
-
     final List<Pair<SqlTypeName, ColumnType>> types =
         MSQTaskQueryMaker.getTypes(druidQuery, fieldMapping, plannerContext);
 
diff --git 
a/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/dart/controller/http/DartSqlResourceTest.java
 
b/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/dart/controller/http/DartSqlResourceTest.java
index 63360d2bce3..33773d41444 100644
--- 
a/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/dart/controller/http/DartSqlResourceTest.java
+++ 
b/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/dart/controller/http/DartSqlResourceTest.java
@@ -521,61 +521,6 @@ public class DartSqlResourceTest extends MSQTestBase
     );
   }
 
-  @Test
-  public void test_doPost_regularUser_restricted_throwsForbidden()
-  {
-    final MockAsyncContext asyncContext = new MockAsyncContext();
-    final MockHttpServletResponse asyncResponse = new 
MockHttpServletResponse();
-    asyncContext.response = asyncResponse;
-
-    
Mockito.when(httpServletRequest.getAttribute(AuthConfig.DRUID_AUTHENTICATION_RESULT))
-           .thenReturn(makeAuthenticationResult(REGULAR_USER_NAME));
-    Mockito.when(httpServletRequest.startAsync())
-           .thenReturn(asyncContext);
-
-    final SqlQuery sqlQuery = new SqlQuery(
-        StringUtils.format("SELECT * FROM \"%s\"", 
CalciteTests.RESTRICTED_DATASOURCE),
-        ResultFormat.ARRAY,
-        false,
-        false,
-        false,
-        Collections.emptyMap(),
-        Collections.emptyList()
-    );
-
-    ForbiddenException e = Assertions.assertThrows(
-        ForbiddenException.class,
-        () -> sqlResource.doPost(sqlQuery, httpServletRequest)
-    );
-    Assertions.assertEquals("Unauthorized", e.getMessage());
-  }
-
-  @Test
-  public void test_doPost_superUser_restricted_throwsServerError()
-  {
-    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 * FROM \"%s\"", 
CalciteTests.RESTRICTED_DATASOURCE),
-        ResultFormat.ARRAY,
-        false,
-        false,
-        false,
-        Collections.emptyMap(),
-        Collections.emptyList()
-    );
-    Assertions.assertNull(sqlResource.doPost(sqlQuery, httpServletRequest));
-    // Super user can run a dart query, but we don't support it yet.
-    
Assertions.assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), 
asyncResponse.getStatus());
-  }
-
   @Test
   public void test_doPost_regularUser_runtimeError() throws IOException
   {
diff --git 
a/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/test/CalciteDartTest.java
 
b/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/test/CalciteDartTest.java
index eea18622991..5e91a30aae8 100644
--- 
a/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/test/CalciteDartTest.java
+++ 
b/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/test/CalciteDartTest.java
@@ -26,6 +26,7 @@ import org.apache.druid.query.QueryContexts;
 import org.apache.druid.sql.calcite.BaseCalciteQueryTest;
 import org.apache.druid.sql.calcite.QueryTestBuilder;
 import org.apache.druid.sql.calcite.SqlTestFrameworkConfig;
+import org.apache.druid.sql.calcite.util.CalciteTests;
 import org.junit.jupiter.api.Test;
 
 import java.util.UUID;
@@ -74,6 +75,38 @@ public class CalciteDartTest extends BaseCalciteQueryTest
         .run();
   }
 
+  @Test
+  public void testSelectFromRestricted()
+  {
+    testBuilder()
+        .sql("SELECT 2 from restrictedDatasource_m1_is_6")
+        .expectedResults(
+            ImmutableList.of(
+                new Object[]{2}
+            )
+        )
+        .run();
+  }
+
+  @Test
+  public void testSelectFromRestricted_superuser()
+  {
+    testBuilder()
+        .authResult(CalciteTests.SUPER_USER_AUTH_RESULT)
+        .sql("SELECT 2 from restrictedDatasource_m1_is_6")
+        .expectedResults(
+            ImmutableList.of(
+                new Object[]{2},
+                new Object[]{2},
+                new Object[]{2},
+                new Object[]{2},
+                new Object[]{2},
+                new Object[]{2}
+            )
+        )
+        .run();
+  }
+
   @Test
   public void testSelectFromFooLimit2()
   {


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

Reply via email to