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

E.48. 릴리스 8.1

출시일: 2005-11-08

E.48.1. 개요

이번 토토 커뮤니티의 주요 변경 사항:

공유 버퍼 캐시에 대한 동시 액세스 개선 (톰)

공유 버퍼 캐시에 대한 접근이 다음으로 식별되었습니다. 심각한 확장성 문제, 특히 다중 CPU 시스템. 이번 릴리스에서는 잠금 방식이 버퍼 관리자에서 수행됩니다. 잠금 경합을 줄이고 확장성을 향상시킵니다. 는 버퍼 관리자도 a를 사용하도록 변경되었습니다."시계 청소"교체 정책.

색인 스캔이 중간 인메모리를 사용하도록 허용 비트맵(톰)

이전 릴리스에서는 단일 색인만 가능했습니다. 테이블에서 조회를 수행하는 데 사용됩니다. 이 기능을 사용하면 쿼리가 있습니다어디에서 tab.col1 = 4 및 tab.col2 = 9, 다중 열 색인이 없습니다.col1그리고col2, 하지만 다음에 색인이 있습니다.col1그리고 또 다른 것col2, 둘 다 검색 가능 색인을 생성하고 결과를 메모리에 결합한 다음 힙을 수행합니다. 두 가지 모두 일치하는 행만 가져옵니다.col1그리고col2제한사항. 이는 다음과 같은 환경에서 매우 유용합니다. 불가능한 구조화되지 않은 쿼리가 많이 있습니다. 가능한 모든 액세스와 일치하는 인덱스를 생성합니다. 조건. 비트맵 스캔은 단일 스캔으로도 유용합니다. 인덱스는 필요한 임의 액세스 양을 줄입니다. 비트맵 인덱스 스캔은 공정한 검색에 효율적입니다. 전체 테이블의 큰 부분, 반면 일반 인덱스 스캔은 그렇지 않습니다.

2단계 커밋 추가(Heikki Linnakangas, Alvaro, 톰)

2단계 커밋을 통해 트랜잭션을 "준비"할 수 토토 커뮤니티. 여러 대의 컴퓨터에서 모든 컴퓨터에 성공적으로 거래를 준비했습니다(실패한 사람 없음). 모든 트랜잭션을 커밋할 수 토토 커뮤니티. 기계라 할지라도 준비 후 충돌이 발생하면 준비된 트랜잭션이 머신이 다시 시작된 후에 커밋됩니다. 새로운 구문 포함트랜잭션 준비그리고커밋/롤백 준비됨. 새로운 시스템 보기pg_prepared_xacts또한 추가되었습니다.

사용자 및 그룹을 대체하는 새로운 역할 시스템 생성 (스티븐 프로스트)

역할은 사용자와 그룹의 조합입니다. 좋아요 사용자는 로그인 기능을 가질 수 있으며 그룹과 마찬가지로 역할은 구성원으로서 다른 역할을 가질 수 있습니다. 역할은 기본적으로 사용자와 그룹 간의 구별을 제거합니다. 에 대한 예를 들어 역할은 다음을 수행할 수 있습니다.

  • 로그인 기능 있음(선택 사항)

  • 객체 소유

  • 데이터베이스 개체에 대한 액세스 권한 보유

  • 다른 역할로부터 권한을 상속받습니다. 회원

사용자가 역할에 로그인하면 기능을 얻습니다. 로그인 역할과 상속된 역할을 모두 사용할 수 토토 커뮤니티.역할 설정다른 것으로 전환하려면 그녀가 속한 역할. 이 기능은 SQL 표준의 역할 개념 일반화. 이 변경 사항은 또한 다음을 대체합니다.pg_shadow그리고pg_group새로운 역할 가능 카탈로그별pg_authid그리고pg_auth_members. 오래된 테이블은 새 역할 테이블에 대한 읽기 전용 보기로 재정의되었습니다.

자동으로 색인 사용MIN()그리고MAX()(톰)

이전 릴리스에서는 색인을 사용하는 유일한 방법MIN()또는MAX()다음과 같이 쿼리를 다시 작성했습니다.탭에서 열 선택 ORDER BY 열 제한 1. 이제 색인 사용이 자동으로 발생합니다.

이동/contrib/pg_autovacuum메인서버(Alvaro)로

autovacuum을 서버에 통합하면 다음이 가능해집니다. 자동으로 시작되고 동기화되어 중지됩니다. 데이터베이스 서버이며 autovacuum을 구성할 수 있습니다. 에서postgresql.conf.

다음을 사용하여 공유 행 수준 잠금 추가선택 ... 공유용(알바로)

그동안포스트그레SQL의 MVCC 잠금이 허용됩니다.선택에 작성자에 의해 차단되지 않으므로 필요하지 않습니다. 일반적인 작업을 위한 공유 행 잠금, 공유 잠금은 공유 행 잠금이 필요한 애플리케이션에 유용합니다. 특히 이는 잠금 요구 사항을 줄여줍니다. 참조 무결성 검사에 의해 부과됩니다.

공유 개체, 특히 역할에 대한 종속성 추가 (알바로)

이러한 종속성 메커니즘 확장은 데이터베이스가 아직 있는 동안 역할이 삭제되지 않도록 방지 자신이 소유한 물건. 예전에는 가능했는데 우연히"고아"객체 소유자를 삭제하면 됩니다. 이 복구할 수 있는 동안 지저분하고 불쾌했어요.

분할된 테이블의 성능 향상(Simon)

새로운constraint_exclusion구성 매개변수는 하위 테이블에 대한 조회를 방지합니다. 여기서 제약 조건은 일치하는 행이 없음을 나타냅니다. 하위 테이블.

이것은 기본 유형의 테이블 파티셔닝을 허용합니다. 만약에 하위 테이블은 별도의 키 범위를 저장하며 이는 적절한 방법을 사용하여 시행됨확인제약조건, 최적화 프로그램은 하위 테이블 액세스를 건너뜁니다. 제약 조건에서 일치하는 행이 없음을 보장하는 경우 하위 테이블.

E.48.2. 버전 8.1로 마이그레이션

다음을 사용하여 덤프/복원pg_dump을 원하는 분들은 필수입니다. 이전 릴리스의 데이터를 마이그레이션합니다.

8.0 릴리스에서는 다음과 같이 발표했습니다.to_char()간격에 대한 함수는 다음과 같습니다. 8.1에서 제거되었습니다. 그러나 더 나은 API는 없었기 때문에 제안했습니다.to_char(간격)있음 8.1에서 향상되었으며 서버에 유지됩니다.

다음 비호환성을 관찰하십시오:

  • add_missing_from이제 거짓입니다 기본적으로 (닐)

    기본적으로 테이블을 사용하면 오류가 발생합니다. a가 없는 쿼리에서발신참조. 이전 동작을 계속 사용할 수 있지만 이를 얻으려면 매개변수를 'true'로 설정해야 합니다.

    설정이 필요할 수도 토토 커뮤니티add_missing_fromtrue로 로드하려면 기존 덤프 파일(덤프에 보기나 규칙이 포함된 경우) 암시적-를 사용하여 생성됨발신구문. 이는 일회성 귀찮음일 것입니다. 왜냐하면PostgreSQL8.1은 그러한 뷰와 규칙을 표준으로 변환 명시적-발신구문. 후속 따라서 덤프에는 문제가 없습니다.

  • 길이가 0인 문자열이 입력되었습니다('') for플로트4/float8/oid오류를 처리하기보다는 오류를 발생시키다 0으로 (닐)

    이 변경 사항은 현재 처리 방식과 일치합니다. 정수에 대한 길이가 0인 문자열. 이에 대한 일정은 변경 사항은 8.0에서 발표되었습니다.

  • default_with_oids이제 거짓입니다 기본적으로 (닐)

    이 옵션을 false로 설정하면 사용자가 생성한 테이블이 없습니다. 더 이상 OID 열이 없습니다.와 함께 OIDS다음에 지정됨만들기 표. Though OIDs have existed in all releases of포스트그레SQL, 그 용도는 다음과 같습니다. 길이가 4바이트에 불과하고 카운터는 설치된 모든 데이터베이스에서 공유됩니다. 는 행을 고유하게 식별하는 기본 방법은 시퀀스를 이용하는 것입니다. 그리고연속유형, 이후 지원됨PostgreSQL 6.4.

  • 추가E''구문은 결국 일반 문자열은 백슬래시를 문자 그대로 처리할 수 토토 커뮤니티. (브루스)

    현재PostgreSQL문자열 리터럴의 백슬래시를 처리합니다. 특수 이스케이프 시퀀스(예:\n또는\010. 이것은 쉽게 허용하지만 특별한 값을 입력하면 비표준이 되며 다른 데이터베이스에서 애플리케이션 포팅 어렵다. 이러한 이유로,PostgreSQL프로젝트가 다음을 계획하고 있습니다. 문자열에서 백슬래시의 특별한 의미를 제거합니다. 에 대한 이전 버전과의 호환성 및 특별한 기능을 원하는 사용자를 위한 백슬래시 처리를 통해 새로운 문자열 구문이 생성되었습니다. 이 새로운 문자열 구문은E작은따옴표 바로 앞 문자열을 시작하는 문자열입니다. 예를 들어안녕\n'. 이 릴리스는 변경되지 않지만 문자열에서 백슬래시를 처리하면 새 항목이 추가됩니다. 사용자가 애플리케이션을 마이그레이션하는 데 도움이 되는 구성 매개변수 향후 릴리스를 위해:

    • standard_conforming_strings— 이번 토토 커뮤니티에서는 백슬래시를 문자 그대로 처리합니까? 일반 문자열?

    • escape_string_warning— E가 아닌 일반 문자열의 백슬래시에 대해 경고합니다.

    standard_conforming_strings값은 읽기 전용입니다. 애플리케이션은 다음 값을 검색할 수 있습니다. 백슬래시가 어떻게 처리되는지 알아보세요. (의 존재 매개변수는 다음을 나타내는 것으로 간주될 수도 있습니다.E''문자열 구문이 지원됩니다.) 향후 릴리스에서는standard_conforming_strings사실일 것입니다. 즉, 백슬래시는 E가 아닌 언어에서 문자 그대로 처리됩니다. 문자열. 이 변경에 대비하려면 다음을 사용하세요.E''특별한 조치가 필요한 곳에 문자열 백슬래시 처리 및 켜기escape_string_warning추가 검색 사용하기 위해 변환해야 하는 문자열E''. 또한 두 개의 작은따옴표('') 문자 그대로 작은따옴표를 삽입하려면 문자열이 아닌포스트그레SQL-지원되는 구문 백슬래시 작은따옴표(\'). 는 전자는 표준을 준수하며 사용할 필요가 없습니다. 의E''문자열 구문. 당신은 할 수 있습니다 또한 다음을 사용하십시오.$$문자열 구문, 백슬래시를 특별히 처리하지 않습니다.

  • 만들다REINDEX 데이터베이스재색인 데이터베이스의 모든 인덱스(Tom)

    이전에는,REINDEX 데이터베이스시스템 테이블만 다시 색인화했습니다. 이 새로운 행동은 더 많은 것 같습니다 직관적이다. 새로운 명령REINDEX 시스템재색인화의 이전 기능을 제공합니다. 시스템 테이블만요.

  • 읽기 전용 대형 개체 설명자는 이제 MVCC를 준수합니다. 스냅샷 의미

    큰 개체를 다음으로 열 때INV_READ(그리고 아님INV_WRITE), 설명자는 이제 다음을 반영합니다."스냅샷"대형 객체의 상태 쿼리에서 사용 중인 트랜잭션 스냅샷의 시간 그건lo_open(). 받는 사람 항상 최신 항목을 반환하는 이전 동작을 얻습니다. 커밋된 데이터, 포함INV_WRITE모드 플래그에서lo_open().

  • 시퀀스 인수에 대한 적절한 종속성 추가 함수(톰)

    이전 릴리스에서는 시퀀스 이름이 다음에 전달되었습니다.다음값(), currval()setval()간단한 텍스트로 저장되었습니다 문자열(사용된 시퀀스의 이름을 바꾸거나 삭제하는 것을 의미함) 에서기본값절이 다음을 만들었습니다. 조항이 유효하지 않습니다. 이 릴리스에서는 새로 생성된 모든 항목을 저장합니다. 함수 인수를 내부 OID로 시퀀스하여 이를 허용합니다. 시퀀스 이름 변경 및 종속성 추가 추적 부적절한 서열 제거를 방지하는 정보. 그것 그런 것도 만든다기본값절 스키마 이름 변경 및 검색 경로 변경에 영향을 받지 않습니다.

    일부 응용프로그램은 이전 동작에 의존할 수 있습니다. 시퀀스 이름에 대한 런타임 조회. 이 작업은 아직 수행할 수 있습니다. 인수를 명시적으로 캐스팅하여텍스트, 예를 들어nextval('myseq'::text).

    8.1에 로드된 8.1 이전 데이터베이스 덤프는 이전 버전을 사용합니다. 텍스트 기반 표현이므로 OID에 저장된 인수의 특징. 그러나 가능합니다 to update a database containing text-based기본값절. 먼저 이 쿼리를 다음과 같은 파일fixseq.sql:

    '테이블 변경' 선택 ||
       pg_catalog.quote_ident(n.nspname) || '.' ||
       pg_catalog.quote_ident(c.relname) ||
       ' ALTER COLUMN ' || pg_catalog.quote_ident(a.attname) ||
       ' 기본값으로 설정 ' ||
       regexp_replace(d.adsrc,
                      $$val\(\(('[^']*')::text\)::regclass$$,
                      $$발(\1$$,
                      'g') ||
       ';'
    pg_namespace n, pg_class c, pg_attribute a, pg_attrdef d에서
    n.oid = c.relnamespace AND
       c.oid = a.attrelid AND
       a.attrelid = d.adrelid AND
       a.attnum = d.adnum AND
       d.adsrc ~ $$val\(\('[^']*'::text\)::regclass$$;

    다음으로, 데이터베이스에 대해 쿼리를 실행하여 무엇을 찾으세요? 데이터베이스의 경우와 같이 조정이 필요합니다.db1:

    psql -t -f fixseq.sql db1

    다음이 표시됩니다.테이블 변경데이터베이스를 최신 버전으로 변환하는 데 필요한 명령 OID 기반 표현. 명령이 합리적으로 보인다면, 데이터베이스를 업데이트하려면 다음을 실행하세요.

    psql -t -f fixseq.sql db1 | psql -e db1

    이 프로세스는 각 데이터베이스에서 반복되어야 합니다. 업데이트되었습니다.

  • psql, 인용되지 않은 처리\숫자+8진수 시퀀스 (브루스)

    이전 릴리스에서는,\숫자+시퀀스는 십진수로 처리되었으며 오직\0숫자+8진수로 처리되었습니다. 이 일관성을 위해 변경되었습니다.

  • 접두사와 접미사에 대한 문법 생성 제거%그리고^연산자 (톰)

    이것들은 문서화된 적이 없으며 사용이 복잡합니다 모듈러스 연산자(%)와 함께 음수.

  • 만들다&<그리고&다음과 일치하는 다각형의 경우 상자 "오버" 연산자(Tom)

  • 언어 생성무시할 수 있습니다. 다음의 정보에 찬성하는 주장을 제공했습니다.pg_pltemplate(톰)

    새로운 시스템 카탈로그pg_pltemplate수송하도록 정의되었습니다 절차적 선호 정의에 대한 정보 언어(예: 유효성 검사기 기능이 있는지 여부) 해당 언어에 대한 항목이 이 카탈로그에 존재하는 경우 생성되었습니다.언어 생성할 것이다 언어 이름을 제외한 모든 매개변수를 무시하고 대신 카탈로그 정보를 사용하세요. 이런 조치가 취해졌습니다 쓸모없는 언어로 인한 문제가 증가하고 있기 때문에 이전 덤프 파일에 의해 정의가 로드되고 있습니다. 8.1부터,pg_dump덤벼들 것이다 절차적 언어 정의는 다음과 같습니다.언어 생성이름, 템플릿 사용 로드 시 항목이 존재해야 합니다. 우리는 이것이 더 많을 것으로 기대합니다. 미래 보장형 표현.

  • 만들다pg_cancel_backend(int)반환부울보다는정수(닐)

  • 일부 사용자가 utf-8 데이터를 로드하는 데 문제가 있습니다 8.1.X. 이전 버전에서는 유효하지 않은 것을 허용했기 때문입니다. 데이터베이스에 입력할 utf-8 바이트 시퀀스 이 릴리스에서는 유효한 utf-8 시퀀스만 올바르게 허용합니다. 덤프 파일을 수정하는 한 가지 방법은 다음 명령을 실행하는 것입니다.iconv -c -f utf-8 -t utf-8 -o cleanfile.sql 덤프파일.sql.-c옵션은 유효하지 않은 문자를 제거합니다 시퀀스. 두 파일의 차이점을 보면 시퀀스가 표시됩니다. 유효하지 않습니다.iconv읽는다 전체 입력 파일을 메모리에 저장하므로 사용분할해산하다 처리를 위해 여러 개의 작은 파일로 덤프합니다.

E.48.3. 추가 변경사항

아래에서 추가 사항에 대한 자세한 설명을 찾을 수 있습니다. 사이의 변화PostgreSQL8.1 및 이전 주요 릴리스입니다.

E.48.3.1. 성능 개선

  • GiST 및 R-tree 인덱스 성능 개선(Neil)

  • 해시 자동 크기 조정을 포함한 최적화 기능 개선 조인(톰)

  • 여러 영역의 내부 API 점검

  • WAL 레코드 CRC를 64비트에서 32비트로 변경(Tom)

    우리는 64비트 컴퓨팅의 추가 비용이 CRC는 중요했으며 신뢰성도 향상되었습니다. 그것을 정당화하기에는 한계가 있습니다.

  • WAL 페이지에 큰 빈 공백 쓰기 방지 (톰)

  • SMP 시스템의 스핀록 동작을 개선합니다. 특히 Opterons (Tom)

  • 비연속적인 색인 열이 다음에서 사용되도록 허용합니다. 다중 열 인덱스(Tom)

    예를 들어, 이는 a,b,c 열의 인덱스를 다음과 같이 허용합니다. 다음과 같은 쿼리에 사용됩니다.여기서 a = 4 그리고 c = 10.

  • WAL 로깅 건너뛰기테이블 생성 그대로 / 선택(사이먼)

    중 충돌 이후테이블 생성 그대로다음 중에 테이블이 삭제될 수 있습니다. 복구, 테이블이 있으므로 WAL 로그를 남길 이유가 없습니다. 로드되었습니다. (WAL 아카이브가 활성화된 경우에도 로깅이 계속 발생합니다. 그러나 활성화되었습니다.)

  • 동시 GiST 인덱스 액세스 허용(Teodor, Oleg)

  • 구성 매개변수 추가full_page_writes전체 쓰기 제어 WAL(브루스) 페이지

    부분 디스크 쓰기로 인해 디스크가 손상되는 것을 방지하려면 데이터베이스,PostgreSQL각 데이터베이스 디스크 페이지의 전체 복사본을 WAL에 씁니다. 체크포인트 이후 처음 수정되는 경우. 이 옵션은 더 빠른 속도를 위해 해당 기능을 끕니다. 이 배터리 지원 디스크 캐시와 함께 사용하는 것이 안전합니다. 부분 페이지 쓰기는 발생할 수 없습니다.

  • 사용O_DIRECT사용 가능한 경우 사용할 때O_SYNCforwal_sync_method(이타가키 타카히로)

    O_DIRECT디스크 쓰기 유발 커널 캐시를 우회하고 WAL 쓰기의 경우 성능이 향상됩니다.

  • 개선다음에서 복사성능 (알론 골드슈브)

    이것은 독서를 통해 이루어졌습니다복사대신 더 큰 덩어리로 입력하세요. 한 글자씩.

  • 성능 향상횟수(), 합계, AVG(), STDDEV()차이()(닐, 톰)

E.48.3.2. 서버 변경 사항

  • 트랜잭션 ID(XID)로 인한 문제 방지 랩어라운드(톰)

    이제 서버는 거래 카운터가 종료되면 경고합니다. 랩어라운드 지점에 접근합니다. 카운터가 되면 랩어라운드에 너무 가까워지면 서버가 수락을 중지합니다. 쿼리. 이렇게 하면 필요하기 전에 데이터가 손실되지 않습니다. 진공청소가 수행됩니다.

  • 개체 ID(OID)가 다음과 충돌하는 문제 수정 OID 카운터가 래핑된 후의 기존 시스템 개체 주위에 (톰)

  • 증가 필요성에 대한 경고 추가max_fsm_relations그리고max_fsm_pages진공(론 메이어)

  • 추가temp_buffers사용자가 결정할 수 있도록 하는 구성 매개변수 임시 테이블 액세스를 위한 로컬 버퍼 영역의 크기 (톰)

  • 세션 시작 시간 및 클라이언트 IP 주소 추가pg_stat_activity(매그너스)

  • 조정pg_stat에 대한 조회수 비트맵 스캔(Tom)

    일부 필드의 의미가 변경되었습니다. 약간.

  • 강화pg_locks보기 (톰)

  • 클라이언트 측에 대한 로그 쿼리준비그리고실행(사이먼)

  • Kerberos 이름 및 사용자 이름 대소문자 구분 허용 에 지정됨postgresql.conf(매그너스)

  • 구성 매개변수 추가krb_server_hostname그래서 서버는 호스트 이름은 서비스 주체의 일부로 지정될 수 있습니다. (토드 코버)

    설정되지 않은 경우 다음의 항목과 일치하는 모든 서비스 주체 키탭을 사용할 수 있습니다. 이것은 새로운 Kerberos 일치입니다. 이번 릴리스에서는 동작합니다.

  • 추가log_line_prefix옵션 밀리초 타임스탬프(%m) 및 원격 호스트(%h) (Ed L.)

  • GiST 인덱스에 대한 WAL 로깅 추가(Teodor, Oleg)

    GiST 인덱스는 이제 충돌 및 특정 시점에 안전합니다. 회복.

  • 이전 항목 제거*.백업파일 우리가 그럴 때pg_stop_backup()(브루스)

    이것은 많은 수의 공격을 방지합니다*.백업기존 파일pg_xlog/.

  • TCP/IP를 제어하기 위한 구성 매개변수 추가 유휴, 간격 및 횟수에 대한 연결 유지 시간(Oliver 조웨트)

    이 값은 더 빠른 속도로 변경될 수 토토 커뮤니티. 끊어진 클라이언트 연결을 감지합니다.

  • 사용자별 및 데이터베이스별 연결 제한 추가(Petr 옐리네크)

    사용 중사용자 변경그리고데이터베이스 변경, 이제 한도를 설정할 수 있습니다. 가능한 최대 세션 수에 적용됩니다. 특정 사용자 또는 특정 사용자로 동시에 연결 데이터베이스. 제한을 0으로 설정하면 사용자가 비활성화되거나 데이터베이스 연결.

  • 2GB 이상의 공유 메모리를 허용하고 64비트 시스템의 백엔드별 작업 메모리(Koichi 스즈키)

  • 새로운 시스템 카탈로그pg_pltemplate재정의 허용 덤프 파일의 오래된 절차적 언어 정의 (톰)

E.48.3.3. 쿼리 변경사항

  • 임시 보기 추가(이이지마 코주, 닐)

  • 수정가지고 있는 중아무것도 없이 집계 함수 또는그룹별질의가 단일 그룹(Tom)을 반환하도록

    이전에 그러한 경우는 다음을 치료했습니다.가지고 있는 중a와 같은 절어디에서절. 이는 사양에 따른 것이 아닙니다.

  • 추가사용 중허용하는 조항 지정할 추가 테이블삭제(오일러 타베이라 드 올리베이라, 닐)

    이전 릴리스에서는 명확한 방법이 없었습니다. a에서 조인에 사용할 추가 테이블 지정삭제진술.업데이트이미가 토토 커뮤니티발신이 목적을 위한 절입니다.

  • 다음에 대한 지원 추가\x16진수 백엔드 및 ecpg 문자열에서 이스케이프 처리됩니다(Bruce)

    이것은 표준 C와 같습니다.\x이스케이프 구문. 8진수 이스케이프는 다음과 같습니다. 이미 지원됩니다.

  • 추가대칭 사이질의 구문(Pavel Stehule)

    이 기능은 다음을 허용합니다사이첫 번째 값이 더 작을 필요 없이 비교 두 번째보다. 예를 들어,2 [비대칭] 3과 1 사이false를 반환하는 반면2 대칭 3과 1 사이참을 반환합니다.비대칭 사이이미 지원되었습니다.

  • 추가NOWAIT옵션업데이트/공유를 위해 ... 선택(Hans-Juergen Schoenig)

    그동안statement_timeout구성 매개변수는 쿼리가 취소할 일정 시간이 지나면,NOWAIT옵션을 사용하면 쿼리를 수행할 수 있습니다. 즉시 취소됨선택 ... 업데이트/공유명령은 즉시 획득할 수 없습니다. 행 잠금.

E.48.3.4. 객체 조작 변경 사항

  • 공유 객체의 종속성 추적(Alvaro)

    PostgreSQL허용 전역 테이블(사용자, 데이터베이스, 테이블스페이스) 여러 데이터베이스의 참조 정보. 이 또한 전역 테이블에 대한 종속성 정보를 추가합니다. 예를 들어 사용자 소유권을 추적할 수 있습니다. 데이터베이스, 즉 어떤 데이터베이스에서든 무언가를 소유한 사용자 더 이상 제거할 수 없습니다. 이미 종속성 추적 데이터베이스 로컬 개체에 대해 존재했습니다.

  • 제한적으로 허용소유자 변경객체 소유자가 수행할 명령(Stephen 프로스트)

    이전 릴리스에서는 수퍼유저만 변경할 수 있었습니다. 객체 소유자. 이제 다음과 같은 경우 소유권을 이전할 수 있습니다. 명령을 실행하는 사용자는 객체를 소유하며 새 소유자로 생성할 수 있습니다(즉, 사용자는 새로운 소유 역할의 멤버이며 해당 역할에는 생성하는 데 필요한 CREATE 권한 개체를 새로).

  • 추가변경객체스키마 설정일부 개체에 대한 기능 유형(테이블, 함수, 유형)(Bernd Helmle)

    이것은 개체를 다른 위치로 이동할 수 있게 해줍니다 스키마.

  • 추가테이블 변경 활성화/비활성화 트리거트리거를 비활성화하려면(나가야스 사토시)

E.48.3.5. 유틸리티 명령 변경 사항

  • 허용잘라내기잘라내다 단일 명령으로 여러 테이블(Alvaro)

    참조 무결성 검사로 인해 참조의 일부인 테이블을 자르는 것이 허용됨 무결성 제약. 이 새로운 기능을 사용하여,잘라내기잘라내는 데 사용할 수 있습니다. 두 테이블이 모두 참조에 포함된 경우 이러한 테이블 무결성 제약 조건은 단일에서 잘립니다.잘라내기명령.

  • 캐리지 리턴 및 라인 피드를 올바르게 처리합니다.CSV 복사모드 (앤드류)

    토토 커뮤니티 8.0에서는 캐리지 리턴 및 줄 바꿈CSV 복사 대상다음에서 처리되었습니다. 일관성 없는 방식. (이것은 TODO에 문서화되어 있습니다. 목록.)

  • 추가CSV 헤더로 복사에 헤더 줄을 첫 번째 줄로 허용합니다.복사(앤드류)

    이것은 일반적인 처리를 허용합니다CSV열 이름 배치 사용법 데이터 파일의 첫 번째 줄. 에 대한복사 대상, 첫 번째 줄에는 다음이 포함됩니다. 열 이름 및 for다음에서 복사, 첫 번째 줄은 무시됩니다.

  • Windows에서는 더 나은 1초 미만의 정밀도를 표시합니다.분석 설명(매그너스)

  • 다음에 트리거 기간 표시 추가분석 설명(톰)

    이전 릴리스에는 트리거 실행 시간이 일부로 포함되었습니다. 총 실행 시간을 표시했지만 표시하지 않았습니다. 별도로. 이제 시간이 얼마나 되었는지 확인할 수 있습니다. 각 트리거에 소비됩니다.

  • 다음에 대한 지원 추가\x16진수 탈출하다복사(세르게이 텐)

    이전 릴리스에서는 8진수 이스케이프만 지원했습니다.

  • 만들다모두 표시포함 변수 설명(Matthias Schmidt)

    표시varname은 아직만 변수의 값을 표시하고 설명.

  • 만들다initdb만들기 새로운 표준 데이터베이스는포스트그레, 유틸리티를 변환하여 사용포스트그레대신템플릿1표준 조회용(Dave)

    이전 릴리스에서는,템플릿1다음과 같은 유틸리티의 기본 연결로 모두 사용되었습니다.사용자 생성그리고 새 데이터베이스에 대한 템플릿입니다. 이로 인해데이터베이스 생성때때로 실패하기 때문에 다른 사람이 있으면 새 데이터베이스를 만들 수 없습니다. 템플릿 데이터베이스. 이번 변경으로 기본값은 연결 데이터베이스는 현재입니다.포스트그레, 이는 가능성이 훨씬 낮다는 의미입니다. 누군가가 사용할 것입니다템플릿1데이터베이스 생성.

  • 새로 만들기reindexdb이동에 의한 명령줄 유틸리티/contrib/reindexdb서버에(오일러 타베이라 데 올리베이라)

E.48.3.6. 데이터 유형 및 기능 변경

  • 추가MAX()그리고MIN()배열용 집계 종류 (이지마 코쥬)

  • 수정to_date()그리고to_timestamp()행동하다 합리적으로 언제CC그리고YY필드가 모두 사용됩니다(Karel 자크)

    형식 사양에 다음이 포함된 경우CC연도 사양은YYY이상, 무시CC. 연도 지정이 다음과 같은 경우YY또는 더 짧게, 해석CC이전 세기와 같습니다.

  • 추가md5(바이테아)(아비짓 메논센)

    md5(텍스트)이미 존재했습니다.

  • 다음에 대한 지원 추가숫자 ^ 숫자기준힘(숫자, 숫자)

    함수는 이미 존재했지만, 존재하지 않았습니다. 운영자가 할당되었습니다.

  • 수정숫자올바르게 모듈러스 계산 중 몫 자르기(Bruce)

    이전 릴리스에서는 큰 값에 대한 모듈러스 때때로 반올림으로 인해 부정적인 결과가 반환되었습니다. 몫.

  • 함수 추가마지막 값()(데니스 비요클룬드)

    마지막 값()은 단순화된 버전currval(). 자동으로 결정됩니다. 가장 최근에 기반한 적절한 시퀀스 이름다음값()또는setval()현재 호출이 수행됨 세션.

  • 추가to_timestamp(DOUBLE 정밀) (Michael Glaesemann)

    1970년 이후 Unix 초를 a로 변환합니다.시간대를 포함한 타임스탬프.

  • 추가pg_postmaster_start_time()함수 (오일러 타베이라 데 올리베이라, 마티아스 슈미트)

  • 다음 시간대 이름의 전체 사용을 허용시간대, 짧은 목록뿐만 아니라 이전에 사용 가능함(Magnus)

    이전에는 미리 정의된 시간대 이름 목록만 에서 지원했습니다.시간대. 이제 지원되는 모든 시간대 이름을 사용할 수 있습니다. 예:

    '유럽/런던' 시간대에서 CURRENT_TIMESTAMP 선택;

    위 쿼리에서는 사용된 시간대가 조정되었습니다 일광 절약 시간제 규칙을 기반으로 제공된 날짜에 영향을 미칩니다.

  • 추가최고()그리고최소()가변 함수 (파벨 스테훌레)

    이 함수는 가변 개수의 인수를 사용합니다. 그 중 가장 큰 값이나 가장 작은 값을 반환합니다. 인수.

  • 추가pg_column_size()(마크 커크우드)

    이것은 열의 저장 크기를 반환합니다. 압축되었습니다.

  • 추가regexp_replace()(오가와 아츠시)

    이것은 sed와 같은 정규식 대체를 허용합니다. 선택적 플래그 인수를 사용하면 전역 항목을 선택할 수 있습니다. (모두 바꾸기) 및 대소문자를 구분하지 않는 모드입니다.

  • 간격 나누기와 곱셈 수정 (Bruce)

    이전 버전은 때때로 정당화되지 않은 상태로 반환되었습니다. 결과는 다음과 같습니다.'4개월'::간격 / 5돌아오는 중'1월 -6 일'.

  • 타임스탬프, 시간 및 간격의 반올림 동작 수정 출력(톰)

    이것은 초 필드가 다음과 같이 표시됩니다.60대신 고차 필드를 증가시킵니다.

  • 유형에 별도의 날짜 필드 추가간격그래서 하루 간격은 24시간 간격과 구별됨(Michael 글라제만)

    일광 절약 시간 조정이 포함된 날짜 24시간은 아니지만 일반적으로 23~25시간입니다. 이 변화는 간격 사이의 개념적 구별을 만듭니다. 의"너무나 많은 날들"그리고 간격"너무 많은 시간". 추가1일지금 타임스탬프로 다음 날에도 동일한 현지 시간을 제공합니다. 일광 절약 시간제 조정은 다음 사이에 발생합니다. 추가24시간줄 것이다 이런 일이 발생하면 현지 시간이 다릅니다. 예를 들어, 미국 DST 규칙에 따라:

    '2005-04-03 00:00:00-05' + '1일' = '2005-04-04 00:00:00-04'
    '2005-04-03 00:00:00-05' + '24시간' = '2005-04-04 01:00:00-04'
  • 추가justify_days()그리고justify_hours()(마이클 글라제만)

    이 함수는 각각 요일을 다음과 같이 조정합니다. 전체 월과 일 수를 적절하게 조정하고 조정합니다. 시간을 적절한 하루 수로 늘리고 시간.

  • 이동/contrib/dbsize안으로 백엔드를 만들고 일부 기능의 이름을 바꿉니다(Dave Page, 안드레아스 플러그)

    • pg_tablespace_size()

    • pg_database_size()

    • pg_relation_size()

    • pg_total_relation_size()

    • pg_size_pretty()

    pg_total_relation_size()인덱스 및 TOAST 테이블을 포함합니다.

  • 클러스터에 대한 읽기 전용 파일 액세스를 위한 기능 추가 디렉토리(데이브 페이지, 안드레아스 플루그)

    • pg_stat_file()

    • pg_read_file()

    • pg_ls_dir()

  • 추가pg_reload_conf()에 구성 파일을 강제로 다시 로드합니다(Dave Page, 안드레아스 플러그)

  • 추가pg_rotate_logfile()서버 로그 파일을 강제로 회전시키려면(데이브 페이지, 안드레아스 플러그)

  • 변경pg_stat_*조회수 TOAST 테이블 포함(Tom)

E.48.3.7. 인코딩 및 로케일 변경

  • 일부 인코딩의 이름을 보다 일관되고 국제 표준을 따르십시오 (Bruce)

    • 유니코드지금은UTF8

    • ALT지금은WIN866

    • 승리지금은WIN1251

    • TCVN지금은WIN1258

    원래 이름은 여전히 유효합니다.

  • 다음에 대한 지원 추가WIN1252인코딩(롤랜드 볼크만)

  • 4바이트 지원 추가UTF8문자(존 한센)

    이전에는 1바이트, 2바이트, 3바이트만UTF8문자가 지원되었습니다. 이것은 일부 중국인에 대한 지원에 특히 중요함 문자 집합.

  • 다음 사이의 직접 변환 허용EUC_JP그리고SJIS성능 향상을 위해 (오가와 아츠시)

  • UTF8 인코딩이 Windows에서 작동하도록 허용 (매그너스)

    이것은 UTF8을 Windows 네이티브에 매핑하여 수행됩니다. UTF16 구현.

E.48.3.8. 일반 서버측 언어 변경 사항

  • 수정언어 이름 변경(세르게이 야츠케비치)

  • 엄격성과 같은 기능 특성을 허용합니다. 변동성, 다음을 통해 수정됨변경 기능(닐)

  • 함수 인수의 최대 개수를 다음으로 늘립니다. 100 (톰)

  • SQL 및 PL/pgSQL 함수 사용을 허용아웃그리고INOUT매개변수(톰)

    아웃는 다음을 위한 대체 방법입니다. 값을 반환하는 함수입니다. 사용하는 대신반환, 값은 다음에 의해 반환될 수 있습니다. 다음과 같이 선언된 매개변수에 할당밖으로또는INOUT. 이는 어떤 경우에는 표기법상 더 간단합니다. 특히 따라서 여러 값을 반환해야 할 때. 동안 함수에서 여러 값을 반환하는 것이 가능했습니다. 이전 릴리스에서는 프로세스가 크게 단순화되었습니다. (이 기능은 다른 서버 측에도 확장될 예정입니다. 향후 릴리스에서는 언어를 지원합니다.)

  • 언어 핸들러 함수를 다음으로 이동pg_catalog스키마

    이것은 다음과 같은 경우 공개 스키마를 삭제하는 것을 더 쉽게 만듭니다. 원하는.

  • 추가SPI_getnspname()에 SPI(닐)

E.48.3.9. PL/pgSQL 서버측 언어 변경 사항

  • PL/pgSQL 함수의 메모리 관리 점검 (닐)

    각 함수의 구문 분석 트리는 이제 별도의 메모리 컨텍스트. 이를 통해 이 메모리는 더 이상 필요하지 않을 때 쉽게 회수할 수 있습니다.

  • 함수 구문 확인만들기 기능런타임이 아닌 시간(Neil)

    이전에는 대부분의 구문 오류가 다음 경우에만 보고되었습니다. 함수가 실행되었습니다.

  • 허용열기열다 비-선택다음과 같은 쿼리설명그리고표시(톰)

  • 더 이상 a를 발행하는 기능이 필요하지 않습니다.반환진술서 (톰)

    이것은 새로 추가된 것의 부산물입니다아웃그리고INOUT기능.반환될 수 있습니다 기능을 제공하는 데 필요하지 않은 경우 생략됩니다. 반환 값.

  • 선택사항에 대한 지원 추가INTOPL/pgSQL의 조항실행진술(Pavel Stehule, 닐)

  • 만들다다음으로 테이블 생성설정ROW_COUNT(톰)

  • 정의SQLSTATE그리고SQLERRM반환하려면SQLSTATE그리고 현재의 오류 메시지 예외(Pavel Stehule, Neil)

    이 변수는 예외 내부에서만 정의됩니다 블록.

  • 매개변수를 다음에 허용하십시오.올림문은 표현식이 됩니다(파벨 스테훌레, 닐)

  • 루프 추가계속문장 (파벨 스테훌레, 닐)

  • 블록 및 루프 레이블 허용 (Pavel Stehule)

E.48.3.10. PL/Perl 서버측 언어 변경 사항

  • 큰 결과 세트가 효율적으로 반환되도록 허용 (아비짓 메논-센)

    이것은 함수를 사용할 수 있게 해줍니다return_next()빌딩을 피하기 위해 전체 결과 집합이 메모리에 저장됩니다.

  • 쿼리 결과를 한 번에 한 행씩 검색 허용 (아비짓 메논-센)

    이것은 함수를 사용할 수 있게 해줍니다spi_query()그리고spi_fetchrow()축적을 방지하기 위해 전체 결과 세트를 메모리에 저장합니다.

  • PL/Perl이 문자열을 다음과 같이 처리하도록 강제UTF8서버 인코딩이 다음과 같은 경우UTF8(데이비드 캄홀츠)

  • PL/Perl에 대한 유효성 검사기 기능 추가(Andrew)

    이를 통해 정의 시 구문 오류를 보고할 수 있습니다. 실행 시간이 아닌 시간입니다.

  • 함수가 실행될 때 PL/Perl이 Perl 배열을 반환하도록 허용 배열 유형을 반환합니다(Andrew)

    이것은 기본적으로 지도입니다.PostgreSQLPerl에 대한 배열 배열.

  • Perl 치명적이지 않은 경고 생성 허용공지메시지 (앤드류)

  • Perl 허용엄격모드 활성화됨(앤드류)

E.48.3.11.psql변경사항

  • 추가\설정 ON_ERROR_ROLLBACK에 트랜잭션의 문에 오류가 발생하지 않도록 허용 나머지 거래에 영향을 미침(Greg Sabino 멀레인)

    이것은 기본적으로 다음을 래핑하여 구현됩니다. 하위 거래의 명세서입니다.

  • 다음에 대한 지원 추가\x16진수 문자열psql변수 (브루스)

    8진수 이스케이프는 이미 지원되었습니다.

  • 다음에 대한 지원 추가트로프 -ms출력 형식(로저 리)

  • 기록 파일 위치를 다음에 의해 제어되도록 허용히스트파일(안드레아스 셀텐라이히)

    이것은 데이터베이스별 기록 구성을 허용합니다 저장.

  • 방지\x(확장 모드) 출력에 영향을 미치지 않도록\d 테이블 이름(닐)

  • 추가-L옵션psql세션 기록(론 선리)

    이 옵션은 일부 운영 체제 때문에 추가되었습니다. 간단한 명령줄 활동 로깅이 없습니다. 기능.

  • 만들다\d테이블스페이스 표시 지수의 (Qingqing Zhou)

  • 허용psql도움말 (\h)에 대해 최선의 추측을 하기 위해 적절한 도움말 정보(Greg Sabino Mullane)

    이것은 사용자가 추가만 할 수 있게 해줍니다\h구문 오류 쿼리 앞에 지원되는 구문에 대한 도움말을 확인하세요. 이전에는 어떤 명령 이름 이외의 추가 쿼리 텍스트는 사용하기 위해 삭제됨\h.

  • 추가\pset 숫자로캘에 숫자가 로케일 인식 형식으로 출력되도록 허용 (오이겐 네델쿠)

    예를 들어 다음을 사용하여C로케일100000다음과 같이 출력됩니다100,000.0유럽인인 동안 로케일은 이 값을 다음과 같이 출력할 수 있습니다.100.000,0.

  • 시작 배너에 두 서버 버전 번호가 모두 표시되도록 만들기 그리고psql버전 숫자가 다를 때(브루스)

    또한 서버가 다음과 같은 경우 경고가 표시됩니다.psql다른 출신입니다 주요 토토 커뮤니티.

E.48.3.12.pg_dump변경사항

  • 추가-n / --스키마다음으로 전환pg_restore(리차드 반 덴 버그)

    이것은 지정된 스키마의 개체만 허용합니다. 복원됩니다.

  • 허용pg_dump덤핑하다 텍스트 모드에서도 큰 개체(Tom)

    이 변경으로 이제 대형 개체는 항상 덤프됩니다. 전자-b스위치는 작동하지 않습니다.

  • 허용pg_dump덤핑하다 대형 객체의 일관된 스냅샷(Tom)

  • 대형 개체에 대한 주석 덤프 (Tom)

  • 추가--인코딩pg_dump(마그누스 하간데르)

    이것은 데이터베이스가 인코딩으로 덤프되도록 허용합니다 이는 서버의 인코딩과 다릅니다. 이것은 덤프를 기계로 전송할 때 가치가 있습니다. 인코딩이 다릅니다.

  • 의존pg_pltemplate용 절차적 언어(Tom)

    절차적 언어에 대한 호출 핸들러가pg_catalog스키마,pg_dump덤핑하지 않음 핸들러. 대신, 단지를 사용하여 언어를 덤프합니다.언어 생성이름, 다음을 사용하여pg_pltemplate카탈로그 로드 시 언어 생성 매개변수 제공 시간.

E.48.3.13.libpq변경사항

  • 추가PGPASSFILE환경 비밀번호 파일의 파일 이름을 지정하는 변수 (앤드류)

  • 추가lo_create(), 즉 와 유사lo_creat()하지만 대형 객체의 OID를 지정할 수 있습니다. (톰)

  • 만들다libpq다음의 클라이언트 응용프로그램에 지속적으로 오류를 반환합니다.malloc()실패 (닐)

E.48.3.14. 소스 코드 변경

  • 수정pgxs지원하다 이전된 시설에 반대하는 건물

  • 다음을 사용하여 Itanium 프로세서에 대한 스핀록 지원을 추가합니다. Intel 컴파일러(Vikram Kalsi)

  • Windows용 Kerberos 5 지원 추가(Magnus)

  • 중국어 FAQ 추가 (laser@pgsqldb.com)

  • OS/X 기능과 일치하도록 Rendezvous의 이름을 Bonjour로 변경 이름 바꾸기(브루스)

  • 다음에 대한 지원 추가fsync_writethrough다윈(크리스 캠벨)

  • 정보 전달을 간소화합니다. 서버, 옵티마이저 및 잠금 시스템(Tom)

  • 허용pg_config되다 MSVC(Andrew)를 사용하여 컴파일됨

    이는 다음을 사용하여 DBD::Pg를 빌드하는 데 필요합니다.MSVC.

  • Kerberos V4(Magnus)에 대한 지원 제거

    Kerberos 4에는 보안 취약점이 있었으며 보안 취약점이 없습니다. 더 오래 유지됩니다.

  • 코드 정리(커버리티 정적 분석 수행: 엔터프라이즈DB)

  • 수정postgresql.conf에 문서 기본값 사용켜짐/꺼짐오히려 보다/거짓(브루스)

  • 강화pg_config에 더 많은 빌드 시간 값을 보고할 수 토토 커뮤니티(Tom)

  • 허용libpq되다 Windows에서 스레드로부터 안전한 구축(Dave Page)

  • Windows에서 IPv6 연결을 사용하도록 허용 (앤드류)

  • I/O에 관한 서버 관리 문서 추가 하위 시스템 신뢰성(Bruce)

  • 개인 선언을 다음에서 이동gist.hgist_private.h(닐)

    이전 릴리스에서는,gist.h공용 GiST API(다음에서 사용하도록 의도됨)가 모두 포함되어 있습니다. GiST 인덱스 구현 작성자) 및 일부 GiST 구현에 사용되는 개인 선언 그 자체. 후자는 별도의 파일로 이동되었습니다.gist_private.h. 대부분의 GiST 지수 구현은 영향을 받지 않아야 합니다.

  • GiST 메모리 관리 점검(Neil)

    GiST 메소드는 이제 항상 단기간에 호출됩니다. 메모리 컨텍스트. 따라서 메모리는를 통해 할당됩니다.팔록()회수될 것입니다 자동으로 GiST 인덱스 구현이 필요하지 않습니다. 다음을 통해 할당된 메모리를 수동으로 해제합니다.pfree().

E.48.3.15. 기여 변경

  • 추가/contrib/pg_buffercachecontrib 모듈(마크 커크우드)

    이것은 버퍼 캐시의 내용을 표시합니다. 디버깅 및 성능 조정 목적.

  • 제거/contrib/배열더 이상 사용되지 않기 때문입니다(톰)

  • 정리/contrib/lo모듈 (톰)

  • 이동/contrib/findoidjoins/src/tools(톰)

  • 제거<<, , &<&연산자:/contrib/큐브

    이 연산자는 유용하지 않았습니다.

  • 개선/contrib/btree_gist(얀코 리히터)

  • 개선/contrib/pgbench(사토 토모아키, 타츠오)

    이제 SQL 명령으로 테스트할 수 있는 기능이 있습니다 단지 내장된 스크립트가 아닌 사용자가 제공한 스크립트 명령 순서.

  • 개선/contrib/pgcrypto(마코 크린)

    • OpenPGP 대칭 키 구현 및 공개 키 암호화

      RSA와 Elgamal 공개 키 알고리즘은 모두 지원됩니다.

    • 독립형 빌드: SHA256/384/512 해시 포함, 포르투나 PRNG

    • OpenSSL 빌드: 3DES 지원, 내부 AES 사용 오픈SSL < 0.9.7

    • 다음에서 빌드 매개변수(OpenSSL, zlib) 가져오기구성결과

      편집할 필요가 없습니다.메이크파일더 이상.

    • 다음에 대한 지원 제거libmhash그리고libmcrypt