Обсуждение: Should \o mean "everything?"

Поиск
Список
Период
Сортировка

Should \o mean "everything?"

От
David Fetter
Дата:
Folks,

In a failed attempt to send the output of \pset to a pipe, I noticed
that for reasons I find difficult to explain, not every output gets
redirected with \o.

At first blush, I'd consider this inconsistency as a bug.

What have I missed?

Cheers,
David.
-- 
David Fetter <david@fetter.org> http://fetter.org/
Phone: +1 415 235 3778  AIM: dfetter666  Yahoo!: dfetter
Skype: davidfetter      XMPP: david.fetter@gmail.com

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate



Re: Should \o mean "everything?"

От
Kevin Grittner
Дата:
David Fetter <david@fetter.org> wrote:

> In a failed attempt to send the output of \pset to a pipe, I
> noticed that for reasons I find difficult to explain, not every
> output gets redirected with \o.
>
> At first blush, I'd consider this inconsistency as a bug.
>
> What have I missed?

The documentation says:

| Arranges to save future query results to the file filename or
| pipe future results to the shell command command. If no argument
| is specified, the query output is reset to the standard output.
|
| "Query results" includes all tables, command responses, and
| notices obtained from the database server, as well as output of
| various backslash commands that query the database (such as \d),
| but not error messages.

Are you seeing anything inconsistent with the documentation?  If
so, what?

--
Kevin Grittner
EDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company



Re: Should \o mean "everything?"

От
David Fetter
Дата:
On Mon, Aug 31, 2015 at 07:18:02PM +0000, Kevin Grittner wrote:
> David Fetter <david@fetter.org> wrote:
> 
> > In a failed attempt to send the output of \pset to a pipe, I
> > noticed that for reasons I find difficult to explain, not every
> > output gets redirected with \o.
> >
> > At first blush, I'd consider this inconsistency as a bug.
> >
> > What have I missed?
> 
> The documentation says:
> 
> | Arranges to save future query results to the file filename or
> | pipe future results to the shell command command. If no argument
> | is specified, the query output is reset to the standard output.
> |
> | "Query results" includes all tables, command responses, and
> | notices obtained from the database server, as well as output of
> | various backslash commands that query the database (such as \d),
> | but not error messages.
> 
> Are you seeing anything inconsistent with the documentation?  If
> so, what?

The documentation doesn't specify that a proper subset of the
backslash commands go through, and doesn't enumerate either the ones
that do or the ones that don't.

The way I see it, the fact that backslash commands aren't treated
consistently here would be a bug even if the inconsistency were
documented, which it is only vaguely by implication.

Cheers,
David.
-- 
David Fetter <david@fetter.org> http://fetter.org/
Phone: +1 415 235 3778  AIM: dfetter666  Yahoo!: dfetter
Skype: davidfetter      XMPP: david.fetter@gmail.com

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate



Re: Should \o mean "everything?"

От
David Fetter
Дата:
On Mon, Aug 31, 2015 at 07:18:02PM +0000, Kevin Grittner wrote:
> David Fetter <david@fetter.org> wrote:
> 
> > In a failed attempt to send the output of \pset to a pipe, I
> > noticed that for reasons I find difficult to explain, not every
> > output gets redirected with \o.
> >
> > At first blush, I'd consider this inconsistency as a bug.
> >
> > What have I missed?
> 
> The documentation says:
> 
> | Arranges to save future query results to the file filename or
> | pipe future results to the shell command command. If no argument
> | is specified, the query output is reset to the standard output.
> |
> | "Query results" includes all tables, command responses, and
> | notices obtained from the database server, as well as output of
> | various backslash commands that query the database (such as \d),
> | but not error messages.
> 
> Are you seeing anything inconsistent with the documentation?  If
> so, what?

Perhaps an example would help clarify...

postgres=# \o | perl -pE 's/^/PREFIXED!/'
postgres=# \dt
postgres=# PREFIXED!No relations found.

postgres=# \set 
AUTOCOMMIT = 'on'
ON_ERROR_STOP = ''
PROMPT1 = '%/%R%# '
PROMPT2 = '%/%R%# '
PROMPT3 = '>> '
VERBOSITY = 'default'
VERSION = 'PostgreSQL 9.4.4 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-bit'
DBNAME = 'postgres'
USER = 'postgres'
HOST = '/var/run/postgresql'
PORT = '5432'
ENCODING = 'UTF8'
PSQL_EDITOR = '"/usr/local/bin/vim"'

Cheers,
David.
-- 
David Fetter <david@fetter.org> http://fetter.org/
Phone: +1 415 235 3778  AIM: dfetter666  Yahoo!: dfetter
Skype: davidfetter      XMPP: david.fetter@gmail.com

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate



Re: Should \o mean "everything?"

От
Anastasia Lubennikova
Дата:

31.08.2015 23:25, David Fetter пишет:
> On Mon, Aug 31, 2015 at 07:18:02PM +0000, Kevin Grittner wrote:
>> David Fetter <david@fetter.org> wrote:
>>
>>> In a failed attempt to send the output of \pset to a pipe, I
>>> noticed that for reasons I find difficult to explain, not every
>>> output gets redirected with \o.
>>>
>>> At first blush, I'd consider this inconsistency as a bug.
>>>
>>> What have I missed?
>> The documentation says:
>>
>> | Arranges to save future query results to the file filename or
>> | pipe future results to the shell command command. If no argument
>> | is specified, the query output is reset to the standard output.
>> |
>> | "Query results" includes all tables, command responses, and
>> | notices obtained from the database server, as well as output of
>> | various backslash commands that query the database (such as \d),
>> | but not error messages.
>>
>> Are you seeing anything inconsistent with the documentation?  If
>> so, what?
> Perhaps an example would help clarify...
>
> postgres=# \o | perl -pE 's/^/PREFIXED!/'
> postgres=# \dt
> postgres=# PREFIXED!No relations found.
>
> postgres=# \set
> AUTOCOMMIT = 'on'
> ON_ERROR_STOP = ''
> PROMPT1 = '%/%R%# '
> PROMPT2 = '%/%R%# '
> PROMPT3 = '>> '
> VERBOSITY = 'default'
> VERSION = 'PostgreSQL 9.4.4 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-bit'
> DBNAME = 'postgres'
> USER = 'postgres'
> HOST = '/var/run/postgresql'
> PORT = '5432'
> ENCODING = 'UTF8'
> PSQL_EDITOR = '"/usr/local/bin/vim"'
>
> Cheers,
> David.
Thanks for your test case. It made the question clear.
That's definitely not a bug. Just not use case of "\o" command.
Maybe documentation is a bit vague here.

| "Query results" includes <...> output of various backslash commands 
that query the database (such as \d),
| but not error messages.

As I understand, this phrase means ONLY those commands which starts with 
'\d' (such as \dt, \di, \des etc.)

-- 
Anastasia Lubennikova
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company