Re: getting "shell command argument contains a newline or carriage return:" error with pg_dumpall when db name have new line in double quote - Mailing list pgsql-hackers

From Srinath Reddy
Subject Re: getting "shell command argument contains a newline or carriage return:" error with pg_dumpall when db name have new line in double quote
Date
Msg-id CAFC+b6qwc+wpt7_b2R6YhpDkrXeFvFd5NoLbTMMoxX9tfOHjpg@mail.gmail.com
Whole thread Raw
In response to getting "shell command argument contains a newline or carriage return:" error with pg_dumpall when db name have new line in double quote  (Mahendra Singh Thalor <mahi6run@gmail.com>)
List pgsql-hackers


On Wed, Jan 29, 2025 at 9:55 PM Mahendra Singh Thalor <mahi6run@gmail.com> wrote:
Hi,
While doing some testing with pg_dumpall, I noticed one weird behaviour.

While we create the database, we are allowing the database name with a new line (if name is in double quote).
For example:
postgres=# create database "dbstr1;
dbstr 2";
CREATE DATABASE
postgres=#
Here, the database name is in 2 lines.

With the help of pg_dumpall, I tried to dump but I am getting an error for the new line.

--
-- Database "dbstr1;
dbstr 2" dump
--

shell command argument contains a newline or carriage return: " dbname='dbstr1;
dbstr 2'"
 
After this message, we are stopping the dump.

I have reproduced and verified the same.The reason is in runPgDump during appendShellString for forming the pg_dump command , in appendShellStringNoError we are considering the string as invalid if it has '\n' and '\r'.
 

I think, if we are allowing new lines in the db name, then we should dump it.

Agreed.

Regards,
Srinath Reddy Sadipiralla,
EDB: https://www.enterprisedb.com

pgsql-hackers by date:

Previous
From: Ilia Evdokimov
Date:
Subject: Re: Sample rate added to pg_stat_statements
Next
From: Oliver Ford
Date:
Subject: Re: Add RESPECT/IGNORE NULLS and FROM FIRST/LAST options