漢数字型 version 1.0

とりあえず比較演算子の定義と、演算子クラスの実装まではできた。
これで、WHERE句とORDER BY、そしてB-Treeインデクスまでは使えるようになった。
まずはめでたしめでたし。

あとは型変換定義かな・・・

DROP TABLE ksj_sample;
DROP TABLE
DROP EXTENSION ksj;
DROP EXTENSION
CREATE EXTENSION ksj;
CREATE EXTENSION
CREATE TABLE ksj_sample (data ksj);
CREATE TABLE
INSERT INTO ksj_sample VALUES ('五百拾六'),('零'),('弐万百壱');
INSERT 0 3
SELECT * FROM ksj_sample;
    data
------------
 五百壱拾六
 零
 参万壱百壱
(3 rows)

SELECT data, data + '拾' FROM ksj_sample;
    data    |    ?column?
------------+----------------
 五百壱拾六 | 五百弐拾六
 零         | 壱拾
 参万壱百壱 | 参万壱百壱拾壱
(3 rows)

SELECT data, data * '拾' FROM ksj_sample;
    data    |   ?column?
------------+--------------
 五百壱拾六 | 五千壱百六拾
 零         | 零
 参万壱百壱 | 参拾壱千壱拾
(3 rows)

SELECT data, data / '拾' FROM ksj_sample;
    data    | ?column?
------------+----------
 五百壱拾六 | 五拾壱
 零         | 零
 参万壱百壱 | 参千壱拾
(3 rows)

SELECT data, data % '拾' FROM ksj_sample;
    data    | ?column?
------------+----------
 五百壱拾六 | 六
 零         | 零
 参万壱百壱 | 壱
(3 rows)

SELECT sum(data) FROM ksj_sample;
      sum
----------------
 参万六百壱拾七
(1 row)

SELECT max(data) FROM ksj_sample;
    max
------------
 参万壱百壱
(1 row)

SELECT min(data) FROM ksj_sample;
 min
-----
 零
(1 row)

SELECT * FROM ksj_sample WHERE data = '五百拾六';
    data
------------
 五百壱拾六
(1 row)

SELECT * FROM ksj_sample WHERE data <> '五百拾六';
    data
------------
 零
 参万壱百壱
(2 rows)

SELECT * FROM ksj_sample WHERE data < '五百拾六';
 data
------
 零
(1 row)

SELECT * FROM ksj_sample WHERE data > '五百拾六';
    data
------------
 参万壱百壱
(1 row)

SELECT * FROM ksj_sample WHERE data <= '五百拾六';
    data
------------
 五百壱拾六
 零
(2 rows)

SELECT * FROM ksj_sample WHERE data >= '五百拾六';
    data
------------
 五百壱拾六
 参万壱百壱
(2 rows)

SELECT * FROM ksj_sample ORDER BY data;
    data
------------
 零
 五百壱拾六
 参万壱百壱
(3 rows)

SELECT * FROM ksj_sample ORDER BY data DESC;
    data
------------
 参万壱百壱
 五百壱拾六
 零
(3 rows)

CREATE INDEX ksj_idx ON ksj_sample (data);
CREATE INDEX
SET enable_seqscan = off;
SET
EXPLAIN SELECT data FROM ksj_sample WHERE data = '五百拾六';
                                QUERY PLAN
---------------------------------------------------------------------------
 Index Scan using ksj_idx on ksj_sample  (cost=0.00..12.29 rows=2 width=4)
   Index Cond: (data = '五百壱拾六'::ksj)
(2 rows)