mirror of
https://github.com/postgresml/pgcat.git
synced 2026-03-23 01:16:30 +00:00
Update to latest sqlparser version
This commit is contained in:
@@ -504,55 +504,33 @@ impl QueryRouter {
|
|||||||
let mut table_names = Vec::new();
|
let mut table_names = Vec::new();
|
||||||
|
|
||||||
match q {
|
match q {
|
||||||
Insert {
|
Insert(i) => {
|
||||||
or,
|
|
||||||
into: _,
|
|
||||||
table_name,
|
|
||||||
columns,
|
|
||||||
overwrite: _,
|
|
||||||
source,
|
|
||||||
partitioned,
|
|
||||||
after_columns,
|
|
||||||
table: _,
|
|
||||||
on: _,
|
|
||||||
returning: _,
|
|
||||||
ignore: _,
|
|
||||||
} => {
|
|
||||||
// Not supported in postgres.
|
// Not supported in postgres.
|
||||||
assert!(or.is_none());
|
assert!(i.or.is_none());
|
||||||
assert!(partitioned.is_none());
|
assert!(i.partitioned.is_none());
|
||||||
assert!(after_columns.is_empty());
|
assert!(i.after_columns.is_empty());
|
||||||
|
|
||||||
Self::process_table(table_name, &mut table_names);
|
Self::process_table(&i.table_name, &mut table_names);
|
||||||
if let Some(source) = source {
|
if let Some(source) = &i.source {
|
||||||
Self::process_query(source, &mut exprs, &mut table_names, &Some(columns));
|
Self::process_query(source, &mut exprs, &mut table_names, &Some(&i.columns));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Delete {
|
Delete(d) => {
|
||||||
tables,
|
if let Some(expr) = &d.selection {
|
||||||
from,
|
|
||||||
using,
|
|
||||||
selection,
|
|
||||||
returning: _,
|
|
||||||
order_by: _,
|
|
||||||
limit: _,
|
|
||||||
} => {
|
|
||||||
if let Some(expr) = selection {
|
|
||||||
exprs.push(expr.clone());
|
exprs.push(expr.clone());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Multi tables delete are not supported in postgres.
|
// Multi tables delete are not supported in postgres.
|
||||||
assert!(tables.is_empty());
|
assert!(d.tables.is_empty());
|
||||||
|
|
||||||
Self::process_tables_with_join(from, &mut exprs, &mut table_names);
|
if let Some(using_tbl_with_join) = &d.using {
|
||||||
if let Some(using_tbl_with_join) = using {
|
|
||||||
Self::process_tables_with_join(
|
Self::process_tables_with_join(
|
||||||
using_tbl_with_join,
|
using_tbl_with_join,
|
||||||
&mut exprs,
|
&mut exprs,
|
||||||
&mut table_names,
|
&mut table_names,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
Self::process_selection(selection, &mut exprs);
|
Self::process_selection(&d.selection, &mut exprs);
|
||||||
}
|
}
|
||||||
Update {
|
Update {
|
||||||
table,
|
table,
|
||||||
@@ -822,7 +800,13 @@ impl QueryRouter {
|
|||||||
|
|
||||||
for a in assignments {
|
for a in assignments {
|
||||||
if sharding_key[0].value == "*"
|
if sharding_key[0].value == "*"
|
||||||
&& sharding_key[1].value == a.id.last().unwrap().value.to_lowercase()
|
&& sharding_key[1].value
|
||||||
|
== a.target
|
||||||
|
.to_string()
|
||||||
|
.split('.')
|
||||||
|
.last()
|
||||||
|
.unwrap()
|
||||||
|
.to_lowercase()
|
||||||
{
|
{
|
||||||
return Err(Error::QueryRouterParserError(
|
return Err(Error::QueryRouterParserError(
|
||||||
"Sharding key cannot be updated.".into(),
|
"Sharding key cannot be updated.".into(),
|
||||||
|
|||||||
Reference in New Issue
Block a user