Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w85k5-000CkS-0Z for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Apr 2026 00:17:01 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w85k3-003240-2v for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Apr 2026 00:17:00 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w85k3-00323p-1b for pgsql-hackers@lists.postgresql.org; Thu, 02 Apr 2026 00:17:00 +0000 Received: from mail-dl1-x1235.google.com ([2607:f8b0:4864:20::1235]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w85k1-0000000063P-0AgM for pgsql-hackers@lists.postgresql.org; Thu, 02 Apr 2026 00:16:58 +0000 Received: by mail-dl1-x1235.google.com with SMTP id a92af1059eb24-124a7216c9cso30738c88.0 for ; Wed, 01 Apr 2026 17:16:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775089016; cv=none; d=google.com; s=arc-20240605; b=BnPNq98zTPoELlK+LzD/Bc1+7sStJYZFY0/oeQxUrabSECQRcg0ARt7fUc19UtfK5p JnxudM3QLiOQnAPCkV/KvMdyAbJjw4/9Z+/OsOlIddNg762upxDqT8Djy4GRQQmAuAfP wwH/xJGTD8abp+P3WFC7E8zwb/KITaAWOlEDwTe+MCGyEVMzRvNTrivpuWtFNDPUicMy nrAMgVQwSYuC6JSFZBVWM801/NxNzyvH62vGhAzi7B2jWnS+CQYPvNggGpgKcaO2wYNi GsRGPA1gcdsBXgwg3ba6nf05TUOU+3Effvbh6pIcZmLG4ZTVLy6p8Q0k142+ckCiYTp4 lBHg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=LvNEonLEyNbxLt3xwUIi/Q1eO+4Pnv1j6ootQoQ5jy4=; fh=zt/yX7EsTVnEbo73rqz06NRQNczt8TI2+AgFzHuYN7Q=; b=V1NA43FJfnMzrwXdlZ1rEwnyTsO0wg2NwWMYyBHINPcFWc/tQ+a9so6p1BNxmh6vJ/ JjV+RiozeqvQFE1uzK0672lhNsOKLkMGbyrOgbZtU+AUmHrE7TPukjBPr4WFJFYG+7Fq z25b+1Bas8OQrnIwQahiFE8G3wHiRuCKKoKEUlk2q4g99YNmcHOgjlYVj6OZhwKs4Si1 jaYNr+dAzvIdDMyrttxoqcE2VFTkkMxFHvNLc5q0Zy1pViuS59I7HXlRyHsgGyq80MWm VAZasVphJz2nMZkEOfJOiVaR2VBgaxpyHZTau/+xYSfF7BzCLtf1NnrtWdUfVh1ggSIE SmbQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775089016; x=1775693816; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=LvNEonLEyNbxLt3xwUIi/Q1eO+4Pnv1j6ootQoQ5jy4=; b=WSYYDYtRdIWlTEcgL+5GyLPh/ZfHmIj4f+HLqVfFOUS3WhHmUYJFLYqibf33kxzRBt CVSMGNmg2o/pliQBgbYM2Whu1vWC4XrrHDSWLxdNj2QPw5kVmO70KtIWfEFpe4R1FZUy S/GDDy+HSVg1irQSKPa4y3EnFEExxdPWoTqp5A+8I0/5UezXsxh6QgZGzQGejK0Ydf6Q /N3ePt7EAIVilam72ptMibEsgyRKaHUaDAddSMjluAqwL+WCI7GNYOjvm9UVD4cda2ux X/fUZbBVXTVJB1H3qhfUSTn+RP31LG/Q4dPjas+sh3Q6fk42986Ps5ZoNf89K2GCcR7X +xWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775089016; x=1775693816; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=LvNEonLEyNbxLt3xwUIi/Q1eO+4Pnv1j6ootQoQ5jy4=; b=OpmbEDIpHJo8eNV5dNIH2WXaj+XcgVbnosW7EgHoClBAGutAO2quHCkfbTcKut0USk j8W/E4bncsaN/ZgxYVyvrjEPSsawl3K2NkVkBvpvy+dkAwvbn5hn6UTbvSdiG4H0N9U7 gV2eekHAZMMSSt9roZJDMLWrFPb4WDylxfji1Xjiav9SZO0Y6SNA6Ip7wPibAuXmX/RS rj2G/zN2e5Hg3iqoFnLONKcTITNy0OpDiycfc/V6LBEru8BIGor6GCK51F9XayY1Scge wz3K7Fl+o80mWiOmFgAXkUkolLlCV5b93UFQh7UGn8ZojGZZwnkEBBmauz/B7btzCJDf 98Dg== X-Forwarded-Encrypted: i=1; AJvYcCV0niSQeYcpREeLuRQpShCL4RkPRm0sELxbm8algILQGfhwtp0lMe6iIh2mjoYyWJFmiBAPDOrEIq8DZD/K@lists.postgresql.org X-Gm-Message-State: AOJu0Yy8PalD02igk/NlVwq724viqHEpndYN+9f5DFYBKZBag0aqVQ/I 5YlTMcK/RqpNatik/LfalLi88rsyACE7rFFIvU5rpqJ/b1Jtb6jfpHLWmAQUEnS2rcOIROrejUp 2KBaHseaPW+d1t8o1qQgcLuEtbmgcEtY= X-Gm-Gg: ATEYQzw/ozEjJPNraVO4A2IqfYG/YItNSO0U8b2RRf3hyq2ppqIdeLH8EXWPp7rPOj4 pICrBDBTXHjDi0kycYPmSH1rhzelQXUSjNXU0k52R1wsj3c+kpAzZKKBVfMiODbYs0OOpGsUMrf 6NC+MCFvuRq7GGqRLBZWKn267OLf9vC0voJy7BQQO09NwfLs/UH+2fUgEsSb5cFugaP95+61xf7 reWBXHg1ECLWsFJ86n4K+ftqpoCS2tJB0D33Flsp8M4byxHq5f37AEmsxS9QtIoXVhniCSh4dgU SyyfMbQr0z5EUg+Alux7vumKE+92Ehf7XTMLFPEgddZrrY2lRVxAclqDW5Rt/sCm9fmuHNeJVTQ = X-Received: by 2002:a05:7022:e1b:b0:11a:2020:ac85 with SMTP id a92af1059eb24-12be654f267mr1304149c88.4.1775089016005; Wed, 01 Apr 2026 17:16:56 -0700 (PDT) MIME-Version: 1.0 References: <2250061.1774104346@sss.pgh.pa.us> <2555285.1774131847@sss.pgh.pa.us> <2609460.1774153487@sss.pgh.pa.us> <2790913.1774200584@sss.pgh.pa.us> <2880042.1774203473@sss.pgh!!.pa.us> <3341199.1774221191@sss.pgh.pa.us> <3424809.1774234940@sss.pgh.pa.us> <1624716.1774736283@sss.pgh.pa.us> <1626907.1774737417@sss.pgh.pa.us> <97a382c0-1f19-4ea0-951f-e37e6abc34a3@vondra.me> <1630755.1774739531@sss.pgh.pa.us> <1873141.1774823011@sss.pgh.pa.us> <3049460.1775067940@sss.pgh.pa.us> In-Reply-To: <3049460.1775067940@sss.pgh.pa.us> From: Thomas Munro Date: Thu, 2 Apr 2026 13:16:17 +1300 X-Gm-Features: AQROBzAm0Ba5P8qA0iQiNEx_UB5VUT7Yur1mSvMVSD6hs5S4uOyRTkdudjdTcqI Message-ID: Subject: Re: pg_waldump: support decoding of WAL inside tarfile To: Tom Lane Cc: Tomas Vondra , Andres Freund , Michael Paquier , Andrew Dunstan , Amul Sul , Zsolt Parragi , Robert Haas , Chao Li , Anthonin Bonnefoy , Fujii Masao , Jakub Wartak , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000003ed715064e6f1e0a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000003ed715064e6f1e0a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Apr 2, 2026 at 7:25=E2=80=AFAM Tom Lane wrote: > Also, if we are admitting the possibility that what we are reading > was made by a platform-supplied tar and not our own code, I think > it verges on lunacy to behave as though unsupported typeflags are > regular files. Yeah, if this is the first time we parse files we didn't make then that makes total sense. I was a bit unsure of that question when I suggested we reject pax only after we've failed to find a file, in case there are scenarios that work today with harmless ignorable pax headers that don't change the file name. > So I think we need something more or less like the attached. LGTM. Tested with both tars here. I updated that little test patch for this. Not sure if you think it's worth a test though, now that it's so simple. @Andrew: I tried using File::Spec->devnull() this time. Are you able to check if this works OK on Windows, applied on top of Tom's patch? AFAIK should be able to run this new test and pass, not skip it. But it could be that the shell invocation needs tweaking. It's hard to tell from CI. (Huh, apparently Windows ships a copy of BSD tar as C:\Windows\System32\tar.exe these days.) --0000000000003ed715064e6f1e0a Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Test-rejection-of-pax-extended-tar-files.patch" Content-Disposition: attachment; filename="0001-Test-rejection-of-pax-extended-tar-files.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mngptctv0 RnJvbSA1N2I5ZDFhNThhOWViMzBmZWVjNzJiMGNjY2U2YmRmZDVlMWVmOTJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMzAgTWFyIDIwMjYgMTg6MjA6MDkgKzEzMDAKU3ViamVjdDogW1BBVENIXSBU ZXN0IHJlamVjdGlvbiBvZiBwYXggZXh0ZW5kZWQgdGFyIGZpbGVzLgoKQWxzbyBjaGFuZ2UgODUy ZGU1NzkncyBzaGVsbCBpbnZvY2F0aW9uIHRvIHVzZSBOVUwgb24gV2luZG93cyBpbnN0ZWFkIG9m Ci9kZXYvbnVsbCwgcGVyIGZlZWRiYWNrIGZyb20gQW5kcmV3IER1bnN0YW4uICBUaGF0IGNvbW1h bmQgd2Fzbid0CmV4cGVjdGVkIHRvIHN1Y2NlZWQgb24gV2luZG93cywgYnV0IHRoZSBzaW1pbGFy IHVzYWdlIGFkZGVkIGhlcmUgbWlnaHQuCi0tLQogc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jh c2ljLnBsIHwgNDIgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQogMSBmaWxlIGNoYW5n ZWQsIDM1IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBsIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jh c2ljLnBsCmluZGV4IGNlMWY2YWEzMGMwLi4zYjk5YThmNmQ0ZiAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBsCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAw MV9iYXNpYy5wbApAQCAtNSw2ICs1LDcgQEAgdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRB TCA9PiAnYWxsJzsKIHVzZSBDd2Q7CiB1c2UgRmlsZTo6Q29weTsKK3VzZSBGaWxlOjpTcGVjOwog dXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRp bHM7CiB1c2UgVGVzdDo6TW9yZTsKQEAgLTEzLDEyICsxNCwxNCBAQCB1c2UgTGlzdDo6VXRpbCBx dyhzaHVmZmxlKTsKIG15ICR0YXIgPSAkRU5We1RBUn07CiBteSBAdGFyX2NfZmxhZ3M7CiAKLSMg QnkgZGVmYXVsdCwgYnNkdGFyIGFyY2hpdmVzIHNwYXJzZSBmaWxlcyBpbiBHTlUgdGFyJ3MgLS1m b3JtYXQ9cG9zaXggLS1zcGFyc2UKLSMgZm9ybWF0LCBzbyBwZ193YWxkdW1wIGNhbid0IGZpbmQg ZmlsZXMgdGhhdCBaRlMgaGFzIGRlY2lkZWQgdG8gc3RvcmUgd2l0aAotIyBob2xlcy4gIFR1cm4g dGhhdCBvZmYuCi1pZiAoc3lzdGVtKCIkdGFyIC0tbm8tcmVhZC1zcGFyc2UgLWMgLSAvZGV2L251 bGwgPiAvZGV2L251bGwiKSA9PSAwKQorbXkgJGRldm51bGwgPSBGaWxlOjpTcGVjLT5kZXZudWxs KCk7CisKKyMgQnkgZGVmYXVsdCwgYnNkdGFyIGFyY2hpdmVzIHNwYXJzZSBmaWxlcyBpbiBHTlUg dGFyJ3MgLS1mb3JtYXQ9cGF4IC0tc3BhcnNlCisjIGZvcm1hdCwgc28gcGdfd2FsZHVtcCByZWpl Y3RzIFdBTCB0aGF0IFpGUyBoYXMgZGVjaWRlZCB0byBzdG9yZSB3aXRoIGhvbGVzLgorIyBUdXJu IHRoYXQgb2ZmLgoraWYgKHN5c3RlbSgiJHRhciAtLW5vLXJlYWQtc3BhcnNlIC1jICRkZXZudWxs ID4gJGRldm51bGwiKSA9PSAwKQogewotICBwdXNoKEB0YXJfY19mbGFncywgIi0tbm8tcmVhZC1z cGFyc2UiKTsKKwlwdXNoKEB0YXJfY19mbGFncywgIi0tbm8tcmVhZC1zcGFyc2UiKTsKIH0KIAog cHJvZ3JhbV9oZWxwX29rKCdwZ193YWxkdW1wJyk7CkBAIC0zMzksNyArMzQyLDcgQEAgc3ViIHRl c3RfcGdfd2FsZHVtcAogIyBDcmVhdGUgYSB0YXIgYXJjaGl2ZSwgc2h1ZmZsZSB0aGUgZmlsZSBv cmRlcgogc3ViIGdlbmVyYXRlX2FyY2hpdmUKIHsKLQlteSAoJGFyY2hpdmUsICRkaXJlY3Rvcnks ICRjb21wcmVzc2lvbl9mbGFncykgPSBAXzsKKwlteSAoJGFyY2hpdmUsICRkaXJlY3RvcnksICRj b21wcmVzc2lvbl9mbGFncywgQGV4dHJhX2ZsYWdzKSA9IEBfOwogCiAJbXkgQGZpbGVzOwogCW9w ZW5kaXIgbXkgJGRoLCAkZGlyZWN0b3J5IG9yIGRpZSAib3BlbmRpcjogJCEiOwpAQCAtMzU1LDcg KzM1OCw3IEBAIHN1YiBnZW5lcmF0ZV9hcmNoaXZlCiAJIyBtb3ZlIGludG8gdGhlIFdBTCBkaXJl Y3RvcnkgYmVmb3JlIGFyY2hpdmluZyBmaWxlcwogCW15ICRjd2QgPSBnZXRjd2Q7CiAJY2hkaXIo JGRpcmVjdG9yeSkgfHwgZGllICJjaGRpcjogJCEiOwotCWNvbW1hbmRfb2soWyR0YXIsIEB0YXJf Y19mbGFncywgJGNvbXByZXNzaW9uX2ZsYWdzLCAkYXJjaGl2ZSwgQGZpbGVzXSk7CisJY29tbWFu ZF9vayhbJHRhciwgQGV4dHJhX2ZsYWdzLCBAdGFyX2NfZmxhZ3MsICRjb21wcmVzc2lvbl9mbGFn cywgJGFyY2hpdmUsIEBmaWxlc10pOwogCWNoZGlyKCRjd2QpIHx8IGRpZSAiY2hkaXI6ICQhIjsK IH0KIApAQCAtNDc3LDQgKzQ4MCwyOSBAQCBmb3IgbXkgJHNjZW5hcmlvIChAc2NlbmFyaW9zKQog CX0KIH0KIAorU0tJUDoKK3sKKwlza2lwICJ0YXIgY29tbWFuZCBpcyBub3QgYXZhaWxhYmxlIiwg MQorCQlpZiAhZGVmaW5lZCAkdGFyOworCisJc2tpcCAidGFyIGNvbW1hbmQgZG9lc24ndCB1bmRl cnN0YW5kIC0tZm9ybWF0PXBheCIsIDEKKwkJaWYgc3lzdGVtKCIkdGFyIC0tZm9ybWF0PXBheCAt YyAiIC4KKwkJCQkgICRub2RlLT5kYXRhX2RpciAuICIvcGdfd2FsLyogPiAkZGV2bnVsbCIpICE9 IDA7CisKKwlnZW5lcmF0ZV9hcmNoaXZlKCR0bXBfZGlyIC4gJy9wZ193YWxfcGF4LnRhcicsCisJ CQkJCSAkbm9kZS0+ZGF0YV9kaXIgLiAnL3BnX3dhbCcsCisJCQkJCSAnLWNmJywKKwkJCQkJICgi LS1mb3JtYXQ9cGF4IikpOworCisJY29tbWFuZF9mYWlsc19saWtlKAorCQlbCisJCQkncGdfd2Fs ZHVtcCcsCisJCQknLS1wYXRoJyA9PiAkdG1wX2RpciAuICcvcGdfd2FsX3BheC50YXInLAorCQkJ Jy0tc3RhcnQnID0+ICRzdGFydF9sc24sCisJCQknLS1lbmQnID0+ICRlbmRfbHNuLAorCQldLAor CQlxci9lcnJvcjogcGF4IGV4dGVuc2lvbnMgdG8gdGFyIGZvcm1hdCBhcmUgbm90IHN1cHBvcnRl ZC8sCisJCSdmYWlscyBpZiBwYXggZXh0ZW5kZWQgaGVhZGVyIGlzIGRldGVjdGVkJyk7Cit9CisK IGRvbmVfdGVzdGluZygpOwotLSAKMi41Mi4wCgo= --0000000000003ed715064e6f1e0a--