Reset query router setting to default (#32)

This commit is contained in:
Lev Kokotov
2022-02-21 00:00:50 -08:00
committed by GitHub
parent aceb2ace24
commit 86941d62e4
3 changed files with 12 additions and 10 deletions

View File

@@ -25,6 +25,9 @@ jobs:
- checkout - checkout
- restore_cache: - restore_cache:
key: cargo-lock-2-{{ checksum "Cargo.lock" }} key: cargo-lock-2-{{ checksum "Cargo.lock" }}
- run:
name: "Lint"
command: "cargo fmt --check"
- run: - run:
name: "Install dependencies" name: "Install dependencies"
command: "sudo apt-get update && sudo apt-get install -y psmisc postgresql-contrib-12 postgresql-client-12 ruby ruby-dev libpq-dev" command: "sudo apt-get update && sudo apt-get install -y psmisc postgresql-contrib-12 postgresql-client-12 ruby ruby-dev libpq-dev"

View File

@@ -167,10 +167,7 @@ impl ConnectionPool {
}; };
if !exists { if !exists {
error!( error!("Requested role {:?}, but none are configured", role);
"Requested role {:?}, but none are configured",
role
);
return Err(Error::BadConfig); return Err(Error::BadConfig);
} }

View File

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