피드로 돌아가기
PostgreSQL 22P01 Error: Causes and Solutions Complete Guide
Dev.toDev.to
Database

PostgreSQL 22P01 예외 방지를 위한 Float 데이터 정제 및 제약 조건 설계

PostgreSQL 22P01 Error: Causes and Solutions Complete Guide

umzzil nng2026년 6월 14일3intermediate

Context

Float 타입 연산 중 Division by Zero, NaN, Infinity 발생으로 인한 22P01 Floating Point Exception 처리 필요. 외부 데이터 유입이나 분석 쿼리 수행 시 수학적 정의가 불가능한 결과값으로 인한 런타임 에러 발생.

Technical Solution

  • NULLIF 함수를 통한 분모 0 값의 NULL 치환으로 Division by Zero 런타임 에러 원천 차단
  • 'value != value' 조건식을 활용한 NaN(Not a Number) 값 식별 및 데이터 필터링 로직 구현
  • Infinity 및 NaN을 동시에 처리하는 safe_float() 커스텀 함수 설계를 통한 연산 안전성 확보
  • Custom Domain 설정을 통한 Table 레벨의 Check Constraint 도입으로 부적절한 Float 값의 Insert/Update 원천 방지
  • pg_cron 기반의 정기적 데이터 품질 체크 쿼리 수행을 통한 데이터 무결성 상시 모니터링

- Float 나누기 연산 시 분모에 NULLIF(column, 0) 적용 여부 확인 - 외부 API/CSV 유입 데이터에 대한 NaN 및 Infinity 값 검증 로직 포함 - 데이터 무결성 강제를 위한 Custom Domain 기반의 Check Constraint 검토 - 집계 함수 사용 전 'WHERE value = value' 필터로 NaN 제거 처리

원문 읽기