릴리스 노트

PostgreSQL 12.4

E.19. 릴리스 12.4

출시 날짜 :2020-08-13

이 릴리스에는 12.3의 다양한 수정 사항이 포함되어 범퍼카 토토. Major Release 12의 새로운 기능에 대한 정보는 참조섹션 E.23.

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

덤프/복원은 12.x.를 실행하는 사람들에게는 필요하지 않습니다.

그러나 12.2 이전 버전에서 업그레이드하는 경우 참조섹션 E.21.

E.19.2. 변화

  • 보안 설정search_path논리적 복제에서 Walsenders와 노동자 (Noah Misch)를 적용합니다§ §

    게시자 또는 가입자 데이터베이스의 악의적 인 사용자는 종종 슈퍼업자 인 역할 실행 복제에 의해 임의의 SQL 코드를 실행할 수 범퍼카 토토. 여기의 일부 위험은 CVE-2018-1058에 설명 된 것과 동일하며 복제 발신자와 수신기가 빈으로 실행되도록 함으로써이 패치에서 완화됩니다search_path설정. (CVE-2018-1058과 마찬가지로, 그 변화는 복제 된 테이블의 DDL에 사용되는 자격이없는 이름의 문제를 일으킬 수 범퍼카 토토.) 다른 위험은 신뢰할 수없는 역할에 속하는 객체를 복제하는 데 고유합니다.

  • Contrib Modules의 설치 스크립트를보다 안전하게 만듭니다 (Tom Lane)§

    공격자가 Extension의 대상 스키마 또는 일부 전제 조건 확장 스키마에서 개체를 생성 할 수 있다면 CVE-2018-1058에 설명 된 것과 유사한 공격은 확장 설치 스크립트에 대해 수행 될 수 범퍼카 토토. 확장자는 종종 슈퍼 업체 권한을 설치해야하므로 슈퍼 사용자 권한을 얻는 경로를 열 수 범퍼카 토토.search_path설치 스크립트를 실행하는 데 사용됩니다. 장애를 입히다check_function_bodies스크립트 내; 일부 Contrib 모듈에 사용 된 카탈로그 조정 쿼리를 고정하여 안전하게 보장합니다.

  • 분할 가지 치기의 에지 케이스 수정 (Etsuro Fujita, Dmitry Dolgov)§ §

    여러 파티션 키 열이 있으면 일부 열이 제약이없는 경우 가지 치기 테스트 생성이 잘못 행동 할 수 범퍼카 토토여기서조항 또는 다중 제약 조항. 이로 인해 서버 충돌, 잘못된 쿼리 결과 또는 어설 션 고장이 발생할 수 범퍼카 토토.

  • 파티션 별 NestLoop 조인 (Tom Lane) 내부의 매개 변수화 된 비트 맵 및 비트 맵 인덱스 스캔의 구성 수정§

    그러한 스캔이 조인 외부에서 값을 사용하는 데 필요한 계획은 일반적으로 실행시 충돌합니다.

  • 파티션 된 테이블에 동일한 쿼리에서 정적 및 런타임 파티션 가지 치기가 적용될 때 잘못된 계획 실행 수정 및 쿼리 (Amit Langote, Tom Lane)와 동시에 새 파티션이 추가됩니다.§

  • 논리적 복제 walsender에서 requalive 메시지 (Álvaro Herrera) 후 피드백 메시지를 보내지 않는 실패 수정§

    내장 된 Walreceiver가 어쨌든 피드백 응답 (잘못된 상태를 지우는)을 상당히 자주 보낼 수 있기 때문에 내장 논리 복제를 사용할 때 비교적 작은 문제입니다. 그러나 다른 복제 시스템과 같은pglogical, 상당한 성능 문제를 일으킨다.

  • Fix firing of column-specific업데이트논리적 복제 가입자 (Tom Lane)의 트리거§

    코드는 게시자와 가입자 테이블간에 열 숫자가 다를 가능성을 설명하기 위해 무시되어 실제로 다르면 어떤 발사가 발생하는지에 대한 잘못된 결정이 내려 질 수 범퍼카 토토..

  • 가장 오래된 Xmin 및 LSN 값을 업데이트하는 동안pg_replication_slot_advance ()(Michael Paquier)§

    이 기능은 이전에 그렇게하지 않았으며, 복제 슬롯의 수동 발전 후 리소스 정리 (예 : 롱이 필요한 WAL 세그먼트 제거)를 방지 할 수 있습니다..

  • 느린 실행 수정ts_headline ()(Tom Lane)§

    이전의 사소한 릴리스 세트에 추가 된 문구 검색 수정이 발생할 수 있습니다ts_headline ()긴 문서에 불합리한 시간을 소비하기 위해; 설상가상으로, 쿼리는 번거로운 루프 내에서 취소 할 수 없었습니다.

  • 반복 ()Query Cancel (Joe Conway)에 의해 기능을 중단 할 수 범퍼카 토토.§

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

  • pg_read_file ()및 관련 함수는 EOF에 도달 할 때까지 읽습니다 (Joe Conway)§ §

    이전에, 특정 데이터 길이를 읽을 수 없다면,이 기능은 파일 길이가보고 된 모든 파일 길이에서stat (). 파이프 및 기타 종류의 가상 파일에 도움이되지 않습니다.

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

    SQL이나 JSON은의 개념을 가지고 있지 않습니다.NAN(NOMBER), 그러나JSONPATH코드는 어쨌든 그러한 값을 허용하려고 시도했습니다. 이것은 반드시 비표준 동작으로 이어지므로 처음에 그러한 값을 거부하는 것이 좋습니다.

  • 단일 핸들inf또는NAN부동 소수점 집계에 올바르게 입력 (Tom Lane)§

    영향을받는 골재는입니다.corr (), covar_pop (), lecc_intercept (), rec_r2 (), lect_slope (), lect_sxx (), lect_sxy (), lecr_syy (), stddev_pop ()var_pop (). 그러한 경우의 정답은입니다.NAN, 그러나 알고리즘 변경이 소개되었습니다PostgreSQLv12는 이러한 집계가 대신 0을 생산하게했습니다.

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

    일부 부분 집계 작업자가 만 발견 된 경우NANS는 비 만 발견했지만NANs, 결과가 잘못 결합되어 전체 결과가 잘못되었을 수 범퍼카 토토 (즉,NAN해야 할 때).

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

    DateTime 입력 코드의 의도는 허용하는 것입니다24 : 00 : 00또는 동등한23 : 59 : 60이지만 더 큰 값은 없습니다. 그러나 범위 점검은 수용 할 수 있도록 오해되었습니다23 : 59 : 60.NNN0이 아닌 분수NNN. 타임 스탬프 값에서는 다음 날 첫 번째 2 초로 포장됩니다.TimeandTIMETZ값, 저장된 값은 실제로 24 시간 이상이어서 덤프/재 장전 실패 및 기타 오해를 유발합니다.

  • index index index quoting설명의 비 텍스트 출력 형식 (Tom Lane, Euler Taveira)§

  • 수정설명의 자원 사용에 대한 회계, 특히 버퍼 액세스에 대한 계정합병 수집노드 (Jehan-Guillaume de Rorthais)§

  • 제약 조건 재 방문 타이밍 수정Alter Table(David Rowley)§

    IfAlter Table테이블의 내용을 완전히 다시 작성해야하며 (예 : 열의 데이터 유형 변경으로 인해) 테이블을 스캔하여 외래 키를 다시 검증하거나check제약 조건, 때로는 잘못된 순서로 작업을 수행하여와 같은 홀수 오류로 이어집니다.파일에서 블록 0을 읽을 수 없음 "base/nnnnn/nnnnn": 8192 바이트 만 읽습니다..

  • 수정Reindex 동시에지수의 복제 아이덴티티 플래그 (Michael Paquier)를 보존하려면§

    Previously, reindexing a table's replica identity index caused the setting to be lost, preventing old tuple values from being included in future logical-decoding output.

  • 잘못된 널 표시를 중심으로 작업pg_subscription.subslotnameandpg_subscription_rel.srsublsn(Tom Lane)§ §

    부트 스트랩 카탈로그 데이터는이 두 카탈로그 열을 항상 널 비 널처럼 잘못 표시합니다. 기존 설치에서 그 실수를 수정하는 쉬운 방법은 없습니다 (v13 이상은 올바른 표시를 할 것입니다).srsublsn그것이 null인지 확인하지 않고; 그것의 충돌은 불가능하지만 아마도 불가능하지는 않을 것입니다.

  • 대처측면변동이없는 하위에 첨부 된 제한 조항의 참조selectinFrom절 (Tom Lane)§

    이 감독은 쿼리 실행시 주장 실패 또는 충돌을 초래할 수 있습니다.

  • 선택성 추정 중에 호출 된 연산자에 대한 쿼리 지정된 Collation 사용 (Tom Lane)§ §

    이전에, 기본 데이터베이스 열의 충돌이 사용되었습니다. 그러나 Query의 Collation을 사용하는 것이 더 정확합니다.

  • 절대 분석되지 않은 외국 테이블에는 튜플이 제로가 있다고 믿지 마십시오 (Tom Lane)§

    이것은 주로 획득 할 그룹 수에 대한 플래너의 추정치에 영향을 미쳤습니다그룹 by.

  • 가짜 경고 제거남은 자리 표시 자 튜플in BRIN index de-summarization (Álvaro Herrera)§

    케이스는 취소 된 진공 상태에서 합법적으로 발생할 수 있으므로 경고에 대한 경고가 지나치게 시끄럽습니다.

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

    Iftemp_tablespaces비어 있거나 명시 적으로 데이터베이스의 기본 테이블 스페이스를 명시 적으로 이름을 지정했습니다. 그러한 파일은에 배치되었습니다.pg_default예상대로 데이터베이스의 1 차 테이블 스페이스 대신 테이블 스페이스.

  • WAL 일관성 검사 중 SP-Gist 인덱스 페이지 마스킹시 코너 케이스 오류 수정 (Alexander Korotkov)§

    이것은 허위 실패 보고서를 유발할 수 범퍼카 토토Wal_Consistency_checking활성화되었습니다.

  • 서버의 오류 처리 개선Buffile모듈 (Thomas Munro)§ §

    I/O 오류가 EOF에 도달 할 수 없거나 전혀보고되지 않은 경우를 수정하십시오. 또한 블록 번호 및 바이트 카운트와 같은 세부 사항을 추가하십시오.

  • Fix conflict-checking anomalies inSERIALIZALE격리 모드 (Peter Geoghegan)§

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

  • 죽은 Btree Index 항목의 반복적 인 표시를 피하십시오 (Masahiko Sawada)§

    기능적으로 무해하지만, 이로 인해 체크섬이 활성화 될 때 쓸모없는 WAL 트래픽이 발생했거나Wal_log_hintson.

  • 체크 포인터 프로세스를 수정하여 파일 동기화 요청을 버릴 때fsyncis Off (Heikki Linnakangas)§

    그러한 요청은 if로 No-OPS로 취급됩니다.fsync꺼져 있지만 체크 포인터의 보류중인 조치 테이블에서 제거하는 것을 잊었습니다. 이것은 그 테이블의 부풀어 오르고 가능한 주장 실패로 이어질 것입니다.fsync나중에 다시 활성화되었습니다.

  • 백업 중에 JIT 컴파일이 활성화 될 때 비 독점적 인 백업을 정리하는 동안 문제를 피하십시오 (Robert Haas)§ §

  • 수정하기 전에 올바른 잠금 장치를 얻기 위해 일부 코드 경로의 실패 수정PG_CONTROL(Nathan Bossart, Fujii Masao)§

    이 감독은 허용 할 수 범퍼카 토토PG_CONTROL일관되지 않은 체크섬으로 작성하려면 다음에 데이터베이스를 다시 시작할 때 데이터베이스를 다시 시작할 수없는 것을 포함하여 나중에 문제를 일으킬 수 있습니다PG_CONTROL업데이트.

  • 오류 수정currtid ()andcurrtid2 ()(Michael Paquier)§ §

    이 기능 (문서화되지 않고 ODBC 드라이버의 고대 버전에서만 사용됨)은 충돌을 초래할 수있는 코딩 오류가 포함되어 있거나 혼란스런 오류 메시지가 포함되어 범퍼카 토토.파일을 열 수 없음저장소가없는 관계에 적용될 때.

  • 전화 방지elog ()또는palloc ()스핀 록을 들고있는 동안 (Michael Paquier, Tom Lane)§ §

    복제 슬롯과 관련된 논리는이 코딩 규칙을 여러 차례 위반했습니다. 문제가 발생할 확률은 상당히 낮지 만, 호출 된 함수의 오류는 스피 록이 고정 될 것입니다.

  • 논리적 복제 가입자의 어설 션 수정REPLICA IDENTITY FULL(Euler Taveira)§

    이것은 단지 잘못된 주장 이었으므로 표준 생산 빌드에 영향을 미치지 않습니다.

  • libpq쓰기 실패 후 데이터베이스 연결 소켓에서 계속 읽으려고 노력하고 있습니다 (Tom Lane)§

    이것은 죽어가는 서버 프로세스에서 최종 오류 메시지를 수집하는 것뿐만 아니라 읽기 실패를 볼 때까지 연결이 손실 된 것을 고려하지 않기 때문에 중요합니다. 이 감독 허용libpq계속 보내려고copy응용 프로그램에 실패를보고하는 대신 중간 전환 연결 손실 후 무기한 데이터.

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

    GSS 암호화를 사용한 연결은 서버가 다시 시작한 후 재설정을 시도하거나 후보 서버 목록 중 하나로 이동할 때 동결 될 수 범퍼카 토토.

  • 수정ECPG충돌BYTEA및 커서 변수 (Jehan-Guillaume de Rorthais)§

  • 디스크 외 공간 오류를 제대로보고합니다pg_dumpandPG_BASEBACKUP(Justin Pryzby, Tom Lane, Álvaro Herrera)§

    일부 코드 경로는와 같은 어리석은 보고서를 생성 할 수 범퍼카 토토.파일을 쓸 수 없음 : 성공.

  • makePG_RESTORE순서대로 데이터 항목을 복원해야 할 때 Data-Offset-Less Custom-Format 아카이브 파일에 대처하십시오 (David Gilman, Tom Lane)§ §

    pg_dump출력을 찾을 수없는 경우 해당 파일을 생성합니다 (예 : 출력이 무언가에 배관되는 경우). 이 수정은 주로 그러한 파일에서 병렬 복원을 수행하는 능력을 향상시킵니다.

  • 테이블 레벨 권한과 컬럼 당 특권을 모두 갖는 테이블의 병렬 복원 (Tom Lane)§

    테이블 레벨 권한 보조금을 먼저 적용해야하지만 병렬 복원이 그렇게 할 수없는 방식으로 주문하지는 않았습니다. 이것은로 이어질 수 범퍼카 토토.동시에 업데이트 된 튜플오류 또는 일부 열당 특권 보조금의 실종. 이에 대한 수정은 아카이브 파일의 이러한 항목간에 종속성 링크를 포함하는 것입니다. 즉, 새 덤프는 수정 된 상태에서 가져와야합니다pg_dump문제가 재발하지 않도록합니다.

  • pg_upgradeVACUUM_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파일의 디렉토리 항목을보고이를 검사하는 사이에 삭제가 발생하면 혼란 스러울 것입니다stat ().

  • makePG_TEST_FSYNCWindows에서 바이너리 I/O 모드 사용 (Michael Paquier)§

    이전에는 텍스트 모드로 테스트 파일을 썼는데, 이는 정확한 반영이 아닙니다PostgreSQL의 실제 사용법.

  • 수정Contrib/Amcheck삭제 된 삭제 된 인덱스 페이지에 대해 불평하지 않으려면 (Alexander Korotkov)§

    이 상황은 Wal Replay 동안 정상입니다.

  • 로컬 상태를 올바르게 초기화하지 못하는 수정Contrib/DBlink(Joe Conway)§

    올바른 상황 조합을 통해로 이어질 수 범퍼카 토토.dblink_close ()예상치 못한 원격 발행커밋.

  • 수정Contrib/Pgcrypto의 오용deflate ()(Tom Lane)§

    thepgp_sym_encrypt함수는 잘못된 압축 데이터를 생성 할 수 범퍼카 토토Zlib의 API 요구 사항. 우리는이 오류가 주식으로 나타나는 보고서가 없습니다Zlib, 그러나 IBM을 사용할 때 볼 수 범퍼카 토토Zlibnx구현.

  • 감압 로직에서 코너 케이스 수정Contrib/Pgcrypto'spgp_sym_decrypt기능 (Kyotaro Horiguchi, Michael Paquier)§

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

  • Microsoft Visual Studio 2015를 사용하여 NLS 코드 구축을 지원합니다 (Juan José Santamaría Flecha, Davinder Singh, Amit Kapila)§

  • MSVC 설치 스크립트의 실패를 피하십시오.구성소스 코드 트리 위의 여러 레벨 (Arnold Müller)§

    이것은 찾은 논리를 혼란스럽게 할 수 범퍼카 토토구성소스 트리의 최상위 레벨을 식별하려면