출시 노트

포스트그레SQL 9.4.13

E.14. 윈 토토 9.4.13

출시일: 2017-08-10

이 릴리스에는 9.4.12의 다양한 윈 토토 사항이 포함되어 있습니다. 9.4 주요 릴리스의 새로운 기능에 대한 자세한 내용은 다음을 참조하세요.섹션 E.27.

E.14.1. 버전 9.4.13으로 마이그레이션

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

그러나 인증을 위해 사용자 비밀번호를 사용하는 외부 데이터 서버를 사용하는 경우 아래 첫 번째 변경 로그 항목을 참조하십시오.

또한 9.4.12 이전 버전에서 업그레이드하는 경우 참조섹션 E.15.

E.14.2. 변경사항

  • 다음의 가시성을 추가로 제한pg_user_mappings.u옵션, 사용자 매핑 옵션으로 저장된 비밀번호를 보호하기 위해(Noah Misch)

    CVE-2017-7486에 대한 윈 토토 사항이 올바르지 않았습니다. 이를 통해 사용자는 옵션이 없더라도 자신의 사용자 매핑에서 옵션을 볼 수 있었습니다.사용법6167_6332information_schema.user_mapping_options이러한 경우 옵션을 표시하지 않습니다.pg_user_mappings둘 중 하나도 안됩니다. (CVE-2017-7547)

    이 패치 자체는 새로 초기화된 데이터베이스의 동작만 윈 토토합니다. 기존 데이터베이스에 이 변경 사항을 적용하려면 다음을 수행해야 합니다.

    1. 추가 후 포스트마스터 다시 시작allow_system_table_mods = truepostgresql.conf. (지원하는 버전에서)시스템 변경, 이를 사용하여 구성을 변경할 수 있지만 여전히 다시 시작해야 합니다.)

    2. 각각클러스터 데이터베이스에 대해 수퍼유저로 다음 명령을 실행하십시오.

      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);
    3. 다음을 포함하는 것을 잊지 마세요템플릿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';
    4. 마지막으로 다음을 제거하세요.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)

  • 튜플 업데이트 체인의 동시 잠금 윈 토토(Á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)

    64KB보다 넓은 튜플에서 논리적 디코딩이 중단되었습니다(압축 후, 그러나 모든 데이터가 인라인인 경우). 이 사건은 다음과 같은 경우에만 발생합니다.복제본 ID 전체이러한 튜플을 포함하는 테이블에 대해 활성화됩니다.

  • 논리적 디코딩 중에 디스크로 유출된 작은 하위 트랜잭션의 누출 윈 토토(Andres Freund)

    이로 인해 임시 파일이 과도한 디스크 공간을 소비하게 되었습니다.

  • 논리적 디코딩 슬롯 생성 중 스냅샷 구축에 필요한 작업 감소(Andres Freund, Petr Jelinek)

    이전 알고리즘은 공개 트랜잭션이 많은 서버에서 실행 불가능할 정도로 비쌌습니다.

  • 논리 디코딩 슬롯 생성을 무기한 지연시킬 수 있는 경쟁 조건 윈 토토(Andres Freund, Petr Jelinek)

  • syscache 무효화 이벤트 처리 시 오버헤드 감소(Tom Lane)

    이것은 빈번한 캐시 무효화를 유발하는 논리적 디코딩에 특히 유용합니다.

  • 다음과 같은 경우 윈 토토삽입또는업데이트도메인-배열 유형인 열의 둘 이상의 요소에 할당(Tom Lane)

  • 하위에서 창 기능을 사용할 수 있도록 허용선택집계 함수의 인수 내에 있는 것(Tom Lane)

  • 자동 생성된 배열 유형을 방해가 되지 않는 위치로 이동변경 ... 이름 바꾸기(두려워하는 빅)

    이전에는 충돌하는 자동 생성 배열 유형의 이름을 변경하는 동안 방해가 되지 않았습니다.생성; 이 윈 토토 사항은 해당 동작을 이름 바꾸기 작업으로 확장합니다.

  • 다음을 확인하세요사용자 변경 ... 설정다음과 같은 모든 구문 변형을 허용합니다.역할 변경 ... 설정그렇습니다 (피터 아이젠트라우트)

  • 데이터 유형 I/O 함수의 인수 또는 반환 유형을 변경할 때 종속성 정보를 올바르게 업데이트합니다.불투명올바른 유형으로(Heikki Linnakangas)

    유형 생성오래 사용되지 않는 이 스타일로 선언된 I/O 함수를 업데이트하지만 유형에 대한 종속성을 기록하는 것을 잊어버려 후속 작업이 허용됩니다.드롭 유형깨진 함수 정의를 남겨두기 위해.

  • 다음 경우에 메모리 사용량을 줄이세요분석프로세스 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빈 연산자 클래스에 대해 유효하지 않은 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_upgrade최종 WAL 레코드에 다음이 없는지 확인하기 위해wal_level = 최소(브루스 몸지안)

    이 조건으로 인해 업그레이드된 대기 서버가 다시 연결되지 않을 수 있습니다.

  • postgres_fdw, 이후에 원격 서버에 대한 연결을 다시 설정합니다.서버 변경또는사용자 매핑 변경명령(호리구치 쿄타로)

    이렇게 하면 연결 매개변수에 영향을 미치는 옵션 변경 사항이 즉시 적용됩니다.

  • postgres_fdw, 원격 트랜잭션 제어 명령 취소 허용 (Robert Haas, Rafia Sabih)

    이 변경을 통해 이전보다 더 많은 경우에 응답하지 않는 원격 서버에 대한 대기를 신속하게 피할 수 있습니다.

  • 증가MAX_SYSCACHE_CALLBACKS확장을 위한 더 많은 공간 제공(Tom Lane)

  • 항상 사용-fPIC, 아님-fpic, gcc로 공유 라이브러리를 구축하는 경우(Tom Lane)

    이것은 차이를 만드는 플랫폼에서 더 큰 확장 라이브러리를 지원합니다.

  • 최신 Perl 버전의 경고 또는 오류를 방지하기 위해 Microsoft MSVC용 빌드 스크립트의 이스케이프되지 않은 중괄호 문제 윈 토토(Andrew Dunstan)

  • MSVC 빌드에서 다음과 같은 경우를 처리합니다.openssl라이브러리가 a 내에 없습니다.VC하위 디렉토리(앤드류 던스턴)

  • MSVC 빌드에서 적절한 포함 경로를 추가하세요.libxml2헤더 파일(앤드류 던스턴)

    이것은 표준 Windows 설치에서 항목을 이동해야 하는 이전 요구 사항을 윈 토토합니다.libxml2.

  • MSVC 빌드에서 이름이 지정된 Tcl 라이브러리를 인식tcl86.lib(노아 미쉬)

  • MSVC 빌드에서는 영광입니다PROVE_FLAGS설정vcregress.pl의 명령줄(앤드류 던스턴)