17 lines
1 KiB
SQL
17 lines
1 KiB
SQL
-- A physical connection touches last_used_at atomically while loading its key. Orphan GC uses
|
|
-- this watermark in addition to the in-memory active-key snapshot, closing the Get->Register
|
|
-- race without turning the per-frame encrypted fast path into a database write.
|
|
ALTER TABLE public.auth_keys
|
|
ADD COLUMN IF NOT EXISTS last_used_at timestamptz NOT NULL DEFAULT now();
|
|
|
|
CREATE INDEX IF NOT EXISTS auth_keys_orphan_last_used_idx
|
|
ON public.auth_keys (last_used_at, auth_key_id);
|
|
|
|
-- DeleteOrphaned now seeks exclusively by last_used_at. Keeping the transitional 0065
|
|
-- created_at index would duplicate auth-key insert/delete maintenance without serving a query.
|
|
DROP INDEX IF EXISTS public.auth_keys_orphan_retention_idx;
|
|
|
|
-- Delete/revoke and orphan-retention probes both resolve perm->temp bindings. The original
|
|
-- primary key only covers temp_auth_key_id, so the reverse predicate otherwise scans the table.
|
|
CREATE INDEX IF NOT EXISTS temp_auth_key_bindings_perm_idx
|
|
ON public.temp_auth_key_bindings (perm_auth_key_id);
|