Hardcoding a default catalog such as main | Query current database/catalog metadata and map legacy aliases only during filtering. |
Declaring future methods in driver.json | Add methods only after routing and tests exist, or the host will call broken paths. |
| Hardcoding single-file locking behavior in the host for one driver id | Declare connection.single_file, single_connection, close_on_release, and path_fields in the manifest so the plugin reports lifecycle policy. |
| Hardcoding 国产数据库 ids in the host UI | Declare "category": "domestic_database" at the top level of each matching external driver manifest. |
| Returning table names without schema/catalog context | Preserve database, schema, and object names as distinct fields. |
schema/objects returns name/kind/comment but omits schema | Host can only fall back to table-name matching; table comment echo breaks or misattributes when tables share names across schemas. Return the real schema for every object. |
schema/columns drops the comment column | Column comments never echo in the table designer. Map the catalog's comment/remarks value into ColumnInfo.comment. |
| DDL builder generates comments only in create_table, or gates them behind a never-enabled capability switch | Editing only a comment yields no change statements ("No changes detected", empty SQL preview). Add a comment diff to ddl/build_alter_table and enable the driver's comment capability. |
| DDL alter comments skip newly-added columns | A column added via to_spec (absent from from_spec) with a non-empty comment still needs a COMMENT ON COLUMN after ALTER TABLE ... ADD; skipping fromColumn == null loses the comment in preview. |
| Fixing comment/schema only in one driver or only in the host | The same issue reappears for every other database. Implement all three checkpoints per-driver; host stringCell(cols, 3)/stringCell(cols, 5) compatibility is only a fallback, not the implementation. |
| Metadata SQL references a catalog column that is not in the query context | Referencing a column from a catalog table that the query never joins (e.g. tabid without the join) fails with 字段 (tabid) 不在查询的任何表中. Qualify every referenced column to an aliased FROM/JOIN target. |
| Extending protocol structs without updating explicit Rust struct literals | After adding a field such as ObjectInfo.schema, every Rust driver that constructs ObjectInfo { ... } explicitly must add it; the protocol update will otherwise break all Rust drivers at compile time. |
Declaring schema/object_view without dispatch/tests | Add a connection-scoped route, init/manifest declaration, and tests for at least one rendered view shape. |
Treating information_schema as a normal user schema bug | Include it when the backend supports it; qualify queries correctly. |
| Mixing SQL generation with execution | Keep DDL builders pure and let the host decide preview/execution timing. |
| Assuming Rust-only implementation | Reuse Rust SDKs when in Rust; otherwise implement the same JSON-RPC contract in the chosen language. |