출시일: 2022-08-11
이 릴리스에는 14.4의 다양한 수정 사항이 포함되어 있습니다. 주요 릴리스 14의 새로운 기능에 대한 자세한 내용은 다음을 참조하세요.윈 토토 PostgreSQL : 문서 : 14 : E.18. 릴리스 14.
14.X를 실행하는 경우 덤프/복원이 필요하지 않습니다.
그러나 14.4 이전 버전에서 업그레이드하는 경우 다음을 참조하세요.PostgreSQL : 문서 : 14 : E.14. 토토 꽁 머니 14.4.
확장 스크립트가 아직 확장에 속하지 않은 개체를 대체하도록 허용하지 않음(Tom Lane)§
이 변경으로 인해 확장 스크립트가 수행되지 않습니다.생성 또는 교체확장에 속하지 않는 기존 개체가 있는 경우. 또한 방지합니다존재하지 않는 경우 생성같은 상황에서요. 이는 적대적인 데이터베이스 사용자가 확장 개체의 소유자가 된 다음 확장 개체를 수정하여 나중에 다른 사용자가 해당 개체를 사용하는 것을 손상시킬 수 있는 트로이 목마 공격 형태를 방지합니다. 부가적인 이점으로 의도하지 않은 객체를 실수로 교체할 위험도 줄어듭니다.
그포스트그레SQL프로젝트는 이 문제를 보고한 Sven Klemm에게 감사드립니다. (CVE-2022-2625)
재생 수정데이터베이스 생성대기 서버의 WAL 레코드(Kyotaro Horiguchi, Asim R Praveen, Paul Guo)§ § § §
대기 서버는 데이터베이스 생성 WAL 레코드를 재생할 때 테이블스페이스 디렉토리가 누락될 수 있습니다. 이 패치 이전에는 이러한 경우 대기가 복구되지 않았습니다. 그러나 그러한 디렉토리는 합법적으로 누락될 수 있습니다. 일반 디렉터리로 테이블스페이스를 생성한 다음 재생이 일관된 상태에 도달하면 테이블스페이스가 다시 삭제되었는지 확인하세요.
지원“제자리에”테이블스페이스(Thomas Munro, Michael Paquier, Álvaro Herrera)§ § §
일반적으로 Postgres 테이블스페이스는 다른 파일 시스템의 디렉토리에 대한 심볼릭 링크입니다. 이 변경을 통해 일반 디렉터리로 만들 수 있습니다. 이는 테이블을 다른 파일 시스템으로 분리하는 데는 쓸모가 없지만 테스트에는 편리한 설정입니다. 또한 다음을 지원해야 합니다.데이터베이스 생성누락된 테이블스페이스를 일시적으로 생성하는 재생 수정“제자리에”테이블스페이스.
권한 확인 수정색인 생성(네이선 보사르, 노아 미쉬)§
CVE-2022-1552에 대한 수정으로 인해 발생함색인 생성이전에는 호출 사용자의 권한이 사용되었던 연산자 클래스 및 기타 개체를 조회하는 동안 테이블 소유자의 권한을 적용합니다. 이로 인해 덤프/복원 시나리오가 중단되었습니다. 왜냐하면pg_dump문제색인 생성권한을 다시 부여하기 전에.
확장 쿼리 프로토콜토토는 이후에 즉시 커밋을 강제합니다.데이터베이스 생성및 트랜잭션 블록토토 실행할 수 없는 기타 명령(Tom Lane)§
클라이언트가 이러한 명령 직후에 동기화 메시지를 보내지 않고 대신 다른 명령을 보내는 경우, 해당 명령이 실패하면 이전 명령이 롤백되며 일반적으로 디스크에 일관되지 않은 상태(예: 누락 또는 추가 데이터베이스 디렉토리)가 남게 됩니다. 이러한 상황을 방지하기 위한 메커니즘은 단순 쿼리 메시지의 여러 명령에 대해 작동하지만 일련의 확장 프로토콜 메시지에는 작동하지 않습니다. 현재 작동하는 사용 사례를 중단하지 않고 불일치를 방지하려면 해당 명령 뒤에 암시적 커밋을 강제 적용하세요.
트랜잭션 가시성을 확인할 때 경합 상태 수정(Simon Riggs)§
TransactionIdIsInProgress보고할 수 있음거짓주제 트랜잭션이 표시되는 것으로 간주되기 전에 다양한 오작동이 발생합니다. 경쟁 조건 기간은 일반적으로 매우 좁지만 동기 복제를 사용하면 해당 기간토토 동기 복제본에 대한 대기가 발생하므로 훨씬 더 넓어집니다.
비최상위 집합 반환 함수가 포함된 표현식으로 정렬할 때 잘못된 계획 수정(Richard Guo, Tom Lane)§ §
확장 통계에 대한 잘못된 권한 확인 코드 수정(Richard Guo)§
사용자가 일부만 가지고 있는 테이블에 확장된 통계가 있는 경우선택권한이 켜져 있으면 일부 쿼리가 실패합니다.“인식할 수 없는 노드 유형”오류.
부울 값 표현식토토 MCV 유형 통계를 처리하도록 확장된 통계 기계 수정(Tom Lane)§
통계 수집은 잘 작동했지만, 그러한 표현식이 포함된 쿼리는어디실패할 것임“알 수 없는 절 유형”.
플래너 코어 덤프 방지에 MCV 유형 확장 통계가 있는 경우의 절상수= 모두(배열)배열변수 (톰 레인)§ §
수정테이블 변경 ... 트리거 활성화/비활성화분할된 테이블의 트리거에 대한 재귀를 올바르게 처리하기 위해(Álvaro Herrera, Amit Langote)§ §
어떤 경우에는 a“트리거가 존재하지 않습니다.”명령이 트리거가 없는 하위 파티션토토 트리거를 조정하려고 시도하기 때문에 실패가 발생합니다.
취소 허용분석확장 통계를 계산하는 동안 (Tom Lane, Justin Pryzby)§
통계 목표가 높은 일부 시나리오토토는 취소할 수 없는 정렬 작업에 많은 시간이 소요될 수 있었습니다.
유형에 대한 구문 오류 메시지 개선jsonpath(앤드류 던스턴)§
다음을 확인하세요pg_stop_backup()세션 상태를 적절하게 정리합니다(Fujii Masao)§
이 누락은 나중에 세션토토 어설션 실패 또는 충돌로 이어질 수 있습니다.
수정trim_array()0차원 배열 인수를 제대로 처리하려면 (Martin Kalcher)§
다음에서 일치하는 조인 별칭 수정[키] 업데이트/공유용절 (딘 라쉬드)§
특이한 경우에는 오해의 소지가 있는 오류가 보고될 수 있습니다.
거부ROW()식 및 함수발신열이 너무 많습니다(Tom Lane)§ §
약 1600개 이상의 열이 있는 사례는 지원되지 않으며 항상 실행에 실패했습니다. 그러나 일부 이전 코드는 32,000개가 넘는 열이 포함된 쿼리로 인해 어설션 실패 또는 충돌이 발생할 수 있다는 사실이 드러났습니다. 이를 방지하려면 구문 분석 시간 검사를 추가하세요.
함수를 사용하여 뷰 덤프 수정발신뷰가 작성된 이후 복합 유형의 열이 삭제된 경우 복합 유형을 반환하는 경우(Tom Lane)§
이러한 감독으로 인해 덤프/다시 로드 또는pg_upgrade실패합니다. 덤프된 뷰에 함수에 대한 열 별칭이 너무 많기 때문입니다.
논리적 복제 Walsender토토 중첩된 백업 작업을 허용하지 않습니다(Fujii Masao)§
논리적 복제 구독자의 메모리 누수 수정(Hou Zhijie)§
대상 테이블이 분할될 때 논리적 복제의 복제본 ID 확인 문제 수정 (Shi Yu, Hou Zhijie)§ §
복제본 ID 열은 하위 파티션에 대해 다시 식별되어야 합니다.
게시자에서 스키마 변경 후 논리적 복제 구독자의 캐시된 스키마 데이터 업데이트 실패 문제 수정(Shi Yu, Hou Zhijie)§ §
WAL 일관성 검사 로직을 올바르게 처리하도록 수정BRIN_EVACUATE_PAGE플래그 (왕 하이양)§ §
공유 해시테이블 관리에서 잘못된 어설션 검사 수정(Thomas Munro)§
다음의 경우 어설션 실패를 방지하세요.min_dynamic_shared_memory기본값이 아닌 값으로 설정됨(Thomas Munro)§
커밋 시간 오류 후 정리 준비SPI_commit(), 발신자가 그렇게 하도록 기대하기보다는 (Peter Eisentraut, Tom Lane)§ §
적절한 정리는 복잡하고 낮은 수준의 시설을 사용해야 하므로 알려진 호출자가 제대로 처리하지 못하는 것은 놀라운 일이 아닙니다. 이로 인해 PL 절차가 실행될 때 잘못된 행동이 발생했습니다.커밋그러나 실패가 발생했습니다(예: 지연된 제약 조건 확인). 문제를 개선하려면 재정의하세요.SPI_commit()새 트랜잭션을 시작하면 다음과 동일해집니다.SPI_commit_and_chain()이전 트랜잭션의 특성을 유지하는 대신 기본 트랜잭션 특성을 얻는다는 점은 제외됩니다. 이를 API 측면에서 다소 투명하게 만들려면 재정의하세요.SPI_start_transaction()무작동으로. 알려진 모든 발신자SPI_commit()즉시 전화SPI_start_transaction(), 그래서 그들은 어떤 변화도 눈치 채지 못할 것입니다. 유사한 설명이 다음에 적용됩니다.SPI_rollback().
또한 이러한 오류 처리를 전혀 생략하여 Python 인터프리터에서 튀어나오는 PL/Python을 수정했습니다. 이로 인해 Python 3.11이 충돌하는 것으로 보고되었습니다. 이전 Python 릴리스에서는 일부 메모리가 누출되지만 그 외에는 괜찮은 것 같습니다.
개선libpq'의 파이프라인 모드 유휴 상태 처리(Álvaro Herrera, Kyotaro Horiguchi)§ §
이 수정사항“유휴 상태토토 서버로부터 메시지 유형 0x33이 도착함”경고 및 쿼리 끝 NULL 결과의 손실 가능성PQgetResult().
코어 덤프 방지ecpglib예상치 못한 작업 지시로 (톰 레인)§
다음과 같은 특정 작업EXEC SQL 준비데이터베이스 연결을 설정하기 전에 호출하면 예상대로 오류를 보고하지 않고 충돌이 발생합니다.
에ecpglib, 중복 방지newlocale()전화(노아 미쉬)§ §
쿼리당 한 번씩 로케일 개체를 생성하고 해제하는 대신 처음 연결할 때 프로세스당 한 번씩 C 로케일 개체를 할당하십시오. 이는 AIX토토 libc 메모리 누수를 완화하고 모든 곳토토 성능상의 이점을 제공할 수 있습니다.
에psql's\watch명령, 취소 후 control-C를 사용하여 개행을 에코합니다(Pavel Stehule)§
이것은 libedit(및 아마도 libreadline)가 커서가 어느 열에 있는지 혼동하는 것을 방지합니다.
수정pg_upgrade업그레이드할 수 없는 기능 사용을 감지하기 위해임의배열(저스틴 프리즈비)§ §
버전 14토토는 일부 내장 함수가 유형을 취하도록 변경되었습니다.모든 호환 어레이대신에아무 배열. 이는 대부분 투명하지만 이러한 함수 위에 구축된 사용자 정의 집계 및 연산자는 정확히 일치하는 유형으로 선언되어야 합니다. 이전 서명을 참조하는 개체가 있으면 다음이 발생합니다.pg_upgrade실패하므로 업그레이드를 시작하기 전에 이러한 사례를 감지하고 보고하도록 변경하세요.
이후 잘못된 오류 상태에 대한 보고 가능성 수정복제()실패pg_upgrade함께--클론옵션 (저스틴 프리즈비)§
수정contrib/pg_stat_statements32비트 플랫폼에서 매우 큰 쿼리 텍스트 파일 관련 문제를 방지하기 위해(Tom Lane)§
에contrib/postgres_fdw, 다음이 있는 경우 일괄 삽입 방지체크 옵션 포함제약(후지타 에츠로)§
한 번에 하나 이상의 행이 삽입되면 이러한 제약 조건을 제대로 확인할 수 없습니다.
수정contrib/postgres_fdw비동기 데이터 가져오기 쿼리 전송 실패를 감지합니다(Fujii Masao)§
다음을 확인하세요contrib/postgres_fdw상수를 보냅니다regconfig및 기타reg*적절한 스키마 한정이 있는 유형(Tom Lane)§
Linux토토 동적 공유 메모리를 할당하는 동안 신호 차단(Thomas Munro)§ § §
이것은 신호가 중단될 때 문제를 방지합니다posix_fallocate().
예상치 못한 감지EEXIST오류 발생자shm_open()(토마스 먼로)§
이것은 Solaris토토 발생할 수 있는 충돌을 방지합니다.
사용하지 마세요신호fd()켜짐일루모스시스템 (토마스 먼로)§
이것은 정지 및 커널 패닉을 유발하는 것으로 보이므로 수정 사항이 제공될 때까지 이 기능을 사용하지 마십시오.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.