릴리스 노트

PostgreSQL

E.5. 릴리스 16.4#

출시 날짜 :2024-08-08

이 릴리스에는 16.3의 다양한 수정 사항이 포함되어 토토 커뮤니티. Major Release 16의 새로운 기능에 대한 정보는 참조섹션 E.9.

E.5.1. 버전 16.4로의 마이그레이션#

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

그러나 16.3 이전 버전에서 업그레이드하는 경우 참조하십시오.섹션 E.6.

E.5.2. 변화#

  • 무단 코드 실행 방지pg_dump(Masahiko Sawada)§

    비 임시 객체를 생성하고 삭제할 수있는 공격자는 동시에 실행될 SQL 코드를 주입 ​​할 수 토토 커뮤니티pg_dump역할의 특권과의 세션pg_dump(종종 슈퍼업자입니다). 공격에는 시퀀스 또는 유사한 객체를 악성 코드를 실행하는 뷰 또는 외국 테이블로 대체하는 것이 포함됩니다.thegrict_nonsystem_relation_kind비 지적 뷰의 확장과 외국 테이블에 대한 액세스를 비활성화하고 가르치는 것은pg_dump사용 가능한 경우 설정합니다. 공격은 둘 다에만 방지됩니다.pg_dump그리고 덤프하는 서버는이 수정을 할 수있을 정도로 새롭습니다.

    thePostgreSQL프로젝트이 문제를보고 해 주신 Noah Misch에게 감사드립니다. (CVE-2024-7348)

  • 오른쪽 합병의 잘못된 결과를 피하십시오.§

    내부 관계가 고유 한 결합 키를 갖는 것으로 알려진 경우, 외부 관계에 복제 된 결합 키가있을 때 병합이 잘못 행동 할 수 토토 커뮤니티..

  • 무한 루프 방지진공(Melanie Plageman)§

    기본 실행중인 트랜잭션이 기본에 다시 연결된 연결이 끊어진 대기 서버 후 가능했습니다.진공어떤 튜플이 제거 될 수 있는지 혼란스러워하는 기본에서 무한 루프가 발생합니다.

  • 테이블에 파티션으로 테이블을 첨부 한 후 실패 수정, 이전에 상속 재료 어린이 (Álvaro Herrera).§

  • 수정Alter Table Detach Partition일관되지 않은 인덱스 기반 제약과 관련된 경우 (Álvaro Herrera, Tender Wang)§ §

    파티션 된 테이블에 제약과 관련이없는 색인이 있지만 파티션에는 동등한 인덱스가있는 경우 파티션을 분리하여 오작동하여 전분의 제약 조건을 부정확하게 남겨 둡니다.coninhcount값. 이것은 해당 제약을 추가로 조작하는 동안 문제를 일으킬 것입니다.

  • 파티션 치기 설정 중Alter Table Detach Partition 동시에(Álvaro Herrera)§ §

    executor는 분할 된 테이블에서 쿼리 계획과 실행 사이에 파티션이 분리 될 수 없다고 가정했습니다. 이것은의 도입 이후 더 이상 사실이 아닙니다파티션's동시에옵션, 사용될 때 쿼리 실행이 일시적으로 실패 할 수있게합니다.

  • 분할 된 테이블을 올바르게 업데이트pg_class.reltuples마지막 자식 파티션이 떨어진 후 ZERO (Noah Misch)§

    첫 번째분석해당 파티션 된 테이블에서 업데이트해야합니다Relhassubclassreltuples손실 할 업데이트.

  • 프로 시저에 대한 다형성 출력 인수의 처리 수정 (Tom Lane)§ §

    SQL명령문은 그러한 인수에 대한 올바른 데이터 유형을 해결하지 않았으며와 같은 오류로 이어집니다.유형의 값을 표시 할 수 없습니다또는 심지어 명백한 충돌. (하지만inpl/pgsql올바르게 일했습니다.)

  • a에서 호출 된 안정적인 함수의 동작 수정성명서의 인수 목록 (Tom Lane)§

    는 원자 컨텍스트 내에 있으며 (예 : 외부 트랜잭션 블록이 있음), 그러한 함수는 잘못된 스냅 샷으로 전달되어 외부 트랜잭션이 시작된 이후로 수정 된 행의 오래된 값을 볼 수 있습니다..

  • ISO-8601의 입력 수정확장타입 시간 형식TimeTIMETZ(Tom Lane)§

    예 : 재발 사건T12 : 34 : 56.

  • 정수 오버플로 감지Money계산 (Joseph Koshakow)§

    |Money오버플로를 확인한 유형은 오버플로를 확인하여 넘쳐나는 사례에 대해 조용히 잘못된 답변을 제공 할 것입니다.

  • 스케일 인수의 과도한 공격적인 클램핑 수정round(numeric)Trunc (Numeric)(Dean Rasheed)§

    이 함수는 척도 인수를 +/- 2000으로 클램핑했지만 더 커질 수있는 유효한 사용 사례가 토토 커뮤니티. 기능은 그러한 경우에 잘못된 결과를 반환했습니다.숫자.

  • 결과 수정 결과pg_size_pretty ()가능한 최소에 적용되는 경우bigintvalue (Joseph Koshakow)§

  • 예방PG_SEVERENCE_LAST_VALUE ()대기 서버 및 기타 세션의 임시 시퀀스 (Nathan Bossart)에서 실패한 시퀀스에서 실패하지 못했습니다.§

    오류를 던지는 대신이 경우에 NULL을 반환합니다.

  • 무시 된 연산자의 구문 분석 수정websearch_to_tsquery ()(Tom Lane)§

    매뉴얼에 따라의 구두점websearch_to_tsquery ()특별한 대시 및 따옴표를 제외하고는 무시됩니다. 그러나 괄호와 몇 가지 다른 캐릭터가 바로 앞에 나타납니다또는원인또는|또는예상대로 운영자.

  • 새로운 배열 치수를 계산하는 동안 다른 정수 오버플로 케이스 감지 (Joseph Koshakow)§

    배열 치수 적용 거부[-2147483648 : 2147483647]빈 배열로. 이것은 CVE-2023-5869와 밀접한 관련이 있지만 배열이 여전히 비어 있기 때문에 무해한 것처럼 보입니다.

  • |strnxfrm ()(Jeff Davis)§

    비 결정적 콜라주의 일부 코드 경로는와 같은 오류로 실패 할 수 토토 커뮤니티.pg_strnxfrm() returned unexpected result.

  • 새로운 카탈로그 캐시 항목의 또 다른 사례를 감지하면서 필드 (Noah Misch)§

    카탈로그 튜플에서 외부 필드를 확장하는 동안 내장 업데이트가 발생하여 놓칠 수 있으며, 현장 변경이 부족하지만 부실한 것으로 알려지지 않은 카탈로그 캐시 항목으로 이어집니다. 이것은에서만 가능합니다.pg_database카탈로그, 따라서 효과는 좁지 만 오해가 가능합니다.

  • 대상 뷰 열의 업데이트 가능성을 올바르게 확인하십시오삽입 ... 기본값(Tom Lane)§

    그러한 열이 업데이트되지 않으면 오류를보고해야합니다. 그러나 수표가 놓친 후 나중에 코드는와 같은 도움이되지 않는 오류를보고합니다.속성 번호NView TargetList에서 찾을 수 없음.

  • 잘못된 재귀 쿼리 (Tom Lane)에 대한 도움이되지 않는 내부 오류를보고하지 마십시오.§

    a 시점 오류를 던지도록 오류 점검 순서를 재정렬합니다.재귀쿼리는의 두 번째 암에 자체 참조가 없습니다Union이지만와 같은 다른 곳에서는 하나의 자체 참조가 토토 커뮤니티주문 by.

  • 잠금 시퀀스 중Alter Table Set Logged | Unlogged(Noah Misch)§

    이 명령은 테이블과 함께 테이블의 소유 시퀀스의 지속성을 변경하지만 그렇게하면서 시퀀스에서 잠금을 얻지 못했습니다. 이것은 동시의 영향을 잃을 수 토토 커뮤니티nextVal ()전화.

  • 대기열이 있으면 오류를 던지지 마십시오이후트리거가 더 이상 존재하지 않음 (Tom Lane)§

    트랜잭션이 연기 대기하는 작업을 실행할 수 토토 커뮤니티이후나중에 실행을위한 트리거, 그 전에 트리거를 떨어 뜨립니다. 이전에 이것은와 같은 이상한 오류로 이어졌습니다.트리거를 찾을 수 없음nnnn. 트리거가 실행되었을 때 방아쇠가 더 이상 존재하지 않으면 조용히하지 않는 것이 낫습니다.

  • 제거 실패 수정PG_INIT_PRIVS테이블이 떨어질 때 열 수준 권한에 대한 항목 (Tom Lane)§

    19067_19333pg_dump그 관계를위한 덤프.

  • 중재인 지수 선택 수정충돌원하는 지수에 표현식 또는 predicates (Tom Lane)가있는 경우§

    쿼리를 사용하는 경우충돌업데이트 가능한보기를 통해 대상 테이블에 액세스하면충돌 사양과 일치하는 고유 또는 제외 제약 조건이 없습니다, 일치하는 인덱스가 존재하더라도.

  • 다른 세션의 임시 테이블 수정 거부Alter Table(Tom Lane)§

    권한 점검은 일반적 으로이 사건이 발생하는 것을 방지하지만 자녀가 다른 세션의 임시 테이블 인 부모 테이블을 변경하여이를 도달 ​​할 수 토토 커뮤니티. 그러한 아동 테이블이 다른 세션에 속한다는 것을 알게되면 오류를 던지십시오.

  • 표현식에 대한 확장 된 통계 처리 수정통계와 같은 테이블 작성(Tom Lane)§

    the생성명령은 통계 표현식의 열 참조를 새 테이블의 수분이없는 열 번호로 조정하지 못했습니다. 이로 인해 나중에 문제가 발생할 수있는 무효 통계 객체가 발생했습니다.

  • |min ()또는max ()집계 (Tom Lane)§

    경우에 따라 외부 쿼리의 한 줄에서 계산 된 집계 결과는 나중에 적용되지 않아야 할 때는 재사용 할 수 토토 커뮤니티. 이것은 외부 쿼리가 사용할 때만 발생하는 것으로 보입니다별도의해시 집계로 구현되었지만 다른 경우가있을 수 토토 커뮤니티.

  • 위치 매개 변수 (Erik Wienhold)에서의 재 녹화 밑줄§

    v16에 따라 정수 리터럴에 밑줄이 포함되어 토토 커뮤니티. 이 변경은와 같은 입력을 초래했습니다.$1_234단일 토큰으로 간주되지만 올바르게 작동하지 않았습니다. 매개 변수 기호가있는 원래 정의로 되돌리는 것이 낫습니다$뒤 따르는 숫자.

  • JIT 인쇄 된 백엔드 함수가 오류를 던질 때 충돌하지 마십시오 (Tom Lane)§

    오류 상태는 JIT 통신 코드 (오류 위치 문자열)를 고정하는 동적으로로드 된 모듈로의 포인터를 포함 할 수 토토 커뮤니티. 일부 코드 경로에서는 오류 보고서가 처리되기 전에 모듈이 언로드 될 수 있으며 위치 문자열에 액세스 할 때 SIGSEGV가 발생합니다.

  • 행동 변화에 대처libxml2버전 2.13.x (Erik Wienhold, Tom Lane)§

    특히, 우리는 이제 억제합니다청크는 균형이 잘 잡혀 있지 않습니다오류libxml2, 그것이보고 된 유일한 오류가 아니라면. 이것은 오류 보고서가 2.13.x와 이전 사이에 일관되게 만드는 것입니다libxml2버전. 이전 버전에서는 그 메시지가 거의 항상 중복되거나 완전히 잘못되었으므로 2.13.x는보고 된 사례 수를 크게 줄였습니다.

  • 핫 스탠드버 서버 (Heikki Linnakangas)를 시작할 때 준비된 트랜잭션의 하위 전환 처리 수정§

    셧다운 체크 포인트 월드 레코드에서 대기 재생을 시작할 때, 준비되었지만 아직 기본에 저지른 트랜잭션은 여전히 ​​진행중인 것으로 올바르게 이해됩니다. 그러나 준비된 트랜잭션의 하위 트랜잭션 (SavePoints 또는에 의해 생성됩니다.pl/pgsql예외 블록)은 설명되지 않았으며 중단 된 것으로 취급 될 것입니다. 준비된 거래가 나중에 저지른 경우 불일치로 이어졌습니다.

  • 논리 복제 슬롯의 잘못 초기화 방지 (Masahiko Sawada)§

    경우에 따라 WAL 스트림 내 복제 슬롯의 시작점이 트랜잭션 내에서 한 지점으로 설정되어 어설 션 실패 또는 잘못된 디코딩 결과를 초래할 수 있습니다.

  • 피하기통계를 한 번만 삭제할 수 토토 커뮤니티복제 슬롯 생성 및 드롭 중 오류 (Floris van Nee)§

  • 논리적 복제에서 리소스 누출 수정 WAL Sender (Hou Zhijie)§

    Walsender 프로세스는 파티션이 파티션 된 테이블과 물리적으로 다른 행 유형을 갖는 파티션 된 테이블의 변경 사항을 게시 할 때 메모리가 유출됩니다..

  • 알림 또는 sinval 인터럽트 (Tom Lane) 서비스 후 메모리 누출을 피하십시오.§

    이러한 이벤트의 처리 함수는 현재 메모리 컨텍스트를 TopMemoryContext로 전환하여 잘못된 설정이 교체되기 전에 할당 된 데이터의 세션 리포지브 누출이 발생할 수 토토 커뮤니티. 구속하는 쿼리의 (적어도) 인코딩 변환 및 바인드 메시지에 첨부 된 매개 변수와 관련된 관찰 가능한 누출이있었습니다.

  • 통계에 사용되는 공유 메모리 블록 (Anthonin Bonnefoy)에 대한 참조 수의 누출 방지§

    통계 공유 메모리에 첨부 된 새로운 백엔드 프로세스는 참조 수를 증가 시켰지만 종료시 수를 줄이지 않았습니다. 2 이후32세션이 생성되었고, 참조 수는 0으로 넘쳐나면서 모든 후속 백엔드 프로세스에서 실패가 시작됩니다.

  • 다기능 SLRU 로그 (Heikki Linnakangas)의 잘린 시대의 교착 상태 및 어설 션 실패 방지§

    SLRU 세그먼트를 삭제하려는 프로세스는 체크 포인터 프로세스와 교착 상태가 될 수 토토 커뮤니티.

  • Windows 소켓에서 입력 종료 이벤트 누락을 피하십시오 (Thomas Munro)§

    Windows는 연결의 원격 끝이 단절된 후에 만 ​​FD_Close 이벤트를보고합니다. 운이 좋지 않은 타이밍으로, 우리는 그 보고서를 놓치고 무기한으로, 또는 적어도 타임 아웃이 경과 할 때까지 더 많은 입력을 기대할 수 있습니다.

  • 불완전한 바이트 시퀀스 (Jacob Champion)에 대한 JSON 구문 분석 오류 보고서에서 버퍼 오버 리드 수정§

    마지막 바이트가 불완전한 다중 바이트 문자를 구성 할 때 입력 버퍼의 끝을 몇 바이트만으로 걸을 수있었습니다. 일반적으로 무해하지만 원칙적으로 이것은 충돌을 일으킬 수 있습니다.

  • OpenSSL (Daniel Gustafsson)의 Stateful TLS 세션 티켓 생성 비활성화§ § §

    세션 티켓을 수령한다고 생각하는 고객에게는 가능한 실패를 피합니다. TLS 세션 재개가 지원되는 것을 의미합니다.

  • apl/pgsql 간단한 표현, 여전히 간단하다고 확인하십시오 (Tom Lane)§

    참조 된 기능을 삭제하고 총체적으로 재현하는 것과 같은 상당히 상당히 관대 한 경우와 같은 놀라운 실패로 이어질 수 토토 커뮤니티.예기치 않은 계획 노드 유형.

  • 수정pl/pgsql의 밑줄을 포함하는 정수 범위의 취급 (Erik Wienhold)§

    v16에서 정수 리터럴이 밑줄을 포함하도록 허용하지만pl/pgsql와 같은 예제를 처리하지 못했습니다1 _001..1_003.

  • 17999_18012레코드-선발pl/python함수 (Tom Lane)§

    다른 열 정의 목록을 전달하는 동일한 함수의 새 호출로 되돌아 보면 (as절), 내부 호출이 어떤 rowtype가 반환 할 것인지에 대한 외부 호출의 아이디어를 덮어 쓰기 때문에 실패합니다..

  • 부패하지 마십시오pl/python'sTD재귀 트리거 호출 중 사전 (Tom Lane)§

    if apl/python-언어 트리거가 다른 트리거를 호출했습니다.TD내부를 위해 생성 된 사전은 외부를 덮어 쓰게됩니다TD사전.

  • 수정PL/TCL의 잘못된 목록 구문보고 기능 반환 튜플 (Erik Wienhold, Tom Lane)§

    그러한 경우는 충돌이 발생하거나 실제로 이전 TCL 오류를 나타내는 오해의 소지가있는 컨텍스트 정보가 방출 될 수 있습니다.

  • 비 스레드-안전 사용을 피하십시오strerror ()inlibpq(Peter Eisentraut)§

    OpenSSL이 반환 한 특정 오류 메시지는 다중 스레드 응용 프로그램에서 차량화 될 수 있습니다.

  • 내에서 메모리 누출을 피하십시오pg_dump이진 업그레이드 중 (Daniel Gustafsson)§

  • PG_RESTORE -l보고서 종속 TOC 항목을 올바르게 (Tom Lane)§

    if-l과 같은 선택적 레스터 옵션과 함께 지정되었습니다.-n또는-n, 실제 복원이 선택한 경우에도 주석과 같은 종속 TOC 항목이 목록에서 생략됩니다.

  • 허용contrib/pg_stat_statementsSQL 언어 기능 (Anthonin Bonnefoy) 내에 나타나는 유틸리티 진술을 구별하려면§

    SQL-Language 함수 집행자는 유틸리티에 대해 계산 된 쿼리 ID를 따라 전달하지 못했습니다 (비select/삽입/업데이트/삭제/병합) 문.

  • 피하기커서는 앞으로 스캔 할 수 토토 커뮤니티오류Contrib/Postgres_FDW(Etsuro Fujita)§

    원격 서버가 v15 이상이고 외국 테이블이 사소한 원격보기에 매핑되는 경우이 오류가 발생할 수 있습니다.

  • inContrib/Postgres_FDW, 보내지 마십시오타이와 함께 첫 번째 가져 오기원격 서버 (japin li)로의 조항§

    원격 서버는이 조항을 구현하지 않거나 로컬에서와 다르게 해석 할 수 있으므로 원격 실행을 시도 할 위험이 없습니다.

  • 시스템이 제공하는 충돌을 피하십시오헤더 (Thomas Munro)§

    이것은 MacOS 버전 15 이상에서 컴파일 실패를 수정합니다.

  • Memoize Cost Estemation (David Rowley)에서 다른 말이없는 주장 실패 수정§

  • 다른 harmless assertion 실패 수정Reindex 동시에SP-Gist 지수 (Tom Lane)에 적용§