quoting bug?

Started by Patrick Welchealmost 18 years ago4 messages
#1Patrick Welche
prlw1@newn.cam.ac.uk

Given the following trivial trigger example:

-- create language plpgsql;

create table foo (a integer, b text, c timestamp);

create function foo_insert() returns trigger as $$
begin
raise notice '%', new;
return null;
end;
$$ language plpgsql;

create trigger foo_ins before insert on foo
for each row execute procedure foo_insert();

insert into foo values (1, 'two', current_timestamp);

I am surprised to see

NOTICE: (1,two,"Sat 09 Feb 16:47:44.514503 2008")
INSERT 0 0

I would have expected
NOTICE: (1,'two','Sat 09 Feb 16:47:44.514503 2008')
INSERT 0 0

i.e., a row whose columns look as though they went through quote_literal
rather than through quote_ident.

This is with yesterday's 8.3.0 (Feb 8 17:24 GMT)

Thoughts?

Cheers,

Patrick

#2Brendan Jurd
direvus@gmail.com
In reply to: Patrick Welche (#1)
Re: quoting bug?

On Feb 10, 2008 3:50 AM, Patrick Welche <prlw1@newn.cam.ac.uk> wrote:

NOTICE: (1,two,"Sat 09 Feb 16:47:44.514503 2008")
INSERT 0 0

I think what you're seeing is the syntax for row literals.

You can get an idea of how it looks without having to write trigger
functions, e.g.:

select row(1, 'second value', current_timestamp);

row
-----------------------------------
(1,"second value","2008-02-10 04:00:54.458647+11")
(1 row)

Note that anything which includes spaces, commas or brackets is double-quoted.

You can see it working the other way around by constructing a record
using the literal syntax.

=> create type foo as (a text, b int);
CREATE TYPE
=> select '("one", 2)'::foo;
foo
---------
(one,2)
(1 row)

Cheers,
BJ

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Patrick Welche (#1)
Re: quoting bug?

Patrick Welche <prlw1@newn.cam.ac.uk> writes:

I am surprised to see

NOTICE: (1,two,"Sat 09 Feb 16:47:44.514503 2008")

This is the expected formatting for a composite type. Read
http://www.postgresql.org/docs/8.3/static/rowtypes.html#AEN6266

regards, tom lane

#4Patrick Welche
prlw1@newn.cam.ac.uk
In reply to: Tom Lane (#3)
Re: quoting bug?

On Sat, Feb 09, 2008 at 12:29:10PM -0500, Tom Lane wrote:

Patrick Welche <prlw1@newn.cam.ac.uk> writes:

I am surprised to see

NOTICE: (1,two,"Sat 09 Feb 16:47:44.514503 2008")

This is the expected formatting for a composite type. Read
http://www.postgresql.org/docs/8.3/static/rowtypes.html#AEN6266

Thank you - sorry for noise.

Patrick