출시 날짜 :2024-11-14
이 토토에는 17.0의 다양한 수정 사항이 포함되어 있습니다. Major Release 17의 새로운 기능에 대한 정보는 참조하십시오.스포츠 토토 베트맨 PostgreSQL : 문서 : 17 : E.5. 릴리스 17.
17.x를 실행하는 사람들에게는 덤프/복원이 필요하지 않습니다.
그러나, 다른 분할 된 테이블에 대한 외국 키 참조가있는 파티션 된 테이블에서 파티션을 분리 한 적이 있다면 이전 파티션을 삭제하지 않았다면 아래의 다섯 번째 Changelog 항목에 자세히 설명 된대로 카탈로그 및/또는 데이터 손상이 수리 할 수 있습니다..
또한 드문 경우 데이터베이스의 경우LC_CTYPE
설정은C
LC_COLLATE
설정은 다른 로케일이며 텍스트 열의 인덱스는 아래의 여섯 번째 ChangeLog 항목에 설명 된대로 다시 표시되어야합니다.
RLS가 비 탑 레벨 테이블 참조 (Nathan Bossart)에 적용될 때 캐시 된 계획이 호출 역할에 따라 표시되는지 확인하십시오.§
쿼리의 CTE, 하위 쿼리, Sublink, 보안 인비크 뷰 또는 강제 투영이 행 수준 보안 정책이있는 테이블을 참조하면 결과 계획을 어떤 역할을 수행하는지에 따라 결과 계획을 표시하는 것을 무시했습니다. 이로 인해 잘못된 계획을 사용하여 같은 세션에서 나중에 쿼리 실행이 발생한 다음 숨겨져 있거나 반품 해야하는 행을 반환하거나 숨기고 있습니다.
thePostgreSQL이 문제를보고 한 프로젝트 감사 Wolfgang Walther. (CVE-2024-10976)
만들기libpqSSL 또는 GSS 프로토콜 협상 중에 수신 된 오류 메시지 폐기 (Jacob Champion)§
암호화 협상이 완료되기 전에 수신 된 오류 메시지가 실제 서버 출력이 아니라 1 차원에 의해 주입되었을 수 있습니다. 보고하면 다양한 보안 위험의 문이 열립니다.libpq의 연결 고장에 대한 자체 보고서.
thePostgreSQL이 문제를보고 한 Jacob Champion에게 프로젝트 감사합니다. (CVE-2024-10977)
의도하지 않은 상호 작용 수정세션 승인 설정
및역할 설정
(Tom Lane)§ §
SQL 표준 의무는세션 승인 설정
부작용역할 설정 없음
. 우리의 구현은 결함이 있었으며 의도 한 것보다 두 설정 사이에 더 많은 상호 작용을 만듭니다.세션 승인 설정
복귀 할 것입니다역할
to없음
그것이 이전 상태가 아니더라도 효과적인 사용자 ID가 거래 전과 다를 수 있습니다. 일시적으로 설정Session_Authorization
함수에서SET
절은 비슷한 영향을 미쳤습니다. 관련 버그는 병렬 작업자가 검사 한 경우current_setting ( 'role')
, SAV없음
다른 것을보아야하는 경우에도.
thePostgreSQL프로젝트이 문제를보고 한 Tom Lane에게 감사드립니다. (CVE-2024-10978)
신뢰할 수있는 PL/PERL 코드 변경 환경 변수 변경 (Andrew Dunstan, Noah Misch)§ § §
프로세스 환경 변수를 조작하는 능력PATH
임의의 코드를 실행할 수있는 공격자 기회를 제공합니다. 그러므로,“신뢰할 수있는”pls는 그렇게 할 수있는 능력을 제공해서는 안됩니다. 수정하려면plperl
, 교체%env
묶인 해시가있는 상태에서 경고로 수정 시도를 거부합니다. 신뢰할 수없는Plperlu
환경 변화 능력을 유지합니다.
thePostgreSQL이 문제를보고 한 Coby Abrams에게 감사드립니다. (CVE-2024-10979)
테이블 파티션 (Jehan-Guillaume de Rorthais, Tender Wang, Álvaro Herrera)§ §
참조 테이블이 분할 된 경우, 독립형 테이블과 파티션 인 참조 테이블에는 다른 카탈로그 항목이 필요합니다.첨부/분리 파티션
명령은이 변환을 올바르게 수행하지 못했습니다. 특히 이후Detach
이제 독립형 테이블에는 외국 키 시행 트리거가 없어져 나중에 테이블에 외국 키 제약 조건에 실패하는 행을 포함 할 수 있습니다. 후속 re첨부
놀라운 오류로도 실패 할 수 있습니다.
이것을 고치는 방법은해야 할 것입니다Alter Table Drop 제약 조건
각 결함이있는 제약 조건에 대한 지금 독립형 테이블에서 제약 조건을 다시 설명하십시오. 제약 조건이 다시 실패하면 일부 잘못된 데이터가 발생했습니다. 참조와 참조 테이블 사이의 일관성을 수동으로 재건해야합니다. 그런 다음 제약 조건을 다시 구입해야합니다..
이 쿼리는 깨진 제약 조건을 식별하고 재현하는 데 필요한 명령을 구성하는 데 토토될 수 있습니다.
Conrelid :: pg_catalog.regclass를 "제한된 테이블"으로 선택하십시오.
하나 이상이 가능하기 때문에제약 조건 추가
단계가 실패하고 파일에 쿼리의 출력을 저장 한 다음 각 단계를 수행하려고 시도해야합니다.
테스트 수정C
로케일LC_COLLATE
|LC_CTYPE
(Jeff Davis)§
토토시libc
기본 Collation 제공 업체로서 테스트를하는지 확인하십시오.C
로케일은 실수로 확인 된 Collation에 사용 중입니다LC_CTYPE
notLC_COLLATE
. 이것은 해당 설정이 동일하거나 두 가지가 아닌 경우에 영향을 미치지 않습니다.C
(또는 그 별명POSIX
). 그러나 ifLC_CTYPE
isC
whileLC_COLLATE
다른 로케일, 잘못된 쿼리 답변이 발생할 수 있으며 문자열에 대한 인덱스 손상이 가능했습니다. 이러한 설정이있는 데이터베이스 사용자는이 업데이트를 설치 한 후 영향을받은 인덱스를 다시 표시해야합니다.LC_COLLATE
존재C
whileLC_CTYPE
다른 로케일은 성능 저하를 유발하지만 실제 오류는 없습니다.
키 열에 대한 쿼리의 콜로레이션이 파티션 키의 콜레이션 (Jian He, Webbo Han)과 일치하지 않으면 파티션 관련 또는 그룹화를 토토하지 마십시오.§ §
그러한 계획은 잘못된 결과를 낳을 수 있습니다.
변환 후 플래너 고장을 피하십시오is null
a에서 테스트NOT NULL
열에서 열거짓
(Richard Guo)§
이 버그는 일반적으로와 같은 오류로 이어졌습니다.“변수 대상 목록에서 찾을 수없는 변수”.
인수가 특정 어레이 관련 작품 (Tom Lane, Nathan Bossart)을 포함하는 SQL 기능을 인화하는 동안 가능한 플래너 충돌을 피하십시오.§
가능성있는 답변 수정 또는“잘못된 varnullingrels”플래너 오류병합 ... 소스와 일치하지 않을 때
Action (Dean Rasheed)§ §
가능한 수정“정렬 할 PathKey 항목을 찾을 수 없습니다”a의 오류Union All
멤버 쿼리를 정렬해야하며 정렬 열은 표현식입니다 (Andrei Lepikhov, Tom Lane)§
B-Tree Scalararrayop Index Scans (Peter Geoghegan)에서 가장자리 케이스 수정§
이런 종류의 계획을 가진 스크롤 가능한 커서가 시작점으로 백업 된 다음 다시 앞으로 실행되면, 잘못된 답변이 가능했습니다.
어설 션 실패 또는 혼란스러운 오류 메시지copy (
, 언제쿼리
) to ...쿼리
at대신 알림
Rule (Tender Wang, Tom Lane)§
유효성 검사 수정COPY
'sforce_not_null
및Force_null
옵션 (Joel Jacobson)§
일부 잘못된 토토법은 이제 거부됩니다.
a시 서버 충돌 수정json_objectagg ()
통화 휘발성 기능 (Amit Langote)§
병렬 해시 조인 (Thomas Munro) 동안 비뚤어진 데이터의 감지 수정§
한 파티션이 너무 많은 튜플을 축적했기 때문에 해시 결합의 내부 측면을 다시 분리 한 후, 우리는 모든 파티션의 튜플이 동일한 하위 파티션에 들어간 것인지 확인합니다. 이 점검은 경우에 따라 오작동이 발생하여 반복적 인 헛된 반복을 허용하여 결국 리소스 exhaustion 오류로 끝납니다.
충돌을 피하십시오데이터베이스 세트 변경
|와 같은 검색 경로 기반 조회가 필요한 서버 매개 변수를 설정하는 데 토토됩니다.default_text_search_config
(Jeff Davis)§
파티션 된 테이블 (Tom Lane)에서 새 인덱스를 생성하는 동안 반복적 인 OPCLASS 및 콜라주 조회를 피하십시오§
이것은 일부 조회가 제한된 것으로 완료되기 때문에 주로 문제가되었습니다search_path
색인 생성
명령 참조 객체 외부PG_CATALOG
.
이 수정 사항은 부모 파티셔닝 인덱스에 대한 주석이 아동 색인에 복사되는 것을 방지합니다.
파티션 된 테이블에서 구축되지 않은 액세스 방법에 지정된 누락 된 종속성 추가테이블 생성 ... 토토
(Michael Paquier)§
테이블이 존재하는 경우 액세스 방법을 삭제하는 것이 차단되어야하지만, 이후의 홀수 동작을 허용하지 않았습니다. 이 수정 사항은이 업데이트 후 생성 된 분할 된 테이블의 문제 만 방지합니다.
비 ASCII 문자를 포함하는 로케일 이름을 허용하지 않습니다 (Thomas Munro)§
이것은 로케일 이름이 다른 곳에서 사용되지 않기 때문에 Windows에서만 문제 일뿐입니다. 그러한 이름을 인코딩하는 것이 어떤 인코딩으로 표시되는지 매우 불분명하기 때문에 문제가됩니다 (로케일 자체가 사용하려는 인코딩을 정의하기 때문입니다).PostgreSQL토토, 그에 대한 혼란 때문에 Windows 런타임 라이브러리의 중단이 발생할 수 있습니다.
새로운 오류 메시지를 만나는 사람은 Windows 로케일 빌더를 사용하여 Ascii-only 이름으로 새로운 복제 된 로케일을 만들거나 BCP 47 호환 로케일 이름과 같은 BCP 47 로케일을 사용하는 것을 고려해야합니다.TR-TR
.
직렬화 가능한 트랜잭션 (Heikki Linnakangas)에 대한 레이스 조건 수정§
최근에 커밋 된 트랜잭션의 잘못 처리하면 어설 션 실패 또는 A가 발생할 수 있습니다.“거래 상태에 액세스 할 수 없음”오류.
Race 조건 수정준비
고아가 2pc 파일 (Wuchengwen)을 초래 한 결과§
동시거래 준비
원인준비
완성 된 트랜잭션의 온 디스크 2 상 상태 파일을 제거하지 않으려면. 즉각적인 악영향은 없었지만 후속 충돌 및 복구는에 실패 할 수 있습니다.“거래 상태에 액세스 할 수 없음”, 서비스 복원을 위해 고아 파일의 수동 제거가 필요합니다.
잘못된 메모리 액세스를 피하십시오.진공 Full
(Tender Wang)§
이 코드 경로에서는 아직 보장 할 수없는 목록 추적이 제대로 업데이트되지 않았으며 나중에 어설 션 실패 또는 충돌이 발생했습니다..
an을 수정하십시오.“장소”카탈로그 업데이트가 손실 될 수 있습니다 (Noah Misch)§ § § § § § §
정상 행 업데이트 트랜잭션의 롤백 가능성을 보존하기 위해 새로운 버전의 행을 작성하십시오. 그러나 특정 시스템 카탈로그 업데이트는 의도적으로 비 트랜잭션이며 행의 내 업데이트로 수행됩니다.pg_class
.Relhasindex
True to True, 새로운 지수의 업데이트를 방지하여 인덱스 손상을 유발합니다.
회복 종료시 카탈로그 재설정 (Noah Misch)§
이것은 카탈로그 캐시의 오래된 데이터를 토토하여 내장 카탈로그 업데이트가 손실 될 수있는 시나리오를 방지합니다.
인터럽트를 유지하는 동안 병렬 쿼리 사용을 피하십시오 (Francesco Degrassi, Noah Misch, Tom Lane)§ §
이 상황은 정상적으로 발생할 수는 없지만 SQL 언어 기능을 B- 트리 지원 (생산 사용에는 너무 느리게)과 같은 테스트 시나리오로 도달 할 수 있습니다. 그것이 발생했다면 그것은 무기한 대기를 초래할 것입니다.
정의되지 않은 포털을 무시하십시오pg_cursors
View (Tom Lane)§
새 커서를 설정하는 동안이보기를 검사하는 토토자 정의 코드가 가능하며, 이런 일이 발생하면 널 포인터 피해가 발생합니다. 불완전한 커서를 제외하기 위해보기를 정의하여 문제를 피하십시오.
피하기“논리적 디코딩 중에 Unexpected table_index_fetch_tuple 호출”열 기본값 삽입과 관련된 트랜잭션을 디코딩하는 동안 오류 (Takeshi Ideriha, Hou Zhijie)§ §
논리 디코딩의 메모리 소비 감소 (Masahiko Sawada)§
더 작은 기본 블록 크기를 토토하여 논리적 복제 중에 수신 된 튜플 데이터를 저장합니다. 이로 인해 메모리 낭비가 줄어들면서 장기 거래를 처리하는 동안 심각한 것으로보고되어 메모리가없는 실패로 이어집니다.
a에서 호출 된 안정적인 기능의 동작 수정Call
성명서의 인수 목록,시기Call
PL/PGSQL 내에 있습니다예외
블록 (Tom Lane)§
이전 분기 별 릴리스에서 유사한 수정과 마찬가지로,이 사례는 그러한 기능이 잘못된 스냅 샷을 전달할 수있게하여 외부 트랜잭션이 시작된 이후로 수정 된 행의 오래된 값을 볼 수있었습니다..
Parselibpq'sKeepalives
다른 정수 값 옵션과 같은 방식으로 연결 옵션 (Yuto Sasaki)§
여기에 토토 된 코딩은 다른 경우와 달리 옵션 값에서 후행 흰색 스페이스를 거부했습니다. 이것은 문제가되는 것으로 판명 됨ECPG예를 들어
inecpglib, 부정확 한 DateTime 입력을 구문 분석 할 때 바운드 외부 읽기 수정 (Bruce Momjian, Pavel Nekrasov)§
일정한 배열이 시작되기 직전에 위치를 읽을 수있었습니다. 그러나 실제 결과는 최소한으로 보인다.
수정PSQL's s 서버 (Tom Lane)에서 다시 작동하도록 명령을 설명합니다§
ACL 표시와 관련된 명령 (권한) 열이 매우 오래된 상태에서 실패했습니다PostgreSQL해당 버전에 존재하지 않는 함수를 사용하여 서버.
1ms 미만의 간격이 지정되어 있으면 매달려 피하십시오PSQL's\ watch
Command (Andrey Borodin, Michael Paquier)§
대신, 이것을 0의 간격과 동일하게 취급하십시오 (실행 사이의 대기 없음)
복제 비밀번호를 찾지 못하는 수정~/.pgpass
(Tom Lane)§
PG_BASEBACKUP및pg_receivewal입력과 일치하지 못했습니다~/.pgpass
복제
데이터베이스 이름 필드에서-d
또는-dbname
스위치가 제공되었습니다. 이로 인해 비밀번호에 대한 예기치 않은 프롬프트가 발생했습니다.
inPG_COMBINEBACKUP, 전체 백업 (Robert Haas)을 포함하는 디렉토리에 증분 백업 파일이 존재하는 경우 오류를 던집니다.§
inPG_COMBINEBACKUP, 이중 슬래시 (Robert Haas)를 포함하는 파일 이름을 구성하지 마십시오.§
이것은 기능적 문제가 발생하지 않았지만 중복 슬래시는 오류 메시지에서 볼 수 있었기 때문에 혼란을 야기 할 수 있습니다..
임시 테이블과 인덱스를 다시 구매하려고하지 마십시오VACUUMDB및 병렬ReindexDB(Vaibhaves, Michael Paquier, Fujii Masao, Nathan Bossart)§ § §
다른 세션의 임시 테이블이 작동 할 수는 없지만 일부 코드 경로에서 건너 뛰는 수표가 누락되어 원치 않는 실패로 이어졌습니다..
ARM64 플랫폼에서 잘못된 LLVM 생성 코드 수정 (Thomas Munro, Anthonin Bonnefoy)§
ARM 플랫폼에서 JIT 컴파일을 사용할 때 생성 된 코드는 32 비트를 초과하는 재배치 거리를 지원할 수 없으므로 생성 된 코드를 대규모 메모리 시스템에 서버 충돌로 인한 운이 좋지 않습니다.
해당 프로세스 시작 시간을 가정 한 몇 개의 장소를 수정하십시오 (Atime_t
)는 A에 적합합니다.Long
Value (Max Johnson, Nathan Bossart)§
플랫폼에서Long
는 32 비트 (특히 Windows)이며,이 코딩은 Y2038 이후에 실패합니다. 대부분의 실패는 화장품 만 보이지만 특히PG_CTL 시작
매달릴 것입니다.
시간대 데이터 파일 업데이트TZDATA릴리스 2024B (Tom Lane)§ §
thisTZDATA릴리스 릴리스 기존 시스템 V 호환성 영역 이름을 변경하여 해당 지역 영역을 복제합니다. 예를 들어pst8pdt
이제America/Los_angeles
. 주요한 눈에 띄는 결과는 표준화 된 시간대가 도입되기 전 타임 스탬프의 경우 영역이 지정된 위치에 대한 로컬 평균 태양 시간을 나타내는 것으로 간주됩니다.pst8pdt
, TimesTamptz
예 : 입력1801-01-01 00:00
이전에 이전에1801-01-01 00 : 00 : 00-08
, 그러나 이제는1801-01-01 00 : 00 : 00-07 : 52 : 58
.
멕시코, 몽골 및 포르투갈의 역사적 교정. 특히,Asia/Choibalsan
이제Asia/Ulaanbaatar
별도의 영역이 아니라 주로 해당 구역의 차이가 신뢰할 수없는 데이터를 기반으로 한 것으로 밝혀 졌기 때문에
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다.이 양식문서 문제를보고하려면