Обсуждение: getting "shell command argument contains a newline or carriage return:" error with pg_dumpall when db name have new line in double quote
Hi,
--
Thanks and Regards
Mahendra Singh Thalor
EnterpriseDB: http://www.enterprisedb.com
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;Here, the database name is in 2 lines.
dbstr 2";
CREATE DATABASE
postgres=#
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 think, if we are allowing new lines in the db name, then we should dump it.
Please let me know your thoughts about this error.
Thanks and Regards
Mahendra Singh Thalor
EnterpriseDB: http://www.enterprisedb.com
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;Here, the database name is in 2 lines.
dbstr 2";
CREATE DATABASE
postgres=#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.