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 1u4eIh-005Iww-AV for pgsql-hackers@arkaria.postgresql.org; Tue, 15 Apr 2025 11:18:00 +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 1u4eIf-008Sr4-IN for pgsql-hackers@arkaria.postgresql.org; Tue, 15 Apr 2025 11:17:58 +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.94.2) (envelope-from ) id 1u4eIf-008Sqm-4H for pgsql-hackers@lists.postgresql.org; Tue, 15 Apr 2025 11:17:58 +0000 Received: from mail-qt1-x82a.google.com ([2607:f8b0:4864:20::82a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1u4eIc-000CdG-0p for pgsql-hackers@lists.postgresql.org; Tue, 15 Apr 2025 11:17:57 +0000 Received: by mail-qt1-x82a.google.com with SMTP id d75a77b69052e-47662449055so27681201cf.1 for ; Tue, 15 Apr 2025 04:17:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dunslane-net.20230601.gappssmtp.com; s=20230601; t=1744715873; x=1745320673; darn=lists.postgresql.org; h=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=Fq5gRTd+4XWaF6ugAW8oq77ISHxCOARb5ZnNZIu8WVs=; b=KW9/AnYgWJu3L4kge3gPd1/80eGgMhriq4z7du+M3KrSPjFjX6SC6nDVOMEV7Xy0fB PQ5d0oOnI84n9W8wDqHcvOv/5jxbiTU3XNgebAmviiBL15CFKa5Fg2A+7kLPlGVcxTQQ q7BunlHfku/WkVrRvf4N9SXH/athMmd3NP08fNyP2jH8pQWD4RyN03WmZlxtcl7YbZ3x vvbyLXaj4e6Qd0k/tNPbqWLJM9sFH3I/Yul6njU/6TWNwrd86jGq8ZNst0Q/2fO+ovkR WDa76a5eAWb73h6o3+EIxwSg1zrbLlBe+PYKILvWVTdXCmTR9X7FMEboBDsXIXAPcx5V 3Pyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744715873; x=1745320673; h=in-reply-to:autocrypt:content-language:from:references:cc:to :subject:user-agent:mime-version:date:message-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=Fq5gRTd+4XWaF6ugAW8oq77ISHxCOARb5ZnNZIu8WVs=; b=KJBCRoryq+DJ1x0bPmELKSube3Gx3XFy767ihZVFYGz1s+PnxaWdf/WA+k89hTBJK3 VUmTQn7Y7eyuLqf5m/FzEfvkpQlWd9eqsYFg25uEK9rMyHR+u0tzqL+p4XgT0GIn9taI mGZG0hv8f05OmC/g86Fm1ZlISc1hfNIfWYFtl2ZUJ8fiGj//QG+ytpAvfegn1EUZKLhF J1OGbx121WKKOcoC3/fuXww+gVFtOGAF7lhFida8w8cDZH2FLLGmBSfeNFm7u1OsH4NM ZjSDoCexoSjaY+XiVHtQiVXdMffGqvkj6CCgbm5I+1shxJ/+IafU7U/r9uFJmQ2tte7Y OZPA== X-Forwarded-Encrypted: i=1; AJvYcCW70AjW37TObRuaEibqzntl2GU9QC0FcOIs9SzPgT6I+NCXczFEHhNdPHuAey2LM+QqxpAtQ0uzMhldY2QB@lists.postgresql.org X-Gm-Message-State: AOJu0YzwIqVeBfqnGhizgCfV6LyXAUl8+FJMrRhJ+xpe8avhNArQIqdw hUHa4wgRS/fvLVs+3REgw9SxD1woSi12rLS0rrk1hu7yNF4oo0vGjUrRMIHFRisb1DOBBKkLMdR 73e4= X-Gm-Gg: ASbGncsxfhvtUohh6OWC7JoQ6QJLIz8Va+EUke1zykOuZ9X1ouXpp5Vexdf0XljHY3t lB/NYFTHaJ1wLUWYrLf/SKd1N8BVmdNROGfPUkx/c/Eb8ndIrUkPWs9KJDmDUP8dmjb2qg+yqoe JELAWKGUpCuTgrbFUneIDXoFkccGPODNXLpi1XaV2Sm7Ylu6sehJVHAvPZeXPGDWachl6v9X2df rDWI7xfeu442EaAlXvtwIPzc9qCaNCgnd0HfCo87Zp0crn4XN12iOwmhofV2YDdn27SGZVlc2GJ BYmEEyFd2mq5jLHoaRU6PrUOCE5satWhzPvxNbJ0aitQ+Vro7rI= X-Google-Smtp-Source: AGHT+IH5zA1P5+1XfC3u2wE5G1y06Al5K5y5S33zkdZbj1nMS7k+0DUlzrXkBOIELNGBIdw6siDJQw== X-Received: by 2002:ac8:578a:0:b0:476:90ea:8ee4 with SMTP id d75a77b69052e-479775dd679mr217193931cf.32.1744715873157; Tue, 15 Apr 2025 04:17:53 -0700 (PDT) Received: from ?IPV6:2605:a601:a681:6b00::1cb? ([2605:a601:a681:6b00::1cb]) by smtp.googlemail.com with ESMTPSA id d75a77b69052e-4796eb2bd8dsm92302901cf.35.2025.04.15.04.17.52 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 15 Apr 2025 04:17:52 -0700 (PDT) Content-Type: multipart/alternative; boundary="------------GeY0zm7sxlGoHnWJ5UV00IT0" Message-ID: <966de369-0109-42df-b250-42240ec20910@dunslane.net> Date: Tue, 15 Apr 2025 07:17:51 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: pgsql: Non text modes for pg_dumpall, correspondingly change pg_restore To: Mahendra Singh Thalor Cc: =?UTF-8?Q?=C3=81lvaro_Herrera?= , pgsql-hackers@lists.postgresql.org References: <202504141220.343fmoxfsbj4@alvherre.pgsql> <6e0e57e5-ace5-4d18-b1c1-7a3b3da36316@dunslane.net> <17b357f9-7a99-4db2-87aa-a16679b52757@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 AAHNJEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PsLAmwQTAQgARQIbAwIX gAIZAQULCQgHAgMiAgEGFQoJCAsCBBYCAwECHgcWIQTkPlhGHfx8v0RpFaWZ+n/LWfw7gQUC ZFlxxwUJGVGAbgAKCRCZ+n/LWfw7gXikB/9ZdcUy6CTBFIIuL/bVsc1eLEW/gJBjJBF6HxNY xgEkAgXAp4Lg4A5U+QB9GouFr7+GYxF0BU4hzoGhNPUWltxnHdMWP8nC/38LAqgMi8L/bbsm HW5YPBdWYaAZAPJQVfOAgjTbRUb26KSprpyrrJKW0ZmrZfjhNPcQ72jpWzoPLQqx2X6B0fru 1jq+cBh8lb6r1mJTim1T3JIn+F/v5VpdQS+EL8xqsHkfzKjIPsW3CIXpkypSk6saA55Rkkbl 26AW8ftPVB0Q6Lnn6FLt9CP0MGNixBQ55yq8r1K+nCBvCCjvQjM8RDm0UUum0WNl+ifQgTLO E8TWEnwVtkBf+3QWzsBNBE7KWFkBCADRnOM0FCzsYW6jtncg+dWIagjUZpvaClmqn/sJluLa Q3v1VXMQJzYs3eC1gh386W+XBwLRpDj3jzH81lX+p73Re3d3oJW7X+ffsxuzu5ZVdMUkqBYo nkAbKxr6gyJ12F/+JkUVzLcoTN+d/7YsQvUVi7NaKH8mJgjz112O4fUe3p9wfAaFa0RXHc5S GPzRTYRRlv/XZBIho4J2tkZOnteZJZ+GbxQVlINt6fd8P6al3MWOvpP/ExJPguEfjOsO6Njy xjo3WfpD4lHMOR/Oc3/8mScEF84rF2jXbsFgelWnbPWAvXY+pD0dXOFRkagGmC/viwBDqq5b 5tk76kKmUbZxABEBAAHCwHwEGAEIACYCGwwWIQTkPlhGHfx8v0RpFaWZ+n/LWfw7gQUCZFlx 5wUJGVGAjgAKCRCZ+n/LWfw7gf+iB/4g8CPY5jihf5r/8EsoIGe2H+dpVmpPF8YGBzTIvCz/ fQoOq8AX/pE76QEuFnFZWfjw+wgBXgCVmkox2Eflkk6z4ND3pcwGZ6CfCxTQCDk/dij+2DQ4 6bmDCy/sBgcbz9mTpoLC11HLoPae6YN9nBNQRZDcEFEu54OaVOqlIdbA6m+POIBCXZdHOFc0 WoDTgxHRzC1jgQNidyd6tKqcsVJs0dzF0oKTmFFmUAqTdJO12LBuNA1rlqrR3EtpYk8B/wtS 5dIMD7Q8hwQpL+4C6GNpb6ZKnPkLi47pDOLhz2qBrqN+rqUEsT3YnExYpzj5yOBi+FlmV1Hw 49QYe1sn2ZPs In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------GeY0zm7sxlGoHnWJ5UV00IT0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 2025-04-14 Mo 6:55 PM, Mahendra Singh Thalor wrote: > > > --- a/src/bin/pg_dump/pg_restore.c > +++ b/src/bin/pg_dump/pg_restore.c > @@ -1053,15 +1053,19 @@ get_dbname_oid_list_from_mfile(const char > *dumpdirpath, SimpleOidStringList *dbn >         while ((fgets(line, MAXPGPATH, pfile)) != NULL) >         { >                 Oid                     db_oid = InvalidOid; > -               char            db_oid_str[MAXPGPATH + 1] = ""; >                 char       *dbname; > +               char            *p = line; > >                 /* Extract dboid. */ >                 sscanf(line, "%u", &db_oid); > -               sscanf(line, "%20s", db_oid_str); > + > +               while(isdigit(*p)) > +                       p++; > + > +               Assert(*p == ' '); > >                 /* dbname is the rest of the line */ > -               dbname = line + strlen(db_oid_str) + 1; > +               dbname = ++p; > >                 /* Remove \n from dbname. */ >                 dbname[strlen(dbname) - 1] = '\0'; > > I don't think an Assert is the right thing here. It's for things that should not be possible, and won't trigger anything in a non-assertion build. This condition should cause a pg_fatal(). cheers andrew -- Andrew Dunstan EDB:https://www.enterprisedb.com --------------GeY0zm7sxlGoHnWJ5UV00IT0 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit


On 2025-04-14 Mo 6:55 PM, Mahendra Singh Thalor wrote:


--- a/src/bin/pg_dump/pg_restore.c
+++ b/src/bin/pg_dump/pg_restore.c
@@ -1053,15 +1053,19 @@ get_dbname_oid_list_from_mfile(const char *dumpdirpath, SimpleOidStringList *dbn
        while ((fgets(line, MAXPGPATH, pfile)) != NULL)
        {
                Oid                     db_oid = InvalidOid;
-               char            db_oid_str[MAXPGPATH + 1] = "";
                char       *dbname;
+               char            *p = line;
 
                /* Extract dboid. */
                sscanf(line, "%u", &db_oid);
-               sscanf(line, "%20s", db_oid_str);
+
+               while(isdigit(*p))
+                       p++;
+
+               Assert(*p == ' ');
 
                /* dbname is the rest of the line */
-               dbname = line + strlen(db_oid_str) + 1;
+               dbname = ++p;
 
                /* Remove \n from dbname. */
                dbname[strlen(dbname) - 1] = '\0';


I don't think an Assert is the right thing here. It's for things that should not be possible, and won't trigger anything in a non-assertion build. This condition should cause a pg_fatal().


cheers


andrew


--
Andrew Dunstan
EDB: https://www.enterprisedb.com
--------------GeY0zm7sxlGoHnWJ5UV00IT0--