Skip to content

Commit 9553e6c

Browse files
authored
Fix dry run (#491)
1 parent 2d41742 commit 9553e6c

2 files changed

Lines changed: 25 additions & 2 deletions

File tree

pgdog/src/frontend/router/parser/query/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,15 +156,15 @@ impl QueryParser {
156156
};
157157

158158
// Parse hardcoded shard from a query comment.
159-
if context.router_needed {
159+
if context.router_needed || context.dry_run {
160160
self.shard = statement.shard.clone();
161161
if let Some(role) = statement.role {
162162
self.write_override = role == Role::Primary;
163163
}
164164
}
165165

166166
debug!("{}", context.query()?.query());
167-
trace!("{:#?}", statement.ast());
167+
trace!("{:#?}", statement);
168168

169169
let rewrite = Rewrite::new(statement.ast());
170170
if rewrite.needs_rewrite() {

pgdog/src/frontend/router/parser/query/test.rs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1+
use std::ops::Deref;
2+
13
use crate::{
4+
config::{self, config},
25
frontend::client::TransactionType,
36
net::{
47
messages::{parse::Parse, Parameter},
@@ -522,3 +525,23 @@ fn test_commit_prepared() {
522525
let stmt = pg_query::parse("COMMIT PREPARED 'test'").unwrap();
523526
println!("{:?}", stmt);
524527
}
528+
529+
#[test]
530+
fn test_dry_run_simple() {
531+
let mut config = config().deref().clone();
532+
config.config.general.dry_run = true;
533+
config::set(config).unwrap();
534+
535+
let cluster = Cluster::new_test_single_shard();
536+
let command = query_parser!(
537+
QueryParser::default(),
538+
Query::new("/* pgdog_sharding_key: 1234 */ SELECT * FROM sharded"),
539+
false,
540+
cluster
541+
);
542+
let cache = Cache::queries();
543+
let stmt = cache.values().next().unwrap();
544+
assert_eq!(stmt.stats.lock().direct, 1);
545+
assert_eq!(stmt.stats.lock().multi, 0);
546+
assert_eq!(command.route().shard(), &Shard::Direct(0));
547+
}

0 commit comments

Comments
 (0)