| 젠 토토 : 문서 : 9.6 : 젠 토토 | |||
|---|---|---|---|
| PostgreSQL : 문서 : 9.6 : 젠 토토 9.6.5 | PostgreSQL : 문서 : 9.6 : 배트맨 토토 노트 | 부록 E. 출시 노트 | PostgreSQL : 문서 : 9.6 : 스포츠 토토 결과 9.6.3 |
출시일: 2017-08-10
이 릴리스에는 9.6.3의 다양한 수정 사항이 포함되어 있습니다. 9.6 주요 릴리스의 새로운 기능에 대한 자세한 내용은 다음을 참조하세요.무지개 토토 PostgreSQL : 문서 : 9.6 : 릴리스 9.6.
9.6.X를 실행하는 경우 덤프/복원이 필요하지 않습니다.
그러나 인증을 위해 사용자 비밀번호를 사용토토 베이 외부 데이터 서버를 사용토토 베이 경우 아래 첫 번째 변경 로그 항목을 참조하십시오.
또한 9.6.3 이전 버전에서 업그레이드하는 경우 다음을 참조하세요.PostgreSQL : 문서 : 9.6 : 스포츠 토토 결과 9.6.3.
다음의 가시성을 추가로 제한pg_user_mappings.u옵션, 사용자 매핑 옵션으로 저장된 비밀번호를 보호하기 위해(Noah Misch)
CVE-2017-7486에 대한 수정 사항이 올바르지 않았습니다. 이를 통해 사용자는 옵션이 없더라도 자신의 사용자 매핑에서 옵션을 볼 수 있었습니다.사용법6532_6697information_schema.user_mapping_options이런 경우에는 옵션이 표시되지 않습니다.pg_user_mappings둘 중 하나도 안됩니다. (CVE-2017-7547)
이 패치 자체는 새로 초기화된 데이터베이스의 동작만 수정합니다. 기존 데이터베이스에 이 변경 사항을 적용하려면 다음을 수행해야 합니다.
추가 후 포스트마스터 다시 시작allow_system_table_mods = true에postgresql.conf. (지원하는 버전에서)시스템 변경, 이를 사용하여 구성을 변경할 수 있지만 여전히 다시 시작해야 합니다.)
에각각클러스터 데이터베이스에 대해 수퍼유저로 다음 명령을 실행하십시오.
SET search_path = pg_catalog;
VIEW pg_user_mappings AS 생성 또는 교체
선택
U.oid AS 유미드,
S.oid AS 서비스,
S.srv이름 AS srv이름,
U.umuser AS umuser,
U.umuser = 0인 경우
'공개'
그 외
A.롤이름
END AS 사용자 이름,
CASE WHEN (U.umuser < 0 AND A.rolname = current_user
AND (pg_has_role(S.srvowner, '사용법')
또는 has_server_privilege(S.oid, 'USAGE')))
또는 (U.umuser = 0 AND pg_has_role(S.srvowner, '사용법'))
또는 (pg_authid에서 rolsuper 선택 WHERE rolname = current_user)
그런 다음 U.u옵션
ELSE NULL END AS 옵션
pg_user_mapping U에서
LEFT JOIN pg_authid A ON (A.oid = U.umuser) JOIN
pg_foreign_server S ON (U.umserver = S.oid);다음을 포함하는 것을 잊지 마세요템플릿0그리고템플릿1데이터베이스, 그렇지 않으면 나중에 생성토토 베이 데이터베이스에 취약점이 여전히 존재합니다. 고치려면템플릿0, 일시적으로 연결을 허용하도록 해야 합니다. 에서포스트그레SQL9.5 이상에서는 사용할 수 있습니다
ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;
그리고 수정 후템플릿0, 다음으로 실행 취소
ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;
이전 버전에서는 대신 다음을 사용하십시오.
UPDATE pg_database SET datallowconn = true WHERE datname = 'template0'; 업데이트 pg_database SET datallowconn = false WHERE datname = 'template0';
마지막으로 다음을 제거하세요.allow_system_table_mods구성 설정을 완료하고 포스트마스터를 다시 시작하세요.
모든 비밀번호 기반 인증 방법에서 빈 비밀번호를 허용하지 않음 (Heikki Linnakangas)
libpq빈 비밀번호 사양을 무시하고 서버로 전송하지 않습니다. 따라서 사용자의 비밀번호가 빈 문자열로 설정된 경우 다음을 통해 해당 비밀번호로 로그인할 수 없습니다.psql또는 기타libpq기반 클라이언트. 따라서 관리자는 비밀번호를 비워 두는 것이 비밀번호 로그인을 비활성화토토 베이 것과 같다고 생각할 수도 있습니다. 그러나 수정되거나 비-libpq기반 클라이언트에서는 어떤 인증 방식을 설정하느냐에 따라 로그인이 가능할 수 있습니다. 특히 가장 일반적인 방법은,md5, 빈 비밀번호를 허용합니다. 모든 경우에 빈 비밀번호를 거부하도록 서버를 변경하십시오. (CVE-2017-7546)
만들다lo_put()확인업데이트대상 대형 객체에 대한 권한 (Tom Lane, Michael Paquier)
lo_put()반드시 동일한 권한이 필요합니다lowrite(), 그러나 검사가 누락되어 모든 사용자가 대형 개체의 데이터를 변경할 수 있었습니다. (CVE-2017-7548)
다음을 사용하여 대기 서버를 업그레이드하는 프로세스에 대한 문서를 수정합니다.pg_upgrade(브루스 몸지안)
이전 문서에서는 사용자에게 실행 후 기본 서버를 시작/중지하도록 지시했습니다.pg_upgrade그러나 대기 서버를 동기화하기 전에. 이 시퀀스는 안전하지 않습니다.
튜플 업데이트 체인의 동시 잠금 수정(Álvaro Herrera)
여러 세션이 이전 스냅샷을 사용하여 충돌하지 않는 잠금 모드로 튜플 업데이트 체인을 동시에 잠그고 모두 성공하는 경우, 경쟁 조건으로 인해 일부 세션이 그럼에도 불구하고 실패할 수 있었습니다(그리고 라이브 튜플 버전이 없다고 결론을 내릴 수 있습니다). 이로 인해 외래 키 검사에서 확실히 존재하지만 동시에 업데이트되는 튜플을 확인하지 못하는 등의 결과가 발생했습니다.
XMAX가 여전히 관심 있는 멤버가 정확히 하나인 다중항인 튜플을 동결할 때 잠재적인 데이터 손상 수정 (Teodor Sigaev)
메모리 내에서 10억 개 이상의 튜플을 정렬할 때 정수 오버플로 및 그에 따른 충돌 방지(Sergey Koposov)
Windows에서는 새 프로세스에서 공유 메모리에 대한 주소 범위를 예약하지 못한 경우 프로세스 생성을 다시 시도합니다(Tom Lane, Amit Kapila)
이는 아마도 바이러스 백신 제품의 간섭으로 인해 드물게 발생토토 베이 하위 프로세스 실행 실패를 수정할 것으로 예상됩니다.
Windows 빌드에서 공유 조건자 잠금 해시 테이블의 낮은 확률 손상 수정(Thomas Munro, Tom Lane)
SSL 연결이 마치 연결 재설정인 것처럼 완전히 종료된 로그를 기록하지 마십시오(Michael Paquier)
클라이언트에게 SSL 세션 티켓 전송 방지(톰 레인)
이 수정은 티켓 인식 클라이언트 측 SSL 코드로 인한 재연결 실패를 방지합니다.
설정 코드 수정tcp_keepalives_idleSolaris(톰 레인)
포스트마스터 종료 및 즉시 재시작 직후에 발행된 조회 메시지를 따르도록 통계 수집기 수정(Tom Lane)
이전 포스트마스터 종료 후 0.5초 이내에 발행된 통계 문의는 사실상 무시되었습니다.
통계 수집기의 수신 버퍼 크기가 100KB 이상인지 확인하세요(Tom Lane)
이는 기본 수신 버퍼 크기가 이보다 작은 구형 플랫폼에서 통계 데이터가 삭제될 위험을 줄여줍니다.
대기 대기가 처리 직후 승격될 때 유효하지 않은 WAL 세그먼트가 생성될 수 있는 문제 수정XLOG_SWITCHWAL 레코드(Andres Freund)
수정월센더클라이언트가 종료를 요청할 때 즉시 종료합니다(Tom Lane)
수정SIGHUP그리고SIGUSR1walsender 프로세스 처리(Petr Jelinek, Andres Freund)
종료 체크포인트 중 Walsender로 인한 패닉 방지(Andres Freund, Michael Paquier)
불필요하게 느린 재시작 수정월리시버포스트마스터(Tom Lane)의 경쟁 조건으로 인한 프로세스
논리적 디코딩 중에 디스크로 유출된 작은 하위 트랜잭션의 누출 수정(Andres Freund)
이로 인해 임시 파일이 과도한 디스크 공간을 소비하게 되었습니다.
논리적 디코딩 슬롯 생성 중 스냅샷 구축에 필요한 작업 감소(Andres Freund, Petr Jelinek)
이전 알고리즘은 공개 트랜잭션이 많은 서버에서 실행 불가능할 정도로 비쌌습니다.
논리 디코딩 슬롯 생성을 무기한 지연시킬 수 있는 경쟁 조건 수정(Andres Freund, Petr Jelinek)
syscache 무효화 이벤트 처리 시 오버헤드 감소(Tom Lane)
이는 자주 캐시 무효화를 유발토토 베이 논리적 디코딩에 특히 유용합니다.
외래 키 제약 조건의 존재를 기반으로 조인 선택성을 추정하기 위해 일부 경우에 사용된 잘못된 추론 제거(David Rowley)
다중 열 외래 키 제약 조건이 존재했지만 쿼리의 조인 구조와 정확히 일치하지 않는 경우 플래너는 추정 휴리스틱을 사용했지만 전혀 제대로 작동하지 않는 것으로 나타났습니다. 이러한 사례를 9.6 이전에 추정했던 방식으로 되돌립니다.
다음과 같은 경우 수정삽입또는업데이트도메인-배열 유형인 열의 둘 이상의 요소에 할당(Tom Lane)
하위에서 창 기능을 사용할 수 있도록 허용선택집계 함수의 인수 내에 있는 것(Tom Lane)
보기가 다음과 같은지 확인하세요.옵션 확인기본 테이블이 외부 테이블인 경우 절이 올바르게 적용됩니다(Etsuro Fujita)
이전에는 업데이트가 완전히 외부 서버로 푸시될 수 있었지만 그렇다면 보기 조건을 확인해야 하는 필요성이 누락되었습니다.
자동 생성된 배열 유형을 방해가 되지 않는 위치로 이동변경 ... 이름 바꾸기(두려워토토 베이 빅)
이전에는 충돌하는 자동 생성 배열 유형의 이름을 변경하는 동안 방해가 되지 않았습니다.만들기; 이 수정 사항은 해당 동작을 이름 바꾸기 작업으로 확장합니다.
매달린 포인터 수정테이블 변경테이블에 속한 제약조건에 대한 설명이 있는 경우(David Rowley)
재구성된 제약 조건에 주석을 다시 적용하면 이상한 오류 메시지와 함께 실패하거나 충돌이 발생할 수도 있습니다.
다음을 확인하세요사용자 변경 ... 설정다음과 같은 모든 구문 변형을 허용합니다.역할 변경 ... 설정그렇습니다 (피터 아이젠트라우트)
외부 테이블 허용확인처음에는 제약조건유효하지 않음(아미트 랑고테)
테이블 생성조용히 떨어짐유효하지 않음지정자:확인제약조건, 즉 제약조건이 즉시 검증될 수 있도록 테이블이 비어 있어야 한다고 추론합니다. 하지만 이것은 잘못된 것입니다.외부 테이블 생성, 기본 테이블이 비어 있다고 가정할 이유가 없으며, 설사 그것이 앞으로 제약 조건이 유효한 것으로 간주될 수 있다고 결정토토 베이 것은 우리의 업무가 아닙니다. 건너뛰기"최적화"외국 테이블의 경우.
데이터 유형 I/O 함수의 인수 또는 반환 유형을 변경할 때 종속성 정보를 올바르게 업데이트합니다.불투명올바른 유형으로(Heikki Linnakangas)
유형 생성오래 사용되지 않는 이 스타일로 선언된 I/O 함수를 업데이트하지만 유형에 대한 종속성을 기록하는 것을 잊어버려 후속 작업이 가능합니다.삭제 유형깨진 함수 정의를 뒤에 남겨둡니다.
다음의 경우 쿼리 계획에서 병렬 처리를 허용합니다.복사쿼리 결과에서 복사(Andres Freund)
다음 경우에 메모리 사용량을 줄이세요분석프로세스 ats벡터열(Heikki Linnakangas)
곱셈이나 나눗셈 시 불필요한 정밀도 손실 및 엉성한 반올림 수정돈정수 또는 부동 소수점 값(Tom Lane)
다음과 같은 식별자를 구문 분석하는 함수에서 공백 검사를 강화합니다.regprocedurein()(톰 레인)
주요 로케일에 따라 이러한 함수는 멀티바이트 문자 조각을 공백으로 잘못 해석할 수 있습니다.
관련성 있는 사용#정의컴파일 중 Perl의 기호PL/펄(아슈토시 샤르마, 톰 레인)
이것은 일반적으로 다음과 같이 나타나는 이식성 문제를 방지합니다."악수"최신 Perl 버전으로 작업할 때 라이브러리 로드 중 불일치.
에libpq, 연결 시도 실패 후 GSS/SASL 및 SSPI 인증 상태를 올바르게 재설정합니다(Michael Paquier)
이렇게 하지 않으면 SSL에서 비SSL 연결로 대체할 때 SSL 시도의 GSS/SASL 실패로 인해 항상 비SSL 시도가 실패하게 됩니다. SSPI는 실패하지 않았지만 메모리가 누출되었습니다.
에psql, 다음과 같은 경우 실패 수정STDIN에서 복사키보드 EOF 신호로 종료된 후 또 다른 신호로 종료됨STDIN에서 복사시도됨(토마스 먼로)
이 오작동은 BSD 파생 플랫폼(macOS 포함)에서 관찰되었지만 대부분의 다른 플랫폼에서는 관찰되지 않았습니다.
수정pg_dump그리고pg_restore발산하다구체화된 보기 새로고침마지막 명령(톰 레인)
이것은 구체화된 뷰가 다른 사용자가 소유한 테이블을 참조할 때 덤프/복원 중 오류를 방지합니다.
개선pg_dump/pg_restore의 오류 상황 보고zlib(블라디미르 쿤시코프, 알바로 에레라)
수정pg_dump와 함께--깨끗함예상대로 이벤트 트리거를 삭제토토 베이 옵션(Tom Lane)
또한 이제 이벤트 트리거의 소유권을 올바르게 할당합니다. 이전에는 복원 스크립트를 실행하는 수퍼유저의 소유로 복원되었습니다.
수정pg_dump와 함께--깨끗함다음 경우에 실패하지 않는 옵션공개스키마가 존재하지 않습니다(스티븐 프로스트)
수정pg_dump빈 연산자 클래스에 대해 유효하지 않은 SQL을 생성하지 않기 위해 (Daniel Gustafsson)
수정pg_dumpWindows에서 stdout으로 출력(Kuntal Ghosh)
stdout에 기록된 압축된 일반 텍스트 덤프에는 파일 설명자를 바이너리 모드로 전환하지 못하여 손상된 데이터가 포함됩니다.
수정pg_get_ruledef()에 대한 올바른 출력을 인쇄하려면선택 중열 이름이 변경된 뷰의 규칙(Tom Lane)
일부 특수한 경우에는pg_dump의존함pg_get_ruledef()뷰를 덤프하여 이 오류로 인해 덤프/재로드 실패가 발생할 수 있습니다.
a의 결과와 같은 빈 제약 조건이 있는 외부 조인의 덤핑 수정자연스러운 왼쪽 조인공통 열 없음(Tom Lane)
함수 표현식 덤핑 수정발신표현식이 함수 호출처럼 보이는 것으로 해석되지 않는 경우의 절(Tom Lane)
수정pg_basebackupWindows에서 stdout으로 출력(Haribabu Kommi)
stdout에 기록된 백업에는 파일 설명자를 바이너리 모드로 전환하지 못하여 손상된 데이터가 포함됩니다.
수정pg_rewind2GB를 초과토토 베이 파일을 올바르게 처리하려면 (Kuntal Ghosh, Michael Paquier)
일반적으로 이러한 파일은 다음에 나타나지 않습니다.포스트그레SQL데이터 디렉토리이지만 경우에 따라 존재할 수도 있습니다.
수정pg_upgrade종료 WAL 레코드에 다음이 없는지 확인하기 위해wal_level = 최소(브루스 몸지안)
이 조건으로 인해 업그레이드된 대기 서버가 다시 연결되지 않을 수 있습니다.
수정pg_xlogdump의 WAL 레코드 길이 계산(Andres Freund)
에postgres_fdw, 이후 원격 서버에 대한 연결을 다시 설정서버 변경또는사용자 매핑 변경명령(호리구치 쿄타로)
이것은 연결 매개변수에 영향을 미치는 옵션 변경 사항이 즉시 적용되도록 보장합니다.
에postgres_fdw, 원격 트랜잭션 제어 명령 취소 허용 (Robert Haas, Rafia Sabih)
이 변경을 통해 이전보다 더 많은 경우에 응답하지 않는 원격 서버에 대한 대기를 신속하게 피할 수 있습니다.
증가MAX_SYSCACHE_CALLBACKS확장을 위한 더 많은 공간 제공(Tom Lane)
항상 사용-fPIC, 아님-fpic, gcc(Tom Lane)로 공유 라이브러리를 구축토토 베이 경우
이것은 차이를 만드는 플랫폼에서 더 큰 확장 라이브러리를 지원합니다.
MSVC 빌드에서 다음과 같은 경우를 처리합니다.openssl라이브러리가 a 내에 없습니다VC하위 디렉토리(앤드류 던스턴)
MSVC 빌드에서 적절한 포함 경로를 추가하세요.libxml2헤더 파일(앤드류 던스턴)
이것은 표준 Windows 설치에서 항목을 이동해야 하는 이전 요구 사항을 수정합니다.libxml2.
MSVC 빌드에서 이름이 지정된 Tcl 라이브러리를 인식합니다.tcl86.lib(노아 미쉬)
MSVC 빌드에서는 영광입니다PROVE_FLAGS설정vcregress.pl의 명령줄(앤드류 던스턴)