E.4. 릴리스 17.3#

출시일: 2025-02-13

이 릴리스에는 17.2의 다양한 젠 토토 사항이 포함되어 있습니다. 주요 릴리스 17의 새로운 기능에 대한 자세한 내용은 다음을 참조하세요.스포츠 토토 베트맨 PostgreSQL : 문서 : 17 : E.5. 릴리스 17.

E.4.1. 버전 17.3으로 마이그레이션#

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

그러나 17.1 이전 버전에서 업그레이드하는 경우 참조PostgreSQL : 문서 : 17 : E.4. 토토 17.1.

E.4.2. 변경사항#

  • 강화PQescapeString및 잘못 인코딩된 입력 문자열에 대한 관련 함수(Andres Freund, Noah Misch)§ § § § § §

    다음에서 제공하는 데이터 인용 기능libpq이제 입력의 인코딩 유효성을 완전히 확인합니다. 유효하지 않은 문자가 감지되면 가능하면 오류를 보고합니다. 오류 반환 규칙이 없는 경우 출력 문자열은 서버가 잘못된 인코딩을 보고하고 작은따옴표, 백슬래시 등과 일치하는 바이트에 의해 중간 처리가 속지 않도록 조정됩니다.

    이 변경의 목적은 이러한 함수 중 하나가 조작된 입력을 인용하는 데 사용될 경우 발생할 수 있는 SQL 주입 공격으로부터 보호하는 것입니다. 결과 문자열이 a로 직접 전송되면 위험이 없습니다.포스트그레SQL서버(어쨌든 인코딩을 확인하지만)를 통과할 때 위험이 있습니다.psql또는 기타 클라이언트측 코드. 역사적으로 이러한 코드는 인코딩을 주의 깊게 조사하지 않았으며 많은 경우 이러한 문제를 감지한 경우 어떻게 해야 하는지 명확하지 않습니다.

    이 젠 토토은 데이터 인용 기능, 서버 및 중간 처리가 사용 중인 문자 인코딩에 동의하는 경우에만 효과적입니다. 신뢰할 수 없는 입력을 SQL 명령에 삽입하는 애플리케이션은 이것이 사실인지 확인하기 위해 특별한 주의를 기울여야 합니다.

    이것을 사용하지 않고 신뢰할 수 없는 입력을 인용하는 애플리케이션 및 드라이버libpq함수에도 비슷한 문제가 발생할 위험이 있습니다. 먼저 서버에서 예상하는 인코딩에서 데이터가 유효한지 확인해야 합니다.

    포스트그레SQL프로젝트는 이 문제를 보고한 Stephen Fewer에게 감사드립니다. (CVE-2025-1094)

  • 연결 요청에 나타나는 데이터베이스 및 사용자 이름의 자동 잘림 복원(Nathan Bossart)§

    이것은 일부 사용자에게 문제를 일으키는 것으로 입증된 v17 변경 사항을 되돌립니다. 길이가 긴 이름은 인코딩 인식 방식으로 잘려야 하지만 지금은 이전의 블라인드 잘림 동작으로 돌아갑니다.NAMEDATALEN-1바이트.

  • 연결 권한 확인 및 제한에서 병렬 작업자 제외(Tom Lane)§

    확인하지 마세요데이타로우콘, rolcanlogin그리고ACL_CONNECT병렬 작업자를 시작할 때 리더 프로세스가 원래 유사한 검사를 통과하는 것으로 충분하다고 가정하는 대신에 권한을 부여합니다. 예를 들어, 리더가 로그인 권한이 없는 역할로 실행 중일 때 병렬 쿼리의 예기치 않은 실패를 방지합니다. 같은 맥락에서 시행ReservedConnections, datconnlimitrolconnlimit일반 백엔드에 대해서만 제한하며, 제한에 이미 도달했는지 확인하면서 일반 백엔드만 계산합니다. 이러한 한도는 일반 백엔드에 대한 프로세스 슬롯의 과도한 소비를 방지하기 위한 것입니다. 하지만 병렬 작업자 및 기타 특수 프로세스에는 자체 한도 확인 기능이 있는 자체 프로세스 슬롯 풀이 있습니다.

  • 드롭잠금LWLock 대기 이벤트 이름의 접미사(Bertrand Drouvot)§

    리팩토링으로 인해 의도치 않게 다음이 발생했습니다.pg_stat_activity잠금 관련 대기 이벤트 이름을 표시하는 보기잠금접미사, 특히 결합이 중단됨pg_wait_events.

  • ScalarArrayOp를 사용하여 btree 인덱스 스캔에 대해 일치하는 모든 튜플을 반환하지 못할 가능성이 있는 문제 젠 토토(= 모두) 조건(Peter Geoghegan)§

  • 창 집계에서 오래된 결과의 재사용 가능성 젠 토토(David Rowley)§

    창 집계는실행 조건최적화 및 참조별 결과 유형은 새로운 계산을 수행하는 대신 이전 파티션의 결과를 잘못 반환할 수 있습니다.

  • 계속TransactionXmin동기화됨내프록-xmin(헤이키 린나캉가스)§

    이러한 감독으로 인해 프로세스는 이미 제거된 데이터에 액세스하려고 시도할 수 있습니다. 알려진 결과 중 하나는 일시적입니다.거래 상태에 접근할 수 없습니다.오류.

  • 새로 삽입된 카탈로그 항목을 카탈로그 캐시 목록에 추가하는 데 실패할 수 있는 경쟁 조건 젠 토토(Heikki Linnakangas)§

    예를 들어 이로 인해 기존 세션 내에서 새로 생성된 기능을 사용하지 못하는 결과가 발생할 수 있습니다.

  • 업데이트와 동시에 시스템 카탈로그를 정리할 때 발생할 수 있는 카탈로그 손상 방지(Noah Misch)§ §

  • 관계 잘림 실패 시 데이터 손상 젠 토토(토마스 먼로)§ § §

    관계 자르기를 수행하는 데 필요한 파일 시스템 호출이 실패하여 디스크에 일관되지 않은 상태가 남을 수 있습니다(예: 삭제된 데이터를 효과적으로 되살리는 경우). 실제로 이를 방지할 수는 없지만 이러한 실패를 PANIC으로 만들어 복구할 수 있으므로 WAL에서 잘림 시도 직전까지 재생하여 일관성이 복원됩니다. 이는 매우 바람직한 동작은 아니지만 이러한 실패는 허용 가능한 해결책으로 보일 만큼 드물습니다.

  • 관계 잘림 중 체크포인트 시작 방지(로버트 하스)§

    이것은 젠 토토된 파일이 검사점을 완료하기 전에 fsync가 이루어지지 않아 운영 체제가 곧 충돌할 경우 데이터 손상 위험을 초래하는 경쟁 조건을 방지합니다.

  • 업데이트 손실 가능성 방지pg_database.datfrozenxid언제진공a와 동시에 실행됩니다.소유 재지정해당 데이터베이스의 소유자를 변경합니다(Kirill Reshke)§

  • 잘못 젠 토토tg_updatedcols값이 전달됨업데이트 후트리거(톰 레인)§

    어떤 경우에는tg_updatedcols비트맵은 동일한 트랜잭션의 이전 명령으로 업데이트된 열 집합을 설명하여 트리거를 속여 잘못된 작업을 수행할 수 있습니다.

    또한 너무 많은 복사본을 만들어서 발생하는 메모리 팽창을 방지합니다.tg_updatedcols비트맵.

  • 파티션된 테이블을 참조하는 자체 외래 키 제약 조건이 있는 파티션 분리 젠 토토(Amul Sul)§

    일반적인 경우, 외래 키는 분할된 테이블의 최상위 수준에서 정의됩니다. 하지만 대신 파티션에 하나가 정의되어 파티션된 테이블을 참조하고 참조 파티션이 분리된 경우 관련pg_constraint항목이 잘못 업데이트되었습니다. 이로 인해 다음과 같은 오류가 발생했습니다.외래 키 제약 조건의 ON INSERT 검사 트리거를 찾을 수 없습니다..

  • 젠 토토pg_get_constraintdef님의 지원NULL이 아님도메인 제약조건(Álvaro Herrera)§

  • 잘못된 처리 젠 토토to_timestamp'sFFn형식 코드(톰 레인)§

    바로 앞의 정수 형식 코드FFn사용 가능한 모든 숫자를 소비하고 아무것도 남기지 않을 것입니다.FFn.

  • a를 출발할 때통과SQL/JSON 쿼리 함수의 절, 필요한 경우 변수 이름을 큰따옴표로 묶었는지 확인하세요(Dean Rasheed)§

  • 해체할 때XMLTABLE()식, 필요한 경우 XML 네임스페이스 이름을 큰따옴표로 묶었는지 확인하세요(Dean Rasheed)§

  • 포함ldapscheme옵션 포함pg_hba_file_rules()출력(로렌츠 알베)§ §

  • 미리 정렬된 계획 젠 토토유니온입력 열 데이터 유형이 모두 일치하지 않는 경우의 작업(David Rowley)§

    이 오류는 잘못된 정렬 연산자를 사용하여 데이터를 정렬하는 결과를 초래할 수 있으며, 그 결과는 눈에 띄는 문제가 없는 것부터 코어 덤프까지 다양합니다.

  • 병합하지 마세요유니온열 데이터 정렬이 일관되지 않은 경우의 작업(Tom Lane)§

    이전에는 병합해도 안전한지 결정할 때 데이터 정렬을 무시했습니다.유니온단일 N 방향으로 들어갑니다유니온작동. 이는 비결정적 데이터 정렬이 도입되기 전에는 틀림없이 유효했지만 사용 중인 데이터 정렬이 고유성의 정의에 영향을 미칠 수 있으므로 더 이상 유효하지 않습니다.

  • 방지잘못된 varnullingrels외부 조인 아래에 있는 하위 쿼리를 가져온 후 플래너 오류 발생(Tom Lane)§ §

  • 통계를 찾을 때 널링 관계 마커 비트 무시(Richard Guo)§

    이러한 감독으로 인해 표현식에 대한 관련 통계를 사용하지 못하게 되거나 다음으로 이어질 수 있습니다.손상된 MVNDistinct 항목오류.

  • 파티션 정리 단계에서 누락된 표현식 처리 젠 토토(Tom Lane)§

    이러한 감독으로 인해 다음이 발생할 수 있습니다.인식할 수 없는 노드 유형파티션을 나눈 테이블에 액세스하는 쿼리에서 오류 및 기타 문제가 발생할 수 있습니다.

  • slotsync 작업자 프로세스에 자체 프로세스 슬롯 제공 (Tom Lane, Hou Zhijie)§

    slotsync 작업자를 추가할 때 이는 간과되었으며 그 결과 해당 프로세스 슬롯이 일반 백엔드 프로세스용 풀에서 효과적으로 나왔습니다. 이로 인해 작업자 실행이 실패하거나, 일반 백엔드 프로세스 수가 접근한 경우 구성된 설정에 따라 성공했어야 하는 연결 요청이 후속적으로 실패할 수 있습니다.max_connections.

  • dshash 테이블이 1GB를 초과하도록 허용(Matthias van de Meent)§

    이것은 다음과 같은 오류를 방지합니다잘못된 DSA 메모리 할당 요청 크기. 예를 들어 수백만 개의 테이블을 처리하는 트랜잭션에서 이러한 사례가 발생할 수 있습니다.

  • 가능한 정수 오버플로를 방지하세요bringetbitmap()(제임스 헌터, 예브게니 고르바뇨프)§

    결과는 통계 목적으로만 사용되므로 이 오류의 효과는 대부분 미용적이었습니다.

  • SLRU 은행 번호의 잘못된 계산 젠 토토(Yura Sokolov)§

    이 오류로 인해 의도한 것보다 적은 수의 뱅크를 사용하게 되어 더 많은 경합이 발생했지만 기능적 오작동은 발생하지 않았습니다.

  • 이미 설정된 프로세스 래치가 포스트마스터가 소켓 이벤트를 인지하는 것을 방해하지 않는지 확인하십시오(토마스 먼로)§

    워커를 시작하고 작업자를 종료하는 백엔드의 워크로드가 극도로 과중하면 포스트마스터가 들어오는 클라이언트 연결에 적시에 응답하지 못할 수 있습니다.

  • 페이지를 교차하는 WAL 레코드를 읽을 때 스트리밍 대기 서버가 무한 루프되는 것을 방지합니다(Kyotaro Horiguchi, Alexander Kukushkin)§

    이것은 레코드의 연속이 다른 WAL 소스에서 읽어야 하는 페이지에 있을 때 발생합니다.

  • 초기 프로세스 시작 중 의도치 않게 FATAL 오류가 PANIC으로 승격되는 문제 젠 토토(Noah Misch)§

    이것은 다음과 같은 결과가 발생할 가능성이 낮은 경우를 젠 토토합니다.패닉: 하위 프로세스에서 proc_exit()가 호출되었습니다..

  • 운영자 가족 구성원 운영자 또는 지원 절차가 매달린 참조가 될 수 있는 사례 젠 토토(Tom Lane)§ §

    어떤 경우에는 OID에 대한 참조가 여전히 남아 있는 동안 데이터 유형이 삭제될 수 있습니다.pg_amop또는pg_amproc. 이로 인해 즉각적인 문제가 발생하지는 않았지만 소유 운영자 계열을 삭제하려는 시도는 실패합니다.pg_dump연산자 계열을 덤프할 때 가짜 출력이 생성됩니다. 이 젠 토토 사항으로 인해 연산자 계열/클래스를 생성하고 젠 토토하여 필요한 종속성 항목을 추가할 수 있으므로 데이터 유형을 삭제하면 종속 연산자 계열 요소도 함께 삭제됩니다. 하지만 이는 취약한 기존 운영자 가족에게는 도움이 되지 않으므로 반창고도 추가되었습니다.드롭 운영자 제품군매달린 구성원이 있는 가족을 삭제할 때 실패를 방지합니다.

  • 논리적 디코딩 출력에서 ​​여러 메모리 누수 젠 토토(Vignesh C, Masahiko Sawada, Boyu Yang)§ § §

  • 업데이트 시 작은 메모리 누수 젠 토토응용프로그램_이름또는클러스터_이름설정(토피그 알리예프)§

  • 백그라운드 프로세스가 새 값을 확인하려고 할 때 충돌 방지synchronized_standby_slots(알바로 에레라)§

  • 테스트 중 정수 오버플로 방지wal_skip_threshold조건 (톰 레인)§

    매우 큰 관계를 생성한 트랜잭션은 fsync'하는 대신 WAL에 관계를 복사하여 내구성을 보장하기로 실수로 결정하여 요점을 무효화할 수 있습니다.wal_skip_threshold. (이것은 언제에만 중요합니다.wal_level다음으로 설정됨최소, 그렇지 않으면 어쨌든 WAL 사본이 필요합니다.)

  • 캐시 조회 중 안전하지 않은 작업 순서 젠 토토(Noah Misch)§

    유일하게 알려진 결과는 일반적으로 무해한 것이었습니다.귀하는 ExclusiveLock 유형의 잠금 장치를 소유하고 있지 않습니다.경고 중그랜트 테이블스페이스.

  • 병렬 진공에서 사용 후 잠재적 사용 방지(Vallimaharajan G, John Naylor)§

    이 버그는 표준 빌드에 아무런 영향을 미치지 않는 것처럼 보이지만 이론적으로는 위험합니다.

  • 젠 토토 가능이름 확인 실패이전 ARM 플랫폼에서 JIT를 사용할 때 실패함(Thomas Munro)§

    이는 기본 설정에 대한 불일치로 인해 발생할 수 있습니다.-moutline-atomicsgcc와 clang 사이. 최소한 Debian과 Ubuntu는 armv8-a를 대상으로 하는 gcc 및 clang 컴파일러를 제공하는 것으로 알려져 있지만 기본적으로 개요 원자 사용이 다릅니다.

  • 어설션 실패 젠 토토재귀적 ... UNION쿼리(데이비드 로울리)§

  • 집합 연산 리프 쿼리에 집합 연산이 포함된 경우 규칙 분석에서 어설션 실패 방지(Man Zeng, Tom Lane)§

  • 병렬 쿼리 시작 시 극단적인 사례 어설션 실패 방지(Tom Lane)§

  • 통계 파일을 작성할 때 종료 시 어설션 실패 젠 토토(Michael Paquier)§

  • 문자열 해싱 코드에 대한 valgrind 불만 방지(John Naylor)§

  • NULLIF(), 읽기-쓰기 확장 객체 포인터를 데이터 유형의 동등 함수에 전달하지 마십시오(Tom Lane)§

    균등 함수는 읽기-쓰기 포인터가 주어지면 객체를 젠 토토하거나 삭제할 수 있습니다. 우리가 그것을 반환하기로 결정하면 좋지 않을 것입니다.NULLIF()결과. 내장된 동등 함수에는 문제가 없을 수 있지만 PL/pgSQL로 코딩된 함수를 사용하면 실패를 쉽게 입증할 수 있습니다.

  • 표현식 사전 처리가 다음의 기본 null 값에 적용되는지 확인하세요.삽입(톰 레인)§

    대상 열이 도메인 유형인 경우 플래너는 null 상수뿐만 아니라 도메인 강제 변환 단계를 삽입해야 하며 이 표현식은 일부 필수 처리 단계를 거치지 않았습니다. 핵심 데이터 유형을 기반으로 하는 도메인에는 알려진 결과가 없지만 이론적으로 확장 유형을 기반으로 하는 도메인에서는 오류가 발생할 수 있습니다.

  • 이미 데이터가 포함된 관계 포크에서 대량 쓰기를 시작할 때 데이터 손실 방지(Matthias van de Meent)§

    기존 데이터는 0으로 덮어썼습니다. 이는 코어에는 문제가 되지 않습니다.포스트그레SQL, 절대 그렇게 하지 않습니다. 그러나 일부 확장 프로그램에서는 이를 원합니다.

  • 서버 프로세스가 자신이 생성하지 않은 공유 기수 트리를 반복하려고 시도하는 경우 충돌 방지 (Masahiko Sawada)§

    코어에 코드가 없습니다포스트그레SQL이 작업을 수행하지만 확장 프로그램이 원할 수도 있습니다.

  • PL/Python의 메모리 누수 복구(Mat Arye, Tom Lane)§

    반복적인 사용PLyPlan.execute또는plpy.cursorPL/Python 함수를 호출하는 동안 메모리 누수가 발생했습니다.

  • Tcl 9로 컴파일하도록 PL/Tcl 젠 토토(Peter Eisentraut)§

  • 에서ecpg전처리기, 범위를 벗어난 변수를 참조하는 커서의 잘못된 처리 가능성 젠 토토(Tom Lane)§

  • ecpg, 지원되지 않는 사용에 대한 컴파일 시간 경고 젠 토토STDIN에서 복사...(칸바야시 료)§

    이전에는 오타로 인해 의도한 경고가 발행되지 않았습니다.

  • 젠 토토psqlSJIS로 인코딩된 파일 경로 이름을 안전하게 처리하기 위해(Tom Lane)§

    SJIS의 일부 2바이트 문자에는 ASCII 백슬래시와 동일한 두 번째 바이트가 있습니다(\). 이러한 문자는 경로 이름 정규화로 인해 손상되어 이름에 해당 문자가 포함된 파일에 대한 액세스가 차단되었습니다.

  • 추가psql다음에 대한 탭 완성복사(병합)(허 지안)§

  • 잘못된 버전 사용 젠 토토pqsignal()inpgbench그리고psql(후지이 마사오, 톰 레인)§

    이 오류는 다음을 사용할 때 오작동을 일으킬 수 있습니다.-T옵션 포함pgbench또는\watch명령을 입력psql, 중단된 시스템 호출이 예상대로 재개되지 않기 때문입니다.

  • 일부 중첩된 잘못된 실행 젠 토토\if구성pgbench(미하일 니콜라예프)§

    \iffalse(실행되지 않음) 내에 나타나는 명령\if분기가 다음과 동일하게 잘못 처리되었습니다.\elif.

  • pgbench, 테이블 초기화 중 진행 메시지가 잘못 표시될 수 있는 문제 젠 토토(오기와라 유시, 이시이 타츠오, 후지이 마사오)§ §

  • 만들다pg_controldata손상에 대해 더욱 강력함pg_control파일 (Ilyasov Ian, Anton Voloshin)§

    이후pg_controldata다음 내용을 인쇄하려고 시도합니다pg_controlCRC 검사가 실패하더라도 유효하지 않은 필드 값으로 인해 오작동하지 않도록 주의해야 합니다. 이 패치는 유효하지 않은 타임스탬프와 음수로 보이는 WAL 세그먼트 크기로 인해 발생하는 일부 문제를 젠 토토합니다.

  • 충돌 가능성 젠 토토pg_dump확장 멤버인 테이블에 ID 시퀀스가 ​​첨부됨(Tom Lane)§

  • 메모리 누수 젠 토토pg_restorezstd 압축 데이터 사용(Tom Lane)§

    누출은 압축 해제 작업별로 발생하므로 많은 테이블이나 대형 개체가 포함된 덤프에서 가장 눈에 띄게 나타납니다.

  • 젠 토토pg_basebackup올바르게 처리하려면pg_wal.tarWindows에서 2GB를 초과하는 파일(Davinder Singh, Thomas Munro)§ §

  • 선언에 SQL 표준 함수 본문을 사용기여/지구 거리의 SQL 언어 함수(Tom Lane, Ronan Dunklau)§

    이 변경으로 다음을 참조할 수 있습니다.기여/큐브확장 프로그램 생성 중에 해결되어 검색 경로 기반 실패 및 공격 가능성의 위험을 줄입니다.

    특히 이는 생성된 열과 같은 컨텍스트에서 유용성을 복원합니다.PostgreSQLv17은 보안상의 이유로 검색 경로를 제한합니다. 이로 인해 데이터베이스를 v17로 업그레이드하지 못했다는 보고를 받았습니다. 이 패치는 해결 방법을 제공하기 위해 v16에 포함되었습니다.지구거리이 버전을 미리 확장하면 업그레이드가 성공할 수 있습니다.

  • 버전 불일치 감지기여/페이지검사의 SQL 선언 및 기본 공유 라이브러리(Tomas Vondra)§

    이전에는 이러한 불일치로 인해 호출하는 동안 충돌이 발생할 수 있었습니다.brin_page_items(). 대신 확장 프로그램 업데이트를 권장하는 오류가 발생합니다.

  • 에서 원격 쿼리를 취소하려고 할 때contrib/postgres_fdw, 아무것도 하지 않은 것 같으면 취소 요청을 몇 번 다시 발행하십시오(Tom Lane)§

    이것은 원격 서버가 처리를 시작하기 전에 방금 보낸 쿼리를 취소하려고 시도하여 초기 취소 요청이 무시되는 경쟁 조건을 젠 토토합니다.

  • ARM CRC 명령어에 액세스하는 데 필요한 컴파일러 스위치를 결정하는 구성 프로브 업데이트(Tom Lane)§

    기본 CPU 대상에 CRC 지침이 없는 ARM 플랫폼에서는 다음을 제공해야 합니다.-3월컴파일러가 이러한 명령어를 컴파일하도록 설득하는 스위치입니다. 최신 버전의 gcc는 우리가 시도한 가치를 거부하여 자동으로 소프트웨어 CRC로 되돌아갑니다.

  • Windows에서 이전 OpenSSL 라이브러리를 지원하도록 meson 빌드 시스템 젠 토토(Darek Slusarczyk)§

    레거시 라이브러리 이름에 대한 지원 추가sslea32그리고libeay32.

  • Meson을 사용하는 Windows 빌드에서는 모든 libcommon 및 libpgport 함수가 내보내졌는지 확인하세요(Vladlen Popolitov, Heikki Linnakangas)§ §

    이 젠 토토사항해결되지 않은 외부 기호확장에 대한 빌드 오류입니다.

  • OSSP를 올바르게 감지하기 위한 중간자 구성 프로세스 젠 토토uuid.hMSVC의 헤더 파일(Andrew Dunstan)§

  • 메손으로 구축할 때 설치pgeventpkglibdir아님bindir(피터 아이젠트라우트)§

    이것은 make 기반 빌드 시스템 및 이전 MSVC 빌드 시스템의 동작과 일치합니다.

  • 메손으로 구축할 때 설치sepgsql.sql아래공유/기부/아님공유/확장/(피터 아이젠트라우트)§

    이것은 make 기반 빌드 시스템의 기능과 일치합니다.

  • 다음으로 시간대 데이터 파일 업데이트tzdata파라과이의 DST 법률 변경 사항과 필리핀의 역사적 젠 토토 사항에 대한 2025a 릴리스(Tom Lane)§

젠 토토사항 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.