토토 캔 노트

토토 캔

E.1. 토토 캔 9.6.24

출시 날짜 : 2021-11-11

이 토토 캔에는 9.6.23의 다양한 수정 사항이 포함되어 있습니다. 9.6 주요 토토 캔의 새로운 기능에 대한 정보는 참조섹션 E.25.

이것은 마지막이 될 것으로 예상됩니다토토 캔9.6.x 시리즈의 출시. 사용자는 곧 새로운 토토 캔 지점으로 업데이트하도록 권장됩니다.

E.1.1. 버전 9.6.24로의 마이그레이션

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

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

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

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

E.1.2. 변화

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

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

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

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

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

    the토토 캔이 문제를보고 한 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)에 대한 균일 한 결과를 생성하는 기능

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

  • 충돌 회복 중 데이터 손실 방지테이블 스페이스 생성, 언제Wal_level = 최소(Noah Misch)

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

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

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

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

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

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

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

  • 정규 표현식을 방지하지 말아야 할 때 가끔 일치하지 않도록 (Tom Lane)

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

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

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

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

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

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

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

  • 대기 서버에서 오버플로 된-변환 추적의 랩 어라운드 방지 (Kyotaro Horiguchi, Alexander Korotkov)

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

  • 대기 서버 홍보 중에 준비된 거래가 올바르게 설명되어 있는지 확인하십시오 (Michael Paquier, Andres Freund)

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

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

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

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

    이전에 실패한 실패는 부적절한 계획을 선택하는 것과 같은 문제로 이어질 수 있습니다.

  • Walreceiver 프로세스가 종료되기 전에 필요한 모든 아카이브 알림 파일을 생성해야합니다 (Fujii Masao)

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

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

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

    인 경우필터표현은 일반 부울 컬럼이며, 집계의 의미 론적 수준은 잘못 결정되어 경비적 행동으로 이어질 수 있습니다. 인 경우필터표현은 자체가 부울 회복 집계입니다. 오류는 던져져야하지만 실행시 충돌이 발생했을 가능성이 높습니다..

  • 동시에 삭제되는 객체를 소유 한 역할을 삭제할 때 무효 점-포인터-언론의 충돌을 피하십시오 (Álvaro Herrera)

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

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

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

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

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

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

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

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

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

  • 수정pg_dump비 글로벌 기본 권한을 올바르게 덤프하려면 (Neil Chen, Masahiko Sawada)

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

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

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

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

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

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

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

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

  • yul-pointer 충돌 수정Contrib/Postgres_FDW데이터 변환 오류를보고하려고합니다 (Tom Lane)

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

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

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

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

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

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

  • getSharedsecurityLabel ()아직 중요한 관계 캐시 항목 (Jeff Davis)을 아직 구축하지 않은 새로 시작된 세션에서 사용할 수 있습니다.

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

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

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

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