v0.3.3-pre.003-fix.003
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-store-postgres-lib/src/schema.rs
|
||||
// version: 3
|
||||
// version: 4
|
||||
|
||||
/// Immutable V000 physical schema resource inventory.
|
||||
pub(crate) const V000_RESOURCES: &[SchemaResource] = &[SchemaResource {
|
||||
@@ -798,7 +798,7 @@ pub(crate) async fn verify_v001_external_compatibility(
|
||||
for row in unique_rows {
|
||||
let name = row.try_get::<usize, std::string::String>(0);
|
||||
let constraint_backed = row.try_get::<usize, bool>(1);
|
||||
let (name, constraint_backed) = match (name, constraint_backed) {
|
||||
let (_name, constraint_backed) = match (name, constraint_backed) {
|
||||
(std::result::Result::Ok(name), std::result::Result::Ok(constraint_backed)) => (name, constraint_backed),
|
||||
_ => return schema_query_error("schema_unique_index_inventory_decode"),
|
||||
};
|
||||
@@ -1082,10 +1082,26 @@ async fn inspect_equivalent_constraint(
|
||||
|
||||
fn expected_constraint_definition(resource_sql: &str, name: &str) -> std::option::Option<std::string::String> {
|
||||
let marker = std::format!("ADD CONSTRAINT {name} ");
|
||||
let start = resource_sql.find(marker.as_str())?.checked_add(marker.len())?;
|
||||
let tail = resource_sql.get(start..)?;
|
||||
let end = tail.find(';')?;
|
||||
let definition = tail.get(..end)?;
|
||||
let marker_start = match resource_sql.find(marker.as_str()) {
|
||||
std::option::Option::Some(value) => value,
|
||||
std::option::Option::None => return std::option::Option::None,
|
||||
};
|
||||
let start = match marker_start.checked_add(marker.len()) {
|
||||
std::option::Option::Some(value) => value,
|
||||
std::option::Option::None => return std::option::Option::None,
|
||||
};
|
||||
let tail = match resource_sql.get(start..) {
|
||||
std::option::Option::Some(value) => value,
|
||||
std::option::Option::None => return std::option::Option::None,
|
||||
};
|
||||
let end = match tail.find(';') {
|
||||
std::option::Option::Some(value) => value,
|
||||
std::option::Option::None => return std::option::Option::None,
|
||||
};
|
||||
let definition = match tail.get(..end) {
|
||||
std::option::Option::Some(value) => value,
|
||||
std::option::Option::None => return std::option::Option::None,
|
||||
};
|
||||
return std::option::Option::Some(normalize_catalog_sql(definition));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user