File tree Expand file tree Collapse file tree
pgdog/src/frontend/router/parser/query Expand file tree Collapse file tree Original file line number Diff line number Diff 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 ( ) {
Original file line number Diff line number Diff line change 1+ use std:: ops:: Deref ;
2+
13use 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+ }
You can’t perform that action at this time.
0 commit comments