@@ -3,12 +3,12 @@ use crate::sharding::Sharder;
3
3
/// Route queries automatically based on explicitely requested
4
4
/// or implied query characteristics.
5
5
use bytes:: { Buf , BytesMut } ;
6
+ use log:: { debug, error} ;
6
7
use once_cell:: sync:: OnceCell ;
7
8
use regex:: RegexSet ;
8
9
use sqlparser:: ast:: Statement :: { Query , StartTransaction } ;
9
10
use sqlparser:: dialect:: PostgreSqlDialect ;
10
11
use sqlparser:: parser:: Parser ;
11
- use log:: { error, debug} ;
12
12
13
13
const CUSTOM_SQL_REGEXES : [ & str ; 5 ] = [
14
14
r"(?i)SET SHARDING KEY TO '[0-9]+'" ,
@@ -174,6 +174,7 @@ impl QueryRouter {
174
174
"default" => {
175
175
// TODO: reset query parser to default here.
176
176
self . active_role = self . default_server_role ;
177
+ self . query_parser_enabled = get_config ( ) . query_router . query_parser_enabled ;
177
178
self . active_role
178
179
}
179
180
@@ -220,11 +221,7 @@ impl QueryRouter {
220
221
let ast = match Parser :: parse_sql ( & PostgreSqlDialect { } , & query) {
221
222
Ok ( ast) => ast,
222
223
Err ( err) => {
223
- debug ! (
224
- "{:?}, query: {}" ,
225
- err,
226
- query
227
- ) ;
224
+ debug ! ( "{:?}, query: {}" , err, query) ;
228
225
return false ;
229
226
}
230
227
} ;
@@ -483,5 +480,10 @@ mod test {
483
480
let query = simple_query ( "SELECT * FROM test_table" ) ;
484
481
assert_eq ! ( qr. infer_role( query) , true ) ;
485
482
assert_eq ! ( qr. role( ) , Some ( Role :: Replica ) ) ;
483
+
484
+ assert ! ( qr. query_parser_enabled( ) ) ;
485
+ let query = simple_query ( "SET SERVER ROLE TO 'default'" ) ;
486
+ assert ! ( qr. try_execute_command( query) != None ) ;
487
+ assert ! ( !qr. query_parser_enabled( ) ) ;
486
488
}
487
489
}
0 commit comments