롤 토토 주간 뉴스 - 2021년 10월 10일

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

롤 토토 주간 뉴스 - 2021년 10월 10일

롤 토토 제품 뉴스

pgCluu 3.2, 롤 토토 성능을 감사하는 Perl 프로그램,해제.

PGroonga 2.3.2 모든 언어에 대한 전문 검색 플랫폼,해제.

10월 롤 토토 작업

https://archives.롤 토토.org/pgsql-jobs/2021-10/

뉴스의 롤 토토

플래닛 롤 토토:https://planet.롤 토토.org/

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

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

적용된 패치

Michaël Paquier가 푸시됨:

  • 2PC로 상시 대기 노드를 승격하는 동안 스냅샷 빌드를 수정합니다. 일부 2PC 트랜잭션이 포함될 때 복구가 끝나면 특정 논리가 수행됩니다. 1) RecoverPreparedTransactions()를 호출하여 2PC의 상태를 복구합니다. 메모리로의 트랜잭션(잠금 재획득 등) 2) ShutdownRecoveryTransactionEnvironment()는 정상 작업으로 돌아가기 위해, 주로 복구 잠금 및 KnownAssignedXids 정리(2PC 포함) 이전에 추적된 거래). 3) XLogCtl-SharedRecoveryState를 다음으로 전환합니다. RECOVERY_STATE_DONE은 호출하는 모든 프로세스의 전환점입니다. RecoveryInProgress()는 클러스터가 아직 복구 중인지 여부를 확인합니다. 모두 2)와 3) 단계 사이에 생성된 스냅샷은 비어 있어 트랜잭션이 발생합니다. 이 시점에서 스냅샷을 사용하여 잠재적으로 데이터를 손상시킬 수 있습니다. 여전히 추적할 2PC 거래가 남아 있으며 RecentXmin은 뒤로 이동합니다. 동일한 트랜잭션에서 GetSnapshotData()에 대한 연속 호출. 다음과 같이 SharedRecoveryState는 안전한지 확인하기 위해 고려해야 할 점입니다. KnownAssignedXids를 삭제하면 이 커밋은 2)단계를 3단계 이후로 이동하므로 다음과 같습니다. 빈 스냅샷으로는 결코 끝날 수 없습니다. 이는 도입 이후부터 존재합니다. 핫 스탠바이이므로 백패치를 끝까지 진행하세요. 잘못된 창 스냅샷은 매우 작지만 실행할 때 본 적이 있습니다. 023_pitr_prepared_xact.pl, buildfarm 회원 fairwren도 마찬가지입니다. 토마스 먼로 또한 독립적으로 발견했습니다. 참여해주신 Andres Freund에게 특별히 감사드립니다. 이 문제를 분석할 시간입니다. 보고자: Thomas Munro, Michael Paquier 분석자: Andres Freund 토론:https://postgr.es/m/20210422203603.fdnh3fu2mmfp2iov@alap3.anarazel.de백패치 쓰루: 9.6https://git.롤 토토.org/pg/commitdiff/8a4237908c0fe73dd41d4d7c7a6314f17dfd7a6f

  • pg_verifybackup의 TAP 테스트 경고 수정. a3fcbcd의 감독. 보고자: Thomas Munro 토론:https://postgr.es/m/CA+hUKGKnajZEwe91OTjro9kQLCMGGFHh2vvFn8tgHgbyn4bF9w@mail.gmail.com백패치 통과: 13https://git.롤 토토.org/pg/commitdiff/ec2133a447318ac6d78887e91940d69e6d92a435

  • 로깅 수집기에서 대상별 파일 회전을 리팩토링합니다. 표준 오류 및 csvlog 파일을 회전할 때 중복된 코드를 사용하고 있습니다. 크기, 수명 또는 사용자 요청에 의해 강제된 경우(pg_ctl logrotate 또는 SQL 함수 pg_rotate_log파일). 둘 사이의 주요 차이점은 stderr에 다음이 필요하다는 것입니다. 해당 파일은 항상 열려 있으므로 리디렉션 경로를 가질 수 있습니다. 로깅 수집기가 아직 작업을 수행할 준비가 되지 않은 경우 대체인 경우 대상이 활성화되었습니다. 또한 csvlog가 비활성화되면 닫아야 합니다. 메타데이터가 로깅 수집기에 제대로 저장되어 있습니다(마지막 파일 이름). current_logfiles 및 fd는 현재 비즈니스를 위해 열려 있습니다). 그 외에는 포인트, 오류 처리 측면에서 코드는 동일하며 파일이 생성되거나 계속됩니다. 이 변경으로 인해 코드가 전반적으로 더 단순해졌습니다. 더 많은 파일 기반 로그 대상을 도입하는 데 도움이 될 것입니다. 이 리팩토링은 5b0b699에서 수행된 작업과 유사합니다. 대부분의 중복 fd801f4에서 유래되었습니다. pg_ctl의 일부 TAP 테스트는 다음의 경우를 확인합니다. 강제 로그 회전이 적용되지만 이에 대한 적용 범위가 없기 때문에 이는 다소 제한됩니다. log_rotation_age 또는 log_rotation_size(추가 비용이 들지 않을 수 있음) 둘 중 하나를 실행할 수 있는 리소스), log_destination을 다시 로드할 수 있는 범위는 없습니다. stderr과 csvlog의 다양한 조합. 나는 그 모든 경우를 테스트했습니다 이 리팩토링을 위해 별도로. 저자: Michael Paquier 토론:https://postgr.es/m/CAH7T-aqswBM6JWe4pDehi1uOiufqe06DJWaU5=X7dDLyqUExHg@mail.gmail.com https://git.롤 토토.org/pg/commitdiff/5c6e33f071537d9831db57471a06d39a175b535a

  • syslogger.c의 컴파일 경고 수정. 5c6e33f의 감독. 저자: 네이선 Bossart 토론:https://postgr.es/m/DD8AD4CE-63B7-44BE-A3D2-14A4E4B19C26@amazon.com https://git.롤 토토.org/pg/commitdiff/05c4248ad1bf0c2721ce9445f6908da9ece36ff8

  • 더 나은 WIN32 서비스 사례를 처리하기 위해 csvlog에 대한 대체 조치를 stderr로 리팩토링합니다. send_message_to_server_log()는 로그 항목을 강제로 리디렉션합니다. syslogger를 아직 사용할 수 없는 것과 같은 csvlog의 경우 stderr이 발생합니다. 이런 일이 발생하면 csvlog는 stderr로 돌아가 일부 정보를 기록합니다. 아무것도 아닌 것보다. stderr이 이전에 완료되도록 코드가 구성되었습니다. csvlog, stderr이 아직 역방향으로 발생하지 않았는지 확인하는 csvlog 조건. 이 코드 구성을 사용하면 일부를 잃을 수도 있습니다. Postgres를 WIN32에서 서비스로 실행하는 경우 메시지가 표시됩니다. 사용할 수 있는 항목이 없기 때문입니다. stderr 및 stderr에 대한 메시지를 보유하는 StringInfoData 처리 그것 때문에 오히려 혼란스러웠다. 이 커밋은 csvlog 처리를 이동합니다. 로그가 필요한지 추적할 수 있으므로 stderr 이전에 있어야 합니다. stderr에 뭔가. 단일로 stderr 처리를 줄입니다. 코드 경로, WIN32 서비스에 대한 이벤트 로그에 대체를 추가합니다. 이것도 stderr에 대한 StringInfoData를 처리하는 방식을 단순화하여 새로운 파일 기반 로그 대상 통합. 서비스를 가지고 놀아야 해요 이 변경 사항을 확인하는 동안 Windows의 이벤트 로그를 확인하세요. 검토자: Chris Bandy 토론:https://postgr.es/m/YV0vwBovEKf1WXkl@paquier.xyz https://git.롤 토토.org/pg/commitdiff/8b76f89c37973082b3d64f5a27937efcca9d65f6

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

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

톰 레인이 밀렸습니다:

Andres Freund가 밀었습니다:

브루스 몸지안이 밀었습니다:

  • doc: ICU 탐색기/locexp의 URL을 제거합니다. 이전 URL은 HTTP 404이고 git은 링크가 빌드되지 않았습니다. 또한 두 개의 다른 ICU 링크를 업데이트합니다. 만약 우리가 좋은 일을 얻게 된다면 링크를 다시 추가하겠습니다. 보고자: Anton Voloshin 저자: Laurenz Albe 백패치 스루: 10https://git.롤 토토.org/pg/commitdiff/e8259439066c5fa4f3266f30434d5a52b8347bd1

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

  • psql: LOCK TABLE에 대한 탭 완성 기능을 개선합니다. 이 커밋으로 psql이 지원됩니다. LOCK TABLE 명령의 ONLY 및 NOWAIT 키워드에 대한 탭 완성. 저자: 타니가와 코유 검토자: 카토 신야, 후지이 마사오 토론:https://postgr.es/m/a322684daa36319e6ebc60b541000a3a@oss.nttdata.com https://git.롤 토토.org/pg/commitdiff/0b0d277c35533baecc8d1a9356f71de5f2ee0bd8

  • doc: 문서 pg_encoding_to_char() 및 pg_char_to_encoding(). 이전에는 둘 다 기능은 문서 어디에도 설명되어 있지 않습니다. 하지만 그들이 그랬던 이후로 7.0 이후부터 다음과 같은 시스템 카탈로그 설명에 언급되었습니다. pg_database에 대한 간단한 설명을 추가하는 것이 합리적입니다. 작가: 이안 Lawrence Barwick 검토자: Laurenz Albe, Fujii Masao 토론:https://postgr.es/m/CAB8KJ=infievn4q1N4X7Vx8w4_RMPPG0pLvxhSDjy5WQOSHW9g@mail.gmail.com https://git.롤 토토.org/pg/commitdiff/f6b5d05ba9a4ac7c5ebec76045c6e0afcf7c9eec

  • 잘못된 페이지 헤더가 발견되면 복구 보고서 오류 메시지를 만듭니다. 커밋 0668719801 페이지 헤더의 유효성을 검사하도록 XLogPageRead()를 변경했습니다. 잘못된 페이지 헤더가 발견되었습니다. 오류 메시지를 재설정하고 읽기를 다시 시도했습니다. 페이지에서 스트리밍 대기가 계속해서 멈추는 시나리오를 수정합니다. 기록. 이 변경으로 인해 잘못된 페이지 헤더에 대한 오류 메시지가 숨겨졌습니다. 사용자가 실제 문제가 무엇인지 조사하기가 더 어려워집니다. 월에. 문제를 해결하기 위해 이 커밋으로 인해 XLogPageRead()가 오류를 보고합니다. 잘못된 페이지 헤더가 발견되면 메시지가 표시됩니다. 대기 모드가 아닐 때, 잘못된 페이지 헤더로 인해 복구가 종료되고 페이지 읽기를 다시 시도하지 않아야 합니다. 따라서 XLogPageRead()는 재시도를 위해 페이지 헤더의 유효성을 검사할 필요가 없습니다. 대신 ReadPageInternal()이 해당 유효성 검사를 담당해야 합니다. 사건. 따라서 이 커밋은 XLogPageRead()를 변경하여 대기 상태가 아닌 경우 모드에서는 재시도를 위해 페이지 헤더의 유효성을 검사하지 않습니다. 신고자 : 유고 나가타 저자: 나가타 유고, 호리구치 쿄타로 검토자: Ranier Vilela, 후지이 마사오 토론:https://postgr.es/m/20210718045505.32f463ed6c227111038d8ae4@sraoss.co.jp https://git.롤 토토.org/pg/commitdiff/68601985e699adeb267636fd19d3d6113554bd1f

Amit Kapila가 푸시됨:

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

  • BASE_BACKUP에 대한 유연한 옵션. 이전에는 BASE_BACKUP이 완전히 사용되었습니다. 하드 코딩된 구문이지만 확장하기가 어렵습니다. 대신에 같은 종류의 것을 채택하십시오. VACUUM, ANALYZE, COPY 및 EXPLAIN과 같은 SQL 명령에 사용한 구문 여기서 모든 옵션 이름이 파서 키워드일 필요는 없습니다. 새 구문에서는 이제 대부분의 옵션이 선택적 부울 인수를 사용합니다. 다른 곳에서의 관행과 일치시키기 위해 이전 구문이 사용하는 옵션은 다음과 같습니다. NOWAIT 및 NOVERIFY_CHECKSUMS 옵션은 WAIT라는 새로운 구문에 있습니다. 및 VERIFY_CHECKUMS이며 기본값은 false입니다. 새로운 구문에서는 FAST 옵션이 값이 'fast'일 수 있는 CHECKSUM 옵션으로 대체되었습니다. 또는 '확산'. 이 커밋은 이전 구문에 대한 지원을 제거하지 않습니다. 그냥 새로운 옵션을 추가 옵션으로 추가하고 pg_basebackup이 서버가 이를 지원할 만큼 새로운 경우 새로운 구문을 사용합니다. 내가 패치하고 검토함 Fabien Coelho, Sergei Kornilov, Fujii Masao 및 Tushar Ahuja가 테스트했습니다. 논의:http://postgr.es/m/CA+TgmobAczXDRO_Gr2euo_TxgzaH1JxbNxvFx=HYvBinefNH8Q@mail.gmail.com토론:http://postgr.es/m/CA+TgmoZGwR=ZVWFeecncubEyPdwghnvfkkdBe9BLccLSiqdf9Q@mail.gmail.com https://git.롤 토토.org/pg/commitdiff/0ba281cb4bf9f5f65529dfa4c8282abb734dd454

  • CREATE_REPLICATION_SLOT에 대한 유연한 옵션. BASE_BACKUP과 마찬가지로 CREATE_REPLICATION_SLOT은 역사적으로 하드 코딩된 구문을 사용했습니다. 개선하기 위해 향후 확장성을 고려하여 여기에서도 유연한 옵션 구문을 채택하세요. 새로운 세 가지 상호 배타적인 옵션 EXPORT_SNAPSHOT 대신 구문을 사용합니다. USE_SNAPSHOT 및 NOEXPORT_SNAPSHOT, 이제 단일 SNAPSHOT 옵션이 있습니다. 세 가지 가능한 값: '내보내기', '사용' 및 '없음'. 이 커밋은 이전 구문에 대한 지원을 제거하지 마십시오. 새로운 것을 다음과 같이 추가합니다. 추가 옵션으로 pg_receivewal, pg_recvlogical 및 walreceiver를 만듭니다. 프로세스가 이를 사용합니다. 내가 작성한 패치, Fabien Coelho, Sergei Kornilov가 검토함, 그리고 후지이 마사오. 논의:http://postgr.es/m/CA+TgmobAczXDRO_Gr2euo_TxgzaH1JxbNxvFx=HYvBinefNH8Q@mail.gmail.com토론:http://postgr.es/m/CA+TgmoZGwR=ZVWFeecncubEyPdwghnvfkkdBe9BLccLSiqdf9Q@mail.gmail.com https://git.롤 토토.org/pg/commitdiff/0266e98c6b865246c3031bbf55cb15f330134e30

딘 라시드가 밀었습니다:

  • numeric_power()에서 특수한 경우의 정밀도 손실을 수정합니다. 이렇게 하면 손실이 해결됩니다. 첫 번째 입력이 1에 매우 가까울 때 발생하는 정밀도입니다. 로그는 매우 작습니다. 이전에는 초기 정밀도가 낮은 동안 결과 가중치를 추정하기 위해 계산을 수행하고 로그를 계산하여 NUMERIC_MAX_DISPLAY_SCALE(1000)으로 제한된 로컬 rscale입니다. 그러나 밑은 1e-16383과 1에 가까울 수 있으므로 로그는 다음과 같이 작을 수 있습니다. 1e-16383이므로 로컬 rscale이 16383을 초과하도록 허용되어야 합니다. 그렇지 않으면 모든 정밀도가 손실되어 rscale을 잘못 선택하게 됩니다. 완전 정밀도 계산. 로컬 rscale의 캡을 제거하여 이 문제를 해결하세요. 초기 저정밀도 계산 중에 이미 수행한 것처럼 완전 정밀도 계산. 이는 초기 설정이라는 사실을 변경하지 않습니다. 계산은 정밀도가 낮은 근사치이며 로그를 계산합니다. 약 8자리 유효 숫자로, 특히 기본이 다음과 같은 경우 매우 빠릅니다. 1에 매우 가깝습니다. Alvaro Herrera가 검토한 패치입니다. 토론:https://postgr.es/m/CAEZATCV-Ceu%2BHpRMf416yUe4KKFv%3DtdgXQAe5-7S9tD%3D5E-T1g%40mail.gmail.com https://git.롤 토토.org/pg/commitdiff/e54a758d24dab056bb7f50d26c57a3c8761cc44a

후지타 에츠로가 밀었습니다: