KamoCRM

The void columns on hr_timecard_punch

FeatureInitializerService
Shipped
13 ஆகஸ்ட், 2026 அன்று 2:32 AM UTC
Author
Kamo
Commit
cdc1146

Mirrors four new nullable columns on the TimecardPunch entity. A void is neither a delete nor a correction: it says the punch should never have existed — a double tap on the clock, an abandoned break, or the seam between two spans the editor has merged into one. SUPERSEDED_BY_PUNCH_ID cannot express it, because that column means "read this other row instead" and there is no other row. All four are NULLABLE, which is what makes this safe on a populated table: CockroachDB rejects ADD COLUMN ... NOT NULL on a non-empty table and rolls the whole statement back, so a NOT NULL void marker would be logged as a WARN, skipped, and quietly absent. They go FIRST in this runner, ahead of the indexes and REVOKEs it already carries, for the reason @Order(0) exists: the moment shared-lib maps a column, every runner that loads the punch entity emits it in its SELECT, and a column-add ordered late never runs at all — an earlier reader dies on "column does not exist" and takes the initializer down with it. Run against 192.168.4.22:5433, all four applied.

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing