-- money check
CREATE TABLE moneytmp (a money) WITH OIDS;
\copy moneytmp from 'data/cash.data'
SET enable_seqscan=on;
SELECT count(*) FROM moneytmp WHERE a <  '22649.64';
 count 
-------
   289
(1 row)

SELECT count(*) FROM moneytmp WHERE a <= '22649.64';
 count 
-------
   290
(1 row)

SELECT count(*) FROM moneytmp WHERE a  = '22649.64';
 count 
-------
     1
(1 row)

SELECT count(*) FROM moneytmp WHERE a >= '22649.64';
 count 
-------
   254
(1 row)

SELECT count(*) FROM moneytmp WHERE a >  '22649.64';
 count 
-------
   253
(1 row)

SELECT a, a <-> '21472.79' FROM moneytmp ORDER BY a <-> '21472.79' LIMIT 3;
     a      | ?column? 
------------+----------
 $21,472.79 |    $0.00
 $21,469.25 |    $3.54
 $21,915.01 |  $442.22
(3 rows)

CREATE INDEX moneyidx ON moneytmp USING gist ( a );
SET enable_seqscan=off;
SELECT count(*) FROM moneytmp WHERE a <  '22649.64'::money;
 count 
-------
   289
(1 row)

SELECT count(*) FROM moneytmp WHERE a <= '22649.64'::money;
 count 
-------
   290
(1 row)

SELECT count(*) FROM moneytmp WHERE a  = '22649.64'::money;
 count 
-------
     1
(1 row)

SELECT count(*) FROM moneytmp WHERE a >= '22649.64'::money;
 count 
-------
   254
(1 row)

SELECT count(*) FROM moneytmp WHERE a >  '22649.64'::money;
 count 
-------
   253
(1 row)

EXPLAIN (COSTS OFF)
SELECT a, a <-> '21472.79' FROM moneytmp ORDER BY a <-> '21472.79' LIMIT 3;
                    QUERY PLAN                    
--------------------------------------------------
 Limit
   ->  Index Only Scan using moneyidx on moneytmp
         Order By: (a <-> '$21,472.79'::money)
(3 rows)

SELECT a, a <-> '21472.79' FROM moneytmp ORDER BY a <-> '21472.79' LIMIT 3;
     a      | ?column? 
------------+----------
 $21,472.79 |    $0.00
 $21,469.25 |    $3.54
 $21,915.01 |  $442.22
(3 rows)