이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 와이즈 토토.현재버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

E.19. 릴리스 12.4

출시일: 2020-08-13

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

E.19.1. 버전 12.4로 마이그레이션

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

그러나 12.2 이전 버전에서 업그레이드하는 경우 참조토토 핫 PostgreSQL : 문서 : 12 : E.21. 릴리스 12.2.

E.19.2. 변경사항

  • 보안 설정검색_경로논리적 복제 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)

  • 파티션 정리의 극단적인 경우 수정(Etsuro Fujita, Dmitry Dolgov)§ §

    다중 파티션 키 열이 있는 경우 일부 열에 제한이 없으면 정리 테스트 생성이 오작동할 수 와이즈 토토.어디에서절 또는 여러 제약 절. 이로 인해 서버 충돌, 잘못된 쿼리 결과 또는 어설션 오류가 발생할 수 와이즈 토토.

  • 파티션별 Nestloop 조인 내부에서 매개변수화된 BitmapAnd 및 BitmapOr 인덱스 스캔 구성 수정(Tom Lane)§

    조인 외부의 값을 사용해야 하는 스캔 계획은 일반적으로 실행 시 충돌이 발생합니다.

  • 파티션을 나눈 테이블이 동일한 쿼리에서 정적 및 런타임 파티션 정리의 대상이 되고 새 파티션이 쿼리와 동시에 추가될 때 잘못된 계획 실행 수정(Amit Langote, Tom Lane)§

  • 논리적 복제 walsender에서 연결 유지 메시지를 보낸 후 피드백 메시지를 보내지 못하는 문제 수정(Álvaro Herrera)§

    이것은 내장된 논리 복제를 사용할 때 상대적으로 사소한 문제입니다. 왜냐하면 내장된 Walreceiver는 꽤 자주 피드백 응답(잘못된 상태를 제거함)을 보내기 때문입니다. 그러나 다음과 같은 다른 복제 시스템에서는pglogical, 심각한 성능 문제가 발생합니다.

  • 열별 실행 수정업데이트논리적 복제 가입자의 트리거(Tom Lane)§

    코드는 게시자와 구독자 테이블 사이에 열 번호가 다를 가능성을 고려하지 않았으므로 열 번호가 실제로 다른 경우 어떤 트리거가 실행되는지에 대해 잘못된 결정이 내려질 수 와이즈 토토.

  • 이 기간 동안 가장 오래된 xmin 및 LSN 값 업데이트pg_replication_slot_advance()(마이클 파퀴에)§

    이 함수는 이전에 이를 수행하지 못했기 때문에 복제 슬롯을 수동으로 진행한 후 리소스 정리(더 이상 필요하지 않은 WAL 세그먼트 제거 등)를 방지할 수 있었습니다.

  • 느린 실행 수정ts_headline()(톰 레인)§

    이전 부 릴리스 세트에 추가된 구문 검색 수정으로 인해 다음이 발생할 수 있습니다.ts_headline()긴 문서를 작성하는 데 너무 많은 시간이 소요됩니다. 설상가상으로 문제가 되는 루프 내에서 쿼리를 취소할 수 없었습니다.

  • 다음을 보장하세요반복()쿼리 취소로 인해 기능이 중단될 수 와이즈 토토(Joe Conway)§

  • 수정pg_current_logfile()캐리지 리턴을 포함하지 않음(\r) Windows에서의 결과(Tom Lane)§

  • 다음을 확인하세요pg_read_file()및 EOF에 도달할 때까지 관련 함수 읽기(Joe Conway)§ §

    이전에는 읽을 특정 데이터 길이가 지정되지 않은 경우 이 함수는 보고된 파일 길이에 관계없이 중지되었습니다.통계(). 이는 파이프 및 기타 종류의 가상 파일에는 도움이 되지 않습니다.

  • 숫자 금지NaNjsonpath계산 (Alexander Korotkov)§

    SQL이나 JSON에는 다음 개념이 없습니다.NaN(숫자가 아님), 하지만jsonpath코드가 어쨌든 그러한 값을 허용하려고 시도했습니다. 이는 필연적으로 비표준적인 동작으로 이어지므로 처음부터 그러한 값을 거부하는 것이 더 나은 것 같습니다.

  • 싱글 처리정보또는NaN부동 소수점 집계에 올바르게 입력됨(Tom Lane)§

    영향을 받은 집계는 다음과 같습니다.corr(), covar_pop(), regr_intercept(), regr_r2(), regr_slope(), regr_sxx(), regr_sxy(), regr_syy(), stddev_pop()var_pop(). 그러한 경우의 정답은 다음과 같습니다.NaN, 그러나 알고리즘 변경은PostgreSQLv12로 인해 이러한 집계가 대신 0을 생성했습니다.

  • 잘못된 처리 수정NaN병렬 집계 중 입력숫자-유형 열(Tom Lane)§

    일부 부분 집계 작업자만 발견된 경우NaNs 반면 다른 사람들은 비-만 발견했습니다.NaNs, 결과가 잘못 결합되어 전체 결과가 잘못되었을 수 와이즈 토토(즉,NaN그럴 때).

  • 24시간보다 큰 시간 값 거부(Tom Lane)§

    날짜/시간 입력 코드의 의도는 다음을 허용하는 것입니다.24:00:00또는 동등하게23:59:60, 그러나 더 큰 값은 없습니다. 그러나 범위 확인은 허용되도록 잘못 코딩되었습니다.23:59:60.nnn0이 아닌 분수초 포함nnn. 타임스탬프 값에서는 다음 날의 첫 번째 초로 래핑됩니다. 에서시간그리고티메츠값, 저장된 값은 실제로 24시간 이상이므로 덤프/다시 로드 실패 및 기타 오작동이 발생할 수 있습니다.

  • 색인 이름의 큰따옴표 실행 취소설명의 텍스트가 아닌 출력 형식(Tom Lane, Euler Taveira)§

  • 수정설명은 다음을 사용하여 계획의 병렬 작업자에서 리소스 사용량, 특히 버퍼 액세스를 설명합니다.집합 병합노드 (Jehan-Guillaume de Rorthais)§

  • 제약조건 재검증 타이밍 수정테이블 변경(데이비드 로울리)§

    만약테이블 변경테이블 내용을 완전히 다시 작성해야 하며(예: 열의 데이터 유형 변경으로 인해) 테이블을 스캔하여 외래 키를 다시 검증해야 합니다. 또는확인제약조건으로 인해 때때로 잘못된 순서로 작업을 수행하여 다음과 같은 이상한 오류가 발생했습니다."base/nnnnn/nnnnn" 파일의 블록 0을 읽을 수 없습니다: 8192바이트 중 0바이트만 읽을 수 있습니다..

  • 수정동시에 REINDEX색인의 복제 ID 플래그를 보존하기 위해(Michael Paquier)§

    이전에 테이블의 복제본 ID 인덱스를 다시 인덱싱하면 설정이 손실되어 이전 튜플 값이 향후 논리 디코딩 출력에 포함되지 않게 되었습니다.

  • 다음에 대한 잘못된 null이 아닌 표시 문제 해결pg_subscription.하위 슬롯 이름그리고pg_subscription_rel.srsublsn(톰 레인)§ §

    부트스트랩 카탈로그 데이터는 이 두 카탈로그 열을 항상 null이 아닌 것으로 잘못 표시합니다. 기존 설치에서 이러한 실수를 수정하는 쉬운 방법은 없습니다(v13 이상에는 올바른 표시가 있지만). 올바른 표시에 의존하는 주요 장소는 JIT 지원 튜플 분해이므로 이 두 열에 대한 표시를 명시적으로 무시하도록 가르치십시오. 또한 액세스한 일부 C 코드를 조정하세요.srsublsn널인지 확인하지 않고; 이로 인한 충돌은 거의 발생하지 않지만 불가능하지는 않습니다.

  • 대응측면평면화되지 않은 하위에 첨부된 제한 조항의 참조-선택에서발신절(톰 레인)§

    이러한 감독으로 인해 어설션이 실패하거나 쿼리 실행 시 충돌이 발생할 수 와이즈 토토.

  • 선택성 추정 중에 호출된 연산자에 대해 쿼리 지정 데이터 정렬 사용(Tom Lane)§ §

    이전에는 기본 데이터베이스 열의 데이터 정렬이 사용되었습니다. 그러나 쿼리의 데이터 정렬을 사용하는 것이 틀림없이 더 정확합니다. 더 중요한 것은 이제 비결정적 데이터 정렬이 있으므로 비결정적 데이터 정렬이 제공되면 연산자가 완전히 실패하는 경우가 있다는 것입니다. 쿼리 자체가 작동하는 경우 실패하는 것을 계획하고 싶지 않으므로 추정 목적으로 연산자를 호출할 때 쿼리의 데이터 정렬을 사용해야 함을 의미합니다.

  • 분석되지 않은 외부 테이블에 튜플이 없다고 믿지 마십시오(Tom Lane)§

    이것은 주로 다음을 통해 얻을 수 있는 그룹 수에 대한 기획자의 추정에 영향을 미쳤습니다.그룹별.

  • 다음에 대한 가짜 경고 제거남은 자리 표시자 튜플BRIN 색인 역요약화(Álvaro Herrera)§

    이 사건은 진공 청소가 취소된 후에 합법적으로 발생할 수 있으므로 이에 대한 경고는 지나치게 시끄럽습니다.

  • 다음에 대한 테이블스페이스 선택 수정공유 파일 세트임시 파일(Magnus Hagander, Tom Lane)§ §

    만약temp_tablespaces은 비어 있거나 데이터베이스의 기본 테이블스페이스 이름을 명시적으로 지정합니다. 이러한 파일은pg_default예상대로 데이터베이스의 기본 테이블스페이스가 아닌 테이블스페이스입니다.

  • WAL 일관성 검사 중 SP-GiST 인덱스 페이지 마스킹의 특수 사례 오류 수정(Alexander Korotkov)§

    다음과 같은 경우 잘못된 실패 보고가 발생할 수 있습니다.wal_consistency_checking활성화되었습니다.

  • 서버의 오류 처리 개선버필모듈 (토마스 먼로)§ §

    I/O 오류가 EOF에 도달한 것과 구별할 수 없거나 전혀 보고되지 않는 일부 사례를 수정합니다. 또한 적절한 경우 블록 번호 및 바이트 수와 같은 세부정보를 추가하세요.

  • 충돌 검사 변칙 수정직렬화 가능격리 모드 (Peter Geoghegan)§

    동시에 삽입된 튜플이 다른 동시 트랜잭션에 의해 업데이트되고 튜플 버전이 현재 트랜잭션의 스냅샷에 표시되지 않는 경우 직렬화 충돌 검사는 튜플이 현재 트랜잭션의 결과와 관련이 있는지에 대해 잘못된 결론을 도출할 수 있습니다. 이를 통해 직렬화 오류로 인해 실패했어야 하는 직렬화 가능 트랜잭션이 커밋될 수 있습니다.

  • 죽은 btree 인덱스 항목을 죽은 것으로 반복적으로 표시하지 않기 (Masahiko Sawada)§

    기능적으로는 무해하지만 체크섬이 활성화되면 쓸모없는 WAL 트래픽이 발생합니다. 또는wal_log_hints켜져 와이즈 토토.

  • 다음 경우에 파일 동기화 요청을 삭제하도록 체크포인터 프로세스 수정fsync꺼짐(Heikki Linnakangas)§

    다음의 경우 이러한 요청은 무작동으로 처리됩니다.fsync이 꺼져 있지만 체크포인터의 보류 작업 테이블에서 제거하는 것을 잊었습니다. 이로 인해 해당 테이블이 부풀어 오르고 다음과 같은 경우 어설션 실패가 발생할 수 있습니다.fsync나중에 다시 활성화됩니다.

  • 백업 중에 JIT 컴파일이 활성화된 경우 비독점 백업을 정리하는 동안 문제 방지(Robert Haas)§ §

  • 수정하기 전에 올바른 잠금을 획득하기 위한 일부 코드 경로의 오류 수정pg_control(나단 보사르, 후지이 마사오)§

    이러한 감독으로 인해 다음이 발생할 수 있습니다.pg_control일관되지 않은 체크섬으로 기록되어 다음 문제 이전에 데이터베이스가 충돌한 경우 데이터베이스를 다시 시작할 수 없는 등 나중에 문제를 일으킬 수 있음pg_control업데이트.

  • 오류 수정커티드()그리고커티드2()(마이클 파퀴에)§ §

    이러한 함수(문서화되지 않았으며 고대 버전의 ODBC 드라이버에서만 사용됨)에는 충돌을 일으키거나 다음과 같은 혼란스러운 오류 메시지를 초래할 수 있는 코딩 오류가 포함되어 있습니다.파일을 열 수 없습니다저장소가 없는 관계에 적용될 때.

  • 전화를 피하세요elog()또는팔록()스핀락을 들고 있는 동안 (Michael Paquier, Tom Lane)§ §

    복제 슬롯과 관련된 로직에는 이 코딩 규칙을 여러 번 위반했습니다. 문제가 발생할 가능성은 매우 낮지만 호출된 함수에 오류가 있으면 스핀록이 중단될 수 와이즈 토토.

  • 다음을 사용할 수 있도록 논리적 복제 구독자의 어설션 수정복제본 ID 전체(오일러 타베이라)§

    이것은 단지 잘못된 주장이므로 표준 프로덕션 빌드에는 영향을 미치지 않습니다.

  • 다음을 확인하세요libpq쓰기 실패 후에도 데이터베이스 연결 소켓에서 읽기를 계속 시도합니다(Tom Lane)§

    이것은 죽어가는 서버 프로세스에서 최종 오류 메시지를 수집하는 것뿐만 아니라 읽기 실패가 나타날 때까지 연결이 끊어진 것으로 간주하지 않기 때문에 중요합니다. 이러한 감독은 허용되었습니다.libpq계속 전송을 시도합니다복사애플리케이션에 실패를 보고하는 대신 전송 도중 연결이 끊어진 후 데이터를 무기한으로 유지합니다.

  • 버그 수정libpq의 GSS 암호화 상태 관리 (Tom Lane)§

    GSS 암호화를 사용하는 연결은 서버를 다시 시작한 후 재설정을 시도하거나 후보 서버 목록 중 다음 항목으로 이동할 때 연결이 중단될 수 있습니다.

  • 수정ecpg충돌바이테아및 커서 변수(Jehan-Guillaume de Rorthais)§

  • 다음에서 디스크 공간 부족 오류를 올바르게 보고하세요.pg_dump그리고pg_basebackup(저스틴 프리즈비, 톰 레인, 알바로 헤레라)§

    일부 코드 경로는 다음과 같은 어리석은 보고서를 생성할 수 있습니다.파일을 쓸 수 없습니다: 성공.

  • 만들다pg_restore순서가 잘못된 데이터 항목을 복원해야 할 때 데이터 오프셋이 없는 사용자 정의 형식 아카이브 파일에 대처합니다(David Gilman, Tom Lane)§ §

    pg_dump출력을 찾을 수 없는 경우(예: 출력이 다른 항목으로 파이프되는 경우) 해당 파일을 생성합니다. 이 수정 사항은 주로 해당 파일에서 병렬 복원을 수행하는 기능을 향상시킵니다.

  • 테이블 수준 권한과 열별 권한을 모두 갖는 테이블의 병렬 복원 문제 해결(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)§

    이전에는 테스트 파일을 텍스트 모드로 작성했는데 이는 다음의 정확한 반영이 아닙니다.포스트그레SQL의 실제 사용량입니다.

  • 수정기여/amcheck삭제된 비어 있는 색인 페이지에 대해 불평하지 않기 위해 (Alexander Korotkov)§

    이러한 상황은 WAL 재생 중 정상적인 현상입니다.

  • 로컬 상태를 올바르게 초기화하지 못하는 문제 수정기여/dblink(조 콘웨이)§

    상황이 적절히 조합되면 다음과 같은 결과가 발생할 수 있습니다.dblink_close()예상치 못한 리모컨 발행커밋.

  • 수정contrib/pgcrypto의 오용수축()(톰 레인)§

    pgp_sym_encrypt함수는 잘못된 처리로 인해 잘못된 압축 데이터를 생성할 수 와이즈 토토.zlib의 API 요구사항입니다. 재고에 이 오류가 나타난다는 보고는 없습니다.zlib, 그러나 IBM을 사용할 때 볼 수 와이즈 토토.zlibNX구현.

  • 압축 해제 로직의 코너 케이스 수정contrib/pgcrypto'spgp_sym_decrypt함수 (호리구치 쿄타로, 마이클 파퀴에)§

    압축된 스트림은 빈 패킷으로 유효하게 끝날 수 있지만 압축 해제기가 이를 처리하지 못하고 손상된 데이터에 대해 불평합니다.

  • Microsoft Visual Studio 2015 이상을 사용하여 NLS 코드 빌드 지원(Juan José Santamaría Flecha, Davinder Singh, Amit Kapila)§

  • 다음 이름의 파일이 있을 때 MSVC 설치 스크립트의 실패 가능성을 방지구성소스 코드 트리 위의 여러 수준 (Arnold Müller)§

    이것은 찾는 일부 논리를 혼란스럽게 할 수 와이즈 토토.구성소스 트리의 최상위 레벨을 식별합니다.