Skip to content

Commit 52c5add

Browse files
adheer-araokarfacebook-github-bot
authored andcommitted
feat: Send "ensureConsistentRead" to Metastore API for all SELECT queries (prestodb#26474)
Summary: X-link: facebookexternal/presto-facebook#3436 X-link: facebookexternal/presto-facebook#3436 feat: Send "ensureConsistentRead" to Metastore API for all SELECT queries BREAKING CHANGE: Default metastore replica to be read from for Select queries will be the read replica, and re-after-write users will have to set "prism.force_metastore_primary_enabled" session property to "true" Reviewed By: singcha Test Plan: `ensure_consistent_read` is set to false for Select and Explain queries, and to true for all other type of queries ``` select * from test_adheer_delete limit 100 ``` ``` headers: [{thrift_metastore_client_info={ "project" : "presto", "max_num_partitions_to_be_cached" : "1000", **"ensure_consistent_read" : "false",** "dw.jobId" : "20251027_045135_00005_ig79c", "dw.owner" : "prestoui", "dw.pipeline" : "presto-js-client" }}] ``` ``` CREATE TABLE test_adheer_delete (col1 bigint, col2 bigint) WITH (oncall = 'presto_batch', partitioned_by = ARRAY['col2']) ``` ``` headers: [{thrift_metastore_client_info={ "project" : "presto", "max_num_partitions_to_be_cached" : "1000", **"ensure_consistent_read" : "true",** "dw.jobId" : "20251027_043305_00004_ig79c", "dw.owner" : "prestoui", "dw.pipeline" : "presto-js-client" }}] ``` built presto version `0.296-20251028.203517-312` deployed on test cluster `atn1_adhoctest_t6_ec1` set the session property `SET SESSION prism.force_metastore_primary_enabled=true;` ran the query `select * from presto_query_statistics limit 1;` with the query id `20251028_234254_00028_yqy68` validated the headers with the query `select headers, * from hive_metsatore_logger_logs_inc_archive where ds = '2025-10-28' and dw_environment = 'atn1_adhoctest_t6_ec1' and dw_job_id = '20251028_234254_00028_yqy68'` {F1983081638} can see `ensure_consistent_read: true` ran the same query but without setting the session property, and validated the headers {F1983082149} can see `ensure_consistent_read: false` Differential Revision: D84520611 Pulled By: adheer-araokar
1 parent 7a6c0a3 commit 52c5add

File tree

5 files changed

+31
-0
lines changed

5 files changed

+31
-0
lines changed

presto-hive/src/test/java/com/facebook/presto/hive/AbstractTestHiveClient.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import com.facebook.presto.common.predicate.Range;
3030
import com.facebook.presto.common.predicate.TupleDomain;
3131
import com.facebook.presto.common.predicate.ValueSet;
32+
import com.facebook.presto.common.resourceGroups.QueryType;
3233
import com.facebook.presto.common.type.ArrayType;
3334
import com.facebook.presto.common.type.MapType;
3435
import com.facebook.presto.common.type.NamedTypeSignature;
@@ -1250,6 +1251,12 @@ public RuntimeStats getRuntimeStats()
12501251
return session.getRuntimeStats();
12511252
}
12521253

1254+
@Override
1255+
public Optional<QueryType> getQueryType()
1256+
{
1257+
return session.getQueryType();
1258+
}
1259+
12531260
@Override
12541261
public ConnectorSession forConnectorId(ConnectorId connectorId)
12551262
{

presto-main-base/src/main/java/com/facebook/presto/FullConnectorSession.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import com.facebook.presto.common.RuntimeStats;
1717
import com.facebook.presto.common.function.SqlFunctionProperties;
18+
import com.facebook.presto.common.resourceGroups.QueryType;
1819
import com.facebook.presto.common.type.TimeZoneKey;
1920
import com.facebook.presto.metadata.SessionPropertyManager;
2021
import com.facebook.presto.spi.ConnectorId;
@@ -309,6 +310,12 @@ public RuntimeStats getRuntimeStats()
309310
return runtimeStats;
310311
}
311312

313+
@Override
314+
public Optional<QueryType> getQueryType()
315+
{
316+
return session.getQueryType();
317+
}
318+
312319
@Override
313320
public ConnectorSession forConnectorId(ConnectorId connectorId)
314321
{

presto-main-base/src/main/java/com/facebook/presto/testing/TestingConnectorSession.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.facebook.presto.FullConnectorSession;
1717
import com.facebook.presto.common.RuntimeStats;
1818
import com.facebook.presto.common.function.SqlFunctionProperties;
19+
import com.facebook.presto.common.resourceGroups.QueryType;
1920
import com.facebook.presto.common.type.TimeZoneKey;
2021
import com.facebook.presto.execution.QueryIdGenerator;
2122
import com.facebook.presto.spi.ConnectorId;
@@ -228,6 +229,12 @@ public RuntimeStats getRuntimeStats()
228229
return new RuntimeStats();
229230
}
230231

232+
@Override
233+
public Optional<QueryType> getQueryType()
234+
{
235+
return Optional.of(QueryType.SELECT);
236+
}
237+
231238
@Override
232239
public ConnectorSession forConnectorId(ConnectorId connectorId)
233240
{

presto-spi/src/main/java/com/facebook/presto/spi/ConnectorSession.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import com.facebook.presto.common.RuntimeStats;
1717
import com.facebook.presto.common.function.SqlFunctionProperties;
18+
import com.facebook.presto.common.resourceGroups.QueryType;
1819
import com.facebook.presto.common.type.TimeZoneKey;
1920
import com.facebook.presto.spi.function.SqlFunctionId;
2021
import com.facebook.presto.spi.function.SqlInvokedFunction;
@@ -67,6 +68,8 @@ default boolean isReadConstraints()
6768

6869
RuntimeStats getRuntimeStats();
6970

71+
Optional<QueryType> getQueryType();
72+
7073
/**
7174
* returns a ConnectorSession for a specific ConnectorId
7275
* @return

presto-spi/src/test/java/com/facebook/presto/spi/TestingSession.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import com.facebook.presto.common.RuntimeStats;
1717
import com.facebook.presto.common.function.SqlFunctionProperties;
18+
import com.facebook.presto.common.resourceGroups.QueryType;
1819
import com.facebook.presto.common.type.TimeZoneKey;
1920
import com.facebook.presto.spi.function.SqlFunctionId;
2021
import com.facebook.presto.spi.function.SqlInvokedFunction;
@@ -131,6 +132,12 @@ public RuntimeStats getRuntimeStats()
131132
return new RuntimeStats();
132133
}
133134

135+
@Override
136+
public Optional<QueryType> getQueryType()
137+
{
138+
return Optional.of(QueryType.SELECT);
139+
}
140+
134141
@Override
135142
public ConnectorSession forConnectorId(ConnectorId connectorId)
136143
{

0 commit comments

Comments
 (0)