mirror of https://github.com/usememos/memos.git
Fixes #5612, #5611 Root cause: PostgreSQL's jsonb_array_elements() throws errors when the 'tokens' key is missing or malformed, while SQLite/MySQL return NULL gracefully. This caused: - 502 errors when creating admin after v0.25.3 → v0.26.0 upgrade - Settings not persisting and users unable to stay logged in Changes to store/db/postgres/user_setting.go: - Remove strict JSONB operations from GetUserByPATHash query - Fetch all PERSONAL_ACCESS_TOKENS rows and filter in Go - Skip malformed/invalid JSON rows with continue (error recovery) - Match SQLite/MySQL's forgiving error handling New integration tests (store/test/user_setting_test.go): - TestUserSettingGetUserByPATHashNoTokensKey - TestUserSettingGetUserByPATHashEmptyTokensArray - TestUserSettingGetUserByPATHashWithOtherUsers New PostgreSQL-specific tests (store/db/postgres/user_setting_test.go): - TestGetUserByPATHashWithMissingData (comprehensive edge cases) - TestGetUserByPATHashPerformance (100+ users) - TestUpsertUserSetting (basic upsert) Test coverage: ✅ Missing PERSONAL_ACCESS_TOKENS key ✅ Empty/malformed JSON data ✅ Multiple users with mixed valid/invalid data ✅ Performance with 100+ users ✅ Error recovery without crashes Benefits: - No database migration required (TEXT column works fine) - Backward compatible with v0.25.3 upgrades - Handles missing/corrupt data gracefully - Consistent behavior across all database drivers |
||
|---|---|---|
| .. | ||
| cache | ||
| db | ||
| migration | ||
| seed | ||
| test | ||
| activity.go | ||
| attachment.go | ||
| cache.go | ||
| common.go | ||
| driver.go | ||
| idp.go | ||
| inbox.go | ||
| instance_setting.go | ||
| memo.go | ||
| memo_relation.go | ||
| migrator.go | ||
| reaction.go | ||
| store.go | ||
| user.go | ||
| user_setting.go | ||