출시 날짜 :2022-08-11
이 젠 토토에는 11.16의 다양한 수정 사항이 포함되어 있습니다. Major Release 11의 새로운 기능에 대한 정보는 참조섹션 E.23.
11.x.를 실행하는 사람들에게는 덤프/복원이 필요하지 않습니다.
그러나 11.14 이전 버전에서 업그레이드하는 경우 참조섹션 E.9.
확장 스크립트가 확장에 속하지 않은 개체를 교체하지 마십시오 (Tom Lane)
이 변경 사항은 확장 스크립트가 수행하는 것을 방지합니다생성 또는 교체
확장자에 속하지 않는 기존 객체가있는 경우. 또한 방지존재하지 않으면 생성
같은 상황에서. 이는 적대적인 데이터베이스 사용자가 확장 객체의 소유자가 될 수있는 트로이 목마 공격의 형태를 방지 한 다음 다른 사용자의 향후 객체 사용을 손상시키기 위해 수정합니다.
the젠 토토이 문제를보고 해 주신 Sven Klemm에게 감사합니다. (CVE-2022-2625)
재생 수정데이터베이스 생성
대기 서버에 대한 WAL 레코드 (Kyotaro Horiguchi, Asim R Praveen, Paul Guo)
대기 서버는 데이터베이스 생성 WAL 레코드를 재생할 때 테이블 스페이스 디렉토리 누락이 발생할 수 있습니다. 이 패치 전에 대기는 그러한 경우에 복구되지 않을 것입니다.
지원“장소”테이블 스페이스 (Thomas Munro, Michael Paquier, Álvaro Herrera)
일반적으로 Postgres 테이블 스페이스는 다른 파일 시스템의 디렉토리에 대한 상징적 링크입니다. 이 변경으로 인해 일반 디렉토리가 될 수 있습니다.데이터베이스 생성
재생 수정, 누락 된 테이블 스페이스를 일시적으로 생성하는“장소”테이블 스페이스.
수정 권한 수표 in색인 생성
(Nathan Bossart, Noah Misch)
CVE-2022-1552의 수정 원인색인 생성
이전에 호출 사용자의 권한이 사용 된 운영자 클래스 및 기타 개체 조회를 수행하는 동안 테이블 소유자의 권한을 적용하려면 테이블 소유자의 권한을 적용합니다. 이것은 덤프/복원 시나리오를 깨뜨 렸습니다. 왜냐하면pg_dump문제색인 생성
다시 부여하기 전.
확장 쿼리 프로토콜에서 즉시 커밋을 강제로데이터베이스 생성
및 트랜잭션 블록 (Tom Lane)에서 실행할 수없는 기타 명령
클라이언트가 해당 명령 직후에 동기화 메시지를 보내지 않고 대신 다른 명령을 보내는 경우 해당 명령의 실패는 이전 명령을 롤백하여 일관되지 않은 상태 온 디스크 (예 : 누락 또는 추가 데이터베이스 디렉토리)를 남깁니다. 그 상황을 방지하기위한 메커니즘은 간단한 메시지에서 여러 명령에 대해 작동하지만 일련의 확장 프로토콜 메시지에는 그렇지 않습니다.
트랜잭션 가시성을 확인할 때 레이스 조건을 수정 (Simon Riggs)
TransactionIdisinProgress
보고 할 수 있습니다false
주제 거래가 눈에 띄는 것으로 간주되기 전에 다양한 오작동으로 이어집니다. 레이스 조건 창은 일반적으로 매우 좁지 만 동기식 복제를 사용하는 것이 훨씬 더 넓어집니다. 동기 복제 대기가 해당 창에서 발생하기 때문입니다.
queries a 수정“전체 열 변수”복합 유형 (Tom Lane)을 통해 도메인을 반환하는 함수의 결과를 참조하십시오.
수정“변수 대상 목록에서 찾을 수없는 가변”하위를 당기는 경우 플래너 오류select
a 참조그룹화
기능 (Richard Guo)
수정ALTER 테이블 ... 활성화/비활성화 트리거
분할 된 테이블의 트리거에 대한 재귀를 올바르게 처리하려면 (Álvaro Herrera, Amit Langote)
어떤 경우에는 a“트리거가 존재하지 않습니다”실패는 명령이 아동 파티션에서 트리거를 조정하려고 시도하기 때문에 발생합니다.
예방pg_stat_get_subscription ()
가비지 값 (Kuntal Ghosh)을 포함하는 추가 행을 반환 할 수 있습니다.
pg_stop_backup ()
세션 상태를 제대로 정리합니다 (Fujii Masao)
이 누락은 세션 후반에 주장 실패 또는 충돌로 이어질 수 있습니다.
고정 Alias Matching in[키] 업데이트/공유.
Clauses (Dean Rasheed)
코너의 경우 오도 오류 가보고 될 수 있습니다.
너무 많은 열 별칭이 첨부되어 있으면 충돌하지 않도록합니다.xmltable
또는json_table
Construct (Álvaro Herrera)
거부row ()
표현 및 기능의From
너무 많은 열 (Tom Lane)
약 1600 개의 열이 약 1600 개가 넘는 사례는 지원되지 않으며 항상 실행에 실패했습니다. 그러나 일부 초기 코드는 32k 이상의 열이있는 쿼리로 어설 션 실패 또는 충돌로 이어질 수 있습니다.
보기 또는 규칙을 디 컴파일 할 때 A 표시select
출력 열as "? 컬럼?"
다른 곳에서 참조 할 수있는 경우 별칭 조항 (Tom Lane)
이전 에이 자동 생성 된 별칭은 항상 숨겨져있었습니다. 그러나 이렇게하는 모서리 사례가 있습니다.
함수를 사용하여 뷰의 덤프 수정From
뷰가 만들어진 후 복합 유형의 열이 삭제 된 경우 복합 유형을 반환합니다 (Tom Lane)
이 감독은 덤프/다시로드 또는로 이어질 수 있습니다.pg_upgrade덤핑 된보기에 기능에 대한 열 별칭이 너무 많아서 실패합니다.
이벤트 트리거 (Masahiko Sawada)에 암시 적으로 생성 된 운영자 가족을보고합니다.
if운영자 클래스 만들기
운영자 제품군의 암시 적 생성을 초래하고, 그 개체는 그러한 이벤트를 포착 해야하는 이벤트 트리거 에보 고되지 않았습니다..
대기 서버 (Kyotaro Horiguchi)를 홍보하는 동안 다시 시작점이 실행될 때 제어 파일 업데이트 수정
이전에, 다시 시작 포인트가 완료되면 제어 파일의 마지막 체크 포인트 필드를 잘못 업데이트 할 수 있으며, 다음 정상 체크 포인트가 완료되기 전에 서버가 충돌하면 당황하고 다시 시작하지 않을 수 있습니다..
대기 트리거 트리거 방지Wal_Receiver_Timeout
대규모 트랜잭션의 논리 복제 중 (Wang Wei, Amit Kapila)
기본 서버의 큰 트랜잭션이 대기로 데이터를 보내지 않으면 (아마도 테이블이 변경되지 않기 때문에) 대기 시간이 타임 아웃으로 가능했습니다. 그러한 상황에서 주기적으로 keepalive 메시지를 보내도록하여 수정하십시오.
논리적 복제 Walsenders (Fujii Masao)에서 중첩 된 백업 작업을 허용하지 않습니다.
논리적 복제 가입자 (Hou Zhijie)에서 메모리 누출 수정
유효하지 않은 시간대 약어 파일을 읽을 때 오픈 파일 누출 방지 (Kyotaro Horiguchi)
그러한 경우는 무해한 경고 메시지를 초래할 수 있습니다.
사용자 정의 서버 매개 변수가 NULL (Steve Chavez)의 짧은 설명을 갖도록 허용
이전에, 확장자가 그러한 설정을 생성하기로 선택했지만 일부 코드 경로는 처리하는 동안 충돌합니다.
올바르게 처리 할 WAL 일관성 검사 논리 수정brin_evacuate_page
플래그 (Haiyang Wang)
공유 해시 가능 관리 (Thomas Munro)에서 잘못된 어설 션 검사 수정
내 커밋 시간 오류 후 정리 준비SPI_COMMIT ()
, 발신자가 그렇게하기를 기대하는 대신 (Peter Eisentraut, Tom Lane)
적절한 청소는 복잡하고 저수준 시설을 사용해야하므로 알려진 발신자가 제대로 얻지 못했다는 것은 놀라운 일이 아닙니다. 이로 인해 PL 절차가 발행되었을 때커밋
그러나 실패가 발생했습니다 (예 : 지연된 제약 조건 검사). 문제를 개선하려면 재정의SPI_COMMIT ()
새 트랜잭션을 시작하여spi_commit_and_chain ()
이전 트랜잭션의 특성을 보존하는 대신 기본 트랜잭션 특성을 얻는 것을 제외하고. 이것을 다소 투명한 API로 만들려면SPI_START_TRANSACTION ()
NO-OP로서. 알려진 모든 발신자SPI_COMMIT ()
즉시 전화SPI_START_TRANSACTION ()
, 따라서 변경 사항은 눈치 채지 못할 것입니다. 비슷한 발언이 적용spi_rollback ()
.
또한 PL/Python을 수정하여 그러한 오류의 처리를 전혀 생략하여 Python 통역사에서 뛰어 내립니다. 이것은 Python 3.11 충돌로보고됩니다.
잘못 안내 된 SSL 키 파일 소유권 확인libpq(Tom Lane)
이전 사소한 릴리스에서 SSL 개인 키 파일에 대한 서버의 권한 확인 규칙을 LIBPQ에 복사했습니다. 그러나 서버의 파일 소유 점검도 복사해서는 안됩니다.
보장ECPG보고서 서버 연결 손실 Sanely (Tom Lane)
연결 손실 보고서와 같은 LIBPQ 생성 오류 결과의 잘못 처리“(null)”유용한 오류 메시지 대신; 또는 구식 릴리스에서 충돌로 이어질 것입니다.
코어 덤프 방지ecpglib예기치 않은 운영 주문 (Tom Lane)
와 같은 특정 작업Exec SQL 준비
데이터베이스 연결을 설정하기 전에 호출 된 경우 (예상대로 오류를보고하지 않고) 충돌합니다.
inecpglib, 중복 피하십시오Newlocale ()
전화 (Noah Misch)
쿼리 당 한 번에 로케일 객체를 생성하고 자유롭게하지 않고 처음 연결할 때 프로세스 당 한 번 C 로케일 객체를 할당합니다. 이것은 AIX에서 LIBC 메모리 누출을 완화하고 모든 곳에서 성능 이점을 제공 할 수 있습니다.
inPSQL's\ watch
명령, Control-C (Pavel Stehule)로 취소 한 후 새로운 라인을 반향합니다.
이것은 커서가 어떤 칼럼에 있는지 혼란스러워지는 것을 방지합니다.
수정contrib/pg_stat_statements
32 비트 플랫폼 (Tom Lane)의 매우 큰 쿼리 텍스트 파일의 문제를 피하려면
Contrib/Postgres_FDW
상수를 보냅니다RegConfig
및 기타Reg*
적절한 스키마 자격이있는 유형 (Tom Lane)
Linux (Thomas Munro)에 동적 공유 메모리를 할당하는 동안 신호를 차단합니다
신호가 방해 할 때 문제를 피합니다posix_fallocate ()
.
예상치 못한 감지eexist
오류shm_open ()
(Thomas Munro)
이것은 Solaris에서의 충돌 가능성을 피합니다.
PL/PERL 테스트 케이스 조정을 조정하여 Perl 5.36 (Dagfinn Ilmari Mannsåker)에서 작동합니다.
오래된 사용을 잘못 사용하지 마십시오libldap_r다중 일 때 라이브러리OpenLdap건물 중에 설치가 있습니다젠 토토(Tom Lane)