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

E.21. 릴리스 12.2

출시일: 2020-02-13

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

E.21.1. 버전 12.2로 마이그레이션

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

그러나 분할된 테이블을 참조하는 외래 키 제약 조건이 있는 경우 해당 기능의 버그에 대한 아래 두 항목을 참조하십시오.

E.21.2. 변경사항

  • 다음에 대한 누락된 권한 확인 추가변경 ... 확장에 따라 다름(알바로 에레라)§

    객체를 확장에 종속된 것으로 표시하는 것은 어떤 권한 검사도 하지 않았습니다. 이러한 감독으로 인해 모든 사용자는 확장 프로그램을 삭제할 수 있는 사람이 루틴, 트리거, 구체화된 뷰 또는 인덱스를 삭제할 수 있도록 표시할 수 있었습니다. 호출 사용자가 지정된 개체를 소유하도록 요구합니다(따라서 해당 개체를 삭제할 수 있는 권한도 있어야 함). (CVE-2020-1720)

  • 수정잘라내기 ... 캐스케이드모든 관련 파티션이 잘렸는지 확인하기 위해(Jehan-Guillaume de Rorthais)§

    파티션된 테이블의 파티션이 다음으로 잘린 경우캐스케이드옵션이 있고 분할된 테이블에 다른 테이블의 외래 키 참조가 있는 경우 해당 테이블도 잘라야 합니다. 참조 테이블 자체가 분할되어 외래 키 제약 조건을 위반하는 행이 살아남을 수 있는 경우 이를 확인해야 할 필요성이 누락되었습니다.

    그러므로 분할된 테이블 사이에 외래 키 제약 조건이 있고 파티션 수준을 수행한 경우잘라내기참조된 테이블토토 핫 외래 키 위반이 있는지 확인해야 합니다. 가장 간단한 방법은 외래 키 제약 조건의 새 인스턴스를 추가하는 것입니다. 성공하면 해당 인스턴스나 원래 제약 조건을 삭제합니다. 그러나 잠금 관점토토 핫는 이는 금지될 수 있으며, 이 경우 일치하지 않는 행을 수동으로 쿼리하는 것이 더 나을 수 있습니다.

  • 하위 파티션에 외래 키 제약 조건을 연결하지 못하는 문제 수정(Jehan-Guillaume de Rorthais)§

    다중 레벨로 분할된 테이블의 첫 번째 레벨 아래에 파티션을 추가할 때, 최상위 분할 테이블을 참조하는 외래 키 제약 조건이 새 파티션에 복제되지 않아 나중에 제약 조건 위반이 발생할 수 있습니다. 새 파티션을 분리했다가 다시 연결하는 것이 이 문제를 해결하는 가장 저렴한 방법입니다. 그러나 수정해야 할 파티션이 많은 경우 외래 키 제약 조건의 새 인스턴스를 추가하는 것이 더 나을 수 있습니다.

  • 분할된 테이블 또는 상속 트리에서 동시 업데이트 중 발생할 수 있는 충돌 수정(Tom Lane)§

  • 파티션된 테이블의 행 트리거가 적절한 경우 하위 파티션에 올바르게 복제되는지 확인하세요(Álvaro Herrera)§

    파티션을 생성하거나 연결할 때 사용자 정의 트리거(외래 키 또는 지연된 고유 제약 조건에 대한 트리거 제외)가 누락될 수 있습니다.

  • 열별로 실행되도록 논리적 복제 구독자 코드 수정업데이트적절할 때 트리거됨(Peter Eisentraut)§

  • 대규모 트랜잭션을 여러 개의 별도 임시 파일로 분산시켜야 할 때 논리적 디코딩 실패를 방지하세요(Amit Khandekar)§ §

  • 논리적 복제 구독자가 행 업데이트를 처리할 때 발생할 수 있는 충돌 또는 데이터 손상 수정(Tom Lane, Tomas Vondra)§

    이 버그는 구독자의 테이블에 게시자로부터 복사되지 않은 열이 포함되어 있고 참조에 의한 전달 데이터 유형이 있는 경우에만 눈에 띄는 문제를 일으켰습니다.

  • 구독 관계의 DDL 변경 후 논리적 복제 구독자의 충돌 수정(Jehan-Guillaume de Rorthais, Vignesh C)§

  • 데이터베이스 충돌 및 재시작 후 논리적 복제 게시자의 오류 수정(Vignesh C)§

  • 다음의 효과를 확인하세요.pg_replication_slot_advance()물리적 복제 슬롯의 경우 다시 시작해도 유지됩니다(Alexey Kondratov, Michael Paquier)§ §

  • 다음을 사용하여 논리적 복제의 효율성을 향상시킵니다.복제본 ID 전체(콘스탄틴 크니즈니크)§

    업데이트 또는 삭제 작업 중에 기존 튜플을 검색할 때 마지막 튜플이 아닌 첫 번째 일치하는 튜플을 반환합니다.

  • 다음보다 큰 데이터베이스 OID를 처리하도록 기본 백업 수정INT32_MAX(피터 아이젠트라우트)§

  • 병렬 계획이 항상 정확한 시간에 종료되도록 보장(호리구치 쿄타로)§

    이러한 감독으로 인해 다음이 초래되는 것으로 알려져 있습니다.임시 파일 유출다중 배치 병렬 해시 조인으로 인한 경고.

  • Limit 노드 아래에 있는 Gather 또는 GatherMerge 계획 노드의 조기 종료 방지(Amit Kapila)§

    이것은 예를 들어 Nestloop 내부에 있는 경우와 같이 계획 노드를 두 번 이상 스캔해야 하는 경우 실패를 방지합니다.

  • 코어가 많은 CPU에서 병렬 해시 조인의 효율성 향상(Ga토토 핫 De토토 핫, Thomas Munro)§

  • 병렬 충돌 방지색인 생성사용 가능한 동적 공유 메모리 슬롯이 없는 경우 (Thomas Munro)§ §

    대신 비병렬 인덱스 빌드로 대체하세요.

  • 사용 가능한 동적 공유 메모리 슬롯이 없을 때 메모리 누수 방지(Thomas Munro)§

  • 무시동시임시 테이블에서 인덱스 생성, 삭제 또는 재구축을 수행할 때의 옵션(Michael Paquier, Heikki Linnaka토토 핫as, Andres Freund)§

    임시 테이블에 다음이 있는 경우 이상한 실패를 방지합니다.커밋 중액션. 사용해도 아무런 이점이 없습니다동시임시 테이블의 경우 다른 세션이 테이블에 액세스할 수 없으므로 추가 처리가 의미가 없습니다.

  • 표시된 임시 테이블에서 표현식 인덱스를 재설정할 때 발생할 수 있는 오류 수정ON 커밋 행 삭제(톰 레인)§

  • BRIN 인덱스 작업토토 핫 발생할 수 있는 충돌 문제 해결상자, 범위그리고inet데이터 유형(Heikki Linnaka토토 핫as)§

  • GiST 인덱스 빌드에서 재귀 페이지 분할 중 충돌 수정(Heikki Linnakangas)§ §

  • GIN 색인에서 삭제된 페이지 처리 문제 수정(Alexander Korotkov)§ § § §

    교착 상태 가능성, 삭제된 페이지 상태의 잘못된 업데이트 및 최근 삭제된 페이지 통과 실패를 방지하세요.

  • SubPlan으로 인한 충돌 가능성 수정(sub-선택) 여러 행 내토토 핫목록 (톰 레인)§

  • 실패 수정테이블 변경a토토 핫 참조된 열이 있는 경우생성됨표현식은 동일한 유형의 이전에 추가되거나 변경되었습니다.변경명령(톰 레인)§

  • 기본값 삽입 실패 수정누락튜플 변환 중 속성(Vik Feari토토 핫, Andrew Gierth)§

    다음에 의해 추가된 열에서 값이 올 때 값이 NULL로 잘못 읽힐 수 있습니다.테이블 변경 열 추가일정한 기본값을 사용합니다.

  • 이미 제거되었을 수 있는 관계 세그먼트를 열어서 발생하는 체크포인터 프로세스의 패닉 문제 수정(Thomas Munro)§ §

  • FileClose() 실패 후 충돌 수정(Noah Misch)§

    이 문제는 다음에서만 관찰될 수 있습니다.data_sync_retry활성화됩니다. 그렇지 않으면 FileClose() 실패가 패닉으로 보고되기 때문입니다.

  • 다중 처리 수정행 이후외부 테이블토토 핫 트리거(Etsuro Fujita)§

  • 통과별 집계 전환 상태로 발생하지 않는 충돌 수정(Andres Freund, Teodor Sigaev)§

  • 오류 보고 개선to_date()그리고to_timestamp()(톰 레인, 알바로 에레라)§ §

    입력 문자열의 잘못된 월 또는 일 이름에 대한 보고는 멀티바이트 문자 중간에서 입력이 잘릴 수 있으며, 이로 인해 부적절하게 인코딩된 오류 메시지가 표시되어 후속 오류가 발생할 수 있습니다. 대신 다음 공백에서 자릅니다.

  • 다음에 대한 off-by-one 결과 수정추출(ISOYEAR FROM타임스탬프)BC 날짜의 경우(Tom Lane)§

  • 다음을 확인하세요.<유형에 대한 연산자문자불확정 데이터 정렬 오류를 다음과 같이 보고합니다.조합 0에 대한 캐시 조회 실패(톰 레인)§

  • TID 스캔을 순차 스캔으로 취급하지 마십시오(Tatsuhito Kasahara)§ §

    리팩터링 감독으로 인해 TID 스캔(CTID에 의한 선택)이 통계 보기에서 순차 스캔으로 계산되고 순차 스캔처럼 전체 테이블 조건자 잠금을 사용하게 되었습니다. 후자의 동작은 직렬화 가능 트랜잭션 모드에서 불필요한 직렬화 오류를 일으킬 수 있습니다.

  • 스택 오버플로 방지정보_스키마시스템 카탈로그에 자체 참조 뷰가 있을 때 보기(Tom Lane)§

    자기 참조 보기는 작동할 수 없습니다. 항상 무한 재귀가 발생합니다. 뷰를 실행하려고 할 때 해당 상황을 올바르게 처리했지만 자동 업데이트 가능 여부를 문의할 때는 처리하지 않았습니다.

  • walsender 프로세스가 항상 트랜잭션 시작 시간에 대해 NULL을 표시하는지 확인하세요.pg_stat_activity(알바로 에레라)§ §

    이전에는xact_start열에 프로세스 시작 시간이 표시되는 경우가 있습니다.

  • 매우 큰 내부 관계로 해시 조인 성능 향상 (Thomas Munro)§

  • 활성 walsender 프로세스가 많을 때 스핀록 경합 감소(Pierre Ducroquet)§

  • 배치 수정하위 계획이 제거됨필드 입력설명출력(다니엘 구스타프손, 톰 레인)§

    텍스트가 아닌 출력 형식토토 핫 이 필드는 내부로 방출되었습니다.계획하위 그룹으로 인해 구문상 잘못된 출력이 발생합니다. 의도한 대로 상위 Append 또는 MergeAppend 계획 노드에 연결합니다. 이로 인해 필드의 위치가 텍스트 출력 형식으로도 변경됩니다. 동일한 계획 노드에 연결된 InitPlan이 있는 경우하위 계획이 제거됨이제 그 앞에 표시됩니다.

  • 수정설명's설정텍스트가 아닌 출력 형식토토 핫 공백으로 인쇄하는 옵션(Tom Lane)§

    텍스트가 아닌 출력 형식토토 핫는 값이 비어 있거나 0인 경우에도 요청 시 필드가 나타나야 합니다.

  • 사용자가 실제로 쿼리에 명명된 테이블의 해당 열을 읽을 수 있는 경우 플래너가 잠재적 누출 테스트를 하위 테이블 통계에 적용하도록 허용합니다(Dilip Kumar, Amit La토토 핫ote)§

    이 변경 사항은 CVE-2017-7484 수정으로 생성된 파티션된 테이블의 성능 문제를 해결합니다. 해당 보안 수정으로 인해 현재 사용자가 직접 읽을 수 있는 권한이 없는 열의 통계에 누수 연산자를 적용하는 것이 허용되지 않았습니다. 그러나 분할된 상위 테이블에만 권한을 부여하고 개별 파티션에는 부여하지 않는 것이 다소 일반적입니다. 이러한 경우 사용자는 상위 항목을 통해 열을 읽을 수 있으므로 이 보안 제한은 의미가 없습니다. 이는 필요한 것보다 더 나쁜 플래너 추정 결과를 가져올 뿐입니다.

  • 단일 행 하위 쿼리에 대한 조인의 지나치게 공격적인 축소로 인해 발생한 플래너 오류 수정(Tom Lane)§

    이 실수로 인해 다음과 같은 오류가 발생했습니다.조인 관계 구성에 실패했습니다.

  • 수정no = opfamily에 대한 연산자NNNNa와 일치시키려고 할 때 플래너 오류가 발생했습니다.좋아요또는 바이너리 호환 인덱스 opclass에 대한 정규식 패턴 일치 연산자(Tom Lane)§

  • 에 대한 선택성 계산에서 극단적인 충돌 및 잘못된 추정 수정<@그리고@범위 연산자(Michael Paquier, Andrey Borodin, Tom Lane)§

  • 잘못된 추정 수정또는가장 일반적인 값 확장 통계를 사용할 때의 절 (Tomas Vondra)§ §

  • 가장 일반적인 값 확장 통계를 적용할 때 시스템 열을 무시합니다(Tomas Vondra)§

    이것은 방지합니다음수 비트맵 집합 구성원은 허용되지 않음영향을 받은 쿼리에 대한 플래너 오류입니다.

  • 가상 BRIN 인덱스를 지원하도록 BRIN 인덱스 논리 수정(Julien Rouhaud, Heikki Linnakangas)§

    이전에는색인 고문확장 프로그램은 플래너가 가상의 BRIN 인덱스와 관련된 계획을 생성하도록 시도했지만 실패했습니다. 왜냐하면 BRIN 비용 추정 코드가 항상 인덱스의 메타페이지에 물리적으로 액세스하려고 시도하기 때문입니다. 이제 인덱스가 단지 가상인지 확인하고 그렇다면 인덱스 매개변수에 대한 기본 가정을 사용합니다.

  • 조건부 뷰 자동 업데이트를 사용하려는 시도에 대한 오류 보고 개선대신규칙 (딘 라쉬드)§

    이것은 지원되지 않았지만 이전에는 실행 시에만 오류가 발생했기 때문에 플래너 오류로 가려질 수 있었습니다.

  • 복합 유형이 범위 유형을 통해 간접적으로 자체적으로 포함되는 것을 방지합니다(Tom Lane, Julien Rouhaud)§ §

  • 다음과 같은 의사 유형을 반환하는 파티션 키 표현식을 허용하지 않습니다.기록(톰 레인)§

  • 금지된 유형의 인덱스 표현식에 대한 오류 보고 수정(Amit Langote)§

  • a만 포함하는 뷰 덤핑 수정뷰 출력 열의 이름이 변경된 경우를 처리하기 위한 목록(Tom Lane)§

  • 다음에서 사용되는 데이터 유형 및 데이터 정렬을 확인하세요.XMLTABLE뷰 또는 규칙의 종속성을 계산할 때 구성이 고려됩니다(Tom Lane)§

    이전에는 다음을 사용하여 뷰를 깨는 것이 가능했습니다.XMLTABLE유형이 뷰에서 달리 참조되지 않은 경우 유형을 삭제합니다. 이 수정 사항은 기존 보기에 대해 이미 기록된 종속성을 수정하지 않고 새로 생성된 보기에 대해서만 수정합니다.

  • 원치 않는 RADIUS 인증 매개변수 축소 및 잘림 방지(Marcos David)§

    pg_hba.conf파서가 실수로 이러한 필드를 SQL 식별자로 처리했지만 일반적으로 그렇지 않습니다.

  • 수신 전송알림보내기 전에 클라이언트에게 메시지ReadyForQuery, 이후가 아닌 (톰 레인)§

    이 변경으로 인해 libpq 및 유사하게 작동하는 다른 클라이언트 라이브러리를 사용하면 클라이언트가 트랜잭션이 완료되었다고 생각할 때까지 트랜잭션 중에 수신된 모든 알림을 사용할 수 있습니다. 이는 아마도 실제 애플리케이션(어떠한 경우에도 비동기 알림에 대처해야 함)에서는 아무런 차이가 없을 것입니다. 하지만 재현 가능한 동작으로 테스트 케이스를 구축하기가 더 쉽습니다.

  • GSSAPI 암호화 사용 시 비차단 I/O 처리 관련 버그 수정(Tom Lane)§

    이러한 오류로 인해 데이터가 삭제되거나(일반적으로 후속 유선 프로토콜 위반 오류로 이어짐) 다음과 같은 상황이 발생할 수 있습니다.실시간 잠금모든 데이터가 전송되지 않았음에도 불구하고 전송 프로세스가 절전 모드로 전환되는 상황. 게다가libpq각 연결에 대해 별도의 암호화 상태를 유지하지 못하여 여러 개의 암호화된 데이터베이스 연결을 사용하는 애플리케이션에 오류가 발생할 가능성이 있습니다.

  • 허용libpqGSSAPI 코드가 (Tom Lane)토토 핫 컴파일되지 않은 경우에도 모든 GSS 관련 연결 매개변수를 구문 분석합니다.§

    이것은 특정 빌드의 기능 부족으로 인해 일부가 무시되거나 제한되는 경우에도 오래 전에 모든 관련 매개변수를 항상 허용하는 것이 좋은 생각으로 간주되었던 SSL 지원과 유사한 동작을 만듭니다.

  • 잘못된 처리 수정%b그리고%B형식 코드ecpg'sPGTYPEStimestamp_fmt_asc()기능 (토마스 본드라)§

    오프바이원(off-by-one) 오류로 인해 이 코드는 잘못된 월 이름을 인쇄하거나 충돌이 발생할 수 있습니다.

  • 메모리 부족 오류 후 충돌 방지ecpglib(톰 레인)§

  • 병렬 수정pg_dump/pg_restore작업자 프로세스 생성 실패를 보다 적절하게 처리하기 위해(Tom Lane)§

  • 병렬 종료 시도 시 충돌 또는 작동 중지 가능성을 방지pg_dump/pg_restore신호를 통해 실행(Tom Lane)§

  • pg_upgrade, 테이블에서 업그레이드할 수 없는 데이터 유형을 검색하는 동안 배열과 범위 내부를 살펴보세요(Tom Lane)§

  • 보다 철저한 구문 검사 적용사용자 생성's--연결 제한옵션(알바로 에레라)§

  • 더 많은 경우 PL/pgSQL 복합 유형 변수가 참조하는 특정 유형의 변경에 대처합니다(Ashutosh Sharma, Tom Lane)§

    PL/pgSQL 변수가 참조하는 복합 유형을 삭제하고 다시 생성하면 다음이 발생할 수 있습니다.OID와 관계를 열 수 없습니다.NNNN오류.

  • 충돌 방지postgres_fdw다음과 같은 명령을 보내려고 할 때업데이트 원격 탭 SET (x,y) = (SELECT ...)원격 서버(Tom Lane)로§

  • contrib/dict_int, 거부맥스렌1보다 작은 설정 (Tomas Vondra)§

    이것은 해당 매개변수에 대한 어리석은 설정으로 인한 충돌 가능성을 방지합니다.

  • NULL 범주 값을 허용하지 않음기여/tablefunc's크로스탭()함수 (조 콘웨이)§

    이 사례는 유용하게 작동하지 않았으며 일부 플랫폼토토 핫는 충돌이 발생했습니다.

  • 수정구성34677_34702SSL_clear_options()1.1.0 이전 OpenSSL 버전에서 작동하도록 함수 (Michael Paquier, Daniel Gustafsson)§

    이 문제는 SSL 압축 옵션을 원하는 대로 설정하지 못하게 할 수 있습니다.PostgreSQL이전 버전의 OpenSSL을 기반으로 구축되었습니다.

  • 일부 시간 초과 및 통계 추적 GUC 변수를 다음으로 표시PGDLLIMPORT, Windows에서 확장 프로그램이 액세스할 수 있도록 허용(Pascal Legrand)§

    다음에 적용됩니다.idle_in_transaction_session_timeout, lock_timeout, statement_timeout, track_activities, track_counts트랙_기능.

  • 다음에 대한 온전성 검사에서 메모리 누수 방지석판메모리 컨텍스트(Tomas Vondra)§

    이것은 프로덕션 빌드토토 핫는 문제가 되지 않습니다. 일반적으로 메모리 컨텍스트 확인이 활성화되어 있지 않기 때문입니다. 하지만 디버그 빌드토토 핫는 누출이 상당히 심각할 수 있습니다.

  • LWLock 통계 메커니즘에 의해 보고된 여러 통계 항목 수정(Fujii Masao)§

    LWLock 통계 코드(기본적으로 빌드되지 않음; 다음으로 컴파일해야 함-DLWLOCK_STATS)은 잘못된 해시테이블 키 생성으로 인해 동일한 LWLock 및 백엔드 프로세스에 대한 여러 항목을 보고할 수 있습니다.

  • Windows에서 프로세스 간 신호 전달이 지연되는 경쟁 조건 수정(Amit Kapila)§

    이로 인해 눈에 띄는 타이밍 이상한 현상이 발생했습니다.알림및 기타 잘못된 행동이 있을 수 있습니다.

  • Windows의 코너 케이스 오류 결과 처리 수정읽기파일()기능 (토마스 먼로, 후안 호세 산타마리아 플레차)§

    지금까지 알려진 바에 따르면 이러한 감독으로 인해 실제 쿼리 오작동이 아닌 시끄러운 로그 메시지가 발생했을 뿐입니다.

  • Windows에서는 다음 후에 몇 번 다시 시도하십시오.ERROR_ACCESS_DENIED파일 접근 실패 (Alexander Lakhin, Tom Lane)§ §

    이것은 대상 파일이 삭제 플래그가 지정되었지만 아직 실제로 사라지지 않았기 때문에 파일 열기 시도가 실패하는 경우에 대처하는 데 도움이 됩니다.pg_ctl예를 들어, 포스트마스터가 아직 종료되었는지 조사할 때 이러한 오류로 인해 자주 실패했습니다.

  • Windows에서 다음과 같은 경우 포스트마스터의 로그 파일에 대한 공유 위반을 해결하십시오.pg_ctl포스트마스터가 중지된 직후에 시작하는 데 사용됩니다. 예를 들어 다음과 같습니다.pg_ctl 재시작(알렉산더 라킨)§