LightRAG/lightrag/kg
BukeLy c89b0ee599 fix: specify conflict target in PostgreSQL ON CONFLICT clause
Why this change is needed:
PostgreSQL requires an explicit conflict target specification when using
ON CONFLICT with tables that have composite primary keys. Without it,
PostgreSQL throws: "ON CONFLICT DO NOTHING requires inference specification
or constraint name". This syntax error occurs during data migration from
legacy tables when users upgrade from older LightRAG versions.

How it solves it:
Changed line 2378 from "ON CONFLICT DO NOTHING" to "ON CONFLICT (workspace, id)
DO NOTHING" to match the table's PRIMARY KEY (workspace, id) constraint.
This aligns with the correct syntax used in all other 12 ON CONFLICT clauses
throughout the codebase (e.g., line 684, 5229, 5236, etc.).

Impact:
- Fixes migration failure in PGVectorStorage.setup_table()
- Prevents syntax errors when migrating data from legacy tables
- Maintains consistency with all other ON CONFLICT usages in postgres_impl.py
- Affects users upgrading from pre-model-suffix table structure

Testing:
Verified by examining:
- All 12 existing ON CONFLICT usages specify (workspace, id)
- All PostgreSQL tables use PRIMARY KEY (workspace, id)
- Migration code at line 684 uses identical correct syntax
2025-11-20 11:47:15 +08:00
..
deprecated Preserve ordering in get_by_ids methods across all storage implementations 2025-10-11 12:37:59 +08:00
__init__.py Improve storage config validation and add config.ini fallback support 2025-11-08 22:48:49 +08:00
faiss_impl.py Remove final_namespace attribute for in-memory storage and use namespace in clean_llm_query_cache.py 2025-11-17 12:54:33 +08:00
json_doc_status_impl.py Remove final_namespace attribute for in-memory storage and use namespace in clean_llm_query_cache.py 2025-11-17 12:54:33 +08:00
json_kv_impl.py Remove final_namespace attribute for in-memory storage and use namespace in clean_llm_query_cache.py 2025-11-17 12:54:33 +08:00
memgraph_impl.py Refactor workspace handling to use default workspace and namespace locks 2025-11-17 12:54:33 +08:00
milvus_impl.py Standardize empty workspace handling from "_" to "" across storage 2025-11-17 12:54:33 +08:00
mongo_impl.py Standardize empty workspace handling from "_" to "" across storage 2025-11-17 12:54:33 +08:00
nano_vector_db_impl.py Standardize empty workspace handling from "_" to "" across storage 2025-11-17 12:54:33 +08:00
neo4j_impl.py Refactor workspace handling to use default workspace and namespace locks 2025-11-17 12:54:33 +08:00
networkx_impl.py Remove final_namespace attribute for in-memory storage and use namespace in clean_llm_query_cache.py 2025-11-17 12:54:33 +08:00
postgres_impl.py fix: specify conflict target in PostgreSQL ON CONFLICT clause 2025-11-20 11:47:15 +08:00
qdrant_impl.py refactor: unify PostgreSQL and Qdrant migration logic for consistency 2025-11-20 11:37:59 +08:00
redis_impl.py Standardize empty workspace handling from "_" to "" across storage 2025-11-17 12:54:33 +08:00
shared_storage.py style: fix lint errors (trailing whitespace and formatting) 2025-11-20 01:41:23 +08:00