젠 토토 노트

젠 토토 14.19

E.1. 젠 토토 14.19

출시 날짜 :2025-08-14

이 젠 토토에는 14.18의 다양한 수정 사항이 포함되어 있습니다. Major Release 14의 새로운 기능에 대한 정보는 참조섹션 E.20.

E.1.1. 버전 14.19로의 마이그레이션

14.x.를 실행하는 사람들에게는 덤프/복원이 필요하지 않습니다.

그러나 브린이 있다면numeric_minmax_multi_ops인덱스, 업데이트 후 리인덱스가 권장됩니다. 아래 네 번째 ChangeLog 항목을 참조하십시오.

또한 14.18 이전 버전에서 업그레이드하는 경우 참조섹션 E.2.

E.1.2. 변화

  • 플래너 추정 기능 (Dean Rasheed)젠 토토 보안 검사를 강화합니다.§

    CVE-2017-7484에 대한 수정 및 후속 수정은 호출 기능이 호출 사용자가 읽을 권한이없는 열에 대한 통계 데이터에 적용되는 것을 방지하기위한 후속 수정을 고안했습니다. 그 보호젠 토토 두 가지 간격이 발견되었습니다. 테이블의 RLS 정책이 통계 데이터에 대한 액세스를 제한해야하지만 그렇지 않은 분할 및 상속 계층에 한 가지 간격이 적용됩니다.

    다른 간격은 쿼리가보기를 통해 테이블에 액세스하는 경우에 적용되며, 뷰 소유자는 기본 테이블을 읽을 권한이 있지만 호출 사용자는보기에 권한이 없습니다. 뷰 소유자의 권한은 보안 검사를 충족 시켰으며, 유출 기능은 뷰에서 통화 사용자의 권한을 확인하기 전에 기본 테이블의 통계에 적용됩니다. 이는 계획이 시작될 때보기에 대한 보안 검사를 통해 해결되었습니다. 이로 인해 권한 실패가 이전보다 일찍 발생하게 될 수 있습니다.

    the젠 토토Project Thanks Thanks Dean Rasheed이 문제를보고했습니다. (CVE-2025-8713)

  • 예방pg_dump스크립트는 복원을 실행하는 사용자를 공격하는 데 사용되는 스크립트 (Nathan Bossart)§ §

    덤프/복원 작업에는 일반적으로 SQL 명령을 SuperUser로 실행하는 것이 필요하므로 대상 데이터베이스 설치는 소스 서버를 신뢰해야합니다. 그러나 실행하는 운영 체제 사용자는를 따르지 않습니다.PSQL복원을 수행하려면 소스 서버를 신뢰해야합니다. 여기서 위험은 소스 서버에 대한 슈퍼업자 수준의 제어를 얻은 공격자가이를 텍스트로 해석 할 수 있다는 것입니다.PSQL메타 명령. 이는 대상 데이터베이스에 대한 액세스와 독립적으로 사용자 자체 계정에 대한 쉘 레벨 액세스를 제공합니다.

    이것이 일어날 수 없다는 긍정적 인 보증을 제공하려면 확장PSQLwith\ 제한추가 메타 사령관의 실행을 방지하는 명령, 그리고pg_dump소스 서버젠 토토 나오는 데이터 전에이를 발행합니다.

    젠 토토 프로젝트는 Martin Rakhmanov, Matthieu Denais 및 Ryotak 에게이 문제를보고했습니다. (CVE-2025-8714)

  • 댓글에 포함 된 이름의 공백으로 Newlines를 변환pg_dump출력 (Noah Misch)§

    NewLines를 포함하는 객체 이름은 임의의 SQL 명령을 출력 스크립트에 주입하는 기능을 제공했습니다. (이전의 수정이 없으면PSQLMeta-Commands도 이런 식으로 가능할 것입니다.) CVE-2012-0868 당시이 클래스의 문제를 해결했지만 나중에 몇 가지 사례를 다시 소개했습니다..

    the젠 토토프로젝트이 문제를보고 해 주신 Noah Misch에게 감사드립니다. (CVE-2025-8715)

  • 브린젠 토토 잘못된 거리 계산 수정numeric_minmax_multi_ops지원 기능 (Peter Eisentraut, Tom Lane)§

    결과는 때때로 64 비트 플랫폼젠 토토 잘못되었으며 32 비트 플랫폼젠 토토는 잘못 잘못되었습니다. 논리가 값을 범위로 병합하는 방법 만 선택하는 데 사용되기 때문에 이것은 명백한 실패를 일으키지 않았습니다. 최악의 경우 색인이 비효율적이고 부풀어 오릅니다. 그럼에도 불구하고를 사용하는 브린 인덱스를 다시 알리는 것이 좋습니다numeric_minmax_multi_ops운영자 클래스.

  • 우리가 받아들이는 XML 입력 크기의 회귀를 피하십시오 (Michael Paquier, Erik Wienhold)§ §

    2.13.x 초기 버그에 대한 해결 방법libxml2이전 코딩은 10MB를 초과하는 텍스트 청크를 거부하는 코드 경로를 사용했습니다. 초기 릴리스는 아마도 지금까지 야생에서 멸종 될 것입니다. 따라서 이전 코딩으로 되돌아갑니다.

  • 명령문 수준 트리거가있는 테이블이 파티션 또는 상속 자녀가되도록 허용합니다 (Etsuro Fujita)§

    전체 상속 트리젠 토토의 작업은 해당 어린이 테이블에 대해 별도의 전환 테이블을 유지해야하기 때문에 분할 또는 상속 하위 테이블에 전환 테이블이있는로드 레벨 트리거를 갖도록 허용하지 않습니다. 그러나 부모의 진술 수준 트리거 만 해고되기 때문에이 문제는 명세서 수준 트리거에는 적용되지 않습니다. 기존 테이블이 파티션이 될 수 있는지 여부를 확인하는 코드는 그럼에도 불구하고 두 종류의 트리거를 거부했습니다.

  • 아동 외국 테이블 (Etsuro Fujita)젠 토토 전환 튜플 수집 허용§

    우리는 외국 테이블에 전환 테이블이있는 트리거를 지원하지 않습니다. 그러나 외국 테이블 인 파티션 또는 상속 자식의 경우가 간과되었습니다. 부모가 그러한 방아쇠가있는 경우, 외국 어린이로부터 잘못된 전환 튜플이 수집되었습니다. 대신 오류를 던져 사건이 지원되지 않았다고보고합니다.

  • 동안 잠재적 교착 상태 수정구독 변경 ... 출판 삭제(Ajin Cherian)§

    서버 프로세스가 복제 원점이 떨어지는 동안 일관된 순서로 카탈로그 잠금을 획득하는지 확인합니다.

  • 상충되는 이름으로 인덱스 생성을위한 레이스 조건 창을 단축 (Tom Lane)§

    인덱스에 대한 자동 생성 이름을 선택할 때, 절충하지 않은 것과의 충돌을 피하십시오pg_class완전히 검증 된 행뿐만 아니라 행. 이것은 동시와 같은 이름을 선택하지 않을 수 있습니다색인 생성해당 명령이 여전히 지수를 채우는 과정에 있거나 수행되지 않은 거래의 일부일 때 수행했습니다. 여전히 문제의 창이 있지만 새로운 인덱스의 매개 변수를 검증하고 삽입하는 데 필요한 시간이 걸립니다pg_class행.

  • 잘못된 사용 방지진공옵션 일부 경우 단일 명령 (Nathan Bossart, Michael Paquier)젠 토토 여러 테이블이 청소되는 경우§

    theTruncateandindex_cleanup한 테이블의 옵션을 다른 테이블에 적용 할 수 있습니다.

  • 내 문자 클래스의 처리 수정유사정규식 (Laurenz Albe)§ §

    번역하는 코드유사POSIX 스타일 정규 표현에 대한 패턴 매칭 표현은 정사각형 괄호를 중첩 할 수 있다고 생각하지 않았습니다. 예를 들어,와 같은 패턴젠 토토[[: Alpha :]%_], 코드가 처리 된%and_문자가되어야 할 때 Metacharacters로 문자.

  • 쿼리 디퍼링 할 때 항상 표현식 주위에 괄호를 추가하십시오Fetch First표현타이가있는 행Clauses (Heikki Linnakangas)§

    이것은 Deparsed 결과가 구문 적으로 유효하지 않은 경우를 피합니다.

  • 체크 포인터 프로세스의 FSYNC 요청 대기열 크기 제한 (Alexander Korotkov, Xuneng Zhou)§ §

    매우 큰shared_buffers설정, CheckPointer가 FSYNC 요청에 대해 1GB 이상을 할당하려고 시도하여 고장 및 무한 루프로 이어질 수있었습니다. 이 시나리오를 방지하기 위해 큐 크기를 고정하십시오.

  • 부분적으로 작성된 WAL 레코드를 읽을 때 논리적 디코딩의 무한 대기를 피하십시오 (vignesh c)§

    여러 페이지에 걸쳐있는 WAL 레코드의 첫 번째 부분을 작성한 후 서버가 충돌하면 WAL 스트림의 후속 논리적 디코딩이 다음 WAL 페이지에 데이터가 도착할 때까지 기다립니다. 서버가 이제 유휴 상태라면 결코 일어나지 않을 수도 있습니다.

  • ACL 문자열젠 토토 역할 이름의 일관되지 않은 인용 수정 (Tom Lane)§

    이전 인용 규칙은 로케일에 민감했으며, 이는 전송시 이식성 문제로 이어질 수 있습니다aclitem설치 전체의 값. (pg_dump그렇게하지는 않지만 다른 도구는 할 수 있습니다.) 일관성을 보장하려면 항상 비 ASCII 문자를 인용하기 위해aclitem출력; 그러나 후진 호환성을 보존하기 위해서는 절대 인용 할 필요가 없습니다aclitem입력.

  • 동등한 징후를 거부합니다 (=) 관계 옵션 및 외국 데이터 옵션의 이름 (Tom Lane)§

    이와 같은 옵션 이름에 대한 명백한 사용 사례는 없으며 저장된 표현에서 모호성을 생성 할 수 있습니다..

  • BTREE 인덱스 스캔이 잘못된 인덱스 항목을 죽은 것으로 표시 할 수있는 드문 시나리오를 피하십시오 (Peter Geoghegan)§

  • 논리적 복제 중에 다른 트랜잭션의 캐시 무효화 메시지를 다시 분산하지 않도록하십시오 (vignesh c)§

    이전의 사소한 릴리스에는 복제 수신기 프로세스가 크로스 프로세스 캐시 무효화 메시지에 응답 할 수 있도록 버그 수정이 포함되어있어 복제 업데이트를 수행하는 동안 오래된 카탈로그 데이터를 사용하지 못하게합니다. 그러나 수정은 의도하지 않게 해당 메시지를 다시 재분배하여 무효화 메시지 수를 기하 급수적으로 증가 시켰으며, 이는 종종 메모리 할당 실패로 끝납니다. 수신 된 메시지를 재분배하지 않음으로써 수정하십시오.

  • 체크 포인트 중에 오래된 WAL의 조기 제거를 피하십시오 (Vitaly Davydov)§

    Replication 슬롯의 재시작 지점이 진행되는 동안 검사 점이 진행 중이면 진행되는 경우, 정지되지 않은 WAL 세그먼트가 너무 빨리 제거되어 데이터베이스가 즉시 충돌하면 복구 실패가 발생할 수 있습니다. 하나의 추가 체크 포인트주기를 유지하여 수정하십시오.

  • 복제 슬롯의 확인 된 플러시 위치를 뒤로 이동하지 마십시오 (Shveta Malik)§

    경우에 따라 복제 클라이언트는 LSN이 지속적으로 저장된 내용을 과거에 인정 한 다음 다시 시작한 후 이전 LSN을 보낼 수 있습니다. 우리는 클라이언트가 두 지점 사이에 WAL에 필요한 일이 없다면이 버그가 아닌 것을 고려합니다. 그러나 우리는 데이터 복제에 대한 두려움으로 WAL을 다시 제출해서는 안됩니다. 따라서 우리는 항상 주어진 슬롯에 대해 최신 확인 된 LSN을 믿습니다.

  • 대기 서버젠 토토의 트랜잭션이 중단 될 때까지 (Kevin K Biju)§

    대기 서버젠 토토 복제 슬롯 생성은 일부 활성 트랜잭션이 기본젠 토토 완료되고 대기젠 토토 재생되기를 기다려야 할 수도 있습니다. 그것은 무기한 대기 일 수 있으므로 작업을 취소하는 것이 바람직하지만 루프젠 토토 쿼리 취소를 확인하지 않았습니다.

  • 스냅 샷 (Nathan Bossart)없이 구운 시스템 카탈로그 필드를 가져 오려고 할 수있는 장소를 수정하십시오.§

    이것은 주장 실패 또는를 초래할 수 있습니다.활성 스냅 샷없이 토스트 데이터를 가져올 수 없습니다오류.

  • 교차 테이블 제약 업데이트 중 어설 션 실패를 피하십시오 (Tom Lane, Jian HE)§ §

  • 명령 태그가 끝날 때 결정되었다는 잘못된 주장 제거PortalRunmulti ()(Álvaro Herrera)§

    이것은 빈 준비된 진술과 같은 가장자리 사례젠 토토 실패했습니다.

  • PL/PGSQL 표현식을 병렬로 실행하는 기능을 복원합니다 (Dipesh Dhameliya)§

    pl/pgsql의 개념에 대한표현매우 광범위하며 SQL을 포함합니다select단일 열을 반환하는 쿼리와 하나 이상의 행을 반환합니다. 따라서 쿼리에는 상당한 작업이 포함되며 병렬 작업자와 함께 실행하는 것이 유용한 경우 집계 기능의 평가와 같은 경우가 있습니다. 이것은 가능했지만 이전 버그 수정은 의도하지 않게 비활성화되었습니다.

  • PL/Python 오류보고 (Tom Lane)젠 토토 가장자리 사례 자원 누출 수정§ §

    Python의 오류를보고하는 동안 메모리 외 실패로 인해 Python 객체에 대한 기준 수치를 떨어 뜨리지 않아 세션 리포드 메모리 누출로 이어질 수 있습니다.

  • 수정libpq'spqport ()전달 된 연결이 NULL이 아닌 한 NULL을 반환하지 않는 기능 (Daniele Varrazzo)§

    이것은 문서화 된 행동이지만 최근libpq버전은 사용자가 포트 사양을 제공하지 않은 경우 NULL을 반환합니다. 그러한 경우 빈 줄을 반환하는 역사적 행동으로 되돌아갑니다. (V18 이상은 컴파일 된 기본 포트 번호를 반환합니다. 일반적으로"5432"대신.)

  • GSSAPI 인증이 16KB보다 큰 패킷 (Jacob Champion, Tom Lane)이 필요할 때 고장을 피하십시오.§

    많은 광고 그룹에 속한 Active Directory 사용자에게는 더 큰 인증 패킷이 필요합니다. 이 제한은 이해할 수없는 오류 메시지와 관련된 실패젠 토토 나타났습니다. 일반적으로GSSAPI 컨텍스트 설정 오류 : 기능을 완료하려면 루틴을 다시 호출해야합니다..

  • SSL 및 GSSAPI 데이터 전송 (Tom Lane)에서 타이밍 의존적 고장 수정§

    비 블로킹 모드젠 토토 SSL 또는 GSSAPI 암호화를 사용할 때libpq때때로 실패SSL 오류 : 잘못된 길이또는GSSAPI 발신자가 재조정 해야하는 모든 데이터를 재전송하지 못했습니다.

  • 연결 조회 중에 널 포인터 피해를 피하십시오ECPG응용 프로그램 (Aleksander Alekseev)§

    사례는 응용 프로그램에 이름이 지정된 일부 연결이 있고 일부는 그렇지 않은 경우에만 발생할 수 있습니다.

  • 개선PSQL의 탭 완료COPYand\ copy옵션 (Atsushi Torikoshi)§

    두 가지 모두에 대해 동일한 완료가 제공되었습니다COPYand복사, 일부 옵션은 하나의 경우 또는 다른 경우에만 유효합니다. 보다 정확한 제안을 제공하기 위해 이러한 사례를 구별하십시오.

  • pg_dump유효한 순서로 도메인 제약 조건에 대한 의견을 덤프합니다 (Jian HE)§

    경우에 따라 제약 조건을 생성하기 전에 주석 명령이 나타날 수 있습니다.

  • 안정적인 정렬 주문 확인pg_dump모든 유형의 데이터베이스 개체 (Noah Misch, Andreas Karlsson)§ § §

    pg_dump종속성 구동 재정렬을 수행하기 전에 논리 이름으로 객체를 정렬합니다. 이러한 종류는 규칙 및 제약과 같은 특정 객체 유형을 식별하는 전체 고유 한 키를 설명하지 않았으므로 논리적으로 동일한 데이터베이스에 대해 다른 정렬 주문을 생성 할 수 있습니다. 그로 인해 데이터베이스를 비교하기가 어려워졌습니다pg_dump출력이므로 모든 경우에 안정적인 정렬 순서를 보장하기 위해 논리를 개선하십시오.

  • inpg_upgrade, 일관되지 않은 상속되지 않은 구속 조건 (Ali Akbar)을 점검하십시오.§ § § § § §

    젠 토토18 이전의 버전은 상속 된 열을 사용하지 않은 구속 조건을 떨어 뜨릴 수 있습니다. 그러나 이로 인해 복원 할 수없는 스키마가 발생하여 실패로 이어집니다.pg_upgrade. 동안 그러한 사례를 감지하십시오.pg_upgrade'PREFLIGHT Checks는 업그레이드를 시작하기 전에 사용자가 수정할 수 있도록합니다.

  • 주장 실패를 피하십시오track_commit_timestamp동안 활성화initdb(Hayato Kuroda, Andy Fan)§

  • 열린 연결의 누출을 피하십시오Contrib/DBlink연결 설정 (Tom Lane)§

    새로운 연결 객체를 DBLINK의 해시 가능에 삽입하면서 메모리를 벗어난 드문 시나리오젠 토토는 세션이 끝날 때까지 열린 연결이 유출되어 원격 서버에 유휴 세션이 남습니다..

  • 만들기Contrib/PG_PREWARM매우 큰 대처shared_buffers설정 (Daria Shanina)§

    AutoPrewArm은 메모리 할당 오류로 실패했습니다.shared_buffers약 5 천만 버퍼 (400GB)보다 컸습니다.

  • inContrib/PG_STAT_Statements, 정규화 된 쿼리 (Sami Imseih)에 사용 된 매개 변수 세트에 간격이 남기지 마십시오.§

  • 메모리 누출 수정Contrib/Postgres_FDW의 Direct -Modify Methods (Tom Lane)§

    thepgresultDirectModify 메소드의 호출 사이에 쿼리가 실패하면 원격 수정 명령의 결과를 유지하면 나머지 세션에 대해 누출됩니다.반환처리 할 데이터.

  • 디렉토리에 나열된지 확인구성's-with-includes-with-libraries옵션은 시스템 지원 디렉토리 (Tom Lane) 전에 검색됩니다.§

    이러한 옵션을 사용하는 일반적인 이유는 일부 라이브러리의 사용자가 제작 한 버전이 시스템 제공 버전을 무시할 수 있도록하는 것입니다. 그러나 MakeFiles가 발행 한 명령젠 토토 부주의 한 스위치 순서로 인해 일부 환경젠 토토 작동하지 못했습니다.

  • 수정구성's checks for__cpuid ()and__cpuidex ()(Lukas Fittl, Michael Paquier)§

    구성이러한 Windows 특이 적 기능을 감지하지 못하여 사용되지 않도록하여 하드웨어 지침의 가용성을 확인할 수 없었기 때문에 작업보다 느린 CRC 계산으로 이어집니다. Windows의 생산 빌드는 일반적으로 AutoConf 툴체인을 사용하지 않기 때문에이 오류의 실제 영향은 제한적이었습니다.

  • 빌드 실패 수정-with-pamSolaris 기반 플랫폼의 옵션 (Tom Lane)§

    Solaris는 PAM 인증을위한 API에 대한 다른 UNIX 플랫폼과 일치하지 않습니다. 이것은로 나타납니다.일관되지 않은 포인터컴파일러 경고. 그러나 GCC 14젠 토토 기본적으로 경고하지 않는 오류입니다.

  • 우리의 코드를 GNU Hurd (Michael Banck, Christoph Berg, Samuel Thibault)에게 휴대용으로 만듭니다.§

    가정에 대한 가정 수정iov_maxO_RDONLY허드를 붙잡지 못하는 것.

  • 사용memset_s ()C11 표준 (Tom Lane)에 엄격하게 적합합니다.§

    이것은 일부 플랫폼젠 토토 컴파일 실패를 피합니다.

  • JSONB 비교 코드 (Tom Lane)의 초기화되지 않은 값 컴파일러 경고 방지§

  • 건축시 감가 상각 경고를 피하십시오libxml22.14 이상 (Michael Paquier)§

  • 컴파일시 문제를 피하십시오pg_locale.hC ++ 아래 (John Naylor)§

    젠 토토헤더 파일은 일반적으로 래핑해야합니다extern "c"...C ++로 작성된 확장에 포함되도록. 이것은 실패pg_locale.h사용으로 인해libicu헤더이지만 C ++를 억제하여 해당 헤더의 선언 만 억제하여이를 해결할 수 있습니다. 사용하려는 C ++ 확장libicu'S C ++ API는를 포함하여 할 수 있습니다libicu헤더 앞pg_locale.h.