On Mon, November 11, 2013 09:53, Erik Rijkers wrote: > On Fri, November 8, 2013 21:11, Alvaro Herrera wrote: >> >> Here's a version 7 of the patch, which fixes these bugs and adds >> opclasses for a bunch more types (timestamp, timestamptz, date, time, >> timetz), courtesy of Martín Marqués. It's also been rebased to apply >> cleanly on top of today's master branch. >> >> I have also added a selectivity function, but I'm not positive that it's >> very useful yet. >> >> [minmax-7.patch] > > The earlier errors are indeed fixed; now, I've been trying with the attached > test case but I'm unable to find a query that > improves with minmax index use. (it gets used sometimes but speedup is > negligable). >
Another issue (I think):
Attached is a program (and output as a .txt file) that gives the following
(repeatable) error:
$ ./casanova_test.sh
\timing on
drop table if exists t1;
Time: 333.159 ms
create table t1 (i int);
Time: 155.827 ms
create index t1_i_idx on t1 using minmax(i);
Time: 204.031 ms
insert into t1 select generate_series(1, 25000000);
Time: 126312.302 ms
analyze t1;
ERROR: could not truncate file base/21324/26339_vm to 41 blocks: it's only 1
blocks now
Time: 472.504 ms
[...]
Thanks,
Erik Rijkers
casanova_test.sh
Description: application/shellscript
$ ./casanova_test.sh
\timing on
drop table if exists t1;
Time: 333.159 ms
create table t1 (i int);
Time: 155.827 ms
create index t1_i_idx on t1 using minmax(i);
Time: 204.031 ms
insert into t1 select generate_series(1, 25000000);
Time: 126312.302 ms
analyze t1;
ERROR: could not truncate file base/21324/26339_vm to 41 blocks: it's only 1
blocks now
Time: 472.504 ms
\timing on
set enable_bitmapscan=1; explain analyze select i from t1 where i between
10000000 and 10001000;
Time: 0.508 ms
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------
Bitmap Heap Scan on t1 (cost=32.25..117786.77 rows=125001 width=4) (actual
time=1640.520..4465.768 rows=1001 loops=1)
Recheck Cond: ((i >= 10000000) AND (i <= 10001000))
Rows Removed by Index Recheck: 24998999
-> Bitmap Index Scan on t1_i_idx (cost=0.00..1.00 rows=125001 width=0)
(actual time=65.322..65.322 rows=291 loops=1)
Index Cond: ((i >= 10000000) AND (i <= 10001000))
Total runtime: 4466.003 ms
(6 rows)
Time: 4468.943 ms
set enable_bitmapscan=0; explain analyze select i from t1 where i between
10000000 and 10001000;
Time: 0.146 ms
QUERY PLAN
---------------------------------------------------------------------------------------------------------------
Seq Scan on t1 (cost=0.00..485621.80 rows=125001 width=4) (actual
time=1158.065..3332.925 rows=1001 loops=1)
Filter: ((i >= 10000000) AND (i <= 10001000))
Rows Removed by Filter: 24998999
Total runtime: 3333.038 ms
(4 rows)-- Sent via pgsql-hackers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
