mirror of
https://github.com/feigeCode/navop.git
synced 2026-09-22 08:01:27 +00:00
PG 的序列目录从来是空的:`list_sequences` 查 `information_schema.sequences` 时用的 是 `min_value` / `max_value`,而该视图的真实列名是 `minimum_value` / `maximum_value`。PostgreSQL 直接回 `ERROR: column "min_value" does not exist`, 调用侧 `build_database_or_schema_children` 又用 `.unwrap_or_default()` 把错误吞掉, 于是用户只看到一个空目录,没有任何提示。 - 修正列名(`minimum_value::bigint` / `maximum_value::bigint`);NULL 或不合法文本 仍按「取不到就丢这一个值」处理,不会让整张列表失败。 - 对象面板补 schema:`SequencesFolder` 分支原来调 `list_sequences_view`,PG 实现里 schema 固定成 public,非 public schema 下永远查的是 public。新增 `list_sequences_view_in_schema`(默认退回原实现,MySQL 等驱动行为不变),PG 覆盖 并传节点 schema;同时把对象视图的列定义与行构造抽成 `sequences_object_view`, 避免两个入口重复。 - 左侧树的序列目录本来就传了 schema,只有对象面板这条漏了。 验证: - 新增真实库用例 `crates/db/tests/real_databases/postgres/sequences.rs`:在非 public schema 下建 plain / 显式 MINVALUE·MAXVALUE / NO MINVALUE·NO MAXVALUE / smallint 四种序列,断言取值(含 `NO MAXVALUE` 的 i64::MAX、smallint 的 32767)、对象面板 按 schema 取数、不带 schema 的旧入口仍只查 public,以及树的序列目录内容与 元数据。`ONETCLI_TEST_POSTGRES_PASSWORD=... cargo test -p db --test real_postgres` → 6 passed。 - 新增单测 `test_postgres_sequences_use_information_schema_minimum_columns`。变异 验证:把列名改回 `min_value` / `max_value`,单测与真实库用例都变红,改回即绿。 - `cargo test -p db -p db_view` → 1316 passed / 721 passed(各 1 ignored); `cargo check --workspace --all-targets` 无 error;新增行 clippy 无告警;rustfmt 干净。