Paradaux

PAR-326

0

economy_players cutover drops last-login epoch for firm-directory-absent players

Pending ReleaseUnassignedTreasury

Found in code review of PR #2 (develop→main).

MEDIUM — V17__economy_players.sql / V19__drop_legacy_player_tables.sql. V17 seeded economy_players from firm_players and only folded last_login_epoch into rows that already existed — so a player present in player_login_times but never in firm_players got no row, and V19's DROP TABLE player_login_times made the epoch loss permanent. Measured on the live DB: 30 players affected. V19's comment claimed "no data is lost", which was false.

Fix: V17 now seeds those epoch-only players with a HEX(uuid) placeholder name (exactly 32 chars — can never collide with a ≤16-char Minecraft IGN; self-heals to the real name on the player's next login via the directory upsert). V19 comment corrected. Live dry-run: 30 rows, 0 wrong-length, 0 null epochs, 0 name collisions.

Also — V18__consolidate_account_access.sql (process note): it was edited after first commit (added DROP VIEW). Confirmed safe: the live DB is at Flyway V15 so V18 was never applied (no checksum to mismatch), and the DROP VIEW must stay inside V18 before its CREATE TABLE to handle the prod compat-view shim — documented in the migration so it isn't "fixed" later.

Adversarially reviewed before/after against live data.

Resources

Comments

No comments yet.

Activity

  • ParadauxIO linked a commit — Commit 8286ff9 — Fix PR #2 review findings across business, treasury, rest-api, flyway
  • tesks created the issue