BUG #2515: Full Scan with constant column

From: "Daniel Naschenweng" <daniel(at)totall(dot)com(dot)br>
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #2515: Full Scan with constant column
Date: 2006-07-05 20:50:28
Message-ID: 200607052050.k65KoSP1026196@wwwmaster.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs


The following bug has been logged online:

Bug reference: 2515
Logged by: Daniel Naschenweng
Email address: daniel(at)totall(dot)com(dot)br
PostgreSQL version: 8.0.7
Operating system: Red Hat Linux 3.2.3-47.3
Description: Full Scan with constant column
Details:

--- BEGIN CREATE CONTEXT ---
drop table tab1 cascade;
drop table tab2 cascade;

CREATE TABLE TAB1 (
TAB1_ID SERIAL CONSTRAINT PK_TAB1_ID PRIMARY KEY,
VALOR INTEGER
);

CREATE TABLE TAB2 (
TAB2_ID SERIAL CONSTRAINT PK_TAB2_ID PRIMARY KEY,
TAB1_ID INTEGER,
CONSTRAINT FK_TAB1_TAB2 FOREIGN KEY (TAB1_ID) REFERENCES TAB1 (TAB1_ID)
);

CREATE OR REPLACE FUNCTION POPULA_TAB ()
RETURNS NAME AS '
DECLARE
I INTEGER;
BEGIN
FOR i IN 1..100000 LOOP
INSERT INTO TAB1 (TAB1_ID,VALOR) VALUES (I,I);
INSERT INTO TAB2 (TAB1_ID) VALUES (I);
END LOOP;
RETURN ''OK'';

END;
' language 'plpgsql';

SELECT POPULA_TAB();

--- END CREATE CONTEXT ---

/* Select Seq Scan on tab2: */

explain
select t2.*
FROM tab1 t1 LEFT OUTER JOIN (select tab2.*
, 1 as coluna
from tab2
) t2 on t1.tab1_id=t2.tab2_id
WHERE t1.tab1_id=200;

QUERY PLAN
----------------------------------------------------------------------------
----
Nested Loop Left Join (cost=0.00..3958.01 rows=1 width=12)
Join Filter: ("outer".tab1_id = "inner".tab2_id)
-> Index Scan using pk_tab1_id on tab1 t1 (cost=0.00..6.01 rows=1
width=4)
Index Cond: (tab1_id = 200)
-> Subquery Scan t2 (cost=0.00..2640.08 rows=104954 width=12)
-> Seq Scan on tab2 (cost=0.00..1590.54 rows=104954 width=8)
(6 rows)

/* Correct plain on tab2: */

explain
select t2.*
FROM tab1 t1 LEFT OUTER JOIN (select tab2.*
--, 1 as coluna
from tab2
) t2 on t1.tab1_id=t2.tab2_id
WHERE t1.tab1_id=200;

QUERY PLAN
----------------------------------------------------------------------------
----
Nested Loop Left Join (cost=0.00..12.03 rows=1 width=8)
-> Index Scan using pk_tab1_id on tab1 t1 (cost=0.00..6.01 rows=1
width=4)
Index Cond: (tab1_id = 200)
-> Index Scan using pk_tab2_id on tab2 (cost=0.00..6.01 rows=1
width=8)
Index Cond: ("outer".tab1_id = tab2.tab2_id)
(5 rows)

Browse pgsql-bugs by date

  From Date Subject
Next Message Bruce Momjian 2006-07-06 02:00:16 Re: Bug#372115: Last security update of postgresql-contrib
Previous Message Kris Jurka 2006-07-05 19:31:48 Re: Fwd: [JDBC] Diffrence between 8.0.3 and 8.1.3