출시 날짜 :2022-08-11
이 릴리스에는 14.4의 다양한 수정 사항이 포함되어 있습니다. Major Release 14의 새로운 기능에 대한 정보는 참조윈 토토 PostgreSQL : 문서 : 14 : E.18. 릴리스 14.
14.x.를 실행하는 사람들에게는 덤프/복원이 필요하지 않습니다.
그러나 14.4 이전 버전에서 업그레이드하는 경우 참조하십시오.섹션 E.14.
확장 스크립트가 확장에 속하지 않은 개체를 교체하지 마십시오 (Tom Lane)§
이 변경 사항은 확장 스크립트가 수행하는 것을 방지합니다생성 또는 교체
확장자에 속하지 않는 기존 객체가있는 경우. 또한 방지존재하지 않으면 생성
같은 상황에서. 이는 적대적인 데이터베이스 사용자가 확장 객체의 소유자가 될 수있는 트로이 목마 공격의 형태를 방지 한 다음 다른 사용자의 향후 객체 사용을 손상시키기 위해 수정합니다.
thepostgresqlProject Sven Klemm이 문제를보고 해 주셔서 감사합니다. (CVE-2022-2625)
재생 수정데이터베이스 생성
대기 서버에 대한 WAL 레코드 (Kyotaro Horiguchi, Asim R Praveen, Paul Guo)§ § § §
대기 서버는 데이터베이스 생성 WAL 레코드를 재생할 때 테이블 스페이스 디렉토리 누락이 발생할 수 있습니다. 이 패치 전에 대기는 그러한 경우에 복구되지 않을 것입니다.
지원“장소”테이블 스페이스 (Thomas Munro, Michael Paquier, Álvaro Herrera)§ § §
일반적으로 Postgres 테이블 스페이스는 다른 파일 시스템의 디렉토리에 대한 상징적 링크입니다. 이 변경으로 인해 일반 디렉토리가 될 수 있습니다.데이터베이스 생성
재생 수정, 일시적으로 누락 된 테이블 스페이스를 A로 생성합니다“장소”테이블 스페이스.
수정 권한 수표 in색인 생성
(Nathan Bossart, Noah Misch)§
CVE-2022-1552의 수정 원인색인 생성
이전에 호출 사용자의 권한이 사용 된 운영자 클래스 및 기타 개체 조회를 수행하는 동안 테이블 소유자의 권한을 적용하려면 테이블 소유자의 권한을 적용합니다. 이것은 덤프/복원 시나리오를 깨뜨 렸습니다. 왜냐하면pg_dump문제색인 생성
다시 부여 권한 전.
확장 쿼리 프로토콜토토 즉시 커밋을 강제로데이터베이스 생성
및 트랜잭션 블록 (Tom Lane)토토 실행할 수없는 기타 명령§
클라이언트가 해당 명령 직후에 동기화 메시지를 보내지 않고 대신 다른 명령을 보내는 경우 해당 명령의 실패는 이전 명령을 롤백하여 일반적으로 일관되지 않은 상태 온 디스크 (예 : 누락 또는 추가 데이터베이스 디렉토리)를 남깁니다. 그 상황을 방지하기위한 메커니즘은 간단한 메시지에서 여러 명령에 대해 작동하지만 일련의 확장 프로토콜 메시지에는 그렇지 않습니다.
트랜잭션 가시성을 확인할 때 레이스 조건을 수정 (Simon Riggs)§
TransactionIdisinProgress
보고서false
주제 거래가 눈에 띄는 것으로 간주되기 전에 다양한 오작동으로 이어집니다. 레이스 조건 창은 일반적으로 매우 좁지 만 동기식 복제를 사용하는 것이 훨씬 더 넓어집니다. 동기 복제 대기가 해당 창토토 발생하기 때문입니다.
확장 통계에 대한 잘못된 권한 확인 코드 (Richard Guo)§
사용자가 부분 만있는 테이블에 확장 된 통계가있는 경우select
권한에 대한 권한, 일부 쿼리는에 실패합니다.“인식되지 않은 노드 유형”오류.
부울 값 표현식 (Tom Lane)에 대한 MCV 유형 통계를 처리하기위한 확장 통계 기계 수정 (§
Statistics Collection은 잘 작동했지만 그러한 표현이 포함 된 쿼리여기서
“알 수없는 조항 유형”.
플래너 코어 덤프 방지
Clauses는 MCV 유형 확장 통계가있을 때의 조항Constant
= Any (배열
)배열
가변 (Tom Lane)§ §
수정ALTER 테이블 ... 활성화/비활성화 트리거
분할 된 테이블의 트리거에 대한 재귀를 올바르게 처리하려면 (Álvaro Herrera, Amit Langote)§ §
어떤 경우에는 A“트리거가 존재하지 않습니다”실패는 명령이 아동 파티션토토 트리거를 조정하려고 시도하기 때문에 발생합니다.
취소 허용분석
확장 통계를 컴퓨팅하는 동안 (Tom Lane, Justin Pryzby)§
통계 대상이 높은 일부 시나리오토토는 암성 불가능한 정렬 작업토토 몇 초를 소비 할 수있었습니다.
유형에 대한 구문 오류 메시지 향상JSONPATH
(Andrew Dunstan)§
pg_stop_backup ()
세션 상태를 제대로 정리합니다 (Fujii Masao)§
이 누락은 세션 후반에 주장 실패 또는 충돌로 이어질 수 있습니다.
수정trim_array ()
제로 차원 배열 인수를 처리하려면 Sanely (Martin Kalcher)§
고정 alias matching in[키] 업데이트/공유.
Clauses (Dean Rasheed)§
코너의 경우 오도 오류 가보고 될 수 있습니다.
거부row ()
표현 및 기능From
너무 많은 열 (Tom Lane)§ §
약 1600 개의 열이 약 1600 개가 넘는 사례는 지원되지 않으며 항상 실행에 실패했습니다. 그러나 일부 초기 코드는 32k 이상의 열이있는 쿼리로 어설 션 실패 또는 충돌로 이어질 수 있습니다.
함수를 사용하여 뷰의 덤프 수정From
뷰가 만들어진 후 복합 유형의 열이 삭제 된 경우 복합 유형을 반환합니다 (Tom Lane)§
이 감독은 덤프/다시로드 또는로 이어질 수 있습니다.pg_upgrade덤프 뷰가 함수에 대해 너무 많은 열 별명을 갖기 때문에 실패.
논리적 복제 Walsenders (Fujii Masao)토토 중첩 백업 작업을 허용하지 않습니다.§
논리적 복제 가입자 (Hou Zhijie)에서 메모리 누출 수정§
대상 테이블이 분할 될 때 (Shi Yu, Hou Zhijie) 논리 복제의 복제 아이덴티티 검사 수정§ §
아동 파티션에 대해서는 복제 아이덴티티 열을 재 식별해야합니다.
게시자 (Shi Yu, Hou Zhijie)의 스키마 변경 후 논리적 복제 가입자로 캐시 된 스키마 데이터를 업데이트하지 못하는 실패 수정§ §
올바르게 처리하려면 WAL 일관성 검사 논리 수정brin_evacuate_page
플래그 (Haiyang Wang)§ §
공유 해시 가능 관리 (Thomas Munro)에서 잘못된 어설 션 확인 수정§
어설 션 실패를 피하십시오min_dynamic_shared_memory
|가 아닌 값 (Thomas Munro)로 설정되었습니다.§
내 커밋 타임 오류 후 정리 준비SPI_COMMIT ()
, 발신자가 그렇게하기를 기대하는 대신 (Peter Eisentraut, Tom Lane)§ §
적절한 청소는 복잡하고 저수준 시설을 사용해야하므로 알려진 발신자가 제대로 얻지 못했다는 것은 놀라운 일이 아닙니다. 이로 인해 PL 절차가 발행되었을 때커밋
그러나 실패가 발생했습니다 (예 : 지연된 제약 조건 검사). 문제를 개선하려면 재정의SPI_COMMIT ()
새로운 트랜잭션을 시작하여SPI_COMMIT_AND_CHAIN ()
이전 트랜잭션의 특성을 보존하는 대신 기본 트랜잭션 특성을 얻는 것을 제외하고. 이것을 다소 투명한 API로 만들려면 redefineSPI_START_TRANSACTION ()
NO-OP로서. 알려진 모든 발신자SPI_COMMIT ()
즉시 전화SPI_START_TRANSACTION ()
, 따라서 변경 사항은 눈치 채지 못할 것입니다. 비슷한 발언이 적용spi_rollback ()
.
또한 PL/Python을 수정하여 이러한 오류의 처리가 전혀 생략되어 Python 통역사에서 뛰어 내 렸습니다. 이것은 Python 3.11 충돌로보고됩니다.
개선libpq의 파이프 라인 모드토토의 유휴 상태 처리 (Álvaro Herrera, Kyotaro Horiguchi)§ §
이것은 수정“메시지 유형 0x33은 서버토토 유휴 상태토토 도착했습니다”경고, 그리고 가능한 종말 널 손실 결과pqgetresult ()
.
코어 덤프 방지ecpglib예상치 못한 운영 주문 (Tom Lane)§
Exec SQL 준비
데이터베이스 연결을 설정하기 전에 호출 된 경우 (예상대로 오류를보고하지 않고) 충돌합니다.
inecpglib, 중복 피하십시오Newlocale ()
전화 (Noah Misch)§ §
쿼리 당 한 번에 로케일 객체를 생성하고 자유롭게하는 대신 처음 연결할 때 프로세스 당 한 번 C 로케일 객체를 할당합니다. 이것은 AIX토토 LIBC 메모리 누출을 완화하고 모든 곳토토 성능 이점을 제공 할 수 있습니다.
inPSQL's\ watch
명령, Control-C (Pavel Stehule)로 취소 한 후 Newline을 반향합니다.§
이것은 커서가 어떤 칼럼에 있는지 혼란스러워지는 것을 방지합니다.
수정pg_upgrade업그레이드 할 수없는 기능 사용을 감지하려면AnyArray
(Justin Pryzby)§ §
버전 14는 일부 내장 함수를 유형을 취하도록 변경했습니다anycompatiblearray
대신AnyArray
. 이것은 대부분 투명하지만 사용자 정의 골재 및 이러한 기능 위에 내장 된 운영자는 정확히 일치하는 유형으로 선언해야합니다.pg_upgrade실패하므로 업그레이드를 시작하기 전에 그러한 사례를 감지하고보고하도록 변경하십시오.
오류가 발생한 오류 조건에 대한 보고서 수정clone ()
실패pg_upgradewith-클론
옵션 (Justin Pryzby)§
수정contrib/pg_stat_statements
32 비트 플랫폼 (Tom Lane)의 매우 큰 쿼리 텍스트 파일의 문제를 피하려면§
inContrib/Postgres_FDW
,있을 때 배치 삽입 방지확인 옵션
제약 (Etsuro Fujita)§
한 번에 한 행 이상을 한 번에 삽입하면 이러한 제약 조건을 제대로 점검 할 수 없습니다.
수정Contrib/Postgres_FDW
비동기 데이터 전송 실패를 감지하려면 쿼리 쿼리 (Fujii Masao)§
Contrib/Postgres_FDW
상수를 보냅니다RegConfig
및 기타Reg*
적절한 스키마 자격이있는 유형 (Tom Lane)§
Linux (Thomas Munro)에 동적 공유 메모리를 할당하는 동안 신호를 차단합니다§ § §
신호가 중단 될 때 문제를 피합니다posix_fallocate ()
.
예상치 못한 감지eexist
오류shm_open ()
(Thomas Munro)§
이것은 Solaris토토의 충돌 가능성을 피합니다.
사용하지 마십시오signalfd ()
onIllumosSystems (Thomas Munro)§
이것은 교수형과 커널 패닉을 트리거하는 것처럼 보이므로 수정을 사용할 수있을 때까지 기능을 피하십시오.
문서에 올바른 것이 없다면 일치하지 않습니다.이 양식문서 문제를보고하려면