Skip to content

Commit 18ba2d8

Browse files
committed
Use fast scan only if all keys have preConsistent method.
Fix for bug #15 (comment)
1 parent 6b21cfb commit 18ba2d8

9 files changed

+346
-6
lines changed

Diff for: .gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,6 @@ include
1212
lib
1313
pip-selfcheck.json
1414

15+
# Generated files
16+
rum--1.0--1.1.sql
17+
rum--1.1.sql

Diff for: expected/orderby.out

+70
Original file line numberDiff line numberDiff line change
@@ -357,3 +357,73 @@ SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d >= '2016-05-16 14:21:25' ORDER
357357
458 | Fri May 20 21:21:22.326724 2016
358358
(3 rows)
359359

360+
-- Test multicolumn index
361+
RESET enable_indexscan;
362+
RESET enable_indexonlyscan;
363+
RESET enable_bitmapscan;
364+
SET enable_seqscan = off;
365+
DROP INDEX tsts_idx;
366+
CREATE INDEX tsts_id_idx ON tsts USING rum (t rum_tsvector_addon_ops, id, d)
367+
WITH (attach = 'd', to = 't');
368+
EXPLAIN (costs off)
369+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 1::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
370+
QUERY PLAN
371+
-----------------------------------------------------------------------------------
372+
Limit
373+
-> Index Scan using tsts_id_idx on tsts
374+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (id = 1))
375+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
376+
(4 rows)
377+
378+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 1::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
379+
id | d
380+
----+---
381+
(0 rows)
382+
383+
EXPLAIN (costs off)
384+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 355::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
385+
QUERY PLAN
386+
-----------------------------------------------------------------------------------
387+
Limit
388+
-> Index Scan using tsts_id_idx on tsts
389+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (id = 355))
390+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
391+
(4 rows)
392+
393+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 355::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
394+
id | d
395+
-----+---------------------------------
396+
355 | Mon May 16 14:21:22.326724 2016
397+
(1 row)
398+
399+
EXPLAIN (costs off)
400+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2016-05-11 11:21:22.326724'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
401+
QUERY PLAN
402+
----------------------------------------------------------------------------------------------------------------------------------
403+
Limit
404+
-> Index Scan using tsts_id_idx on tsts
405+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (d = 'Wed May 11 11:21:22.326724 2016'::timestamp without time zone))
406+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
407+
(4 rows)
408+
409+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2016-05-11 11:21:22.326724'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
410+
id | d
411+
-----+---------------------------------
412+
232 | Wed May 11 11:21:22.326724 2016
413+
(1 row)
414+
415+
EXPLAIN (costs off)
416+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2000-05-01'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
417+
QUERY PLAN
418+
---------------------------------------------------------------------------------------------------------------------------
419+
Limit
420+
-> Index Scan using tsts_id_idx on tsts
421+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (d = 'Mon May 01 00:00:00 2000'::timestamp without time zone))
422+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
423+
(4 rows)
424+
425+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2000-05-01'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
426+
id | d
427+
----+---
428+
(0 rows)
429+

Diff for: expected/orderby_1.out

+70
Original file line numberDiff line numberDiff line change
@@ -325,3 +325,73 @@ SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d >= '2016-05-16 14:21:25' ORDER
325325
458 | Fri May 20 21:21:22.326724 2016
326326
(3 rows)
327327

328+
-- Test multicolumn index
329+
RESET enable_indexscan;
330+
RESET enable_indexonlyscan;
331+
RESET enable_bitmapscan;
332+
SET enable_seqscan = off;
333+
DROP INDEX tsts_idx;
334+
CREATE INDEX tsts_id_idx ON tsts USING rum (t rum_tsvector_addon_ops, id, d)
335+
WITH (attach = 'd', to = 't');
336+
EXPLAIN (costs off)
337+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 1::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
338+
QUERY PLAN
339+
-----------------------------------------------------------------------------------
340+
Limit
341+
-> Index Scan using tsts_id_idx on tsts
342+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (id = 1))
343+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
344+
(4 rows)
345+
346+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 1::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
347+
id | d
348+
----+---
349+
(0 rows)
350+
351+
EXPLAIN (costs off)
352+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 355::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
353+
QUERY PLAN
354+
-----------------------------------------------------------------------------------
355+
Limit
356+
-> Index Scan using tsts_id_idx on tsts
357+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (id = 355))
358+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
359+
(4 rows)
360+
361+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 355::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
362+
id | d
363+
-----+---------------------------------
364+
355 | Mon May 16 14:21:22.326724 2016
365+
(1 row)
366+
367+
EXPLAIN (costs off)
368+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2016-05-11 11:21:22.326724'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
369+
QUERY PLAN
370+
----------------------------------------------------------------------------------------------------------------------------------
371+
Limit
372+
-> Index Scan using tsts_id_idx on tsts
373+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (d = 'Wed May 11 11:21:22.326724 2016'::timestamp without time zone))
374+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
375+
(4 rows)
376+
377+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2016-05-11 11:21:22.326724'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
378+
id | d
379+
-----+---------------------------------
380+
232 | Wed May 11 11:21:22.326724 2016
381+
(1 row)
382+
383+
EXPLAIN (costs off)
384+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2000-05-01'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
385+
QUERY PLAN
386+
---------------------------------------------------------------------------------------------------------------------------
387+
Limit
388+
-> Index Scan using tsts_id_idx on tsts
389+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (d = 'Mon May 01 00:00:00 2000'::timestamp without time zone))
390+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
391+
(4 rows)
392+
393+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2000-05-01'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
394+
id | d
395+
----+---
396+
(0 rows)
397+

Diff for: expected/orderby_hash.out

+70
Original file line numberDiff line numberDiff line change
@@ -357,3 +357,73 @@ SELECT id, d FROM tstsh WHERE t @@ 'wr&qh' AND d >= '2016-05-16 14:21:25' ORDER
357357
458 | Fri May 20 21:21:22.326724 2016
358358
(3 rows)
359359

360+
-- Test multicolumn index
361+
RESET enable_indexscan;
362+
RESET enable_indexonlyscan;
363+
RESET enable_bitmapscan;
364+
SET enable_seqscan = off;
365+
DROP INDEX tstsh_idx;
366+
CREATE INDEX tstsh_id_idx ON tsts USING rum (t rum_tsvector_addon_ops, id, d)
367+
WITH (attach = 'd', to = 't');
368+
EXPLAIN (costs off)
369+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 1::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
370+
QUERY PLAN
371+
-----------------------------------------------------------------------------------
372+
Limit
373+
-> Index Scan using tstsh_id_idx on tsts
374+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (id = 1))
375+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
376+
(4 rows)
377+
378+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 1::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
379+
id | d
380+
----+---
381+
(0 rows)
382+
383+
EXPLAIN (costs off)
384+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 355::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
385+
QUERY PLAN
386+
-----------------------------------------------------------------------------------
387+
Limit
388+
-> Index Scan using tstsh_id_idx on tsts
389+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (id = 355))
390+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
391+
(4 rows)
392+
393+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 355::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
394+
id | d
395+
-----+---------------------------------
396+
355 | Mon May 16 14:21:22.326724 2016
397+
(1 row)
398+
399+
EXPLAIN (costs off)
400+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2016-05-11 11:21:22.326724'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
401+
QUERY PLAN
402+
----------------------------------------------------------------------------------------------------------------------------------
403+
Limit
404+
-> Index Scan using tstsh_id_idx on tsts
405+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (d = 'Wed May 11 11:21:22.326724 2016'::timestamp without time zone))
406+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
407+
(4 rows)
408+
409+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2016-05-11 11:21:22.326724'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
410+
id | d
411+
-----+---------------------------------
412+
232 | Wed May 11 11:21:22.326724 2016
413+
(1 row)
414+
415+
EXPLAIN (costs off)
416+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2000-05-01'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
417+
QUERY PLAN
418+
---------------------------------------------------------------------------------------------------------------------------
419+
Limit
420+
-> Index Scan using tstsh_id_idx on tsts
421+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (d = 'Mon May 01 00:00:00 2000'::timestamp without time zone))
422+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
423+
(4 rows)
424+
425+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2000-05-01'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
426+
id | d
427+
----+---
428+
(0 rows)
429+

Diff for: expected/orderby_hash_1.out

+70
Original file line numberDiff line numberDiff line change
@@ -325,3 +325,73 @@ SELECT id, d FROM tstsh WHERE t @@ 'wr&qh' AND d >= '2016-05-16 14:21:25' ORDER
325325
458 | Fri May 20 21:21:22.326724 2016
326326
(3 rows)
327327

328+
-- Test multicolumn index
329+
RESET enable_indexscan;
330+
RESET enable_indexonlyscan;
331+
RESET enable_bitmapscan;
332+
SET enable_seqscan = off;
333+
DROP INDEX tstsh_idx;
334+
CREATE INDEX tstsh_id_idx ON tsts USING rum (t rum_tsvector_addon_ops, id, d)
335+
WITH (attach = 'd', to = 't');
336+
EXPLAIN (costs off)
337+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 1::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
338+
QUERY PLAN
339+
-----------------------------------------------------------------------------------
340+
Limit
341+
-> Index Scan using tstsh_id_idx on tsts
342+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (id = 1))
343+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
344+
(4 rows)
345+
346+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 1::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
347+
id | d
348+
----+---
349+
(0 rows)
350+
351+
EXPLAIN (costs off)
352+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 355::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
353+
QUERY PLAN
354+
-----------------------------------------------------------------------------------
355+
Limit
356+
-> Index Scan using tstsh_id_idx on tsts
357+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (id = 355))
358+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
359+
(4 rows)
360+
361+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 355::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
362+
id | d
363+
-----+---------------------------------
364+
355 | Mon May 16 14:21:22.326724 2016
365+
(1 row)
366+
367+
EXPLAIN (costs off)
368+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2016-05-11 11:21:22.326724'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
369+
QUERY PLAN
370+
----------------------------------------------------------------------------------------------------------------------------------
371+
Limit
372+
-> Index Scan using tstsh_id_idx on tsts
373+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (d = 'Wed May 11 11:21:22.326724 2016'::timestamp without time zone))
374+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
375+
(4 rows)
376+
377+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2016-05-11 11:21:22.326724'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
378+
id | d
379+
-----+---------------------------------
380+
232 | Wed May 11 11:21:22.326724 2016
381+
(1 row)
382+
383+
EXPLAIN (costs off)
384+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2000-05-01'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
385+
QUERY PLAN
386+
---------------------------------------------------------------------------------------------------------------------------
387+
Limit
388+
-> Index Scan using tstsh_id_idx on tsts
389+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (d = 'Mon May 01 00:00:00 2000'::timestamp without time zone))
390+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
391+
(4 rows)
392+
393+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2000-05-01'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
394+
id | d
395+
----+---
396+
(0 rows)
397+

Diff for: rum--1.0.sql

+1-1
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ AS 'MODULE_PATHNAME'
244244
LANGUAGE C IMMUTABLE STRICT;
245245

246246
/*
247-
* !!!deprecated, use rum_tsvector_hash_addon_ops!!!
247+
* !!!deprecated, use rum_tsvector_addon_ops!!!
248248
*/
249249
CREATE OPERATOR CLASS rum_tsvector_timestamp_ops
250250
FOR TYPE tsvector USING rum

Diff for: sql/orderby.sql

+27
Original file line numberDiff line numberDiff line change
@@ -77,3 +77,30 @@ SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d <= '2016-05-16 14:21:25' ORDER
7777
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d >= '2016-05-16 14:21:25' ORDER BY d ASC LIMIT 3;
7878
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d >= '2016-05-16 14:21:25' ORDER BY d DESC LIMIT 3;
7979

80+
-- Test multicolumn index
81+
82+
RESET enable_indexscan;
83+
RESET enable_indexonlyscan;
84+
RESET enable_bitmapscan;
85+
SET enable_seqscan = off;
86+
87+
DROP INDEX tsts_idx;
88+
89+
CREATE INDEX tsts_id_idx ON tsts USING rum (t rum_tsvector_addon_ops, id, d)
90+
WITH (attach = 'd', to = 't');
91+
92+
EXPLAIN (costs off)
93+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 1::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
94+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 1::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
95+
96+
EXPLAIN (costs off)
97+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 355::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
98+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 355::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
99+
100+
EXPLAIN (costs off)
101+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2016-05-11 11:21:22.326724'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
102+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2016-05-11 11:21:22.326724'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
103+
104+
EXPLAIN (costs off)
105+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2000-05-01'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
106+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2000-05-01'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;

Diff for: sql/orderby_hash.sql

+27
Original file line numberDiff line numberDiff line change
@@ -77,3 +77,30 @@ SELECT id, d FROM tstsh WHERE t @@ 'wr&qh' AND d <= '2016-05-16 14:21:25' ORDER
7777
SELECT id, d FROM tstsh WHERE t @@ 'wr&qh' AND d >= '2016-05-16 14:21:25' ORDER BY d ASC LIMIT 3;
7878
SELECT id, d FROM tstsh WHERE t @@ 'wr&qh' AND d >= '2016-05-16 14:21:25' ORDER BY d DESC LIMIT 3;
7979

80+
-- Test multicolumn index
81+
82+
RESET enable_indexscan;
83+
RESET enable_indexonlyscan;
84+
RESET enable_bitmapscan;
85+
SET enable_seqscan = off;
86+
87+
DROP INDEX tstsh_idx;
88+
89+
CREATE INDEX tstsh_id_idx ON tsts USING rum (t rum_tsvector_addon_ops, id, d)
90+
WITH (attach = 'd', to = 't');
91+
92+
EXPLAIN (costs off)
93+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 1::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
94+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 1::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
95+
96+
EXPLAIN (costs off)
97+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 355::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
98+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 355::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
99+
100+
EXPLAIN (costs off)
101+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2016-05-11 11:21:22.326724'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
102+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2016-05-11 11:21:22.326724'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
103+
104+
EXPLAIN (costs off)
105+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2000-05-01'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
106+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2000-05-01'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;

0 commit comments

Comments
 (0)