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

E.245. 릴리스 7.4.8

출시일: 2005-05-09

이 릴리스에는 다음을 포함하여 7.4.7의 다양한 수정 사항이 포함되어 있습니다. 여러 보안 관련 문제. 새로운 기능에 대한 정보 7.4 주요 릴리스에서는 다음을 참조하세요.PostgreSQL : 문서 : 9.3 : 릴메이저 토토 사이트 7.4.

E.245.1. 버전 7.4.8로 마이그레이션

7.4.X를 실행하는 경우 덤프/복원이 필요하지 않습니다. 그러나, 이는 두 가지 중요한 보안을 처리하는 한 가지 가능한 방법입니다. 7.4.X 초기 내용에서 발견된 문제점 시스템 카탈로그. 7.4.8의 initdb를 사용한 덤프/initdb/다시 로드 시퀀스 이러한 문제는 자동으로 해결됩니다.

더 큰 보안 문제는 내장된 문자 집합이 인코딩 변환 함수는 다음을 통해 SQL 명령에서 호출할 수 있습니다. 그러나 권한이 없는 사용자를 위해 기능이 설계되지 않았습니다. 사용하며 악의적인 인수 선택으로부터 안전하지 않습니다. 는 수정에는 다음의 선언된 매개변수 목록을 변경하는 것이 포함됩니다. 함수를 더 이상 SQL 명령에서 호출할 수 없도록 합니다. (이것은 인코딩 변환에 의한 정상적인 사용에 영향을 미치지 않습니다. 기계.)

더 적은 문제는기여/tsearch2모듈은 여러 기능을 생성합니다 반환하도록 잘못 선언된 것내부언제 그들은 받아들이지 않습니다내부인수. 이 다음을 사용하여 모든 기능에 대한 유형 안전성을 깨뜨립니다.내부인수.

모든 설치에서 이 문제를 복구하는 것이 좋습니다. initdb 또는 수동 복구에 의한 오류 아래에 주어진 절차. 오류는 최소한 권한 없는 사용자를 허용합니다. 데이터베이스 사용자는 서버 프로세스를 중단시키고 허용할 수 있습니다. 권한이 없는 사용자가 데이터베이스의 권한을 얻으려면 슈퍼유저.

initdb를 수행하지 않으려면 다음을 수행하십시오. 대신 절차를 따르세요. 데이터베이스 슈퍼유저로서 다음을 수행합니다.

시작;
업데이트 pg_proc SET proargtypes[3] = 'internal'::regtype
WHERE pronamespace = 11 AND pronargs = 5
     AND proargtypes[2] = 'cstring'::regtype;
-- 명령은 90개 행을 업데이트했다고 보고해야 합니다.
-- 그렇지 않다면 커밋하는 대신 롤백하고 조사하세요!
커밋;

다음으로, 설치했다면기여/tsearch2, 다음을 수행하세요:

시작;
업데이트 pg_proc SET proargtypes[0] = 'internal'::regtype
어디에서 oid IN (
   'dex_init(text)'::regprocedure,
   'snb_en_init(text)'::regprocedure,
   'snb_ru_init(text)'::regprocedure,
   'spell_init(text)'::regprocedure,
   'syn_init(텍스트)'::regprocedure
);
-- 명령은 5개 행을 업데이트했다고 보고해야 합니다.
-- 그렇지 않다면 커밋하는 대신 롤백하고 조사하세요!
저지르다;

다음과 같은 메시지와 함께 이 명령이 실패하는 경우""dex_init(text)" 함수가 존재하지 않습니다"그러면 둘 중 하나tsearch2이 항목에는 설치되지 않았습니다 데이터베이스이거나 이미 업데이트를 완료했습니다.

위 절차는 다음에서 수행되어야 합니다.설치 데이터베이스, 포함템플릿1, 이상적으로는 다음을 포함함템플릿0또한. 고치지 않으면 템플릿 데이터베이스 이후에 생성된 모든 데이터베이스는 동일한 오류가 포함되어 있습니다.템플릿1될 수 있습니다 다른 데이터베이스와 동일한 방식으로 수정되었지만 수정되었습니다.템플릿0추가 단계가 필요합니다. 첫째, 어느 곳에서나 데이터베이스 문제:

업데이트 pg_database SET datallowconn = true WHERE datname = 'template0';

다음 연결 대상템플릿0그리고 수행 위의 수리 절차. 마지막으로 다음을 수행하세요.

-- template0 다시 고정:
진공 동결;
-- 향후 변경으로부터 보호합니다.
업데이트 pg_database SET datallowconn = false WHERE datname = 'template0';

E.245.2. 변경사항

  • 오용 방지를 위해 인코딩 기능 서명 변경

  • 변경기여/tsearch2피하다 안전하지 않은 사용내부함수 결과

  • 트랜잭션을 가능하게 했던 고대 경쟁 조건을 복구하세요 일부 목적(예: SELECT FOR UPDATE)에 대해 커밋된 것으로 간주됨 다른 목적보다 빨리

    이것은 명백한 문제로 이어질 수 있으므로 매우 심각한 버그입니다. 데이터 불일치가 애플리케이션에 잠시 표시됩니다.

  • 관계 확장과 VACUUM 간의 경합 상태 복구

    이것은 이론적으로 페이지의 가치가 손실되는 원인이 될 수 있습니다 새로 삽입된 데이터(시나리오가 매우 낮은 것으로 보임) 확률. 이상의 원인이 된 사례는 알려진 바가 없습니다. 어설션 실패.

  • 비교 수정시간대 포함 시간

    다음의 경우 비교 코드가 잘못되었습니다.--활성화-정수-날짜 시간구성 스위치가 있음 사용되었습니다. 참고: a에 대한 색인이 있는 경우시간 시간대 포함열, 다음과 같아야 합니다REINDEX이 업데이트를 설치한 후 수정은 열 값의 정렬 순서를 수정합니다.

  • 수정추출(EPOCH)for시간대 포함 시간

  • 음수 소수 초의 잘못된 표시 수정간격

    이 오류는 다음 경우에만 발생했습니다.--활성화-정수-날짜 시간구성 스위치가 있음 사용되었습니다.

  • 백엔드 종료 중 수행된 작업이 다음으로 계산되는지 확인하세요. 통계 수집기

    이것은 다음 보고서를 해결할 것으로 예상됩니다.pg_autovacuum시스템을 진공청소하지 않음 카탈로그를 충분히 자주 사용합니다. 카탈로그에 대해 언급되지 않았습니다. 백엔드 중 임시 테이블 제거로 인한 삭제 종료.

  • plpgsql의 추가 버퍼 오버런 검사(Neil)

  • 다음을 포함하는 트리거 이름을 덤프하도록 pg_dump 수정%맞습니다 (닐)

  • 수정contrib/pgcrypto최신 OpenSSL용 빌드(Marko Keen)

  • 아직 더 많은 64비트 수정 사항기여/intagg

  • 반환 함수의 잘못된 최적화 방지기록

  • 방지to_char(간격)에서 월 관련 형식의 코어 덤핑

  • 다음에서 충돌 방지합체(NULL,NULL)

  • 수정array_mapPL 함수 호출 올바르게

  • 권한 체크인 수정데이터베이스 변경 이름 바꾸기

  • 수정언어 변경 이름 바꾸기

  • 만들다RemoveFromWaitQueue정리하다 그 자체 이후

    이것은 다음의 경우에만 표시되는 잠금 관리 오류를 수정합니다. 잠금을 기다리는 동안 트랜잭션이 중단되었습니다(일반적으로 쿼리 취소) 그런 다음 잠금 소유자가 일정 시간 내에 잠금을 해제했습니다. 매우 좁은 창.

  • 유형이 지정되지 않은 매개변수가 나타나는 문제 수정삽입 ... 선택

  • 수정클러스터다음 이후 실패OIDS 없이 테이블 설정 변경