출시일: 2020-08-13
이 릴리스에는 10.13의 다양한 수정 사항이 포함되어 있습니다. 주요 릴리스 10의 새로운 기능에 대한 자세한 내용은 다음을 참조하세요.젠 토토 PostgreSQL : 문서 : 10 : E.24. 릴리스 10.
10.X를 실행하는 경우 덤프/복원이 필요하지 않습니다.
그러나 10.11 이전 버전에서 업그레이드하는 경우 다음을 참조하세요.사설 토토 사이트 PostgreSQL : 문서 : 10 : E.13. 릴리스 10.11.
보안 설정검색_경로논리적 복제 Walsender 및 작업자 적용(Noah Misch)
게시자 또는 구독자 데이터베이스의 악의적인 사용자는 종종 수퍼유저인 복제를 실행하는 역할에 의해 임의의 SQL 코드가 실행될 가능성이 롤 토토. 여기에 있는 위험 중 일부는 CVE-2018-1058에 설명된 위험과 동일하며 이 패치에서는 복제 발신자와 수신자가 빈 상태로 실행되도록 하여 완화됩니다.검색_경로설정. (CVE-2018-1058과 마찬가지로 이러한 변경으로 인해 복제된 테이블의 DDL에 사용되는 자격이 부족한 이름에 문제가 발생할 수 있습니다.) 신뢰할 수 없는 역할에 속하는 객체를 복제하는 데에는 다른 위험이 내재되어 있습니다. 우리가 할 수 있는 최선은 고려해야 할 위험이 있다는 것을 문서화하는 것입니다. (CVE-2020-14349)
contrib 모듈의 설치 스크립트를 더욱 안전하게 만들기 (Tom Lane)
공격자가 확장의 대상 스키마 또는 일부 필수 확장의 스키마에서 개체를 생성할 수 있는 경우 CVE-2018-1058에 설명된 것과 유사한 공격이 확장 설치 스크립트에 대해 수행될 수 있습니다. 확장 프로그램을 설치하려면 슈퍼유저 권한이 필요한 경우가 많기 때문에 이를 통해 슈퍼유저 권한을 얻을 수 있는 경로가 열릴 수 있습니다. 이 위험을 완화하려면 다음 사항에 더 주의하세요.검색_경로설치 스크립트를 실행하는 데 사용됩니다. 비활성화check_function_bodies스크립트 내에서; 일부 contrib 모듈에서 사용되는 카탈로그 조정 쿼리를 수정하여 보안을 보장합니다. 또한 타사 확장 작성자가 설치 스크립트를 안전하게 만드는 데 도움이 되는 문서를 제공하세요. 이는 완전한 솔루션이 아닙니다. 다른 확장에 의존하는 확장은 부주의하게 설치하면 여전히 위험할 수 있습니다. (CVE-2020-14350)
논리적 복제 walsender에서 keepalive 메시지를 보낸 후 피드백 메시지를 보내지 못하는 문제 수정 (Álvaro Herrera)
이것은 내장된 논리 복제를 사용할 때 상대적으로 사소한 문제입니다. 왜냐하면 내장된 Walreceiver는 피드백 응답(잘못된 상태를 제거함)을 상당히 자주 보내기 때문입니다. 그러나 다음과 같은 다른 복제 시스템에서는pglogical, 심각한 성능 문제가 발생합니다.
열별 실행 수정업데이트논리적 복제 가입자의 트리거(Tom Lane)
코드는 게시자와 구독자 테이블 사이에 열 번호가 다를 가능성을 고려하지 않았으므로 열 번호가 실제로 다른 경우 어떤 트리거가 실행되는지에 대해 잘못된 결정이 내려질 수 롤 토토.
느린 실행 수정ts_headline()(톰 레인)
이전 부 릴리스 세트에 추가된 구문 검색 수정으로 인해 다음이 발생할 수 있습니다.ts_headline()장문의 문서를 처리하는 데 불합리한 시간이 소요됩니다. 설상가상으로 문제가 되는 루프 내에서 쿼리를 취소할 수 없었습니다.
다음을 보장하세요반복()쿼리 취소로 기능이 중단될 수 롤 토토(Joe Conway)
수정pg_current_logfile()캐리지 리턴을 포함하지 않음(\r) Windows에서의 결과(Tom Lane)
잘못된 처리 수정NaN병렬 집계 중 입력숫자-유형 열(Tom Lane)
일부 부분 집계 작업자만 발견된 경우NaNs 반면 다른 사람들은 비-만 발견했습니다.NaNs, 결과가 잘못 결합되어 전체 결과가 잘못되었을 수 롤 토토(즉,NaN그럴 때).
24시간보다 큰 시간 값 거부(Tom Lane)
날짜/시간 입력 코드의 의도는 다음과 같습니다.“24:00:00”또는 동등하게“23:59:60”, 그러나 더 큰 값은 없습니다. 그러나 범위 확인은 허용되도록 잘못 코딩되었습니다.“23:59:60.nnn”0이 아닌 분수초 포함nnn. 타임스탬프 값에서는 다음 날의 첫 번째 초로 래핑됩니다. 에서시간그리고티메츠값, 저장된 값은 실제로 24시간 이상이므로 덤프/다시 로드 실패 및 기타 오작동이 발생할 수 있습니다.
색인 이름의 큰따옴표 실행 취소설명의 텍스트가 아닌 출력 형식(Tom Lane, Euler Taveira)
수정설명는 다음을 사용하여 계획의 병렬 작업자에서 리소스 사용량, 특히 버퍼 액세스를 설명합니다.집합 병합노드 (Jehan-Guillaume de Rorthais)
제약조건 재검증 타이밍 수정테이블 변경(데이비드 로울리)
만약테이블 변경테이블 내용을 완전히 다시 작성해야 하며(예: 열의 데이터 유형 변경으로 인해) 테이블을 스캔하여 외래 키를 다시 검증해야 합니다. 또는확인제약조건으로 인해 때때로 잘못된 순서로 작업을 수행하여 다음과 같은 이상한 오류가 발생했습니다.“"base/nnnnn/nnnnn" 파일에서 블록 0을 읽을 수 없습니다: 8192바이트 중 0바이트만 읽을 수 있습니다.”.
다음에 대한 잘못된 null이 아닌 표시 문제 해결pg_subscription.하위 슬롯 이름그리고pg_subscription_rel.srsublsn(톰 레인)
부트스트랩 카탈로그 데이터는 이 두 카탈로그 열을 항상 null이 아닌 것으로 잘못 표시합니다. 기존 설치에서 이러한 실수를 수정하는 쉬운 방법은 없습니다(v13 이상에는 올바른 표시가 있지만). 올바른 표시에 의존하는 주요 장소는 JIT 지원 튜플 분해이므로 이 두 열에 대한 표시를 명시적으로 무시하도록 가르치십시오. 또한 액세스한 일부 C 코드를 조정하세요.srsublsn널인지 확인하지 않고; 이로 인한 충돌은 거의 발생하지 않지만 불가능하지는 않습니다.
대응측면평면화되지 않은 하위에 첨부된 제한 조항의 참조선택에서발신절(톰 레인)
이러한 감독으로 인해 어설션이 실패하거나 쿼리 실행 시 충돌이 발생할 수 롤 토토.
분석되지 않은 외부 테이블에 튜플이 없다고 믿지 마십시오(Tom Lane)
이것은 주로 다음을 통해 얻을 수 있는 그룹 수에 대한 기획자의 추정에 영향을 미쳤습니다.그룹별.
다음에 대한 가짜 경고 제거“남은 자리표시자 튜플”BRIN 색인 요약 해제(Álvaro Herrera)
이 사건은 진공 청소기가 취소된 후에 합법적으로 발생할 수 있으므로 이에 대한 경고는 지나치게 시끄럽습니다.
서버의 오류 처리 개선버피모듈 (토마스 먼로)
I/O 오류가 EOF에 도달한 것과 구별할 수 없거나 전혀 보고되지 않는 일부 사례를 수정하세요. 또한 적절한 경우 블록 번호 및 바이트 수와 같은 세부정보를 추가하세요.
충돌 검사 변칙 수정직렬화 가능격리 모드 (Peter Geoghegan)
동시에 삽입된 튜플이 다른 동시 트랜잭션에 의해 업데이트되고 튜플 버전이 현재 트랜잭션의 스냅샷에 표시되지 않는 경우 직렬화 충돌 검사는 튜플이 현재 트랜잭션의 결과와 관련이 있는지에 대해 잘못된 결론을 도출할 수 있습니다. 이를 통해 직렬화 오류로 인해 실패했어야 하는 직렬화 가능 트랜잭션이 커밋될 수 있습니다.
죽은 btree 인덱스 항목을 죽은 것으로 반복적으로 표시하지 않기 (Masahiko Sawada)
기능적으로는 무해하지만 체크섬이 활성화되면 쓸모없는 WAL 트래픽이 발생합니다.wal_log_hints켜져 롤 토토.
수정하기 전에 올바른 잠금을 획득하기 위한 일부 코드 경로의 오류 수정pg_control(네이선 보사르, 후지이 마사오)
이러한 감독으로 인해 다음이 발생할 수 있습니다.pg_control일관되지 않은 체크섬으로 기록되어 다음 체크섬 이전에 충돌이 발생한 경우 데이터베이스를 다시 시작할 수 없는 등 나중에 문제를 일으킬 수 있음pg_control업데이트.
오류 수정커티드()그리고커티드2()(마이클 파퀴에)
이러한 함수(문서화되지 않았으며 고대 버전의 ODBC 드라이버에서만 사용됨)에는 충돌을 일으키거나 다음과 같은 혼란스러운 오류 메시지를 초래할 수 있는 코딩 오류가 포함되어 있습니다.“파일을 열 수 없습니다.”저장소가 없는 관계에 적용될 때.
전화를 피하세요elog()또는팔록()스핀락을 들고 있는 동안 (Michael Paquier, Tom Lane)
복제 슬롯과 관련된 로직에 이 코딩 규칙을 여러 번 위반했습니다. 문제가 발생할 가능성은 매우 낮지만 호출된 함수에 오류가 있으면 스핀록이 중단될 수 롤 토토.
다음을 사용할 수 있도록 논리적 복제 구독자의 어설션 수정복제본 ID 전체(오일러 타베이라)
이것은 단지 잘못된 주장이므로 표준 프로덕션 빌드에는 영향을 미치지 않습니다.
다음에서 디스크 공간 부족 오류를 올바르게 보고하세요.pg_dump그리고pg_basebackup(저스틴 프리즈비, 톰 레인, 알바로 헤레라)
일부 코드 경로는 다음과 같은 어리석은 보고서를 생성할 수 있습니다.“파일을 쓸 수 없습니다: 성공”.
테이블 수준 권한과 열별 권한을 모두 갖는 테이블의 병렬 복원 문제 해결(Tom Lane)
테이블 수준 권한 부여가 먼저 적용되어야 하지만 병렬 복원에서는 그런 식으로 안정적으로 순서를 지정하지 않았습니다. 이로 인해 다음과 같은 결과가 발생할 수 있습니다.“튜플이 동시에 업데이트됨”오류 또는 일부 열별 권한 부여가 사라짐. 이에 대한 수정은 아카이브 파일의 해당 항목 사이에 종속성 링크를 포함하는 것입니다. 즉, 수정된 덤프를 사용하여 새 덤프를 가져와야 합니다.pg_dump문제가 재발하지 않도록 하기 위해.
다음을 확인하세요pg_upgrade다음과 함께 실행vacuum_defer_cleanup_age대상 클러스터에서 0으로 설정(Bruce Momjian)
대상 클러스터의 구성이 설정으로 수정된 경우vacuum_defer_cleanup_age0이 아닌 값으로 설정되어 시스템 카탈로그가 제대로 작동하지 못하게 되어 혼란스러운 방식으로 업그레이드가 실패하게 되었습니다. 업그레이드 기간 동안 이러한 설정이 재정의되었는지 확인하세요.
수정pg_recvlogical종료하기 전에 보류 중인 메시지를 비우기 위해(Noah Misch)
이것이 없으면 복제 발신자는 전송 실패를 감지하고 복제 슬롯의 LSN 위치에 대한 예상되는 최종 업데이트를 수행하지 않고 종료될 수 있습니다. 이로 인해 다음 연결 후에 데이터가 다시 전송되었습니다. 마지막 데이터 이후에 전송된 오류 메시지를 놓칠 수도 있습니다.pg_recvlogical소비하고 싶어합니다.
수정pg_rewind'의 소스 데이터 디렉터리에서 방금 삭제된 파일 처리(Justin Pryzby, Michael Paquier)
온라인 소스 데이터베이스로 작업할 때 동시 파일 삭제가 가능하지만pg_rewind파일의 디렉토리 항목을 보는 것과 검사하는 사이에 삭제가 발생하면 혼란스러울 것입니다.통계().
만들다pg_test_fsyncWindows에서 바이너리 I/O 모드 사용(Michael Paquier)
이전에는 테스트 파일을 텍스트 모드로 작성했는데 이는 다음 내용을 정확하게 반영하지 않습니다.PostgreSQL의 실제 사용량입니다.
에서 로컬 상태를 올바르게 초기화하지 못하는 문제 수정기여/dblink(조 콘웨이)
상황이 적절히 조합되면 다음과 같은 결과가 발생할 수 있습니다.dblink_close()예상치 못한 리모컨 발행커밋.
수정contrib/pgcrypto의 오용수축()(톰 레인)
더pgp_sym_encrypt함수는 잘못된 처리로 인해 잘못된 압축 데이터를 생성할 수 롤 토토.zlib의 API 요구사항입니다. 재고에 이 오류가 나타난다는 보고는 없습니다.zlib, 그러나 IBM을 사용하면 볼 수 롤 토토.zlibNX구현.
압축 해제 로직의 코너 케이스 수정contrib/pgcrypto'spgp_sym_decrypt함수 (호리구치 쿄타로, 마이클 파퀴에)
압축된 스트림은 빈 패킷으로 유효하게 끝날 수 있지만 압축 해제기가 이를 처리하지 못하고 손상된 데이터에 대해 불평합니다.
POSIX 표준 사용strsignal()BSD-ish 대신sys_siglist[](톰 레인)
이것은 최신 버전의 빌드 실패를 방지합니다.glibc.
Microsoft Visual Studio 2015 이상을 사용하여 NLS 코드 빌드 지원(Juan José Santamaría Flecha, Davinder Singh, Amit Kapila)
다음 이름의 파일이 있을 때 MSVC 설치 스크립트의 실패 가능성을 방지하세요구성소스 코드 트리 위의 여러 수준 (Arnold Müller)
이것은 찾는 일부 논리를 혼란스럽게 할 수 롤 토토.구성소스 트리의 최상위 수준을 식별합니다.