From ee212dd2977d2a89a357700ebe9b8adfd1654a7a Mon Sep 17 00:00:00 2001 From: Kevin Tang Date: Wed, 26 Nov 2025 14:34:27 -0800 Subject: [PATCH] Enable validate query token on Sapphire Summary: Sapphire is currently not calling checkQueryIntegrity. checkQueryIntegrity is needed for DPAS authorization, and it is also needed for DPAS shadow call Differential Revision: D87871753 --- .../presto/spark/PrestoSparkQueryExecutionFactory.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/presto-spark-base/src/main/java/com/facebook/presto/spark/PrestoSparkQueryExecutionFactory.java b/presto-spark-base/src/main/java/com/facebook/presto/spark/PrestoSparkQueryExecutionFactory.java index 3da7754b286ae..d1673b3e13348 100644 --- a/presto-spark-base/src/main/java/com/facebook/presto/spark/PrestoSparkQueryExecutionFactory.java +++ b/presto-spark-base/src/main/java/com/facebook/presto/spark/PrestoSparkQueryExecutionFactory.java @@ -670,6 +670,7 @@ public IPrestoSparkQueryExecution create( Optional queryType = StatementUtils.getQueryType(preparedQuery.getStatement().getClass()); if (queryType.isPresent() && (queryType.get() == QueryType.DATA_DEFINITION || queryType.get() == QueryType.CONTROL)) { queryStateTimer.endAnalysis(); + accessControl.checkQueryIntegrity(session.getIdentity(), session.getAccessControlContext(), sql, ImmutableMap.of(), ImmutableMap.of()); DDLDefinitionTask task = (DDLDefinitionTask) ddlTasks.get(preparedQuery.getStatement().getClass()); return new PrestoSparkDataDefinitionExecution(task, preparedQuery.getStatement(), transactionManager, accessControl, metadata, session, queryStateTimer, warningCollector, sql); } @@ -677,6 +678,8 @@ else if (preparedQuery.isExplainTypeValidate()) { return accessControlChecker.createExecution(session, preparedQuery, queryStateTimer, warningCollector, sql); } else { + accessControl.checkQueryIntegrity(session.getIdentity(), session.getAccessControlContext(), sql, ImmutableMap.of(), ImmutableMap.of()); + VariableAllocator variableAllocator = new VariableAllocator(); PlanNodeIdAllocator planNodeIdAllocator = new PlanNodeIdAllocator(); planAndMore = queryPlanner.createQueryPlan(session, preparedQuery, warningCollector, variableAllocator, planNodeIdAllocator, sparkContext, sql);