What is the name pseudo column

Started by Jack Christensenover 15 years ago5 messagesgeneral
Jump to latest
#1Jack Christensen
jackc@hylesanderson.edu

I was just surprised when accidentally selecting a non-existent name
column there was no error -- instead something came back.

select accounts.name from accounts limit 1 ->
(1,65522,1,0.00,,"2010-07-22 09:57:26.281172-05",2)

It appears it tries to return the entire row in an array (but longer
rows get truncated).

I've searched Google and the PG docs but I haven't had any luck.

--
Jack Christensen
jackc@hylesanderson.edu

#2David Fetter
david@fetter.org
In reply to: Jack Christensen (#1)
Re: What is the name pseudo column

On Wed, Dec 15, 2010 at 01:50:54PM -0600, Jack Christensen wrote:

I was just surprised when accidentally selecting a non-existent name
column there was no error -- instead something came back.

select accounts.name from accounts limit 1 ->
(1,65522,1,0.00,,"2010-07-22 09:57:26.281172-05",2)

It appears it tries to return the entire row in an array (but longer
rows get truncated).

I've searched Google and the PG docs but I haven't had any luck.

What happened here is that you ran into PostgreSQL's "charming" habit
of using the argument.function notation, so you called the "name"
function, i.e. the one that casts to name, on the entire row from your
accounts table.

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
iCal: webcal://www.tripit.com/feed/ical/people/david74/tripit.ics

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

#3Adrian Klaver
adrian.klaver@aklaver.com
In reply to: David Fetter (#2)
Re: What is the name pseudo column

On Wednesday 15 December 2010 1:27:19 pm David Fetter wrote:

On Wed, Dec 15, 2010 at 01:50:54PM -0600, Jack Christensen wrote:

I was just surprised when accidentally selecting a non-existent name
column there was no error -- instead something came back.

select accounts.name from accounts limit 1 ->
(1,65522,1,0.00,,"2010-07-22 09:57:26.281172-05",2)

It appears it tries to return the entire row in an array (but longer
rows get truncated).

I've searched Google and the PG docs but I haven't had any luck.

What happened here is that you ran into PostgreSQL's "charming" habit
of using the argument.function notation, so you called the "name"
function, i.e. the one that casts to name, on the entire row from your
accounts table.

Cheers,
David.

In the for what is worth department that behavior is going away in 9.1. See here
for a detailed explanation:
http://www.depesz.com/index.php/2010/11/08/waiting-for-9-1-removed-autocast-footgun/#more-1908
--
Adrian Klaver
adrian.klaver@gmail.com

#4David Fetter
david@fetter.org
In reply to: Adrian Klaver (#3)
Re: What is the name pseudo column

On Wed, Dec 15, 2010 at 03:43:45PM -0800, Adrian Klaver wrote:

On Wednesday 15 December 2010 1:27:19 pm David Fetter wrote:

On Wed, Dec 15, 2010 at 01:50:54PM -0600, Jack Christensen wrote:

I was just surprised when accidentally selecting a non-existent name
column there was no error -- instead something came back.

select accounts.name from accounts limit 1 ->
(1,65522,1,0.00,,"2010-07-22 09:57:26.281172-05",2)

It appears it tries to return the entire row in an array (but longer
rows get truncated).

I've searched Google and the PG docs but I haven't had any luck.

What happened here is that you ran into PostgreSQL's "charming" habit
of using the argument.function notation, so you called the "name"
function, i.e. the one that casts to name, on the entire row from your
accounts table.

Cheers,
David.

In the for what is worth department that behavior is going away in 9.1. See here
for a detailed explanation:
http://www.depesz.com/index.php/2010/11/08/waiting-for-9-1-removed-autocast-footgun/#more-1908

I'd missed this bit of good news :)

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
iCal: webcal://www.tripit.com/feed/ical/people/david74/tripit.ics

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

#5Jack Christensen
jackc@hylesanderson.edu
In reply to: Adrian Klaver (#3)
Re: What is the name pseudo column

On 12/15/2010 5:43 PM, Adrian Klaver wrote:

On Wednesday 15 December 2010 1:27:19 pm David Fetter wrote:

On Wed, Dec 15, 2010 at 01:50:54PM -0600, Jack Christensen wrote:

I was just surprised when accidentally selecting a non-existent name
column there was no error -- instead something came back.

select accounts.name from accounts limit 1 ->
(1,65522,1,0.00,,"2010-07-22 09:57:26.281172-05",2)

It appears it tries to return the entire row in an array (but longer
rows get truncated).

I've searched Google and the PG docs but I haven't had any luck.

What happened here is that you ran into PostgreSQL's "charming" habit
of using the argument.function notation, so you called the "name"
function, i.e. the one that casts to name, on the entire row from your
accounts table.

Cheers,
David.

In the for what is worth department that behavior is going away in 9.1. See here
for a detailed explanation:
http://www.depesz.com/index.php/2010/11/08/waiting-for-9-1-removed-autocast-footgun/#more-1908

It makes sense now what's happening -- but glad to see that "feature" is
going away.

Thanks.

--
Jack Christensen
jackc@hylesanderson.edu