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]