Re: BUG #16303: A condtion whether an index-only scan is possible includes a wrong

Horimoto Yasuhiro <horimoto@clear-code.com>

From: Horimoto Yasuhiro <horimoto@clear-code.com>
To: pgsql-bugs@lists.postgresql.org
Date: 2020-03-16T06:05:33Z
Lists: pgsql-bugs

Attachments

I send a patch for this problem.

thanks!

From: PG Bug reporting form <noreply@postgresql.org>
Subject: BUG #16303: A condtion whether an index-only scan is possible includes a wrong
Date: Mon, 16 Mar 2020 06:02:25 +0000

> The following bug has been logged on the website:
> 
> Bug reference:      16303
> Logged by:          Horimoto Yasuhiro
> Email address:      horimoto@clear-code.com
> PostgreSQL version: 12.2
> Operating system:   Debian 10.3
> Description:        
> 
> Hello, developers.
> 
> I think that the condition of whether an index-only scan is possible
> includes a wrong.
> 
> For example, in the following case, the index has no data to return. Because
> the query doesn't use specify columns.
> However, the query planner choice index-only scan.
> 
> create table gist_count_tbl (tsv tsvector);
> insert into gist_count_tbl values (null);
> create index gist_count_tbl_index on gist_count_tbl using gist (tsv);
> 
> vacuum analyze gist_count_tbl;
> 
> set enable_seqscan=off;
> set enable_bitmapscan=off;
> set enable_indexonlyscan=on;
> 
> explain (costs off)
> select count(*) from gist_count_tbl;
>                              QUERY PLAN                             
> --------------------------------------------------------------------
>  Aggregate
>    ->  Index Only Scan using gist_count_tbl_index on gist_count_tbl
> (2 rows)
> 
> In my opinion, we expected that the query planner doesn't choose an
> index-only scan in the above case. 
> 
> In fact, index_canreturn_attrs of
> https://github.com/postgres/postgres/blob/master/src/backend/optimizer/path/indxpath.c#L1951
> is NULL in the above case.
> 
> thanks!
>