-- broker.broker_queueinstance -- Tracks active and historical broker queue instances. CREATE TABLE IF NOT EXISTS broker.broker_queueinstance ( id_broker_queueinstance BIGSERIAL PRIMARY KEY, name VARCHAR(255) NOT NULL, hostname VARCHAR(255) NOT NULL, pid INTEGER NOT NULL, version VARCHAR(50) NOT NULL, status VARCHAR(20) NOT NULL DEFAULT 'active', started_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(), last_ping_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(), shutdown_at TIMESTAMP WITH TIME ZONE, queue_count INTEGER NOT NULL DEFAULT 0, jobs_handled BIGINT NOT NULL DEFAULT 0, CONSTRAINT broker_queueinstance_status_check CHECK (status IN ('active', 'inactive', 'shutdown')) ); CREATE INDEX IF NOT EXISTS idx_broker_queueinstance_status ON broker.broker_queueinstance(status); CREATE INDEX IF NOT EXISTS idx_broker_queueinstance_hostname ON broker.broker_queueinstance(hostname); CREATE INDEX IF NOT EXISTS idx_broker_queueinstance_last_ping ON broker.broker_queueinstance(last_ping_at); COMMENT ON TABLE broker.broker_queueinstance IS 'Tracks broker queue instances (active and historical). Single-active-instance-per-name is enforced via a pg_try_advisory_lock in broker_register_instance, not by this status column, which is observational only.'; COMMENT ON COLUMN broker.broker_queueinstance.status IS 'Observational status: active, inactive, or shutdown. Ownership is enforced via advisory lock, not by reading this column.';