출시일: 2023-11-09
이 릴리스에는 15.4의 다양한 수정 사항이 포함되어 롤 토토. 주요 릴리스 15의 새로운 기능에 대한 자세한 내용은 다음을 참조하세요.토토 캔 PostgreSQL : 문서 : 15 : E.13. 릴리스 15.
15.X를 실행하는 경우 덤프/복원이 필요하지 않습니다.
그러나 특정 유형의 색인이 잘못된 검색 결과를 산출하거나 불필요하게 비효율적이 될 수 있는 몇 가지 실수가 발견되었습니다. 다음을 수행하는 것이 좋습니다.REINDEX이 업데이트를 설치한 후 잠재적으로 영향을 받는 인덱스입니다. 아래의 네 번째부터 일곱 번째 변경 로그 항목을 참조하세요.
또한 15.4 이전 버전에서 업그레이드하는 경우 참조토토 커뮤니티 PostgreSQL : 문서 : 15 : E.9. 릴리스 15.4.
알 수 없는 유형 인수 처리 수정독특 "아무거나"집계 함수(톰 레인)§
이 오류로 인해 a텍스트-유형 값은로 해석됩니다.알 수 없음7277_7402텍스트값.
그포스트그레SQL프로젝트는 이 문제를 보고한 Jingzhou Fu에게 감사드립니다. (CVE-2023-5868)
새로운 배열 차원을 계산하는 동안 정수 오버플로 감지(Tom Lane)§
현재 배열 경계 외부에 있는 배열 첨자에 새 요소를 할당할 때, 극단적인 경우에는 감지되지 않은 정수 오버플로가 발생할 수 롤 토토. 임의 코드 실행에 잠재적으로 악용될 수 있는 메모리 스톰프가 가능하며 서버 메모리 공개도 마찬가지입니다.
그포스트그레SQL프로젝트는 이 문제를 보고한 Pedro Gallegos에게 감사드립니다. (CVE-2023-5869)
다음을 예방하세요pg_signal_backend백그라운드 작업자 및 자동 진공 프로세스에 대한 신호 전달 역할(Noah Misch, Jelte Fennema-Nio)§ §
문서에 따르면pg_signal_backend수퍼유저 소유 프로세스에 신호를 보낼 수 없습니다. 그러나 이러한 백그라운드 프로세스는 역할 OID가 0임을 알리기 때문에 신호를 보낼 수 있었습니다. 이를 슈퍼유저 소유권을 나타내는 것으로 취급하십시오. 핵심 코드가 진행되는 한 이러한 프로세스 유형 중 하나를 취소할 경우 보안에 미치는 영향은 상당히 작지만(다른 코드를 시작하겠습니다) 확장 프로그램으로 인해 더 취약한 백그라운드 작업자가 추가될 수 롤 토토.
또한 다음 사항을 확인하세요.is_superuser9164_9325
그포스트그레SQL프로젝트는 이 문제를 보고한 Hemanth Sandrana와 Mahendrakar Srinivasarao에게 감사드립니다. (CVE-2023-5870)
GiST 인덱스 빌드에서 재귀 페이지 분할 중 잘못된 동작 수정(Heikki Linnakangas)§
페이지 다운링크의 위치가 잘못 추적된 경우를 수정하고, 조용히 잘못된 일을 하기보다는 이러한 상황에서 복구할 수 있도록 몇 가지 논리를 도입하십시오. 이 오류로 인해 후속 색인 검색에서 잘못된 답변이 나올 수 롤 토토. 이 업데이트를 설치한 후 모든 GiST 인덱스를 다시 색인화하는 것이 좋습니다.
btree 색인 항목의 중복 제거 방지간격열(노아 미쉬)§
롤 토토간격구별 가능하지만 동일하다고 비교되는 값, 예를 들어24:00:00그리고1일. 이는 btree 중복 제거에 의한 가정을 깨뜨립니다. 따라서간격중복 제거에서 열을 제외해야 합니다. 이러한 감독으로 인해 인덱스 전용 스캔에서 잘못된 결과가 발생할 수 롤 토토. 게다가 업데이트 후amcheck거의 모든 색인에 대해 오류를 보고합니다. 사용자는 모든 btree 인덱스를 다시 색인화해야 합니다.간격열.
프로세스날짜BRIN에서는 더 건전한 가치를 지닙니다datetime_minmax_multi_ops색인(토마스 본드라)§
날짜에 대한 거리 계산이 거꾸로 되어 병합할 항목에 대한 잘못된 결정이 발생했습니다. 인덱스는 여전히 올바른 결과를 생성하지만 필요한 것보다 훨씬 덜 효율적입니다. BRIN을 다시 색인화하는 중minmax_multi색인날짜열을 사용하는 것이 좋습니다.
대형 프로세스타임스탬프그리고timestamptzBRIN에서는 더 건전한 가치를 지닌다datetime_minmax_multi_ops색인(토마스 본드라)§ §
무한대는 다른 값과 큰 거리가 아닌 거리 0을 갖는 것으로 잘못 처리되어 병합할 항목에 대한 잘못된 결정을 초래했습니다. 또한 유한하지만 매우 큰 값(표현 가능한 타임스탬프 범위의 끝점 근처)으로 인해 내부 오버플로가 발생하여 다시 잘못된 결정을 내릴 수 롤 토토. 인덱스는 여전히 올바른 결과를 생성하지만 필요한 것보다 훨씬 덜 효율적입니다. BRIN을 다시 색인화하는 중minmax_multi색인타임스탬프그리고timestamptz열에 무한대 또는 큰 유한 값이 포함되어 있거나 포함되어 있는 경우 열을 사용하는 것이 좋습니다.
BRIN에서 계산 오버플로 방지interval_minmax_multi_ops극단적인 간격 값을 가진 인덱스(Tomas Vondra)§
이 버그는 그러한 색인에 큰 간격 값을 삽입하려고 시도하는 동안 예기치 않은 오류를 일으킬 수 롤 토토.
여러 파티션 키가 있는 해시 파티션 테이블에 대한 파티션 단계 생성 및 런타임 파티션 정리 수정(David Rowley)§ §
다음과 관련된 일부 사례NULL임파티션 키 중 하나에 대한 조건이 충돌을 일으킬 수 롤 토토.
동시에 업데이트되는 행의 일관성 없는 재검사 문제 수정병합(딘 라시드)§
에읽어 커밋됨모드, 대상 행이 동시 트랜잭션에 의해 방금 업데이트되었음을 발견한 업데이트는 쿼리의 내용을 다시 확인합니다.어디에서업데이트된 행의 조건.병합이 재검사 중에 조인된 다른 테이블의 올바른 행이 사용되었는지 확인하지 못했기 때문에 새로 업데이트된 행을 다시 업데이트해야 하는지에 대한 잘못된 결정이 발생할 수 롤 토토.병합.
상속된 대상 테이블을 올바르게 식별업데이트/삭제/병합상위 테이블이 제약 조건에 의해 제외된 경우에도 (Amit Langote, Tom Lane)§
처음에 명명된 테이블이 제약 조건에 의해 제외되었지만 모든 상속 하위 항목이 제외된 경우 제외되지 않은 첫 번째 하위 항목이 기본 대상 테이블로 식별되었습니다. 이로 인해 처음에 이름이 지정된 테이블이 아닌 해당 테이블과 연결된 명령문 수준 트리거가 실행됩니다. v16에서는 동일한 감독으로 인해 다음과 같은 결과가 발생할 수도 롤 토토.“relid NNNN을 사용하는 RTE의 잘못된 perminfoindex 0”오류.
ScalarArrayOpExpr 절의 btree 표시/복원 처리에서 엣지 케이스 수정(Peter Geoghegan)§
indexscan을 이전에 표시된 위치로 복원할 때, 스캔이 ScalarArrayOpExpr(즉,indexcol = 모두(ARRAY[])) 절. 이로 인해 가져와야 하는 일부 행이 누락될 수 롤 토토.
Memoize 실행 시 쿼리 내 메모리 누수 수정(Orlov Aleksej, David Rowley)§
설정 반환 함수가 반복적으로 0행을 반환할 때 쿼리 내 메모리 누수 수정(Tom Lane)§
다음과 같은 경우 충돌하지 마세요.cursor_to_xmlschema()데이터를 반환하지 않는 포털(보유양)에 적용됩니다.§
다음의 경우 의도한 오류를 발생시킵니다.pgrowlocks()분할된 테이블에 적용됨(David Rowley)§
이전에는 적절하지 않은 불만 사항“힙 AM만 지원됩니다”올려질 것입니다.
다양한 SQL 함수에서 유효하지 않은 인덱스를 더욱 깔끔하게 처리합니다(Noah Misch)§
다음의 경우 오류를 보고하세요.pgstatindex(), pgstatginindex(), pgstathashindex(), 또는pgstattuple()잘못된 인덱스에 적용되었습니다. 만약에brin_desummarize_range(), brin_summarize_new_values(), brin_summarize_range()또는gin_clean_pending_list()이 잘못된 인덱스에 적용되었습니다. 디버그 수준 메시지를 보고하는 것 외에는 아무것도 수행하지 마세요. 이전에는 이러한 함수가 인덱스 처리를 시도했으며 실패한 내용에 따라 이상한 방식으로 실패할 수 롤 토토.색인 생성남겨버렸습니다.
수정pg_stat_reset_single_table_counters()공유 카탈로그에 대해 올바른 일을 하기 위해 (이케다 마사히로)§
이전에는 재설정이 효과가 없었습니다.
긴 입력으로 인한 조기 메모리 할당 실패 방지to_ts벡터()(톰 레인)§
건설된 것의 초과 할당 수정ts벡터ints벡터recv()(데니스 에로킨)§
만약 수신 벡터에 위치 데이터가 포함된 경우 바이너리 수신 기능은 완료된 공간에 낭비된 공간(대략 위치 데이터의 크기와 동일)을 남깁니다.ts벡터. 극단적인 경우에는 다음과 같은 결과가 발생할 수 롤 토토.“최대 총 어휘 길이를 초과했습니다.”내보낼 때 길이 제한 미만인 벡터에 대한 오류입니다. 어떤 경우든 디스크 공간이 낭비될 수 롤 토토.
잘못된 코딩 수정gtsVector_picksplit()(알렉산더 라킨)§
이로 인해 GiST 인덱스에서 잘못된 페이지 분할 결정이 발생할 수 롤 토토.ts벡터열.
손상된 PGLZ 압축 데이터 검사 개선(Flavien Guedez)§
에다음에서 복사, 지원되지 않는 인코딩 변환이 필요한 경우 완전히 실패합니다(Tom Lane)§
최근 리팩토링으로 인해 의도한 오류 검사가 실수로 제거되어 다음과 같이 끝났습니다.“함수 0에 대한 캐시 조회 실패”유용한 오류 메시지 대신.
충돌 방지설명매개변수가 표시되도록 표시된 경우설명부팅 시간 값이 NULL입니다(Xing Guo, Aleksander Alekseev, Tom Lane)§
이 설명에 맞는 내장 매개변수는 없지만 확장 프로그램이 이러한 매개변수를 정의할 수 롤 토토.
드롭하는 동안 스냅샷이 있는지 확인하세요커밋 삭제 중임시 테이블(Tom Lane)§
이것은 임시 테이블의 카탈로그 항목에 토스트가 필요할 만큼 넓은 필드가 있는 경우(예: 매우 복잡한 경우) 발생할 수 있는 오작동을 방지합니다.확인조건).
방금 분기된 하위 프로세스의 종료 신호에 대한 부적절한 응답 방지시스템()(네이선 보사르)§
이 수정은 다음에 의해 분기된 하위 프로세스가 발생하는 경쟁 조건을 방지합니다.시스템(), 그러나 의도된 하위 프로그램을 아직 실행하지 않았지만 상위 서버 프로세스를 위한 신호를 수신하고 이에 따라 조치를 취할 수 롤 토토. 이로 인해 중복된 정리 작업이 수행되어 제대로 종료되지 않습니다.
찢어진 읽기에 대처하세요pg_control프런트엔드 프로그램에서 (Thomas Munro)§
일부 파일 시스템에서는 읽는 중pg_control서버가 동시에 해당 파일을 쓸 때 원자적 작업이 아닐 수 롤 토토. 이는 잘못된 CRC를 통해 감지할 수 롤 토토. 오류를 보고하기 전에 파일이 유효한지 확인하기 위해 몇 번 다시 시도하세요.
찢어진 읽기를 피하세요pg_control관련 SQL 함수에서 (Thomas Munro)§
읽기 전에 적절한 잠금을 획득pg_control, 해당 파일에 대한 일관된 보기를 확보하기 위해.
백엔드 활동 문자열 배열의 크기를 계산할 때 정수 오버플로 방지(Jakub Wartak)§
64비트 시스템에서는 다음 값을 허용합니다.track_activity_query_size허용된 연결 수를 곱하면 32비트 오버플로가 발생할 만큼 충분히 큽니다. 실제로 백엔드별 로컬 배열을 할당하는 코드는 이에 대해 부주의하여 배열을 잘못 할당했습니다.
일관되지 않은 진행 통계를 간략하게 표시하는 문제 수정분석상속된 테이블(Heikki Linnakangas)§
블록 수준 카운터는 현재 관계 필드를 업데이트하는 동시에 0으로 재설정되어야 합니다.
통계 카운터에 작성된 모든 WAL 쓰기를 보고하도록 백그라운드 작성자를 수정했습니다(Nazir Bilal Yavuz)§
강제 플러시 동작에 대한 혼란 수정pgstat_report_wal()(요시다 료가, 마이클 파퀴에)§
이로 인해 종료 시 WAL I/O에 대한 일부 통계가 잊혀질 수 롤 토토.
캐시된 종속성 추적전화문을 작성하고 필요할 때 다시 계획하세요(Tom Lane)§
DDL 명령, 예를 들어 인라인된 함수 교체전화인수, 재계획이 필요할 수 있음전화PL/pgSQL에 의해 캐시되었습니다. 그런 일이 발생하지 않아 잘못된 동작이나 다음과 같은 이상한 오류가 발생했습니다.“캐시 조회 실패”.
OpenSSL 연결 설정 오류 후 pfree-a-NULL-포인터 충돌 가능성 방지(Sergey Shinderuk)§
검사 시 중첩 깊이를 올바르게 추적기록-외부 쿼리 수준의 Var 유형(Richard Guo)§
이러한 감독은 어설션 실패, 코어 덤프 또는“가짜 바르노”오류.
ScalarArrayOpExpr 계획 노드의 해시 함수 및 부정 함수 종속성 추적(David Rowley)§
대부분의 경우 이러한 감독은 무해했습니다. 왜냐하면 노드의 원래 운영자가 남아 있는 동안 이러한 기능은 사라지지 않을 것이기 때문입니다.
오류 처리 버그 수정기록유형 캐시 관리(토마스 먼로)§
잘못된 지점에서 발생하는 메모리 부족 오류는 일관되지 않은 상태를 남겨 무한 루프로 이어질 수 롤 토토.
오류 후 동일한 세션에서 논리적 디코딩을 다시 시도할 때 어설션 실패 수정(Hou Zhijie)§
WAL을 읽는 동안 메모리 부족 오류를 치명적으로 처리합니다(Michael Paquier)§
이전에는 이는 가짜 데이터 조건으로 처리되어 WAL의 끝에 도달했다는 결론으로 이어졌습니다. 이는 올바르지 않으며 일관되지 않은 WAL 재생으로 이어질 수 롤 토토.
가짜 WAL 레코드 길이 필드를 기반으로 메모리 할당 시도로 인해 발생할 수 있는 복구 실패 수정(Thomas Munro, Michael Paquier)§ §
자동 진공 실행 프로그램이 멈출 수 있는 데이터베이스 삭제의 경쟁 조건 수정(Andres Freund, Will Mortensen, Jacob Speidel)§
경합으로 인해 제거된 데이터베이스에 대한 통계 항목이 남아 있어 처리할 데이터베이스에 대한 실행 프로그램의 선택이 혼란스러울 수 롤 토토.
논리적 테이프 관리의 데이터 유형 크기 혼동 수정(Ranier Vilela)§
long이 int보다 넓은 플랫폼에서는 정수 오버플로가 가능했지만 문제를 일으키려면 여러 테라바이트의 임시 파일이 필요합니다.
syslogger 프로세스의 stdin을 의도치 않게 닫는 것을 방지하세요(Heikki Linnakangas)§
구문 분석 중에 흥미로운 처리를 받지 않는 유틸리티 문의 계획 캐시 재검증을 수행하지 마십시오(Tom Lane)§
몇 주기를 저장하는 것 외에도 다음과 같이 스냅샷을 설정해서는 안 되는 명령문에 대한 캐시 무효화 후 실패를 방지합니다.트랜잭션 격리 수준 설정.
참조로 유지attmissingval사용되는 동안 수명이 긴 컨텍스트의 값(Andrew Dunstan)§
이것은 튜플 슬롯이 그 값이 구성된 튜플 설명자보다 오래 지속될 때 매달려 있는 포인터의 사용 가능성을 방지합니다.
실효값 다시 계산검색_경로이후역할 변경(제프 데이비스)§ §
이것은 역할 이름을 바꾼 후 특수 문자열의 의미를 보장합니다.$user재결정되었습니다.
수정“핸들을 복제할 수 없습니다.”Windows에서 오류가 발생하는 경우min_dynamic_shared_memory0보다 높게 설정되었습니다(토마스 먼로)§
작업 순서 수정GenericXLogFinish(제프 데이비스)§
이 코드는 변경된 버퍼를 더티로 표시하기 전에 WAL을 작성하여 충돌 안전에 필요한 조건을 위반했습니다. 이 함수를 사용하는 핵심 코드는 없지만 확장에서는 사용합니다(기여/블룸예를 들어 그렇습니다).
PL/Python 예외 처리에서 잘못된 어설션 제거(Alexander Lakhin)§
어설션 실패 수정pg_dump덤프하라는 요청을 받을 때pg_catalog스키마(Peter Eisentraut)§ §
수정pg_restore선택적 복원에는 선택한 테이블에 대한 테이블 수준 및 열 수준 ACL이 모두 포함됩니다(Euler Taveira, Tom Lane)§
이전에는 두 유형이 모두 존재하는 경우 테이블 수준 ACL만 복원되었습니다.
논리 추가pg_upgrade사용 여부를 확인하려면절대, 상대시간및틴트 간격데이터 유형(Álvaro Herrera)§ §
이러한 쓸모없는 데이터 유형은 다음에서 제거되었습니다.포스트그레SQL버전 12이므로 업그레이드할 수 있다고 주장하기 전에 이전 데이터베이스에 존재하지 않는지 확인하세요.
잘못된 임시 슬롯 이름을 생성하지 마십시오.pg_basebackup(젤테 페네마)§
이것은 서버 연결이 실행될 때만 발생하는 것으로 나타났습니다.pgbouncer.
거짓을 피하세요“클라이언트 연결이 너무 많습니다.”오류 발생pgbenchWindows의 경우(Noah Misch)§
에기여/amcheck, 중단된 페이지 삭제를 손상으로 보고하지 않음(Noah Misch)§
이 수정 사항은 다음과 같은 거짓 긍정 보고를 방지합니다.“가장 왼쪽 대상 페이지의 첫 번째 하위 항목이 해당 레벨의 가장 왼쪽에 있지 않습니다.”, “블록 NNNN이 가장 왼쪽에 있지 않습니다.”또는“인덱스 XXXX의 왼쪽 링크/오른쪽 링크 쌍이 일치하지 않음”. 다음과 같은 경우에 나타났습니다.amcheck완료되지 않은 btree 색인 페이지 삭제 후 및 그 이전에 실행됨진공일을 정리했습니다.
실패 수정contrib/btree_gin색인간격열, indexscan이 다음을 사용하는 경우<또는<=연산자가 수행됩니다(Dean Rasheed)§
이러한 인덱스 스캔은 필요한 모든 항목을 반환하지 못했습니다.
최근에 대한 다양한 빌드 시간 경고 억제맥OS(톰 레인)§ §
Xcode 15(다음과 함께 출시됨macOS 소노마)는 빌드하는 동안 많은 중복 라이브러리 경고를 발생시키는 방식으로 링커의 동작을 변경했습니다.포스트그레SQL. 이는 무해하지만 성가시기 때문에 동일한 라이브러리를 두 번 인용하지 마십시오. 또한의 사용을 제거하세요.-multiply_define 억제링커 스위치는 오랫동안 작동하지 않았으며 현재 적극적으로 불만을 제기하고 롤 토토.
건축할 때기여/악센트 없음의 규칙 파일을 사용하여 대체파이썬if--with-python주어지지 않았으며 변수로 만듭니다파이썬설정되지 않았습니다(Japin Li)§
제거사진(기본 시간대 약어 목록(Tom Lane)의 피닉스 제도 시간)§
기본 목록에 이 약어가 있으면 최신 Debian 및 Ubuntu 릴리스에서 오류가 발생할 수 롤 토토. 기본적으로 기본 tzdb 항목을 더 이상 설치하지 않기 때문입니다. 이는 총 인구가 20여 명 정도 되는 구역을 꾸며낸 약어이기 때문에 누구든지 놓칠 가능성은 거의 없을 것 같습니다. 누군가 그렇게 한다면 맞춤 약어 파일을 통해 다시 넣을 수 롤 토토.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.