Why this change is needed: The migration code at line 2351 was passing a dictionary (row_dict) as parameters to a SQL query that used positional placeholders ($1, $2, etc.). AsyncPG strictly requires positional parameters to be passed as a list/tuple of values in the exact order matching the placeholders. Using a dictionary would cause parameter mismatches and migration failures, potentially corrupting migrated data or causing the entire migration to fail silently. How it solves it: - Extract values from row_dict in the exact order defined by the columns list - Pass values as separate positional arguments using *values unpacking - Added clear comments explaining AsyncPG's requirements - Updated comment from "named parameters" to "positional parameters" for accuracy Impact: - Migration now correctly maps values to SQL placeholders - Prevents data corruption during legacy table migration - Ensures reliable data transfer from old to new table schemas - All PostgreSQL migration tests pass (6/6) Testing: - Verified with `uv run pytest tests/test_postgres_migration.py -v` - all tests pass - Pre-commit hooks pass (ruff-format, ruff) - Tested parameter ordering logic matches AsyncPG requirements |
||
|---|---|---|
| .. | ||
| api | ||
| evaluation | ||
| kg | ||
| llm | ||
| tools | ||
| __init__.py | ||
| base.py | ||
| constants.py | ||
| exceptions.py | ||
| lightrag.py | ||
| namespace.py | ||
| operate.py | ||
| prompt.py | ||
| rerank.py | ||
| types.py | ||
| utils.py | ||
| utils_graph.py | ||