출시일: 2020-11-12
이 릴리스에는 12.4의 다양한 수정 사항이 포함되어 있습니다. 주요 릴리스 12의 새로운 기능에 대한 자세한 내용은 다음을 참조하세요.토토 사이트 PostgreSQL : 문서 : 12 : E.23. 릴리스 12.
12.X를 실행하는 경우 덤프/복원이 필요하지 않습니다.
그러나 12.2 이전 버전에서 업그레이드하는 경우 참조토토 핫 PostgreSQL : 문서 : 12 : E.21. 릴리스 12.2.
차단커서 선언 ... 보류 상태및 인덱스 표현식 및 구체화된 뷰 쿼리 내에서 지연된 트리거 실행(Noah Misch)§
이것은 본질적으로 누출입니다.“보안 제한 작업”샌드박스 메커니즘. 임시가 아닌 SQL 개체를 생성할 권한이 있는 공격자는 이 유출을 활용하여 임의의 SQL 코드를 슈퍼유저로 실행할 수 토토 결과.
그포스트그레SQL프로젝트는 이 문제를 보고한 Etienne Stalmans에게 감사드립니다. (CVE-2020-25695)
복잡한 연결 문자열 매개변수 사용 수정pg_dump, pg_restore, 클러스터DB, reindexdb그리고vacuumdb(톰 레인)§ §
그-d매개변수pg_dump그리고pg_restore또는--유지보수-db언급된 다른 프로그램의 매개변수는 다음과 같습니다.“연결 문자열”단순한 데이터베이스 이름이 아닌 여러 연결 매개변수가 포함되어 있습니다. 이러한 프로그램이 병렬 처리 또는 여러 데이터베이스 처리와 같은 추가 연결을 시작해야 하는 경우 연결 문자열을 잊어버리고 기본 연결 매개변수(데이터베이스 이름, 호스트, 포트 및 사용자 이름)만 추가 연결에 사용되었습니다. 연결 문자열에 기본이 아닌 SSL 또는 GSS 매개변수와 같은 다른 필수 정보가 포함된 경우 연결이 실패할 수 있습니다. 더 나쁜 것은 연결이 성공했지만 의도한 대로 암호화되지 않거나 의도한 연결 매개변수로 방지할 수 있는 중간자 공격에 취약할 수 있다는 것입니다. (CVE-2020-25694)
언제psql의\연결명령은 연결 매개변수를 재사용합니다. 이전 연결 문자열에서 재정의되지 않은 모든 매개변수가 재사용되는지 확인하세요(Tom Lane)§
이것은 기본이 아닌 SSL 또는 GSS 옵션과 같은 관련 매개변수의 누락으로 인해 재연결이 실패하는 경우를 방지합니다. 더 나쁜 것은 재연결이 성공했지만 의도한 대로 암호화되지 않거나 의도한 연결 매개변수로 방지할 수 있는 중간자 공격에 취약할 수 있다는 점입니다. 이는 방금 인용한 문제와 대체로 같은 문제입니다.pg_dump외, 하지만psql9990_10106
방지psql's\gset특별히 처리된 변수 수정 명령(Noah Misch)§
\gset접두사가 없으면 서버가 지시한 모든 변수를 덮어쓰게 됩니다. 따라서 손상된 서버는 다음과 같이 특별히 처리된 변수를 설정할 수 있습니다.PROMPT1, 사용자 세션에서 임의의 셸 코드를 실행할 수 있는 기능을 제공합니다.
그PostgreSQL프로젝트는 이 문제를 보고한 Nick Cleaton에게 감사드립니다. (CVE-2020-25696)
SLRU 로그 동시 잘림으로 인한 데이터 손실 방지(Noah Misch)§ §
이 드문 문제는 나중에 나타날 것입니다.“명백한 랩어라운드”또는“거래 상태에 접근할 수 없습니다.”오류.
체크포인트 중에 SLRU 디렉토리가 제대로 fsync'되었는지 확인하세요(Thomas Munro)§
이는 후속 운영 체제 충돌 시 발생할 수 있는 데이터 손실을 방지합니다.
수정역할 변경다음 사용자의 경우BYPASSRLS속성 (톰 레인, 스티븐 프로스트)§
그BYPASSRLS속성은 슈퍼유저만 변경할 수 있지만 기타역할 변경비밀번호 변경과 같은 작업은 일반적인 권한 확인을 통해서만 허용되어야 합니다. 이전 코딩에서는 해당 역할에 대한 모든 변경 사항을 슈퍼유저로 잘못 제한했습니다.
다음을 확인하세요테이블만 변경...트리거 활성화/비활성화하위 테이블로 재귀하지 않음(Álvaro Herrera)§
이전에는만플래그가 무시되었습니다.
파티션에 대한 불필요한 재귀 방지ALTER TABLE SET NOT NULL, 대상 열이 이미 표시되어 있는 경우NULL이 아님(톰 레인)§
이것은 잠재적인 병렬 교착 상태를 방지합니다.pg_restore.
표현식 처리 수정다음과 같은 테이블 생성상속 있음(톰 레인)§ §
만약에테이블 생성명령은 둘 다 사용함좋아요및 기존 상속, 열 참조확인a에서 나온 제약 조건 및 표현식 인덱스좋아요상위 테이블의 번호가 잘못 지정되어 잘못된 답변 및/또는 이상한 오류 메시지가 나타나는 경향이 있었습니다. 같은 일이 일어날 수 있습니다생성됨표현식, 해당 기능이 있는 분기에서.
허용하지 않음동시에 인덱스 삭제분할된 테이블(Álvaro Herrera, Michael Paquier)§
이 사례는 어쨌든 실패했지만 혼란스러운 오류 메시지가 표시되었습니다.
허용락 테이블자기 참조적 관점에서 성공하기 위해 (Tom Lane)§
이전에는 무한 재귀에 대해 불평하는 오류가 발생했지만 이를 허용하지 않을 필요는 없어 보입니다.
전체 인덱스에 대한 통계 유지동시에 REINDEX(마이클 파퀴에르, 파브리지오 데 로예스 멜로)§
비동시 재인덱싱은 항상 이러한 통계를 보존했습니다.
다음의 잘못된 진행 보고 수정동시에 REINDEX(Matthias van de Meent, Michael Paquier)§
다음을 확인하세요생성됨열은 의존하는 열이 규칙이나 업데이트 가능한 보기를 통해 업데이트될 때 업데이트됩니다(Tom Lane)§
이 수정은 이러한 경우 열별 트리거 실행 실패 가능성도 처리합니다.
삽입되거나 업데이트된 튜플을 올바른 파티션으로 라우팅하는 동안 기본 파티션 제약 조건을 다시 확인합니다(Amit Langote, Álvaro Herrera)§
이것은 삽입과 동시에 파티션이 추가될 때 경쟁 조건을 수정합니다.
콜레이션 종속 파티션 경계 표현식 오류 수정(Tom Lane)§
텍스트 배열 해싱 지원 (Peter Eisentraut)§
배열 요소 유형이 조합 가능한 경우 배열 해싱이 실패했습니다. 특히 이로 인해 텍스트 배열 열을 파티션 키로 사용하여 해시 파티셔닝을 사용할 수 없게 되었습니다.
음수 연도를 BC 날짜로 하나씩 변환하는 문제 수정to_date()그리고to_timestamp()(Dar Alathar-Yemen, 톰 레인)§
또한 음의 연도와 명시적인 연도의 조합을 준비하십시오.“BC”상쇄하고 AD를 생성하는 마커입니다.
대기 서버가 다음과 같은 경우에 WAL 타임라인 기록 파일을 보관하는지 확인하세요.archive_mode다음으로 설정됨항상(그리고리 스몰킨, 후지이 마사오)§
이러한 감독으로 인해 후속 PITR 복구 시도가 실패할 수 토토 결과.
수정“관계 0에 대한 캐시 조회 실패”논리적 복제 작업자 실패(Tom Lane)§
실패할 가능성이 낮기 때문에 실제 영향은 적으며, 실패할 경우 작업자는 종료되고 다시 시작됩니다.
논리적 복제 작업자가 중복된 핑 요청을 보내는 것을 방지합니다(톰 레인)§
중“똑똑한”종료, 모든 클라이언트(포그라운드) 세션이 완료될 때까지 백그라운드 프로세스를 종료하지 마십시오(Tom Lane)§
이전 동작으로 인해 병렬 쿼리 처리가 중단되었습니다. 왜냐하면 포스트마스터가 병렬 작업자를 종료하고 새 작업자 실행을 거부했기 때문입니다. 또한 autovacuum의 작동이 중단되어 살아남은 클라이언트 세션에서 많은 데이터가 변경될 경우 심각한 장기적 영향을 미칠 수 있습니다.
포스트마스터(Tom Lane)에서 신호를 처리하는 동안 스택 공간의 반복적인 소비 방지§
병렬 처리를 과도하게 사용하면 병렬 작업자 프로세스 생성을 요청하는 동시 신호가 너무 많아 포스트마스터 충돌이 발생하는 것으로 관찰되었습니다.
달리기를 피하세요exitSIGQUIT로 인해 종료 시 처리기(호리구치 쿄타로, 톰 레인)§ §
대부분의 서버 프로세스는 이미 이 관행을 따랐지만 아카이버 프로세스는 간과되었습니다. 여전히 클라이언트 시작 패킷을 기다리고 있던 백엔드도 잘못되었습니다.
외견상 일정한 그룹화 열을 참조하는 하위 쿼리 제한의 잘못된 최적화 방지(Tom Lane)§
A “상수”하위 쿼리 출력 열이 그룹화 집합 중 일부에만 나타나는 그룹화 열인 경우 실제로 일정하지 않습니다.
GEQO 계획 중 파티션별 조인을 고려할 때 발생 가능한 충돌 수정(Tom Lane)§
SQL 함수 인라인이 잠재적으로 해시 가능한 하위 계획 비교 표현식의 모양을 변경할 때 실패 방지(Tom Lane)§
인덱스를 구축하거나 재구축하는 동안 동시 업데이트로 인한 새로운 HOT 체인의 출현을 허용합니다(Anastasia Lubennikova, Álvaro Herrera)§ §
이러한 감독으로 인해 다음이 발생할 수 있습니다.“힙 전용 튜플에 대한 상위 튜플을 찾지 못했습니다.”오류.
인덱스 조건이 만족스럽지 않을 때 병렬 B-트리 인덱스 스캔 실패 수정(James Hunter)§
BRIN 인덱스에 삽입되기 전에 데이터가 삭제되었는지 확인하세요(Tomas Vondra)§
색인 항목은 라인 외부 TOAST 포인터를 포함해서는 안 되지만 BRIN은 해당 메모를 받지 못했습니다. 이로 인해 다음과 같은 오류가 발생할 수 있습니다.“토스트 값 NNN에 대한 청크 번호 0 누락”. (기존 인덱스에서 이러한 오류가 발생하는 경우,REINDEX문제를 해결하기에 충분할 것입니다.)
BRIN 인덱스 스캔 중 동시 요약 해제를 올바르게 처리합니다(Alexander Lakhin, Álvaro Herrera)§
이전에는 페이지 범위가 잘못된 시간에 요약 해제된 경우 인덱스 스캔에서 인덱스 손상을 나타내는 잘못된 오류가 발생할 수 있었습니다.
드문 문제 해결“색인에 저장된 포인트 손실”다중 열 GIN 색인 스캔 오류(Tom Lane)§
인덱스에 열이 포함되어 있을 때 작동하도록 버퍼링된 GiST 인덱스 빌드 수정(Pavel Borisov)§
이식할 수 없는 사용 수정getnameinfo()inpg_hba_file_rules보기(톰 레인)§
FreeBSD 11 및 기타 플랫폼에서는 뷰의주소그리고넷마스크이 오류로 인해 열은 항상 null이었습니다.
다음의 경우 충돌을 피하세요debug_query_string병렬 작업자를 시작할 때 NULL입니다(Noah Misch)§
이벤트 트리거가 모니터링할 때 사용 후 사용 위험 수정테이블 변경작전(Jehan-Guillaume de Rorthais)§
다음의 경우 실패를 피하십시오.행 업데이트 전트리거는 다음을 반환합니다.“오래된”드롭된 테이블의 행 또는“누락”열(Amit Langote, Tom Lane)§ §
업데이트를 억제하는 이 방법은 예상치 못한 충돌을 초래할 수 토토 결과.확인제약조건 실패 또는 올바르지 않음돌아오는 중출력, 왜냐하면“누락”열은 이러한 목적으로 NULL로 읽혀집니다. (열은“누락”이 목적으로 추가된 경우테이블 변경 열 추가NULL은 아니지만 상수 기본값입니다.) 삭제된 열도 문제를 일으킬 수 있습니다.
일관되지 않은 이동 집계 데이터 유형에 대한 잘못된 오류 메시지 수정(Jeff Janes)§
병렬 작업자가 매우 긴 오류 메시지를 보고할 때 작동 중지 방지(Vignesh C)§
공유 메모리 대기열을 통해 매우 큰 페이로드를 전송할 때 불필요한 실패를 방지합니다(Markus Wanner)§
JIT 코드 생성 시 템플릿 함수 속성의 잘못된 처리 수정(Andres Freund)§ §
이로 인해 충돌이 발생하는 것으로 나타났습니다.s390x, 그리고 다른 플랫폼에는 다른 경우가 있을 가능성이 높습니다.
RLS 정책으로 관계 캐시 메모리 누수 수정(Tom Lane)§
에지 케이스 메모리 누수 수정index_get_partition()(저스틴 프리즈비)§
SIGHUP 처리에서 다시 시작하지 않으면 새 GUC 변수 값을 적용할 수 없다고 결정할 때 작은 메모리 누수 수정(Tom Lane)§
메모리 누수 수정PL/pgsql의전화처리 중 (Pavel Stehule, Tom Lane)§
만들다libpq임의 길이의 라인 지원.pgpass파일 (톰 레인)§ §
이것은 매우 긴 보안 토큰을 비밀번호로 사용하는 데 주로 유용합니다.
에libpqWindows의 경우 전화하세요WSA스타트업()프로세스당 한 번 및WSACleanup()전혀 아님 (톰 레인, 알렉산더 라킨)§
이전에,libpq호출됨WSA스타트업()연결 시작 시 및WSACleanup()연결 정리 시. 그러나 전화하는 것 같습니다WSACleanup()다른 프로그램 작업을 방해할 수 토토 결과. 특히 예상되는 출력을 stdout으로 내보내는 데 드물게 실패하는 것을 관찰했습니다. 통화를 생략해도 아무런 부작용이 없는 것 같으니 그렇게 하세요. (이는 또한 프로그램이 일련의 데이터베이스 연결을 수행할 때 반복되는 DLL 로드 및 언로드로 인한 성능 문제를 제거합니다.)
수정ecpgWindows용 라이브러리의 스레드별 초기화 논리(Tom Lane, Alexander Lakhin)§
멀티 스레드ecpg잘못된 잠금으로 인해 애플리케이션이 드물게 오작동을 겪을 수 토토 결과.
Windows에서는 다음을 만드세요psql바이너리 모드가 아닌 텍스트 모드에서 백틱 명령의 출력 읽기(Tom Lane)§
이것은 개행 문자의 적절한 처리를 보장합니다.
다음을 확인하세요pg_dump확장 구성 테이블에 대한 열별 정보 수집(Fabrízio de Royes Mello, Tom Lane)§ §
이렇게 하지 않으면 지정할 때 충돌이 발생합니다.--삽입또는 과소 지정됨(일반적으로 정확함)복사사용 시 명령복사테이블의 데이터를 다시 로드합니다.
병렬을 보장하세요pg_restore파티션된 테이블을 참조하는 외래 키를 올바른 순서로 처리합니다(Álvaro Herrera)§
이전에는 필수 색인이 모두 준비되기 전에 외래 키 제약 조건을 복원하려고 시도하여 오류가 발생할 수 있었습니다.
만들다pg_upgrade대상 클러스터에 테이블스페이스 디렉터리가 있는지 확인하세요(Bruce Momjian)§ §
잠재적인 메모리 누수 수정contrib/pgcrypto(마이클 파퀴에)§
가능성이 낮은 실패 사례에 대한 검사 추가contrib/pgcrypto(다니엘 구스타프손)§
최근 추가된 수정사항티메츠미국이 일광 절약 시간을 준수하지 않을 때 작동하도록 테스트 사례(Tom Lane)§
다음으로 시간대 데이터 파일 업데이트tzdata피지, 모로코, 팔레스타인, 캐나다 유콘, 맥쿼리 섬 및 케이시 기지(남극 대륙)의 DST 법률 변경에 대한 2020d 릴리스 프랑스, 헝가리, 모나코, 팔레스타인에 대한 역사적 수정이 추가되었습니다. (톰 레인)§ §
시간대 라이브러리 사본을 IANA tzcode 토토 결과 2020d(Tom Lane)와 동기화§ §
이것은 업스트림의 변화를 흡수합니다zic의 기본 출력 옵션은“지방”에“슬림”. 우리가 계속해서“지방”32452_32511strftime()변하지 않음errno실패하지 않는 한.