Tweak create_index_paths()'s test for whether to consider a bitmap scan.
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 11 Jan 2011 17:12:04 +0000 (12:12 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 11 Jan 2011 17:13:02 +0000 (12:13 -0500)
Per my note of a couple days ago, create_index_paths would refuse to
consider any path at all for GIN indexes if the selectivity estimate came
out as 1.0; not even if you tried to force it with enable_seqscan.  While
this isn't really a bad outcome in practice, it could be annoying for
testing purposes.  Adjust the test for "is this path only useful for
sorting" so that it doesn't fire on paths with nil pathkeys, which will
include all GIN paths.

src/backend/optimizer/path/indxpath.c

index ab3d8d00b7549c252f2d2cf6189cda97fc4776ae..a3101d7ea73bf5c487b51c2a6dd5311068c258a4 100644 (file)
@@ -196,8 +196,8 @@ create_index_paths(PlannerInfo *root, RelOptInfo *rel)
            add_path(rel, (Path *) ipath);
 
        if (ipath->indexinfo->amhasgetbitmap &&
-           ipath->indexselectivity < 1.0 &&
-           !ScanDirectionIsBackward(ipath->indexscandir))
+           (ipath->path.pathkeys == NIL ||
+            ipath->indexselectivity < 1.0))
            bitindexpaths = lappend(bitindexpaths, ipath);
    }