출시일: 2025-08-14
이 릴리스에는 16.9의 다양한 수정 사항이 포함되어 있습니다. 주요 릴리스 16의 새로운 기능에 대한 자세한 내용은 다음을 참조하세요.사설 토토 PostgreSQL : 문서 : 16 : E.9. 릴리스 16.
16.X를 실행하는 경우 덤프/복원이 필요사설 토토 사이트 않습니다.
그러나 BRIN이 있는 경우numeric_minmax_multi_ops색인을 업데이트한 후 다시 색인화하는 것이 좋습니다. 아래의 네 번째 변경 로그 항목을 참조하세요.
또한 16.9 이전 버전에서 업그레이드하는 경우 참조PostgreSQL : 문서 : 16 : E.1. 윈 토토 16.9.
플래너 추정 기능의 보안 검사를 강화합니다(Dean Rasheed)§
CVE-2017-7484에 대한 수정 사항과 후속 수정 사항은 호출하는 사용자에게 읽기 권한이 없는 열에 대한 통계 데이터에 누수 기능이 적용되는 것을 방지하기 위한 것입니다. 해당 보호에 두 가지 공백이 발견되었습니다. 테이블의 RLS 정책이 통계 데이터에 대한 액세스를 제한해야 사설 토토 사이트만 그렇지 않은 분할 및 상속 계층에 한 가지 격차가 적용됩니다.
다른 차이는 쿼리가 뷰를 통해 테이블에 액세스하는 경우에 적용되며, 뷰 소유자는 기본 테이블을 읽을 수 있는 권한이 있지만 호출하는 사용자는 뷰에 대한 권한이 없습니다. 뷰 소유자의 권한은 보안 검사를 충족했으며, 뷰에 대한 호출 사용자의 권한을 확인하기 전에 누출 기능이 기본 테이블의 통계에 적용되었습니다. 계획 시작 시 뷰에 대한 보안 검사를 수행하여 이 문제를 해결했습니다. 이로 인해 이전보다 더 일찍 권한 오류가 발생할 수 있습니다.
그포스트그레SQL프로젝트는 이 문제를 보고한 Dean Rasheed에게 감사드립니다. (CVE-2025-8713)
방지pg_dump복원을 실행하는 사용자를 공격하는 데 사용되는 스크립트(Nathan Bossart)§
덤프/복원 작업에는 일반적으로 수퍼유저로 SQL 명령 실행이 포함되므로 대상 데이터베이스 설치는 소스 서버를 신뢰해야 합니다. 그러나 실행하는 운영 체제 사용자는 따르지 않습니다.psql복원을 수행하려면 원본 서버를 신뢰해야 합니다. 여기서 위험은 소스 서버에 대한 슈퍼유저 수준의 제어권을 얻은 공격자가 소스 서버에서 다음과 같이 해석되는 텍스트를 내보내도록 할 수 있다는 것입니다.psql메타 명령. 이는 대상 데이터베이스에 대한 액세스와 관계없이 복원하는 사용자 자신의 계정에 대한 셸 수준 액세스를 제공합니다.
이런 일이 발생사설 토토 사이트 않는다는 긍정적인 보장을 제공하려면 연장psql와\제한추가 메타 명령 실행을 방지하는 명령 및 학습pg_dump소스 서버에서 데이터가 오기 전에 이를 발행합니다.
PostgreSQL 프로젝트는 이 문제를 보고해 주신 Martin Rakhmanov, Matthieu Denais 및 RyotaK에게 감사드립니다. (CVE-2025-8714)
주석에 포함된 이름의 줄 바꿈을 공백으로 변환pg_dump출력(노아 미쉬)§
개행 문자를 포함하는 개체 이름은 임의의 SQL 명령을 출력 스크립트에 삽입하는 기능을 제공했습니다. (이전 수정 없이 삽입psqlmeta-commands도 이 방법으로 가능합니다.) CVE-2012-0868은 당시 이 종류의 문제를 해결했지만 이후 작업에서 여러 사례가 다시 등장했습니다.
그PostgreSQL프로젝트는 이 문제를 보고한 Noah Misch에게 감사드립니다. (CVE-2025-8715)
BRIN의 잘못된 거리 계산 수정numeric_minmax_multi_ops지원 기능(Peter Eisentraut, Tom Lane)§
결과가 64비트 플랫폼에서는 가끔 틀렸으며, 32비트 플랫폼에서는 크게 틀렸습니다. 논리는 값을 범위로 병합하는 방법을 선택하는 데만 사용되므로 이는 명백한 실패를 생성하지 않았습니다. 최악의 경우 인덱스는 비효율적이고 비대해집니다. 그럼에도 불구하고, 다음을 사용하는 BRIN 인덱스를 다시 인덱싱하는 것이 좋습니다.numeric_minmax_multi_ops연산자 클래스.
우리가 수용할 XML 입력 크기의 회귀 방지 (Michael Paquier, Erik Wienhold)§ §
초기 2.13.x 릴리스의 버그에 대한 해결 방법libxml2이전 코딩에서는 그렇지 않은 반면, 10MB를 초과하는 텍스트 청크를 거부하는 코드 경로를 사용했습니다. 이러한 초기 릴리스는 현재 야생에서 멸종된 것으로 추정되므로 이전 코딩으로 되돌립니다.
수정병합일반 상속 상위 테이블로 (Dean Rasheed)§
이러한 대상 테이블에 삽입하면 처리 실패로 인해 충돌이 발생하거나 잘못된 쿼리 결과가 생성될 수 있습니다.체크 옵션 있음그리고돌아오는 중행동.
문 수준 트리거가 있는 테이블이 파티션 또는 상속 하위 항목이 되도록 허용(Etsuro Fujita)§
우리는 파티션 또는 상속 하위 테이블이 전환 테이블이 있는 행 수준 트리거를 갖는 것을 허용사설 토토 사이트 않습니다. 왜냐하면 전체 상속 트리에 대한 작업은 각 하위 테이블에 대해 별도의 전환 테이블을 유지해야 하기 때문입니다. 그러나 해당 문제는 명령문 수준 트리거에는 적용되지 않습니다. 상위 명령문 수준 트리거만 실행되기 때문입니다. 그럼에도 불구하고 기존 테이블이 파티션 또는 상속 하위 항목이 될 수 있는지 확인하는 코드는 두 종류의 트리거를 모두 거부했습니다.
하위 외부 테이블에서 전환 튜플 수집을 허용사설 토토 사이트 않음(Etsuro Fujita)§
우리는 외부 테이블의 전환 테이블이 있는 트리거를 지원하지 않습니다. 그러나 외부 테이블인 파티션 또는 상속 하위의 경우는 간과되었습니다. 부모에게 그러한 트리거가 있으면 외부 자식으로부터 잘못된 전환 튜플이 수집되었습니다. 대신 해당 사례가 지원되지 않는다고 보고하는 오류가 발생합니다.
알 수 없는 맞춤 매개변수를 예약된 접두어로 재설정 허용(Nathan Bossart)§
이전에 매개변수 설정이 다음을 사용하여 저장되었다면데이터베이스/역할/시스템 변경, 매개변수를 알 수 없지만 예약된 접두사가 있는 경우 저장된 설정을 제거할 수 없습니다. 이 경우는 확장 프로그램에 매개변수가 있었지만 해당 매개변수가 업그레이드에서 제거된 경우에 발생할 수 있습니다.
다음 중 잠재적인 교착 상태를 수정하세요.구독 변경 ... 출판물 삭제(아진체리안)§
복제 원본이 삭제되는 동안 서버 프로세스가 일관된 순서로 카탈로그 잠금을 획득하는지 확인하세요.
충돌하는 이름을 가진 색인 생성을 위한 경쟁 조건 창 단축 (Tom Lane)§
색인에 대해 자동 생성된 이름을 선택할 때 아직 커밋되지 않은 이름과 충돌을 피하십시오.pg_class행과 완전히 유효한 행. 이렇게 하면 일부 동시 이름과 동일한 이름을 선택하는 것을 방지할 수 있습니다.색인 생성해당 명령이 아직 색인을 채우는 중이거나 완료되었지만 아직 커밋되지 않은 트랜잭션의 일부인 경우입니다. 여전히 문제가 발생할 수 있는 여지가 있지만 새 인덱스의 매개변수를 검증하고 삽입하는 데 필요한 시간만큼만 소요됩니다.pg_class행.
잘못된 사용 방지진공단일 명령으로 여러 테이블을 Vacuum하는 경우의 옵션(Nathan Bossart, Michael Paquier)§
그잘라내기그리고INDEX_CLEANUP한 테이블의 옵션이 다른 테이블에 적용될 수 있습니다.
내 문자 클래스 처리 수정유사함정규식(Laurenz Albe)§ §
번역하는 코드유사함표현식을 POSIX 스타일 정규식과 일치시키는 패턴은 대괄호가 중첩될 수 있다는 것을 고려하지 않았습니다. 예를 들어, 다음과 같은 패턴으로[[:alpha:]%_], 코드는 다음을 처리했습니다.%그리고_문자는 리터럴이어야 사설 토토 사이트만 메타 문자로 사용됩니다.
쿼리를 분석할 때 항상 표현식 주위에 괄호를 추가하십시오.먼저 가져오기절(Heikki Linnakangas)§ §표현동률이 있는 행
이것은 분해된 결과가 구문적으로 유효하지 않은 일부 경우를 방지합니다.
체크포인터 프로세스의 fsync 요청 대기열 크기 제한 (Alexander Korotkov, Xuneng Zhou)§ §
매우 크며shared_buffers설정에 따라 검사 포인터가 fsync 요청에 1GB 이상을 할당하려고 시도하여 실패 및 무한 루프가 발생할 수 있었습니다. 이 시나리오를 방지하려면 대기열 크기를 제한하세요.
부분적으로 작성된 WAL 레코드를 읽을 때 논리적 디코딩에서 무한 대기 방지(Vignesh C)§
여러 페이지에 걸쳐 있는 WAL 레코드의 첫 번째 부분을 작성한 후 서버가 충돌하는 경우 WAL 스트림의 후속 논리적 디코딩은 데이터가 다음 WAL 페이지에 도착할 때까지 기다립니다. 서버가 현재 유휴 상태라면 그런 일은 결코 일어나지 않을 수도 있습니다.
ACL 문자열에서 역할 이름의 일관되지 않은 인용 수정(Tom Lane)§
이전 인용 규칙은 로케일을 구분하므로 전송할 때 이식성 문제가 발생할 수 있습니다.아클리템설치 전반의 값. (pg_dump그렇지 않지만 다른 도구에서는 그럴 수도 있습니다.) 일관성을 보장하려면 항상 ASCII가 아닌 문자를 인용하십시오.acclitem출력; 그러나 이전 버전과의 호환성을 유지하려면 도중에 인용할 것을 요구하지 마십시오.acclitem입력합니다.
등호 거부(=) 관계 옵션 및 외부 데이터 옵션 이름(Tom Lane)§
이와 같은 옵션 이름에 대한 명확한 사용 사례는 없으며 이를 허용하면 저장된 표현에 모호함이 발생합니다.
LZ4 압축 아카이브 데이터의 잠재적으로 잘못된 압축 해제 문제 수정(Mikhail Gribkov)§
이 오류는 압축률이 매우 낮은 입력 데이터에만 나타나는 것으로 보이며, 이는 감지를 피한 이유를 설명할 수 있습니다.
btree 인덱스 스캔이 잘못된 인덱스 항목을 죽은 것으로 표시할 수 있는 드문 시나리오를 피하십시오(Peter Geoghegan)§
논리적 복제 중 다른 트랜잭션의 캐시 무효화 메시지 재배포 방지(vignesh C)§
이전 마이너 릴리스에는 복제 수신자 프로세스가 프로세스 간 캐시 무효화 메시지에 응답하여 복제 업데이트를 수행하는 동안 오래된 카탈로그 데이터를 사용하는 것을 방지하는 버그 수정이 포함되었습니다. 그러나 수정으로 인해 의도치 않게 해당 메시지를 다시 재배포하게 되었고, 이로 인해 무효화 메시지 수가 기하급수적으로 증가하여 메모리 할당 실패로 끝나는 경우가 많았습니다. 수신된 메시지를 재배포하지 않음으로써 문제를 해결하세요.
체크포인트 중 이전 WAL의 조기 제거 방지(Vitaly Davydov)§
체크포인트가 진행 중인 동안 복제 슬롯의 다시 시작 지점이 진행되면 더 이상 필요사설 토토 사이트 않은 WAL 세그먼트가 너무 빨리 제거될 수 있으며, 이후 데이터베이스가 즉시 충돌하면 복구 실패로 이어질 수 있습니다. 추가 체크포인트 주기 1회 동안 유지하여 문제를 해결하세요.
복제 슬롯의 확인된 플러시 위치를 뒤로 이동사설 토토 사이트 마십시오(Shveta Malik)§
어떤 경우에는 복제 클라이언트가 지속적으로 저장된 것보다 오래된 LSN을 확인한 다음 다시 시작한 후에 이전 LSN을 보낼 수도 있습니다. 클라이언트가 두 지점 사이의 WAL에 대해 수행해야 할 작업이 없는 한 이는 버그가 아닌 것으로 간주합니다. 그러나 데이터 중복이 두려워 해당 WAL을 다시 보내서는 안 되므로 항상 특정 슬롯에 대해 확인된 최신 LSN을 믿어야 합니다.
새로운 논리적 복제 작업자를 시작하기 전 과도한 지연 방지(Tom Lane)§
어떤 경우에는 논리적 복제 실행 프로그램이 구성된 것보다 상당히 오랫동안 잠자기 상태가 될 수 있습니다.wal_retrieve_retry_interval새 작업자를 시작하기 전.
논리적 복제 중 use-after-free 수정충돌 시 삽입...(에단 메르츠, 마이클 파퀴어)§
이로 인해 잘못된 진행 상황 보고가 발생하거나 운이 좋지 않으면 WAL 발신자 프로세스가 중단될 수 있습니다.
대기 서버의 트랜잭션이 중단될 때까지 기다리는 것을 허용합니다(Kevin K Biju)§
대기 서버에 복제 슬롯을 생성하려면 일부 활성 트랜잭션이 기본 서버에서 완료되고 대기 서버에서 재생될 때까지 기다려야 할 수 있습니다. 무기한 대기가 될 수 있으므로 작업이 취소되도록 허용하는 것이 바람직사설 토토 사이트만 루프에서 쿼리 취소를 확인사설 토토 사이트 않았습니다.
연속적인 논리적 WAL 발신자가 대기 서버에서 재생된 것 이상의 데이터를 보내려고 시도사설 토토 사이트 못하게 하십시오(Alexey Makhmutov)§
이는 WAL 발신자가 대기 서버 종료 시 정체되어 서버의 시작 프로세스가 이미 종료되었기 때문에 발생하지 않는 재생 작업을 기다리는 상황을 방지합니다.
autovacuum에서 관계별 메모리 누수 수정(Tom Lane)§
스냅샷 없이 시스템 카탈로그의 구운 필드를 가져오려고 시도할 수 있는 일부 장소를 수정했습니다(Nathan Bossart)§
이로 인해 어설션이 실패할 수 있습니다.“활성 스냅샷이 없으면 토스트 데이터를 가져올 수 없습니다.”오류.
명령 태그가 다음 말까지 결정되어야 한다는 잘못된 주장을 제거PortalRunMulti()(알바로 에레라)§
이것은 빈 준비된 명령문과 같은 극단적인 경우에 실패했습니다.
어설션 실패 수정XMLTABLE파싱 중(리처드 구오)§
PL/pgSQL 표현식을 병렬로 실행하는 기능 복원(Dipesh Dhameliya)§
PL/pgSQL의 an 개념“표현”매우 광범위하며 모든 SQL을 포함합니다.선택단일 열과 최대 1개의 행을 반환하는 쿼리입니다. 따라서 쿼리에 상당한 작업이 포함되고 병렬 작업자를 사용하여 실행하는 것이 유용한 집계 함수 평가와 같은 경우가 있습니다. 이전에는 가능했지만 이전 버그 수정으로 인해 의도치 않게 비활성화되었습니다.
PL/Python 오류 보고에서 극단적인 경우 리소스 누출 수정(Tom Lane)§ §
Python에서 오류를 보고하는 동안 메모리 부족 오류로 인해 Python 개체의 참조 카운트가 삭제되지 않아 세션 수명 메모리 누수가 발생할 수 있습니다.
수정libpq'sPQ포트()전달된 연결이 NULL이 아닌 한 NULL을 반환사설 토토 사이트 않는 함수(Daniele Varrazzo)§
이것은 문서화된 동작이지만 최근libpq26865_27115"5432", 대신.)
GSSAPI 인증에 16kB보다 큰 패킷이 필요한 경우 실패 방지(Jacob Champion, Tom Lane)§
많은 AD 그룹에 속한 Active Directory 사용자에게는 더 큰 인증 패킷이 필요합니다. 이러한 제한은 일반적으로 이해할 수 없는 오류 메시지와 함께 연결 실패로 나타납니다.“GSSAPI 컨텍스트 설정 오류: 기능을 완료하려면 루틴을 다시 호출해야 합니다: 알 수 없는 오류”.
SSL 및 GSSAPI 데이터 전송에서 타이밍에 따른 오류 수정(Tom Lane)§
비차단 모드에서 SSL 또는 GSSAPI 암호화를 사용할 때,libpq때때로 실패함“SSL 오류: 잘못된 길이”또는“GSSAPI 호출자가 재시도가 필요한 모든 데이터를 재전송사설 토토 사이트 못했습니다.”.
연결 조회 중 널 포인터 역참조 방지ecpg응용 프로그램(Aleksander Alekseev)§
이 경우는 애플리케이션에 이름이 지정된 연결과 그렇지 않은 연결이 있는 경우에만 발생할 수 있습니다.
개선psql에 대한 탭 완성복사그리고\복사옵션(토리코시 아츠시)§
두 가지 모두에 대해 동일한 완료가 제공되었습니다.다음에서 복사그리고복사 대상, 그러나 일부 옵션은 한 가지 경우에만 유효합니다. 더 정확한 제안을 제공하려면 이러한 사례를 구별하세요.
어설션 실패 방지pgbench여러 파이프라인 동기화 메시지를 수신한 경우(Fujii Masao)§
다음을 확인하세요pg_dump도메인 제약 조건에 대한 주석을 유효한 순서로 덤프합니다(Jian He)§
어떤 경우에는 제약 조건이 생성되기 전에 주석 명령이 나타날 수 있습니다.
안정적인 정렬 순서 보장pg_dump모든 유형의 데이터베이스 개체용(Noah Misch, Andreas Karlsson)§ § §
pg_dump종속성 기반 재정렬을 수행하기 전에 논리적 이름을 기준으로 개체를 정렬합니다. 이 정렬은 규칙 및 제약 조건과 같은 특정 객체 유형을 식별하는 전체 고유 키를 고려사설 토토 사이트 않으므로 논리적으로 동일한 데이터베이스에 대해 서로 다른 정렬 순서를 생성할 수 있습니다. 이로 인해 diff'ing을 통해 데이터베이스를 비교하기가 어려워졌습니다.pg_dump출력되므로 모든 경우에 안정적인 정렬 순서를 보장하도록 논리를 개선하세요.
에pg_upgrade, 일관되지 않은 상속된 null이 아닌 제약 조건 확인(Ali Akbar)§ § § §
포스트그레SQL18 이전 버전에서는 상속된 열이 아닌 null 제약 조건을 삭제할 수 있습니다. 그러나 이로 인해 복원할 수 없는 스키마가 발생하여 오류가 발생합니다.pg_upgrade. 그러한 경우를 감지pg_upgrade의 실행 전 검사를 통해 사용자는 업그레이드를 시작하기 전에 문제를 해결할 수 있습니다.
다음의 경우 어설션 실패를 방지하세요track_commit_timestamp다음 동안 활성화됩니다.initdb(구로다 하야토, 앤디 팬)§
수정pg_waldump삭제된 통계에 대한 정보를 표시합니다거래 준비WAL 레코드(Daniil Davydov)§
동안 열린 연결의 누출 가능성을 피하십시오.기여/dblink연결 설정(톰 레인)§
dblink의 해시테이블에 새 연결 개체를 삽입하는 동안 메모리 부족이 발생하는 드문 시나리오에서 열린 연결은 세션이 끝날 때까지 누출되어 유휴 세션이 원격 서버에 남아있게 됩니다.
만들다contrib/pg_prewarm매우 큰 상황에 대처shared_buffers설정(다리아 샤니나)§
다음의 경우 메모리 할당 오류로 인해 Autoprewarm이 실패함shared_buffers버퍼 약 5천만 개(400GB)보다 컸습니다.
에contrib/pg_stat_statements, 정규화된 쿼리에 사용되는 매개변수 번호 집합에 공백을 두지 마십시오(Sami Imseih)§
메모리 누수 수정contrib/postgres_fdw의 DirectModify 메소드(Tom Lane)§
그PGresultDirectModify 메소드 호출 사이에 쿼리가 실패하면 원격 수정 명령의 결과가 나머지 세션 동안 누출될 수 있습니다. 이러한 현상은 다음과 같은 경우에 발생할 수 있습니다.돌아오는 중처리할 데이터입니다.
디렉토리가 다음에 나열되어 있는지 확인하세요.구성의--포함그리고--with-라이브러리옵션은 시스템 제공 디렉토리 이전에 검색됩니다(Tom Lane)§
이러한 옵션을 사용하는 일반적인 이유는 일부 라이브러리의 사용자 구축 버전이 시스템 제공 버전을 재정의하도록 허용하기 위한 것입니다. 그러나 makefile에서 실행한 명령에서 스위치 순서를 부주의하게 지정하여 일부 환경에서는 작동사설 토토 사이트 못했습니다.
수정구성의 확인 내용:__cpuid()그리고__cpuidex()(루카스 피틀, 마이클 파퀴에)§
구성이 Windows 관련 기능을 감지사설 토토 사이트 못하여 사용되지 않았으며 하드웨어 명령의 가용성을 확인할 수 없었기 때문에 필요한 CRC 계산 속도보다 느려졌습니다. Windows용 프로덕션 빌드는 일반적으로 Autoconf 도구 체인을 사용사설 토토 사이트 않기 때문에 이 오류의 실질적인 영향은 제한적이었습니다.
빌드 실패 수정--with-pamSolaris 기반 플랫폼의 옵션(Tom Lane)§
Solaris는 PAM 인증용 API에 관해 다른 Unix 플랫폼과 일치하지 않습니다. 이것은 다음과 같이 나타납니다.“일관되지 않은 포인터”컴파일러 경고, 우리는 이에 대해 아무 조치도 취하지 않았습니다. 하지만 GCC 14부터는 기본적으로 경고가 아닌 오류이므로 수정하세요.
우리 코드를 GNU Hurd로 이식 가능하게 만드세요(Michael Banck, Christoph Berg, Samuel Thibault)§ §
다음에 대한 가정 수정IOV_MAX그리고O_RDONLY허드를 붙잡지 않습니다.
다음을 활용하세요memset_s()C11 표준을 엄격하게 준수합니다(Tom Lane)§ §
이것은 일부 플랫폼에서의 컴파일 실패를 방지합니다.
Meson을 사용하여 MSVC로 빌드할 때 호환성 경고 음소거(Peter Eisentraut)§
JSONB 비교 코드에서 초기화되지 않은 값 컴파일러 경고 방지(Tom Lane)§
다음으로 빌드할 때 지원 중단 경고를 피하세요.libxml22.14 이상(Michael Paquier)§
컴파일 시 문제 방지pg_locale.hC++에서(존 네일러)§
PostgreSQL헤더 파일은 일반적으로 래핑되어야 합니다.extern "C" ...C++로 작성된 확장에 포함되기 위해. 실패했습니다.pg_locale.h다음을 사용하기 때문에리비쿠헤더에 있지만 해당 헤더에서 C++ 전용 선언을 억제하여 이 문제를 해결할 수 있습니다. 사용하고 싶은 C++ 확장자리비쿠의 C++ API는 다음을 포함하여 이를 수행할 수 있습니다.리비쿠앞의 헤더pg_locale.h.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.