Re: [BUGS] Crazy query plan.

2009-11-13 Thread Craig Ringer
Sorry for the multiple replies-to-self, but this seemed worth specifically noting: the expansion also results in multiple calls to tuple-returning functions, even functions marked VOLATILE. For example: CREATE OR REPLACE FUNCTION expandtest(INTEGER) RETURNS test AS $$ DECLARE rec test; BEGIN

Re: [BUGS] Crazy query plan.

2009-11-13 Thread Craig Ringer
> This may be simplified to the comparison between these two queries: ... or even further into: CREATE TYPE test AS ( a integer, b integer, c integer, d integer ); EXPLAIN SELECT ((SELECT ROW(1,1,1,1)::test)::test); EXPLAIN SELECT ((SELECT ROW(1,1,1,1)::test)::test).*; craig=# EXPLAIN SELECT (

Re: [BUGS] Crazy query plan.

2009-11-13 Thread Craig Ringer
On 13/11/2009 7:25 PM, Oleg Serov wrote: > EXPLAIN ANALYZE SELECT ((SELECT tmp::test FROM (SELECT * FROM test > LIMIT 1) tmp)::test).*; This may be simplified to the comparison between these two queries: SELECT ((SELECT test FROM test LIMIT 1)::test); SELECT ((SELECT test FROM test LIMIT 1)::tes

[BUGS] Crazy query plan.

2009-11-13 Thread Oleg Serov
SQL: CREATE TABLE test (id BIGINT, id2 BIGINT, id3 BIGINT, id4 BIGINT); INSERT INTO test SELECT i, i, i, i FROM generate_series(0, 9) i; EXPLAIN ANALYZE SELECT ((SELECT tmp::test FROM (SELECT * FROM test LIMIT 1) tmp)::test).*; WILL: QUERY PLAN Result (cost=0.11..0.12 rows=1 width=0) (actual time