출시일: 2024-11-14
이 릴리스에는 12.20의 다양한 수정 사항이 포함되어 있습니다. 주요 릴리스 12의 새로운 기능에 대한 자세한 내용은 다음을 참조하세요.토토 사이트 PostgreSQL : 문서 : 12 : E.23. 릴리스 12.
이것이 마지막이 될 것롤 토토 예상됩니다.포스트그레SQL6251_6344
12.X를 실행하는 경우 덤프/복원이 필요하지 않습니다.
그러나 12.18 이전 버전에서 업그레이드하는 경우 참조PostgreSQL : 문서 : 12 : E.5. 토토 사이트 12.18.
RLS가 최상위 레벨이 아닌 테이블 참조에 적용될 때 캐시된 계획이 호출 역할에 종속된 것롤 토토 표시되는지 확인하십시오(Nathan Bossart)§
쿼리의 CTE, 하위 쿼리, 하위 링크, 보안 호출자 보기 또는 강제 투영이 행 수준 보안 정책이 있는 테이블을 참조하는 경우 결과 계획을 실행하는 역할에 따라 잠재적으로 종속되는 것으로 표시하는 것을 무시했습니다. 이로 인해 나중에 잘못된 계획을 사용하여 동일한 세션에서 쿼리를 실행한 다음 숨겨져 있거나 대신 반환되어야 하는 행을 반환하거나 숨길 수 있습니다.
그포스트그레SQL프로젝트는 이 문제를 보고한 볼프강 발터(Wolfgang Walther)에게 감사드립니다. (CVE-2024-10976)
만들다libpqSSL 또는 GSS 프로토콜 협상 중에 수신된 오류 메시지 삭제(Jacob Champion)§
암호화 협상이 완료되기 전에 수신된 오류 메시지는 실제 서버 출력이 아닌 중간자에 의해 삽입되었을 수 있습니다. 이를 보고하면 다양한 보안 위험이 발생할 수 있습니다. 예를 들어 메시지는 부주의한 사용자가 올바른 출력으로 착각할 수 있는 쿼리 결과를 스푸핑할 수 있습니다. 가장 좋은 대답은 그러한 데이터를 버리고 오직 다음에만 의존하는 것 같습니다.libpq자신의 연결 실패 보고입니다.
그포스트그레SQL프로젝트는 이 문제를 보고한 Jacob Champion에게 감사드립니다. (CVE-2024-10977)
사이의 의도하지 않은 상호작용 수정세션 승인 설정그리고역할 설정(톰 레인)§ §
SQL 표준에서는 다음을 요구합니다.세션 승인 설정부작용이 있습니다역할 없음 설정. 이에 대한 구현에는 결함이 있어 두 설정 간에 의도한 것보다 더 많은 상호 작용이 발생했습니다. 특히, 완료된 트랜잭션을 롤백합니다.세션 승인 설정되돌리겠습니다역할에없음이전 상태가 아니더라도 이제 유효한 사용자 ID는 거래 전의 상태와 다를 수 있습니다. 일시적으로 설정session_authorization함수에서세트절도 비슷한 효과를 가졌습니다. 관련된 버그는 병렬 작업자가 검사하는 경우였습니다.현재_설정('역할'), 봤어없음다른 것을 봐야 할 때라도.
그롤 토토프로젝트는 이 문제를 보고한 Tom Lane에게 감사드립니다. (CVE-2024-10978)
신뢰할 수 있는 PL/Perl 코드가 환경 변수를 변경하지 못하도록 방지(Andrew Dunstan, Noah Misch)§ § § §
다음과 같은 프로세스 환경 변수를 조작하는 능력경로공격자에게 임의의 코드를 실행할 기회를 제공합니다. 그러므로“신뢰할 수 있는”PL은 그러한 기능을 제공해서는 안 됩니다. 고치려면plperl, 교체%ENV경고와 함께 모든 수정 시도를 거부하는 연결된 해시가 있습니다. 신뢰할 수 없음plperlu환경을 바꾸는 능력을 유지합니다.
그포스트그레SQL프로젝트는 이 문제를 보고한 Coby Abrams에게 감사드립니다. (CVE-2024-10979)
허용하지 않음테이블 연결 파티션 변경연결할 테이블에 분할된 테이블을 참조하는 외래 키가 있는 경우(Álvaro Herrera)§ §
이 배열은 지원되지 않으며 이를 만드는 다른 방법은 이미 실패했습니다.
키 열에 대한 쿼리의 데이터 정렬이 파티션 키의 데이터 정렬과 일치하지 않는 경우 파티션 단위 조인 또는 그룹화를 사용하지 마십시오(Jian He, Webbo Han)§ §
그러한 계획은 잘못된 결과를 낳을 수 있습니다.
대형 해시 인덱스에 대한 인덱스 구축의 두 번째 단계 취소 허용 (Pavel Borisov)§
어설션 실패 또는 혼란스러운 오류 메시지 수정복사(, 때질의) 에 ...질의a에 의해 다시 작성됨대신 알림을 보내세요규칙(텐더 왕, 톰 레인)§
병렬 해시 조인 중 왜곡된 데이터 감지 수정(Thomas Munro)§
하나의 파티션에 너무 많은 튜플이 축적되었기 때문에 해시 조인의 내부를 다시 파티션한 후, 우리는 모든 파티션의 튜플이 동일한 하위 파티션에 들어갔는지 확인합니다. 이는 모두 동일한 해시 값을 가지며 더 이상 재파티셔닝으로는 문제를 개선할 수 없음을 의미합니다. 이 검사는 어떤 경우에는 오작동하여 반복적인 쓸데없는 재분할을 허용하여 결국 리소스 고갈 오류로 끝날 수 있습니다.
직렬화 가능한 트랜잭션 커밋 시 경쟁 조건 수정(Heikki Linnakangas)§
최근 커밋된 트랜잭션을 잘못 처리하면 어설션 실패 또는 a“거래 상태에 접근할 수 없습니다.”오류.
경합 상태 수정커밋 준비됨고아가 된 2PC 파일이 발생함(wuchengwen)§
동시거래 준비원인이 될 수 있습니다커밋 준비됨완료된 트랜잭션에 대한 디스크상의 2단계 상태 파일을 제거하지 않습니다. 즉각적인 악영향은 없었지만 후속 충돌 및 복구가 실패할 수 있습니다.“거래 상태에 접근할 수 없습니다.”, 서비스를 복원하려면 분리된 파일을 수동롤 토토 제거해야 합니다.
동안 잘못된 토스트 인덱스를 건너뛴 후 잘못된 메모리 액세스를 방지진공이 가득 참(텐더 왕)§
아직 재구축되지 않은 인덱스를 추적하는 목록이 이 코드 경로에서 제대로 업데이트되지 않아 나중에 어설션 실패 또는 충돌 위험이 있습니다.
다음 방법을 수정하세요.“제자리에”카탈로그 업데이트가 손실될 수 있음(Noah Misch)§ § § § § § §
일반 행 업데이트는 트랜잭션의 롤백 기능을 보존하기 위해 행의 새 버전을 작성합니다. 그러나 특정 시스템 카탈로그 업데이트는 의도적롤 토토 비트랜잭션이며 행의 내부 업데이트를 통해 수행됩니다. 이러한 패치는 내부 업데이트의 효과가 손실될 수 있는 경합 상태를 수정합니다. 예를 들어, 설정한 것을 잊어버릴 수도 있습니다.pg_class.relhasindextrue로 설정하면 새 색인의 업데이트가 방지되어 색인이 손상됩니다.
복구 종료 시 카탈로그 캐시 재설정(Noah Misch)§
이는 카탈로그 캐시의 오래된 데이터 사용롤 토토 인해 내부 카탈로그 업데이트가 손실될 수 있는 시나리오를 방지합니다.
인터럽트를 보류하는 동안 병렬 쿼리 사용을 피하십시오(Francesco Degrassi, Noah Misch, Tom Lane)§ §
이 상황은 일반적으로 발생할 수 없지만 B-트리 지원으로 SQL 언어 기능을 사용하는 등의 테스트 시나리오를 통해 도달할 수 있습니다(프로덕션 사용에 비해 너무 느림). 만약 그런 일이 발생했다면 무기한 대기하게 될 것입니다.
스택 오버플로 방지libxml2너무 깊게 중첩된 XML 입력 포함(Tom Lane, Nick Wellnhofer에 대한 팁 제공)§
사용xmlXPathCtxtCompile()대신xmlXPathCompile(), 후자는 재귀-스택 오버플로로부터 자체를 보호하지 못하기 때문입니다.libxml22.13.4 이전 릴리스.
수정“하위 쿼리/CTE에 대한 계획을 찾지 못했습니다.”오류 발생설명(리차드 구오, 톰 레인)§
이 사례는 하위 쿼리가 계획에서 완전히 최적화되었을 때 하위 쿼리의 RECORD 유형 출력 필드에 대한 참조를 인쇄하려고 시도하는 동안 발생했습니다(적어도 상수-false가 있는 경우 가능함)어디조건). 원래 필드 이름을 식별할 계획이 남아 있지 않으므로 인쇄로 돌아갑니다.f에 대한NN'번째 레코드 열입니다. (레코드 출력이 다음에서 발생한 경우 어쨌든 실제로 옳은 것입니다.ROW()생성자.)
a를 허용하지 않음사용 중생성된 컬럼의 유형을 변경할 때의 조항(Peter Eisentraut)§
생성된 열에는 이미 열 내용을 지정하는 식이 있으므로 다음을 포함합니다.사용 중말이 안 돼요.
아직 정의되지 않은 포털을 무시pg_cursors보기(톰 레인)§
새 커서가 설정되는 동안 이 뷰를 검사하는 사용자 정의 코드가 호출될 수 있으며, 이러한 경우 널 포인터 역참조가 발생합니다. 불완전하게 설정된 커서를 제외하도록 뷰를 정의하여 문제를 방지하세요.
논리적 디코딩의 메모리 소모 감소 (사와다 마사히코)§
논리 복제 중에 수신된 튜플 데이터를 저장하려면 더 작은 기본 블록 크기를 사용하십시오. 이는 장기 실행 트랜잭션을 처리하는 동안 심각한 것으로 보고되어 메모리 부족 오류로 이어지는 것으로 보고된 메모리 낭비를 줄입니다.
상태 비저장(TLSv1.2) 세션 티켓 전송 다시 비활성화(Daniel Gustafsson)§
상태 저장(TLSv1.3) 세션 티켓 전송을 방지하기 위한 이전 변경으로 인해 실수로 상태 비저장 세션 티켓 전송이 다시 활성화되었습니다. 따라서 우리는 클라이언트가 TLS 세션 재개가 지원된다고 생각하지 못하도록 의도했지만 일부는 여전히 그렇게 했습니다.
피하세요“튜플 길이가 잘못됨”ACL(권한) 항목이 많은 데이터베이스 삭제 시 실패(Ayush Tiwari)§ §
조정을 허용session_authorization그리고역할병렬 작업자의 설정(Tom Lane)§
우리 코드는 수정 가능한 서버 설정을 기능별로 설정할 수 있도록 허용합니다.SET절이지만 병렬 작업자 내에서는 그렇지 않습니다.SET그러나 이 두 설정에 대해서는 절이 실패했습니다.
a에서 호출된 안정적인 함수의 동작 수정전화문의 인수 목록,전화PL/pgSQL 내에 있음예외블록 (톰 레인)§
이전 분기별 릴리스의 유사한 수정과 마찬가지로 이 경우 이러한 함수에 잘못된 스냅샷이 전달되어 외부 트랜잭션 시작 이후 수정된 행의 오래된 값을 볼 수 있었습니다.
파싱libpq's연결 유지다른 정수값 옵션과 동일한 방식롤 토토 연결 옵션 (Yuto Sasaki)§
여기에 사용된 코딩은 다른 경우와 달리 옵션 값의 후행 공백을 거부했습니다. 이는 문제가 있는 것으로 밝혀졌습니다.ecpg22623_22647
에ecpglib, 잘못된 날짜/시간 입력을 구문 분석할 때 범위를 벗어난 읽기 문제 수정(Bruce Momjian, Pavel Nekrasov)§
상수 배열이 시작되기 직전에 위치를 읽는 것이 가능했습니다. 하지만 실제 결과는 미미해 보입니다.
소스 타임라인 기록 포함pg_rewind의 디버그 출력(Heikki Linnakangas)§
이것은 처음부터 의도된 것이었지만 코딩 오류로 인해 소스 기록이 항상 비어 있는 것롤 토토 인쇄되었습니다.
임시 테이블과 색인을 다시 색인화하려는 시도를 피하십시오.vacuumdb그리고 동시에reindexdb(VaibhaveS, Michael Paquier, Fujii Masao, Nathan Bossart)§ §
다른 세션의 임시 테이블 재인덱싱은 작동하지 않지만 일부 코드 경로에서 건너뛰기 확인이 누락되어 원치 않는 오류가 발생했습니다.
관련 기능의 시퀀스 관계 검사 허용기여/페이지검사그리고contrib/pgstattuple(네이선 보사르, 아유시 바차)§ §
이것은 과거에 허용되었지만 테이블에 대한 기본이 아닌 액세스 방법을 도입하는 동안 깨졌습니다.
ARM64 플랫폼에서 잘못된 LLVM 생성 코드 수정(Thomas Munro, Anthonin Bonnefoy)§
ARM 플랫폼에서 JIT 컴파일을 사용할 때 생성된 코드는 32비트를 초과하는 재배치 거리를 지원할 수 없으므로 생성된 코드를 잘못 배치하면 대용량 메모리 시스템에서 서버 충돌이 발생할 수 있습니다.
프로세스 시작 시간(으로 표시됨)을 가정한 몇 가지 장소를 수정합니다.time_t)는 a에 적합합니다.긴값 (맥스 존슨, 네이선 보사트)§
플랫폼에서긴은 32비트(특히 Windows)이므로 이 코딩은 Y2038 이후에 실패합니다. 대부분의 실패는 외관상롤 토토만 나타나지만 특히pg_ctl 시작멈추게 됩니다.
방지“아무것도 Perl을 제공하지 않습니다(롤 토토::Test::Utils)”RPM 패키지를 빌드하는 중 실패롤 토토(노아 미쉬)§
Windows에서 Strawberry Perl을 사용하여 빌드 수정(Andrew Dunstan)§
다음으로 시간대 데이터 파일 업데이트tzdata2024b 출시(톰 레인)§ §
이것은tzdata롤 토토는 기존 System-V 호환 영역 이름을 변경하여 해당 지리적 영역을 복제합니다. 예를 들어PST8PDT이제 다음의 별칭입니다.미국/Los_Angeles. 가장 눈에 띄는 결과는 표준화된 시간대가 도입되기 전 타임스탬프의 경우 해당 시간대가 해당 위치의 현지 평균 태양시를 나타내는 것롤 토토 간주된다는 것입니다. 예를 들어,PST8PDT, 타임스탬프tz다음과 같은 입력1801-01-01 00:00이전에는 다음과 같이 렌더링되었을 것입니다.1801-01-01 00:00:00-08, 하지만 이제는 다음과 같이 렌더링됩니다.1801-01-01 00:00:00-07:52:58.
또한 멕시코, 몽골, 포르투갈에 대한 역사적 수정이 이루어졌습니다. 특히,아시아/초이발산이제의 별칭입니다.아시아/울란바토르별도의 영역이 아닌 주로 해당 영역 간의 차이가 신뢰할 수 없는 데이터를 기반롤 토토 한 것롤 토토 밝혀졌기 때문입니다.