BUG #4783: new syntax in tablefunction - not output cells
The following bug has been logged online:
Bug reference: 4783
Logged by: Alex
Email address: oktogen@mail.ru
PostgreSQL version: 8.4
Operating system: WinXP
Description: new syntax in tablefunction - not output cells
Details:
CREATE TABLE tst (
"id" BIGSERIAL,
"vl" DOUBLE PRECISION DEFAULT 0 NOT NULL,
CONSTRAINT "tst_pkey" PRIMARY KEY("id")
) WITHOUT OIDS;
INSERT INTO tst(id)
VALUES (1),(2),(2),(2),(2),(2),(2),(2),(2),(2),
(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),
(2),(2),(2),(2),(2),
(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),
(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),
(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),
(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2);
CREATE OR REPLACE FUNCTION
test1 () RETURNS TABLE(id BIGINT, vl DOUBLE PRECISION) AS
$body$
BEGIN
RETURN QUERY
SELECT
id,
vl
FROM tst;
END
$body$
LANGUAGE 'plpgsql'
IMMUTABLE
CALLED ON NULL INPUT
SECURITY DEFINER
COST 1000 ROWS 1000;
CREATE OR REPLACE FUNCTION
test2 () RETURNS TABLE(id BIGINT, vl DOUBLE PRECISION) AS
$body$
SELECT
id,
vl
FROM tst;
END
$body$
LANGUAGE 'sql'
IMMUTABLE
CALLED ON NULL INPUT
SECURITY DEFINER
COST 1000 ROWS 1000;
query SELECT * FROM test1(); return NULL's if
name columns in "RETURN QUERY" = name columns in
"RETURNS TABLE".
was tested with languages: plpgsql and sql
this is bag or feature?
thank's
Hello
it's not bug. It's is behave of plpgsql, where variables has higher
priority than SQL identifiers. Columns in returned table definition
create implicit variables.
Use qualifiers:
CREATE OR REPLACE FUNCTION
test2 () RETURNS TABLE(id BIGINT, vl DOUBLE PRECISION) AS
$body$
SELECT
tst.id,
tst.vl
FROM tst;
END
$body$
LANGUAGE 'sql'
IMMUTABLE
CALLED ON NULL INPUT
SECURITY DEFINER
COST 1000 ROWS 1000;
regards
Pavel Stehule
2009/4/26 Alex <oktogen@mail.ru>:
Show quoted text
The following bug has been logged online:
Bug reference: 4783
Logged by: Alex
Email address: oktogen@mail.ru
PostgreSQL version: 8.4
Operating system: WinXP
Description: new syntax in tablefunction - not output cells
Details:CREATE TABLE tst (
"id" BIGSERIAL,
"vl" DOUBLE PRECISION DEFAULT 0 NOT NULL,
CONSTRAINT "tst_pkey" PRIMARY KEY("id")
) WITHOUT OIDS;INSERT INTO tst(id)
VALUES (1),(2),(2),(2),(2),(2),(2),(2),(2),(2),
(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),
(2),(2),(2),(2),(2),
(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),
(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),
(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),
(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2),(2);CREATE OR REPLACE FUNCTION
test1 () RETURNS TABLE(id BIGINT, vl DOUBLE PRECISION) AS
$body$
BEGIN
RETURN QUERY
SELECT
id,
vl
FROM tst;
END
$body$
LANGUAGE 'plpgsql'
IMMUTABLE
CALLED ON NULL INPUT
SECURITY DEFINER
COST 1000 ROWS 1000;CREATE OR REPLACE FUNCTION
test2 () RETURNS TABLE(id BIGINT, vl DOUBLE PRECISION) AS
$body$
SELECT
id,
vl
FROM tst;
END
$body$
LANGUAGE 'sql'
IMMUTABLE
CALLED ON NULL INPUT
SECURITY DEFINER
COST 1000 ROWS 1000;query SELECT * FROM test1(); return NULL's if
name columns in "RETURN QUERY" = name columns in
"RETURNS TABLE".was tested with languages: plpgsql and sql
this is bag or feature?
thank's--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs