TL;DR

  • PostgreSQL이 일반적인 DDL 환경에서 충돌·덤프·일관성 문제를 일으키는 SQL/PGQ 프로퍼티 그래프 기능을 v19에서 철회함.
  • 잠금, 의존성, 카탈로그 메타데이터 설계 결함으로 그래프가 복구 불가 상태가 되거나 정당한 변경 작업을 차단할 수 있음.
  • pg_dump가 프로퍼티 타입 같은 의존성을 누락하고, 기반 테이블의 연쇄 삭제가 고아 라벨과 프로퍼티를 남기는 문제가 확인됨.
  • 동시 재작성 차단에 실패하는 잠금, 알 수 없는 타입에 대한 범위 밖 읽기, 권한 검사 누락, 전체 행 표현식의 덤프 실패 등 추가 결함이 발견됨.
  • 릴리스 관리 팀이 v19 철회를 추진하며, 호환성 제약 없이 의존성과 잠금 동작을 재설계하는 방향임.

v19에서 프로퍼티 그래프 철회 결정

  • PostgreSQL이 다가오는 v19 릴리스에서 새로운 SQL/PGQ 프로퍼티 그래프(property graph) 기능을 제거할 예정임.
  • 핵심 개발자들이 일반적인 DDL 작업에서 그래프를 충돌 취약·덤프 불가·비일관 상태로 만드는 체계적인 잠금, 의존성, 카탈로그 문제를 발견한 결과임.
  • Andres Freund가 덤프와 의존성 처리를 점검한 뒤 문제를 제기함.
  • 프로퍼티 그래프가 카탈로그에 부자연스럽게 배치되어 있으며, 불필요한 attribute 행까지 포함하는 구조임.
  • pg_dump가 프로퍼티 타입 같은 의존성을 누락하고, 기반 테이블의 연쇄 삭제가 고아 라벨과 프로퍼티를 남기는 문제임.
  • 이후 남은 메타데이터가 정상적인 ALTER PROPERTY GRAPH 명령을 잘못된 타입 불일치 오류로 차단하고 그래프 복구를 어렵게 만들 수 있음.

해결되지 않은 설계 쟁점

  • Release Management Team을 대표해 Melanie Plageman이 미해결 설계 문제를 정리함.
  • 고아 메타데이터 정리는 임시방편에 불과함.
  • 라벨과 프로퍼티 범위를 전역으로 둘지 라벨별로 둘지에 대한 합의가 아직 없음.
  • 여러 올바른 수정안이 의존성 처리 체계를 크게 변경해야 하므로 v19에 적용하기에는 침습성이 과도함.
  • Freund가 짧은 수동 점검과 자동 검토를 통해 추가 결함을 보고함.
  • 잠금 없이 요소 테이블 스키마를 읽는 재작성 경로
  • 동시 재작성을 차단하기에 지나치게 약한 AlterPropGraph 잠금
  • 알 수 없는 타입에서 발생하는 범위 밖 읽기
  • 전체 행 GRAPH_TABLE 참조가 열을 0개로 확장되는 문제
  • 누락된 권한 검사
  • 전체 행 프로퍼티 표현식에서 발생하는 덤프 오류

추가 결함과 릴리스 판단

  • 다른 개발자들이 DROP OWNED BY와 관련된 실패도 보고함.
  • 외래 키에서 엣지 키를 가져온 그래프가 조용히 손실되는 문제임.
  • 문서와 달리 유일하지 않은 키가 허용되는 문제임.
  • 열 타입 변경이 프로퍼티 의존성 때문에 오류를 내는 문제임.
  • Sami Imseih가 일반 삭제 코드에 프로퍼티 그래프 전용 고아 처리 로직을 넣는 방안에 반대함.

이는 깔끔하지 않은 카탈로그 표현을 보상하기 위한 조치임.

  • Freund는 이 기능이 v19에 포함될 준비와는 거리가 매우 멀며 v20에 계속 남을 준비도 되지 않았을 수 있다고 결론 내림.
  • Peter Eisentraut가 철회에 동의하면서, 철회 범위를 v19 안정화 라인에만 적용할지 master에도 적용할지 확인을 요청함.
  • 이번 결정으로 릴리스 압박이 줄어들고, 프로젝트가 호환성 제약 없이 의존성과 잠금 동작을 재설계할 수 있게 됨.