출시일: 2021-11-11
이 릴리스에는 14.0의 다양한 수정 사항이 포함되어 있습니다. 주요 릴리스 14의 새로운 기능에 대한 자세한 내용은 다음을 참조하세요.윈 토토 PostgreSQL : 문서 : 14 : E.18. 릴리스 14.
14.X를 실행하는 경우 덤프/복원이 필요하지 않습니다.
그러나 아래 세 번째 변경 로그 항목에 설명된 대로 물리적 복제를 사용하는 설치는 기본 서버보다 먼저 대기 서버를 업데이트해야 한다는 점에 유의하십시오.
또한 다음 여러 변경 로그 항목에서 설명하는 것처럼 인덱스가 손상될 수 있는 여러 버그가 발견되었습니다. 이러한 경우 중 하나라도 해당된다면 업데이트 후 영향을 받을 수 있는 색인을 다시 색인화하는 것이 좋습니다.
SSL 또는 GSS 암호화 핸드셰이크 후 서버가 외부 롤 토토를 거부하도록 설정(Tom Lane)§
TCP 연결에 롤 토토를 주입하는 능력을 가진 중간자(man-in-the-middle)는 암호화로 보호된 롤 토토베이스 세션의 시작 부분에 일부 일반 텍스트 롤 토토를 넣을 수 있습니다. 이는 서버가 인증 롤 토토를 요구하지 않는 경우에만 작동하지만 위조된 SQL 명령을 서버에 보내는 데 악용될 수 있습니다. (단, SSL 인증서 인증에 의존하는 서버는 그렇지 않을 수도 있습니다.)
그포스트그레SQL프로젝트는 이 문제를 보고한 Jacob Champion에게 감사드립니다. (CVE-2021-23214)
만들다libpqSSL 또는 GSS 암호화 핸드셰이크 후 외부 롤 토토 거부(Tom Lane)§
TCP 연결에 데이터를 주입하는 능력을 가진 중간자(man-in-the-middle)는 암호화로 보호된 데이터베이스 세션의 시작 부분에 일부 일반 텍스트 데이터를 넣을 수 있습니다. libpq의 동작에 대한 다른 세부 사항으로 인해 생각보다 어려운 일이기는 하지만 이는 클라이언트의 처음 몇 가지 쿼리에 가짜 응답을 주입하기 위해 남용될 수 있습니다. 또 다른 공격 방식은 클라이언트의 비밀번호나 세션 초기에 전송될 수 있는 기타 민감한 데이터를 유출하는 것입니다. 이는 CVE-2021-23214에 취약한 서버에서 가능한 것으로 나타났습니다.
그포스트그레SQL프로젝트는 이 문제를 보고한 Jacob Champion에게 감사드립니다. (CVE-2021-23222)
부분 WAL 레코드로 끝나는 WAL 세그먼트를 배송한 후 기본 충돌이 발생하는 경우에 대한 물리적 복제 수정(Álvaro Herrera)§ § § § §
기본이 불완전한 WAL 레코드의 나머지 쓰기를 완료할 만큼 오랫동안 생존하지 못한 경우, 이전 충돌 복구 논리는 이를 백업하고 불완전한 WAL 레코드의 시작부터 WAL을 덮어썼습니다. 이는 대기 서버에 해당 WAL 세그먼트의 복사본이 이미 있을 수 있으므로 문제가 됩니다. 그러면 일관성이 없는 다음 세그먼트가 표시되며 수동 개입 없이는 복구할 수 없습니다. 문제를 해결하려면 충돌 후 다시 시작할 때 WAL 세그먼트 경계를 넘어 백업하지 마세요. 대신 다음 WAL 세그먼트 시작 부분에 새로운 유형의 WAL 레코드를 작성하여 불완전한 WAL 레코드는 결코 완료되지 않으며 무시되어야 함을 독자에게 알립니다.
이 업데이트를 적용할 때 기본 서버보다 먼저 대기 서버를 업데이트하여 기본 서버가 충돌할 경우 이 새로운 WAL 레코드 유형을 처리할 수 있도록 준비하는 것이 가장 좋습니다.
병렬을 보장하세요진공색인 하나도 놓치지 않습니다 (Peter Geoghegan, Masahiko Sawada)§
병렬진공아래에 있는 색인은 처리하지 못합니다.min_parallel_index_scan_size컷오프(테이블에 해당 크기보다 큰 인덱스가 두 개 이상 있는 경우). 이로 인해 해당 인덱스가 손상될 수 롤 토토. 왜냐하면 인덱스에는 제거된 힙 항목에 대한 참조가 여전히 포함되어 있기 때문입니다.진공; 이러한 인덱스를 사용하는 후속 쿼리는 반환해서는 안 되는 행을 반환할 가능성이 높습니다. 이 문제는 병렬 진공 청소를 사용하지 않기 때문에 autovacuum에 영향을 미치지 않습니다. 그러나 인덱스 크기가 올바르게 혼합되어 수동으로 비운 테이블을 다시 인덱싱하는 것이 좋습니다.
수정동시에 인덱스 생성최근에 준비된 거래를 기다리다(Andrey Borodin)§
방금 준비된 트랜잭션에 의해 삽입된 행은 새 색인에서 생략될 수 있으며, 이로 인해 색인에 의존하는 쿼리가 해당 행을 놓칠 수 있습니다. 이러한 유형의 문제에 대한 이전 수정 사항은 설명하지 못했습니다.거래 준비다음 때 아직 진행 중이던 명령동시에 인덱스 생성확인했습니다. 이전과 마찬가지로 준비된 트랜잭션(max_prepared_transactions 0), 빌드 시 이 문제가 발생한 경우 동시에 빌드된 색인을 다시 색인화하는 것이 좋습니다.
백엔드가 동시에 빌드되는 인덱스에 새 행에 대한 항목을 추가하지 못하게 할 수 있는 경쟁 조건을 방지합니다(Noah Misch, Andrey Borodin)§
현장에서는 드문 일이지만, 이 경우는 잠재적으로 구축되거나 재인덱싱된 모든 인덱스에 영향을 미칠 수 롤 토토.동시옵션. 이러한 색인이 올바른지 확인하기 위해 색인을 다시 생성하는 것이 좋습니다.
수정동시에 REINDEX대상 인덱스에 첨부된 연산자 클래스 매개변수를 보존하기 위해(Michael Paquier)§
비내장 개체가 포함된 데이터베이스를 복제할 때 공유 종속성의 잘못된 생성 수정 (Aleksander Alekseev)§
이 오류의 영향은 실제로는 제한적일 수 롤 토토. 원칙적으로 개체를 소유하고 있는 동안 역할을 삭제할 수 롤 토토. 그러나 대부분의 설치에서는 자신이 추가한 개체에 사용된 역할을 삭제하고 싶지 않습니다.템플릿1.
파티션된 테이블에 연결되거나 분리되는 테이블에 대해 관계 캐시가 무효화되었는지 확인하세요(Amit Langote, Álvaro Herrera)§
이러한 감독으로 인해 파티션에 직접 지정된 후속 삽입/업데이트의 오작동이 허용될 수 있지만 현재 존재하는 세션에서만 가능합니다.
범위 유형을 생성하는 동안 구문 분석 트리 손상 수정 (Alex Kozhemyakin, Sergey Shinderuk)§
유형 생성분석 트리의 요소를 잘못 해제하여 이후 이벤트 트리거에 문제를 일으킬 수 롤 토토.유형 생성명령은 계획 캐시에 저장되었으며 나중에 다시 사용되었습니다.
복합을 통한 도메인 배열의 요소 필드 업데이트 수정(Tom Lane)§
다음과 같은 명령업데이트 탭 SET fld[1].subfld = val배열의 요소가 일반 복합이 아닌 도메인인 경우 실패했습니다.
다음 조합을 허용하지 않습니다.동점으로 먼저 가져오기그리고업데이트 건너뛰기 잠김(데이비드 크리스텐슨)§
동점인 경우 먼저 가져오기동률이 아닌 행을 찾을 때까지 중지할 수 없기 때문에 반드시 요청한 것보다 하나 더 많은 행을 가져옵니다. 현재 구현에서는 다음과 같습니다.업데이트용을 사용하면 해당 행이 반환되지 않더라도 잠기게 됩니다. 다음과 같은 경우 바람직하지 않은 동작이 발생합니다.건너뛰기 잠김옵션이 지정되었습니다. 다른 바람직하지 않은 동작을 도입하지 않고 이를 변경하는 것은 어렵습니다. 따라서 지금은 조합을 금지하세요.
허용하지 않음ALTER INDEX 인덱스 ALTER COLUMN col SET (옵션)(네이선 보사르, 마이클 파퀴어)§
파서가 이를 수락했지만 문서화되지 않았으며 실제로 작동하지 않습니다.
숫자에서 특수한 경우의 정밀도 손실 수정힘()(딘 라시드)§
첫 번째 인수가 1에 매우 가까우면 결과가 부정확할 수 롤 토토.
메모화 계획에 대해 잘못된 해시 동등 연산자를 선택하지 마십시오(David Rowley)§
이 오류로 인해 충돌이 발생하거나 잘못된 쿼리 결과가 발생할 수 롤 토토.
하위 쿼리 표현식을 함수 범위 테이블 항목으로 끌어올 때 발생하는 플래너 오류 수정(Tom Lane)§
함수가발신일부 하위의 출력을 측면 참조선택이전발신절, 그리고 우리는 그 하위를 평면화할 수 있습니다-선택외부 쿼리에 함수 표현식에 복사된 표현식이 완전히 처리되지 않았습니다. 이로 인해 실행 시 충돌이 발생할 수 롤 토토.
열 범위를 추정하기 위해 MCV 전용 통계를 사용하지 마십시오(Tom Lane)§
특이한 경우가 롤 토토.분석MCV 목록이 관찰된 모든 값을 설명하지 못하더라도 가장 일반적인 값(MCV) 목록을 작성하지만 히스토그램은 작성하지 않습니다. 이러한 경우 플래너가 MCV 목록만 사용하여 열 값의 범위를 추정하지 않도록 하세요.
하위 트랜잭션 내에서 포털의 스냅샷 복원 문제 수정(Bertrand Drouvot)§
프로시저가 트랜잭션을 커밋하거나 롤백한 후 다음 중요한 작업이 새 하위 트랜잭션 내부에 있는 경우 스냅샷 관리가 잘못되어 포인터가 매달리고 충돌이 발생할 수 있습니다. PL/pgSQL의 일반적인 예는 다음과 같습니다.커밋바로 다음에 a시작 ... 예외쿼리를 수행하는 블록입니다.
스냅샷을 내보낸 후 트랜잭션이 실패할 경우 올바르게 정리하십시오(Dilip Kumar)§
이러한 감독은 동일한 세션이 스냅샷을 다시 내보내려고 시도하는 경우에만 문제를 일으킬 것입니다. 가장 가능성이 높은 시나리오는 복제 슬롯을 생성한 후(뒤에 롤백) 다른 복제 슬롯을 생성하는 것입니다.
대기 서버에서 오버플로된 하위 트랜잭션 추적 랩어라운드 방지(호리구치 쿄타로, 알렉산더 코로트코프)§
이러한 감독으로 인해 대기 서버에서 심각한 성능 저하(과도한 SubtransSLRU 트래픽으로 나타남)가 발생할 수 롤 토토.
대기 서버 승격 중에 준비된 트랜잭션이 올바르게 고려되었는지 확인하십시오(Michael Paquier, Andres Freund)§
동시 실행 중인 세션에서 찍은 스냅샷에서 준비된 트랜잭션을 생략할 수 있는 좁은 창이 있었습니다. 해당 세션이 스냅샷을 사용하여 데이터 업데이트를 수행한 경우 잘못된 결과 또는 데이터 손상이 발생할 수 있습니다.
수정“RecursiveUnion을 찾을 수 없습니다.”오류 발생 시설명WorkTableScan 노드에 연결된 필터 조건을 인쇄하려고 시도합니다(Tom Lane)§
테이블 이름을 바꿀 때 올바른 잠금 수준이 사용되는지 확인하세요(Nathan Bossart, Álvaro Herrera)§ §
역사적인 이유로,색인 변경 ... 이름 바꾸기모든 종류의 관계에 적용될 수 롤 토토. 인덱스 이름을 바꾸는 데 필요한 잠금 수준은 테이블이나 다른 종류의 관계 이름을 바꾸는 데 필요한 잠금 수준보다 낮지만 코드에서는 이 문제가 발생하여 명령을 입력할 때마다 더 약한 잠금 수준을 사용합니다.ALTER INDEX.
객체를 소유한 역할을 동시에 삭제하는 경우 null 포인터 역참조 충돌 방지(Álvaro Herrera)§
방지“스냅샷 참조 유출”경고 시기lo_export()또는 관련 기능이 실패함(Heikki Linnakangas)§ §
CoerceToDomain 표현식 노드에 대한 비효율적인 코드 생성 수정(Ranier Vilela)§
일부 목록 조작 작업에서 O(N^2) 동작 방지(Nathan Bossart, Tom Lane)§ § §
이러한 변경 사항은 다음을 포함한 여러 시나리오에서 느린 처리를 수정합니다. 대기가 기본에서 많은 배타적 잠금을 보유한 트랜잭션을 재생하는 경우; 체크포인트 이후에 많은 파일이 연결 해제될 예정인 경우 해시 집계에 많은 배치가 포함되는 경우 그리고 언제pg_trgm복잡한 정규 표현식에서 색인 생성 가능한 조건을 추출합니다. 이러한 시나리오 중 첫 번째 시나리오만 실제로 현장에서 보고되었지만 모두 비효율적인 목록 삭제로 인한 그럴듯한 결과처럼 보입니다.
B-트리 게시 목록 분할에 대한 방어 검사 추가(Peter Geoghegan)§ §
이 변경 사항은 중복 테이블 TID와 관련된 색인 손상을 감지하는 데 도움이 됩니다.
BRIN float8 또는 float4 minmax_multi_ops 인덱스에 NaN을 삽입할 때 어설션 실패 방지(Tomas Vondra)§
프로덕션 빌드에서 이러한 경우에는 다소 비효율적이지만 실제로 부정확하지는 않은 색인이 생성됩니다.
autovacuum 실행기 프로세스가 응답하도록 허용pg_log_backend_memory_contexts()더 빠른 요청(타니가와 코유)§
HMAC 해시 계산의 메모리 누수 수정(Sergey Shinderuk)§
설정 금지거대한_페이지에켜짐언제shared_memory_typeissysv(토마스 먼로)§
이전에는 이 설정이 허용되었지만 구현이 부족하여 아무 효과가 없었습니다.
PL/pgSQL의 쿼리 유형 검사 수정반환 쿼리성명 (톰 레인)§
반환 쿼리튜플을 반환할 수 있는 모든 쿼리를 허용해야 합니다. 예:업데이트 반환 중. v14는 실수로 다음 외에는 아무것도 허용하지 않았습니다.선택; 게다가,반환 쿼리 실행변형이 쿼리 유형 검사를 전혀 적용하지 못했습니다.
수정pg_dump비전역 기본 권한을 올바르게 덤프하려면 (Neil Chen, Masahiko Sawada)§
전역(무제한)인 경우기본 권한 변경명령이 기본적으로 존재하는 일부 권한을 취소했습니다. 예를 들어실행함수용, 그리고 제한된기본 권한 변경명령은 선택된 역할이나 스키마에 대해 해당 권한을 다시 부여했습니다.pg_dump제한된 권한 부여를 올바르게 덤프하지 못했습니다.
만들다pg_dump덤프할 분할된 테이블에 대한 공유 잠금 획득(Tom Lane)§
이러한 감독은 일반적으로 무해했습니다. 한 때부터였습니다.pg_dump는 리프 파티션 중 하나를 잠갔으며, 이는 파티션된 테이블 자체에서 중요한 DDL을 방지하기에 충분합니다. 그러나 관련 잠금이 유지되지 않으므로 하위가 없는 분할된 테이블을 덤프할 때 문제가 발생할 수 있습니다.
충돌 수정pg_dump8.3 이전 서버(Tom Lane)에서 트리거 정의를 덤프하려고 할 때§
잘못된 파일 이름 수정pg_restore26404_26482§
다음을 확인하세요pgbench소켓 수준 실패 후 0이 아닌 상태로 종료됩니다(Yugo Nagata, Fabien Coelho)§ §
원하는 동작은 실행을 마친 다음 상태 2로 종료하는 것입니다. 또한 이러한 오류 보고를 수정하세요.
방지pg_amcheck임시 관계 확인 및 유효하지 않거나 준비되지 않은 인덱스 확인(Mark Dilger)§ §
이것은 거의 확실하게 일관성이 없어 보이는 도움이 되지 않는 관계 확인을 방지합니다.
만들다기여/amcheck대기 서버에서 실행 시 기록되지 않은 테이블 건너뛰기(Mark Dilger)§
그러한 테이블은 비어 있고 기록되지 않은 색인은 이미 유사하게 처리되었으므로 이렇게 하는 것이 적절합니다.
변경contrib/pg_stat_statements읽기 위해“쿼리 텍스트”최대 1GB 단위의 파일(Tom Lane)§
이러한 대용량 쿼리 텍스트 파일은 매우 드물지만 만약 발생한다면 이전 코딩은 Windows 64(2GB가 넘는 개별 읽기 요청을 거부함)에서 실패하게 됩니다.
다음 경우에 널 포인터 충돌 수정contrib/postgres_fdw롤 토토 변환 오류를 보고하려고 합니다(Tom Lane)§
다음을 확인하세요GetSharedSecurityLabel()아직 중요한 관계 캐시 항목을 구축하지 않은 새로 시작된 세션에서 사용할 수 있습니다(Jeff Davis)§
TAP 테스트를 실행할 때 모듈의 자체 디렉토리를 포함하십시오.PATH(앤드류 던스턴)§
이를 통해 테스트에서는 사용자 정의 테스트 드라이버와 같이 설치되지 않은 빌드된 프로그램을 찾을 수 롤 토토.
CLDR 프로젝트의 롤 토토를 사용하여 Windows 시간대 이름을 IANA 시간대에 매핑합니다(Tom Lane)§ § §
Windows에서 실행할 때,initdb새 클러스터의 설정을 시도합니다시간대매개변수를 시스템의 일반 시간대와 일치하는 IANA 시간대에 설정합니다. 우리는 몇 년 전에 생성하고 가끔씩만 업데이트한 매핑 테이블을 사용하고 있었습니다. 놀랍게도 여기에는 최근 추가된 영역이 누락되었을 뿐만 아니라 많은 오류가 포함되어 있었습니다. CLDR이 가장 적절한 매핑을 추적해 온 것으로 밝혀졌으므로 해당 데이터를 사용하기 시작하세요. 이 변경사항은 기존 설치에는 영향을 미치지 않으며 새로 초기화된 클러스터에만 영향을 미칩니다.
다음으로 시간대 데이터 파일 업데이트tzdata피지, 요르단, 팔레스타인, 사모아의 DST 법률 변경 사항과 바베이도스, 쿡 제도, 가이아나, 니우에, 포르투갈, 통가의 역사적 수정 사항에 대한 2021e 릴리스입니다. (톰 레인)§
또한 Pacific/Enderbury 지역의 이름이 Pacific/Kanton으로 변경되었습니다. 또한 다음 구역은 1970년 이후 시계가 일치하는 더 인구가 많은 인근 구역으로 병합되었습니다: Africa/Accra, America/Atikokan, America/Blanc-Sablon, America/Creston, America/Curacao, America/Nassau, America/Port_of_Spain, Antarctica/DumontDUrville 및 Antarctica/Syowa. 이러한 모든 경우에 이전 영역 이름은 별칭으로 유지됩니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.