출시 날짜 :2020-08-13
이 릴리스에는 12.3의 다양한 수정 사항이 포함되어 범퍼카 토토. Major Release 12의 새로운 기능에 대한 정보는 참조섹션 E.23.
덤프/복원은 12.x.를 실행하는 사람들에게는 필요하지 않습니다.
그러나 12.2 이전 버전에서 업그레이드하는 경우 참조섹션 E.21.
보안 설정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 ()
. 파이프 및 기타 종류의 가상 파일에 도움이되지 않습니다.
금지 숫자NAN
값JSONPATH
계산 (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)§
일부 부분 집계 작업자가 만 발견 된 경우NAN
S는 비 만 발견했지만NAN
s, 결과가 잘못 결합되어 전체 결과가 잘못되었을 수 범퍼카 토토 (즉,NAN
해야 할 때).
24 시간보다 큰 시간 값 거부 (Tom Lane)§
DateTime 입력 코드의 의도는 허용하는 것입니다“24 : 00 : 00”또는 동등한“23 : 59 : 60”이지만 더 큰 값은 없습니다. 그러나 범위 점검은 수용 할 수 있도록 오해되었습니다“23 : 59 : 60.NNN
”0이 아닌 분수NNN
. 타임 스탬프 값에서는 다음 날 첫 번째 2 초로 포장됩니다.Time
andTIMETZ
값, 저장된 값은 실제로 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
.subslotname
andpg_subscription_rel
.srsublsn
(Tom Lane)§ §
부트 스트랩 카탈로그 데이터는이 두 카탈로그 열을 항상 널 비 널처럼 잘못 표시합니다. 기존 설치에서 그 실수를 수정하는 쉬운 방법은 없습니다 (v13 이상은 올바른 표시를 할 것입니다).srsublsn
그것이 null인지 확인하지 않고; 그것의 충돌은 불가능하지만 아마도 불가능하지는 않을 것입니다.
대처측면
변동이없는 하위에 첨부 된 제한 조항의 참조select
inFrom
절 (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_hints
on.
체크 포인터 프로세스를 수정하여 파일 동기화 요청을 버릴 때fsync
is 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_AGE
0이 아닌 값으로, 시스템 카탈로그의 동결이 제대로 작동하지 않아서 업그레이드가 혼란스러운 방식으로 실패했습니다. 업그레이드 기간 동안 그러한 설정이 상정되는지 확인하십시오.
수정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)§
이것은 찾은 논리를 혼란스럽게 할 수 범퍼카 토토구성
소스 트리의 최상위 레벨을 식별하려면