릴리스 노트

PostgreSQL

E.5. 릴리스 15.8

출시 날짜 :2024-08-08

이 릴리스에는 15.7의 다양한 수정 사항이 포함되어 토토 베이. 주요 릴리스 15의 새로운 기능에 대한 정보는 참조섹션 E.13.

E.5.1. 버전 15.8으로의 마이그레이션

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

그러나 15.7 이전 버전에서 업그레이드하는 경우 참조섹션 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)§

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

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

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

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

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

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

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

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

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

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

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

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

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

    |Money이전에 오버플로를 확인한 유형은 오버플로에 대해 조용히 잘못된 답변을 제공 할 것입니다.

  • 스케일 인수의 과도한 공격적인 클램핑 수정라운드 (숫자)andTrunc (Numeric)(Dean Rasheed)§

    이 함수는 척도 인수를 +/- 2000으로 고정 시켰지만 더 크게 유효한 사용 사례가 토토 베이. 기능은 그러한 경우에 잘못된 결과를 반환했습니다.숫자.

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

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

    오류를 던지는 대신이 경우에 널 리턴하게 만듭니다.

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

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

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

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

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

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

  • 뷰 열의 업데이트 가능성을 올바르게 점검하여삽입 ... 기본값(Tom Lane)§

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

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

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

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

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

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

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

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

    확장자가 생성하는 테이블의 일부 열 수준 권한을 부여하면 연장이 삭제 된 후 관련 카탈로그 항목이 뒤에 남아 토토 베이. 테이블의 OID가 다른 관계에 대해 재사용되지 않는 한, 이것은 무엇을 방해 할 수있을 때까지 이것은 무해했습니다.pg_dump그 관계를위한 덤프.

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

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

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

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

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

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

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

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

  • 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 이벤트를보고합니다. 운이 좋지 않은 타이밍으로, 우리는 그 보고서를 놓치고 무기한으로, 또는 적어도 타임 아웃이 경과 할 때까지 더 많은 입력을 기대할 수 있습니다.

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

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

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

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

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

    참조 된 기능을 삭제하고 총체적으로 재현하는 것과 같은 상당히 상당히 관대 한 경우예기치 않은 계획 노드 유형.

  • 사이의 비 호환성 수정pl/perl및 Perl 5.40 (Andrew Dunstan)§

  • 재귀 수정레코드-선발pl/python함수 (Tom Lane)§

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

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

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

  • 수정PL/TCL'S 유효하지 않은 목록 구문보고 기능 반환 튜플 (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/Postgres_FDW(Etsuro Fujita)§

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

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

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

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

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

  • 추억 비용 추정에서 다른 말이없는 주장 실패 수정 (David Rowley)§

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