젠 토토 주간 뉴스 - 2021년 6월 27일

게시일2021-06-28작성: PWN
PWN

젠 토토 주간 뉴스 - 2021년 6월 27일

젠 토토 14 베타 2가 출시되었습니다.토토 결과 : 토토 결과 14 베타 2 릴리스!

제12차 쿠바 젠 토토 컨퍼런스(젠 토토CUBA, @PgCuba)가 에 개최됩니다. 2021년 11월 18~19일, Hotel Habana Libre에서. 이 이벤트는 다음의 일부입니다. TECNOGET 컨퍼런스를 개최하며 젠 토토 관련 전용 트랙을 하나 주최할 예정입니다. 회담. 자세한 내용은 cu AT 젠 토토 DOT org에 문의하세요.

젠 토토 제품 뉴스

JDBC 42.2.22해제

pgpoolAdmin 4.2.0, Pgpool-II용 관리 도구,해제.

pgCenter 0.9.0, 관찰 및 문제 해결을 위한 명령줄 관리 도구 포스트그레SQL,해제

6월 젠 토토 작업

https://archives.젠 토토.org/pgsql-jobs/2021-06/

뉴스의 젠 토토

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

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

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

적용된 패치

톰 레인이 밀렸습니다:

  • mktime() 최신 버전의 이식성 문제를 해결하세요. 최근 glibc tm_isdst가 일치하지 않으면 버전에서 mktime()이 실패하게 되었습니다. 일반적인 시간대; 특히 영역이 다음인 경우 tm_isdst = 1이면 실패합니다. UTC. (이것은 POSIX에서 요구하는 처리 방식과 크게 일치하지 않는 것 같습니다. struct tm의 다른 필드에 대한 "잘못된" 값이므로 나에게 묻는다면 이는 버그가 있지만 의도적인 것이라고 말할 것입니다.) 이는 다음과 같은 원인이 되는 것으로 관찰되었습니다. 다른 위치에서 생성된 아카이브를 pg_restore할 때 외관상 문제가 발생합니다. 시간대. 문제를 해결하려면 아카이브의 필드 값을 사용하여 mktime()을 수행하고, 실패하면 tm_isdst = -1로 다시 시도하세요. 이것은 잘못된 결과를 줄 것입니다 원래 구역과의 UTC 오프셋 차이로 인해 발생했지만 이전에는 그랬습니다. 너무. 우리는 결과에 대해 아무것도 하지 않기 때문에 별로 중요하지 않습니다. 인쇄할 수 있는 경우를 제외하고는요. (언젠가 우리는 이 논리 전체를 씻어내야 합니다. 대신 아카이브에 표준 형식 타임스탬프를 기록합니다. 그렇지 않아요 하지만 백패치된 버그 수정은 괜찮습니다.) 또한, initdb의 build_time_t()를 0이 아닌 tm_isdst = -1로 설정하여 mktime()을 수행합니다. 이 경우 연중 DST가 적용되는 구역에서만 문제가 발생할 수 있습니다. 하지만 내 생각엔 일부는 그럴 것 같아 존재하거나 미래에 존재할 수 있습니다. Wells Oliver의 보고서에 따르면. 모두에게 백패치 지원되는 버전 중 하나라도 최신 glibc로 실행해야 할 수 있기 때문입니다. 논의:https://postgr.es/m/CAOC+FBWDhDHO7G-i1_n_hjRzCnUeFO+H-Czi1y10mFhRWpBrew@mail.gmail.com https://git.젠 토토.org/pg/commitdiff/f807e3410fdfc29ced6590c7c2afa76637e001ad

  • 고립된 예상 결과 파일을 제거합니다. 이건 진작에 삭제했어야 했는데 43e084197, 해당 사양 파일이 제거되었습니다. 속이는 동안 주목 격리 테스터에 대해.https://git.젠 토토.org/pg/commitdiff/ffbe9dec13599fa786ea6567df1c6a3f3ee3c673

  • 변형 예상 결과 파일을 업데이트합니다. 이 내용은 다음에서 업데이트되어야 합니다. d2d8a229b이지만 간과되었습니다. 그것을 추가한 31a877f18에 따르면, 이것은 파일은 default_transaction_isolation에서 얻은 결과를 표시하기 위한 것입니다. = 직렬화 가능. 우리는 다른 고립 속에서 그 목표를 대부분 잊어버렸습니다. 하지만 우리가 이것을 가지고 있는 한 그것은 옳을 것입니다. 동안 주목 격리 테스터를 가지고 장난을 치고 있어요.https://git.젠 토토.org/pg/commitdiff/0a1e80c5c4f094087257fc4284a87e0bc7bca591

  • 또 다른 고아 예상 결과 파일을 제거하십시오. 중단된-keyrevoke_2.out은(는) 케이스를 처리하기 위해 추가되었을 때(0ac5ad513 커밋에서) 분명히 필요했습니다. 직렬화 가능한 트랜잭션 모드. 그러나 직렬화 모드의 출력은 실제로 일반 aborted-keyrevoke.out 파일과 일치하며 AFAICT가 수행했습니다. 그래서 오랫동안. 이 변형을 계속 드래그할 필요는 없습니다.https://git.젠 토토.org/pg/commitdiff/f6352a0d4e437ac8bc266f77df22d064592056c9

  • 다른 변형 예상 결과 파일을 업데이트합니다. 이 내용은 다음에서 업데이트되어야 합니다. 533e9c6b0이지만 간과되었습니다. 불만이 없으니 신경쓰지 않겠습니다 백패칭.https://git.젠 토토.org/pg/commitdiff/d3c878499c9d639ff06e0664d06b8c731e30c2fc

  • 일부 복제 관련 코드에서 SQLSTATE 보고를 개선합니다. 나는 시작했다 walrcv_connect() 시 ERRCODE_CONNECTION_FAILURE 보고를 목표로 합니다. 실패했지만 주위를 둘러보면서 이 코드를 작성한 사람이 누구인지 깨달았습니다. errcode는 순전히 선택 사항이라는 의견입니다. 그건 내가 이해한 게 아니야 우리의 프로젝트 정책. 따라서 각 항목에 오류 코드가 제공되었는지 확인하십시오. (a) ERROR 이상의 수준이고 (b) 내부 오류가 아니라고 보고합니다. 논리 오류. 또한 매우 의심스러운 기존 오류 코드 할당을 수정합니다. 동안 이는 정책에 따른 것이 아니며, 대부분 미용상의 문제이기도 합니다. 이러한 경우는 거의 없기 때문입니다. 응용 프로그램에 보고될 수 있습니다. 따라서 백패치를 할 필요를 느끼지 않습니다. 토론:https://postgr.es/m/2189704.1623512522@sss.pgh.pa.us https://git.젠 토토.org/pg/commitdiff/6b787d9e32005867ee3660d1ea20f447810a403d

  • ExecuteQuery 오류 후 plancache refcount 누출을 수정합니다. 계획을 채울 때 plancache에서 Portal로 이동할 때 위험을 감수해서는 안 됩니다. GetCachedPlan과 PortalDefineQuery 사이에 오류가 발생했습니다. 그렇다면 그 계획은 GetCachedPlan에 의해 증가된 참조 횟수가 유출됩니다. 나는 이것을 깨는데 성공했다 9dbf2b7d7에서 코드를 리팩토링하는 동안의 규칙입니다. 눈에 띄는 결과는 없습니다 일부 메모리 누수를 제외하고는 아무도 관련 오류 조건이 연속해서 여러 번 발생했지만 우리가 이를 확인하지 않은 것은 놀라운 일이 아닙니다. 알아 차렸다. 그럼에도 불구하고 버그이므로 작업 순서를 다음과 같이 재배치하십시오. 위험을 제거하십시오. 더 나은 버그 수정 방법을 찾는 도중에 언급됨 #17053. 이 실수는 꽤 오래되었으므로 지원되는 모든 브랜치에 백패치를 적용하세요.https://git.젠 토토.org/pg/commitdiff/131ea3e908d3c97a2fe1ab25cce5046dd5cb905f

  • 유틸리티 명령문의 보호 복사 논리를 중앙 집중화합니다. 에서 "간단한 쿼리" 코드 경로는 구문 분석이나 실행에 적합합니다. 명령문의 노드 트리에 낙서를 하는 유틸리티 명령문입니다. 나중에 버려집니다. 그러나 노드 트리가 계획 캐시는 후속 실행 시 손상될 수 있습니다. 지금까지 우리는 개별 유틸리티 설명 기능을 적용하여 이를 처리했습니다. copyObject() 트리를 수정하려는 경우. 하지만 그런 경향이 있어요 누락 오류. Charles Samborski의 버그 #17053은 CREATE/ALTER를 보여줍니다. DOMAIN은 이 메모를 받지 못했으며 계획에 따라 반복적으로 실행하면 충돌이 발생할 수 있습니다. 캐시. 뒤쪽 가지에는 가는 반창고만 붙이면 되지만, HEAD에서는 앞으로 다른 유사한 버그가 발생할 가능성이 있습니다. 그러므로 끌어올리자 copyObject를 하위 항목에서 ProcessUtility로 수행하는 책임 따라서 모든 유틸리티 설명 유형에 대해 발생하도록 보장합니다. 또한 수정 호출자가 복사 단계가 다음인지 여부를 알 수 있도록 하는 ProcessUtility의 API 필요합니다. 모든 경우에 직접 호출한 사람은 다음 사항을 알고 있는 것으로 나타났습니다. 노드 트리는 일시적이므로 엄청난 양의 코드가 필요하지 않습니다. 스래싱. 이러한 방식으로 캐시에서 실행 시 약간의 손실이 발생하지만 어쨌든 변경되지 않는 노드 트리를 복사하는 경우가 있기 때문에 코드 경로가 일회용 노드를 복사하지 않음으로써 단순 쿼리 코드 경로에서 무언가를 얻습니다. 나무. 복사 비용이 많이 들 정도로 복잡한 명령문은 거의 어차피 복사해야 할 캐시이므로 캐시 손실이 발생합니다. 코드 경로는 많지 않아야 합니다. (이 전체 문제는 다음에만 적용됩니다. 유틸리티 설명. 최적화 가능한 진술에는 문제가 없습니다. 오래 전에 실행자는 계획 트리를 읽기 전용으로 처리했습니다. 어쩌면 언젠가 우리는 유틸리티 명령문 실행도 마찬가지로 작동하도록 할 것입니다. 숨을 쉬십시오.) 토론:https://postgr.es/m/931771.1623893989@sss.pgh.pa.us토론:https://postgr.es/m/17053-3ca3f501bbc212b4@젠 토토.org https://git.젠 토토.org/pg/commitdiff/7c337b6b527b7052e6a751f966d5734c56f668b5

  • pgbench의 버전 보고를 개선합니다. 커밋 547f04e73으로 인해 pgbench가 시작되었습니다. 버전 번호를 인쇄하는 것은 좋은 생각인 것 같지만 약간의 작업이 필요합니다. 추가 작업: * 다른 경우 서버 버전 번호도 인쇄합니다. * 인쇄 일부 재구성된 근사치가 아닌 PG_VERSION 문자열입니다. 이 패치는 복사됩니다. 동일한 목적을 위한 psql의 잘 테스트된 코드입니다. 토론:https://postgr.es/m/1226654.1624036821@sss.pgh.pa.us https://git.젠 토토.org/pg/commitdiff/84bee9610965331d5110971d8de390a5bbe2effc

  • 중복된 폴롤 항목으로 인한 DROP OWNED BY의 잘못된 동작을 수정합니다. 일반적으로, pg_policy.polroles 배열은 동일한 역할을 두 번 이상 나열하지 않습니다. 하지만 CREATE POLICY는 이를 방지하지 않습니다. 역할에 대해 DROP OWNED BY를 수행하는 경우 두 번 이상 나열된 경우 RemoveRoleFromObjectPolicy에 오류가 발생했습니다. 어설션이 실패했거나 튜플 업데이트 자체 오류가 발생했습니다. 다음으로 다시 작성하세요. 중복 항목을 올바르게 처리하고 CommandCounterIncrement 호출을 추가합니다. 다른 문제를 방지하기 위해. 토론에 따르면 다른 정리가 있습니다. 여기서 발생해야 하지만 이는 최소한의 필수 수정 사항인 것 같습니다. 버그별 Alexander Lakhin의 #17062입니다. 계속 고장나서 백패치하세요. 지원되는 모든 지점. 토론:https://postgr.es/m/17062-11f471ae3199ca23@젠 토토.org https://git.젠 토토.org/pg/commitdiff/d21fca084356946664bfce19d66d2df2bb873cbd

  • v14에 추가된 libpq 기능에 대한 기능 테스트 매크로를 제공합니다. 우리한테 부탁이 있었어 새로운 버전의 가용성을 컴파일 타임에 테스트할 수 있는 방법을 제공합니다. 파이프라인 기능. 보다 일반적으로 방법을 제공하는 것이 좋은 생각인 것 같습니다. 모든 새로운 libpq API 기능을 #ifdef를 통해 테스트합니다. 사람들은 이에 대한 pg_config.h 버전; 하지만 그게 점점 더 일반화되는 시나리오에서 libpq 버전보다 서버 버전 어디가 다른지. libpq-fe.h 자체가 다음의 소스라면 더 안전합니다. 그것이 제공하는 기능에 대한 진실. 따라서 다음과 같은 정책을 수립하십시오. v14에서는 추가할 때 libpq-fe.h에 적합한 기능 존재 매크로를 추가할 것입니다. 거기에 새로운 API가 있습니다. (이 정책을 적용하는 데 별 의미가 없는 것 같습니다. 소급해서 말씀드리지만 v14에서는 아직 늦지 않았습니다.) Tom Lane과 Alvaro Herrera, Boris Kolpackov의 제안에 따라. 토론:https://postgr.es/m/boris.20210617102439@codesynesis.com https://git.젠 토토.org/pg/commitdiff/6991e774e0304f5ef488cf1ae4fa79578b6ae3d5

  • f61db909d 커밋으로 추가된 안정화 테스트 케이스입니다. 빌드팜 멤버 아유와 턴 이 쿼리에 대해 예상과 다른 계획을 표시하는 경우가 있었습니다. 나는 그랬다 오늘 이전에는 그것을 재현할 수 없었지만 마침내 그것이 무엇인지 깨달았습니다. 일어나고 있습니다. 동시 열린 트랜잭션이 있는 경우(아마도 autovacuum 빌드팜에서 실행하지만 수동으로 정렬할 수도 있음) DELETE로 제거된 몇 줄의 행에 대한 항목은 삭제되지 않습니다. 즉각적으로 계획자의 극값 추정치가 변경됩니다. ft2.c1, "c1 1100"에 대한 행 개수 추정치를 변경하기에 충분할 만큼 이동합니다. Nestloop에서 해시로의 조인 계획. 문제를 해결하려면 쿼리 조건을 다음으로 변경하세요. "c1 1000", 동시 실행 여부에 관계없이 해시 계획이 선호됩니다. 공개 거래가 존재합니다. 이 업데이트는 무작동으로 맞춤화되었기 때문에 아무것도 할 수 없습니다. 그 외는 변경됩니다. 보고서:https://buildfarm.젠 토토.org/cgi-bin/show_log.pl?nm=ayu&dt=2021-06-09%2022%3A45%3A48신고:https://buildfarm.젠 토토.org/cgi-bin/show_log.pl?nm=ayu&dt=2021-06-13%2022%3A38%3A18신고:https://buildfarm.젠 토토.org/cgi-bin/show_log.pl?nm=tern&dt=2021-06-20%2004%3A55%3A36 https://git.젠 토토.org/pg/commitdiff/5843659d091bfb6f2c60e010ea1fd00e55ee6ada

  • 간단한 표현에 대한 포털 수준 스냅샷도 복원합니다. 커밋 84f5c2908 et al은 plpgsql의 "간단한 표현" 코드를 다룰 필요성을 놓쳤습니다. 경로. COMMIT/ROLLBACK 이후에 가장 먼저 실행하는 것이 다음 중 하나라면, 본격적인 SPI 명령보다는 명시적으로 수행해야 합니다. EnachePortalSnapshotExists()를 사용하여 외부 스냅샷이 있는지 확인하세요. 참고 단지 스냅샷을 푸시하는 것만으로는 충분하지 않습니다. 표현식 실행: 돌아오는 것은 구워질 수 있으므로 더 좋습니다. 이를 보호하는 스냅샷이 있습니다. 이 사실을 보여주는 테스트 케이스는 테이블에서 가져오더라도 SQL 함수를 변경할 수 없도록 표시하여 비트를 변경합니다. 하지만 사용자가 본 적이 없는 것은 아닙니다. 보고서당 짐 나스비. 이전 수정 사항과 마찬가지로 v11로 백 패치합니다. 토론:https://postgr.es/m/378885e4-f85f-fc28-6c91-c4d1c080bf26@amazon.com https://git.젠 토토.org/pg/commitdiff/d102aafb6259a6a412803d4b1d8c4f00aa17f67e

  • 주석을 사용하여 격리 테스트 결과의 불안정성을 줄이세요. 우리는 오랫동안 완전히 안정적이지 않은 격리 테스트 결과로 인해 어려움을 겪고 있습니다. 일부 테스트 스크립트는 안정적인 결과를 강제하기 위해 긴 지연을 삽입합니다. 정말 바람직하다; 하지만 다른 불규칙한 오류 모드가 남아 있어 반복할 수 없는 빌드팜 실패. 나는 상당한 시간을 들여 노력했다. 별다른 성공 없이 서버 측 지원 코드를 개선하여 이 문제를 해결하십시오. 그런 식으로는 근본적으로 우연으로 인한 차이에 대처할 수 없습니다. 다양한 서버 프로세스에서 메시지 도착 순서. 우리는 할 수 있다 그러나 테스트 스크립트에 주석을 추가하여 클라이언트 측 문제를 개선합니다. 발생할 수 있는 이벤트에 대해 원하는 보고 순서를 표시합니다. 다른 주문. 이 패치는 (a)를 처리하기 위해 세 가지 유형의 주석을 추가합니다. 이전에 대기가 완료되거나 완료되지 않을 수 있는 테스트 단계 격리 테스터는 그들이 기다리는 것을 볼 수 있습니다. (b) 다른 세션의 테스트 단계 어느 순서로든 합법적으로 완료할 수 있습니다. (c) 다음과 같은 메시지를 통지합니다. 다른 세션의 단계가 완료되기 전이나 후에 도착할 수 있습니다. 우리 나중에 더 많은 주석 유형이 필요할 수도 있지만 이 정도면 처리하기에 충분해 보입니다. 우리가 빌드팜에서 본 불안정성 때문입니다. 그것은 또한 우리가 제거할 수 있게 해준다 이전에 사용되었던 모든 긴 지연을 줄여 1분 이상 단축 격리 테스트의 런타임을 벗어났습니다. 지원되는 모든 브랜치에 백패치를 적용합니다. 빌드팜의 불안정성은 모든 지점에 영향을 미치기 때문입니다. 모든 곳에서 Isolationtester의 기능을 동일하게 유지하는 것이 바람직해 보입니다. 향후 테스트 백패칭을 단순화하기 위한 분기입니다. 논의:https://postgr.es/m/327948.1623725828@sss.pgh.pa.us https://git.젠 토토.org/pg/commitdiff/741d7f1047fe52da7ced6fa9cea661ce9320c8d4

  • 격리 테스트에서 쿼리 결과 표시를 개선합니다. 이전에는 isolationtester는 일부 임시 코드를 사용하여 SQL 쿼리 결과를 표시했습니다. 분명히 그것에 많은 노력을 기울이지 않았습니다. 14보다 긴 필드 값 문자는 다음 필드와 분리되지 않았으며 일반적으로 기둥 정렬도 잘못되었습니다. 또한 시각적으로 분리된 부분도 없었습니다. 후속 격리 테스터 출력의 쿼리 결과입니다. 이렇게 테스트 결과가 나왔습니다 혼란스럽고 읽기 어려운 파일. 문제를 개선하기 위해 libpq를 사용해 보겠습니다. PQprint() 함수. psql에서 사용되지 않은 지 오래되었지만 여전히 여기 목적에는 충분합니다. 741d7f104와 마찬가지로 모두 백패치합니다. 백패칭에 걸림돌이 되지 않도록 브랜치를 지원합니다. 격리 테스트 변경 사항. 논의:https://postgr.es/m/582362.1623798221@sss.pgh.pa.us https://git.젠 토토.org/pg/commitdiff/4a054069a36032a59afceb07f3b837f09ab1a2e9

  • GSSAPI 결과 문자열이 null로 종료된다고 가정하지 마십시오. 우리의 용도 gss_display_status() 및 gss_display_name()은 gss_buffer_desc가 해당 함수에서 반환된 문자열은 null로 종료됩니다. 그것은 그들이 나타납니다 일반적으로 현재까지 현장 불만 사항이 부족하다는 점을 고려하면 그렇습니다. 그러나 사용 가능한 문서에서는 이를 약속하지 않으며 gss_display_status()는 gss_buffer_desc.length에 의존하는 예제를 보여줍니다. null 종료를 기대하는 대신 필드. 또한, 이제 다음과 같은 보고가 있습니다. 일부 구현에서 clang의 주소 소독기는 다음과 같은 의견을 가지고 있습니다. 지정된 길이 이후의 바이트는 정의되지 않습니다. 따라서 코드를 변경하여 의존하십시오. 대신 길이 필드에. 이건 고치기보다는 미용일 수도 있겠네요 실제 버그가 있는지 확인하기는 어렵습니다. 지원되는 모든 버그에 대해 백패치를 적용하세요. 가지. 여기에 있는 동안 pg_GSS_error를 만든 v12 변경 사항을 백패치합니다. gss_display_status에서 제공되는 여러 메시지를 정직하게 처리하세요. 당 Sudheer HR의 보고서. 토론:https://postgr.es/m/5372B6D4-8276-42C0-B8FB-BD0918826FC3@tekenlight.com https://git.젠 토토.org/pg/commitdiff/126cdaf47af275f76b2f2ddb023bfdc6f018ae30

  • Doc: 구문 요약의 LEAKPROOF에 대한 혼동을 수정했습니다. 구문 요약 CREATE FUNCTION 및 관련 명령의 경우 LEAKPROOF처럼 보입니다. 물론 직교인 경우 IMMUTABLE/STABLE/VOLATILE에 대한 대안입니다. 옵션. 그것을 개선하세요. aazamrafeeque0의 불만에 따라. 데이비드 덕분에 제안을 위해 존스턴. 토론:https://postgr.es/m/162444349581.694.5818572718530259025@wrigleys.젠 토토.org https://git.젠 토토.org/pg/commitdiff/2031e1668e5577e64cfed29da69a34903d5a5227

  • 따옴표가 없는 식별자를 격리 테스트 세션/단계 이름으로 허용합니다. 아니오 분명한 이유는 격리 테스터가 항상 세션과 단계를 주장해 왔기 때문입니다. 이름은 큰따옴표로 작성됩니다. 이것은 상당히 지루하고 거의 수행되지 않습니다. 특히 사람들이 실제로 선택하는 이름 때문에 테스트 가독성을 위해 거의 항상 일반 식별자처럼 보입니다. 따라서 어휘 분석기를 다음과 같이 조정해 보겠습니다. 큰따옴표로 묶인 문자열뿐만 아니라 SQL과 유사한 식별자도 허용합니다. (SQL과 유사합니다. 정확히 SQL은 아닙니다. 대소문자 구분 논리를 추가하지 않았기 때문입니다. 또한 없습니다 U&"..." 이름에 대한 조항은 누구도 신경 쓰지 않을 것입니다.) 하나가 있습니다 이 변경으로 인해 발생하는 비호환성: "foo""bar"를 no로 쓰면 예전에는 두 개의 식별자로 사용되었지만 이제는 하나의 식별자로 사용되는 공간 따옴표가 포함된 식별자입니다. 전부 변환했어요 src/test/isolation/specfiles를 사용하여 불필요한 큰따옴표를 제거했지만 중지되었습니다. 왜냐하면 내 눈은 이미 빛나고 있었기 때문입니다. 741d7f104와 마찬가지로 백패치 지원되는 모든 브랜치에 적용되므로 이것이 걸림돌이 되지 않습니다. 백패칭 격리 테스트 변경 사항. 토론:https://postgr.es/m/759113.1623861959@sss.pgh.pa.us https://git.젠 토토.org/pg/commitdiff/a443c1b2d6a646cf90a8afc193c07ed12a2bf045

  • postgres_fdw 테스트를 더욱 안정화하세요. ft1_nopw와 관련된 쿼리는 그렇지 않습니다. 더 이상 동일한 행을 안정적으로 반환합니다. 나는 autovacuum이 "S"를 치는 것으로 추측합니다. 1"."T 1" f61db909d/5843659d0에 의해 도입된 업데이트 직후 일부가 해제되었습니다. 공간, 후속 삽입이 저장되는 위치 변경. 단지 행운이 따르기 때문일 뿐입니다 하지만 ORDER BY가 없는 LIMIT 때문에 이전에는 이러한 결과가 안정적이었습니다. 잘 정의되어 있지 않으며 우리가 해당 테이블을 다음과 같이 처리한 적이 없습니다. 이 테스트 스크립트에서는 추가 전용입니다. 우리는 이것이 명령 성공 여부, 그냥 교체하세요."선택 *""SELECT 1" 사용. 보고:https://buildfarm.젠 토토.org/cgi-bin/show_log.pl?nm=crake&dt=2021-06-23%2019%3A52%3A08 https://git.젠 토토.org/pg/commitdiff/802177090992511c610804da54a4603d4f50c594

  • Doc: v14 릴리스 노트에서 f560209c6 커밋을 제거하세요. 이제 이것이 되었으니 백패치되었으므로 더 이상 v14의 새로운 기능이 아닙니다.https://git.젠 토토.org/pg/commitdiff/8a80562d732c0da1ddcc9fb88dfb976f4b846577

  • RemoveRoleFromObjectPolicy()에서 불필요한 실패 사례를 제거합니다. 그렇지 않다 이 기능이 연관된 관계를 열거나 잠그는 데 꼭 필요합니다. pg_policy 항목을 사용하여 수정 중입니다. 오류는 다음에서 발생하는지 확인합니다. rel은 비생산적인 것이 있는 경우입니다(예: 허용하지 않으려는 경우). 시스템 카탈로그에 정책을 설치하는 것을 방지할 수 있는 곳은 없습니다. 그). 특히 소유권 확인을 고집하는 것은 잘못된 것 같습니다. 이는 사람들이 DROP OWNED BY에 슈퍼유저를 사용하도록 강요하는 순효과를 가져옵니다. 확실히 우리가 원하는 효과는 아닙니다. 역시 재건축은 의미가 없군요 변경되지 않는 정책 표현식의 종속성. 마지막으로, 테이블을 잠그는 것도 비생산적인 것 같습니다. 그건 도움이 안 돼 경쟁 조건을 방지합니다. 이후 pg_policy 행을 다시 읽지 못했기 때문입니다. 자물쇠 획득. 이는 동시 DDL이 다음과 같은 결과를 초래할 가능성이 있음을 의미합니다. "튜플이 동시에 업데이트/삭제되었습니다" 오류; 이것은 같은 행동입니다 코드는 더 적은 오버헤드로 생성됩니다. 버그 #17062에 대한 논의에 따라. 지원되는 모든 버전에 백패치를 적용하면 실패 사례가 제거됩니다. HEAD와 마찬가지로 9.6에서도 바람직하지 않은 것 같습니다. 논의:https://postgr.es/m/1573181.1624220108@sss.pgh.pa.us https://git.젠 토토.org/pg/commitdiff/5a0f1c8c0193f0dd7fba50c22d96781fa2414007

  • stringinfo.c에서 바람직하지 않은 libpq 종속성을 제거합니다. 현명하지 않게 c0cb87fbb 커밋 fe-connect.c에 StringInfo 기계에 대한 종속성을 도입했습니다. 우리는 libpq에서는 이를 사용하지 마십시오. OOM에 도달하면 요약 종료(1)를 수행하기 때문입니다. 이는 범용 라이브러리에 적합한 동작이 아닙니다. 목표 서비스 파일에서 임의의 줄 길이를 허용하는 것은 그렇지 않은 것 같습니다. 많은 노력을 기울일 가치가 있으므로 이전 사용 방법으로 돌아가십시오. 스택 할당 버퍼 및 버퍼 오버플로로 인해 실패합니다. 이건 정확한 건 아니고 그래도 되돌리세요. 나는 단일 종료 경로를 갖도록 해당 패치의 리팩토링을 유지했습니다. 각 오류 경로를 정리하기 위해 수행할 작업을 아는 것보다 더 깨끗해 보입니다. 또한 고정 크기 버퍼를 256바이트가 아닌 1024바이트로 만들었습니다. 확장 가능한 버퍼가 좀 더 필요합니다. 여기서 할 일이 더 있습니다. 안으로 특히 이러한 유형의 실수에 대한 기계적 점검이 부족한 것 같습니다. 꽤 위험해요. 하지만 이 수정으로 우리는 이전에 가졌던 견고성 수준으로 되돌아갑니다. 어쨌든 v13에서는요. 토론:https://postgr.es/m/daeb22ec6ca8ef61e94d766a9b35fb03cabed38e.camel@vmware.com https://git.젠 토토.org/pg/commitdiff/8ec00dc5cd70e0e579e9fbf8661bc46f5ccd8078

  • Doc: c0cb87fbb 커밋 되돌리기를 위한 v14 릴리스 노트를 업데이트하세요.https://git.젠 토토.org/pg/commitdiff/dcffc9ba8a1e0ab1b0a57e9b9d38e3dc9960f83f

  • isolationtester에서 메모리 누수를 제거합니다. specscanner.l에서 1KB가 유출되었습니다. 사양 파일의 토큰당 메모리입니다. 분명히 누군가는 그렇게 생각했을 것입니다. 소개 코드 블록은 한 번 실행됩니다. 하지만 yylex()당 한 번입니다. 전화. isolationtester.c의 몇 가지 기능에서 소량의 정보가 유출되었습니다. 일회성 할당을 해제하는 데 신경 쓰지 않기 때문입니다. 그럴 수도 있지 valgrind가 이 프로그램에 깨끗한 건강 상태를 제공하도록 이를 개선하십시오. 또한 보기 흉한 정적 변수를 제거하십시오. Coverity는 다음 중 하나에 대해 불만을 제기했습니다. 일회성 누출로 인해 Valgrind'ing Isolationtester를 시도하게 되었고, 이로 인해 더 큰 누출을 발견했습니다.https://git.젠 토토.org/pg/commitdiff/642c0697c96b9c6ba5d194653a329f7820565f01

Michaël Paquier가 푸시됨:

  • VACUUM FULL/CLUSTER에서 강제 토스트 재압축을 제거합니다. 추가 점검 bbe0a81에 도입된 토스트 데이터를 재압축하여 추가한 것은 재압축이 없더라도 VACUUM 또는 CLUSTER의 성능에 영향을 미칩니다. 완료. 이는 다음을 포함하는 토스트 가능한 열이 많을수록 더욱 두드러집니다. NULL이 아닌 값. 추가 검사를 줄이기 위해 개선이 이루어질 수 있습니다. 비싸지만 현 단계에서는 14명에게는 중요하지 않으며 확실하지 않습니다. VACUUM FULL/CLUSTER의 코드 경로가 이 작업에 맞게 조정된 경우입니다. 당 Andres Freund, Robert Haas, Álvaro를 포함한 여러 사람과의 토론 헤레라, 톰 레인, 그리고 나. 논의:https://postgr.es/m/20210527003144.xxqppojoiwurc2iz@alap3.anarazel.de https://git.젠 토토.org/pg/commitdiff/dbab0c07e5ba1f19a991da2d72972a8fe9a41bda

  • pg_event_trigger_ddl_commands()에서 삭제된 개체 처리를 개선합니다. 안 에서 반환된 개체 목록을 조사할 때 삭제된 개체가 발견되었습니다. pg_event_trigger_ddl_commands() 호출로 인해 캐시 조회 오류가 발생할 수 있습니다. 개체 주소를 가져오면 개체가 다음과 같은 경우 유형 이름이 실패합니다. 실종. 이러한 조회 오류는 ALTER TABLE 조합으로 볼 수 있습니다. ID 열과 관련된 하위 명령입니다. 조회 논리가 변경되었습니다. 다른 SQL 호출 가능 함수와 유사한 동작을 얻기 위한 코드 경로 2a10fdc를 활용하여 찾을 수 없는 개체를 무시합니다. 는 백브랜치는 너무 커밋이 필요하기 때문에 변경되지 않습니다. 안정적인 지점에 침입적입니다. 그 동안 연습 이벤트에 테스트 케이스를 추가하세요. ID 열로 트리거하고 이벤트로 더 많은 사례를 강조합니다. 관계에 대한 ddl_command_end. 저자: Sven Klemm, Aleksander Alekseev, Michael Paquier 토론:https://postgr.es/m/CAMCrgp2R1cEXU53iYKtW6yVEp2_yKUz+z=3-CTrYpPP+xryRtg@mail.gmail.com https://git.젠 토토.org/pg/commitdiff/2d689babe3cb50dcb29f6ed595a61d56e518c0d8

  • doc: <productname 마크업을 OpenSSL에 보다 일관되게 적용합니다. 저자: 다니엘 구스타프손 토론:https://postgr.es/m/CE12DD5C-4BB3-4166-BC9A-39779568734C@yesql.se https://git.젠 토토.org/pg/commitdiff/f80979f659d39e238e95444e6752142799428078

  • pgbench의 TAP 테스트에서 로그에 대한 패턴 일치 논리를 수정했습니다. 논리 직접 "$re"와 함께 grep()을 사용하여 스레드별 로그 형식을 확인합니다. 이로 인해 테스트에서는 신경쓰지 않고 모든 로그를 일치 항목으로 간주하게 됩니다. 그들의 형식에 대해 전혀. "/$re/"를 사용하면 grep()이 정규식 테스트를 수행하게 됩니다. 이것이 우리가 여기서 원하는 것입니다. 그 동안 일부 테스트를 더 많이 개선하세요. 예상되는 패턴을 까다롭게 선택하고 테스트를 설명하는 주석을 더 추가하세요. 별도의 패치를 조사하는 동안 발견된 문제입니다. 저자: 파비앙 코엘료 Michael Paquier 토론:https://postgr.es/m/YNPsPAUoVDCpPOGk@paquier.xyz백패치 통과: 11https://git.젠 토토.org/pg/commitdiff/c13585fe9e55813cf9feac67fe7b65d3a78fff92

  • doc: Remove_temp_files_after_crash를 개발자 옵션 섹션으로 이동하세요. 는 이 옵션의 주요 목표는 디버깅을 위해 임시 파일을 검사할 수 있도록 하는 것입니다. 목적이므로 매개변수를 그곳으로 옮기는 것이 자연스럽습니다. cd91de0의 감독. 보고자: Justin Pryzby 저자: Euler Taveira 토론:https://postgr.es/m/20210612004347.GP16435@telsasoft.com https://git.젠 토토.org/pg/commitdiff/797b0fc0b078c7b4c46ef9f2d9e47aa2d98c6c63

  • pgbench의 TAP 테스트에서 로그 확인을 통해 더 많은 디버깅 정보를 추가하세요. Fairywren은 c13585f에서 도입된 패턴 검사에 만족하지 않습니다. 나는 아니다 이것이 pgbench의 버그를 설명하는 것인지, 아니면 정규식 패턴이 이 빌드팜 구성원의 환경에는 테스트가 너무 제한적입니다. 이것은 추가합니다 더 많은 디버깅 정보를 통해 일치하지 않는 로그 항목을 표시합니다. 무슨 일이 일어나고 있는지 알아내는 데 도움이 될 것으로 예상되는 패턴입니다. 그건 마치 어쨌든 그것이 유일한 문제는 아닐 수도 있기 때문에 장기적으로 보면 좋은 추가입니다. 이 지역. 토론:https://postgr.es/m/YNUad2HvgW+6eXyo@paquier.xyz https://git.젠 토토.org/pg/commitdiff/87b2124dfa0782a697ea7b90aff15a6f6117a720

  • doc: MITM 및 SNI의 약어를 추가합니다. 이는 MITM과 SNI를 약어로 추가합니다. 문서에는 이미 <acronym으로 표시되어 있습니다. 그 동안 만들어 보세요. Man-in-the-Middle 철자를 일관되게 대시로 입력하고 약어를 추가하세요. 적절한 경우 새로운 용어. 저자: Daniel Gustafsson 검토자: Michael Paquier 토론:https://postgr.es/m/CE12DD5C-4BB3-4166-BC9A-39779568734C@yesql.se https://git.젠 토토.org/pg/commitdiff/15ff5401d1719aaf6c9a47e5abea517cc2bcbaf1

  • TAP 테스트에서 pgbench 로그 확인과 관련된 일부 코드를 정리합니다. 이 문제가 해결되었습니다. 이 커밋 주제의 소위 코드 내에서 몇 가지 문제가 있습니다. - 교체 slurp_file()과 함께 open() 사용, buildfarm에서 보고된 문제 수정 Perl 설치가 CRLF 문자 주변을 유지하는 회원 Fairywren 로그에 대한 일치 패턴이 실패합니다. - eval 블록을 제거합니다. 별로 필요하지 않습니다. 이 문제는 문제를 해결한 후 밝혀졌습니다. c13585fe와는 다른 문제가 있습니다. 이 코드는 소개되었습니다. 보고자: Andrew Dunstan 및 Buildfarm 회원 Fairywren 저자: Michael Paquier 검토자: Andrew Dunstan 토론:https://postgr.es/m/0f49303e-7784-b3ee-200b-cbf67be2eb9e@dunslane.net백패치 통과: 11https://git.젠 토토.org/pg/commitdiff/38ff135d9466c35b506b1049fedef73047907be0

  • pgbench의 TAP 테스트에서 쓸모없는 로그를 제거하세요. 002_pgbench_no_server 실제 내용 대신 일부 배열 포인터를 인쇄하고 있었습니다. 테스트된 명령에 대한 stdout 및 stderr의 예상 출력에 대한 배열입니다. 이는 테스트로서 디버깅에 도움이 될 수 있는 새로운 정보를 추가하지 않습니다. 이름을 사용하면 오류 위치를 추적할 수 있습니다(있는 경우). 이 커밋은 단순히 제거됩니다. 인쇄된 나머지 정보와 같은 로그는 중복됩니다. command_checks_all(). Andrew Dunstan 및 Álvaro Herrera와의 토론에 따라. 토론:https://postgr.es/m/YNXNFaG7IgkzZanD@paquier.xyz백패치 스루: 11https://git.젠 토토.org/pg/commitdiff/704e1dbd9aa29a0b46c356f1803ad55cbdef2c20

  • MSVC의 Solution.pm에서 존재하지 않는 변수 참조를 제거합니다. 버전 문자열은 이후 MSVC 빌드의 pg_config.h에 있는 PACKAGE_VERSION에서 가져옵니다. 8f4fb4c6이지만 오류 메시지는 그 이전에 존재했던 변수를 참조했습니다. 버전을 충분히 망친 경우를 제외하고는 아무런 결과도 없었습니다. 빌드 번호. 저자: Anton Voloshin 토론:https://postgr.es/m/af79ee1b-9962-b299-98e1-f90a289e19e6@postgrespro.ru백패치 쓰루: 13https://git.젠 토토.org/pg/commitdiff/d5a2c413fcdd187dc16c4fab16610af7d4849cc1

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

Álvaro Herrera가 푸시됨:

  • 1632ea43682f의 논리 버그 수정. 나는 한 가지 조건이 논리적이라는 것을 간과했습니다. 거꾸로. 수정은 단순히 부정하는 것보다 조금 더 복잡합니다. 조건을 사용하면 코드를 더 쉽게 읽을 수 있습니다. 오래된 댓글 중 일부가 남아 있는 것을 수정하세요. 같은 커밋으로, 동시에. 저자 : 사와다 마사히코sawada.mshk@gmail.com저자: 알바로 에레라alvherre@alvh.no-ip.org검토자: Amit Kapilaamit.kapila16@gmail.com토론:https://postgr.es/m/YMRlmB3/lZw8YBH+@paquier.xyz https://git.젠 토토.org/pg/commitdiff/33c509956704e1d918077b51ccd954f2e201a8f5

  • 활성 Walsender를 사용하여 더 이상 사용되지 않는 슬롯에 대한 테스트 케이스를 추가합니다. 신호를 보내는 코드 예약된 WAL 크기가 너무 커지면 walsender를 실행하는 것은 완전히 이 커밋 전에 발견되었습니다. 이는 해당 사례에 대한 적용 범위를 추가합니다. 이 테스트 walsender 및 walreceiver에 SIGSTOP을 보내고 체크포인트를 실행하는 작업이 포함됩니다. WAL을 진행하는 동안 SIGCONT를 보냅니다. 이에 대한 전례가 없습니다 Perl 테스트에서 코딩을 하고 관련 맨페이지를 읽어보니 Windows에서는 실패합니다. 이 때문에 이 테스트는 항상 건너뛰게 됩니다. 플랫폼. 저자: 알바로 에레라alvherre@alvh.no-ip.org토론:https://postgr.es/m/202106102202.mjw4huiix7lo@alvherre.pgsql https://git.젠 토토.org/pg/commitdiff/09126984a2631db8dd6299f23954e0dede69735f

  • "활성 Walsender가 있는 쓸모없는 슬롯에 대한 테스트 케이스 추가"를 되돌립니다. 이는 되돌립니다. 커밋 09126984a263; 거기에 추가된 테스트 케이스는 상황에 따라 한 번 실패했습니다. 미스터리하게 남아 있는 것. 지금은 테스트를 제거하는 것이 더 나은 것 같습니다. 14beta2에는 무작위 오류가 내장되어 있지 않습니다.https://git.젠 토토.org/pg/commitdiff/96795176810b979a2bf1f4563bdcb161679d5b95

  • 활성 Walsender가 있는 더 이상 사용되지 않는 슬롯에 대한 테스트 사례를 추가합니다. 2를 선택합니다. 코드는 예약된 WAL 크기가 너무 커지면 실행 중인 Walsender에 신호를 보냅니다. 이 커밋 전에 완전히 노출되었습니다. 이는 해당 사례에 대한 적용 범위를 추가합니다. 이 테스트에는 SIGSTOP을 walsender 및 walreceiver로 보내는 작업이 포함됩니다. 체크포인트가 트리거될 만큼 WAL을 충분히 발전시킨 다음 SIGCONT를 보냅니다. Perl 테스트에는 STOP 신호에 대한 선례가 없습니다. 관련 맨페이지에는 Windows에서 실패할 가능성이 있다고 나와 있습니다. 이 때문에 이 해당 플랫폼에서는 테스트를 항상 건너뜁니다. 이 버전에서는 몇 가지 문제가 수정되었습니다. 이전 시도 09126984a263에서는 경쟁 조건이 거의 발생하지 않았습니다. 특히, 두 LOG 문자열 검색은 두 번째 검색뿐만 아니라 루프입니다. 우리는 STOP 신호를 보내기 전의 로그 시작 위치; 그리고 정확한 내용을 참고하세요 테스트 설명의 프로세스 이름. 톰 레인의 모든 것. 작가: 알바로 헤레라alvherre@alvh.no-ip.org토론:https://postgr.es/m/202106102202.mjw4huiix7lo@alvherre.pgsql https://git.젠 토토.org/pg/commitdiff/24043c27b46f873211177e3460ab09dc011802a5

Noah Misch가 밀었습니다:

Amit Kapila가 푸시됨:

Alexander Korotkov가 밀었습니다:

Peter Geoghegan이 밀었습니다:

  • VACUUM 상태에서 불필요한 필드를 제거합니다. Bugfix 커밋 5fc89376 효과적으로 Vacuumlazy.c의 전역 상태 구조체에서 lock_waiter_Detected 필드를 만들었습니다. lazy_truncate_heap()이 소유한 비공개 상태로 전환됩니다. 이걸로 끝내세요 구조체 필드를 지역 변수로 바꿉니다.https://git.젠 토토.org/pg/commitdiff/958cfbcf2dd338e3179c2d8a35f48bde020eba60

  • VACUUM에 의한 인덱스 우회 비활성화를 지원합니다. INDEX_CLEANUP 일반화 VACUUM 매개변수(및 해당 reloption): 삼항으로 만듭니다. 스타일 부울 매개변수입니다. 이제 세 번째 옵션인 "auto"가 표시됩니다. "자동" 옵션(현재 기본값)은 "바이패스 인덱스 진공화"를 활성화합니다. 커밋 1e55e7d1에 의해 최적화가 추가되었습니다. "VACUUM(INDEX_CLEANUP TRUE)"은 다시 한 번 VACUUM이 필요한 인덱스 진공 작업을 수행하도록 재정의되었습니다. 첫 번째 스캔 중에 얼마나 적은 수의 데드 튜플이 발견되었는지에 관계없이 대상 힙 관계(정확히 0이 아닌 경우) 이는 사용자에게 방법을 제공합니다. "우회 인덱스 진공화" 최적화를 선택 해제하는 경우 꼭 필요한 이유. PostgreSQL에서도 사용될 것으로 예상됩니다. 개발자는 때때로 테스트 옵션으로 사용됩니다. "진공(INDEX_CLEANUP FALSE)"는 항상 그랬던 것처럼 동일한 작업을 수행합니다. 즉, 두 인덱스를 강제로 비활성화합니다. 진공 청소 및 인덱스 정리. PostgreSQL에서는 많이 사용될 것으로 예상되지 않습니다.

  • 커밋 1e55e7d1에 의해 추가된 안전 장치 메커니즘은 동일한 주소를 처리합니다 더 간단한 방법으로 문제를 해결하세요. INDEX_CLEANUP은 이제 테스트 및 호환성 옵션. 저자: Peter Geogheganpg@bowt.ie검토자: 사와다 마사히코sawada.mshk@gmail.com검토자: Justin Pryzbypryzby@telsasoft.com토론:https://postgr.es/m/CAH2-WznrBoCST4_Gxh_G9hA8NzGUbeBGnOUC8FcXcrhqsv6OHQ@mail.gmail.com https://git.젠 토토.org/pg/commitdiff/3499df0dee8c4ea51d264a674df5b5e31991319a

  • 과도한 VACUUM 안전 장치 주장을 제거합니다. 안전 장치는 다음과 같은 경우에 트리거될 수 있습니다. 인덱스 처리가 이미 비활성화되었습니다. VACUUM이 작동 중일 때 이런 일이 발생할 수 있습니다. INDEX_CLEANUP 매개변수가 "off"이고 안전 장치가 트리거됩니다. 제거 인덱스 처리가 안전 장치에 직접 연결되어 있다고 가정하는 주장. c242baa4 커밋에 대한 감독으로 인해 안전 장치가 다음과 같이 가능해졌습니다. 아직 첫 번째 호출을 수행하지 않은 2단계 전략 VACUUM을 트리거합니다. lazy_vacuum_all_indexes().https://git.젠 토토.org/pg/commitdiff/e8f201ab82be234b2f103234cf9f262f9afeaeba

  • git-blame에 대해 무시할 수 있는 pgindent 커밋 목록을 추가합니다. 추가 pgindent, pgperlyidy 및 목록이 포함된 .git-blame-ignore-revs 파일 reformat-dat-files는 해시를 커밋합니다. git을 사용하도록 구성하는 Postgres 해커 무시 파일은 줄 변경을 방지하는 git-blame 출력을 얻습니다. 무시된 들여쓰기 커밋에. 이렇게 하면 git-blame 출력이 훨씬 쉬워집니다. 실제로 함께 일하십시오. 저자: Peter Geogheganpg@bowt.ie검토자: Tom 레인tgl@sss.pgh.pa.us토론:https://postgr.es/m/CAH2-Wz=cVh3GHTP6SdLU-Gnmt2zRdF8vZkcrFdSzXQ=WhbWm9Q@mail.gmail.com https://git.젠 토토.org/pg/commitdiff/8e638845ff6bb255ad1dea15831089a234535391

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

  • Stuck_on_old_timeline 복구 테스트를 더욱 개선했습니다. TestLib::perl2host 파일 인수와 디렉터리 인수를 취할 수 있으므로 코드는 다음과 같습니다. 상당히 간단합니다. 슬래시를 사용하는 이유에 대한 설명도 추가하세요. PERL_BADLANG=0으로 설정한 이유도 있습니다. 토론:https://postgr.es/m/e9947bcd-20ee-027c-f0fe-01f736b7e345@dunslane.net https://git.젠 토토.org/pg/commitdiff/54a5ed22016940d7ad5060ed62d23473924756a1

  • 일반 테이블 외에는 빠른 기본값을 설정하지 마십시오. 빠른 기본 코드 릴리스 11에 추가됨 테이블이 빠른 기본값인지 확인하기 위해 생략됨 일반 테이블이 추가되었습니다. 따라서 하나는 외부 테이블에 추가될 수 있습니다. 예상대로 터진다. 여기에서 해당 검사를 수행합니다. 게다가 뒷면에는 가지 중 일부는 야생으로 탈출했을 수도 있습니다. 일반 속성이 아닌 속성에 누락된 값이 있는 경우 테이블은 무시합니다. 버그 #17056 Backpatch를 릴리스 11로 수정했습니다. 검토자: 안드레스 프로인드, 알바로 에레라, 톰 레인https://git.젠 토토.org/pg/commitdiff/0a4efdc7ebf2584257b166c87e82797eb92815b5

Heikki Linnakangas가 밀었습니다:

  • WAL 파일의 위치 탐색에 관해 이야기하는 오래된 주석을 수정합니다. 커밋 이후 c24dcd0cfd, 우리는 WAL 파일을 읽기 위해 pg_pread()를 사용해 왔습니다. 탐색 위치를 변경합니다(다음 구현으로 돌아가지 않는 한). src/port/pread.c). 이에 따라 의견을 업데이트하십시오. 백패치 쓰루: 12, 여기서 우리는 pg_pread()를 사용하기 시작했습니다.https://git.젠 토토.org/pg/commitdiff/d0303bc8d2670d11c9df9220aa08a2c33529e100

  • 오류 발생 시 GetMultiXactIdMembers()의 동작을 정리합니다. 오류 경로 중 하나 왼쪽*회원초기화되지 않았습니다. 대부분의 호출자가 그렇지 않기 때문에 이는 라이브 버그가 아닙니다. 봐봐*회원함수가 -1을 반환할 때, 하지만 깔끔하게 정리합시다. 발신자 한 명, heap_lock_tuple()에서는 "if (members != NULL) pfree(members)"를 수행하지만 AFAICS 잘못된 '다중' 값을 전달하지 않으므로 해당 오류에 도달해서는 안 됩니다. 사건. 발신자의 기대치도 약간 일치하지 않습니다. heap_lock_tuple()은 'members' 배열이 NULL이 아니면 pfree()하고, 다른 것들은 pfree()입니다. "nmembers = 0"인 경우, "nmembers 0"인 경우입니다. 그거 살아있는 버그가 아니잖아 둘 중 하나는 함수가 0을 반환해서는 안 되기 때문입니다. 이에 대해 Assert를 추가하세요. 더 명확하게하기 위해. 지금은 발신자를 내버려 두었습니다. 나도 옮겼어. 우리가 설정한 라인*n회원. 예전에는 틀리지 않았지만 난 그런 걸 좋아해 항상 켜져 있음을 분명히 하기 위해 'return' 문 바로 옆에 반환. 또한 ereport(ERROR) 이후에 연결할 수 없는 반환 문 하나를 제거합니다. 간결함과 바로 뒤에 있는 유사한 if 블록과의 일관성을 위해. 작성자: Greg Nancarrow(나의 추가 변경 사항 포함) 9.6, 지원되는 모든 버전https://git.젠 토토.org/pg/commitdiff/d24c5658a80c8f5037e9e1948de311d3f3350f12

  • relmapper 파일을 읽는 동안 경쟁 조건을 방지합니다. 댓글과 달리 여기서 POSIX는 다른 프로세스가 호출하는 경우 read()의 원자성을 보장하지 않습니다. write()를 동시에 수행합니다. 아니면 적어도 리눅스는 그렇지 않습니다. 잠금 추가 경쟁 조건을 방지하려면 load_relmap_file()을 사용하세요. 버그 #17064를 수정했습니다. 덕분에 보고서 및 테스트 케이스를 작성해 주신 Alexander Lakhin입니다. 백패치 스루: 9.6, 모두 지원되는 버전. 논의:/message-id/17064-bb0d7904ef72add3@젠 토토.org https://git.젠 토토.org/pg/commitdiff/b6d8d2073f228d9f7198f1f9826d8f6ab643c219

  • relmapper 경쟁 조건에 대한 또 다른 수정 사항입니다. 이전 커밋에서 나는 그것을 놓쳤습니다. relmap_redo()도 RelationMappingLock을 획득하지 못했습니다. 토마스 덕분에 먼로가 그 점을 지적해 주었습니다. 백패치 통과: 9.6, 이전 커밋과 같습니다. 토론:/message-id/CA%2BhUKGLev%3DPpOSaL3WRZgOvgk217et%2BbxeJcRr4eR-NttP1F6Q%40mail.gmail.com https://git.젠 토토.org/pg/commitdiff/9b8ed0f52bffceaccf6fa650ffe482e7da20fbf2

Tomáš Vondra가 밀었습니다:

  • FDW 일괄 처리를 사용하여 슬롯에 데이터를 복사하는 문제를 수정했습니다. b676ac443b 최적화 커밋 외부 테이블에 대량 삽입이 포함된 튜플 슬롯을 처리하므로 슬롯은 한 번만 초기화되고 모든 배치에 재사용됩니다. 데이터는 그러나 초기화 후에만 슬롯에 복사되어 삽입됩니다. 슬롯이 재사용되면 값이 중복됩니다. ExecCopySlot을 이동하여 수정됨 init 브랜치 외부. 기존 postgres_fdw 테스트에서는 이를 포착하지 못했습니다. 고유 인덱스 없이 외부 테이블에 데이터를 삽입하기 때문에 삽입된 행 수만 확인합니다. 그러면 두 가지 모두에 새로운 테스트가 추가됩니다. 고유 인덱스 및 삽입된 값 확인. 보고자: Alexander Pyhalov 토론:https://postgr.es/m/7a8cf8d56b3d18e5c0bccd6cd42d04ac%40postgrespro.ru https://git.젠 토토.org/pg/commitdiff/99cea49d6525e30bc3768e4ffb95377e7584dea1

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

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

David Rowley가 다음을 밀었습니다:

  • expand_grouping_sets의 주장 실패를 수정했습니다. linitial_node()가 어설션에 실패함 지정된 포인터가 지정된 유형이 아닌 경우 활성화됩니다. 여기서는 유형은 IntList입니다. 코드에서는 List를 기대해야 한다고 생각했지만 실제로는 그렇지 않았습니다. 틀렸어. 이 코드를 실행하는 기존 테스트에서 초기 목록 요소는 다음과 같습니다. 항상 NIL. linitial_node()는 NULL을 허용하므로 어설션을 트리거하지 않았습니다. 기존 회귀 테스트의 실패. 아직 논의가 있는 부분은 다음과 같습니다. 이 영역에서 몇 가지 테스트가 더 필요한지 여부에 대해 문의하고 있지만 현재로서는 베타2가 곧 버그를 먼저 수정하세요. 버그: #17067 토론:https://postgr.es/m/17067-665d50fa321f79e0@젠 토토.org보고자: Yaoguang Chenhttps://git.젠 토토.org/pg/commitdiff/8d29d45d9b3cab95a866efbcdd9138b3d76741b3

Andres Freund가 밀었습니다:

  • 카탈로그 관계를 정리할 때 올바른 수평선을 사용하십시오. dc7420c2c92에서 나는 (Andres)는 실수로 RelationIsAccessibleInLogicalDecoding()을 단독으로 사용했습니다. 비공유 카탈로그 지평선을 사용하기 위한 조건 GetOldestNonRemovableTransactionId(). 그것은 잘못된 것입니다. RelationIsAccessibleInLogicalDecoding()은 wal_level이 논리적인지 확인합니다. 예를 들어 올바른 검사가 완료되었습니다. GlobalVisTestFor()에서 확인하는 것입니다. IsCatalogRelation() 및 RelationIsAccessibleInLogicalDecoding(). 관찰된 이 버그의 잘못된 동작은 무한 루프가 발생할 수 있다는 것입니다. lazy_scan_prune(), heap_page_prune()에 사용된 horizon과 개별 튜플 활성도 검사가 일치하지 않습니다. 아마 다른 것들도 있을 것 같아요 잠재적인 결과도 마찬가지입니다. 나중에 커밋하면 결정이 통합됩니다. 어떤 지평선을 사용해야 하는지, 더 쉽게 만들 수 있도록 추가 주장을 추가하세요. 이런 버그를 잡으려면. 보고자: Justin Pryzbypryzby@telsasoft.com진단자: Matthias van de Meentboekewurm+postgres@gmail.com저자: Matthias van de Meentboekewurm+postgres@gmail.com토론:https://postgr.es/m/CAEze2Wg32Y9+WJfw=aofkRx1ZRFt_Ev6bNPc4PSaz7PjSFtZgQ@mail.gmail.com https://git.젠 토토.org/pg/commitdiff/5a1e1d83022b976ebdec5cfa8f255c4278b75b8e

조 콘웨이가 밀었습니다:

토마스 먼로가 밀었습니다:

  • 다가올 LLVM 13 API 변경에 대비하세요. LLVM 13(9월 출시 예정)은 LLVMOrcAbsoluteSymbols()의 의미를 변경했으므로 몇 가지 사항을 추가해야 합니다. 충돌 및 잘못된 쿼리를 유발하는 이중 해제를 방지하기 위한 참조 횟수 결과. 시간이 부족하지 않도록 적극적인 변화가 필요해 보입니다. 각각의 최신 릴리스가 상호 작용이 좋지 않을 수 있습니다. 그럴 수도 있지 하지만 그 전에 상황이 바뀔 수 있습니다. Fabien Coelho에게 감사드립니다. 변경 사항을 추적하기 위해 최첨단 LLVM 및 Andres Freund를 모니터링합니다. JIT 코드가 도착한 11로 백패치합니다. 논의:https://postgr.es/m/CA%2BhUKGLEy8mgtN7BNp0ooFAjUedDTJj5dME7NxLU-m91b85siA%40mail.gmail.com https://git.젠 토토.org/pg/commitdiff/9b4e4cfe66ff133717c1b8ba3c2725d525c3e67c

보류 중인 패치

Nitin Jadhav는 다음 패치를 추적할 수 있는 방법을 만들기 위해 또 다른 패치 개정판을 보냈습니다. 시작 프로세스 중에 수행되는 작업의 진행 상황입니다.

Yuzuko Hosoya는 파티션에 대한 자동 분석 실행 여부를 제어하기 위해 패치를 보냈습니다 새로운 GUC autovacuum_analyze_attach_partition을 통한 작업, autovacuum_analyze_detach_partition 및 autovacuum_analyze_drop_partition.

Peter Eisentraut가 인덱스 OID 매크로 인수를 추가하기 위해 패치를 보냈습니다. DECLARE_INDEX. AmOidIndexId와 같은 기호를 명시적으로 정의하는 대신 DECLARE_INDEX()의 인수로 포함하고 genbki.pl에서 CATALOG() 선언의 테이블 OID 기호와 같은 방식으로

Filip Gospodinov는 다음과 같은 버그를 수정하기 위해 패치를 보냈습니다. libpq를 정적으로 연결하기 위해 배송된 pkg-config 파일이 손상되었습니다. libpgcommon 및 libpgport가 누락되었습니다. 수정 사항은 누락된 두 개의 개인 정보를 추가합니다. 종속성.

Heikki Linnakangas가 xlog.c를 분할하기 위해 또 다른 패치 개정판을 보냈습니다. xlog.c 및 xlogrecovery.c. WAL 수행과 관련된 기능을 이동합니다. 새로운 xlogrecovery.c 소스 파일로 복구하고 xlog.c에 책임을 맡깁니다. WAL 버퍼 유지, 시작 조정 및 복구 전환 정상적인 운영 및 항상 있었던 기타 잡다한 것들 xlog.c

Greg Nancarrow는 쓸모없는 int64를 제거하기 위해 패치의 두 개정판을 보냈습니다. BIGINT 시퀀스 MINVALUE/MAXVALUE 값에 대한 범위 검사입니다.

Peter Geoghegan은 무시할 수 있는 항목 목록을 추가하기 위해 세 가지 패치 개정판을 보냈습니다. pgindent는 "git 비난"을 커밋합니다.

David Rowley가 새로운 해시 테이블 유형을 추가하기 위해 패치의 다른 개정판을 보냈습니다 안정적인 포인터가 있고 이를 사용하여 SMgr 속도를 높입니다.

Peter Smith와 Ajin Cherian은 준비된 지원 옵션을 추가하기 위해 패치를 교환했습니다. 내장된 논리적 복제에 대한 트랜잭션입니다.

Daniel Gustafsson과 Michaël Paquier는 일부 SSL/TLS를 문서화하기 위해 패치를 교환했습니다. 관련 약어를 사용하고 SSL 사용을 SSL/TLS로 대체합니다. 후자가 더 많습니다. 정확하고 최신입니다.

Simon Riggs는 문서 장을 추가하기 위해 세 가지 패치 개정판을 보냈습니다. 해시 인덱스.

Atsushi Torikoshi는 로그에 기능을 추가하기 위해 패치의 다른 개정판을 보냈습니다 전체 쿼리 문자열과 현재 실행 중인 쿼리에 대한 계획 지정된 프로세스 ID를 가진 백엔드입니다.

Li Japin은 사소한 코드를 미화하기 위해 패치를 보냈습니다. RelationGetIdentityKeyBitmap.

Bertrand Drouvot는 최소한의 논리를 활성화하기 위해 다른 패치 개정판을 보냈습니다. 대기 상태에서 디코딩합니다.

Alexander Pyhalov는 CASE 푸시를 허용하는 패치의 또 다른 개정판을 보냈습니다. 외국 서버에 대한 표현입니다.

Peter Eisentraut가 유니코드 makefile을 더 많이 만들기 위한 패치를 보냈습니다 병렬 안전, UCS_to_most.pl 프로세스 인코딩을 정렬된 순서로 만들고 제거 생성된 C 출력에 약간의 공백을 두어 코딩 스타일에 맞게 조정합니다. 나머지 프로젝트에서는 코드 생성 코드를 단순화하고 들여쓰기를 수정합니다. 생성된 출력에서.

Maxim Orlov가 병렬 작업자를 수정하기 위해 다른 패치 개정판을 보냈는데 실패했습니다. 어설션 및 코어 덤프.

Vigneshwaran C는 스키마 수준 지원을 추가하기 위해 패치의 두 개정판을 추가로 보냈습니다. 출판용.

Mike Fiedler가 복사 후 출력에서 네임스페이스를 방출하기 위해 패치를 보냈습니다.

Emre Hasegeli는 인덱스 액세스에서 운영자 클래스를 분리하기 위해 패치를 보냈습니다 방법.

Jacob Champion은 SASL 프레임워크를 분리하기 위해 두 가지 패치 개정판을 보냈습니다. SCRAM 코드에서 별도로 유용할 수 있습니다.

Yugo Nagata는 일부 Pgbench 오류를 해결하기 위해 패치의 다른 개정판을 보냈습니다 클라이언트 변수에 대한 변수 구조를 사용합니다. 이것이 가장 중요하다 트랜잭션 반복 중에 클라이언트 변수를 재설정하는 데 사용되는 경우 직렬화/교착 상태 실패 후. 변수 구조체를 하나씩 할당하지 마십시오. 하나. 대신, 오버플로될 때마다 일정한 여백을 추가하세요. 또한 수정 사항이 포함되어 있습니다. pgbench 오류 및 직렬화/교착 상태 재시도용.

Jacob Champion, Michaël Paquier 및 Tom Lane은 이를 가능하게 하기 위해 패치를 교환했습니다. libpq와 함께 jsonapi를 사용합니다.

Gurjeet Singh은 상위 거래에 대한 자동 알림을 추가하기 위해 패치를 보냈습니다 ID.

Haiying Tang은 탭 완성을 지원하기 위해 또 다른 패치 개정판을 보냈습니다. psql의 대문자 입력에 대한 쿼리 결과입니다.

Peter Eisentraut는 genbki 오류 처리를 더욱 유용하게 만들기 위해 패치를 보냈습니다. 단순히 경고를 작성하는 대신 마지막에 오류 및 오류를 계산합니다. 잘못된 교차 카탈로그 조회의 경우.

Daniel Gustafsson이 NSS를 TLS로 지원하기 위해 다른 패치 개정판을 보냈습니다 libpq용 백엔드.

Andrey V. Lepikhov는 genericcostestimate()의 색인을 알리기 위해 패치를 보냈습니다 고유한 단일 행 btree의 경우 선택도 값 index, scan은 한 행만 반환될 수 있습니다.

Tomáš Vondra는 다음이 가능하도록 패치의 또 다른 개정판을 보냈습니다. 논리적 디코딩에서 시퀀스를 복제합니다.

Ranier Vilela가 초기화되지 않은 copy_data 변수를 수정하기 위해 패치를 보냈습니다. src/백엔드/명령/subscriptioncmds.c.

Peter Eisentraut는 오류 메시지를 개선하기 위해 다른 패치 개정판을 보냈습니다. 기본 오류 메시지를 더 짧게 만들고 다음과 같이 말하여 relkind 불일치에 대해 설명합니다. 더 직접적으로는 시도한 것이 불가능하다는 것입니다.

Peter Eisentraut는 UNBOUNDED 구문 모호성에 대한 테스트를 추가하기 위해 패치를 보냈습니다.

Simon Riggs가 pgbench에서 COPY FREEZE를 사용하도록 패치를 보냈습니다.

저스틴 프리즈비(Justin Pryzby)는 이중 괄호를 피하기 위해 패치를 보냈고 다음의 주석을 수정했습니다. tablefunc.c에서 올바른 주석을 참조하세요.

Craig Ringer는 PGDLLIMPORT를 추가하여 패치를 보내 일부를 노출시켰습니다. 지금까지 Windows에서는 사용할 수 없는 기능입니다.

Amit Kapila는 추측 이후 변경 사항을 스트리밍할 수 있도록 패치를 보냈습니다. 중단됩니다.

구로다 하야토는 ECPG의 새로운 DECLARE STATEMENT가 작동하도록 패치를 보냈습니다. 할당 해제 및 설명.

Bruce Momjian이 클러스터 파일을 구현하기 위해 패치의 다른 개정판을 보냈습니다 암호화.

Jie Zhang이 생성된 샘플 젠 토토.conf를 가져오기 위해 패치를 보냈습니다. 실제로 기본값이 무엇인지에 대한 라인shared_buffers.

Richard Guo는 각 상대를 안티의 외부 및 내부로 사용하도록 패치를 보냈습니다. 조인합니다.

Tom Lane은 내부에서 abort() 또는 exit() 호출을 방지하기 위해 패치를 보냈습니다. libpq.

Alexander Korotkov는 일부 작은 불일치를 수정하기 위해 패치를 보냈습니다. 다중 범위 연산자의 카탈로그 정의입니다.

Julien Rouhaud가 매개변수 위치를 보존하기 위해 패치의 다른 개정판을 보냈습니다 const 노드를 생성할 때.

Andrey Borodin은 pglz를 재구성하기 위해 또 다른 패치 개정판을 보냈습니다. 압축 코드입니다.

Julien Rouhaud와 Ranier Vilela는 pg_get_query_def()를 추가하기 위해 패치를 교환했습니다. 다시 작성된 SQL 문을 분석하고 인쇄합니다.

Tomáš Vondra는 런타임을 사용하여 카디널리티 추정을 수행하기 위해 PoC 패치를 보냈습니다. 샘플링.