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 1w3fb4-001RPn-0e for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Mar 2026 19:33:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w3fb2-007zPv-2D for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Mar 2026 19:33:25 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w3fb2-007zPj-0f for pgsql-hackers@lists.postgresql.org; Fri, 20 Mar 2026 19:33:24 +0000 Received: from mail-qt1-x82f.google.com ([2607:f8b0:4864:20::82f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w3faz-00000000EN7-2rdC for pgsql-hackers@lists.postgresql.org; Fri, 20 Mar 2026 19:33:24 +0000 Received: by mail-qt1-x82f.google.com with SMTP id d75a77b69052e-506a747448dso8049781cf.0 for ; Fri, 20 Mar 2026 12:33:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dunslane-net.20230601.gappssmtp.com; s=20230601; t=1774035200; x=1774640000; darn=lists.postgresql.org; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :from:references:cc:to:subject:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=joPpg0QX2FgSoUW09DX3i/alOyoHaIGgmMd18ot2agA=; b=oaM/njsfabFVeq+YWYkieFetlFHOqhV0dmgdyt8kl7E9vAEvDFtMCpWDfLxyEp8rXS 5pc4IoSlDMB2GNFJk6d0BpAOBk86JNPgZdOKU5Vt0eHIH/AkMh+haddobPy038BjLL0z W7gP+UN367v23jIxJ7KH6EP+OP6JlnajqY0D3FN8/Wtl2EPJvMueRSHqWXg6Ikj38iVY 3ey2TOEoYB31IkSVRdFvv2/Tlz4bBwX9aD6P8HbhEwn0CB1i9ddqBvTkPSV1FGvOeDfs kO8oA72xVV5ulCDqpY2EisJut+5UaZN2ok/Ytf0X9Jt+g+vI67JnOj0eHqishCN5fGSc AUHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774035200; x=1774640000; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :from:references:cc:to:subject:user-agent:mime-version:date :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=joPpg0QX2FgSoUW09DX3i/alOyoHaIGgmMd18ot2agA=; b=eHkkUgXID0xdyHqtJrcdSwbHwEDw5rQTENNrQW9WaKbpD0ahZd3dmGquYuml5qTh+Q DV1wvgCMQ7wn6qu3JWwp+3Rd6wQKHOQQcRvZnmcTxr44mhjrUCApNVUCTeJsEAM3QSyK YkZq8CmLA02VlB16ZuFijE0lvz3EOTy4DIbiowHF9G+Jc2U3c2tf0/7sQEQ4PiHv7l44 ETGGaDVTjVytbm5lzLgRABks/b9r8pu9T8gLMw7f+GxQrVr5zQ235fE9zi+0K+2ON4O/ oxc0CrMlAsf88OEFpKhzJkBs0DzE/jfU6yAlOXhlWrIJBd5D/a+3p1N9khLqlNum54fY wTJQ== X-Forwarded-Encrypted: i=1; AJvYcCXtbDJsXQGpySSK9ArcJCM/NqX5vgNo5+tWRu3I6r5ceH/PgKMhglcAS8+R25aMLZmcpbU7sTkc2MnyckkA@lists.postgresql.org X-Gm-Message-State: AOJu0Yzolf2QWbG74SQBOpZkaqt6TxRYg2kqN+CrAUBmZpaQ6kM9WT6M MWDTF4DDpSFCYxBWP4Lf0vhBU+fiTySHHB2B8+ucN/GFzp5dMJXUEq/PF/TABofxmOQ= X-Gm-Gg: ATEYQzzp50zKgx7opaLF5WQyDv9eXgcj6btqR5/TR1mS/jww6fqbZJdkCIpZU9Zicky WiFoh/++knLYl7CvyqKZnWwKz+9DX8RgksB9dvxxT1QMApEY9OnOH72C8ZucH9V498nz1N3E/D1 vtL/hpkO05f956O1Ku7iRNCYLLwsNyv+rYdRM1+MB40rGEe/BXj3K7SPbaxkhW+9HU7AnCU6Viw rOm5ZYue2PQoxbZ9JqV199acnxWDcuM/0NyxAXYQKTgTt7MxKYylmccT7Ll13wW+wOiF6lLxjxC GmeDeGXKD4EyxQf+aRgcctRaFn9johcEpQiQ2Qt3CULBfn1CoMjwVyHYpCdLsCMxKqv1/mjEyVv K2uNkWdu1uyNXLmvnPYmAlz5ICct9XBesEXOtsYnubPmi83uxbLdmHOPj0HQ+150nYtL5PeN7da A95FiOBR8d+m7M67KPYwy4A0HaEAJ6gStOnW1ViLqR X-Received: by 2002:a05:622a:230f:b0:501:3b8c:7d7d with SMTP id d75a77b69052e-50b3746f615mr64309081cf.29.1774035200218; Fri, 20 Mar 2026 12:33:20 -0700 (PDT) Received: from ?IPV6:2605:a601:a6b0:500::1cb? ([2605:a601:a6b0:500::1cb]) by smtp.googlemail.com with ESMTPSA id d75a77b69052e-50b36e352f7sm25339611cf.16.2026.03.20.12.33.19 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 20 Mar 2026 12:33:19 -0700 (PDT) Message-ID: <9a2be101-42c9-40dd-9860-aa12f06bf0e0@dunslane.net> Date: Fri, 20 Mar 2026 15:33:18 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: pg_waldump: support decoding of WAL inside tarfile To: Amul Sul , Zsolt Parragi Cc: Robert Haas , Chao Li , Jakub Wartak , PostgreSQL Hackers References: <72973471-8946-40c7-8b2d-8f95540d90e2@dunslane.net> <401bf08a-c8f1-48e2-9a30-78deaa9fa7c5@dunslane.net> From: Andrew Dunstan Content-Language: en-US Autocrypt: addr=andrew@dunslane.net; keydata= xsBNBE7KWFkBCAClridxur2AIc7eW2AR7izbfp3EnNefie2HbLF0izW5Ik5UjX2HBXBx4syI gY6b0ugohXrr274+baoAlvSbq6cAoQuEVrk5IZFzt20b1Xkx65FwGSEj526yiKLocqkJceSq Xr9xcA5SGY+FZv441chh5SU92v4q6z+6LPpoHOh97ptAVXZYNTtU0LevyvD5lja0TzbvJm6C eFXitJfnm1pLEr0DGJCR/iUOl/N62Kh4855zZC7NHIjQHPOvV5Stz/l5ilDhvGVk+xkXFPys SjZoUr1rXhYLpiyi5sR0X9FHXT0KnGuz1F5ERO7ZTLSSQ6fJwPj6gOk9K+vvoKvoeql5ABEB AAHNJEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PsLAlwQTAQgAQQIbAwIX gAIZAQULCQgHAwUVCgkICwUWAgMBAAIeBRYhBOQ+WEYd/Hy/RGkVpZn6f8tZ/DuBBQJoGNGd BQkdEO8nAAoJEJn6f8tZ/DuBq74H/jkTR4Zi3stbw+xC7v2u3QozssK7MYPL2AsVfh7OealS h182fiWXpfvmmAB7WUHbhk9GC2RAOnHI/2d2jgKaMLAHsGYOT0YopTVIwRY43fCw/mK67yxc wmDcX+zyKfLaivNbf5A7QPLNwda98bEAMSJ8Sn652Uc6cA8t3uKGsVzbRBQOoYzjgvBCfSrE 9ql3PDNg0l4BfAqabd2f70ZUm9VAMEPrgv/v2xI7M2XiL4g5BVmqLCOwxLM8RMCotCuoweUr VO43DeBCIDwLxotMJKvGWDjBzQYlU1NPUAtNcz/gN9ITUe1VUGjyvGj4u1lxBOcQQUw7l1+T 5moZ4iZxXzvOwE0ETspYWQEIANGc4zQULOxhbqO2dyD51YhqCNRmm9oKWaqf+wmW4tpDe/VV cxAnNizd4LWCHfzpb5cHAtGkOPePMfzWVf6nvdF7d3eglbtf59+zG7O7llV0xSSoFiieQBsr GvqDInXYX/4mRRXMtyhM353/tixC9RWLs1oofyYmCPPXXY7h9R7en3B8BoVrRFcdzlIY/NFN hFGW/9dkEiGjgna2Rk6e15kln4ZvFBWUg23p93w/pqXcxY6+k/8TEk+C4R+M6w7o2PLGOjdZ +kPiUcw5H85zf/yZJwQXzisXaNduwWB6Vads9YC9dj6kPR1c4VGRqAaYL++LAEOqrlvm2Tvq QqZRtnEAEQEAAcLAfAQYAQgAJgIbDBYhBOQ+WEYd/Hy/RGkVpZn6f8tZ/DuBBQJoGNI2BQkd EODdAAoJEJn6f8tZ/DuBfw0IAKTsfD40teP/pp+bsLLMSxPXUYrrprTj7WFB5v61p6dkpSr/ qXmMlyahdxQFaPmfVgVirB1Vk/kHiWNnnGjfUV9nB2Zg9LI0Xb9/ts3LsUiRWXzG3tkMY6XL vsVOxW4XFRND9l2q+WW93aZ1DZl+fqWfYgMvsusFRhmGFOKTRfKPta2Pkv+AhA24N4+PrR5p bU4k2MO8PAGiK8eaYKGFG1bHKuAvoDoF7WXJ3FHxuWqLnKEt4dfOLm5pAe3zq1Lt6q8azT9i QWGpSAK5vQUWQHBHpiDjdPeqKZ6HiAXIIKfSmb+jrvXBqoP+D6/K7rUjG2aXiRtTIAXms9sm VRu7cmw= In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On 2026-03-20 Fr 9:26 AM, Amul Sul wrote: > On Fri, Mar 20, 2026 at 5:01 PM Amul Sul wrote: >> On Fri, Mar 20, 2026 at 2:18 AM Zsolt Parragi wrote: >>> Hello! >>> >>> Path is ignored with a positional argument, I think this is a bug? >>> >>> This fails: >>> >>> pg_waldump --path /wal/dir 000000010000000000000001 >>> >>> And this works: >>> >>> pg_waldump --path /wal/dir --start 0/01000028 --end 0/010020F8 >>> >> Good catch! I've fixed this in the attached version and updated a test >> case to cover this scenario. >> >>> +{ >>> + int fname_len = strlen(fname); >>> + >>> >>> Shouldn't this use size_t? >>> >> Okay, that can be used. I’ve done the same in the attached version. >> >>> + /* >>> + * Setup temporary directory to store WAL segments and set up an exit >>> + * callback to remove it upon completion. >>> + */ >>> + setup_tmpwal_dir(waldir); >>> >>> Maybe this could be deferred to be created only on first use? If I >>> understand correctly, in a typical scenario waldump won't use this >>> temporary directory, yet it always creates it. >> Yeah, that optimization can be done, but passing the waldir -- which >> is only used once -- to the point where the first temp file is created >> would require quite a bit of code refactoring that doesn't seem to >> offer much gain, IMO. >> > Since Andrew also leans toward creating the directory only when > needed, I have reconsidered the approach. I think we can pass waldir > (the archive directory) via XLogDumpPrivate, and I’ve implemented that > in the attached version. > Thanks, committed with very minor tweaks. cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com