출시일: 2021-08-12
이 릴리스에는 11.12의 다양한 수정 사항이 포함되어 있습니다. 주요 릴리스 11의 새로운 기능에 대한 자세한 내용은 다음을 참조하세요.토토 사이트 PostgreSQL : 문서 : 11 : E.23. 릴리스 11.
11.X를 실행하는 경우 덤프/복원이 필요하지 않습니다.
그러나 11.11 이전 버전에서 업그레이드하는 경우 참조PostgreSQL : 문서 : 11 : E.12. 토토 결과 11.11.
투영 단계의 반복 적용에 대한 잘못된 계획 수정(Tom Lane)
두 개의 ProjectionPath가 서로 겹쳐진 경우 플래너가 잘못된 계획을 생성할 수 있었습니다. 해당 상황을 유발하는 유일한 알려진 방법은 병렬 정렬 작업이지만 다른 경우도 있을 수 토토 커뮤니티. 결과적으로 충돌이 발생하거나 잘못된 쿼리 결과가 발생합니다. 서버 메모리 내용 공개도 가능합니다. (CVE-2021-3677)
SSL 재협상을 더 완전하게 허용하지 않음 (Michael Paquier)
SSL 재협상이 한동안 비활성화되었지만 서버는 여전히 클라이언트가 시작한 재협상 요청에 협력합니다. 악의적으로 제작된 재협상 요청으로 인해 서버 충돌이 발생할 수 토토 커뮤니티(OpenSSL 문제 CVE-2021-3449 참조). 이를 허용하는 OpenSSL 버전(1.1.0h 이상)에서는 기능을 완전히 비활성화하세요.
다음 이후에 포털 수준 스냅샷 복원커밋또는롤백프로시저 내에서(톰 레인)
이 변경은 토스트된 값을 즉시 가져오려는 시도가 있는 경우를 수정합니다.커밋/롤백다음과 같은 오류로 인해 실패합니다“알려진 스냅샷 없음”또는“토스트 값에 대한 청크 번호 0 누락”.
일부 확장 프로그램은 포털 외부에서 SQL 코드 실행을 시도할 수 있습니다. 이를 수행하기 전에 외부 스냅샷이 존재하는지 확인하는 책임이 있습니다. 이전에는 스냅샷을 제공하지 않으면 작동할 수도 있고 그렇지 않을 수도 있습니다. 이제는 지속적으로 실패합니다.“외부 스냅샷이나 포털 없이는 SQL을 실행할 수 없습니다.”.
불안정한 쿼리를 읽는 커서의 출력을 유지할 때 오작동 방지(Tom Lane)
이전에는 항상 전체 쿼리 결과를 되감고 다시 읽었으며, 아마도 이전 실행과 다른 결과를 얻어 나중에 큰 혼란을 야기할 수 있었습니다. NO SCROLL 커서의 경우 쿼리 출력 중 아직 읽지 않은 부분만 저장하여 이 문제를 해결할 수 있습니다. NO SCROLL 커서는 백업할 수 없기 때문에 충분합니다. SCROLL 옵션이 있는 커서는 여전히 위험하지만 이는 불안정한 쿼리와 함께 사용하기에 안전하지 않은 옵션으로 이미 문서화되어 있습니다. 문서 경고를 더욱 강력하게 만드세요.
또한 다음에서 사용하는 암시적 커서에 대해 NO SCROLL 모드를 강제 실행합니다.PL/pgSQLFOR-over-query 루프, 프로시저 내 커밋 중에 이러한 커서를 유지할 때 이러한 유형의 문제를 방지합니다.
거부업데이트를 위한 그룹 설정(())으로 그룹 선택(톰 레인)
이것은 다음과 같이 허용되지 않습니다.업데이트용평야와 함께그룹별은 허용되지 않지만 이에 대한 테스트는 빈 그룹화 세트를 올바르게 처리하지 못했습니다. 최종 결과는 실행기에서 널 포인터 역참조가 됩니다.
쿼리가 있는 사례 거부WITH다음으로 다시 작성알림(톰 레인)
이러한 경우는 이전에 충돌이 발생했습니다.
에숫자곱셈, 소수점 이하 16383자리 이상이면 실패하지 않고 결과를 반올림합니다 (Dean Rasheed)
올림 시 코너 케이스 오류 및 정밀도 손실 수정108PostgreSQL: 문서: 11: E.10. 릴리스 11.1352매우 큰 거듭제곱의 값 (Dean Rasheed)
0으로 나누기 오류 수정to_char()함께EEEE형식 및 a숫자10^(-1001)보다 작은 입력 값 (Dean Rasheed)
수정pg_size_pretty(bigint)양수 값을 반올림하는 방식과 일관되게 음수 값을 반올림합니다(그리고 일관되게숫자version) (Dean Rasheed, David Rowley)
만들다pg_filenode_relation(0, 0)실패하지 않고 NULL을 반환함(Justin Pryzby)
만들다확장 프로그램 변경구성원 개체를 추가하거나 제거할 때 확장 프로그램 잠금(Tom Lane)
이전 코딩이 허용됩니다.확장 프로그램 변경 추가/삭제동시에 발생하다삭제 확장, 충돌 또는 카탈로그 항목 손상으로 이어집니다.
수정구독 변경빈 슬롯 이름 거부(Japin Li)
파티션된 테이블의 트리거를 새 파티션에 복제할 때 활성화된 상태가 복사되었는지 확인하세요(Álvaro Herrera)
다음에 대해 생성된 쿼리에서 별칭 충돌 방지동시에 구체화된 보기 새로고침(톰 레인, 바라스 루피레디)
이 명령은 특정 이름을 가진 열을 포함하는 구체화된 뷰에서 실패했습니다.mv그리고새로운 데이터.
수정거래 준비세션 수명 잠금과 트랜잭션 수명 잠금이 충돌하는지 올바르게 확인하려면(Tom Lane)
동일한 권고 잠금 ID 값에 세션 수명 잠금과 트랜잭션 수명 잠금이 모두 있는 경우 트랜잭션을 준비할 수 없습니다. 이 제한 사항은 완전히 확인되지 않았으며 이로 인해 패닉이 발생할 수 토토 커뮤니티.거래 준비.
잘못된 동작 수정드롭 소유대상 역할이 RLS 정책에 두 번 이상 나열된 경우(Tom Lane)
중 RLS 정책에서 역할을 제거할 때 불필요한 오류 테스트를 건너뜁니다.드롭 소유(톰 레인)
특히, 이는 슈퍼유저가 되어야 사용할 수 있는 일부 경우를 수정합니다.드롭 소유.
a를 저장하지 마세요“빠른 기본값”외부 테이블에 열을 추가할 때 (Andrew Dunstan)
빠른 기본값은 그러한 테이블에 대한 로컬 힙 저장소가 존재하지 않기 때문에 쓸모가 없지만 후속 작업을 혼란스럽게 합니다. 다음에서 이러한 카탈로그 항목 생성을 억제하는 것 외에도테이블 변경명령, 다운스트림 코드가 잘못 존재할 때 대처할 수 있도록 조정하세요.
인덱스 상태 플래그가 트랜잭션별로 업데이트되도록 허용(Michael Paquier, Andrey Lepikhov)
이것은 실제로 불변이 아닌 색인 술어를 처리할 때 실패를 방지합니다. 이는 지원되는 사례로 간주되지 않지만 여기서 비트랜잭션 업데이트를 사용하는 원래 이유는 오래전에 사라졌으므로 변경할 수도 있습니다.
다음과 같은 경우 계획 캐시 항목이 손상되지 않도록 하세요.도메인 만들기또는도메인 변경캐시된 계획에 나타남(Tom Lane)
walsender가 최신 복제 명령을 표시하도록 만드세요.pg_stat_activity(톰 레인)
이전에는 Walsender가 최신 SQL 명령을 표시했는데, 이는 대신 복제 작업을 수행하는 경우 혼란스러웠습니다. 이제 SQL 명령과 동일한 기반으로 복제 프로토콜 명령을 표시합니다.
만들다pg_settings.pending_restart해당 항목이 있는 경우 true로 표시postgresql.conf삭제되었습니다(Álvaro Herrera)
pending_restart포스트마스터를 다시 시작하지 않으면 변경할 수 없는 항목이 수정된 경우가 올바르게 표시되었지만 항목이 완전히 제거된 경우는 아닙니다.
새로운 기본을 따르기 위한 새로운 대기의 코너 케이스 오류 수정(Dilip Kumar, Robert Haas)
조건의 좁은 조합에서 대기 장치는 잘못된 WAL 타임라인을 따르려고 시도할 수 토토 커뮤니티.
트랜잭션 중단 기록의 WAL 재생으로 인해 파일 잘림이 발생하는 경우 최소 복구 지점 업데이트(Fujii Masao)
파일 잘림은 되돌릴 수 없으므로 해당 기록 이전 시점에서 복구를 중지하는 것은 더 이상 안전하지 않습니다. 트랜잭션 커밋에 해당하는 사례는 몇 년 전에 수정되었지만 이 사례는 간과되었습니다.
월리시버에서는 오류 후 카탈로그 조회 시도를 피하십시오(Masahiko Sawada, Bharath Rupireddy)
대기 서버의 시작 프로세스가 WAL 도착을 기다리는 동안 종료 신호에 즉시 응답하는지 확인하십시오(Fujii Masao, Soumyadeep Chakraborty)
트랜잭션 커밋 그룹의 구성원이 되지 못한 후 공유 상태를 올바르게 지우기(Amit Kapila)
적절한 타이밍이 주어지면 이후 세션에서 동일한 PGPROC 개체를 재사용할 때 어설션 실패가 발생할 수 토토 커뮤니티.
다른 프로세스에서 동시 쓰기가 발생할 때 잘못된 relmapper 데이터를 읽는 것을 방지하기 위해 잠금 추가(Heikki Linnakangas)
복제 프로토콜 위반 검사 개선(Tom Lane)
논리적 복제 작업자는 유효하지 않거나 순서가 잘못된 복제 명령으로 인해 트리거될 수 있는 사례를 확인하기 위해 Assert를 자주 사용했습니다. 이는 현명하지 못한 일이므로 이러한 테스트를 정기적인 오류 확인으로 승격시키세요.
여러 논리적 복제 작업자가 동일한 테이블을 자르려고 할 때 교착 상태 수정(Peter Smith, Haiying Tang)
추측적 삽입의 논리적 디코딩에서 오류 사례 및 메모리 누수 수정(Dilip Kumar)
오류 발생 후 유효하지 않은 레코드 유형 해시 테이블 항목을 남기지 마십시오(Sait Talha Nisanci)
이로 인해 나중에 충돌이 발생하거나 메모리 누수가 발생할 수 토토 커뮤니티.
일부 오류 사례에서 계획 캐시 참조 누출 수정테이블 생성...실행으로(톰 레인)
병렬 작업자 간에 튜플 설명자를 공유하기 위한 코드의 경쟁 조건 수정(Thomas Munro)
적절한 타이밍이 주어지면 충돌이 발생할 수 토토 커뮤니티.
BackgroundWorkerSlots(Tom Lane)을 릴리스할 때 발생할 수 있는 경쟁 조건 수정
이것은 Intel 하드웨어에서 관찰 가능한 버그를 수정하지 못할 가능성이 높지만 메모리 순서 규칙이 약한 시스템에는 문제가 있을 수 있습니다.
코드 정렬의 잠재적 충돌 수정(Ronan Dunklau)
하나의 코드 경로가 널 포인터를 해제하려고 시도할 수 토토 커뮤니티. 코어 서버의 정렬 사용에서는 케이스에 연결할 수 없는 것처럼 보이지만 확장 프로그램에 의해 트리거될 수 토토 커뮤니티.
SP-GiST 인덱스 삽입 시 무한 루프 방지(Tom Lane)
INCLUDE 열이 리프 인덱스 튜플이 페이지에 맞지 않도록 충분한 공간을 차지하는 경우 text_ops 연산자 클래스는 튜플을 맞추려고 헛되이 무한 루프에 빠지게 됩니다. v11 이전 버전에는 INCLUDE 열이 없지만 어쨌든 이 루핑 방지 수정 사항을 백 패치하세요. 이는 연산자 클래스의 버그에 대한 좋은 방어책처럼 보입니다.
쿼리 취소 요청에 의해 SP-GiST 인덱스 삽입이 종료될 수 있는지 확인(Tom Lane, Álvaro Herrera)
초기화되지 않은 변수 버그 수정PL/pgSQL마치 ~인 것처럼 행동하다INTO절이 지정됨STRICT, 그렇지는 않았지만 (톰 레인)
libpq 인쇄 기능의 메모리 부족 오류로 인해 프로세스를 중단하지 마십시오(Tom Lane)
에ecpg, 허용숫자값INT_MIN(보통 -2147483648)을 정수로 변환합니다(John Naylor)
에psql및 기타 클라이언트 프로그램, 잘못 인코딩된 데이터를 처리할 때 문자열 끝을 오버런하지 않도록 하세요(Tom Lane)
문자열 끝 근처에 잘못 인코딩된 멀티바이트 문자로 인해 다양한 처리 루프가 문자열의 종료 NUL을 지나 실행될 수 있으며 결과는 다음 메모리에 무엇이 있는지에 따라 감지할 수 없는 문제부터 프로그램 충돌까지 다양합니다. 이는 CVE-2006-2313을 연상시키지만 이러한 특정 사례는 흥미로운 보안 결과를 가져오지 않는 것으로 보입니다.
수정pg_dump활성화 상태가 상위 트리거 상태와 다른 분할된 테이블에서 트리거를 올바르게 처리하기 위해(Justin Pryzby, Álvaro Herrera)
피하세요“헤더의 생성 날짜가 잘못되었습니다.”실행 시 경고가 관찰됨pg_restore다른 시간대에서 생성된 아카이브 파일(Tom Lane)
만들다pg_upgrade이전 설치를 계속 진행가장 오래된XIDvalue (베르트랑 드루보)
이전에는 새로운 설치의가장 오래된XID(보통) 즉시 랩어라운드 방지 자동 진공 처리를 강제할 수 있을 만큼 오래된 값으로 설정되었습니다. 이는 성능 관점에서 바람직하지 않습니다. 더 나쁜 것은 큰 값을 사용하는 설치입니다.autovacuum_freeze_max_age업그레이드 후 곧 원치 않는 강제 종료가 발생할 수 토토 커뮤니티.
연장pg_upgrade업그레이드해야 할 확장 프로그램을 감지하고 경고합니다(Bruce Momjian)
이제 다음을 포함하는 스크립트 파일이 생성됩니다.확장 업데이트 변경새 설치에서 기본으로 간주되는 버전으로 확장 기능을 가져오는 데 필요한 명령입니다.
전환 시 문제 방지pg_receivewal압축 및 비압축 WAL 저장소 사이(Michael Paquier)
에contrib/postgres_fdw, 오류 발생 후 카탈로그 조회 시도를 피하세요(Tom Lane)
이것은 일반적으로 작동하지만 오류가 카탈로그 액세스를 작동하지 않게 만드는 오류일 수 있으므로 매우 안전하지 않습니다. 수정의 부작용은 데이터 변환 오류에 대한 메시지가 이제 외부 테이블이나 열의 실제 기본 이름이 아닌 쿼리의 테이블 및 열 별칭(사용된 경우)을 언급한다는 것입니다.
격리 테스트 인프라 개선(Tom Lane, Michael Paquier)
격리 테스트 단계에 주석을 달아 예상 완료 순서를 표시하도록 허용합니다. 이를 통해 경쟁 조건을 방지하기 위해 이전에 사용했던(완전히 성공적이지는 않았지만) 긴 지연 없이 다른 경쟁 테스트 사례에서 안정적인 결과를 얻을 수 있습니다. 따옴표가 없는 식별자를 격리 테스트 세션/단계 이름으로 허용합니다(이전에는 이러한 이름을 모두 큰따옴표로 묶어야 했습니다). 격리 테스트에서 사용되지 않은 단계를 감지하고 경고합니다. 격리 테스트에서 쿼리 결과 표시를 개선합니다. 격리 테스터 제거“시험 실행”모드. Isolationtester 자체에서 메모리 누수를 제거합니다.
캐시 클로버 테스트의 오버헤드 감소(Tom Lane)
수정PL/파이썬의 회귀 테스트를 통과하여 Python 3.10(Honza Horak)
만들다printf("%s", NULL)인쇄(널)충돌하는 대신 (Tom Lane)
이것은 코너 케이스에서 서버 견고성을 향상시켜야 하며 우리의 동기화됩니다.printf공통 라이브러리로 구현.
특정 시점 복구가 a에서 중지될 때 잘못된 로그 메시지 수정롤백 준비됨기록 (사이먼 리그스)
개선테이블 변경잘못된 관계 종류 오류에 대한 메시지(호리구치 쿄타로)
다음을 참조하는 오류 메시지를 명확히 합니다.“음수가 아닌”값 (Bharath Rupireddy)
수정구성더 이상 별도의 API가 없는 OpenLDAP 2.5와 함께 작동합니다.libldap_r도서관 (아드리안 호, 톰 레인)
없을 경우libldap_r라이브러리, 이제 우리는 조용히 가정합니다libldap스레드로부터 안전합니다.
새 타겟 만들기 추가월드빈그리고설치-세계-빈(앤드류 던스턴)
이것들은 다음과 같습니다세계그리고설치세계문서를 작성하거나 설치하지 않는다는 점을 제외하고 각각.
TAP 테스트에 대한 규칙 만들기 수정 (prove_installcheck) PGXS 사용에 대한 작업(Andrew Dunstan)
다가오는 LLVM API 변경에 대비하기 위해 JIT 코드 조정(Thomas Munro, Andres Freund)
LLVM 13은 이전 JIT 컴파일러의 충돌을 일으킬 수 있는 호환되지 않는 API 변경을 수행했습니다.
GSSAPI 라이브러리에서 반환된 문자열이 null로 종료된다고 가정하지 마세요(Tom Lane)
GSSAPI 사양은 문자열 포인터와 길이를 제공합니다. 실제로 문자열 뒤의 다음 바이트는 일반적으로 0이므로 이전 코딩이 실제로 실패하지는 않은 것 같습니다. 하지만 AddressSanitizer 불만사항이 접수되었습니다.
MSVC에서 GSSAPI를 사용하여 빌드 활성화(Michael Paquier)
최신 Kerberos 빌드와의 다양한 비호환성을 수정합니다.
MSVC 빌드에 포함--with-pgport에서 보고한 구성 옵션 세트에서pg_config, 지정된 경우(Andrew Dunstan)