토토 커뮤니티 주간 뉴스 - 2021년 11월 14일

게시일2021-11-15작성: PWN
PWN

토토 커뮤니티 주간 뉴스 - 2021년 11월 14일

토토 커뮤니티 14.1, 13.5, 12.9, 11.14, 10.19 및 9.6.24토토 사이트 추천 : 토토 사이트 추천 14.1, 13.5, 12.9, 11.14, 10.19 및 9.6.24 release!. 이것은 9.6 시리즈의 마지막 릴리스이므로 업그레이드 계획을 아직 조치를 취하지 않으셨다면 조치를 취하세요.

토토 커뮤니티 제품 뉴스

Pgpool-II 4.3 beta1 연결 풀러 및 명령문 복제 시스템 포스트그레SQL,해제

토토 커뮤니티용 다중 스레드 연결 풀러인 Odyssey 1.2가 출시되었습니다. https://github.com/yandex/odyssey/releases

pgbouncer 1.16.1, 토토 커뮤니티용 연결 풀러 및 기타 기능,해제

11월 토토 커뮤니티 작업

https://archives.토토 커뮤니티.org/pgsql-jobs/2021-11/

뉴스의 토토 커뮤니티

플래닛 토토 커뮤니티:https://planet.토토 커뮤니티.org/

토토 커뮤니티 주간 뉴스는 David Fetter가 이번 주에 여러분에게 전해 드립니다.

뉴스 및 공지사항을 일요일 오후 3시(PST8PDT)까지 david@fetter.org로 제출하세요.

적용된 패치

David Rowley가 밀었습니다:

  • Memoize의 잘못된 해시 동등 연산자 버그를 수정했습니다. v14에서는 그렇지 않기 때문에 RestrictInfo에 왼쪽 및 오른쪽 유형의 해시를 모두 캐시하는 필드가 있습니다. 항등 연산자를 사용할 경우 Memoize의 범위를 왼쪽 항목으로만 제한합니다. RestrictInfo의 올바른 유형은 동일합니다. 마스터에서는 다른 것을 추가합니다 필드를 RestrictInfo로 설정하고 두 해시 동일 연산자를 모두 캐시합니다. 보고자: Jaime Casanova 저자: David Rowley 토론:https://postgr.es/m/20210929185544.GB24346%40ahch-to백패치 통과: 14https://git.토토 커뮤니티.org/pg/commitdiff/39a3105678a247bbfdc132cd95db5b515b8cd7f6

톰 레인이 밀렸습니다:

  • SSL 또는 GSS 암호화 핸드셰이크 후 외부 데이터를 거부합니다. 서버 클라이언트에서 데이터를 읽을 때마다 최대 버퍼로드의 데이터를 수집합니다. 소켓. 시작 시 SSL 또는 GSS 암호화가 요청되면 초기 요청 메시지와 함께 수신된 추가 데이터는 버퍼링되며 암호화가 완료되면 이미 해독된 데이터로 처리됩니다. 악수 완료. 따라서 데이터를 주입할 수 있는 능력을 갖춘 중간자 TCP 연결에 연결하면 일부 일반 텍스트 데이터가 시작 부분에 채워질 수 있습니다. 아마도 암호화로 보호된 데이터베이스 세션입니다. 이는 악용될 수 있습니다. 위조된 SQL 명령을 서버에 보냅니다. 단, 이는 다음과 같은 경우에만 작동합니다. 서버가 인증 데이터를 요구하지 않았습니다. (단, 서버에 의존하는 경우 SSL 인증서 인증은 그렇지 않을 수도 있습니다.) 문제를 해결하려면 내부 버퍼가 비어 있지 않으면 프로토콜 위반 오류가 발생합니다. 암호화 악수. 이 내용을 보고해 주신 Jacob Champion에게 감사드립니다. 문제. 보안: CVE-2021-23214https://git.토토 커뮤니티.org/pg/commitdiff/28e24125541545483093819efae9bca603441951

  • libpq: SSL 또는 GSS 암호화 핸드셰이크 후 외부 데이터를 거부합니다. libpq 소켓에서 데이터를 읽을 때마다 최대 버퍼로드의 데이터를 수집합니다. 시작 시 SSL 또는 GSS 암호화가 요청되면 추가 데이터가 서버의 예 또는 아니요 응답과 함께 수신된 내용은 버퍼에 남아 있으며 암호화 핸드셰이크가 완료되면 이미 해독된 데이터로 처리됩니다. 따라서 TCP에 데이터를 주입할 수 있는 능력을 갖춘 중간자 연결은 아마도 일부 일반 텍스트 데이터를 시작 부분에 채울 수 있습니다. 암호화로 보호된 데이터베이스 세션. 이것은 아마도 남용될 수 있습니다 클라이언트의 처음 몇 개의 쿼리에 가짜 응답을 삽입합니다. libpq의 동작에 대한 세부 사항은 생각보다 어렵습니다. 다른 라인 공격의 목적은 클라이언트의 비밀번호나 기타 민감한 데이터를 유출하는 것입니다. 세션 초반에 전송될 수 있습니다. 이는 다음과 같은 방법으로 가능한 것으로 나타났습니다. 서버는 CVE-2021-23214에 취약합니다. 해결하려면 프로토콜 위반 오류를 발생시키세요. 암호화 핸드셰이크 이후 내부 버퍼가 비어 있지 않은 경우. 우리의 이 문제를 보고해 주신 Jacob Champion에게 감사드립니다. 보안: CVE-2021-23222https://git.토토 커뮤니티.org/pg/commitdiff/160c0258802d10b0600d7671b1bbea55d8e17d45

  • 잘못된 형식 자리표시자를 수정하세요. 빌드팜별 경고.https://git.토토 커뮤니티.org/pg/commitdiff/b0cf5444f9a8d915b2e9b44790025f17a7dc107f

  • 026_overwrite_contrecord.pl 테스트의 불안정성을 수정했습니다. 우리는 간헐적으로 보았습니다. 느린 빌드팜 머신에서 이 테스트가 실패할 수 있다고 생각합니다. autovacuum이 추가 WAL을 방출한다고 가정하여 설명합니다. 비활성화 이를 안정화하기 위해 autovacuum을 수행합니다. 전달할 때 숫자 비교가 아닌 문자열 비교를 사용하십시오. WAL 파일 이름을 비교합니다. 현재는 중요하지 않지만 16진수입니다. 문자열이 십진수가 아닙니다 ... 토론:https://postgr.es/m/1372189.1636499287@sss.pgh.pa.us https://git.토토 커뮤니티.org/pg/commitdiff/b66767b56b1cd082f3499a7e5a21b480dd004f51

  • 문서: 논리적 복제 유형 메시지에 대한 프로토콜 사양을 개선합니다. 프로토콜.sgml은 Type 메시지의 레이아웃을 문서화했지만 완전히 삭제되었습니다. 그렇지 않으면 공이 무엇인지, 언제 보내졌는지 설명하지 못한 경우, 또는 왜 좋은지. 그 동안 약간의 복사 편집을 수행하십시오. 관계 메시지에 대한 설명입니다. 지나가는 동안에 대한 설명을 조정하십시오. apply_handle_type()을 사용하면 다음과 같은 경우 아무것도 하지 않기로 선택했음을 더 명확하게 알 수 있습니다. Type 메시지를 받는 것은 전혀 쓸모가 없다고 생각하는 것이 아닙니다. 당 스티븐 힐먼의 질문입니다. 토론:https://postgr.es/m/CAPgW8pMknK5pup6=T4a_UG=Cz80Rgp=KONqJmTdHfaZb0RvnFg@mail.gmail.com https://git.토토 커뮤니티.org/pg/commitdiff/c3b33698cf88550b017620f73b94b53029897f39

  • socklen_t에 대해 int가 아닌 unsigned int로 대체합니다. 동전던지기 중 어느 것인가요? 이것이 더 나은 기본 가정입니다. 그러나 우리가 보유하고 있는 기계 중 buildfarm에서 fallback socklen_t 정의에 의존하는 유일한 것은 다음과 같습니다. 고대 HPUX이며 해당 플랫폼에서는 unsigned int가 올바른 선택입니다. 미성년자 ee3a1a5b6으로 조정하세요. 토론:https://postgr.es/m/1440792.1636558888@sss.pgh.pa.us https://git.토토 커뮤니티.org/pg/commitdiff/01ec41a5fe4aa590dde18a2c551432aa1925caea

  • postgres_fdw: 제한된 경우에 상수에 대한 캐스트를 억제합니다. 분해할 때 "remote_var OP 상수" 형식의 표현에서는 일반적으로 캐스트를 적용합니다. 원격 파서가 동일한 유형이라고 생각하는지 확인하는 상수 우리는 그렇습니다. 그러나 그렇게 할 필요가 없는 경우가 많으며 다음과 같은 경우 문제가 발생합니다. 사용자가 의도적으로 로컬 열을 다른 열로 선언했습니다. 원격 열보다 유형을 입력하십시오. 이에 대한 그럴듯한 사용 사례는 텍스트를 사용하는 것입니다. 원격 측의 열거형 유형을 나타냅니다. 이와 같은 비교 열은 "var = 'foo'::text"로 배송되며, 이는 리모콘에서 폭발합니다. enum = text 연산자가 없기 때문입니다. 하지만 단순히 그 내용을 그대로 놔두면 명시적 캐스트를 사용하면 비교가 사용자가 원하는 대로 정확하게 수행됩니다. 그것은 의미론적 문제의 큰 위험 없이 이를 수행하는 것이 가능합니다. "연산자의 피연산자 중 하나가 유형인 경우"라는 오랜 파서 경험적 방법 알 수 없음, 다른 하나는 알려진 유형을 갖고 있지만 알 수 없는 피연산자는 다음과 같이 가정합니다. 그것도 그런 종류야." 따라서 이 패치는 (a) 다음과 같은 경우에만 캐스트를 제외합니다. 연산자 입력은 로컬에서 동일한 유형을 갖습니다. (b) 상수는 다음과 같이 인쇄됩니다. 문자열 리터럴 또는 NULL. 둘 다 처음에는 알 수 없는 유형으로 간주됩니다. 그리고 (c) Const가 아닌 입력은 일반 외부 Var입니다. 규칙 (c)는 다음을 보장합니다. 원격 파서는 Const가 아닌 입력의 유형을 알게 됩니다. 게다가 그 뜻은 이 캐스트 생략이 의미론적 놀라움을 야기한다면, 그것은 오직 로컬 열의 유형이 원격 열과 다른 경우에 발생합니다. 칼럼. 어쨌든 작동이 보장되지는 않았으며 이번 패치는 그러한 경우에 대한 순 유용성 이득을 나타냅니다. 나(tgl)가 남는 1점 약간 불편한 점은 암시적인 RelabelType을 무시한다는 것입니다. Const가 아닌 입력이 일반 Var인지 결정할 때. 그러다보니 좀 그렇지 리모콘이 Const를 동일한 것으로 해결해야 한다고 주장하기에는 질퍽합니다. 유형을 Var로 지정하면 Const가 Var와 동일한 유형이 아니기 때문입니다. 그러나 그렇게 하지 않으면 사용자가 다음과 같은 경우 이 해킹이 원하는 대로 작동하지 않습니다. 일부 원격 열을 나타내기 위해 텍스트 대신 varchar를 사용하기로 선택했습니다. 그 유용할 것 같으니 지금은 이렇게 하세요. 우리는 포기해야 할 수도 있습니다 문제가 발생하면 RelabelType을 무시합니다. Dian Fay, 리뷰 및 내가 kibitzing 토론:https://postgr.es/m/C9LU294V7K4F.34LRRDU449O45@lamia https://git.토토 커뮤니티.org/pg/commitdiff/f8abb0f5e114d8c309239f0faa277b97f696d829

  • psql의 \password 기본값을 PQuser(conn)가 아닌 CURRENT_USER로 설정하십시오. 는 문서에는 \password가 "현재 사용자"에게 작용한다고 분명히 나와 있습니다. 기본값. 실제로 조치를 취했거나 시도한 것은 로그인에 사용된 사용자 이름이었습니다. 현재 세션으로 들어갑니다. 그 이후로 한 적이 있다면 이것은 같은 일이 아닙니다 역할을 설정하거나 세션 인증을 설정하세요. 가능한 놀라움을 제외하고 따라서 현재 역할에 다음 작업에 대한 권한이 없을 가능성이 높습니다. 원래 역할의 비밀번호를 설정합니다. 문제를 해결하려면 'SELECT CURRENT_USER'를 사용하세요. 작업할 역할 이름을 가져옵니다. (이 구문은 적어도 이전 서버에서 작동합니다. 7.0.) 또한 혼란을 줄이기 위해 역할 이름을 포함시킵니다. 비밀번호 프롬프트에서 조치를 취하세요. 문서와의 불일치 이는 버그이므로 지원되는 모든 브랜치에 백패치를 적용하세요. 내가 패치했습니다. 검토해 주신 Nathan Bossart에게 감사드립니다. 논의:https://postgr.es/m/747443.1635536754@sss.pgh.pa.us https://git.토토 커뮤니티.org/pg/commitdiff/d6eb5a0c258d3da5471814bcc6ed6498129fee16

로버트 하스가 밀었습니다:

  • 종료되지 않은 tar 아카이브 문제에 대한 최소한의 수정. 커밋 23a1c6578c87fca0e361c4f5f9a07df5ae1f9858 pg_basebackup의 기능이 향상되었습니다. tar 아카이브를 구문 분석할 뿐만 아니라 필요할 때만 구문 분석하도록 구성되어 있습니다. 아카이브 내용에 대한 일부 수정. 그게 문제인데 왜냐면 서버는 실제로 tar 아카이브를 종료하지 않습니다. 새로운 구문 분석 논리가 참여했다면 pg_basebackup은 tar 파일을 적절하게 종료하지만, 건너뛰었다면 pg_basebackup은 서버에서 가져온 내용을 모두 쓸 것입니다. 터미네이터가 사라졌다는 뜻이다. 대부분의 tar 버전은 기꺼이 누락된 터미네이터를 간과했지만 AIX 빌드팜 동물은 그렇지 않았습니다. 수정 맹목적으로 터미네이터를 추가하는 새로운 종류의 bbstreamer를 발명함으로써 tar 아카이브를 구문 분석하지 않을 때마다 이를 사용합니다. 토론:http://postgr.es/m/CA+TgmoZbNzsWwM4BE5Jb_qHncY817DYZwGf+2-7hkMQ27ZwsMQ@mail.gmail.com https://git.토토 커뮤니티.org/pg/commitdiff/57b5a9646d97a3e8a5b6b6d86b375cc8da6ac85c

  • 서버가 tar 아카이브를 적절하게 종료하도록 하십시오. 이전 버전의 PostgreSQL에는 tar를 편집하려는 pg_basebackup 버전이 있습니다. 아카이브를 보관했지만 제대로 구문 분석하기에는 너무 멍청했습니다. 서버가 뭔가를 만들었어요 0바이트의 두 블록을 추가하지 못함으로써 클라이언트가 더 쉽게 작업할 수 있습니다. tar 파일을 종료해야 하며 이를 수행하는 작업은 클라이언트에 맡겨야 합니다. 하지만 이후 23a1c6578c87fca0e361c4f5f9a07df5ae1f9858을 커밋하세요. 이 해킹은 필요하지 않습니다. 더군다나 pg_basebackup은 이제 더 똑똑해지고 tar 파일을 구문 분석할 수 있기 때문입니다. 제대로 종료되었습니다! 따라서 서버를 항상 올바르게 변경하십시오. tar 파일을 종료합니다. 이전 버전의 pg_basebackup은 새 버전과 대화할 수 없습니다. 어쨌든 서버이므로 호환성 문제가 없습니다. pg_basebackup 측에서, 우리가 대화하는 경우 종료 0바이트를 추가해야 한다는 것을 알 수 있습니다. 이전 서버이지만 서버가 v15+인 경우에는 그렇지 않습니다. 언젠가는 우리가 이 호환성 문제 중 일부를 제거할 수 있지만 매달아 두는 것이 가장 좋습니다. 지금은 그것에 대해. 전달하면서 bbstreamer_tar.c에 파일 헤더 설명을 추가합니다. 여기서 무슨 일이 일어나고 있는지 더 명확하게하기 위해. 논의:http://postgr.es/m/CA+TgmoZbNzsWwM4BE5Jb_qHncY817DYZwGf+2-7hkMQ27ZwsMQ@mail.gmail.com https://git.토토 커뮤니티.org/pg/commitdiff/5a1007a5088cd6ddf892f7422ea8dbaef362372f

  • 'ThisTimeLineID' 추가 정리. XLogCtlData에서 구조 멤버의 이름을 바꿉니다. ThisTimeLineID를 InsertTimeLineID로 변경하고 주석을 업데이트하여 다음 사항을 명확히 합니다. 복구가 완료된 후에만 설정될 것으로 예상됩니다. StartupXLOG에서는 로컬 변수 ThisTimeLineID 및 PrevTimeLineID를 새 로컬로 바꿉니다. 변수 replayTLI 및 newTLI. 이전 체계에서는 ThisTimeLineID가 새로운 타임라인을 생성할 때까지 TLI를 재생하고 그 이후에는 TLI를 재생했습니다. PrevTimeLineID에 있습니다. 이제 replayTLI는 마지막으로 WAL을 재생한 TLI입니다. 전체 기능에 걸쳐 newTLI는 그것 또는 새로운 타임라인입니다. 프로모션을 통해 생성되었습니다. 댓글에서 오해의 소지가 있는 댓글을 삭제하세요. RecoveryTargetTimeLineGoal 및 친구가 선언된 바로 위의 블록입니다. 이제 변수로서의 ThisTimeLineID가 사라졌지만 rmgr 코드는 ThisTimeLineID를 신경 쓰지 않고 페이지 헤더의 TLI 필드가 용도 변경된 이후로 페이지 체크섬을 저장합니다. GetFlushRecPtr라는 주석을 추가하세요. 정상적인 실행에서 사용되어야 하며 이것이 맞는지 확인하는 어설션 그래서. Michael Paquier의 아이디어와 내 아이디어에 따라. 마이클의 검토 파퀴에도요. 논의:http://postgr.es/m/CA+TgmoY1a2d1AnVR3tJcKmGGkhj7GGrwiNwjtKr21dxOuLBzCQ@mail.gmail.com https://git.토토 커뮤니티.org/pg/commitdiff/a27048cbcb582056bfbf15aa2f898b4a3ec74304

  • basebackup.c의 어설션에서 thinko를 수정했습니다. 커밋 5a1007a5088cd6ddf892f7422ea8dbaef362372f는 다음과 같은 주장을 도입하려고 했습니다. 블록 크기는 tar 블록 크기의 두 배 이상이었지만 계산은 가능했습니다. 틀렸어. 내 오류가 목록에서 제외되었다고 보고되었습니다.https://git.토토 커뮤니티.org/pg/commitdiff/10eae82b27cebbb9586cda8baf8e3226496891d0

  • 많은 상태 파일로 pgarch_readyXlog()의 성능을 향상시킵니다. 현재, archive_status 디렉토리는 아카이브할 각 파일에 대해 스캔되었습니다. 거기에 있을 때 archive_command가 오랫동안 실패했기 때문에 상태 파일이 많습니다. 시간이 지나면 이러한 디렉터리 검색이 매우 느려질 수 있습니다. 이번 변경으로 아카이버는 각 디렉터리 검색 중에 보관할 여러 파일을 기억하여 작업 속도를 높입니다. 위로. 타임라인 기록 파일을 최대한 빨리 보관하려면, XLogArchiveNotify()는 아카이버가 다음과 같은 경우 즉시 새 디렉터리 검색을 수행하도록 강제합니다. 하나에 대한 .ready 파일이 생성됩니다. Nathan Bossart, 오랜 토론에 따르면 많은 사람들이 참여합니다. 그 모든 사람들 중에서 정확히 누구인지는 나에게 확실하지 않습니다. 사람들은 이 특정 패치를 검토했습니다. 논의:http://postgr.es/m/CA+TgmobhAbs2yabTuTRkJTq_kkC80-+jw=pfpypdOJ7+gAbQbw@mail.gmail.com토론:http://postgr.es/m/620F3CE1-0255-4D66-9D87-0EADE866985A@amazon.com https://git.토토 커뮤니티.org/pg/commitdiff/beb4e9ba1652a04f66ff20261444d06f678c0b2d

Amit Kapila가 푸시됨:

  • REL 대신 TABLE을 사용하려면 일부 열거형의 이름을 바꾸세요. 커밋 5a2832465f 도입 스키마 게시의 모든 테이블을 나타내고 REL을 사용하는 일부 열거형 그들의 이름. 혼동을 피하기 위해 해당 열거형에서 REL 대신 TABLE을 사용하십시오. 나중에 출판의 일부가 될 수 있는 SEQUENCES와 같은 다른 개체입니다. 전달 과정에서 (a) 새로 도입된 오류 메시지 중 하나를 다음과 같이 변경합니다. Create 및 Alter 명령에 대해 일관됩니다. (b) 다음 중 하나에 누락된 별칭을 추가합니다. 관련된 출판물을 인쇄하는 데 사용되는 SQL 문 테이블. 보고자: Tomas Vondra, Peter Smith 저자: Vignesh C 검토자: Hou Zhijie, Peter Smith 토론:/message-id/CALDaNm0OANxuJ6RXqwZsM1MSY4s19nuH3734j4a72etDwvBETQ%40mail.gmail.com https://git.토토 커뮤니티.org/pg/commitdiff/b3812d0b9bcf00e8478186fc287940e17912248a

후지 마사오가 밀었습니다:

Michaël Paquier가 푸시됨:

  • 일관성을 위해 "ProcSignal"이라는 용어를 사용하여 일부 의견을 작성하세요. 주변 환경 procsignal.c에서는 "procsignal"보다는 "ProcSignal"을 사용하는 것을 선호합니다. 작성자: Bharath Rupireddy 토론:https://postgr.es/m/CALj2ACX99ghPmm1M_O4r4g+YsXFjCn=qF7PeDXntLwMpht_Gdg@mail.gmail.com https://git.토토 커뮤니티.org/pg/commitdiff/4cd046c203bbca2955182f78eabc06e831ffdbb1

  • XLogReadRecord()의 일부 호출자에 대한 오류 메시지를 개선합니다. 몇 가지 코드 논리적 디코딩과 관련된 경로(WAL 송신자, 슬롯 전진 등) 사용 XLogReadRecord(), walreader.c에서 생성된 오류 메시지를 제공합니다. 실패. 모든 메시지에는 맥락이 없으므로 파악하기가 더 어렵습니다. 이런 일이 발생하지 않아도 오류가 발생할 수 있습니다. 다른 모든 것 XLogReadRecord() 호출자는 이미 그렇게 하고 있습니다. 리뷰 작성자: 호리구치 쿄타로 토론:https://postgr.es/m/YYnTH6OyOwQcAdkw@paquier.xyz https://git.토토 커뮤니티.org/pg/commitdiff/c9c401a5e13accc4a3a775e3feeabdc5940c9178

  • clang-12~를 사용하여 PL/Perl에서 오는 컴파일 경고를 정리합니다. clang-12에는 -Wcompound-token-split-by-macro를 도입하여 많은 양의 업스트림 Perl과의 상호 작용으로 인해 PL/Perl을 빌드할 때 경고가 발생합니다. 이 커밋은 플래그가 다음과 같은 경우 ./configure 시간에 CFLAGS에 하나의 -Wno를 추가합니다. 모든 경고를 침묵시키기 위해 컴파일러에서 지원됩니다. 업스트림 Perl에는 이 문제는 해결되었지만 확산되기까지는 시간이 좀 걸릴 것입니다. 빌드팜 전반에 걸쳐 우리는 일부 동물이 유용할 것이라는 점을 알아냈습니다. 잘못된 자리 표시자를 감지하는 데 도움이 되는 추가 -Werror 포함 (b0cf544 참조), 단고무시는 하나입니다. 검토자: Tom Lane 토론:https://postgr.es/m/YYr3qYa/R3Gw+Sbg@paquier.xyz백패치 쓰루: 10https://git.토토 커뮤니티.org/pg/commitdiff/9ff47ea414c4e6ace347fc4e59866e38b9bbceaf

  • 빈 입력으로 유니코드 문자열 정규화에서 버퍼 오버런을 수정합니다. PostgreSQL 13 및 최신 버전은 SQL을 통해 직접적인 영향을 받습니다. 함수 Normalize(), 이 함수 호출로 인해 다음과 같은 결과가 작성됩니다. 재구성 후 빈 문자열을 입력에 사용하는 경우 할당된 바이트를 초과합니다. NFC 및 NFKC가 포함된 문자열입니다. 이전 버전(v10~v12)은 직접적으로 정규화를 사용하는 유일한 코드 경로는 SASLprep이므로 이 문제의 영향을 받습니다. 빈 문자열의 대소문자를 금지하는 SCRAM 인증에서는 어쨌든 코드를 더 강력하게 만들어서 이것의 핵심 호출자 모두에게 기능이 다뤄집니다. 이 문제를 해결하기 위해 선택한 솔루션은 간단합니다. 분해된 문자열이 비어 있는 것으로 발견되면 빠른 종료 경로를 추가합니다. 이는 가장 낮은 수준의 코드 포인트와 같이 빈 문자열에 대해서만 발생합니다. 분해 테이블에 항목이 없으면 자체적으로 분해됩니다. 분해 크기가 0인 경우. 이 문제를 다루기 위해 일부 테스트가 추가되었습니다. v13에서~. 빈 문자열은 항상 정규화된 것으로 간주됩니다. (SQL 함수 is_normalized()를 통해 "IS NF[K]C,D NORMALIZED" 문법) 이 기능 이후 허용되는 모든 작업(NFC, NFD, NFKC 및 NFKD)에 대해 2991ac5부터 도입되었습니다. 이 동작은 변경되지 않았지만 일부 테스트에서는 이후 확인을 위해 v13~에 추가되었습니다. 나는 또한 "만들다"를 확인했다 src/common/unicode/에 있는 "normalization-check"가 있는 동안(13~에서 작동하며, 이 커밋과 관계없이 오래된 안정적인 브랜치를 중단합니다.) 릴리스 노트에서는 v13~에 대한 이 커밋을 언급해야 합니다. 보고자: Matthijs van der Vleuten 토론:https://postgr.es/m/17277-0c527a373794e802@토토 커뮤니티.org백패치 쓰루: 10https://git.토토 커뮤니티.org/pg/commitdiff/098c134556664d37b78ae87853a82f4a9d23a2c8

  • pg_stat_slru를 쿼리할 때 메모리 오버런을 수정합니다. pg_stat_get_slru() pgstatfuncs.c는 배열 끝 뒤에 있는 하나의 요소를 가리킵니다. 항목 스캔을 완료하면 PgStat_SLRUStats가 발생합니다. 이건 직접적인 내용이 없었어요 추가 메모리 영역의 데이터는 읽혀지지 않았지만 정적이기 때문에 결과가 발생합니다. 분석가는 여기서 정당하게 불평할 것입니다. 그러니 깨끗해지자. 그 동안, 이는 시스템 보기용으로 예약된 영역에 하나의 회귀 테스트를 추가합니다. 보고자: Alexander Kozhemyakin, AddressSanitizer를 통해 작성자: Kyotaro 호리구치 토론:https://postgr.es/m/17280-37da556e86032070@토토 커뮤니티.org백패치 통과: 13https://git.토토 커뮤니티.org/pg/commitdiff/a45ed975c58fde7303eeae488b313bf0314383f7

피터 아이젠트라우트가 밀었습니다:

제프 데이비스가 밀었습니다:

Álvaro Herrera가 푸시됨:

Peter Geoghegan이 밀었습니다:

Noah Misch가 밀었습니다:

앤드류 던스턴이 밀었습니다:

다니엘 구스타프손이 밀었습니다: