1 /* contrib/isn/isn--1.0.sql */
4 -- create table test ( id isbn );
5 -- insert into test values('978-0-393-04002-9');
7 -- select isbn('978-0-393-04002-9');
8 -- select isbn13('0-901690-54-6');
12 -- Input and output functions and data types:
14 ---------------------------------------------------
15 CREATE FUNCTION ean13_in(cstring)
20 CREATE FUNCTION ean13_out(ean13)
28 LIKE = pg_catalog.int8
31 IS 'International European Article Number (EAN13)';
33 CREATE FUNCTION isbn13_in(cstring)
35 AS 'MODULE_PATHNAME', 'isbn_in'
38 CREATE FUNCTION ean13_out(isbn13)
46 LIKE = pg_catalog.int8
48 COMMENT ON TYPE isbn13
49 IS 'International Standard Book Number 13 (ISBN13)';
51 CREATE FUNCTION ismn13_in(cstring)
53 AS 'MODULE_PATHNAME', 'ismn_in'
56 CREATE FUNCTION ean13_out(ismn13)
64 LIKE = pg_catalog.int8
66 COMMENT ON TYPE ismn13
67 IS 'International Standard Music Number 13 (ISMN13)';
69 CREATE FUNCTION issn13_in(cstring)
71 AS 'MODULE_PATHNAME', 'issn_in'
74 CREATE FUNCTION ean13_out(issn13)
82 LIKE = pg_catalog.int8
84 COMMENT ON TYPE issn13
85 IS 'International Standard Serial Number 13 (ISSN13)';
89 CREATE FUNCTION isbn_in(cstring)
94 CREATE FUNCTION isn_out(isbn)
102 LIKE = pg_catalog.int8
105 IS 'International Standard Book Number (ISBN)';
107 CREATE FUNCTION ismn_in(cstring)
112 CREATE FUNCTION isn_out(ismn)
120 LIKE = pg_catalog.int8
123 IS 'International Standard Music Number (ISMN)';
125 CREATE FUNCTION issn_in(cstring)
130 CREATE FUNCTION isn_out(issn)
138 LIKE = pg_catalog.int8
141 IS 'International Standard Serial Number (ISSN)';
143 CREATE FUNCTION upc_in(cstring)
148 CREATE FUNCTION isn_out(upc)
156 LIKE = pg_catalog.int8
159 IS 'Universal Product Code (UPC)';
162 -- Operator functions:
164 ---------------------------------------------------
166 CREATE FUNCTION isnlt(ean13, ean13)
171 CREATE FUNCTION isnle(ean13, ean13)
176 CREATE FUNCTION isneq(ean13, ean13)
181 CREATE FUNCTION isnge(ean13, ean13)
186 CREATE FUNCTION isngt(ean13, ean13)
191 CREATE FUNCTION isnne(ean13, ean13)
197 CREATE FUNCTION isnlt(ean13, isbn13)
202 CREATE FUNCTION isnle(ean13, isbn13)
207 CREATE FUNCTION isneq(ean13, isbn13)
212 CREATE FUNCTION isnge(ean13, isbn13)
217 CREATE FUNCTION isngt(ean13, isbn13)
222 CREATE FUNCTION isnne(ean13, isbn13)
228 CREATE FUNCTION isnlt(ean13, ismn13)
233 CREATE FUNCTION isnle(ean13, ismn13)
238 CREATE FUNCTION isneq(ean13, ismn13)
243 CREATE FUNCTION isnge(ean13, ismn13)
248 CREATE FUNCTION isngt(ean13, ismn13)
253 CREATE FUNCTION isnne(ean13, ismn13)
259 CREATE FUNCTION isnlt(ean13, issn13)
264 CREATE FUNCTION isnle(ean13, issn13)
269 CREATE FUNCTION isneq(ean13, issn13)
274 CREATE FUNCTION isnge(ean13, issn13)
279 CREATE FUNCTION isngt(ean13, issn13)
284 CREATE FUNCTION isnne(ean13, issn13)
290 CREATE FUNCTION isnlt(ean13, isbn)
295 CREATE FUNCTION isnle(ean13, isbn)
300 CREATE FUNCTION isneq(ean13, isbn)
305 CREATE FUNCTION isnge(ean13, isbn)
310 CREATE FUNCTION isngt(ean13, isbn)
315 CREATE FUNCTION isnne(ean13, isbn)
321 CREATE FUNCTION isnlt(ean13, ismn)
326 CREATE FUNCTION isnle(ean13, ismn)
331 CREATE FUNCTION isneq(ean13, ismn)
336 CREATE FUNCTION isnge(ean13, ismn)
341 CREATE FUNCTION isngt(ean13, ismn)
346 CREATE FUNCTION isnne(ean13, ismn)
352 CREATE FUNCTION isnlt(ean13, issn)
357 CREATE FUNCTION isnle(ean13, issn)
362 CREATE FUNCTION isneq(ean13, issn)
367 CREATE FUNCTION isnge(ean13, issn)
372 CREATE FUNCTION isngt(ean13, issn)
377 CREATE FUNCTION isnne(ean13, issn)
383 CREATE FUNCTION isnlt(ean13, upc)
388 CREATE FUNCTION isnle(ean13, upc)
393 CREATE FUNCTION isneq(ean13, upc)
398 CREATE FUNCTION isnge(ean13, upc)
403 CREATE FUNCTION isngt(ean13, upc)
408 CREATE FUNCTION isnne(ean13, upc)
414 ---------------------------------------------------
416 CREATE FUNCTION isnlt(isbn13, isbn13)
421 CREATE FUNCTION isnle(isbn13, isbn13)
426 CREATE FUNCTION isneq(isbn13, isbn13)
431 CREATE FUNCTION isnge(isbn13, isbn13)
436 CREATE FUNCTION isngt(isbn13, isbn13)
441 CREATE FUNCTION isnne(isbn13, isbn13)
447 CREATE FUNCTION isnlt(isbn13, isbn)
452 CREATE FUNCTION isnle(isbn13, isbn)
457 CREATE FUNCTION isneq(isbn13, isbn)
462 CREATE FUNCTION isnge(isbn13, isbn)
467 CREATE FUNCTION isngt(isbn13, isbn)
472 CREATE FUNCTION isnne(isbn13, isbn)
478 CREATE FUNCTION isnlt(isbn13, ean13)
483 CREATE FUNCTION isnle(isbn13, ean13)
488 CREATE FUNCTION isneq(isbn13, ean13)
493 CREATE FUNCTION isnge(isbn13, ean13)
498 CREATE FUNCTION isngt(isbn13, ean13)
503 CREATE FUNCTION isnne(isbn13, ean13)
509 ---------------------------------------------------
511 CREATE FUNCTION isnlt(isbn, isbn)
516 CREATE FUNCTION isnle(isbn, isbn)
521 CREATE FUNCTION isneq(isbn, isbn)
526 CREATE FUNCTION isnge(isbn, isbn)
531 CREATE FUNCTION isngt(isbn, isbn)
536 CREATE FUNCTION isnne(isbn, isbn)
542 CREATE FUNCTION isnlt(isbn, isbn13)
547 CREATE FUNCTION isnle(isbn, isbn13)
552 CREATE FUNCTION isneq(isbn, isbn13)
557 CREATE FUNCTION isnge(isbn, isbn13)
562 CREATE FUNCTION isngt(isbn, isbn13)
567 CREATE FUNCTION isnne(isbn, isbn13)
573 CREATE FUNCTION isnlt(isbn, ean13)
578 CREATE FUNCTION isnle(isbn, ean13)
583 CREATE FUNCTION isneq(isbn, ean13)
588 CREATE FUNCTION isnge(isbn, ean13)
593 CREATE FUNCTION isngt(isbn, ean13)
598 CREATE FUNCTION isnne(isbn, ean13)
604 ---------------------------------------------------
606 CREATE FUNCTION isnlt(ismn13, ismn13)
611 CREATE FUNCTION isnle(ismn13, ismn13)
616 CREATE FUNCTION isneq(ismn13, ismn13)
621 CREATE FUNCTION isnge(ismn13, ismn13)
626 CREATE FUNCTION isngt(ismn13, ismn13)
631 CREATE FUNCTION isnne(ismn13, ismn13)
637 CREATE FUNCTION isnlt(ismn13, ismn)
642 CREATE FUNCTION isnle(ismn13, ismn)
647 CREATE FUNCTION isneq(ismn13, ismn)
652 CREATE FUNCTION isnge(ismn13, ismn)
657 CREATE FUNCTION isngt(ismn13, ismn)
662 CREATE FUNCTION isnne(ismn13, ismn)
668 CREATE FUNCTION isnlt(ismn13, ean13)
673 CREATE FUNCTION isnle(ismn13, ean13)
678 CREATE FUNCTION isneq(ismn13, ean13)
683 CREATE FUNCTION isnge(ismn13, ean13)
688 CREATE FUNCTION isngt(ismn13, ean13)
693 CREATE FUNCTION isnne(ismn13, ean13)
699 ---------------------------------------------------
701 CREATE FUNCTION isnlt(ismn, ismn)
706 CREATE FUNCTION isnle(ismn, ismn)
711 CREATE FUNCTION isneq(ismn, ismn)
716 CREATE FUNCTION isnge(ismn, ismn)
721 CREATE FUNCTION isngt(ismn, ismn)
726 CREATE FUNCTION isnne(ismn, ismn)
732 CREATE FUNCTION isnlt(ismn, ismn13)
737 CREATE FUNCTION isnle(ismn, ismn13)
742 CREATE FUNCTION isneq(ismn, ismn13)
747 CREATE FUNCTION isnge(ismn, ismn13)
752 CREATE FUNCTION isngt(ismn, ismn13)
757 CREATE FUNCTION isnne(ismn, ismn13)
763 CREATE FUNCTION isnlt(ismn, ean13)
768 CREATE FUNCTION isnle(ismn, ean13)
773 CREATE FUNCTION isneq(ismn, ean13)
778 CREATE FUNCTION isnge(ismn, ean13)
783 CREATE FUNCTION isngt(ismn, ean13)
788 CREATE FUNCTION isnne(ismn, ean13)
794 ---------------------------------------------------
796 CREATE FUNCTION isnlt(issn13, issn13)
801 CREATE FUNCTION isnle(issn13, issn13)
806 CREATE FUNCTION isneq(issn13, issn13)
811 CREATE FUNCTION isnge(issn13, issn13)
816 CREATE FUNCTION isngt(issn13, issn13)
821 CREATE FUNCTION isnne(issn13, issn13)
827 CREATE FUNCTION isnlt(issn13, issn)
832 CREATE FUNCTION isnle(issn13, issn)
837 CREATE FUNCTION isneq(issn13, issn)
842 CREATE FUNCTION isnge(issn13, issn)
847 CREATE FUNCTION isngt(issn13, issn)
852 CREATE FUNCTION isnne(issn13, issn)
858 CREATE FUNCTION isnlt(issn13, ean13)
863 CREATE FUNCTION isnle(issn13, ean13)
868 CREATE FUNCTION isneq(issn13, ean13)
873 CREATE FUNCTION isnge(issn13, ean13)
878 CREATE FUNCTION isngt(issn13, ean13)
883 CREATE FUNCTION isnne(issn13, ean13)
889 ---------------------------------------------------
891 CREATE FUNCTION isnlt(issn, issn)
896 CREATE FUNCTION isnle(issn, issn)
901 CREATE FUNCTION isneq(issn, issn)
906 CREATE FUNCTION isnge(issn, issn)
911 CREATE FUNCTION isngt(issn, issn)
916 CREATE FUNCTION isnne(issn, issn)
922 CREATE FUNCTION isnlt(issn, issn13)
927 CREATE FUNCTION isnle(issn, issn13)
932 CREATE FUNCTION isneq(issn, issn13)
937 CREATE FUNCTION isnge(issn, issn13)
942 CREATE FUNCTION isngt(issn, issn13)
947 CREATE FUNCTION isnne(issn, issn13)
953 CREATE FUNCTION isnlt(issn, ean13)
958 CREATE FUNCTION isnle(issn, ean13)
963 CREATE FUNCTION isneq(issn, ean13)
968 CREATE FUNCTION isnge(issn, ean13)
973 CREATE FUNCTION isngt(issn, ean13)
978 CREATE FUNCTION isnne(issn, ean13)
984 ---------------------------------------------------
986 CREATE FUNCTION isnlt(upc, upc)
991 CREATE FUNCTION isnle(upc, upc)
996 CREATE FUNCTION isneq(upc, upc)
1001 CREATE FUNCTION isnge(upc, upc)
1006 CREATE FUNCTION isngt(upc, upc)
1011 CREATE FUNCTION isnne(upc, upc)
1017 CREATE FUNCTION isnlt(upc, ean13)
1022 CREATE FUNCTION isnle(upc, ean13)
1027 CREATE FUNCTION isneq(upc, ean13)
1032 CREATE FUNCTION isnge(upc, ean13)
1037 CREATE FUNCTION isngt(upc, ean13)
1042 CREATE FUNCTION isnne(upc, ean13)
1049 -- Now the operators:
1055 ---------------------------------------------------
1062 RESTRICT = scalarltsel,
1063 JOIN = scalarltjoinsel);
1064 CREATE OPERATOR <= (
1070 RESTRICT = scalarltsel,
1071 JOIN = scalarltjoinsel);
1082 CREATE OPERATOR >= (
1088 RESTRICT = scalargtsel,
1089 JOIN = scalargtjoinsel );
1096 RESTRICT = scalargtsel,
1097 JOIN = scalargtjoinsel );
1098 CREATE OPERATOR <> (
1113 RESTRICT = scalarltsel,
1114 JOIN = scalarltjoinsel);
1115 CREATE OPERATOR <= (
1121 RESTRICT = scalarltsel,
1122 JOIN = scalarltjoinsel);
1133 CREATE OPERATOR >= (
1139 RESTRICT = scalargtsel,
1140 JOIN = scalargtjoinsel );
1147 RESTRICT = scalargtsel,
1148 JOIN = scalargtjoinsel );
1149 CREATE OPERATOR <> (
1164 RESTRICT = scalarltsel,
1165 JOIN = scalarltjoinsel);
1166 CREATE OPERATOR <= (
1172 RESTRICT = scalarltsel,
1173 JOIN = scalarltjoinsel);
1184 CREATE OPERATOR >= (
1190 RESTRICT = scalargtsel,
1191 JOIN = scalargtjoinsel );
1198 RESTRICT = scalargtsel,
1199 JOIN = scalargtjoinsel );
1200 CREATE OPERATOR <> (
1215 RESTRICT = scalarltsel,
1216 JOIN = scalarltjoinsel);
1217 CREATE OPERATOR <= (
1223 RESTRICT = scalarltsel,
1224 JOIN = scalarltjoinsel);
1235 CREATE OPERATOR >= (
1241 RESTRICT = scalargtsel,
1242 JOIN = scalargtjoinsel);
1249 RESTRICT = scalargtsel,
1250 JOIN = scalargtjoinsel);
1251 CREATE OPERATOR <> (
1266 RESTRICT = scalarltsel,
1267 JOIN = scalarltjoinsel);
1268 CREATE OPERATOR <= (
1274 RESTRICT = scalarltsel,
1275 JOIN = scalarltjoinsel);
1286 CREATE OPERATOR >= (
1292 RESTRICT = scalargtsel,
1293 JOIN = scalargtjoinsel );
1300 RESTRICT = scalargtsel,
1301 JOIN = scalargtjoinsel );
1302 CREATE OPERATOR <> (
1317 RESTRICT = scalarltsel,
1318 JOIN = scalarltjoinsel);
1319 CREATE OPERATOR <= (
1325 RESTRICT = scalarltsel,
1326 JOIN = scalarltjoinsel);
1337 CREATE OPERATOR >= (
1343 RESTRICT = scalargtsel,
1344 JOIN = scalargtjoinsel);
1351 RESTRICT = scalargtsel,
1352 JOIN = scalargtjoinsel);
1353 CREATE OPERATOR <> (
1368 RESTRICT = scalarltsel,
1369 JOIN = scalarltjoinsel);
1370 CREATE OPERATOR <= (
1376 RESTRICT = scalarltsel,
1377 JOIN = scalarltjoinsel);
1388 CREATE OPERATOR >= (
1394 RESTRICT = scalargtsel,
1395 JOIN = scalargtjoinsel);
1402 RESTRICT = scalargtsel,
1403 JOIN = scalargtjoinsel);
1404 CREATE OPERATOR <> (
1419 RESTRICT = scalarltsel,
1420 JOIN = scalarltjoinsel);
1421 CREATE OPERATOR <= (
1427 RESTRICT = scalarltsel,
1428 JOIN = scalarltjoinsel);
1439 CREATE OPERATOR >= (
1445 RESTRICT = scalargtsel,
1446 JOIN = scalargtjoinsel);
1453 RESTRICT = scalargtsel,
1454 JOIN = scalargtjoinsel);
1455 CREATE OPERATOR <> (
1470 RESTRICT = scalarltsel,
1471 JOIN = scalarltjoinsel);
1472 CREATE OPERATOR <= (
1478 RESTRICT = scalarltsel,
1479 JOIN = scalarltjoinsel);
1490 CREATE OPERATOR >= (
1496 RESTRICT = scalargtsel,
1497 JOIN = scalargtjoinsel);
1504 RESTRICT = scalargtsel,
1505 JOIN = scalargtjoinsel);
1506 CREATE OPERATOR <> (
1521 RESTRICT = scalarltsel,
1522 JOIN = scalarltjoinsel);
1523 CREATE OPERATOR <= (
1529 RESTRICT = scalarltsel,
1530 JOIN = scalarltjoinsel);
1541 CREATE OPERATOR >= (
1547 RESTRICT = scalargtsel,
1548 JOIN = scalargtjoinsel);
1555 RESTRICT = scalargtsel,
1556 JOIN = scalargtjoinsel);
1557 CREATE OPERATOR <> (
1567 -- ISBN13 operators:
1569 ---------------------------------------------------
1576 RESTRICT = scalarltsel,
1577 JOIN = scalarltjoinsel);
1578 CREATE OPERATOR <= (
1584 RESTRICT = scalarltsel,
1585 JOIN = scalarltjoinsel);
1596 CREATE OPERATOR >= (
1602 RESTRICT = scalargtsel,
1603 JOIN = scalargtjoinsel );
1610 RESTRICT = scalargtsel,
1611 JOIN = scalargtjoinsel );
1612 CREATE OPERATOR <> (
1627 RESTRICT = scalarltsel,
1628 JOIN = scalarltjoinsel);
1629 CREATE OPERATOR <= (
1635 RESTRICT = scalarltsel,
1636 JOIN = scalarltjoinsel);
1647 CREATE OPERATOR >= (
1653 RESTRICT = scalargtsel,
1654 JOIN = scalargtjoinsel );
1661 RESTRICT = scalargtsel,
1662 JOIN = scalargtjoinsel );
1663 CREATE OPERATOR <> (
1675 ---------------------------------------------------
1682 RESTRICT = scalarltsel,
1683 JOIN = scalarltjoinsel);
1684 CREATE OPERATOR <= (
1690 RESTRICT = scalarltsel,
1691 JOIN = scalarltjoinsel);
1702 CREATE OPERATOR >= (
1708 RESTRICT = scalargtsel,
1709 JOIN = scalargtjoinsel );
1716 RESTRICT = scalargtsel,
1717 JOIN = scalargtjoinsel );
1718 CREATE OPERATOR <> (
1733 RESTRICT = scalarltsel,
1734 JOIN = scalarltjoinsel);
1735 CREATE OPERATOR <= (
1741 RESTRICT = scalarltsel,
1742 JOIN = scalarltjoinsel);
1753 CREATE OPERATOR >= (
1759 RESTRICT = scalargtsel,
1760 JOIN = scalargtjoinsel );
1767 RESTRICT = scalargtsel,
1768 JOIN = scalargtjoinsel );
1769 CREATE OPERATOR <> (
1784 RESTRICT = scalarltsel,
1785 JOIN = scalarltjoinsel);
1786 CREATE OPERATOR <= (
1792 RESTRICT = scalarltsel,
1793 JOIN = scalarltjoinsel);
1804 CREATE OPERATOR >= (
1810 RESTRICT = scalargtsel,
1811 JOIN = scalargtjoinsel );
1818 RESTRICT = scalargtsel,
1819 JOIN = scalargtjoinsel );
1820 CREATE OPERATOR <> (
1830 -- ISMN13 operators:
1832 ---------------------------------------------------
1839 RESTRICT = scalarltsel,
1840 JOIN = scalarltjoinsel);
1841 CREATE OPERATOR <= (
1847 RESTRICT = scalarltsel,
1848 JOIN = scalarltjoinsel);
1859 CREATE OPERATOR >= (
1865 RESTRICT = scalargtsel,
1866 JOIN = scalargtjoinsel );
1873 RESTRICT = scalargtsel,
1874 JOIN = scalargtjoinsel );
1875 CREATE OPERATOR <> (
1890 RESTRICT = scalarltsel,
1891 JOIN = scalarltjoinsel);
1892 CREATE OPERATOR <= (
1898 RESTRICT = scalarltsel,
1899 JOIN = scalarltjoinsel);
1910 CREATE OPERATOR >= (
1916 RESTRICT = scalargtsel,
1917 JOIN = scalargtjoinsel );
1924 RESTRICT = scalargtsel,
1925 JOIN = scalargtjoinsel );
1926 CREATE OPERATOR <> (
1938 ---------------------------------------------------
1945 RESTRICT = scalarltsel,
1946 JOIN = scalarltjoinsel);
1947 CREATE OPERATOR <= (
1953 RESTRICT = scalarltsel,
1954 JOIN = scalarltjoinsel);
1965 CREATE OPERATOR >= (
1971 RESTRICT = scalargtsel,
1972 JOIN = scalargtjoinsel );
1979 RESTRICT = scalargtsel,
1980 JOIN = scalargtjoinsel );
1981 CREATE OPERATOR <> (
1996 RESTRICT = scalarltsel,
1997 JOIN = scalarltjoinsel);
1998 CREATE OPERATOR <= (
2004 RESTRICT = scalarltsel,
2005 JOIN = scalarltjoinsel);
2016 CREATE OPERATOR >= (
2022 RESTRICT = scalargtsel,
2023 JOIN = scalargtjoinsel );
2030 RESTRICT = scalargtsel,
2031 JOIN = scalargtjoinsel );
2032 CREATE OPERATOR <> (
2047 RESTRICT = scalarltsel,
2048 JOIN = scalarltjoinsel);
2049 CREATE OPERATOR <= (
2055 RESTRICT = scalarltsel,
2056 JOIN = scalarltjoinsel);
2067 CREATE OPERATOR >= (
2073 RESTRICT = scalargtsel,
2074 JOIN = scalargtjoinsel );
2081 RESTRICT = scalargtsel,
2082 JOIN = scalargtjoinsel );
2083 CREATE OPERATOR <> (
2093 -- ISSN13 operators:
2095 ---------------------------------------------------
2102 RESTRICT = scalarltsel,
2103 JOIN = scalarltjoinsel);
2104 CREATE OPERATOR <= (
2110 RESTRICT = scalarltsel,
2111 JOIN = scalarltjoinsel);
2122 CREATE OPERATOR >= (
2128 RESTRICT = scalargtsel,
2129 JOIN = scalargtjoinsel );
2136 RESTRICT = scalargtsel,
2137 JOIN = scalargtjoinsel );
2138 CREATE OPERATOR <> (
2153 RESTRICT = scalarltsel,
2154 JOIN = scalarltjoinsel);
2155 CREATE OPERATOR <= (
2161 RESTRICT = scalarltsel,
2162 JOIN = scalarltjoinsel);
2173 CREATE OPERATOR >= (
2179 RESTRICT = scalargtsel,
2180 JOIN = scalargtjoinsel );
2187 RESTRICT = scalargtsel,
2188 JOIN = scalargtjoinsel );
2189 CREATE OPERATOR <> (
2204 RESTRICT = scalarltsel,
2205 JOIN = scalarltjoinsel);
2206 CREATE OPERATOR <= (
2212 RESTRICT = scalarltsel,
2213 JOIN = scalarltjoinsel);
2224 CREATE OPERATOR >= (
2230 RESTRICT = scalargtsel,
2231 JOIN = scalargtjoinsel );
2238 RESTRICT = scalargtsel,
2239 JOIN = scalargtjoinsel );
2240 CREATE OPERATOR <> (
2252 ---------------------------------------------------
2259 RESTRICT = scalarltsel,
2260 JOIN = scalarltjoinsel);
2261 CREATE OPERATOR <= (
2267 RESTRICT = scalarltsel,
2268 JOIN = scalarltjoinsel);
2279 CREATE OPERATOR >= (
2285 RESTRICT = scalargtsel,
2286 JOIN = scalargtjoinsel );
2293 RESTRICT = scalargtsel,
2294 JOIN = scalargtjoinsel );
2295 CREATE OPERATOR <> (
2310 RESTRICT = scalarltsel,
2311 JOIN = scalarltjoinsel);
2312 CREATE OPERATOR <= (
2318 RESTRICT = scalarltsel,
2319 JOIN = scalarltjoinsel);
2330 CREATE OPERATOR >= (
2336 RESTRICT = scalargtsel,
2337 JOIN = scalargtjoinsel );
2344 RESTRICT = scalargtsel,
2345 JOIN = scalargtjoinsel );
2346 CREATE OPERATOR <> (
2361 RESTRICT = scalarltsel,
2362 JOIN = scalarltjoinsel);
2363 CREATE OPERATOR <= (
2369 RESTRICT = scalarltsel,
2370 JOIN = scalarltjoinsel);
2381 CREATE OPERATOR >= (
2387 RESTRICT = scalargtsel,
2388 JOIN = scalargtjoinsel );
2395 RESTRICT = scalargtsel,
2396 JOIN = scalargtjoinsel );
2397 CREATE OPERATOR <> (
2409 ---------------------------------------------------
2416 RESTRICT = scalarltsel,
2417 JOIN = scalarltjoinsel);
2418 CREATE OPERATOR <= (
2424 RESTRICT = scalarltsel,
2425 JOIN = scalarltjoinsel);
2436 CREATE OPERATOR >= (
2442 RESTRICT = scalargtsel,
2443 JOIN = scalargtjoinsel );
2450 RESTRICT = scalargtsel,
2451 JOIN = scalargtjoinsel );
2452 CREATE OPERATOR <> (
2467 RESTRICT = scalarltsel,
2468 JOIN = scalarltjoinsel);
2469 CREATE OPERATOR <= (
2475 RESTRICT = scalarltsel,
2476 JOIN = scalarltjoinsel);
2487 CREATE OPERATOR >= (
2493 RESTRICT = scalargtsel,
2494 JOIN = scalargtjoinsel );
2501 RESTRICT = scalargtsel,
2502 JOIN = scalargtjoinsel );
2503 CREATE OPERATOR <> (
2513 -- Operator families for the various operator classes:
2515 ---------------------------------------------------
2517 CREATE OPERATOR FAMILY isn_ops USING btree;
2518 CREATE OPERATOR FAMILY isn_ops USING hash;
2521 -- Operator classes:
2523 ---------------------------------------------------
2525 CREATE FUNCTION btean13cmp(ean13, ean13)
2531 CREATE OPERATOR CLASS ean13_ops DEFAULT
2532 FOR TYPE ean13 USING btree FAMILY isn_ops AS
2538 FUNCTION 1 btean13cmp(ean13, ean13);
2540 CREATE FUNCTION hashean13(ean13)
2543 LANGUAGE 'internal' IMMUTABLE STRICT;
2545 CREATE OPERATOR CLASS ean13_ops DEFAULT
2546 FOR TYPE ean13 USING hash FAMILY isn_ops AS
2548 FUNCTION 1 hashean13(ean13);
2550 -- EAN13 vs other types:
2551 CREATE FUNCTION btean13cmp(ean13, isbn13)
2556 CREATE FUNCTION btean13cmp(ean13, ismn13)
2561 CREATE FUNCTION btean13cmp(ean13, issn13)
2566 CREATE FUNCTION btean13cmp(ean13, isbn)
2571 CREATE FUNCTION btean13cmp(ean13, ismn)
2576 CREATE FUNCTION btean13cmp(ean13, issn)
2581 CREATE FUNCTION btean13cmp(ean13, upc)
2587 ALTER OPERATOR FAMILY isn_ops USING btree ADD
2588 OPERATOR 1 < (ean13, isbn13),
2589 OPERATOR 1 < (ean13, ismn13),
2590 OPERATOR 1 < (ean13, issn13),
2591 OPERATOR 1 < (ean13, isbn),
2592 OPERATOR 1 < (ean13, ismn),
2593 OPERATOR 1 < (ean13, issn),
2594 OPERATOR 1 < (ean13, upc),
2595 OPERATOR 2 <= (ean13, isbn13),
2596 OPERATOR 2 <= (ean13, ismn13),
2597 OPERATOR 2 <= (ean13, issn13),
2598 OPERATOR 2 <= (ean13, isbn),
2599 OPERATOR 2 <= (ean13, ismn),
2600 OPERATOR 2 <= (ean13, issn),
2601 OPERATOR 2 <= (ean13, upc),
2602 OPERATOR 3 = (ean13, isbn13),
2603 OPERATOR 3 = (ean13, ismn13),
2604 OPERATOR 3 = (ean13, issn13),
2605 OPERATOR 3 = (ean13, isbn),
2606 OPERATOR 3 = (ean13, ismn),
2607 OPERATOR 3 = (ean13, issn),
2608 OPERATOR 3 = (ean13, upc),
2609 OPERATOR 4 >= (ean13, isbn13),
2610 OPERATOR 4 >= (ean13, ismn13),
2611 OPERATOR 4 >= (ean13, issn13),
2612 OPERATOR 4 >= (ean13, isbn),
2613 OPERATOR 4 >= (ean13, ismn),
2614 OPERATOR 4 >= (ean13, issn),
2615 OPERATOR 4 >= (ean13, upc),
2616 OPERATOR 5 > (ean13, isbn13),
2617 OPERATOR 5 > (ean13, ismn13),
2618 OPERATOR 5 > (ean13, issn13),
2619 OPERATOR 5 > (ean13, isbn),
2620 OPERATOR 5 > (ean13, ismn),
2621 OPERATOR 5 > (ean13, issn),
2622 OPERATOR 5 > (ean13, upc),
2623 FUNCTION 1 btean13cmp(ean13, isbn13),
2624 FUNCTION 1 btean13cmp(ean13, ismn13),
2625 FUNCTION 1 btean13cmp(ean13, issn13),
2626 FUNCTION 1 btean13cmp(ean13, isbn),
2627 FUNCTION 1 btean13cmp(ean13, ismn),
2628 FUNCTION 1 btean13cmp(ean13, issn),
2629 FUNCTION 1 btean13cmp(ean13, upc);
2631 ALTER OPERATOR FAMILY isn_ops USING hash ADD
2632 OPERATOR 1 = (ean13, isbn13),
2633 OPERATOR 1 = (ean13, ismn13),
2634 OPERATOR 1 = (ean13, issn13),
2635 OPERATOR 1 = (ean13, isbn),
2636 OPERATOR 1 = (ean13, ismn),
2637 OPERATOR 1 = (ean13, issn),
2638 OPERATOR 1 = (ean13, upc);
2640 ---------------------------------------------------
2642 CREATE FUNCTION btisbn13cmp(isbn13, isbn13)
2648 CREATE OPERATOR CLASS isbn13_ops DEFAULT
2649 FOR TYPE isbn13 USING btree FAMILY isn_ops AS
2655 FUNCTION 1 btisbn13cmp(isbn13, isbn13);
2657 CREATE FUNCTION hashisbn13(isbn13)
2663 CREATE OPERATOR CLASS isbn13_ops DEFAULT
2664 FOR TYPE isbn13 USING hash FAMILY isn_ops AS
2666 FUNCTION 1 hashisbn13(isbn13);
2668 -- ISBN13 vs other types:
2669 CREATE FUNCTION btisbn13cmp(isbn13, ean13)
2674 CREATE FUNCTION btisbn13cmp(isbn13, isbn)
2680 ALTER OPERATOR FAMILY isn_ops USING btree ADD
2681 OPERATOR 1 < (isbn13, ean13),
2682 OPERATOR 1 < (isbn13, isbn),
2683 OPERATOR 2 <= (isbn13, ean13),
2684 OPERATOR 2 <= (isbn13, isbn),
2685 OPERATOR 3 = (isbn13, ean13),
2686 OPERATOR 3 = (isbn13, isbn),
2687 OPERATOR 4 >= (isbn13, ean13),
2688 OPERATOR 4 >= (isbn13, isbn),
2689 OPERATOR 5 > (isbn13, ean13),
2690 OPERATOR 5 > (isbn13, isbn),
2691 FUNCTION 1 btisbn13cmp(isbn13, ean13),
2692 FUNCTION 1 btisbn13cmp(isbn13, isbn);
2694 ALTER OPERATOR FAMILY isn_ops USING hash ADD
2695 OPERATOR 1 = (isbn13, ean13),
2696 OPERATOR 1 = (isbn13, isbn);
2698 ---------------------------------------------------
2700 CREATE FUNCTION btisbncmp(isbn, isbn)
2706 CREATE OPERATOR CLASS isbn_ops DEFAULT
2707 FOR TYPE isbn USING btree FAMILY isn_ops AS
2713 FUNCTION 1 btisbncmp(isbn, isbn);
2715 CREATE FUNCTION hashisbn(isbn)
2721 CREATE OPERATOR CLASS isbn_ops DEFAULT
2722 FOR TYPE isbn USING hash FAMILY isn_ops AS
2724 FUNCTION 1 hashisbn(isbn);
2726 -- ISBN vs other types:
2727 CREATE FUNCTION btisbncmp(isbn, ean13)
2732 CREATE FUNCTION btisbncmp(isbn, isbn13)
2738 ALTER OPERATOR FAMILY isn_ops USING btree ADD
2739 OPERATOR 1 < (isbn, ean13),
2740 OPERATOR 1 < (isbn, isbn13),
2741 OPERATOR 2 <= (isbn, ean13),
2742 OPERATOR 2 <= (isbn, isbn13),
2743 OPERATOR 3 = (isbn, ean13),
2744 OPERATOR 3 = (isbn, isbn13),
2745 OPERATOR 4 >= (isbn, ean13),
2746 OPERATOR 4 >= (isbn, isbn13),
2747 OPERATOR 5 > (isbn, ean13),
2748 OPERATOR 5 > (isbn, isbn13),
2749 FUNCTION 1 btisbncmp(isbn, ean13),
2750 FUNCTION 1 btisbncmp(isbn, isbn13);
2752 ALTER OPERATOR FAMILY isn_ops USING hash ADD
2753 OPERATOR 1 = (isbn, ean13),
2754 OPERATOR 1 = (isbn, isbn13);
2756 ---------------------------------------------------
2758 CREATE FUNCTION btismn13cmp(ismn13, ismn13)
2764 CREATE OPERATOR CLASS ismn13_ops DEFAULT
2765 FOR TYPE ismn13 USING btree FAMILY isn_ops AS
2771 FUNCTION 1 btismn13cmp(ismn13, ismn13);
2773 CREATE FUNCTION hashismn13(ismn13)
2779 CREATE OPERATOR CLASS ismn13_ops DEFAULT
2780 FOR TYPE ismn13 USING hash FAMILY isn_ops AS
2782 FUNCTION 1 hashismn13(ismn13);
2784 -- ISMN13 vs other types:
2785 CREATE FUNCTION btismn13cmp(ismn13, ean13)
2790 CREATE FUNCTION btismn13cmp(ismn13, ismn)
2796 ALTER OPERATOR FAMILY isn_ops USING btree ADD
2797 OPERATOR 1 < (ismn13, ean13),
2798 OPERATOR 1 < (ismn13, ismn),
2799 OPERATOR 2 <= (ismn13, ean13),
2800 OPERATOR 2 <= (ismn13, ismn),
2801 OPERATOR 3 = (ismn13, ean13),
2802 OPERATOR 3 = (ismn13, ismn),
2803 OPERATOR 4 >= (ismn13, ean13),
2804 OPERATOR 4 >= (ismn13, ismn),
2805 OPERATOR 5 > (ismn13, ean13),
2806 OPERATOR 5 > (ismn13, ismn),
2807 FUNCTION 1 btismn13cmp(ismn13, ean13),
2808 FUNCTION 1 btismn13cmp(ismn13, ismn);
2810 ALTER OPERATOR FAMILY isn_ops USING hash ADD
2811 OPERATOR 1 = (ismn13, ean13),
2812 OPERATOR 1 = (ismn13, ismn);
2814 ---------------------------------------------------
2816 CREATE FUNCTION btismncmp(ismn, ismn)
2822 CREATE OPERATOR CLASS ismn_ops DEFAULT
2823 FOR TYPE ismn USING btree FAMILY isn_ops AS
2829 FUNCTION 1 btismncmp(ismn, ismn);
2831 CREATE FUNCTION hashismn(ismn)
2837 CREATE OPERATOR CLASS ismn_ops DEFAULT
2838 FOR TYPE ismn USING hash FAMILY isn_ops AS
2840 FUNCTION 1 hashismn(ismn);
2842 -- ISMN vs other types:
2843 CREATE FUNCTION btismncmp(ismn, ean13)
2848 CREATE FUNCTION btismncmp(ismn, ismn13)
2854 ALTER OPERATOR FAMILY isn_ops USING btree ADD
2855 OPERATOR 1 < (ismn, ean13),
2856 OPERATOR 1 < (ismn, ismn13),
2857 OPERATOR 2 <= (ismn, ean13),
2858 OPERATOR 2 <= (ismn, ismn13),
2859 OPERATOR 3 = (ismn, ean13),
2860 OPERATOR 3 = (ismn, ismn13),
2861 OPERATOR 4 >= (ismn, ean13),
2862 OPERATOR 4 >= (ismn, ismn13),
2863 OPERATOR 5 > (ismn, ean13),
2864 OPERATOR 5 > (ismn, ismn13),
2865 FUNCTION 1 btismncmp(ismn, ean13),
2866 FUNCTION 1 btismncmp(ismn, ismn13);
2868 ALTER OPERATOR FAMILY isn_ops USING hash ADD
2869 OPERATOR 1 = (ismn, ean13),
2870 OPERATOR 1 = (ismn, ismn13);
2872 ---------------------------------------------------
2874 CREATE FUNCTION btissn13cmp(issn13, issn13)
2880 CREATE OPERATOR CLASS issn13_ops DEFAULT
2881 FOR TYPE issn13 USING btree FAMILY isn_ops AS
2887 FUNCTION 1 btissn13cmp(issn13, issn13);
2889 CREATE FUNCTION hashissn13(issn13)
2895 CREATE OPERATOR CLASS issn13_ops DEFAULT
2896 FOR TYPE issn13 USING hash FAMILY isn_ops AS
2898 FUNCTION 1 hashissn13(issn13);
2900 -- ISSN13 vs other types:
2901 CREATE FUNCTION btissn13cmp(issn13, ean13)
2906 CREATE FUNCTION btissn13cmp(issn13, issn)
2912 ALTER OPERATOR FAMILY isn_ops USING btree ADD
2913 OPERATOR 1 < (issn13, ean13),
2914 OPERATOR 1 < (issn13, issn),
2915 OPERATOR 2 <= (issn13, ean13),
2916 OPERATOR 2 <= (issn13, issn),
2917 OPERATOR 3 = (issn13, ean13),
2918 OPERATOR 3 = (issn13, issn),
2919 OPERATOR 4 >= (issn13, ean13),
2920 OPERATOR 4 >= (issn13, issn),
2921 OPERATOR 5 > (issn13, ean13),
2922 OPERATOR 5 > (issn13, issn),
2923 FUNCTION 1 btissn13cmp(issn13, ean13),
2924 FUNCTION 1 btissn13cmp(issn13, issn);
2926 ALTER OPERATOR FAMILY isn_ops USING hash ADD
2927 OPERATOR 1 = (issn13, ean13),
2928 OPERATOR 1 = (issn13, issn);
2930 ---------------------------------------------------
2932 CREATE FUNCTION btissncmp(issn, issn)
2938 CREATE OPERATOR CLASS issn_ops DEFAULT
2939 FOR TYPE issn USING btree FAMILY isn_ops AS
2945 FUNCTION 1 btissncmp(issn, issn);
2947 CREATE FUNCTION hashissn(issn)
2953 CREATE OPERATOR CLASS issn_ops DEFAULT
2954 FOR TYPE issn USING hash FAMILY isn_ops AS
2956 FUNCTION 1 hashissn(issn);
2958 -- ISSN vs other types:
2959 CREATE FUNCTION btissncmp(issn, ean13)
2964 CREATE FUNCTION btissncmp(issn, issn13)
2970 ALTER OPERATOR FAMILY isn_ops USING btree ADD
2971 OPERATOR 1 < (issn, ean13),
2972 OPERATOR 1 < (issn, issn13),
2973 OPERATOR 2 <= (issn, ean13),
2974 OPERATOR 2 <= (issn, issn13),
2975 OPERATOR 3 = (issn, ean13),
2976 OPERATOR 3 = (issn, issn13),
2977 OPERATOR 4 >= (issn, ean13),
2978 OPERATOR 4 >= (issn, issn13),
2979 OPERATOR 5 > (issn, ean13),
2980 OPERATOR 5 > (issn, issn13),
2981 FUNCTION 1 btissncmp(issn, ean13),
2982 FUNCTION 1 btissncmp(issn, issn13);
2984 ALTER OPERATOR FAMILY isn_ops USING hash ADD
2985 OPERATOR 1 = (issn, ean13),
2986 OPERATOR 1 = (issn, issn13);
2988 ---------------------------------------------------
2990 CREATE FUNCTION btupccmp(upc, upc)
2996 CREATE OPERATOR CLASS upc_ops DEFAULT
2997 FOR TYPE upc USING btree FAMILY isn_ops AS
3003 FUNCTION 1 btupccmp(upc, upc);
3005 CREATE FUNCTION hashupc(upc)
3011 CREATE OPERATOR CLASS upc_ops DEFAULT
3012 FOR TYPE upc USING hash FAMILY isn_ops AS
3014 FUNCTION 1 hashupc(upc);
3016 -- UPC vs other types:
3017 CREATE FUNCTION btupccmp(upc, ean13)
3023 ALTER OPERATOR FAMILY isn_ops USING btree ADD
3024 OPERATOR 1 < (upc, ean13),
3025 OPERATOR 2 <= (upc, ean13),
3026 OPERATOR 3 = (upc, ean13),
3027 OPERATOR 4 >= (upc, ean13),
3028 OPERATOR 5 > (upc, ean13),
3029 FUNCTION 1 btupccmp(upc, ean13);
3031 ALTER OPERATOR FAMILY isn_ops USING hash ADD
3032 OPERATOR 1 = (upc, ean13);
3037 ---------------------------------------------------
3038 CREATE FUNCTION isbn13(ean13)
3040 AS 'MODULE_PATHNAME', 'isbn_cast_from_ean13'
3041 LANGUAGE 'C' IMMUTABLE STRICT;
3042 CREATE FUNCTION ismn13(ean13)
3044 AS 'MODULE_PATHNAME', 'ismn_cast_from_ean13'
3045 LANGUAGE 'C' IMMUTABLE STRICT;
3046 CREATE FUNCTION issn13(ean13)
3048 AS 'MODULE_PATHNAME', 'issn_cast_from_ean13'
3049 LANGUAGE 'C' IMMUTABLE STRICT;
3050 CREATE FUNCTION isbn(ean13)
3052 AS 'MODULE_PATHNAME', 'isbn_cast_from_ean13'
3053 LANGUAGE 'C' IMMUTABLE STRICT;
3054 CREATE FUNCTION ismn(ean13)
3056 AS 'MODULE_PATHNAME', 'ismn_cast_from_ean13'
3057 LANGUAGE 'C' IMMUTABLE STRICT;
3058 CREATE FUNCTION issn(ean13)
3060 AS 'MODULE_PATHNAME', 'issn_cast_from_ean13'
3061 LANGUAGE 'C' IMMUTABLE STRICT;
3062 CREATE FUNCTION upc(ean13)
3064 AS 'MODULE_PATHNAME', 'upc_cast_from_ean13'
3065 LANGUAGE 'C' IMMUTABLE STRICT;
3068 CREATE CAST (ean13 AS isbn13) WITH FUNCTION isbn13(ean13);
3069 CREATE CAST (ean13 AS isbn) WITH FUNCTION isbn(ean13);
3070 CREATE CAST (ean13 AS ismn13) WITH FUNCTION ismn13(ean13);
3071 CREATE CAST (ean13 AS ismn) WITH FUNCTION ismn(ean13);
3072 CREATE CAST (ean13 AS issn13) WITH FUNCTION issn13(ean13);
3073 CREATE CAST (ean13 AS issn) WITH FUNCTION issn(ean13);
3074 CREATE CAST (ean13 AS upc) WITH FUNCTION upc(ean13);
3076 CREATE CAST (isbn13 AS ean13) WITHOUT FUNCTION AS ASSIGNMENT;
3077 CREATE CAST (isbn AS ean13) WITHOUT FUNCTION AS ASSIGNMENT;
3078 CREATE CAST (ismn13 AS ean13) WITHOUT FUNCTION AS ASSIGNMENT;
3079 CREATE CAST (ismn AS ean13) WITHOUT FUNCTION AS ASSIGNMENT;
3080 CREATE CAST (issn13 AS ean13) WITHOUT FUNCTION AS ASSIGNMENT;
3081 CREATE CAST (issn AS ean13) WITHOUT FUNCTION AS ASSIGNMENT;
3082 CREATE CAST (upc AS ean13) WITHOUT FUNCTION AS ASSIGNMENT;
3084 CREATE CAST (isbn AS isbn13) WITHOUT FUNCTION AS ASSIGNMENT;
3085 CREATE CAST (isbn13 AS isbn) WITHOUT FUNCTION AS ASSIGNMENT;
3086 CREATE CAST (ismn AS ismn13) WITHOUT FUNCTION AS ASSIGNMENT;
3087 CREATE CAST (ismn13 AS ismn) WITHOUT FUNCTION AS ASSIGNMENT;
3088 CREATE CAST (issn AS issn13) WITHOUT FUNCTION AS ASSIGNMENT;
3089 CREATE CAST (issn13 AS issn) WITHOUT FUNCTION AS ASSIGNMENT;
3092 -- Validation stuff for lose types:
3094 CREATE FUNCTION make_valid(ean13)
3096 AS 'MODULE_PATHNAME'
3099 CREATE FUNCTION make_valid(isbn13)
3101 AS 'MODULE_PATHNAME'
3104 CREATE FUNCTION make_valid(ismn13)
3106 AS 'MODULE_PATHNAME'
3109 CREATE FUNCTION make_valid(issn13)
3111 AS 'MODULE_PATHNAME'
3114 CREATE FUNCTION make_valid(isbn)
3116 AS 'MODULE_PATHNAME'
3119 CREATE FUNCTION make_valid(ismn)
3121 AS 'MODULE_PATHNAME'
3124 CREATE FUNCTION make_valid(issn)
3126 AS 'MODULE_PATHNAME'
3129 CREATE FUNCTION make_valid(upc)
3131 AS 'MODULE_PATHNAME'
3135 CREATE FUNCTION is_valid(ean13)
3137 AS 'MODULE_PATHNAME'
3140 CREATE FUNCTION is_valid(isbn13)
3142 AS 'MODULE_PATHNAME'
3145 CREATE FUNCTION is_valid(ismn13)
3147 AS 'MODULE_PATHNAME'
3150 CREATE FUNCTION is_valid(issn13)
3152 AS 'MODULE_PATHNAME'
3155 CREATE FUNCTION is_valid(isbn)
3157 AS 'MODULE_PATHNAME'
3160 CREATE FUNCTION is_valid(ismn)
3162 AS 'MODULE_PATHNAME'
3165 CREATE FUNCTION is_valid(issn)
3167 AS 'MODULE_PATHNAME'
3170 CREATE FUNCTION is_valid(upc)
3172 AS 'MODULE_PATHNAME'
3177 -- isn_weak(boolean) - Sets the weak input mode.
3178 -- This function is intended for testing use only!
3180 CREATE FUNCTION isn_weak(boolean)
3182 AS 'MODULE_PATHNAME', 'accept_weak_input'
3187 -- isn_weak() - Gets the weak input mode status
3189 CREATE FUNCTION isn_weak()
3191 AS 'MODULE_PATHNAME', 'weak_input_status'