PostgreSQL

소프트웨어 스크린 샷:
PostgreSQL
소프트웨어 정보:
버전: 10.5 / 11 Beta 3 업데이트
업로드 날짜: 16 Aug 18
라이센스: 무료
인기: 29

Rating: 1.5/5 (Total Votes: 2)

PostgreSQL은 MariaDB, MySQL 또는 SQLite 프로젝트 스타일의 오픈 소스, 강력하고 안정적이며 안정적인 기업용 및 무료 객체 관계형 데이터베이스 시스템입니다. ACID (Atomicity, Consistency, Isolation, Durability) 호환 데이터베이스 서버 / 엔진은 고도로 맞춤화 할 수 있으며 수많은 매력적인 기능을 포함하고있어 위의 데이터베이스 엔진을 대체합니다.


기능 요약

주요 기능에는 외래 키, 뷰, 조인, 트리거 및 저장 프로 시저 지원, 다국어 지원, BOOLEAN, CHAR, INTEGER, NUMERIC, VARCHAR, INTERVAL, TIMESTAMP 등 다양한 SQL 데이터 유형 지원이 포함됩니다. DATE.


또한이 소프트웨어는 모든 종류의 멀티미디어 파일 (비디오, 오디오 및 사진)을 포함하여 이진 대형 객체를 저장하고 C, C ++, Python, Perl, Ruby 등의 원시 프로그래밍 인터페이스를 개발자에게 제공합니다. Java, .Net, Tcl 및 ODBC 프로그래밍 언어.

MVCC (다중 버전 동시 처리 제어), 테이블 공간, 멀티 바이트 문자 인코딩, 시점 복구, 성숙한 쿼리 최적화 프로그램 및 플래너, 비동기 복제, 온라인 백업, 중첩 트랜잭션 (일반적으로 세이브 포인트), 핫 백업, 내결함성을위한 쓰기 로깅, 국제 문자 집합 지원 및 유니 코드 지원을 제공합니다.


숫자가있는 PostgreSQL

현재 PostgreSQL 데이터베이스 서버는 데이터베이스의 크기를 무제한으로 지원합니다. 테이블의 최대 크기는 32TB, 행당 1.6TB, 필드 당 1GB, 테이블 당 무제한 행, 테이블 당 250-1600 열을 지원합니다 , 열 유형에 따라 다르며 테이블 당 무제한 색인을 지원합니다.


지원되는 운영 체제

PostgreSQL은 GNU / Linux, BSD, Solaris, HP-UX, AIX, SGI IRIX, Solaris, Tru64, Mac OS X 및 Microsoft Windows를 포함한 모든 주류 운영 체제에서 성공적으로 테스트되었습니다. PostgreSQL은 32 비트 및 64 비트 아키텍처를 모두 지원하는 많은 Linux 배포판 용 사전 컴파일 된 바이너리 패키지뿐만 아니라 범용 소스 아카이브로 다운로드 할 수 있습니다.

이 릴리스의 새로운 기능 :

이 릴리스는 두 가지 보안 문제를 해결합니다. 이 릴리스에서는 VACUUM, GIN 및 해시 색인, 병렬 쿼리, 논리적 복제 및 지난 3 개월 동안보고 된 기타 버그에서 발견 된 문제도 해결합니다. 영향을받는 PostgreSQL 버전을 사용하는 모든 사용자는 가능한 한 빨리 업데이트해야합니다.

버전 10.4 / 11 베타 1의 새로운 기능 :

이 릴리스는 두 가지 보안 문제를 해결합니다. 이 릴리스에서는 VACUUM, GIN 및 해시 색인, 병렬 쿼리, 논리적 복제 및 지난 3 개월 동안보고 된 기타 버그에서 발견 된 문제도 해결합니다. 영향을받는 PostgreSQL 버전을 사용하는 모든 사용자는 가능한 한 빨리 업데이트해야합니다.

버전의 새로운 기능 :

pg_user_mappings.umoptions의 가시성을 제한하여 사용자 매핑 옵션으로 저장된 비밀번호를 보호 할 수 있습니다 (Noah Misch).
CVE-2017-7486에 대한 수정은 잘못되었습니다. 관련 외부 서버에 대한 USAGE 권한이없는 경우에도 사용자가 자신의 사용자 매핑에서 옵션을 볼 수있었습니다. 이러한 옵션에는 사용자가 아닌 서버 소유자가 제공 한 암호가 포함될 수 있습니다. 이 경우에는 information_schema.user_mapping_options에 옵션이 표시되지 않으므로 pg_user_mappings도 포함되지 않아야합니다. (CVE-2017-7547)
이 패치 자체만으로는 새롭게 initdb 된 데이터베이스의 동작을 수정합니다. 이 변경 사항을 기존 데이터베이스에 적용하려면 다음을 수행해야합니다.
postgresql.conf에 allow_system_table_mods = true를 추가 한 후 전자 메일 관리자를 다시 시작합니다. (ALTER SYSTEM을 지원하는 버전에서는이를 사용하여 구성을 변경할 수 있지만 다시 시작해야합니다.)
클러스터의 각 데이터베이스에서 수퍼 유저로 다음 명령을 실행합니다.
SET search_path = pg_catalog;
만들기 또는 바꾸기 pg_user_mappings보기
고르다
U.oid AS umid,
S.oid AS srvid,
S.srvname AS srvname,

U.umuser AS umuser,
경우 U.umuser = 0 그때
'공공의'
그밖에
A.rolname
끝으로 usename,
CASE WHEN (U.umuser 0 및 A.rolname = current_user
AND (pg_has_role (S.srvowner, 'USAGE')
또는 has_server_privilege (S.oid, 'USAGE')))
OR (U.umuser = 0 AND pg_has_role (S.srvowner, 'USAGE'))
OR (SELECT rolsuper FROM pg_authid where rolname = current_user)
그럼 U.umoptions
ELSE NULL 끝으로서의 Uumoptions
FROM pg_user_mapping U
LEFT JOIN pg_authid A ON (A.oid = U.umuser) JOIN
pg_foreign_server S ON (U.umserver = S.oid);
template0 및 template1 데이터베이스를 포함하는 것을 잊지 마십시오. 그렇지 않으면 나중에 생성하는 데이터베이스에도 취약점이 존재하게됩니다. template0을 수정하려면 임시로 연결을 수락해야합니다. PostgreSQL 9.5 및 이후 버전에서는
ALTER DATABASE template0 WITH ALLOW_CONNECTIONS가 true입니다.
그런 다음 template0을 고정한 후
ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;
이전 버전에서는
UPDATE pg_database SET datallowconn = true 어디 datname = 'template0';UPDATE pg_database SET datallowconn = false 어디 datname = 'template0';
마지막으로 allow_system_table_mods 구성 설정을 제거한 다음 전자 메일 관리자를 다시 시작합니다.
모든 암호 기반 인증 방법에서 빈 암호 허용 안 함 (Heikki Linnakangas)
libpq는 빈 암호 사양을 무시하고 서버로 전송하지 않습니다. 따라서 사용자의 암호가 빈 문자열로 설정된 경우 psql 또는 다른 libpq 기반 클라이언트를 통해 해당 암호로 로그인 할 수 없습니다. 따라서 관리자는 암호를 비어있는 것으로 설정하는 것이 암호 로그인을 사용 불가능하게하는 것과 동일하다고 생각할 수 있습니다. 그러나 수정되거나 비 libpq 기반 클라이언트를 사용하면 구성된 인증 방법에 따라 로그인 할 수 있습니다. 특히 가장 일반적인 방법 인 md5는 빈 암호를 허용했습니다. 어떤 경우에도 빈 암호를 거부하도록 서버를 변경하십시오. (CVE-2017-7546)
lo_put ()을 대상 대형 객체에 대한 UPDATE 권한 확인 (Tom Lane, Michael Paquier)
lo_put ()은 반드시 lowrite ()와 동일한 권한을 요구해야하지만, 검사가 누락되어 모든 사용자가 대형 객체의 데이터를 변경할 수 있습니다. (CVE-2017-7548)pg_upgrade (Bruce Momjian)를 사용하여 대기 서버 업그레이드 프로세스에 대한 설명서를 수정하십시오.
이전 문서에서는 pg_upgrade를 실행 한 후 주 서버를 동기화하기 전에 사용자에게 주 서버를 시작 / 중지하도록 지시했습니다. 이 순서는 안전하지 않습니다.
튜플 업데이트 체인 (Alvaro Herrera)의 동시 잠금 수정
여러 세션이 이전 스냅 샷을 사용하여 비공유 잠금 모드로 튜플 업데이트 체인을 동시에 잠그고 모두 성공하면 경쟁 조건으로 인해 일부 세션이 실패 (라이브 튜플 버전이 없다고 결론 내릴 수 있음) 할 수도 있습니다. 이것은 외래 키 검사가 확실히 존재하지만 동시에 업데이트되는 튜플을 보지 못하는 것과 같은 결과를 낳습니다.
터득한 XMAX가 아직도 하나의 흥미로운 멤버 (Teodor Sigaev)와 함께 다중 소스 인 튜플을 고정시킬 때 잠재적 인 데이터 손상을 수정합니다.
메모리에 10 억 개 이상의 튜플을 정렬 할 때 정수 오버플로 및 충돌 발생 방지 (Sergey Koposov)
Windows에서 새 프로세스에서 공유 메모리의 주소 범위를 예약하지 못하면 프로세스 생성을 다시 시도하십시오 (Tom Lane, Amit Kapila).이로 인해 바이러스 백신 제품의 간섭으로 인해 발생하는 자식 프로세스 실행 오류가 자주 발생하지 않을 것으로 예상됩니다.
Windows 빌드에서 공유 프리디 케이트 잠금 해시 테이블의 확률이 낮은 손상을 수정했습니다 (Thomas Munro, Tom Lane).
SSL 연결이 마치 연결 재설정 인 것처럼 깨끗하게 닫히지 않게하십시오 (Michael Paquier).
클라이언트에게 SSL 세션 티켓 보내기 방지 (Tom Lane)
이 수정은 티켓 인식 클라이언트 쪽 SSL 코드로 재 연결 실패를 방지합니다.
Solaris에서 tcp_keepalives_idle 설정 코드 수정 (Tom Lane)
포스트 마스터 종료 후 즉각적인 재시작 직후에 발행 된 질의 메시지를 수호하기 위해 통계 수집기를 수정했습니다. (Tom Lane)
이전 포스트 마스터 종료 중 0.5 초 이내에 발급 된 통계 조사는 사실상 무시되었습니다.
통계 수집기의 수신 버퍼 크기가 100KB 이상인지 확인하십시오 (Tom Lane).
이렇게하면 기본 수신 버퍼 크기가 그보다 작은 이전 플랫폼에서 통계 데이터가 삭제 될 위험이 줄어 듭니다.
XLOG_SWITCH WAL 레코드 (Andres Freund)를 처리 한 직후에 스탠바이가 승격 될 때 잘못된 WAL 세그먼트 생성 가능클라이언트 요청이 종료되면 즉시 종료하도록 walsender 수정 (Tom Lane)
walsender 프로세스에서 SIGHUP 및 SIGUSR1 처리를 수정합니다 (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 이전에 추정 된 방식으로 되돌립니다.
INSERT 또는 UPDATE가 도메인 오버 배열 유형 인 열의 둘 이상의 요소에 할당되는 문제 수정 (Tom Lane)
집계 함수의 인수 내에있는 하위 SELECT에서 창 함수를 사용할 수 있음 (Tom Lane)
기본 테이블이 외부 테이블 인 경우 뷰의 CHECK OPTIONS 절이 올바르게 적용되는지 확인하십시오 (Fujitsu Etsuro)
이전에는 업데이트가 완전히 외부 서버로 푸시 될 수 있었지만 뷰 조건을 확인해야하는 경우이를 놓쳤습니다.
ALTER ... RENAME (Vik Fearing) 중에 자동 생성 된 배열 유형을 방해하지 않습니다.
이전에는 CREATE 중에 충돌하는 자동 생성 된 배열 유형의 이름을 바꿨습니다. 이 수정은 해당 동작을 이름 변경 작업으로 확장합니다.
테이블에 속한 제약 조건에 주석이있을 때 ALTER TABLE에서 매달린 포인터를 수정합니다 (David Rowley).재구성 된 제약 조건에 주석을 다시 적용하면 이상한 오류 메시지가 나타나거나 심지어 충돌 할 수 있습니다.
ALTER USER ... SET이 ALTER ROLE ... SET가 수행하는 모든 구문 변형을 허용하는지 확인하십시오 (Peter Eisentraut)
외부 테이블의 CHECK 제약 조건이 처음에는 유효하지 않음 (Amit Langote)
CREATE TABLE은 CHECK 제약 조건에 대한 NOT VALID 지정자를 자동으로 삭제하므로 제약 조건을 즉시 확인할 수 있도록 테이블이 비어 있어야한다고 판단합니다. 그러나 이것이 CREATE FOREIGN TABLE에있어 잘못된 것입니다. 기본 테이블이 비어 있다고 가정 할 이유가 없으며 제약 조건이 앞으로 유효한 것으로 간주 될 수 있다고 결정하는 것이 우리에게 아무런 소용이 없습니다. 이 & quot; 최적화 & quot; 외국 테이블 용.
데이터 유형 I / O 함수의 인수 또는 반환 유형을 불투명에서 올바른 유형으로 변경할 때 종속성 정보를 올바르게 업데이트하십시오 (Heikki Linnakangas).
CREATE TYPE은이 오랫동안 사용되지 않는 스타일로 선언 된 I / O 함수를 업데이트하지만, 형식에 대한 종속성을 기록하는 것을 잊었으므로 후속 DROP TYPE이 깨진 함수 정의를 남겨 둘 수 있습니다.
쿼리 결과에서 COPY가 복사 될 때 쿼리 계획에 병렬 처리 허용 (Andres Freund)ANALYZE가 tsvector 열을 처리 할 때 메모리 사용을 줄입니다 (Heikki Linnakangas).
정수 또는 부동 소수점으로 돈 값을 곱하거나 나눌 때 불필요한 정밀도 손실 및 부실 라운딩 수정 (Tom Lane)
regprocedurein ()과 같이 식별자를 구문 분석하는 함수의 공백 검사를 강화했습니다 (Tom Lane).
널리 사용되는 로켈에 따라 이러한 함수는 멀티 바이트 문자 조각을 공백으로 오해 할 수 있습니다.
PL / Perl 컴파일시 Perl에서 관련 #define 심볼 사용 (Ashutosh Sharma, Tom Lane)
이는 일반적으로 "핸드 셰이크 (handshake)"현상으로 나타나는 이식성 문제를 피한다. 최근의 Perl 버전으로 작업 할 때 라이브러리로드 중 불일치.
libpq에서 실패한 연결 시도 후에 GSS / SASL 및 SSPI 인증 상태를 올바르게 재설정하십시오 (Michael Paquier).
이렇게하지 않으면 SSL에서 비 SSL 연결로 폴백 할 때 SSL 시도의 GSS / SASL 오류로 인해 항상 비 SSL 시도가 실패하게됩니다. SSPI는 실패하지 않았지만 메모리가 누수되었습니다.
psql에서 키보드 EOF 신호로 COPY FROM STDIN이 종료되고 다른 COPY FROM STDIN이 시도 될 때 오류를 수정합니다 (Thomas Munro).이 오작동은 BSD 기반 플랫폼 (macOS 포함)에서 관찰되었지만 대부분의 경우에는 발생하지 않았습니다.
REFRESH MATERIALIZED VIEW 명령을 마지막으로 방출하도록 pg_dump 및 pg_restore 수정. (Tom Lane)
이렇게하면 구체화 된 뷰가 다른 사용자가 소유 한 테이블을 참조 할 때 덤프 / 복원 중 오류를 방지 할 수 있습니다.
zlib (Vladimir Kunschikov, Alvaro Herrera)에서 시작된 오류 조건에 대한 pg_dump / pg_restore의보고 개선
--clean 옵션을 사용하여 pg_dump를 수정하여 예상대로 이벤트 트리거를 삭제하십시오 (Tom Lane).
또한 이제는 이벤트 트리거의 소유권을 올바르게 할당합니다. 이전에는 복원 스크립트를 실행하는 수퍼 유저가 소유 한 것으로 복원되었습니다.
공개 스키마가 존재하지 않을 때 --clean 옵션을 사용하여 pg_dump가 실패하지 않도록 수정했습니다 (Stephen Frost).
빈 연산자 클래스에 대해 유효하지 않은 SQL을 방출하지 않도록 pg_dump 수정 (Daniel Gustafsson)
Windows에서 pg_dump 출력을 stdout으로 수정했습니다 (Kuntal Ghosh).
stdout에 작성된 압축 된 일반 텍스트 덤프에는 파일 설명자가 이진 모드로 설정되지 않아 손상된 데이터가 포함됩니다.
열의 이름이 변경된 뷰의 ON SELECT 규칙에 대한 올바른 출력을 인쇄하도록 pg_get_ruledef () 수정 (Tom Lane)어떤 경우에는 pg_dump가 pg_get_ruledef ()를 사용하여 뷰를 덤프하므로이 오류로 인해 덤프 / 재로드 오류가 발생할 수 있습니다.
일반적인 열이없는 NATURAL LEFT JOIN의 결과와 같이 빈 제한 조건을 사용하여 외부 조인의 덤프 수정 (Tom Lane)
표현식이 함수 호출과 같은 것으로 분해되지 않는 경우 FROM 절에서 함수 표현식의 덤프 수정 (Tom Lane)
Windows에서 pg_basebackup 출력을 stdout으로 수정합니다 (Haribabu Kommi).
stdout에 기록 된 백업에는 파일 디스크립터를 2 진 모드로 설정하지 않아 손상된 데이터가 포함됩니다.
pg_rewind가 2GB를 초과하는 파일을 올바르게 처리하도록 수정했습니다 (Kuntal Ghosh, Michael Paquier).
일반적으로 이러한 파일은 PostgreSQL 데이터 디렉토리에 나타나지 않지만 일부 경우에 존재할 수 있습니다.
끝나는 WAL 레코드에 wal_level = minimum (Bruce Momjian)이 없도록 pg_upgrade 수정
이 조건은 업그레이드 된 대기 서버가 다시 연결되는 것을 막을 수 있습니다.
pg_xlogdump의 WAL 레코드 길이 계산 수정 (Andres Freund)
postgres_fdw에서 ALTER SERVER 또는 ALTER USER MAPPING 명령 (Kyotaro Horiguchi) 다음에 원격 서버에 대한 연결을 재설정합니다.

이렇게하면 연결 매개 변수에 영향을 미치는 옵션 변경 사항이 즉시 적용됩니다.
postgres_fdw에서 원격 트랜잭션 제어 명령 취소 허용 (Robert Haas, Rafia Sabih)
이 변경으로 이전보다 훨씬 많은 경우에 응답이없는 원격 서버에 대한 대기 시간을 신속하게 피할 수있었습니다.
확장을위한 더 많은 공간을 제공하기 위해 MAX_SYSCACHE_CALLBACKS 늘리기 (Tom Lane)
gcc (Tom Lane)와 공유 라이브러리를 만들 때 항상 -fpic이 아닌 -fPIC을 사용하십시오.
이것은 차이점을 만드는 플랫폼에서 더 큰 확장 라이브러리를 지원합니다.
MSVC 빌드에서는 openssl 라이브러리가 VC 하위 디렉토리에 있지 않은 경우를 처리합니다 (Andrew Dunstan).
MSVC 빌드에서 libxml2 헤더 파일 (Andrew Dunstan)의 적절한 include 경로를 추가합니다.
이것은 표준 Windows 설치 libxml2에서 물건을 옮기는 이전의 필요성을 수정합니다.
MSVC 빌드에서는 tcl86.lib라는 이름의 Tcl 라이브러리를 인식합니다 (Noah Misch).
MSVC 빌드에서는 vcregress.pl의 명령 줄 (Andrew Dunstan)에 PROVE_FLAGS 설정을 적용합니다.

버전 9.6.4의 새로운 기능 :

pg_user_mappings.umoptions의 가시성을 더욱 제한하여 사용자 매핑 옵션으로 저장된 비밀번호를 보호 할 수 있습니다 (Noah Misch).
CVE-2017-7486에 대한 수정은 잘못되었습니다. 관련 외부 서버에 대한 USAGE 권한이없는 경우에도 사용자가 자신의 사용자 매핑에서 옵션을 볼 수있었습니다. 이러한 옵션에는 사용자가 아닌 서버 소유자가 제공 한 암호가 포함될 수 있습니다. 이 경우에는 information_schema.user_mapping_options에 옵션이 표시되지 않으므로 pg_user_mappings도 포함되지 않아야합니다. (CVE-2017-7547)
이 패치 자체만으로는 새롭게 initdb 된 데이터베이스의 동작을 수정합니다. 이 변경 사항을 기존 데이터베이스에 적용하려면 다음을 수행해야합니다.
postgresql.conf에 allow_system_table_mods = true를 추가 한 후 전자 메일 관리자를 다시 시작합니다. (ALTER SYSTEM을 지원하는 버전에서는이를 사용하여 구성을 변경할 수 있지만 다시 시작해야합니다.)
클러스터의 각 데이터베이스에서 수퍼 유저로 다음 명령을 실행합니다.
SET search_path = pg_catalog;
만들기 또는 바꾸기 pg_user_mappings보기
고르다
U.oid AS umid,
S.oid AS srvid,
S.srvname AS srvname,U.umuser AS umuser,
경우 U.umuser = 0 그때
'공공의'
그밖에
A.rolname
끝으로 usename,
CASE WHEN (U.umuser 0 및 A.rolname = current_user
AND (pg_has_role (S.srvowner, 'USAGE')
또는 has_server_privilege (S.oid, 'USAGE')))
OR (U.umuser = 0 AND pg_has_role (S.srvowner, 'USAGE'))
OR (SELECT rolsuper FROM pg_authid where rolname = current_user)
그럼 U.umoptions
ELSE NULL 끝으로서의 Uumoptions
FROM pg_user_mapping U
LEFT JOIN pg_authid A ON (A.oid = U.umuser) JOIN
pg_foreign_server S ON (U.umserver = S.oid);
template0 및 template1 데이터베이스를 포함하는 것을 잊지 마십시오. 그렇지 않으면 나중에 생성하는 데이터베이스에도 취약점이 존재하게됩니다. template0을 수정하려면 임시로 연결을 수락해야합니다. PostgreSQL 9.5 및 이후 버전에서는
ALTER DATABASE template0 WITH ALLOW_CONNECTIONS가 true입니다.
그런 다음 template0을 고정한 후
ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;
이전 버전에서는
UPDATE pg_database SET datallowconn = true 어디 datname = 'template0';UPDATE pg_database SET datallowconn = false 어디 datname = 'template0';
마지막으로 allow_system_table_mods 구성 설정을 제거한 다음 전자 메일 관리자를 다시 시작합니다.
모든 암호 기반 인증 방법에서 빈 암호 허용 안 함 (Heikki Linnakangas)
libpq는 빈 암호 사양을 무시하고 서버로 전송하지 않습니다. 따라서 사용자의 암호가 빈 문자열로 설정된 경우 psql 또는 다른 libpq 기반 클라이언트를 통해 해당 암호로 로그인 할 수 없습니다. 따라서 관리자는 암호를 비어있는 것으로 설정하는 것이 암호 로그인을 사용 불가능하게하는 것과 동일하다고 생각할 수 있습니다. 그러나 수정되거나 비 libpq 기반 클라이언트를 사용하면 구성된 인증 방법에 따라 로그인 할 수 있습니다. 특히 가장 일반적인 방법 인 md5는 빈 암호를 허용했습니다. 어떤 경우에도 빈 암호를 거부하도록 서버를 변경하십시오. (CVE-2017-7546)
lo_put ()을 대상 대형 객체에 대한 UPDATE 권한 확인 (Tom Lane, Michael Paquier)
lo_put ()은 반드시 lowrite ()와 동일한 권한을 요구해야하지만, 검사가 누락되어 모든 사용자가 대형 객체의 데이터를 변경할 수 있습니다. (CVE-2017-7548)pg_upgrade (Bruce Momjian)를 사용하여 대기 서버 업그레이드 프로세스에 대한 설명서를 수정하십시오.
이전 문서에서는 pg_upgrade를 실행 한 후 주 서버를 동기화하기 전에 사용자에게 주 서버를 시작 / 중지하도록 지시했습니다. 이 순서는 안전하지 않습니다.
튜플 업데이트 체인 (Alvaro Herrera)의 동시 잠금 수정
여러 세션이 이전 스냅 샷을 사용하여 비공유 잠금 모드로 튜플 업데이트 체인을 동시에 잠그고 모두 성공하면 경쟁 조건으로 인해 일부 세션이 실패 (라이브 튜플 버전이 없다고 결론 내릴 수 있음) 할 수도 있습니다. 이것은 외래 키 검사가 확실히 존재하지만 동시에 업데이트되는 튜플을 보지 못하는 것과 같은 결과를 낳습니다.
터득한 XMAX가 아직도 하나의 흥미로운 멤버 (Teodor Sigaev)와 함께 다중 소스 인 튜플을 고정시킬 때 잠재적 인 데이터 손상을 수정합니다.
메모리에 10 억 개 이상의 튜플을 정렬 할 때 정수 오버플로 및 충돌 발생 방지 (Sergey Koposov)
Windows에서 새 프로세스에서 공유 메모리의 주소 범위를 예약하지 못하면 프로세스 생성을 다시 시도하십시오 (Tom Lane, Amit Kapila).이로 인해 바이러스 백신 제품의 간섭으로 인해 발생하는 자식 프로세스 실행 오류가 자주 발생하지 않을 것으로 예상됩니다.
Windows 빌드에서 공유 프리디 케이트 잠금 해시 테이블의 확률이 낮은 손상을 수정했습니다 (Thomas Munro, Tom Lane).
SSL 연결이 마치 연결 재설정 인 것처럼 깨끗하게 닫히지 않게하십시오 (Michael Paquier).
클라이언트에게 SSL 세션 티켓 보내기 방지 (Tom Lane)
이 수정은 티켓 인식 클라이언트 쪽 SSL 코드로 재 연결 실패를 방지합니다.
Solaris에서 tcp_keepalives_idle 설정 코드 수정 (Tom Lane)
포스트 마스터 종료 후 즉각적인 재시작 직후에 발행 된 질의 메시지를 수호하기 위해 통계 수집기를 수정했습니다. (Tom Lane)
이전 포스트 마스터 종료 중 0.5 초 이내에 발급 된 통계 조사는 사실상 무시되었습니다.
통계 수집기의 수신 버퍼 크기가 100KB 이상인지 확인하십시오 (Tom Lane).
이렇게하면 기본 수신 버퍼 크기가 그보다 작은 이전 플랫폼에서 통계 데이터가 삭제 될 위험이 줄어 듭니다.
XLOG_SWITCH WAL 레코드 (Andres Freund)를 처리 한 직후에 스탠바이가 승격 될 때 잘못된 WAL 세그먼트 생성 가능클라이언트 요청이 종료되면 즉시 종료하도록 walsender 수정 (Tom Lane)
walsender 프로세스에서 SIGHUP 및 SIGUSR1 처리를 수정합니다 (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 이전에 추정 된 방식으로 되돌립니다.
INSERT 또는 UPDATE가 도메인 오버 배열 유형 인 열의 둘 이상의 요소에 할당되는 문제 수정 (Tom Lane)
집계 함수의 인수 내에있는 하위 SELECT에서 창 함수를 사용할 수 있음 (Tom Lane)
기본 테이블이 외부 테이블 인 경우 뷰의 CHECK OPTIONS 절이 올바르게 적용되는지 확인하십시오 (Fujitsu Etsuro)
이전에는 업데이트가 완전히 외부 서버로 푸시 될 수 있었지만 뷰 조건을 확인해야하는 경우이를 놓쳤습니다.
ALTER ... RENAME (Vik Fearing) 중에 자동 생성 된 배열 유형을 방해하지 않습니다.
이전에는 CREATE 중에 충돌하는 자동 생성 된 배열 유형의 이름을 바꿨습니다. 이 수정은 해당 동작을 이름 변경 작업으로 확장합니다.
테이블에 속한 제약 조건에 주석이있을 때 ALTER TABLE에서 매달린 포인터를 수정합니다 (David Rowley).재구성 된 제약 조건에 주석을 다시 적용하면 이상한 오류 메시지가 나타나거나 심지어 충돌 할 수 있습니다.
ALTER USER ... SET이 ALTER ROLE ... SET가 수행하는 모든 구문 변형을 허용하는지 확인하십시오 (Peter Eisentraut)
외부 테이블의 CHECK 제약 조건이 처음에는 유효하지 않음 (Amit Langote)
CREATE TABLE은 CHECK 제약 조건에 대한 NOT VALID 지정자를 자동으로 삭제하므로 제약 조건을 즉시 확인할 수 있도록 테이블이 비어 있어야한다고 판단합니다. 그러나 이것이 CREATE FOREIGN TABLE에있어 잘못된 것입니다. 기본 테이블이 비어 있다고 가정 할 이유가 없으며 제약 조건이 앞으로 유효한 것으로 간주 될 수 있다고 결정하는 것이 우리에게 아무런 소용이 없습니다. 외부 테이블에 대해이 "최적화"를 건너 뜁니다.
데이터 유형 I / O 함수의 인수 또는 반환 유형을 불투명에서 올바른 유형으로 변경할 때 종속성 정보를 올바르게 업데이트하십시오 (Heikki Linnakangas).
CREATE TYPE은이 오랫동안 사용되지 않는 스타일로 선언 된 I / O 함수를 업데이트하지만, 형식에 대한 종속성을 기록하는 것을 잊었으므로 후속 DROP TYPE이 깨진 함수 정의를 남겨 둘 수 있습니다.
쿼리 결과에서 COPY가 복사 될 때 쿼리 계획에 병렬 처리 허용 (Andres Freund)ANALYZE가 tsvector 열을 처리 할 때 메모리 사용을 줄입니다 (Heikki Linnakangas).
정수 또는 부동 소수점으로 돈 값을 곱하거나 나눌 때 불필요한 정밀도 손실 및 부실 라운딩 수정 (Tom Lane)
regprocedurein ()과 같이 식별자를 구문 분석하는 함수의 공백 검사를 강화했습니다 (Tom Lane).
널리 사용되는 로켈에 따라 이러한 함수는 멀티 바이트 문자 조각을 공백으로 오해 할 수 있습니다.
PL / Perl 컴파일시 Perl에서 관련 #define 심볼 사용 (Ashutosh Sharma, Tom Lane)
이렇게하면 최근 Perl 버전에서 작업 할 때 일반적으로 라이브러리로드 중에 "핸드 셰이크"불일치로 나타나는 이식성 문제를 피할 수 있습니다.
libpq에서 실패한 연결 시도 후에 GSS / SASL 및 SSPI 인증 상태를 올바르게 재설정하십시오 (Michael Paquier).
이렇게하지 않으면 SSL에서 비 SSL 연결로 폴백 할 때 SSL 시도의 GSS / SASL 오류로 인해 항상 비 SSL 시도가 실패하게됩니다. SSPI는 실패하지 않았지만 메모리가 누수되었습니다.
psql에서 키보드 EOF 신호로 COPY FROM STDIN이 종료되고 다른 COPY FROM STDIN이 시도 될 때 오류를 수정합니다 (Thomas Munro).이 오작동은 BSD 기반 플랫폼 (macOS 포함)에서 관찰되었지만 대부분의 경우에는 발생하지 않았습니다.
REFRESH MATERIALIZED VIEW 명령을 마지막으로 방출하도록 pg_dump 및 pg_restore 수정. (Tom Lane)
이렇게하면 구체화 된 뷰가 다른 사용자가 소유 한 테이블을 참조 할 때 덤프 / 복원 중 오류를 방지 할 수 있습니다.
zlib (Vladimir Kunschikov, Alvaro Herrera)에서 시작된 오류 조건에 대한 pg_dump / pg_restore의보고 개선
--clean 옵션을 사용하여 pg_dump를 수정하여 예상대로 이벤트 트리거를 삭제하십시오 (Tom Lane).
또한 이제는 이벤트 트리거의 소유권을 올바르게 할당합니다. 이전에는 복원 스크립트를 실행하는 수퍼 유저가 소유 한 것으로 복원되었습니다.
공개 스키마가 존재하지 않을 때 --clean 옵션을 사용하여 pg_dump가 실패하지 않도록 수정했습니다 (Stephen Frost).
빈 연산자 클래스에 대해 유효하지 않은 SQL을 방출하지 않도록 pg_dump 수정 (Daniel Gustafsson)
Windows에서 pg_dump 출력을 stdout으로 수정했습니다 (Kuntal Ghosh).
stdout에 작성된 압축 된 일반 텍스트 덤프에는 파일 설명자가 이진 모드로 설정되지 않아 손상된 데이터가 포함됩니다.
열의 이름이 변경된 뷰의 ON SELECT 규칙에 대한 올바른 출력을 인쇄하도록 pg_get_ruledef () 수정 (Tom Lane)어떤 경우에는 pg_dump가 pg_get_ruledef ()를 사용하여 뷰를 덤프하므로이 오류로 인해 덤프 / 재로드 오류가 발생할 수 있습니다.
일반적인 열이없는 NATURAL LEFT JOIN의 결과와 같이 빈 제한 조건을 사용하여 외부 조인의 덤프 수정 (Tom Lane)
표현식이 함수 호출과 같은 것으로 분해되지 않는 경우 FROM 절에서 함수 표현식의 덤프 수정 (Tom Lane)
Windows에서 pg_basebackup 출력을 stdout으로 수정합니다 (Haribabu Kommi).
stdout에 기록 된 백업에는 파일 디스크립터를 2 진 모드로 설정하지 않아 손상된 데이터가 포함됩니다.
pg_rewind가 2GB를 초과하는 파일을 올바르게 처리하도록 수정했습니다 (Kuntal Ghosh, Michael Paquier).
일반적으로 이러한 파일은 PostgreSQL 데이터 디렉토리에 나타나지 않지만 일부 경우에 존재할 수 있습니다.
끝나는 WAL 레코드에 wal_level = minimum (Bruce Momjian)이 없도록 pg_upgrade 수정
이 조건은 업그레이드 된 대기 서버가 다시 연결되는 것을 막을 수 있습니다.
pg_xlogdump의 WAL 레코드 길이 계산 수정 (Andres Freund)
postgres_fdw에서 ALTER SERVER 또는 ALTER USER MAPPING 명령 (Kyotaro Horiguchi) 다음에 원격 서버에 대한 연결을 재설정합니다.이렇게하면 연결 매개 변수에 영향을주는 옵션 변경 사항이 즉시 적용됩니다.
postgres_fdw에서 원격 트랜잭션 제어 명령 취소 허용 (Robert Haas, Rafia Sabih)
이 변경으로 이전보다 훨씬 많은 경우에 응답이없는 원격 서버에 대한 대기 시간을 신속하게 피할 수있었습니다.
확장을위한 더 많은 공간을 제공하기 위해 MAX_SYSCACHE_CALLBACKS 늘리기 (Tom Lane)
gcc (Tom Lane)와 공유 라이브러리를 만들 때 항상 -fpic이 아닌 -fPIC을 사용하십시오.
이것은 차이점을 만드는 플랫폼에서 더 큰 확장 라이브러리를 지원합니다.
MSVC 빌드에서는 openssl 라이브러리가 VC 하위 디렉토리에 있지 않은 경우를 처리합니다 (Andrew Dunstan).
MSVC 빌드에서 libxml2 헤더 파일 (Andrew Dunstan)의 적절한 include 경로를 추가합니다.
이것은 표준 Windows 설치 libxml2에서 물건을 옮기는 이전의 필요성을 수정합니다.
MSVC 빌드에서는 tcl86.lib라는 이름의 Tcl 라이브러리를 인식합니다 (Noah Misch).
MSVC 빌드에서는 vcregress.pl의 명령 줄 (Andrew Dunstan)에 PROVE_FLAGS 설정을 적용합니다.

유사한 소프트웨어

MySQL Sandbox
MySQL Sandbox

20 Feb 15

GT.M
GT.M

18 Feb 15

Qercus
Qercus

14 Apr 15

코멘트 PostgreSQL

댓글을 찾을 수 없습니다
코멘트를 추가
이미지를 켜십시오!