네 달 동안 다섯 번 고친 함수
PostgreSQLPL/pgSQLCron
01이슈 및 현상
기지국 제어 스케줄이 현재 시각에 적용되는지 판정하는 PostgreSQL 함수 is_within_cron_range를 네 달 동안 다섯 번 고쳤습니다.
02원인 파악
시간 비교를 정수 시(hour) 단위로만 설계해, 09:30~18:30 같은 분 단위 구간을 표현할 수 없었습니다. 09시대 전체가 통째로 포함/제외되는 오차가 났고, 이후 수정이 모두 이 시 단위 구조 위에서 이뤄져 근본 문제는 그대로 남았습니다.
03해결 방안
비교 단위를 자정 기준 누적 분(시×60 + 분)으로 정규화해 범위 검사도 분 단위로 바꿨습니다. 선언만 되고 값이 들어가지 않으면 NULL이 되어 조건이 어긋나는 것을 막기 위해, 모든 INT 변수에 기본값 0을 부여했습니다.
04결과 및 성과
분 단위 구간이 정확히 판정되면서 네 달간 이어지던 반복 수정이 종결됐습니다. 시간 비교는 처음부터 단일 단위로 정규화해야 경계 조건이 기하급수적으로 늘지 않는다는 원칙을 확인했습니다.