출시 날짜 :2024-02-08
이 릴리스에는 16.1의 다양한 수정 사항이 포함되어 롤 토토. Major Release 16의 새로운 기능에 대한 정보는 참조섹션 E.9.
16.x.를 실행하는 사람들에게는 덤프/복원이 필요하지 않습니다.
그러나 하나의 버그가 고정되어 동시 업데이트 중에 진 지수가 손상 될 수있었습니다. 그러한 부패가 의심되는 경우,이 업데이트를 설치 한 후 Reindex에 영향을 미쳤습니다.
또한 16.1 이전 버전에서 업그레이드하는 경우 참조섹션 E.8.
내에서 보안 제한 조임Refresh Restocized View 동시에
(Heikki Linnakangas)§ §
동시 새로 고침 명령의 한 단계가 약한 보안 제한에 따라 실행되었습니다. 구체화 된 View의 소유자가 슈퍼 사용자 나 다른 유명한 사용자가 해당보기에서 동시 새로 고침을 수행하도록 설득 할 수 있다면 View의 소유자는 사용자가 실행되는 사용자의 권한으로 실행 된 코드를 제어 할 수 롤 토토Refresh
. 모든 사용자 결정 코드가 예상대로 뷰의 소유자로 실행되도록 사항을 고정하십시오.
이 오류에 대한 유일한 악용은 작동하지 않습니다PostgreSQL16.0 이상, v16은 실제로 취약하지 않을 수 롤 토토.
thePostgreSQL프로젝트이 문제를보고 한 Pedro Gallegos에게 감사드립니다. (CVE-2024-0985)
Jit Inlining을 수행 할 때 메모리 누출 수정 (Andres Freund, Daniel Gustafsson)§
충분히 많은 JIT 편집 후에 메모리 외 조건을 겪는 백엔드 프로세스에 대한 여러 보고서가있었습니다. 이 수정은 그것을 해결해야합니다.
부정확 한 파티션 조명 계획을 생성하지 마십시오 (Richard Guo)§
측면 참조와 관련된 일부 드문 상황은 잘못된 계획을 만들 수 롤 토토. 영향을받는 쿼리는 잘못된 답변이나와 같은 이상한 실패를 일으킬 수 롤 토토.“변수 대상 목록에서 찾을 수없는 변수”또는 집행자 충돌.
PlaceholderVars (Tom Lane)에서 하위 쿼리 출력 표현식의 잘못된 래핑 수정§
서브 쿼리가 외부 조인 아래에있을 때 잘못된 결과를 수정하고 외부 조인의 범위 외부에 무언가를 옆으로 참조하는 출력 열이 롤 토토. 외부 조인의 동작으로 인해 출력 열이 널으로 나타나지 않을 수 롤 토토.
창 함수 실행 조건 (Richard Guo)의 잘못 처리 수정§
이 감독은로 이어질 수 롤 토토.“subplan 대상 목록에서 찾을 수 없음”오류.
Memoize Plans (Richard Guo)를위한 내면의 독창성 탐지 수정§
이 실수로 이어질 수 롤 토토“캐시 항목 이미 완료”오류.
일정한 폴드 필드 선택 (Richard Guo) 일 때 NullingRels 계산 수정§
이 작업을 수행하지 못하는 오류가 발생했습니다“var 2/2에 대한 잘못된 varnullingrels (b) (예상 (b 3))”.
부적절한 조치 건너 뛰기병합
교차 파티션 업데이트 (Dean Rasheed)를 유발합니다§
실행할 때Merge Update
파티션 된 테이블의 동작,업데이트
|삭제
and삽입
파티션 키 열 변경으로 인해 발사를 건너 뛰기업데이트 행 후
트리거 및 RLS 수표와 같은 기타 업데이트 작업. 이러한 조치는 일반적으로 실패하므로 정기적 인 이유업데이트
그러한 경우에는하지 않습니다.병합
그렇지 않아야합니다.
대처행 삭제 전
교차 파티션의 트리거병합
업데이트 (Dean Rasheed)§
그러한 트리거가 NULL을 반환하여 업데이트를 방지하려고 시도한 경우병합
오류 나 주장 실패를 겪을 것입니다.
Longer-Pinned 버퍼에 대한 액세스 방지행 전 업데이트 전
Triggers (Alexander Lakhin, Tom Lane)§
다른 세션에서 업데이트되는 튜플이 업데이트되어 다른 페이지로 이동 한 경우 버퍼에 핀없이 새 튜플 버전에서 데이터를 가져 오려는 좁은 창이있었습니다. 원칙적으로 이것은 제안 된 새로운 튜플의 업데이트 된 열에 쓰레기 데이터가 나타날 수 있습니다.
병렬 해시 조인 (Thomas Munro, Andrei Lepikhov, Alexander Korotkov)에서 대형 공유 메모리 지역을 요청하지 마십시오.§ §
제한 값이 너무 커서 허용“잘못된 DSA 메모리 Alloc 요청 크기”충분히 큰 해시 테이블 크기로 발생하는 오류.
임시 테이블을 연장하려고하는 동안 오류가 발생할 때 로컬 버퍼 상태의 손상 수정 (입찰 Wang)§
평가하는 동안 잘못된 튜플 슬롯의 사용 수정별개의
여러 인수가있는 집계 (David Rowley)§
이 실수는와 같은 오류로 이어질 수 롤 토토.“유형 레코드의 속성 1이 잘못된 유형”.
어설 션 실패 방지heap_update ()
andheap_delete ()
외국 키 집행 트리거로 업데이트 할 튜플이 추가 가시성 CrossCheck (Alexander Lakhin)에 실패하면§
이 오류는 비 합산 빌드에 영향을 미치지 않았습니다.
지나치게 긴밀한 주장에 대한 수정false_positive_rate
Brin Bloom Operator 클래스의 매개 변수 (Alexander Lakhin)§
이 오류는 비 합산 빌드에도 영향을 미치지 않았습니다.
가능한 고장 수정ALTER 테이블 추가 열
복잡한 상속 트리 (Tender Wang)에서§
손자 테이블이 여러 중간 부모를 통해 새 열을 물려 받으면 명령이 실패했습니다.“튜플은 이미 자체적으로 업데이트 됨”.
중복 토큰 이름으로 문제를 해결변경 텍스트 검색 구성 ... 매핑
Commands (Tender Wang, Michael Paquier)§
수정드롭 역할
중복 역할 이름 (Michael Paquier)§
이전에 이로 인해“튜플은 이미 자체적으로 업데이트 됨”실패. 대신, 중복을 무시합니다.
관련 테이블을 올바르게 잠그십시오드롭 통계
(Tomas vondra)§
잠금을 취득하지 못하면“튜플 동시 삭제”오류드롭
동시에 실행분석
.
수정 기능 변동성 검사에 대한생성
and기본값
Expressions (Tom Lane)§
이 장소는 휘발성 기능 기본 연계 표현식의 삽입을 감지하지 못하거나 관심있는 데이터 유형에서는 실제로 불변이지만 다형성 기능이 휘발성이라는 것을 결정할 수 있습니다. 이것은 부적절하게 거부하거나 수락 할 수 있습니다생성
조항 또는 실수로 일정한 디퍼 값-값 최적화를 적용하기 위해ALTER 테이블 추가 열
.
새로운 카탈로그 캐시 항목이 필드 (Tom Lane)를 고용하는 동안 부실 해 졌음을 감지합니다.§ §
카탈로그 캐시에 삽입하기 전에 카탈로그 튜플의 외부 필드를 확장합니다. 여기에는 카탈로그 캐시 항목이 무효화 될 수있는 데이터베이스 액세스와 관련이 있지만 새 항목은 아직 캐시에 있지 않으므로 무효화되어야한다는 사실에 주목할 것입니다.
일부 플랫폼에서 가장자리 사례 정수 오버 플로우 탐지 버그 수정 (Dean Rasheed)§
컴퓨팅0 -int64_min
은 오류 오류가 발생하고 대부분의 플랫폼에서 수행해야합니다. 그러나 정수 오버플로 빌드 딘이나 128 비트 정수가없는 플랫폼은 오버플로를 발견하지 못하고 대신 반환int64_min
.
추가 또는 빼기에 줄리안 날짜 오버플로 감지간격
to/from a타임 스탬프
(Tom Lane)§
범위 외 오류를 유발 해야하는 경우 대신 잘못된 결과를 얻었습니다.
오버플로에 대한 더 많은 점검 추가interval_mul ()
andinterval_div ()
(Dean Rasheed)§
범위 외 오류를 유발 해야하는 경우 대신 잘못된 결과를 얻었습니다.
허용scram_saltedpassword ()
방해 받기 (Bowen Shi)§
큰scram_iterations
값,이 기능을 실행하는 데 시간이 오래 걸릴 수 롤 토토. 쿼리 취소 요청에 의해 중단 될 수 롤 토토.
변경 후 캐시 된 통계가 폐기되는지 확인하십시오.stats_fetch_consistency
(Shinya Kato)§
일부 코드 경로에서는 오래된 통계가 반환 될 수있었습니다.
만들기PG_FILE_SETTINGS
설정에 대한 적용되지 않은 값의 확인 유효성보기백엔드
또는SuperUser-Backend
Context (Tom Lane)§
잘못된 값은 의도 한대로보기에 기록되지 않았습니다. 이 그룹에는 설정이 거의 없기 때문에 탈출 한 감지.
기존 인덱스를 새로운 파티션 된 인덱스 (Peter Eisentraut)와 일치시킬 때도 Collation과 일치합니다.§
이전에 우리는 파티션 키의 해당 요소와 다른 콜라이트를 갖는 색인을 수락하여 오작동으로 이어질 수 있습니다..
아동 지수가 동시에 삭제되면 실패를 피하십시오Reindex Index
분할 된 인덱스 (FEI Changhong)§ §
진 지수의 내부 페이지의 불완전한 분할을 청소할 때 불충분 한 잠금 수정 (Fei Changhong, Heikki Linnakangas)§
코드는 버퍼의 독점 잠금이 아닌 공유로이를 수행하려고 시도했습니다. 두 프로세스가 정리를 동시에 시도하면 인덱스 손상으로 이어질 수 롤 토토.
Gin Index Insertion에서 버퍼 핀의 조기 해제를 피하십시오§
인덱스 루트 페이지 분할이 우리 자신의 삽입과 동시에 발생하면 코드가 실패 할 수 있습니다“버퍼 NNNN은 자원 소유자가 소유하지 않습니다”.
분할 된 SP-Gist 인덱스 (Tom Lane)의 실패를 피하십시오§
이런 종류의 색인을 사용하려고 시도하면“그러한 파일 또는 디렉토리 없음”오류.
큰 오브젝트에 대한 소유권 테스트 수정 (Tom Lane)§
소유권 권한을 요구하는 대형 개체에서의 운영“인식되지 않은 클래스 ID : 2613”, 슈퍼업자가 실행하지 않는 한.
큰 오브젝트에 대한 소유권 변경보고 수정 (Tom Lane)§
a-op대형 오브젝트 소유자 변경
명령 (즉, 기존 소유자를 선택하는 사람)은 잘못된 클래스 ID를 전달했습니다.Postalterhook
I/O 타이밍 데이터의보고 수정설명 (버퍼)
(Michael Paquier)§
숫자로 표시된 숫자“공유/로컬”실제로 공유 버퍼 만 참조하므로 해당 레이블을 변경하십시오“공유”.
내구성 보장데이터베이스 생성
(Noah Misch)§ §
운영 체제 충돌이 발생한 경우 또는 그 직후에데이터베이스 생성
, 복구가 실패하거나 새로운 데이터베이스에 대한 후속 연결이 실패 할 수 롤 토토. 해당 창에서베이스 백업이 취해지면 백업을 사용하려고 할 때 유사한 문제가 관찰 될 수 롤 토토.pg_version
파일 또는pg_filenode.map
파일이 없거나 비어있었습니다.
추가 추가log
백업을 시작하고 끝내는 메시지 (Andres Freund)§
이 변경 사항은 회복 문제를 진단하는 데 유용 할 수있는 우체 마스터 로그에서 추가 정보를 제공합니다.
대기 서버가 서브 트랜잭션 (FEI Changhong) 중에 죽은 색인 튜플을 잘못 처리하는 것을 방지합니다§
theStartInRecovery
플래그는 하위 트랜잭션을 위해 올바르게 설정되지 않았습니다. 이것은 죽은 색인 튜플의 처리에만 영향을 미칩니다.
Walreceiver 프로세스의 신호 처리 수정 (Heikki Linnakangas)§
Walreceivers를 반응하지 않는 변화를 되돌려sigterm복제 연결이 설정되기를 기다리는 중.
레코드가 WAL 디코딩 버퍼 (Thomas Munro)에 맞는지 여부를 확인할 때 정수 오버플로 위험 수정§
이 버그는 32 비트를 실행할 때를 제외하고는 잠재적 인 것 같습니다PostgreSQL64 비트 플랫폼을 구축하십시오.
논리적 복제 간의 교착 상태를 고정합니다.§
교착 상태 루프의 한쪽 가장자리에는 잠금 대기가 포함되지 않았으므로 교착 상태는 감지되지 않았고 수동 개입까지 지속됩니다..
열 기본값이 올바르게 전송되는지 확인하십시오.pgoutput논리 복제 플러그인 (Nikhil Benesch)§
ALTER 테이블 추가 열
새 열에 대한 일정한 기본값을 사용하면 기존 튜플을 다시 쓰는 것을 피하는 대신 읽기 코드가 해당 열이없는 튜플에 올바른 기본값을 삽입 할 것으로 기대합니다. 이후 복제가 테이블에서 시작되면pgoutput이러한 열에 대한 올바른 기본값 대신 NULL을 전송하여 가입자에게 잘못된 복제를 유발합니다..
열이없는 테이블에 대한 논리적 복제의 초기 동기화 실패 수정 (vignesh c)§
이 사례는 부적절한 형식을 생성했습니다COPY
명령.
사용하기 전에 구독의 연결 문자열을 다시 검증합니다 (Vignesh C)§ §
이것은 비밀번호없이 구독이 생성 된 사례를 감지하기위한 것이지만 (슈퍼 사용자에게 허용됨) 구독 소유자는 비 Superuser로 변경됩니다..
새 클라이언트가 서버의 비밀번호 도전에 응답하지 않고 연결을 끊을 때 올바른 상태 코드를 반환합니다 (Liu Lang, Tom Lane)§
경우에 따라 우리는 이것을 loggable 오류로 취급합니다.PSQL자주이 작업을 수행합니다. 또한 사용하는 확장을 혼동 할 수도 롤 토토ClientAuthentication_hook
.
비 호환성 수정OpenSSL3.2 (Tristan Partin, Bo Andreson)§
바이오 사용“APP_DATA”개인 저장 공간 필드, 사용해도 괜찮다고 가정하는 대신“데이터”필드. 이 실수는 전에는 문제를 일으키지 않았지만 3.2로 인해 두 번의 자유에 대한 충돌과 불만이 발생합니다.
더 조심하십시오OpenSSL설정되지 않음errno
on Error (Tom Lane)§
iferrno
설정되지 않았으며보고 된 실패의 원인이 EOF라고 가정합니다. 이것은와 같은 이상한 오류 보고서의 드문 경우를 수정합니다.“SSL 연결을 허용 할 수 없음 : 성공”.
외국 데이터 포장지의 경우 파일 디스크립터 누출 수정Forexasyncrequest
함수 실패 (Heikki Linnakangas)§
연결에서 작은 메모리 누출 수정 문자열 유효성 검증구독 생성
(Jeff Davis)§
보고서enomem파일 관련 시스템의 오류errcode_out_of_memory
, 아님errcode_internal_error
(Alexander Kuzmenkov)§
inpl/pgsql, 지원 지원기능 만들기
/절차 만들기
SQL 표준 바디 (Tom Lane)§
이전에, 이러한 경우는 기능 본문에 세미콜론 (들)이 나타나기 때문에 구문 분석 오류로 실패했습니다.
수정libpq의 파이프 라인의 오류 처리 (Álvaro Herrera)§ §
쿼리 문제 이외의 이유로 오류가 반환되면 파이프 라인 상태가 동기화되지 않을 수 있습니다 (예 : 연결이 손실 된 경우). 잠재적으로 이것은 전화 응용 프로그램에서 바쁜 루프로 이어질 것입니다.
makelibpq'spqsendflushrequest ()
기능 플러시 플러시 클라이언트 출력 버퍼를 다른 규칙과 동일한 규칙으로pqsend
함수 (Jelte Fennema-Nio)§
파이프 라인 모드에서도 여전히 호출해야 할 수도 롤 토토pqflush ()
그러나이 변화는 약간의 불일치를 제거합니다.
때 레이스 상태를 피하십시오libpqOpenSSL 지원 초기화 두 개의 다른 스레드 (Willi Mann, Michael Paquier)§
GSSAPI 데이터 전송 (Tom Lane)에서 타이밍 의존적 고장 수정§
비 블로킹 모드에서 GSSAPI 암호화를 사용할 때libpq때때로 실패“GSSAPI 발신자는 재조정 해야하는 모든 데이터를 재전송하지 못했습니다”.
변경initdb항상 |postgresql.conf
출품작LC_
매개 변수 (Kyotaro Horiguchi)§xxx
initdbv16 전에 이런 식으로 작업하는 데 사용되었으며 이제 다시 수행됩니다. 변화가 발생했습니다initdb's--로케일
의도 한 영향을 미치지 않는 옵션lc_messages
.
inpg_dump, 확장 회원 객체에 대한 RLS 정책 또는 보안 레이블을 덤프하지 마십시오 (Tom Lane, Jacob Champion)§ §
이전에는 이러한 속성을 설정하기 위해 덤프에 명령이 포함되어 있으며, 이는 확장 내부 문제로 간주되어야하므로 실제로 부정확합니다. 또한, 복원 사용자는이를 설정하는 데 적절한 권한이 없을 수 있으며, 실제로 덤핑 사용자는이를 덤프하기에 충분한 권한이 없을 수 있습니다 (RLS 정책을 덤프하기 때문에 테이블에 잠금을 획득해야하기 때문에)..
inpg_dump, 기본 테이블이 덤프되지 않으면 확장 통계 객체를 버리지 마십시오 (Rian McGuire, Tom Lane)§
이것은 인덱스와 같은 다른 종속 객체의 동작을 준수합니다.
하나의 코드 경로에서 메모리 외 외부를 올바르게 감지pg_dump(Daniel Gustafsson)§
A에 대한 오류로 만드십시오pgbench개방형 파이프 라인으로 끝나는 스크립트 (Anthonin Bonnefoy)§
이전,pgbencha이라도 이상하게 행동 할 것입니다.\ startPipeline
명령이 부족했습니다\ endpipeline
. 이것은 사건이 아니라 스크립팅 실수처럼 보입니다.pgbench멋지게 처리해야하므로 오류를 던지십시오.
충돌 수정Contrib/Intarray
요소가있는 배열이 인 경우int_max
A에 삽입됩니다gist__int_ops
Index (Alexander Lakhin, Tom Lane)§
더 나은 오류를보고Contrib/PageInspect
'shash_bitmap_info ()
함수는 분할 된 해시 지수 (Alexander Lakhin, Michael Paquier)에 적용됩니다.§
더 나은 오류를보고Contrib/Pgstattuple
'spgstathashIndex ()
함수는 분할 된 해시 지수 (Alexander Lakhin)에 적용됩니다.§
Windows에서, 서브 프로세서를 시작할 때 autorun 옵션을 억제합니다PG_CTLandPG_REGRESS(Kyotaro Horiguchi)§ §
|을 통해 아동 프로세스를 시작할 때cmd.exe
, 통과/d
레지스트리에 지정된 Autorun 명령을 실행하는 것을 방지하는 플래그. 이것은 가능성이 높은 부작용을 피할 수 롤 토토.
움직임is_valid_ascii ()
FromMB/PG_WCHAR.H
toutils/ascii.h
(Jubilee Young)§
이 변경 사항은 포함 할 필요가 없습니다
inPG_WCHAR.H
, 일부 타사 코드에 문제가 발생했습니다.
컴파일 실패 수정libxml2버전 2.12.0 이상 (Tom Lane)§
컴파일 실패 수정Wal_debug
Windows의 코드 (Bharath Rupireddy)§
Python의 헤더 파일 (Peter Eisentraut, Tom Lane)의 컴파일러 경고 억제§ §
선호하는 컴파일러 옵션은 최근 Python의 헤더 파일 버전에 나타나는 구성에 대한 경고를 유발합니다. 사용시GCC, 우리는 Pragma로 이러한 경고를 억제 할 수 롤 토토.
LLVM 18 (Thomas Munro)로 컴파일 할 때 감가 상각 경고를 피하십시오§
시간대 데이터 파일 업데이트TZDATAGreenland, Kazakhstan 및 Palestine의 DST 법률 변경에 대한 릴리스 2024a와 남극 역의 Casey 및 Vostok 수정. 베트남, 토론토 및 미켈론의 역사적 수정.§