E.9. 릴리스 15.6

출시일: 2024-02-08

이 릴리스에는 15.5의 다양한 수정 사항이 포함되어 있습니다. 주요 릴리스 15의 새로운 기능에 대한 자세한 내용은 다음을 참조하세요.토토 캔 PostgreSQL : 문서 : 15 : E.13. 릴리스 15.

E.9.1. 버전 15.6으로 마이그레이션

15.X를 실행하는 경우 덤프/복원이 필요하지 않습니다.

그러나 동시 업데이트 중에 GIN 색인이 손상될 수 있는 버그가 하나 수정되었습니다. 이러한 손상이 의심되는 경우 이 업데이트를 설치한 후 영향을 받는 인덱스를 다시 색인화하십시오.

또한 15.5 이전 버전에서 업그레이드하는 경우 참조롤 토토 PostgreSQL : 문서 : 15 : E.8. 릴리스 15.5.

E.9.2. 변경사항

  • 내부 보안 제한 강화동시에 구체화된 보기 새로고침(헤이키 린나캉가스)§ §

    동시 새로 고침 명령의 한 단계가 약한 보안 제한 하에서 실행되었습니다. 구체화된 뷰의 소유자가 수퍼유저 또는 다른 높은 권한을 가진 사용자가 해당 뷰에서 동시 새로 고침을 수행하도록 설득할 수 있는 경우 뷰의 소유자는 실행 중인 사용자의 권한으로 실행되는 코드를 제어할 수 토토 꽁 머니.새로고침. 사용자가 결정한 모든 코드가 예상대로 뷰의 소유자로 실행되도록 문제를 수정하세요.

    이 오류에 대해 알려진 유일한 공격은 작동하지 않습니다.포스트그레SQL16.0 이상이므로 v16은 실제로 취약하지 않을 수 토토 꽁 머니.

    PostgreSQL프로젝트는 이 문제를 보고한 Pedro Gallegos에게 감사드립니다. (CVE-2024-0985)

  • JIT 인라인 수행 시 메모리 누수 수정(Andres Freund, Daniel Gustafsson)§

    충분히 많은 JIT 컴파일 후 메모리 부족 상태를 겪는 백엔드 프로세스에 대한 여러 보고가 있었습니다. 이번 수정으로 이 문제가 해결될 것입니다.

  • LWLock에서 대기열을 제거할 때 대기 프로세스 목록을 검색할 필요가 없습니다(Andres Freund)§

    이것은 대기자 목록이 길 때 O(N^2) 동작을 수정합니다. 일부 사용 사례에서는 이로 인해 처리량이 크게 향상되었습니다.

  • 잘못된 분할 결합 계획 생성 방지(Richard Guo)§

    측면 참조와 관련된 일부 드문 상황은 잘못된 계획을 만들 수 있습니다. 영향을 받은 쿼리는 잘못된 답변을 생성하거나 다음과 같은 이상한 오류를 생성할 수 있습니다.하위 계획 대상 목록에서 변수를 찾을 수 없음또는 실행 프로그램이 충돌합니다.

  • PlaceHolderVars에서 하위 쿼리 출력 표현식의 잘못된 래핑 수정(Tom Lane)§

    이는 하위 쿼리가 외부 조인 아래에 있고 외부 조인 범위 외부의 항목을 측면적으로 참조하는 출력 열이 있는 경우 잘못된 결과를 수정합니다. 외부 조인의 작업으로 인해 출력 열이 NULL로 표시되어야 하는데 NULL로 표시되지 않을 수 토토 꽁 머니.

  • 창 기능 실행 조건의 잘못된 처리 수정 (Richard Guo)§

    이러한 감독으로 인해 다음이 발생할 수 있습니다.하위 계획 대상 목록에서 WindowFunc를 찾을 수 없음오류.

  • 다음의 경우 부적절한 행동을 건너뛰세요병합파티션 간 업데이트 발생(Dean Rasheed)§

    a를 실행할 때병합 업데이트파티션된 테이블에 대한 작업, 다음과 같은 경우업데이트이(가) a로 변했습니다.삭제그리고삽입파티션 키 열 변경으로 인해 실행 건너뛰기업데이트 행 이후트리거 및 RLS 확인과 같은 기타 업데이트 후 작업. 이러한 작업은 일반적으로 실패하므로 일반업데이트그런 경우에는 그렇게 하지 않습니다.병합그러면 안 됩니다.

  • 대응행 삭제 전교차 파티션에서 트리거병합업데이트(딘 라시드)§

    이러한 트리거가 NULL을 반환하여 업데이트를 방지하려고 시도한 경우,병합오류 또는 어설션 실패가 발생할 수 토토 꽁 머니.

  • 더 이상 고정되지 않은 버퍼에 대한 액세스 방지행 업데이트 전트리거(Alexander Lakhin, Tom Lane)§

    업데이트되는 튜플이 방금 업데이트되어 다른 세션에 의해 다른 페이지로 이동된 경우 버퍼에 핀이 없는 새 튜플 버전에서 데이터를 가져오려고 시도하는 좁은 창이 있었습니다. 원칙적으로 이로 인해 제안된 새 튜플의 업데이트되지 않은 열에 가비지 데이터가 나타날 수 있습니다. 그러나 실제로 문제가 발생할 가능성은 다소 낮아 보입니다.

  • 병렬 해시 조인에서 너무 큰 공유 메모리 영역을 요청하지 마십시오(Thomas Munro, Andrei Lepikhov, Alexander Korotkov)§ §

    제한 값이 너무 커서 허용됩니다.잘못된 DSA 메모리 할당 요청 크기해시 테이블 크기가 충분히 클 경우 오류가 발생합니다.

  • 어설션 실패 방지힙_업데이트()그리고heap_delete()외래 키 적용 트리거에 의해 업데이트될 튜플이 추가 가시성 교차 검사에 실패할 때(Alexander Lakhin)§

    이 오류는 비어설션 빌드에는 영향을 미치지 않았습니다.

  • 다음에 대한 지나치게 엄격한 주장 수정false_긍정적_비율BRIN Bloom 연산자 클래스의 매개변수(Alexander Lakhin)§

    이 오류는 비assert 빌드에도 영향을 미치지 않았습니다.

  • 다음 중 발생할 수 있는 오류 수정테이블 변경 열 추가복합 상속 트리(Tender Wang)§

    손자 테이블이 여러 중간 상위를 통해 새 열을 상속하는 경우 명령이 실패했습니다.튜플은 이미 자체적으로 업데이트되었습니다..

  • 중복된 토큰 이름 문제 수정텍스트 검색 구성 변경 ... 매핑명령(Tender Wang, Michael Paquier)§

  • 다음 동안 관련 테이블을 적절하게 잠급니다.드롭 통계(토마스 본드라)§

    잠금 획득에 실패하면 다음이 발생할 수 있습니다.튜플이 동시에 삭제됨다음의 경우 오류가 발생합니다드롭다음과 동시에 실행분석.

  • 다음에 대한 함수 변동성 검사 수정생성됨그리고기본값표현식(톰 레인)§

    이러한 장소에서는 휘발성 함수 기본 인수 표현식의 삽입을 감지하지 못하거나 다형성 함수가 관심 있는 데이터 유형에서 실제로 불변임에도 불구하고 휘발성이라고 판단할 수 있습니다. 이로 인해 다음을 부적절하게 거부하거나 수락하게 될 수 있습니다.생성됨절 또는 실수로 상수 기본값 최적화를 적용한 경우테이블 변경 열 추가.

  • 해당 필드를 삭제하는 동안 새 카탈로그 캐시 항목이 오래되었다는 것을 감지합니다(Tom Lane)§ §

    우리는 카탈로그 캐시에 삽입하기 전에 카탈로그 튜플의 라인 외부 필드를 확장합니다. 여기에는 카탈로그 캐시 항목이 무효화될 수 있는 데이터베이스 액세스가 포함됩니다. 하지만 새 항목은 아직 캐시에 없으므로 해당 항목이 무효화되어야 한다는 사실을 놓치게 됩니다. 그 결과 이미 오래된 캐시 항목이 만들어지고 무기한 지속되는 경쟁 조건이 발생합니다. 이는 예측하기 어려운 잘못된 행동으로 이어질 수 있습니다. 삭제 후 튜플의 가시성을 다시 확인하여 문제를 해결하세요.

  • 일부 플랫폼의 극단적인 경우 정수 오버플로 감지 버그 수정(Dean Rasheed)§

    컴퓨팅 중0 - INT64_MIN오버플로 오류가 발생해야 하며 대부분의 플랫폼에서 발생했습니다. 그러나 정수 오버플로 내장 기능이나 128비트 정수가 없는 플랫폼은 오버플로를 발견하지 못하고 대신 다음을 반환합니다.INT64_MIN.

  • 더하거나 뺄 때 율리우스력 날짜 오버플로 감지간격a로/에서타임스탬프(톰 레인)§

    범위를 벗어난 오류를 발생시켜야 하는 일부 사례에서는 대신 잘못된 결과가 발생했습니다.

  • 오버플로에 대한 추가 검사 추가interval_mul()그리고interval_div()(딘 라시드)§

    범위를 벗어난 오류를 발생시켜야 하는 일부 사례에서는 대신 잘못된 결과가 발생했습니다.

  • 변경 후 캐시된 통계가 삭제되는지 확인stats_fetch_consistency(카토 신야)§

    일부 코드 경로에서는 오래된 통계가 반환될 수 있었습니다.

  • 다음을 만드세요pg_file_settings설정에 적용되지 않은 값의 유효성 확인 보기백엔드또는수퍼유저-백엔드컨텍스트(톰 레인)§

    잘못된 값이 의도한 대로 보기에 기록되지 않았습니다. 이 그룹에는 설정이 거의 없기 때문에 감지를 피했습니다.

  • 기존 인덱스를 새로운 분할 인덱스와 일치시킬 때 대조도 일치합니다(Peter Eisentraut)§

    이전에는 파티션 키의 해당 요소와 데이터 정렬이 다른 인덱스를 허용할 수 있었으며 이로 인해 오작동이 발생할 수 있었습니다.

  • 하위 인덱스가 동시에 삭제되는 경우 실패 방지REINDEX 인덱스파티션된 인덱스(Fei Changhong)§ §

  • GIN 색인 내부 페이지의 불완전한 분할을 정리할 때 불충분한 잠금 수정(Fei Changhong, Heikki Linnakangas)§

    코드는 버퍼에 대한 배타적 잠금이 아닌 공유 잠금을 사용하여 이를 수행하려고 했습니다. 두 프로세스가 동시에 정리를 시도하면 인덱스가 손상될 수 토토 꽁 머니.

  • GIN 인덱스 삽입 시 버퍼 핀의 조기 해제 방지(Tom Lane)§

    색인 루트 페이지 분할이 자체 삽입과 동시에 발생하면 코드가 실패할 수 있습니다.버퍼 NNNN은 리소스 소유자의 소유가 아닙니다..

  • 분할된 SP-GiST 인덱스로 오류 방지(Tom Lane)§

    이런 종류의 색인을 사용하려고 하면 다음과 같은 결과가 발생할 수 있습니다.해당 파일이나 디렉터리가 없습니다오류.

  • 대형 개체에 대한 소유권 변경 보고 수정(Tom Lane)§

    무작동대형 개체 소유자 변경명령(즉, 기존 소유자를 선택하는 명령)이 잘못된 클래스 ID를에 전달했습니다.PostAlterHook, 아마도 해당 후크를 사용하는 확장 프로그램을 혼란스럽게 할 것입니다.

  • I/O 타이밍 데이터 보고 수정설명(버퍼)(마이클 파퀴에)§

    다음으로 표시된 숫자공유/로컬실제로는 공유 버퍼만 참조하므로 해당 라벨을 다음으로 변경하세요.공유.

  • 내구성 보장데이터베이스 생성(노아 미쉬)§ §

    운영 체제 충돌이 도중 또는 직후에 발생한 경우데이터베이스 생성, 복구가 실패하거나 새 데이터베이스에 대한 후속 연결이 실패할 수 토토 꽁 머니. 해당 창에서 기본 백업을 수행한 경우 백업을 사용하려고 할 때 유사한 문제가 관찰될 수 토토 꽁 머니. 증상은 데이터베이스 디렉터리,PG_VERSION파일 또는pg_filenode.map파일이 없거나 비어토토 꽁 머니.

  • 더 추가로그백업에서 복구를 시작하고 종료할 때의 메시지(Andres Freund)§

    이 변경 사항은 복구 문제를 진단하는 데 유용할 수 있는 포스트마스터 로그에 추가 정보를 제공합니다.

  • 하위 트랜잭션 중에 대기 서버가 죽은 인덱스 튜플을 잘못 처리하는 것을 방지합니다(Fei Changhong)§

    startedInRecovery플래그가 하위 트랜잭션에 대해 올바르게 설정되지 않았습니다. 이는 데드 인덱스 튜플 처리에만 영향을 미칩니다. 하위 트랜잭션의 쿼리가 반환해야 하는 인덱스 항목을 무시하거나(기본 서버에서는 이미 종료되었지만 대기 트랜잭션에서는 종료되지 않은 경우) 기본에서 아직 종료되지 않은 인덱스 항목을 조기에 종료된 것으로 표시할 수 토토 꽁 머니. 후자의 경우 심각한 결과가 초래되는지는 확실하지 않지만 의도한 동작은 아닙니다.

  • 레코드가 WAL 디코딩 버퍼에 맞는지 확인할 때 정수 오버플로 위험 수정(Thomas Munro)§

    이 버그는 32비트를 실행할 때를 제외하고는 잠복해 있는 것으로 보입니다.PostgreSQL64비트 플랫폼에서 빌드하세요.

  • 논리적 복제 적용 작업자, 해당 tablesync 작업자 및 구독을 변경하려는 세션 프로세스 간의 교착 상태 수정(Shlok Kyal)§

    교착 상태 루프의 한쪽 가장자리에는 잠금 대기가 포함되지 않았으므로 교착 상태는 감지되지 않고 수동 개입까지 지속됩니다.

  • 열 기본값이 다음에 의해 올바르게 전송되는지 확인하십시오.pgoutput논리적 복제 플러그인(Nikhil Benesch)§

    테이블 변경 열 추가새 열에 대한 상수 기본값을 사용하면 기존 튜플을 다시 작성하는 것을 방지하고 대신 코드를 읽을 때 해당 열이 없는 튜플에 올바른 기본값이 삽입될 것으로 예상합니다. 이후에 테이블에서 복제가 시작된 경우,pgoutput이러한 열에 대한 올바른 기본값 대신 NULL을 전송하여 구독자에서 잘못된 복제를 발생시킵니다.

  • 열이 없는 테이블에 대한 논리적 복제의 초기 동기화 실패 수정(Vignesh C)§

    이 사례는 잘못된 형식의 형식을 생성했습니다.복사명령.

  • 논리적 디코딩 중 잘못된 스냅샷이 있는 시스템 카탈로그 검사 방지(Fei Changhong)§

    디코딩이 시스템 카탈로그를 수정하는 트랜잭션을 통해 도중에 시작되면 디코더가 이를 인식하지 못하여 카탈로그 조회를 위해 해당 트랜잭션을 진행 중인 것으로 처리하지 못할 수 있습니다. 이 수정 사항은 최상위 트랜잭션이 이미 카탈로그 변경 사항을 포함하는 것으로 표시되어 있지만 해당 하위 트랜잭션은 그렇지 않은 경우를 다룹니다.

  • 새 클라이언트가 서버의 비밀번호 요청에 응답하지 않고 연결이 끊어지면 올바른 상태 코드를 반환합니다(Liu Lang, Tom Lane)§

    경우에 따라 우리는 이를 기록 가능한 오류로 처리합니다. 이는 의도한 것이 아니며 로그 스팸을 생성하는 경향이 있습니다. 일반 클라이언트는 다음과 같습니다.psql자주 이렇게 하세요. 또한 다음을 사용하는 확장 프로그램을 혼동할 수도 있습니다.ClientAuthentication_hook.

  • 다음과의 비호환성 수정오픈SSL3.2 (트리스탄 파틴, 보 안드레슨)§

    BIO 사용앱_데이터필드를 개인 저장소로 사용하는 것이 좋다고 가정하는 대신데이터필드. 이 실수는 이전에는 문제를 일으키지 않았지만 3.2에서는 충돌이 발생하고 이중 해제에 대한 불만이 제기됩니다.

  • 더 조심하세요오픈SSL설정하지 않음errno오류 발생 시(톰 레인)§

    만약errno설정되지 않은 경우 보고된 실패의 원인이 읽기 EOF라고 가정합니다. 이는 다음과 같은 드문 경우의 이상한 오류 보고서를 수정합니다.SSL 연결을 수락할 수 없습니다: 성공.

  • 외부 데이터 래퍼의 경우 파일 설명자 누출 수정외국Async요청함수 실패(Heikki Linnakangas)§

  • 신고ENOMEM파일 관련 시스템 호출로 인한 오류ERRCODE_OUT_OF_MEMORY, 아님ERRCODE_INTERNAL_ERROR(알렉산더 쿠즈멘코프)§

  • PL/pgSQL, 다음과 같은 SQL 명령을 지원합니다.함수 생성/프로시저 생성SQL 표준 본문 사용(Tom Lane)§

    이전에는 함수 본문에 나타나는 세미콜론으로 인해 구문 분석 오류로 인해 이러한 사례가 실패했습니다.

  • 수정libpq의 파이프라인 오류 처리(Álvaro Herrera)§ §

    쿼리 문제 이외의 이유로 오류가 반환되는 경우(예: 연결이 끊어진 경우) 파이프라인 상태가 동기화되지 않을 수 토토 꽁 머니. 잠재적으로 이는 호출 애플리케이션에서 통화 중 루프로 이어질 수 토토 꽁 머니.

  • 만들다libpq'sPQsendFlushRequest()함수는 다른 규칙과 동일한 규칙에 따라 클라이언트 출력 버퍼를 플러시합니다.PQsend함수 (Jelte Fennema-Nio)§

    파이프라인 모드에서는 여전히 호출이 필요할 수 토토 꽁 머니.PQflush()또한; 하지만 이번 변경으로 일부 불일치가 제거되었습니다.

  • 다음과 같은 경우 경쟁 조건을 피하세요.libpq두 개의 서로 다른 스레드에서 동시에 OpenSSL 지원을 초기화합니다(Willi Mann, Michael Paquier)§

  • GSSAPI 데이터 전송에서 타이밍에 따른 오류 수정(Tom Lane)§

    비차단 모드에서 GSSAPI 암호화를 사용할 때,libpq때때로 실패함GSSAPI 호출자가 재시도가 필요한 모든 데이터를 재전송하지 못했습니다..

  • pg_dump, 확장 구성원 개체에 대한 RLS 정책 또는 보안 레이블을 덤프하지 마세요(Tom Lane, Jacob Champion)§ §

    이전에는 이러한 속성을 설정하기 위해 명령이 덤프에 포함되었습니다. 이는 확장 기능의 내부 문제로 간주되어야 하기 때문에 실제로 잘못된 것입니다. 더욱이, 복원하는 사용자에게는 이를 설정할 수 있는 적절한 권한이 없을 수 있으며 실제로 덤프하는 사용자에게는 이를 덤프할 수 있는 충분한 권한이 없을 수도 있습니다(RLS 정책을 덤프하려면 테이블에 대한 잠금을 획득해야 하기 때문입니다).

  • pg_dump, 기본 테이블이 덤프되지 않는 경우 확장 통계 개체를 덤프하지 마세요(Rian McGuire, Tom Lane)§

    이는 색인과 같은 다른 종속 개체의 동작을 준수합니다.

  • 다음에 대한 오류를 만드세요pgbench오픈 파이프라인으로 끝나는 스크립트(Anthonin Bonnefoy)§

    이전에,pgbench다음과 같은 경우 이상하게 행동할 것입니다.\startpipeline명령에 일치하는 내용이 없습니다.\endpipeline. 이는 다음과 같은 경우라기보다는 스크립팅 실수인 것 같습니다.pgbench잘 처리해야 하므로 오류가 발생합니다.

  • 충돌 수정기여/intarray다음과 같은 요소를 가진 배열인 경우INT_MAXa에 삽입됩니다.gist__int_ops색인 (Alexander Lakhin, 톰 레인)§

  • 다음 경우에 더 나은 오류를 보고하세요.기여/페이지검사'shash_bitmap_info()분할된 해시 인덱스에 함수가 적용됩니다(Alexander Lakhin, Michael Paquier)§

  • 다음 경우에 더 나은 오류를 보고하세요.contrib/pgstattuple'spgstathashindex()함수는 분할된 해시 인덱스에 적용됩니다(Alexander Lakhin)§

  • Windows에서는 하위 프로세스를 시작할 때 자동 실행 옵션을 억제합니다.pg_ctl그리고pg_regress(호리구치 쿄타로)§ §

    다음을 통해 하위 프로세스를 시작할 때cmd.exe, 통과/D플래그는 레지스트리에 지정된 자동 실행 명령 실행을 방지합니다. 이렇게 하면 예상치 못한 부작용을 피할 수 토토 꽁 머니.

  • 이동is_valid_ascii()frommb/pg_wchar.hutils/ascii.h(쥬빌리 영)§

    이 변경으로 인해 다음을 포함할 필요가 없습니다.<simd.hinpg_wchar.h, 이로 인해 일부 타사 코드에 문제가 발생했습니다.

  • 컴파일 실패 수정libxml2버전 2.12.0 이상(톰 레인)§

  • 컴파일 실패 수정WAL_DEBUGWindows의 코드(Bharath Rupireddy)§

  • Python 헤더 파일에서 컴파일러 경고 억제(Peter Eisentraut, Tom Lane)§

    우리가 선호하는 컴파일러 옵션은 최신 버전의 Python 헤더 파일에 나타나는 구성에 대한 경고를 유발합니다. 사용시gcc, pragma를 사용하여 이러한 경고를 억제할 수 토토 꽁 머니.

  • LLVM 18로 컴파일할 때 지원 중단 경고 방지(Thomas Munro)§

  • 다음으로 시간대 데이터 파일 업데이트tzdata그린란드, 카자흐스탄, 팔레스타인의 DST 법률 변경 사항과 남극 관측소 Casey 및 Vostok에 대한 수정 사항에 대한 2024a 릴리스입니다. 또한 베트남, 토론토 및 Miquelon에 대한 역사적 수정이 이루어졌습니다. (톰 레인)§

수정사항 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.