출시 날짜 :2024-08-08
이 릴리스에는 16.3의 다양한 수정 사항이 포함되어 토토 커뮤니티. Major Release 16의 새로운 기능에 대한 정보는 참조섹션 E.9.
16.x.를 실행하는 사람들에게는 덤프/복원이 필요하지 않습니다.
그러나 16.3 이전 버전에서 업그레이드하는 경우 참조하십시오.섹션 E.6.
무단 코드 실행 방지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)§
첫 번째분석
해당 파티션 된 테이블에서 업데이트해야합니다Relhassubclass
reltuples
손실 할 업데이트.
프로 시저에 대한 다형성 출력 인수의 처리 수정 (Tom Lane)§ §
SQL콜
명령문은 그러한 인수에 대한 올바른 데이터 유형을 해결하지 않았으며와 같은 오류로 이어집니다.“유형의 값을 표시 할 수 없습니다”또는 심지어 명백한 충돌. (하지만콜
inpl/pgsql올바르게 일했습니다.)
a에서 호출 된 안정적인 함수의 동작 수정콜
성명서의 인수 목록 (Tom Lane)§
콜
는 원자 컨텍스트 내에 있으며 (예 : 외부 트랜잭션 블록이 있음), 그러한 함수는 잘못된 스냅 샷으로 전달되어 외부 트랜잭션이 시작된 이후로 수정 된 행의 오래된 값을 볼 수 있습니다..
ISO-8601의 입력 수정“확장”타입 시간 형식Time
및TIMETZ
(Tom Lane)§
예 : 재발 사건T12 : 34 : 56
.
정수 오버플로 감지Money
계산 (Joseph Koshakow)§
|Money
오버플로를 확인한 유형은 오버플로를 확인하여 넘쳐나는 사례에 대해 조용히 잘못된 답변을 제공 할 것입니다.
스케일 인수의 과도한 공격적인 클램핑 수정round(numeric)
및Trunc (Numeric)
(Dean Rasheed)§
이 함수는 척도 인수를 +/- 2000으로 클램핑했지만 더 커질 수있는 유효한 사용 사례가 토토 커뮤니티. 기능은 그러한 경우에 잘못된 결과를 반환했습니다.숫자
.
결과 수정 결과pg_size_pretty ()
가능한 최소에 적용되는 경우bigint
value (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)§
그러한 열이 업데이트되지 않으면 오류를보고해야합니다. 그러나 수표가 놓친 후 나중에 코드는와 같은 도움이되지 않는 오류를보고합니다.“속성 번호N
View 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_statements
SQL 언어 기능 (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)에 적용§