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.94.2) (envelope-from ) id 1tWUMv-00H0Xc-D0 for pgsql-hackers@arkaria.postgresql.org; Sat, 11 Jan 2025 05:49:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tWUMu-006L1Y-Oq for pgsql-hackers@arkaria.postgresql.org; Sat, 11 Jan 2025 05:49:08 +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.94.2) (envelope-from ) id 1tWUMu-006Kx9-8X for pgsql-hackers@lists.postgresql.org; Sat, 11 Jan 2025 05:49:08 +0000 Received: from mail-vk1-xa34.google.com ([2607:f8b0:4864:20::a34]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tWUMr-000zmo-2L for pgsql-hackers@postgresql.org; Sat, 11 Jan 2025 05:49:07 +0000 Received: by mail-vk1-xa34.google.com with SMTP id 71dfb90a1353d-518957b0533so955516e0c.1 for ; Fri, 10 Jan 2025 21:49:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1736574545; x=1737179345; darn=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=XBrSfrmnCiRfxAiGY3VAkHRMHP31xmT0p+j88D3Z0Gs=; b=MjttzQUWRsb6c9THl8VzVBliItCKq9y0QJPdwFhndk2ttFxjm9j6gCgnFWYjneFaDL aLKJPyYMeyJWqIOm4y0OjSc5b6Kg2VJWh0+Q2BxyY1KyPPdN+m2M9D+hqqxP9noINPcd cn/sae8QHeU2mBSs3YLt4N4i8ulWEQRZthGz+7gX7qaHi7nluq+yQKQdFTgikHkF05gb lQ6O2/gjwalQZD17XehRWWvPYiMje4Gs8S5Jnfd65pYzH+LWk21LRh2m3KDaInTxQFwt avLFhVDNffVUWayr8C44xI9Y/qI9mxh3EEqrCUQ42OiCQmicUtSchePwupny93wwt0O3 Yh4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736574545; x=1737179345; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=XBrSfrmnCiRfxAiGY3VAkHRMHP31xmT0p+j88D3Z0Gs=; b=GFscX2bND8D3x1L2Ha2/phfLGYccrpsrezl0/SX1jaxWluAC6AvgV0U7Hx1Exi3/vl aFMqcSFyf+qpvUL5jxry25zvmqDwtDZuDIDdK7+5PYPKvTmDX5lEZmM+dyszdHD3PtL3 pyKF0zuH/BDHsVK/0U+D+rdO3AUvVamOARC3xlpUHnk+WUrmWA3Vx0J4Di7bTcMrD4+w hzpz7UC1b7VhALb419IHRtslWDX+xyrO7yUTI6OHOIx4U/FhJ2azd7mQxD00SBC1mREi KfIA5myZmxhIQi7f2L2VD1J0qPs+tZB6nUtulKUmRihA69VdRNZ8WQODnQAMQQSn4FXv uC4A== X-Forwarded-Encrypted: i=1; AJvYcCX4R7qd/EYfzoxtQIHbZZZopffR1H0EuMaHLZYoLw0BbI9bFrPr8mY3bAAwJ26kpVbF79oqqpLPdgaGZhZS@postgresql.org X-Gm-Message-State: AOJu0Ywy233jAXyT5K/x6MsxyQ2beIaVGDGBT8txtXXM7KJW4D0YJbUg l0fmOb03wPlTUzcmXcukwEXvIa/2/JPBKXSBao6VOTNLL0sJ4zmERgzQC5T5/AAnLETivq52R6/ xoybJki4EsKRZPUZDdPscFhqeAlE3Mll9fwQ= X-Gm-Gg: ASbGncv5aQU6/p//XgP+PmDq04xvhmdC2SMu1BwrmWfj4R9bJDc2vxe7BvpuV59f39O je2G0n7bXFOLGVAPbDJfwqlIqJFgMjfdSL6c+ X-Google-Smtp-Source: AGHT+IFxVl+avTncH8Gmzv8NFgRWMxKl0ixhe4O4dW7Hv0Wtud1Y7U3wYGYBcS7GlFo8pS5IlZ+I9cp5HCJYiauKwtA= X-Received: by 2002:a05:6122:398c:b0:515:4b68:c37f with SMTP id 71dfb90a1353d-51c6c3a4e0fmr13277269e0c.6.1736574544751; Fri, 10 Jan 2025 21:49:04 -0800 (PST) MIME-Version: 1.0 References: <740696.1718036463@sss.pgh.pa.us> In-Reply-To: From: jian he Date: Sat, 11 Jan 2025 13:48:27 +0800 X-Gm-Features: AbW1kvbBiM6_G87u89Epd5PbYHyCtUN0mXNtXxR1pKcLqiP56MtzEvZp1-hcVus Message-ID: Subject: Re: Non-text mode for pg_dumpall To: Mahendra Singh Thalor Cc: Guillaume Lelarge , Nathan Bossart , Magnus Hagander , Tom Lane , Andrew Dunstan , PostgreSQL-development , Dilip Kumar Content-Type: multipart/mixed; boundary="000000000000de0efb062b67c423" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000de0efb062b67c423 Content-Type: text/plain; charset="UTF-8" in src/bin/pg_dump/pg_dumpall.c main i think you need do archDumpFormat = parseDumpFormat(formatName); /* * Open the output file if required, otherwise use stdout. If required, * then create new files with global.dat and map.dat names. */ if (archDumpFormat != archNull) { char toc_path[MAXPGPATH]; /* * If directory/tar/custom format is specified then we must provide the * file name to create one main directory. */ if (!filename || strcmp(filename, "") == 0) pg_fatal("no output directory specified"); /* TODO: accept the empty existing directory. */ if (mkdir(filename, 0700) < 0) pg_fatal("could not create directory \"%s\": %m", filename); snprintf(toc_path, MAXPGPATH, "%s/global.dat", filename); OPF = fopen(toc_path, "w"); if (!OPF) pg_fatal("could not open global.dat file: %s", strerror(errno)); } else if (filename) { OPF = fopen(filename, PG_BINARY_W); if (!OPF) pg_fatal("could not open output file \"%s\": %m", filename); } else OPF = stdout; before connectDatabase call. otherwise if the cluster is not setting up. ``pg_dumpall --format=d`` error would be about connection error, not "pg_dumpall: error: no output directory specified" we want ``pg_dumpall --format`` invalid options to error out even if the cluster is not setting up. attached are two invalid option test cases. you also need change Send output to the specified file. If this is omitted, the standard output is used. ? since if --format=d, can not be omitted. --000000000000de0efb062b67c423 Content-Type: application/octet-stream; name="v7-0001-misc-tests-for-pg_dumpall.no-cfbot" Content-Disposition: attachment; filename="v7-0001-misc-tests-for-pg_dumpall.no-cfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5rrhwf00 RnJvbSAzMzllODEzYTEzN2U1YzIxNTA3M2I0MGQ1MDhiMjRiYTIzMTJkMWNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFNhdCwgMTEgSmFuIDIwMjUgMTM6NDM6MzQgKzA4MDAKU3ViamVjdDogW1BBVENIIHY3 IDEvMV0gbWlzYyB0ZXN0cyBmb3IgcGdfZHVtcGFsbAoKLS0tCiBzcmMvYmluL3BnX2R1bXAvdC8w MDFfYmFzaWMucGwgICAgICAgICAgICAgIHwgNCArKysrCiBzcmMvYmluL3BnX2R1bXAvdC8wMDVf cGdfZHVtcF9maWx0ZXJmaWxlLnBsIHwgOCArKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAxMiBp bnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAxX2Jhc2ljLnBs IGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAxX2Jhc2ljLnBsCmluZGV4IDIxNDI0MGYxYWUuLjJkMjQ2 ZTBhNTAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMV9iYXNpYy5wbAorKysgYi9z cmMvYmluL3BnX2R1bXAvdC8wMDFfYmFzaWMucGwKQEAgLTIyNiw0ICsyMjYsOCBAQCBjb21tYW5k X2ZhaWxzX2xpa2UoCiAJJ3BnX2R1bXBhbGw6IG9wdGlvbiAtLWV4Y2x1ZGUtZGF0YWJhc2UgY2Fu bm90IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCAtZy8tLWdsb2JhbHMtb25seScKICk7CiAKK2NvbW1h bmRfZmFpbHNfbGlrZSgKKwlbICdwZ19kdW1wYWxsJywgJy0tZm9ybWF0JywgJ3gnIF0sCisJcXIv XFFwZ19kdW1wYWxsOiBlcnJvcjogaW52YWxpZCBkdW1wIGZvcm1hdCAieCIgc3BlY2lmaWVkXEUv LAorCSdwZ19kdW1wYWxsOiBpbnZhbGlkIGR1bXAgZm9ybWF0Jyk7CiBkb25lX3Rlc3RpbmcoKTsK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90LzAwNV9wZ19kdW1wX2ZpbHRlcmZpbGUucGwg Yi9zcmMvYmluL3BnX2R1bXAvdC8wMDVfcGdfZHVtcF9maWx0ZXJmaWxlLnBsCmluZGV4IDM1Njhh MjQ2YjIuLmZlY2QzNDc4ZGQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwNV9wZ19k dW1wX2ZpbHRlcmZpbGUucGwKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDA1X3BnX2R1bXBfZmls dGVyZmlsZS5wbApAQCAtNTI5LDYgKzUyOSwxNCBAQCBjb21tYW5kX2ZhaWxzX2xpa2UoCiAKICMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIHBnX3Jlc3RvcmUgdGVz dHMKK2NvbW1hbmRfZmFpbHNfbGlrZSgKKwlbCisJCSdwZ19yZXN0b3JlJywgJy1wJywgJHBvcnQs ICctZicsICRwbGFpbmZpbGUsCisJCSItLWV4Y2x1ZGUtZGF0YWJhc2U9Z3JhYmFkZ2UiLAorCQkn LS1nbG9iYWxzLW9ubHknCisJXSwKKwlxci9cUWdfcmVzdG9yZTogZXJyb3I6IG9wdGlvbiAtLWV4 Y2x1ZGUtZGF0YWJhc2UgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCAtZ1wvLS1nbG9iYWxz LW9ubHlcRS8sCisJJ3BnX3Jlc3RvcmU6IG9wdGlvbiAtLWV4Y2x1ZGUtZGF0YWJhc2UgY2Fubm90 IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCAtZy8tLWdsb2JhbHMtb25seScpOwogCiBjb21tYW5kX29r KAogCVsKLS0gCjIuMzQuMQoK --000000000000de0efb062b67c423--