mirror of
https://github.com/postgresml/pgcat.git
synced 2026-03-26 18:36:28 +00:00
Reset query router setting to default (#32)
This commit is contained in:
@@ -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"
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user