출시 날짜 :2022-08-11
이 무지개 토토에는 10.21의 다양한 수정 사항이 포함되어 있습니다. Major Release 10의 새로운 기능에 대한 정보는 참조젠 토토 PostgreSQL : 문서 : 10 : E.24. 릴리스 10.
thepostgresql커뮤니티는 2022 년 11 월 10.x 릴리스 시리즈의 업데이트를 출시 할 것입니다. 사용자는 곧 새로운 릴리스 지점으로 업데이트하는 것이 좋습니다.
10.x.를 실행하는 사람들에게는 덤프/복원이 필요하지 않습니다.
그러나 10.19 이전 버전에서 업그레이드하는 경우 참조스포츠 토토 결과 PostgreSQL : 문서 : 10 : E.5. 릴리스 10.19.
확장 스크립트가 확장에 속하지 않은 개체를 교체하지 마십시오 (Tom Lane)
이 변경 사항은 확장 스크립트가 수행하는 것을 방지합니다생성 또는 교체
확장자에 속하지 않는 기존 객체가있는 경우. 또한 방지존재하지 않으면 생성
같은 상황에서. 이는 적대적인 데이터베이스 사용자가 확장 객체의 소유자가 될 수있는 트로이 목마 공격의 형태를 방지 한 다음 다른 사용자의 향후 객체 사용을 손상시키기 위해 수정합니다. 부수적 인 이점으로, 실수로 객체를 교체 할 위험이 줄어 듭니다.
thePostgreSQL이 문제를보고 한 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
주제 거래가 눈에 보이는 것으로 간주되기 전에 다양한 오작동으로 이어집니다. 레이스 조건 창은 일반적으로 매우 좁지 만 동기식 복제를 사용하는 것이 훨씬 더 넓어집니다. 동기 복제 대기가 해당 창에서 발생하기 때문입니다.
수정107PostgreSQL : 문서 : 10 : E.2. 무지개 토토 10.2246변수 대상 목록에서 찾을 수없는 가변”하위를 당기는 경우 플래너 오류select
a 참조그룹화
기능 (Richard Guo)
예방pg_stat_get_subscription ()
가비지 값을 포함하는 여분의 행을 반환 할 수 있습니다 (Kuntal Ghosh)
pg_stop_backup ()
세션 상태를 제대로 정리합니다 (Fujii Masao)
이 누락은 세션 후반에 주장 실패 또는 충돌로 이어질 수 있습니다.
고정 Alias Matching in 수정[키] 업데이트/공유.
Clauses (Dean Rasheed)
코너의 경우 오도 오류 가보고 될 수 있습니다.
너무 많은 열 별칭이 첨부되어 있으면 충돌하지 않도록하십시오.xmltable
또는json_table
Construct (Álvaro Herrera)
거부11850_11857
표현 및 기능From
열이 너무 많습니다 (Tom Lane)
약 1600 개의 열이 약 1600 개가 넘는 사례는 지원되지 않으며 항상 실행에 실패했습니다. 그러나 일부 초기 코드는 32k 이상의 열이있는 쿼리로 어설 션 실패 또는 충돌로 이어질 수 있습니다. 이를 방지하기 위해 구문 분석 시간 점검을 추가하십시오.
보기 또는 규칙을 디 컴파일 할 때 A 표시select
출력 열as "? column?"
다른 곳에서 참조 할 수있는 경우 별칭 조항 (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)에서 메모리 누출 수정
논리 복제 (Euler Taveira)에서 구체화 된 뷰에 대한 힙-리이트 임시 테이블을 무시합니다
a모든 테이블
Publication은 자체 장치에 맡겨진 경우 임시 테이블을 게시하려고합니다. 이를 억제하는 휴리스틱이 있지만, 구체화 된보기를 다시 작성하는 동안 생성 된 내부 임시 테이블을 다루지 못했습니다. 이것은의 위험을 초래했습니다.“논리적 복제 대상 관계 ... 존재하지 않습니다”Refresh INSACERIFED VIEW
.
유효하지 않은 시간대 약어 파일을 읽을 때 오픈 파일 누출 방지 (Kyotaro Horiguchi)
그러한 경우는 무해한 경고 메시지를 초래할 수 있습니다.
사용자 정의 서버 매개 변수가 NULL (Steve Chavez)의 짧은 설명을 갖도록 허용
이전에, 확장자가 그러한 설정을 생성하도록 선택할 수 있지만, 일부 코드 경로는 처리하는 동안 충돌합니다.
올바르게 처리하려면 WAL 일관성 검사 로직 수정brin_evacuate_page
플래그 (Haiyang Wang)
잘못 인도 된 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)로 취소 한 후 Newline을 반향
이것은 커서가 어떤 열에 있는지에 대해 Libedit (및 아마도 libreadline)이 혼란스러워지는 것을 방지합니다..
수정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건물 중에 설치가 있습니다PostgreSQL(Tom Lane)