cleanup: drop dead storage_objects.parent_object_id column + idx_storage_parent
parent_object_id was never written or read by any application code (verified via repo-wide grep: only the baseline migration and the ORM model referenced it). The orphan index idx_storage_parent likewise served nothing. Tree structure is maintained entirely via the materialized path in storage_objects.relative_path (LIKE-prefix queries in backend/src/backend/scripts.py: list_workspace_tree, list_workspace_directories). The column mislead a prior review into proposing an adjacency-list table — removing it eliminates that temptation for the next reader. Migration: migrations/versions/f7a8b9c0d1e2_drop_storage_parent.py - Drops idx_storage_parent first, then parent_object_id (correct order on MySQL). - MySQL 8.0 has no IF EXISTS on DROP INDEX / DROP COLUMN, so calls are unconditional. - Updates the storage_objects TABLE COMMENT so the materialized-path warning reaches the DB, not just the ORM (Codex review finding). - Downgrade restores both. Model: common/src/common/db/models/storage.py - Removes the dead Index entry and the dead column. - Refreshes the table comment to flag the materialized-path contract. Verified: - alembic upgrade head: applied, head = f7a8b9c0d1e2 - SHOW INDEX / SHOW COLUMNS: 0 rows - TABLE COMMENT updated in information_schema - pytest backend/tests: 43 passed
This commit is contained in:
@@ -20,7 +20,6 @@ class StorageObjects(Base):
|
||||
Index("fk_storage_created_by", "created_by"),
|
||||
Index("idx_storage_content_hash", "content_hash"),
|
||||
Index("idx_storage_owner", "owner_user_id", "object_status"),
|
||||
Index("idx_storage_parent", "parent_object_id"),
|
||||
Index(
|
||||
"idx_storage_workspace_path",
|
||||
"workspace_id",
|
||||
@@ -40,7 +39,7 @@ class StorageObjects(Base):
|
||||
"object_key_hash_active",
|
||||
unique=True,
|
||||
),
|
||||
{"comment": "Workspace 文件和 RustFS 对象的统一元数据"},
|
||||
{"comment": "Workspace 文件和 RustFS 对象的统一元数据;目录树走 materialized path (relative_path),不要 join 邻接表列——已删除。"},
|
||||
)
|
||||
|
||||
storage_object_id: Mapped[str] = mapped_column(CHAR(26), primary_key=True)
|
||||
@@ -86,7 +85,6 @@ class StorageObjects(Base):
|
||||
server_default=text("CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)"),
|
||||
)
|
||||
owner_user_id: Mapped[str | None] = mapped_column(CHAR(26))
|
||||
parent_object_id: Mapped[str | None] = mapped_column(CHAR(26))
|
||||
relative_path: Mapped[str | None] = mapped_column(
|
||||
String(1024), comment="Workspace 相对路径"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user