| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 
 | set enable_seqscan=off;
CREATE TABLE test_money (
	i money
);
INSERT INTO test_money VALUES ('-2'),('-1'),('0'),('1'),('2'),('3');
CREATE INDEX idx_money ON test_money USING rum (i);
SELECT * FROM test_money WHERE i<'1'::money ORDER BY i;
   i    
--------
 -$2.00
 -$1.00
  $0.00
(3 rows)
SELECT * FROM test_money WHERE i<='1'::money ORDER BY i;
   i    
--------
 -$2.00
 -$1.00
  $0.00
  $1.00
(4 rows)
SELECT * FROM test_money WHERE i='1'::money ORDER BY i;
   i   
-------
 $1.00
(1 row)
SELECT * FROM test_money WHERE i>='1'::money ORDER BY i;
   i   
-------
 $1.00
 $2.00
 $3.00
(3 rows)
SELECT * FROM test_money WHERE i>'1'::money ORDER BY i;
   i   
-------
 $2.00
 $3.00
(2 rows)
EXPLAIN (costs off)
SELECT *, i <=> 0::money FROM test_money ORDER BY i <=> 0::money;
                QUERY PLAN                
------------------------------------------
 Index Scan using idx_money on test_money
   Order By: (i <=> (0)::money)
(2 rows)
SELECT *, i <=> 0::money FROM test_money ORDER BY i <=> 0::money;
   i    | ?column? 
--------+----------
  $0.00 |        0
 -$1.00 |      100
  $1.00 |      100
 -$2.00 |      200
  $2.00 |      200
  $3.00 |      300
(6 rows)
EXPLAIN (costs off)
SELECT *, i <=> 1::money FROM test_money WHERE i<1::money ORDER BY i <=> 1::money;
                QUERY PLAN                
------------------------------------------
 Index Scan using idx_money on test_money
   Index Cond: (i < (1)::money)
   Order By: (i <=> (1)::money)
(3 rows)
SELECT *, i <=> 1::money FROM test_money WHERE i<1::money ORDER BY i <=> 1::money;
   i    | ?column? 
--------+----------
  $0.00 |      100
 -$1.00 |      200
 -$2.00 |      300
(3 rows)
 |