젠 토토 노트

젠 토토

E.4. 젠 토토 13.17

출시 날짜 :2024-11-14

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

E.4.1. 버전 13.17로의 마이그레이션

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

그러나 다른 분할 된 테이블에 대한 외국 키 참조가있는 파티션 된 테이블에서 파티션을 분리 한 적이 있다면 이전 파티션을 삭제하지 않았다면 아래의 다섯 번째 ChangeLog 항목에 자세히 설명 된대로 카탈로그 및/또는 데이터 손상이 수리 할 수 ​​있습니다..

또한 13.14 이전 버전에서 업그레이드하는 경우 참조섹션 e.7.

E.4.2. 변화

  • RLS가 비 탑 레벨 테이블 참조 (Nathan Bossart)에 적용될 때 캐시 된 계획이 호출 역할에 따라 표시되는지 확인하십시오.§

    쿼리의 CTE, 하위 쿼리, Sublink, 보안 호출기보기 또는 강제 투영이 행 수준 보안 정책이있는 테이블을 참조하면 결과 계획을 어떤 역할을 수행하는지에 따라 결과 계획을 표시하는 것을 무시했습니다. 이로 인해 잘못된 계획을 사용하여 같은 세션에서 나중에 쿼리 실행이 발생한 다음 숨겨져 있거나 반품 해야하는 행을 반환하거나 숨기고 있습니다.

    the젠 토토이 문제를보고 한 프로젝트 감사 Wolfgang Walther. (CVE-2024-10976)

  • makelibpqSSL 또는 GSS 프로토콜 협상 중에 수신 된 오류 메시지 폐기 (Jacob Champion)§

    암호화 협상이 완료되기 전에 수신 된 오류 메시지는 실제 서버 출력이 아니라 중간에 사람에 의해 주입되었을 수 있습니다. 보고하면 다양한 보안 위험의 문이 열립니다.libpq의 연결 고장에 대한 자체 보고서.

    the젠 토토이 문제를보고 한 Jacob Champion 프로젝트. (CVE-2024-10977)

  • 의도하지 않은 상호 작용 수정세션 설정 설정and역할 설정(Tom Lane)§ §

    SQL 표준 의무는세션 설정 설정부작용역할 설정 없음. 우리의 구현은 결함이 있었으며 의도 한 것보다 두 설정 사이에 더 많은 상호 작용을 만듭니다.세션 설정 설정복귀 할 것입니다역할to없음그것이 이전 상태가 아니더라도 효과적인 사용자 ID가 거래 전과 다를 수 있습니다. 일시적으로 설정Session_Authorization함수에서set절도 비슷한 영향을 미쳤습니다. 관련 버그는 병렬 작업자가 검사 한 경우current_setting ( 'role'), SAV없음다른 것을보아야하는 경우에도.

    the젠 토토프로젝트이 문제를보고 한 Tom Lane에게 감사드립니다. (CVE-2024-10978)

  • 신뢰할 수있는 PL/PERL 코드 변경 환경 변수 변경 (Andrew Dunstan, Noah Misch)§ § § §

    프로세스 환경 변수를 조작하는 능력PATH임의의 코드를 실행할 수있는 공격자 기회를 제공합니다. 그러므로,신뢰할 수있는pls는 그렇게 할 수있는 능력을 제공해서는 안됩니다. 수정하려면plperl, 교체%env묶은 해시를 사용하여 경고로 수정 시도를 거부합니다. 신뢰할 수없는Plperlu환경 변화 능력을 유지합니다.

    the젠 토토프로젝트이 문제를보고 한 Coby Abrams에게 감사드립니다. (CVE-2024-10979)

  • 테이블 파티션 (Jehan-Guillaume de Rorthais, Tender Wang, Álvaro Herrera)§

    참조 테이블이 분할 된 경우, 독립형 테이블과 파티션 인 참조 테이블에는 다른 카탈로그 항목이 필요합니다.첨부/분리 파티션명령은이 변환을 올바르게 수행하지 못했습니다. 특히 이후Detach이제 독립형 테이블에는 외국 키 시행 트리거가 없어져 나중에 테이블에 외국 키 제약 조건에 실패하는 행이 포함될 수 있습니다. 후속 re첨부놀라운 오류로도 실패 할 수 있습니다.

    이것을 고치는 방법은해야 할 것입니다Alter Table Drop 제약 조건각 결함이있는 제약 조건에 대한 지금 독립형 테이블에서 제약 조건을 다시 설명하십시오. 제약 조건이 다시 실패하면 일부 잘못된 데이터가 발생했습니다. 참조와 참조 테이블 사이의 일관성을 수동으로 재건해야합니다. 그런 다음 제약 조건을 다시 구입해야합니다..

    이 쿼리는 깨진 제약 조건을 식별하고 재현하는 데 필요한 명령을 구성하는 데 사용될 수 있습니다.

    Conrelid :: pg_catalog.regclass를 "제한된 테이블"으로 선택하십시오.

    하나 이상이 가능하기 때문에제약 조건 추가단계가 실패하고 파일에 쿼리의 출력을 저장 한 다음 각 단계를 수행하려고 시도해야합니다.

  • anallowALTER 테이블 첨부 파티션첨부 할 테이블에 첨부 된 테이블을 참조하는 외국 키가있는 경우 (Álvaro Herrera)§ §

    이 배열은 지원되지 않았으며 이미 그것을 만들 수있는 다른 방법은 이미 실패합니다.

  • 키 열에 대한 쿼리의 콜로레이션이 파티션 키의 콜레이션 (Jian He, Webbo Han)과 일치하지 않으면 파티션 타이 또는 그룹화를 사용하지 마십시오.§ §

    그러한 계획은 잘못된 결과를 낳을 수 있습니다.

  • 가능한 수정정렬 할 PathKey 항목을 찾을 수 없습니다A의 출력시 오류Union All멤버 쿼리를 정렬해야하며 정렬 열은 표현식입니다 (Andrei Lepikhov, Tom Lane)§

  • 대형 해시 인덱스에 대한 인덱스 빌드의 두 번째 단계의 취소 허용 (Pavel Borisov)§

  • 어설 션 실패 또는 혼란스러운 오류 메시지copy (쿼리) to ..., 언제쿼리at대신 알림Rule (Tender Wang, Tom Lane)§

  • 병렬 해시 조인 (Thomas Munro) 동안 비뚤어진 데이터의 감지 수정§

    한 파티션이 너무 많은 튜플을 축적했기 때문에 해시 결합의 내부를 재개 한 후, 우리는 모든 파티션의 튜플이 동일한 하위 파티션에 들어간 것인지 확인하여 모두 동일한 해시 값을 가지고 있으며 추가 반복이 문제를 개선 할 수 없음을 확인합니다. 이 점검은 경우에 따라 오작동이 발생하여 반복적 인 헛된 반복을 허용하여 결국 리소스 exhaustion 오류로 끝납니다.

  • 직렬화 가능한 트랜잭션 (Heikki Linnakangas)을 커밋 할 때 레이스 조건 수정§

    최근에 헌신적 인 트랜잭션의 잘못 처리하면 어설 션 실패 또는 A가 발생할 수 있습니다.거래 상태에 액세스 할 수 없음오류.

  • Race 조건 수정준비그 결과 고아 2pc 파일 (Wuchengwen)이 생겼습니다.§

    동시거래 준비원인준비완성 된 트랜잭션에 대한 온 디스크 2 상 상태 파일을 제거하지 않으려면. 즉각적인 악영향은 없었지만 후속 충돌 및 복구는에 실패 할 수 있습니다.거래 상태에 액세스 할 수 없음, 서비스 복원을 위해 고아 파일의 수동 제거가 필요합니다.

  • 잘못된 메모리 액세스를 피하십시오.진공 Full(Tender Wang)§

    이 코드 경로에서는 아직 보장 할 수없는 목록 추적이 제대로 업데이트되지 않았으며 나중에 어설 션 실패 또는 충돌이 발생했습니다..

  • Whath an 수정장소카탈로그 업데이트가 손실 될 수 있습니다 (Noah Misch)§ § § § § § §

    일반 행 업데이트 트랜잭션의 롤백 가능성을 보존하기 위해 새로운 버전의 행을 작성하십시오. 그러나 특정 시스템 카탈로그 업데이트는 의도적으로 비 트랜잭션이며 행의 내 업데이트로 수행됩니다.PG_CLASS.RelhasindexTRUE TO TRUE, 새로운 지수의 업데이트를 방지하여 인덱스 손상을 일으킨다.

  • 회복 종료시 카탈로그 재설정 (Noah Misch)§

    이것은 카탈로그 캐시에서 오래된 데이터를 사용하여 내장 카탈로그 업데이트가 손실 될 수있는 시나리오를 방지합니다.

  • 인터럽트를 유지하는 동안 병렬 쿼리 사용을 피하십시오 (Francesco Degrassi, Noah Misch, Tom Lane)§ §

    이 상황은 정상적으로 발생할 수는 없지만 SQL 언어 기능을 B- 트리 지원 (생산 사용에는 너무 느리게)과 같은 테스트 시나리오로 도달 할 수 있습니다. 그것이 발생했다면 그것은 무기한 대기를 초래할 것입니다.

  • 스택 오버플로에 대한 가드libxml2너무 깊게 네트워크 XML 입력 (Tom Lane, Hat Tip to Nick Wellnhofer)§

    usexmlxpathctxtcompile ()보다는xmlxpathcompile (), 후자는 재귀 대 스택-오버 플로로부터 스스로를 보호하지 못하기 때문에libxml22.13.4 전에 젠 토토

  • 수정하위 쿼리에 대한 계획을 찾지 못했습니다오류설명(Richard Guo, Tom Lane)§ §

    이 사례는 하위 쿼리가 계획에서 완전히 최적화되었을 때 하위 퀘스트의 레코드 유형 출력 필드에 대한 참조를 인쇄하려고 시도하는 동안 발생했습니다 (적어도 일정한 값이있는 경우여기서조건). 원래 필드 이름을 식별하려는 계획에는 아무것도 남아 있지 않으므로 인쇄로 돌아갑니다fNN'TH 레코드 열. (어쨌든 그것은 실제로 옳은 일입니다. 레코드 출력이 a에서 발생했다면row ()생성자.)

  • 금지사용생성 된 열의 유형을 변경할 때 조항 (Peter Eisentraut)§

    생성 된 열은 이미 열 내용을 지정하는 표현식이 있으므로사용의미가 없습니다.

  • 정의되지 않은 포털을 무시하십시오pg_cursorsView (Tom Lane)§

    새 커서가 설정되는 동안이보기를 검사하는 사용자 정의 코드가 가능하며, 이런 일이 발생하면 널 포인터 디레 회의가 발생할 수 있습니다. 불완전한 커서를 제외하기 위해보기를 정의하여 문제를 피하십시오.

  • 논리 디코딩의 메모리 소비 감소 (Masahiko Sawada)§

    더 작은 기본 블록 크기를 사용하여 논리적 복제 중에 수신 된 튜플 데이터를 저장합니다. 이로 인해 메모리 낭비가 줄어들면서 장기 거래를 처리하는 동안 심각한 것으로보고되어 메모리가없는 실패로 이어집니다.

  • SANTELESS (TLSV1.2) 세션 티켓 (Daniel Gustafsson)의 재분배 가능§

    Stateful (TLSV1.3) 세션 티켓의 발송을 방지하기위한 이전 변경 사항은 실수로 실수로 무국적자의 발송을 다시 활성화 시켰습니다. 따라서 우리는 고객이 TLS 세션 재개가 지원되었다고 생각하는 것을 막기 위해 의도했지만 일부는 여전히 그렇습니다.

  • 피하기잘못된 튜플 길이많은 ACL (권한) 항목으로 데이터베이스를 삭제할 때 고장 (Ayush Tiwari)§ §

  • 조정 허용Session_Authorizationand역할병렬 작업자의 설정 (Tom Lane)§

    우리의 코드는 수정 가능한 서버 설정을 함수별로 설정할 수 있도록합니다set조항이지만 평행 작업자 내에서는 그렇지 않습니다.set이 두 설정에는 클로스가 실패했습니다.

  • a에서 호출 된 안정적인 기능의 동작 수정Call성명서의 인수 목록,시기CallPL/PGSQL 내에 있습니다예외블록 (Tom Lane)§

    이전 분기 별 릴리스에서 유사한 수정과 마찬가지로이 사례는 이러한 기능을 잘못된 스냅 샷으로 전달하여 외부 트랜잭션 시작 이후 수정 된 행의 오래된 값을 볼 수있었습니다.

  • Parselibpq'sKeepalives다른 정수 값 옵션과 같은 방식으로 연결 옵션 (Yuto Sasaki)§

    여기에 사용 된 코딩은 다른 경우와 달리 옵션 값에서 후행 공백을 거부했습니다. 이것은 문제가되는 것으로 판명 됨ECPG예를 들어

  • 사용을 피하십시오pnstrdup ()inecpglib(야곱 챔피언)§

    그 함수는 호출exit ()도서관에서 바람직하지 않은 메모리에서. 호출 코드는 이미 할당 실패를 올바르게 처리합니다.

  • inecpglib, 잘못된 DateTime 입력을 구문 분석 할 때 바운드 외부 읽기 수정 (Bruce Momjian, Pavel Nekrasov)§

    일정한 배열이 시작되기 직전에 위치를 읽을 수있었습니다. 그러나 실제 결과는 최소한으로 보인다.

  • 소스 타임 라인 기록 포함pg_rewind의 디버그 출력 (Heikki Linnakangas)§

    이것은 시작하려는 의도 였지만 코딩 오류로 인해 소스 이력이 항상 비어있는 것으로 인쇄했습니다.

  • 특히 Windows의 접합점이있는 오작동 수정, 특히pg_rewind(Alexandra Wang)§ § § § § § § § §

    이것은 Thomas Munro, Peter Eisentraut, Alexander Lakhin 및 Juan José Santamaría Flecha의 이전 수정을 수정했습니다. 이러한 변경 사항은 원래주의를 기울이지 않았지만 이후 지점에서 안전하다고 생각할 정도로 오랫동안 사용되고 있습니다.

  • 임시 테이블과 인덱스를 다시 구매하려고하지 마십시오VACUUMDB및 병렬ReindexDB(Vaibhaves, Michael Paquier, Fujii Masao, Nathan Bossart)§ § §

    다른 세션의 임시 테이블은 작동 할 수 없지만 일부 코드 경로에서는 건너 뛰는 수표가 누락되어 원치 않는 실패로 이어졌습니다..

  • 관련 기능에서 시퀀스 관계를 검사 허용Contrib/PageInspectandContrib/Pgstattuple(Nathan Bossart, Ayush Vatsa)§ §

    이것은 과거에 허용되었지만 테이블에 대한 비 디폴트 액세스 방법을 도입하는 동안 깨졌습니다.

  • ARM64 플랫폼에서 잘못된 LLVM 생성 코드 수정 (Thomas Munro, Anthonin Bonnefoy)§

    ARM 플랫폼에서 JIT 컴파일을 사용할 때 생성 된 코드는 32 비트를 초과하는 재배치 거리를 지원할 수 없으므로 생성 된 코드를 대형 메모리 시스템에 서버 충돌로 인한 운이 좋지 않습니다.

  • 해당 프로세스 시작 시간을 가정 한 몇 개의 장소를 수정하십시오 (Atime_t)는 A에 적합합니다.LongValue (Max Johnson, Nathan Bossart)§

    플랫폼에서Long32 비트 (특히 Windows),이 코딩은 Y2038 이후에 실패합니다. 대부분의 실패는 화장품 만 보이지만 특히PG_CTL 시작매달릴 것입니다.

  • 예방아무것도 제공하지 않습니다 (젠 토토 :: test :: utils)rpm 패키지를 구축하는 동안의 실패젠 토토(Noah Misch)§

  • Windows에 딸기 perl이있는 건물 수정 (Andrew Dunstan)§

  • 시간대 데이터 파일 업데이트TZDATA릴리스 2024B (Tom Lane)§ §

    thisTZDATA릴리스 릴리스 기존 시스템 V 호환성 영역 이름을 변경하여 해당 지역 영역을 복제합니다. 예를 들어pst8pdt이제 별명입니다America/Los_angeles. 주요한 눈에 띄는 결과는 표준화 된 시간대가 도입되기 전 타임 스탬프의 경우 영역이 지정된 위치에 대한 로컬 평균 태양 시간을 나타내는 것으로 간주됩니다.pst8pdt, Timestamptz와 같은 입력1801-01-01 00:00이전에 이전에1801-01-01 00 : 00 : 00-08, 그러나 이제는1801-01-01 00 : 00 : 00-07 : 52 : 58.

    멕시코, 몽골 및 포르투갈의 역사적 교정. 특히,Asia/Choibalsan이제 별명입니다Asia/Ulaanbaatar별도의 영역이 아니라 주로 해당 구역의 차이가 신뢰할 수없는 데이터를 기반으로 한 것으로 밝혀 졌기 때문에