Enhancement to psql command, feedback. - Mailing list pgsql-general

From John McKown
Subject Enhancement to psql command, feedback.
Date
Msg-id CAAJSdji027Pjd2QN-t5HP=sB_YgHP=X-SGbUaXy8A+mUPg_buw@mail.gmail.com
Whole thread Raw
Responses Re: Enhancement to psql command, feedback.
Re: Enhancement to psql command, feedback.
Re: Enhancement to psql command, feedback.
List pgsql-general
I just wanted to throw this out to the users before I made a complete fool of myself by formally requesting it. But I would like what I hope would be a minor change (enhancement) to the psql command. If you look on this page, https://wiki.postgresql.org/wiki/Shared_Database_Hosting ,
you will see a number of example which look like:

psql -U postgres template1 -f - << EOT

REVOKE ALL ON DATABASE template1 FROM public;
REVOKE ALL ON SCHEMA public FROM public;
GRANT ALL ON SCHEMA public TO postgres;
CREATE LANGUAGE plpgsql;

EOT

To me this looks similar to a UNIX shell script. Now, going sideways for a second, if someone wanted to create a "self contained" awk script. It would look something like:

#!/bin/awk -f
... awk code ...

When a user executes the above from the command line, the UNIX system runs the program in the first "magic" line as if the user had entered "/bin/awk -f ..." where the ... is replaced by the name of the file executed followed by the rest of the command line parameters.

I think it would be nice if psql would do the same, mainly for "consistency" with other UNIX scripting languages, such as python, perl, & gawk.

The example above would then become:

#!/bin/psql -U postgres template1 -f
REVOKE ALL ON DATABASE template1 FROM public;
REVOKE ALL ON SCHEMA public FROM public;
GRANT ALL ON SCHEMA public TO postgres;
CREATE LANGUAGE plpgsql;
Does this seem reasonable to others? When I actually try the following as a "script", I get an error.

=== transcript ===

$ls -l ./x.psql; cat ./x.psql; ./x.psql
-rwxr-xr-x. 1 joarmc joarmc 40 May  9 02:55 ./x.psql
#!/usr/bin/psql -f
select * from table;
psql:./x.psql:2: ERROR:  syntax error at or near "#!/"
LINE 1: #!/usr/bin/psql -f
       ^


​I have not looked at the source yet, but it seems that it would be "easy" to implement if psql would simply ignore the first line of any file referenced via the "-f" parameter if it started with "#!" or maybe even just "#". I'm not suggesting ignoring _every_ line that start with that "magic", just the first.​


--
We all have skeletons in our closet.
Mine are so old, they have osteoporosis.

Maranatha! <><
John McKown

pgsql-general by date:

Previous
From: Raghavendra Rao J S V
Date:
Subject: duplicate key value violates unique constraint "pg_statistic_relid_att_inh_index"while performing full vacuum on the database
Next
From: Pavel Stehule
Date:
Subject: Re: Enhancement to psql command, feedback.