릴리스 노트

PostgreSQL

E.14. 릴리스 12.9

출시 날짜 :2021-11-11

이 릴리스에는 12.8의 다양한 수정 사항이 포함되어 있습니다. Major Release 12의 새로운 기능에 대한 정보는 참조섹션 E.23.

E.14.1. 버전 12.9로의 마이그레이션

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

그러나 물리적 복제를 사용한 설치는 아래의 세 번째 ChangeLog 항목에 설명 된대로 기본 서버 전에 대기 서버를 업토토 베이트해야합니다..

또한, 다음 몇 가지 변화 항목에서 설명 된 바와 같이, 인덱스가 손상 될 수있는 몇 가지 버그가 발견되었습니다. 해당 사례 중 하나가 귀하에게 적용되면 업데이트 후 영향을받을 수있는 인덱스가 권장됩니다.

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

E.14.2. 변화

  • SSL 또는 GSS 암호화 핸드 셰이크 (Tom Lane) 후 서버가 외부 토토 베이를 거부하게합니다.§

    TCP 연결에 토토 베이를 주입 할 수있는 능력이있는 중간 인간은 암호화로 보호 된 토토 베이베이스 세션의 시작 부분에 일부 명확한 텍스트 토토 베이를 제공 할 수 있습니다. 서버가 인증 토토 베이를 요구하지 않은 경우에만 작동하지만 가짜 SQL 명령을 서버로 보내는 것이 남용 될 수 있습니다.

    Postgresql이 문제를보고 한 Jacob Champion 프로젝트. (CVE-2021-23214)

  • makelibpqSSL 또는 GSS 암호화 핸드 셰이크 후 외부 토토 베이 거부 (Tom Lane)§

    TCP 연결에 토토 베이를 주입 할 수있는 능력이있는 중간 인간은 암호화로 보호 된 토토 베이베이스 세션의 시작에 명확한 텍스트 토토 베이를 넣을 수 있습니다. LIBPQ의 행동에 대한 다른 세부 사항은 그 소리보다 더 어렵지만 클라이언트의 첫 몇 가지 쿼리에 가짜 응답을 주입하는 데 남용 될 수 있습니다.

    Postgresql이 문제를보고 한 Jacob Champion에게 프로젝트 감사합니다. (CVE-2021-23222)

  • 부분 WAL 레코드 (Álvaro Herrera)로 끝나는 WAL 세그먼트를 배송 한 후 1 차 충돌이 발생하는 경우 물리 복제 수정§ § §

    기본이 나머지 불완전한 WAL 레코드 작성을 마치기에 충분히 오래 살아남지 못한 경우, 이전 충돌 회복 논리는 불완전한 WAL 레코드의 시작부터 시작하여 WAL을 다시 올려 놓았습니다. 대기 서버에는 이미 해당 WAL 세그먼트의 사본이있을 수 있으므로 문제가 발생합니다.

    이 업데이트를 적용 할 때 기본 이전에 대기 서버를 업데이트하는 것이 가장 좋습니다. 따라서 기본이 충돌하는 경우이 새로운 WAL 레코드 유형을 처리 할 수 ​​있습니다..

  • 수정동시에 색인 생성최신 준비된 거래를 기다리려면 (Andrey Borodin)§

    방금 준비된 트랜잭션에 의해 삽입 된 행은 새 인덱스에서 생략 될 수 있으므로 쿼리가 인덱스에 의존하여 그러한 행을 놓치게됩니다. 이 유형의 문제에 대한 이전 수정은를 설명하지 못했습니다.거래 준비계속 진행중인 명령동시에 색인 생성그들을 확인했습니다. 이전과 마찬가지로 준비된 트랜잭션을 가능하게하는 설치 (max_prepared_transactions> 0),이 문제가 구축 될 때 발생한 경우 동시에 제작 된 인덱스를 다시 알리는 것이 좋습니다.

  • 백엔드가 동시에 구축되는 색인에 새로운 행에 대한 항목을 추가하지 못하는 레이스 조건을 피하십시오 (Noah Misch, Andrey Borodin)§

    현장에서는 드물지만이 경우는 잠재적으로 구축되거나 구사 된 색인에 영향을 줄 수 있습니다동시에옵션. 그러한 색인이 올바른지 확인하기 위해 그러한 지수를 다시 알리는 것이 좋습니다.

  • 수정float4andfloat8해시 기능 NANS (Tom Lane)에 대한 균일 한 결과를 생성하는 기능§ § §

    이후Postgresql의 부동 소수점 유형은 모든 Nans가 동일하다고 간주합니다. 해시 함수는 IEEE 754 표준에 따라 NANS 인 모든 비트 패턴에 대해 동일한 해시 코드를 생성하는 것이 중요합니다. 이로 인해 해시 인덱스와 해시 기반 쿼리 플랜이 비 캐논 NAN 값에 대한 잘못된 결과를 생성 할 수 있음을 의미합니다.'-nan':: float8대부분의 기계에서 그러한 값을 생성하는 한 가지 방법입니다.) 이러한 값을 포함 할 가능성이있는 경우 부동 소수점 열에서 해시 인덱스를 다시 인덱스하는 것이 좋습니다..

  • 충돌 회복 중 토토 베이 손실 방지테이블 스페이스 생성, 언제Wal_Level = 최소(Noah Misch)§

    서버가 사이에 충돌 한 경우테이블 스페이스 생성그리고 다음 체크 포인트에서, 재생은 새로운 테이블 스페이스 디렉토리의 내용을 완전히 제거하여 후속 WAL 리플레이에 의존하여 해당 디렉토리의 모든 것을 복원합니다. 이것은 WAL을 작성하는 최적화와 심하게 상호 작용합니다 (예 : 예제는입니다.COPY방금 만들어진 테이블로). 이러한 최적화는 만 적용됩니다.Wal_Levelis최소, V10 이상의 기본값이 아닙니다.

  • 분할 된 테이블에 부착되거나 분리되는 테이블에 대해 관계 캐시가 무효화되어 있는지 확인하십시오 (Amit Langote, Álvaro Herrera)§

    이 감독은 후속 인서트/업토토 베이트가 파티션에 직접 해결 될 수 있지만 현재 존재하는 세션에서만 오해 할 수 있습니다.

  • a 관계 캐시가 무효화되어 있는지 확인하십시오모든 테이블의 경우간행물 (Hou Zhijie, Vignesh C)§

    이 감독은 현재 존재하는 모든 세션이 종료 될 때까지 부적절한 복제 동작으로 이어질 수 있습니다.

  • 지정되지 않은 유형 수정 자 (Tom Lane)를 사용하여 동일한 유형으로 캐스트를 폐기하지 마십시오.§

    예를 들어, 열f1is type숫자 (18,3), 파서는 단순히 캐스트를 버리는 데 사용되었습니다f1 :: 숫자, 런타임 효과가 없다는 이유로. 그것은 사실이지만, 표현식의 노출 된 유형은 여전히 ​​평범한 것으로 간주되어야한다.숫자, 아님숫자 (18,3). 이것은 재귀와 같은 더 큰 구조물의 유형을 올바르게 해결하는 데 중요합니다Unions.

  • 복합재를 통한 도메인 어레이에서 요소 필드의 업데이트 수정 (Tom Lane)§

    a 명령업토토 베이트 탭 세트 fld [1] .subfld = val배열의 요소가 일반 복합재가 아닌 도메인 인 경우 실패했습니다.

  • 현재 데이터베이스의 인코딩이 지원되지 않으면 ICU 콜라이트 생성을 허용하지 않습니다 (Tom Lane)§

    이전에는 허용되었지만, 콜레이션 조회가 작동하는 방식으로 인해 콜레이션을 참조 할 수 없었습니다. Collation을 사용할 수도없고 심지어 떨어 뜨릴 수도 없습니다.

  • 숫자에서 정밀도의 코너 케이스 손실 수정power ()(Dean Rasheed)§

    첫 번째 인수가 1에 매우 가까울 때 결과가 부정확 할 수 있습니다.

  • 내부 괄호를 캡처 한 정규 표현 오류 방지{0}(Tom Lane)§

    정규 표현식과 같은(.) 0 ... \ 1Drew잘못된 역전 번호. 그러나 Perl과 같은 다른 Regexp 엔진은 불평하지 않으며, 그 문제에 대해 우리는 밀접하게 관련된 경우에도 우리의 것이 아닙니다.

  • 정규 표현을 방지하지 않아야 할 때 가끔 일치하는 것을 방지합니다 (Tom Lane)§

    Regexp 엔진은 부분 일치를 거부 한 후 괄호를 캡처하기위한 일치 토토 베이를 지우는 데 부주의했습니다. 이를 통해 나중에 정의 된 지시자가 부족한 곳에서 실패 해야하는 장소에서 일치 할 수 있습니다.

  • 반복 노드 내부의 역 참조로 정규 표현식 성능 버그 수정 (Tom Lane)§

    잘못된 백로 추적 로직으로 인해 일치를 찾는 데 소요되는 지수 시간이 발생할 수 있습니다. 다행히도 다른 최적화에 의해 대부분의 경우 문제가 가려집니다.

  • 잘못된 결과 수정시간대에서A에 적용시간대가있는 시간value (Tom Lane)§

    대상 시간 구역이 동적 시간대 약어에 의해 지정된 경우 결과가 잘못되었습니다 (즉, 고정 UTC 오프셋이 아닌 정규 영역 이름과 동등한 것으로 정의되는)..

  • 상속 아동 관계 (Tom Lane)에 대한 자리 표시기의 잘못된 전송 수정§

    이 오류는 어설 션 실패를 초래하거나 외부 조인의 무효가 될 수없는 측면에 파티션 또는 상속 된 테이블을 사용한 쿼리를 잘못 계획 할 수 있습니다..

  • 열 전용 통계를 사용하여 열 범위 (Tom Lane)§

    코너 케이스가 있습니다.분석MCV 목록이 관찰 된 모든 값을 설명하지 않더라도 MCV (Most-Common-Values) 목록을 작성하지만 히스토그램은 아닙니다. 이 경우 플래너가 MCV 목록 만 사용하여 열 값의 범위를 추정하지 못하도록합니다..

  • Subtransaction (Bertrand Drouvot) 내부의 포털 스냅 샷의 복원 수정§

    절차가 트랜잭션을 저지르거나 롤백하면 다음으로 중요한 조치가 새로운 서브 트랜잭션 내부에 있으면 스냅 샷 관리가 잘못되었고 매달려 포인터와 충돌 가능성이 높아졌습니다. PL/PGSQL의 전형적인 예는 A입니다.커밋즉시시작 ... 예외쿼리를 수행하는 블록.

  • 스냅 샷 (Dilip Kumar)을 내보낸 후 트랜잭션이 실패하면 올바르게 정리하십시오§

    이 감독은 같은 세션이 스냅 샷을 다시 내보내려고 시도한 경우에만 문제를 일으킬 것입니다. 이에 대한 가장 큰 시나리오는 복제 슬롯을 생성 한 다음 다른 복제 슬롯을 생성하는 것입니다.

  • 대기 서버에서 오버 플로우 타선 추적의 랩 어라운드 방지 (Kyotaro Horiguchi, Alexander Korotkov)§

    이 감독은 대기 서버에서 상당한 성능 저하 (과도한 서브 트랜스 슬루 트래픽으로 나타냄)를 유발할 수 있습니다.

  • 대기 서버 (Michael Paquier, Andres Freund)를 홍보하는 동안 준비된 트랜잭션이 올바르게 설명되어 있는지 확인하십시오.§

    동시에 실행되는 세션으로 취한 스냅 샷에서 준비된 트랜잭션을 생략 할 수있는 좁은 창이있었습니다. 해당 세션이 스냅 샷을 사용하여 데이터 업데이트를 수행하면 잘못된 결과 또는 데이터 손상이 발생할 수 있습니다.

  • 커서를 되 감는 것을 거부합니다스크롤 없음|with hold옵션 (Tom Lane)§

    우리는 오랫동안 a에서 거꾸로 가져 오는 금지가 있습니다.스크롤 없음커서, 그러나 역사적 이유로 금지는 우리가 쿼리를 완전히 되 돌린 다음 앞으로 다시 가져 오는 경우로 확장되지 않았습니다. 이 예외는 불일치, 특히 되감기에 필요한 모든 데이터를 저장하지 않았을 수도있는 보류 커서의 경우 불일치로 이어집니다.

  • 저장하는 동안 가능한 고장 수정with hold트랜잭션 종료시 커서, 이미 완료에 읽은 경우 (Tom Lane)§

  • 최대 허용 길이 (Tom Lane)로 성장한 관계의 감지 수정§

    2^32-1 블록의 한계를지나 테이블을 연장하거나 색인하려는 시도는 거부되었지만 일관되지 않은 내부 상태가 생성되는 것을 막기에는 충분하지 않습니다.

  • 확장 할 때 데이터 수정 CTE의 존재를 올바르게 추적합니다대신Rule (Greg Nancarrow, Tom Lane)§

    이전에 실패한 실패로 인해 평행 한 계획을 쉽게 선택하는 것과 같은 문제가 발생할 수 있습니다.

  • 확장 통계 개체 (Tomas Vondra)에서 권한 실패에 대한 잘못된보고 수정§ §

    일반적으로 생성 된 코드캐시 조회 오류의도 된 메시지 대신.

  • 병렬 작업자 (Greg Nancarrow)의 잘못된 스냅 샷 처리 수정§

    이 감독은 트랜잭션 격리 수준이 |반복 가능한 읽기.

  • 과도 테이블 (Bertrand Drouvot)의 토스트 테이블 변경 사항을 올바르게 무시하려면 논리적 디코딩 수정§

    논리적 디코딩은 일반적으로 AN과 같은 과도 테이블의 변화를 무시합니다Alter Table힙 재 작성. 그러나 해당 필터링은 관련 토스트 테이블에 적용되지 않았으므로 게시중인 테이블을 다시 작성할 때 오류가 발생할 수 있습니다.

  • Walreceiver 프로세스가 종료되기 전에 필요한 모든 아카이브 알림 파일을 생성하는지 확인하십시오 (Fujii Masao)§

    Walreceiver가 WAL 세그먼트 경계에서 정확히 빠져 나온 경우, 마지막으로 호출 된 세그먼트에 대한 알림 파일을 만들지 못하므로 대기에서 해당 세그먼트의 아카이브를 지연시킵니다..

  • 잠금을 피하십시오oldandNEW사용하는 규칙의 의사 관계업토토 베이트 선택(Masahiko Sawada, Tom Lane)§

  • Parser의 집계 처리 수정필터Clauses (Tom Lane)§

    필터표현은 평범한 부울 열이며, 골재의 의미 론적 수준은 잘못 결정되어 스펙에 맞지 않는 행동으로 이어질 수 있습니다. 인 경우필터표현 자체는 부울 회복 집계이며, 오류는 던져져야하지만 실행시 충돌이 발생했을 가능성이 높습니다..

  • 테이블을 바꿀 때 올바른 잠금 레벨이 사용되는지 확인하십시오 (Nathan Bossart, Álvaro Herrera)§ §

    역사적 이유로Alter Index ... Rename모든 종류의 관계에 적용될 수 있습니다. 인덱스 이름을 바꾸는 데 필요한 잠금 레벨은 테이블이나 다른 종류의 관계를 바꾸는 데 필요한 것보다 낮지 만 코드는이 문제가 발생하여 명령이 철자가 될 때마다 약한 잠금 레벨을 사용합니다Alter Index.

  • LLVM (Andres Freund, Justin Pryzby) 내에서 오류 후 LLVM 상태를 정리하지 마십시오.§

    이것은 치명적인 LLVM 오류 후 백엔드 종료 중 충돌 가능성을 방지합니다.

  • 동시에 삭제되는 객체를 소유 한 역할을 떨어 뜨릴 때 널 포인터-언론-회의를 피하십시오 (Álvaro Herrera)§

  • 예방스냅 샷 참조 누출경고lo_export ()또는 관련 함수 실패 (Heikki Linnakangas)§ §

  • SP-Gist 인덱스의 스캔이 통계보기 (Tom Lane)에서 계산되는지 확인하십시오.§

    튜플 당 카운터가 올바르게 발전되었지만 SP-Gist 코드에서 인덱스 스캔 횟수를 증가 시켰습니다..

  • 관련 대기 간격을 다시 계산하면복구 _min_apply_delay회복 중에 변경되었습니다 (Soumyadeep Chakraborty, Ashwin Agrawal)§

  • a 인 경우 무한 루프 수정Simplehash.h해시 테이블에 도달합니다. 2^32 요소 (Yura Sokolov)§

    이 버그가 실제로 필요한대로 타격을받지 않은 것 같습니다work_mem기존의 사용을위한 수백 개의 기가 바이트 설정Simplehash.h.

  • 확장 통계 계산 중 메모리 소비 감소 (Justin Pryzby, Tomas Vondra)§ §

  • 허용 설정migne_pagestoon언제shared_memory_typeisSYSV(Thomas Munro)§

    이전 에이 설정은 허용되었지만 구현이 부족한 것은 아무것도하지 않았습니다.

  • 수정ECPG이후에 올바르게 복구하려면malloc ()연결을 설정하는 동안 실패 (Michael Paquier)§

  • pl/pgsql의 주장에서 불리는 안정적인 기능의 misevaluation 수정Call성명서 (Tom Lane)§

    오래된 스냅 샷으로 호출되어 세션의 최상위 명령이 시작된 이후로 데이터베이스 변경이 표시되지 않도록했습니다..

  • 허용출구PL/PGSQL 루틴 (Tom Lane)에서 가장 바깥 쪽 블록 밖으로§

    루틴에 명시 적이 필요하지 않은 경우return,이 사용량은 유효하지만 거부되었습니다.

  • 제거PG_CTL'생성 된 명령의 총 길이 (Phil Krylov)에 대한 하드 코딩 한도§

    예를 들어, 이것은 우체국 장에게 전달할 수있는 명령 줄 옵션의 수에 대한 제한을 제거합니다. 개별 경로 이름PG_CTLPostmaster Executable의 이름 또는 토토 베이 디렉토리 이름과 같은 거래는 여전히로 제한됩니다maxpgpath대부분의 경우 바이트.

  • 수정pg_dumpgrobal이 아닌 기본 권한을 올바르게 덤프하려면 (Neil Chen, Masahiko Sawada)§

    글로벌 인 경우 (무제한)기본 권한 변경사령부는 현재 일부 독점 특권을 취소했습니다.execute함수의 경우기본 권한 변경명령은 선택한 역할 또는 스키마에 대한 해당 권한을 다시 부여했습니다.pg_dump제한된 특권 보조금을 올바르게 덤프하지 못했습니다.

  • makepg_dump덤프 할 파티션 된 테이블에서 공유 잠금 장치 (Tom Lane)§

    이 감독은 일반적으로 한 번 이후로 꽤 무해했습니다pg_dump잎 파티션을 잠그 셨는데, 이는 분할 된 테이블 자체에서 상당한 DDL을 방지하기에 충분합니다. 그러나 관련 잠금이 유지되지 않기 때문에 아이가없는 분할 테이블을 버릴 때 문제가 발생할 수 있습니다.

  • 개선pg_dump의 성능은 RLS 정책에 대한 테이블 당 쿼리를 피하고 반복적 인 호출을 피함으로써의 성능format_type ()(Tom Lane)§ §

    이러한 변경 사항은 로컬 서버에서 덤프 할 때 한계 개선 만 제공하지만 원격 서버의 덤프는 네트워크 왕복이 적기 때문에 실질적으로 이익을 얻을 수 있습니다..

  • 충돌 수정pg_dumpPre-8.3 서버 (Tom Lane)에서 트리거 정의를 덤프하려고 할 때§

  • 잘못된 파일 이름 수정PG_RESTORE의 잘못된 큰 개체 TOC 파일에 대한 오류 메시지 (Daniel Gustafsson)§

  • pgbench소켓 레벨 고장 후에 0이 아닌 상태로 종료합니다 (Yugo Nagata, Fabien Coelho)§

    원하는 동작은 실행을 끝내고 상태 2로 종료하는 것입니다. 또한 그러한 오류의보고를 수정합니다.

  • 고장contrib/btree_ginindexes on"char"(아님char (n)) 열, indexscan을 사용하는 경우<또는<=운영자가 수행됩니다 (Tom Lane)§

    그러한 인덱스 스캔은 모든 항목을 반환하지 못했습니다.

  • 변경contrib/pg_stat_statements읽기쿼리 텍스트최대 1GB (Tom Lane) 단위의 파일§

    이러한 큰 쿼리 텍스트 파일은 매우 드문 일이지만, 발생하면 이전 코딩은 Windows 64에서 실패합니다 (2GB 이상의 개별 읽기 요청을 거부).

  • 언제Contrib/Postgres_FDW데이터 변환 오류를보고하려고합니다 (Tom Lane)§

  • RISC-V 아키텍처 (Marek Szuba)에 대한 스핀 락 지원 추가§

    이것은 해당 플랫폼의 합리적인 성능에 필수적입니다.

  • 지원 OpenSSL 3.0.0 (Peter Eisentraut, Daniel Gustafsson, Michael Paquier)§ § § §

  • OpenSSL Bio (I/O 추상화)에서 올바른 유형 식별자 설정Postgresql(Itamar Gafni)§

    이 감독은 아마도 OpenSSL 설치 감사와 같은 작업을 수행하는 코드에만 중요합니다. 그러나 명목상 OpenSSL API를 위반 한 것입니다.

  • 수정pkg-config다시 정적 링크를 지원하는 파일libpq(Peter Eisentraut)§

  • makepg_regexec ()범위 외부에 대한 견고성search_start매개 변수 (Tom Lane)§

    returnreg_nomatchsearch_start는 문자열의 끝입니다. 이 사례는 아마도 코어 내에서 도달 할 수 없을 것입니다Postgresql, 그러나 확장자는 매개 변수 값에 대해 더 부주의 할 수 있습니다.

  • getSharedsecurityLabel ()NET Critical Relation Cache entries (Jeff Davis)를 구축하지 않은 새로 시작된 세션에서 사용할 수 있습니다.§

  • CLDR 프로젝트의 데이터를 사용하여 Windows 시간대 이름을 Iana Time Zones (Tom Lane)에 매핑합니다§ § §

    Windows에서 실행할 때initdb새 클러스터를 설정하려는 시도TimeZone시스템의 일반적인 시간대와 일치하는 Iana 시간대의 매개 변수. 우리는 몇 년 전에 생성 한 매핑 테이블을 사용하고 있었고 적절하게 만 업토토 베이트했습니다.

  • 시간대 토토 베이 파일 업데이트TZDATAFiji, Jordan, Palestine 및 Samoa의 DST 법률 변경에 대한 릴리스 2021E, 바베이도스, 쿡 제도, 가이아나, 니에, 포르투갈 및 통가에 대한 역사적 교정. (Tom Lane)§

    또한 태평양/엔더 베리 구역의 이름이 Pacific/Kanton으로 이름을 바꿨습니다. 또한 1970 년부터 아프리카/아크라, 아메리카/아티 코칸, America/Blanc-Sablon, America/Creston, America/Curacao, America/Nassau, America/Port_of_spain, Antarctica/Dumontdurville 및 Antartica/owa/owoa/owa/owa/owa/owa와 같은 인근 지역의 더 인기있는 구역으로 합병되었습니다.