[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pgsql-hackers
Subject:    Re: [HACKERS] Binary I/O for isn extension
From:       Shay Rojansky <roji () roji ! org>
Date:       2016-05-31 12:13:40
Message-ID: CADT4RqAiU_znq=-mzTZf5mukjmNkoaf_Qin7yen+6kjRZUCN6w () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


>
> When adding new functions to an extension you need to bump the version of
> the extension by renaming the file, updating the .control file, creating an
> upgrade script, and updating the Makefile to include the new files.


Attached is a new version of the patch, adding an upgrade script and the
rest of it. Note that because, as Fabien noted, there's doesn't seem to be
a way to add send/receive functions with ALTER TYPE, I did that by updating
pg_type directly - hope that's OK.

[Attachment #5 (text/html)]

<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote \
class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc \
solid;padding-left:1ex">When adding new functions to an extension you need to bump \
the version of the extension by renaming the file, updating the .control file, \
creating an upgrade script, and updating the Makefile to include the new \
files.</blockquote><div><br></div><div>Attached is a new version of the patch, adding \
an upgrade script and the rest of it. Note that because, as Fabien noted, there&#39;s \
doesn&#39;t seem to be a way to add send/receive functions with ALTER TYPE, I did \
that by updating pg_type directly - hope that&#39;s OK.</div></div><br></div></div>


["isn-binary.patch" (application/octet-stream)]

diff --git a/contrib/isn/Makefile b/contrib/isn/Makefile
index 96aaf35..9543a4b 100644
*** a/contrib/isn/Makefile
--- b/contrib/isn/Makefile
***************
*** 3,9 ****
  MODULES = isn
  
  EXTENSION = isn
! DATA = isn--1.0.sql isn--unpackaged--1.0.sql
  PGFILEDESC = "isn - data types for international product numbering standards"
  
  REGRESS = isn
--- 3,9 ----
  MODULES = isn
  
  EXTENSION = isn
! DATA = isn--1.1.sql isn--1.0--1.1.sql isn--unpackaged--1.0.sql
  PGFILEDESC = "isn - data types for international product numbering standards"
  
  REGRESS = isn
diff --git a/contrib/isn/isnew file mode 100644
index 0000000..7676756
*** /dev/null
--- b/contrib/isn/isn--1.0--1.1.sql
***************
*** 0 ****
--- 1,13 ----
+ CREATE FUNCTION ean13_recv(internal)
+         RETURNS ean13
+         AS 'MODULE_PATHNAME'
+         LANGUAGE C
+         STRICT IMMUTABLE;
+ CREATE FUNCTION ean13_send(ean13)
+         RETURNS bytea
+         AS 'MODULE_PATHNAME'
+         LANGUAGE C
+         STRICT IMMUTABLE;
+ 
+ UPDATE pg_type SET typreceive='ean13_recv' WHERE typname IN ('ean13', 'isbn13', \
'ismn13', 'issn13', 'isbn', 'ismn', 'issn', 'upc'); + UPDATE pg_type SET \
typsend='ean13_send'    WHERE typname IN ('ean13', 'isbn13', 'ismn13', 'issn13', \
                'isbn', 'ismn', 'issn', 'upc');
diff --git a/contrib/isn/isn--1.0.sqdeleted file mode 100644
index ce74c17..0000000
*** a/contrib/isn/isn--1.0.sql
--- /dev/null
***************
*** 1,3196 ****
- /* contrib/isn/isn--1.0.sql */
- 
- -- complain if script is sourced in psql, rather than via CREATE EXTENSION
- \echo Use "CREATE EXTENSION isn" to load this file. \quit
- 
- -- Example:
- --   create table test ( id isbn );
- --   insert into test values('978-0-393-04002-9');
- --
- --   select isbn('978-0-393-04002-9');
- --   select isbn13('0-901690-54-6');
- --
- 
- --
- --	Input and output functions and data types:
- --
- ---------------------------------------------------
- CREATE FUNCTION ean13_in(cstring)
- 	RETURNS ean13
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE FUNCTION ean13_out(ean13)
- 	RETURNS cstring
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE TYPE ean13 (
- 	INPUT = ean13_in,
- 	OUTPUT = ean13_out,
- 	LIKE = pg_catalog.int8
- );
- COMMENT ON TYPE ean13
- 	IS 'International European Article Number (EAN13)';
- 
- CREATE FUNCTION isbn13_in(cstring)
- 	RETURNS isbn13
- 	AS 'MODULE_PATHNAME', 'isbn_in'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE FUNCTION ean13_out(isbn13)
- 	RETURNS cstring
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE TYPE isbn13 (
- 	INPUT = isbn13_in,
- 	OUTPUT = ean13_out,
- 	LIKE = pg_catalog.int8
- );
- COMMENT ON TYPE isbn13
- 	IS 'International Standard Book Number 13 (ISBN13)';
- 
- CREATE FUNCTION ismn13_in(cstring)
- 	RETURNS ismn13
- 	AS 'MODULE_PATHNAME', 'ismn_in'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE FUNCTION ean13_out(ismn13)
- 	RETURNS cstring
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE TYPE ismn13 (
- 	INPUT = ismn13_in,
- 	OUTPUT = ean13_out,
- 	LIKE = pg_catalog.int8
- );
- COMMENT ON TYPE ismn13
- 	IS 'International Standard Music Number 13 (ISMN13)';
- 
- CREATE FUNCTION issn13_in(cstring)
- 	RETURNS issn13
- 	AS 'MODULE_PATHNAME', 'issn_in'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE FUNCTION ean13_out(issn13)
- 	RETURNS cstring
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE TYPE issn13 (
- 	INPUT = issn13_in,
- 	OUTPUT = ean13_out,
- 	LIKE = pg_catalog.int8
- );
- COMMENT ON TYPE issn13
- 	IS 'International Standard Serial Number 13 (ISSN13)';
- 
- -- Short format:
- 
- CREATE FUNCTION isbn_in(cstring)
- 	RETURNS isbn
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isn_out(isbn)
- 	RETURNS cstring
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE TYPE isbn (
- 	INPUT = isbn_in,
- 	OUTPUT = isn_out,
- 	LIKE = pg_catalog.int8
- );
- COMMENT ON TYPE isbn
- 	IS 'International Standard Book Number (ISBN)';
- 
- CREATE FUNCTION ismn_in(cstring)
- 	RETURNS ismn
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isn_out(ismn)
- 	RETURNS cstring
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE TYPE ismn (
- 	INPUT = ismn_in,
- 	OUTPUT = isn_out,
- 	LIKE = pg_catalog.int8
- );
- COMMENT ON TYPE ismn
- 	IS 'International Standard Music Number (ISMN)';
- 
- CREATE FUNCTION issn_in(cstring)
- 	RETURNS issn
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isn_out(issn)
- 	RETURNS cstring
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE TYPE issn (
- 	INPUT = issn_in,
- 	OUTPUT = isn_out,
- 	LIKE = pg_catalog.int8
- );
- COMMENT ON TYPE issn
- 	IS 'International Standard Serial Number (ISSN)';
- 
- CREATE FUNCTION upc_in(cstring)
- 	RETURNS upc
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isn_out(upc)
- 	RETURNS cstring
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE TYPE upc (
- 	INPUT = upc_in,
- 	OUTPUT = isn_out,
- 	LIKE = pg_catalog.int8
- );
- COMMENT ON TYPE upc
- 	IS 'Universal Product Code (UPC)';
- 
- --
- -- Operator functions:
- --
- ---------------------------------------------------
- -- EAN13:
- CREATE FUNCTION isnlt(ean13, ean13)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(ean13, ean13)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(ean13, ean13)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(ean13, ean13)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(ean13, ean13)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(ean13, ean13)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE FUNCTION isnlt(ean13, isbn13)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(ean13, isbn13)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(ean13, isbn13)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(ean13, isbn13)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(ean13, isbn13)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(ean13, isbn13)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE FUNCTION isnlt(ean13, ismn13)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(ean13, ismn13)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(ean13, ismn13)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(ean13, ismn13)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(ean13, ismn13)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(ean13, ismn13)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE FUNCTION isnlt(ean13, issn13)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(ean13, issn13)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(ean13, issn13)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(ean13, issn13)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(ean13, issn13)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(ean13, issn13)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE FUNCTION isnlt(ean13, isbn)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(ean13, isbn)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(ean13, isbn)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(ean13, isbn)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(ean13, isbn)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(ean13, isbn)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE FUNCTION isnlt(ean13, ismn)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(ean13, ismn)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(ean13, ismn)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(ean13, ismn)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(ean13, ismn)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(ean13, ismn)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE FUNCTION isnlt(ean13, issn)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(ean13, issn)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(ean13, issn)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(ean13, issn)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(ean13, issn)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(ean13, issn)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE FUNCTION isnlt(ean13, upc)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(ean13, upc)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(ean13, upc)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(ean13, upc)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(ean13, upc)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(ean13, upc)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- ---------------------------------------------------
- -- ISBN13:
- CREATE FUNCTION isnlt(isbn13, isbn13)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(isbn13, isbn13)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(isbn13, isbn13)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(isbn13, isbn13)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(isbn13, isbn13)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(isbn13, isbn13)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE FUNCTION isnlt(isbn13, isbn)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(isbn13, isbn)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(isbn13, isbn)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(isbn13, isbn)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(isbn13, isbn)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(isbn13, isbn)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE FUNCTION isnlt(isbn13, ean13)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(isbn13, ean13)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(isbn13, ean13)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(isbn13, ean13)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(isbn13, ean13)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(isbn13, ean13)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- ---------------------------------------------------
- -- ISBN:
- CREATE FUNCTION isnlt(isbn, isbn)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(isbn, isbn)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(isbn, isbn)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(isbn, isbn)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(isbn, isbn)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(isbn, isbn)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE FUNCTION isnlt(isbn, isbn13)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(isbn, isbn13)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(isbn, isbn13)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(isbn, isbn13)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(isbn, isbn13)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(isbn, isbn13)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE FUNCTION isnlt(isbn, ean13)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(isbn, ean13)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(isbn, ean13)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(isbn, ean13)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(isbn, ean13)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(isbn, ean13)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- ---------------------------------------------------
- -- ISMN13:
- CREATE FUNCTION isnlt(ismn13, ismn13)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(ismn13, ismn13)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(ismn13, ismn13)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(ismn13, ismn13)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(ismn13, ismn13)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(ismn13, ismn13)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE FUNCTION isnlt(ismn13, ismn)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(ismn13, ismn)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(ismn13, ismn)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(ismn13, ismn)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(ismn13, ismn)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(ismn13, ismn)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE FUNCTION isnlt(ismn13, ean13)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(ismn13, ean13)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(ismn13, ean13)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(ismn13, ean13)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(ismn13, ean13)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(ismn13, ean13)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- ---------------------------------------------------
- -- ISMN:
- CREATE FUNCTION isnlt(ismn, ismn)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(ismn, ismn)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(ismn, ismn)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(ismn, ismn)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(ismn, ismn)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(ismn, ismn)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE FUNCTION isnlt(ismn, ismn13)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(ismn, ismn13)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(ismn, ismn13)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(ismn, ismn13)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(ismn, ismn13)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(ismn, ismn13)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE FUNCTION isnlt(ismn, ean13)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(ismn, ean13)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(ismn, ean13)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(ismn, ean13)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(ismn, ean13)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(ismn, ean13)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- ---------------------------------------------------
- -- ISSN13:
- CREATE FUNCTION isnlt(issn13, issn13)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(issn13, issn13)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(issn13, issn13)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(issn13, issn13)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(issn13, issn13)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(issn13, issn13)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE FUNCTION isnlt(issn13, issn)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(issn13, issn)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(issn13, issn)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(issn13, issn)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(issn13, issn)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(issn13, issn)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE FUNCTION isnlt(issn13, ean13)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(issn13, ean13)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(issn13, ean13)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(issn13, ean13)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(issn13, ean13)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(issn13, ean13)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- ---------------------------------------------------
- -- ISSN:
- CREATE FUNCTION isnlt(issn, issn)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(issn, issn)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(issn, issn)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(issn, issn)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(issn, issn)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(issn, issn)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE FUNCTION isnlt(issn, issn13)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(issn, issn13)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(issn, issn13)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(issn, issn13)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(issn, issn13)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(issn, issn13)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE FUNCTION isnlt(issn, ean13)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(issn, ean13)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(issn, ean13)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(issn, ean13)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(issn, ean13)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(issn, ean13)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- ---------------------------------------------------
- -- UPC:
- CREATE FUNCTION isnlt(upc, upc)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(upc, upc)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(upc, upc)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(upc, upc)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(upc, upc)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(upc, upc)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE FUNCTION isnlt(upc, ean13)
- 	RETURNS boolean
- 	AS 'int8lt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnle(upc, ean13)
- 	RETURNS boolean
- 	AS 'int8le'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isneq(upc, ean13)
- 	RETURNS boolean
- 	AS 'int8eq'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnge(upc, ean13)
- 	RETURNS boolean
- 	AS 'int8ge'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isngt(upc, ean13)
- 	RETURNS boolean
- 	AS 'int8gt'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION isnne(upc, ean13)
- 	RETURNS boolean
- 	AS 'int8ne'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- --
- -- Now the operators:
- --
- 
- --
- -- EAN13 operators:
- --
- ---------------------------------------------------
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = ean13,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = ean13,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = ean13,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = ean13,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = ean13,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = ean13,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = ean13,
- 	RIGHTARG = isbn13,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = ean13,
- 	RIGHTARG = isbn13,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = ean13,
- 	RIGHTARG = isbn13,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = ean13,
- 	RIGHTARG = isbn13,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = ean13,
- 	RIGHTARG = isbn13,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = ean13,
- 	RIGHTARG = isbn13,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = isbn13,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = isbn13,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = isbn13,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = isbn13,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = isbn13,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = isbn13,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = ean13,
- 	RIGHTARG = ismn13,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = ean13,
- 	RIGHTARG = ismn13,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = ean13,
- 	RIGHTARG = ismn13,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = ean13,
- 	RIGHTARG = ismn13,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel);
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = ean13,
- 	RIGHTARG = ismn13,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel);
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = ean13,
- 	RIGHTARG = ismn13,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = ismn13,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = ismn13,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = ismn13,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = ismn13,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = ismn13,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = ismn13,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = ean13,
- 	RIGHTARG = issn13,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = ean13,
- 	RIGHTARG = issn13,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = ean13,
- 	RIGHTARG = issn13,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = ean13,
- 	RIGHTARG = issn13,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel);
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = ean13,
- 	RIGHTARG = issn13,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel);
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = ean13,
- 	RIGHTARG = issn13,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = ean13,
- 	RIGHTARG = isbn,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = ean13,
- 	RIGHTARG = isbn,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = ean13,
- 	RIGHTARG = isbn,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = ean13,
- 	RIGHTARG = isbn,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel);
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = ean13,
- 	RIGHTARG = isbn,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel);
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = ean13,
- 	RIGHTARG = isbn,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = ean13,
- 	RIGHTARG = ismn,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = ean13,
- 	RIGHTARG = ismn,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = ean13,
- 	RIGHTARG = ismn,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = ean13,
- 	RIGHTARG = ismn,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel);
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = ean13,
- 	RIGHTARG = ismn,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel);
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = ean13,
- 	RIGHTARG = ismn,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = ean13,
- 	RIGHTARG = issn,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = ean13,
- 	RIGHTARG = issn,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = ean13,
- 	RIGHTARG = issn,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = ean13,
- 	RIGHTARG = issn,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel);
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = ean13,
- 	RIGHTARG = issn,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel);
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = ean13,
- 	RIGHTARG = issn,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = ean13,
- 	RIGHTARG = upc,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = ean13,
- 	RIGHTARG = upc,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = ean13,
- 	RIGHTARG = upc,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = ean13,
- 	RIGHTARG = upc,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel);
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = ean13,
- 	RIGHTARG = upc,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel);
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = ean13,
- 	RIGHTARG = upc,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- --
- -- ISBN13 operators:
- --
- ---------------------------------------------------
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = isbn13,
- 	RIGHTARG = isbn13,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = isbn13,
- 	RIGHTARG = isbn13,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = isbn13,
- 	RIGHTARG = isbn13,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = isbn13,
- 	RIGHTARG = isbn13,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = isbn13,
- 	RIGHTARG = isbn13,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = isbn13,
- 	RIGHTARG = isbn13,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = isbn13,
- 	RIGHTARG = isbn,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = isbn13,
- 	RIGHTARG = isbn,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = isbn13,
- 	RIGHTARG = isbn,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = isbn13,
- 	RIGHTARG = isbn,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = isbn13,
- 	RIGHTARG = isbn,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = isbn13,
- 	RIGHTARG = isbn,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- --
- -- ISBN operators:
- --
- ---------------------------------------------------
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = isbn,
- 	RIGHTARG = isbn,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = isbn,
- 	RIGHTARG = isbn,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = isbn,
- 	RIGHTARG = isbn,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = isbn,
- 	RIGHTARG = isbn,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = isbn,
- 	RIGHTARG = isbn,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = isbn,
- 	RIGHTARG = isbn,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = isbn,
- 	RIGHTARG = isbn13,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = isbn,
- 	RIGHTARG = isbn13,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = isbn,
- 	RIGHTARG = isbn13,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = isbn,
- 	RIGHTARG = isbn13,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = isbn,
- 	RIGHTARG = isbn13,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = isbn,
- 	RIGHTARG = isbn13,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = isbn,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = isbn,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = isbn,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = isbn,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = isbn,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = isbn,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- --
- -- ISMN13 operators:
- --
- ---------------------------------------------------
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = ismn13,
- 	RIGHTARG = ismn13,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = ismn13,
- 	RIGHTARG = ismn13,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = ismn13,
- 	RIGHTARG = ismn13,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = ismn13,
- 	RIGHTARG = ismn13,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = ismn13,
- 	RIGHTARG = ismn13,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = ismn13,
- 	RIGHTARG = ismn13,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = ismn13,
- 	RIGHTARG = ismn,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = ismn13,
- 	RIGHTARG = ismn,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = ismn13,
- 	RIGHTARG = ismn,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = ismn13,
- 	RIGHTARG = ismn,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = ismn13,
- 	RIGHTARG = ismn,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = ismn13,
- 	RIGHTARG = ismn,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- --
- -- ISMN operators:
- --
- ---------------------------------------------------
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = ismn,
- 	RIGHTARG = ismn,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = ismn,
- 	RIGHTARG = ismn,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = ismn,
- 	RIGHTARG = ismn,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = ismn,
- 	RIGHTARG = ismn,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = ismn,
- 	RIGHTARG = ismn,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = ismn,
- 	RIGHTARG = ismn,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = ismn,
- 	RIGHTARG = ismn13,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = ismn,
- 	RIGHTARG = ismn13,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = ismn,
- 	RIGHTARG = ismn13,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = ismn,
- 	RIGHTARG = ismn13,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = ismn,
- 	RIGHTARG = ismn13,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = ismn,
- 	RIGHTARG = ismn13,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = ismn,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = ismn,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = ismn,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = ismn,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = ismn,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = ismn,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- --
- -- ISSN13 operators:
- --
- ---------------------------------------------------
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = issn13,
- 	RIGHTARG = issn13,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = issn13,
- 	RIGHTARG = issn13,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = issn13,
- 	RIGHTARG = issn13,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = issn13,
- 	RIGHTARG = issn13,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = issn13,
- 	RIGHTARG = issn13,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = issn13,
- 	RIGHTARG = issn13,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = issn13,
- 	RIGHTARG = issn,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = issn13,
- 	RIGHTARG = issn,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = issn13,
- 	RIGHTARG = issn,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = issn13,
- 	RIGHTARG = issn,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = issn13,
- 	RIGHTARG = issn,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = issn13,
- 	RIGHTARG = issn,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = issn13,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = issn13,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = issn13,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = issn13,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = issn13,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = issn13,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- --
- -- ISSN operators:
- --
- ---------------------------------------------------
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = issn,
- 	RIGHTARG = issn,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = issn,
- 	RIGHTARG = issn,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = issn,
- 	RIGHTARG = issn,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = issn,
- 	RIGHTARG = issn,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = issn,
- 	RIGHTARG = issn,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = issn,
- 	RIGHTARG = issn,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = issn,
- 	RIGHTARG = issn13,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = issn,
- 	RIGHTARG = issn13,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = issn,
- 	RIGHTARG = issn13,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = issn,
- 	RIGHTARG = issn13,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = issn,
- 	RIGHTARG = issn13,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = issn,
- 	RIGHTARG = issn13,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = issn,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = issn,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = issn,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = issn,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = issn,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = issn,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- --
- -- UPC operators:
- --
- ---------------------------------------------------
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = upc,
- 	RIGHTARG = upc,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = upc,
- 	RIGHTARG = upc,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = upc,
- 	RIGHTARG = upc,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = upc,
- 	RIGHTARG = upc,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = upc,
- 	RIGHTARG = upc,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = upc,
- 	RIGHTARG = upc,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- CREATE OPERATOR < (
- 	PROCEDURE = isnlt,
- 	LEFTARG = upc,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = >,
- 	NEGATOR = >=,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR <= (
- 	PROCEDURE = isnle,
- 	LEFTARG = upc,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = >=,
- 	NEGATOR = >,
- 	RESTRICT = scalarltsel,
- 	JOIN = scalarltjoinsel);
- CREATE OPERATOR = (
- 	PROCEDURE = isneq,
- 	LEFTARG = upc,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = =,
- 	NEGATOR = <>,
- 	RESTRICT = eqsel,
- 	JOIN = eqjoinsel,
- 	MERGES,
- 	HASHES);
- CREATE OPERATOR >= (
- 	PROCEDURE = isnge,
- 	LEFTARG = upc,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = <=,
- 	NEGATOR = <,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR > (
- 	PROCEDURE = isngt,
- 	LEFTARG = upc,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = <,
- 	NEGATOR = <=,
- 	RESTRICT = scalargtsel,
- 	JOIN = scalargtjoinsel );
- CREATE OPERATOR <> (
- 	PROCEDURE = isnne,
- 	LEFTARG = upc,
- 	RIGHTARG = ean13,
- 	COMMUTATOR = <>,
- 	NEGATOR = =,
- 	RESTRICT = neqsel,
- 	JOIN = neqjoinsel);
- 
- --
- -- Operator families for the various operator classes:
- --
- ---------------------------------------------------
- 
- CREATE OPERATOR FAMILY isn_ops USING btree;
- CREATE OPERATOR FAMILY isn_ops USING hash;
- 
- --
- -- Operator classes:
- --
- ---------------------------------------------------
- -- EAN13:
- CREATE FUNCTION btean13cmp(ean13, ean13)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE OPERATOR CLASS ean13_ops DEFAULT
- 	FOR TYPE ean13 USING btree FAMILY isn_ops AS
- 	OPERATOR 1  <,
- 	OPERATOR 2  <=,
- 	OPERATOR 3  =,
- 	OPERATOR 4  >=,
- 	OPERATOR 5  >,
- 	FUNCTION 1  btean13cmp(ean13, ean13);
- 
- CREATE FUNCTION hashean13(ean13)
- 	RETURNS int4
- 	AS 'hashint8'
- 	LANGUAGE 'internal' IMMUTABLE STRICT;
- 
- CREATE OPERATOR CLASS ean13_ops DEFAULT
- 	FOR TYPE ean13 USING hash FAMILY isn_ops AS
- 	OPERATOR 1  =,
- 	FUNCTION 1  hashean13(ean13);
- 
- -- EAN13 vs other types:
- CREATE FUNCTION btean13cmp(ean13, isbn13)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION btean13cmp(ean13, ismn13)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION btean13cmp(ean13, issn13)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION btean13cmp(ean13, isbn)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION btean13cmp(ean13, ismn)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION btean13cmp(ean13, issn)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION btean13cmp(ean13, upc)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- ALTER OPERATOR FAMILY isn_ops USING btree ADD
- 	OPERATOR 1  < (ean13, isbn13),
- 	OPERATOR 1  < (ean13, ismn13),
- 	OPERATOR 1  < (ean13, issn13),
- 	OPERATOR 1  < (ean13, isbn),
- 	OPERATOR 1  < (ean13, ismn),
- 	OPERATOR 1  < (ean13, issn),
- 	OPERATOR 1  < (ean13, upc),
- 	OPERATOR 2  <= (ean13, isbn13),
- 	OPERATOR 2  <= (ean13, ismn13),
- 	OPERATOR 2  <= (ean13, issn13),
- 	OPERATOR 2  <= (ean13, isbn),
- 	OPERATOR 2  <= (ean13, ismn),
- 	OPERATOR 2  <= (ean13, issn),
- 	OPERATOR 2  <= (ean13, upc),
- 	OPERATOR 3  = (ean13, isbn13),
- 	OPERATOR 3  = (ean13, ismn13),
- 	OPERATOR 3  = (ean13, issn13),
- 	OPERATOR 3  = (ean13, isbn),
- 	OPERATOR 3  = (ean13, ismn),
- 	OPERATOR 3  = (ean13, issn),
- 	OPERATOR 3  = (ean13, upc),
- 	OPERATOR 4  >= (ean13, isbn13),
- 	OPERATOR 4  >= (ean13, ismn13),
- 	OPERATOR 4  >= (ean13, issn13),
- 	OPERATOR 4  >= (ean13, isbn),
- 	OPERATOR 4  >= (ean13, ismn),
- 	OPERATOR 4  >= (ean13, issn),
- 	OPERATOR 4  >= (ean13, upc),
- 	OPERATOR 5  > (ean13, isbn13),
- 	OPERATOR 5  > (ean13, ismn13),
- 	OPERATOR 5  > (ean13, issn13),
- 	OPERATOR 5  > (ean13, isbn),
- 	OPERATOR 5  > (ean13, ismn),
- 	OPERATOR 5  > (ean13, issn),
- 	OPERATOR 5  > (ean13, upc),
- 	FUNCTION 1  btean13cmp(ean13, isbn13),
- 	FUNCTION 1  btean13cmp(ean13, ismn13),
- 	FUNCTION 1  btean13cmp(ean13, issn13),
- 	FUNCTION 1  btean13cmp(ean13, isbn),
- 	FUNCTION 1  btean13cmp(ean13, ismn),
- 	FUNCTION 1  btean13cmp(ean13, issn),
- 	FUNCTION 1  btean13cmp(ean13, upc);
- 
- ALTER OPERATOR FAMILY isn_ops USING hash ADD
- 	OPERATOR 1  = (ean13, isbn13),
- 	OPERATOR 1  = (ean13, ismn13),
- 	OPERATOR 1  = (ean13, issn13),
- 	OPERATOR 1  = (ean13, isbn),
- 	OPERATOR 1  = (ean13, ismn),
- 	OPERATOR 1  = (ean13, issn),
- 	OPERATOR 1  = (ean13, upc);
- 
- ---------------------------------------------------
- -- ISBN13:
- CREATE FUNCTION btisbn13cmp(isbn13, isbn13)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE OPERATOR CLASS isbn13_ops DEFAULT
- 	FOR TYPE isbn13 USING btree FAMILY isn_ops AS
- 	OPERATOR 1  <,
- 	OPERATOR 2  <=,
- 	OPERATOR 3  =,
- 	OPERATOR 4  >=,
- 	OPERATOR 5  >,
- 	FUNCTION 1  btisbn13cmp(isbn13, isbn13);
- 
- CREATE FUNCTION hashisbn13(isbn13)
- 	RETURNS int4
- 	AS 'hashint8'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE OPERATOR CLASS isbn13_ops DEFAULT
- 	FOR TYPE isbn13 USING hash FAMILY isn_ops AS
- 	OPERATOR 1  =,
- 	FUNCTION 1  hashisbn13(isbn13);
- 
- -- ISBN13 vs other types:
- CREATE FUNCTION btisbn13cmp(isbn13, ean13)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION btisbn13cmp(isbn13, isbn)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- ALTER OPERATOR FAMILY isn_ops USING btree ADD
- 	OPERATOR 1  < (isbn13, ean13),
- 	OPERATOR 1  < (isbn13, isbn),
- 	OPERATOR 2  <= (isbn13, ean13),
- 	OPERATOR 2  <= (isbn13, isbn),
- 	OPERATOR 3  = (isbn13, ean13),
- 	OPERATOR 3  = (isbn13, isbn),
- 	OPERATOR 4  >= (isbn13, ean13),
- 	OPERATOR 4  >= (isbn13, isbn),
- 	OPERATOR 5  > (isbn13, ean13),
- 	OPERATOR 5  > (isbn13, isbn),
- 	FUNCTION 1  btisbn13cmp(isbn13, ean13),
- 	FUNCTION 1  btisbn13cmp(isbn13, isbn);
- 
- ALTER OPERATOR FAMILY isn_ops USING hash ADD
- 	OPERATOR 1  = (isbn13, ean13),
- 	OPERATOR 1  = (isbn13, isbn);
- 
- ---------------------------------------------------
- -- ISBN:
- CREATE FUNCTION btisbncmp(isbn, isbn)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE OPERATOR CLASS isbn_ops DEFAULT
- 	FOR TYPE isbn USING btree FAMILY isn_ops AS
- 	OPERATOR 1  <,
- 	OPERATOR 2  <=,
- 	OPERATOR 3  =,
- 	OPERATOR 4  >=,
- 	OPERATOR 5  >,
- 	FUNCTION 1  btisbncmp(isbn, isbn);
- 
- CREATE FUNCTION hashisbn(isbn)
- 	RETURNS int4
- 	AS 'hashint8'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE OPERATOR CLASS isbn_ops DEFAULT
- 	FOR TYPE isbn USING hash FAMILY isn_ops AS
- 	OPERATOR 1  =,
- 	FUNCTION 1  hashisbn(isbn);
- 
- -- ISBN vs other types:
- CREATE FUNCTION btisbncmp(isbn, ean13)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION btisbncmp(isbn, isbn13)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- ALTER OPERATOR FAMILY isn_ops USING btree ADD
- 	OPERATOR 1  < (isbn, ean13),
- 	OPERATOR 1  < (isbn, isbn13),
- 	OPERATOR 2  <= (isbn, ean13),
- 	OPERATOR 2  <= (isbn, isbn13),
- 	OPERATOR 3  = (isbn, ean13),
- 	OPERATOR 3  = (isbn, isbn13),
- 	OPERATOR 4  >= (isbn, ean13),
- 	OPERATOR 4  >= (isbn, isbn13),
- 	OPERATOR 5  > (isbn, ean13),
- 	OPERATOR 5  > (isbn, isbn13),
- 	FUNCTION 1  btisbncmp(isbn, ean13),
- 	FUNCTION 1  btisbncmp(isbn, isbn13);
- 
- ALTER OPERATOR FAMILY isn_ops USING hash ADD
- 	OPERATOR 1  = (isbn, ean13),
- 	OPERATOR 1  = (isbn, isbn13);
- 
- ---------------------------------------------------
- -- ISMN13:
- CREATE FUNCTION btismn13cmp(ismn13, ismn13)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE OPERATOR CLASS ismn13_ops DEFAULT
- 	FOR TYPE ismn13 USING btree FAMILY isn_ops AS
- 	OPERATOR 1  <,
- 	OPERATOR 2  <=,
- 	OPERATOR 3  =,
- 	OPERATOR 4  >=,
- 	OPERATOR 5  >,
- 	FUNCTION 1  btismn13cmp(ismn13, ismn13);
- 
- CREATE FUNCTION hashismn13(ismn13)
- 	RETURNS int4
- 	AS 'hashint8'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE OPERATOR CLASS ismn13_ops DEFAULT
- 	FOR TYPE ismn13 USING hash FAMILY isn_ops AS
- 	OPERATOR 1  =,
- 	FUNCTION 1  hashismn13(ismn13);
- 
- -- ISMN13 vs other types:
- CREATE FUNCTION btismn13cmp(ismn13, ean13)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION btismn13cmp(ismn13, ismn)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- ALTER OPERATOR FAMILY isn_ops USING btree ADD
- 	OPERATOR 1  < (ismn13, ean13),
- 	OPERATOR 1  < (ismn13, ismn),
- 	OPERATOR 2  <= (ismn13, ean13),
- 	OPERATOR 2  <= (ismn13, ismn),
- 	OPERATOR 3  = (ismn13, ean13),
- 	OPERATOR 3  = (ismn13, ismn),
- 	OPERATOR 4  >= (ismn13, ean13),
- 	OPERATOR 4  >= (ismn13, ismn),
- 	OPERATOR 5  > (ismn13, ean13),
- 	OPERATOR 5  > (ismn13, ismn),
- 	FUNCTION 1  btismn13cmp(ismn13, ean13),
- 	FUNCTION 1  btismn13cmp(ismn13, ismn);
- 
- ALTER OPERATOR FAMILY isn_ops USING hash ADD
- 	OPERATOR 1  = (ismn13, ean13),
- 	OPERATOR 1  = (ismn13, ismn);
- 
- ---------------------------------------------------
- -- ISMN:
- CREATE FUNCTION btismncmp(ismn, ismn)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE OPERATOR CLASS ismn_ops DEFAULT
- 	FOR TYPE ismn USING btree FAMILY isn_ops AS
- 	OPERATOR 1  <,
- 	OPERATOR 2  <=,
- 	OPERATOR 3  =,
- 	OPERATOR 4  >=,
- 	OPERATOR 5  >,
- 	FUNCTION 1  btismncmp(ismn, ismn);
- 
- CREATE FUNCTION hashismn(ismn)
- 	RETURNS int4
- 	AS 'hashint8'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE OPERATOR CLASS ismn_ops DEFAULT
- 	FOR TYPE ismn USING hash FAMILY isn_ops AS
- 	OPERATOR 1  =,
- 	FUNCTION 1  hashismn(ismn);
- 
- -- ISMN vs other types:
- CREATE FUNCTION btismncmp(ismn, ean13)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION btismncmp(ismn, ismn13)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- ALTER OPERATOR FAMILY isn_ops USING btree ADD
- 	OPERATOR 1  < (ismn, ean13),
- 	OPERATOR 1  < (ismn, ismn13),
- 	OPERATOR 2  <= (ismn, ean13),
- 	OPERATOR 2  <= (ismn, ismn13),
- 	OPERATOR 3  = (ismn, ean13),
- 	OPERATOR 3  = (ismn, ismn13),
- 	OPERATOR 4  >= (ismn, ean13),
- 	OPERATOR 4  >= (ismn, ismn13),
- 	OPERATOR 5  > (ismn, ean13),
- 	OPERATOR 5  > (ismn, ismn13),
- 	FUNCTION 1  btismncmp(ismn, ean13),
- 	FUNCTION 1  btismncmp(ismn, ismn13);
- 
- ALTER OPERATOR FAMILY isn_ops USING hash ADD
- 	OPERATOR 1  = (ismn, ean13),
- 	OPERATOR 1  = (ismn, ismn13);
- 
- ---------------------------------------------------
- -- ISSN13:
- CREATE FUNCTION btissn13cmp(issn13, issn13)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE OPERATOR CLASS issn13_ops DEFAULT
- 	FOR TYPE issn13 USING btree FAMILY isn_ops AS
- 	OPERATOR 1  <,
- 	OPERATOR 2  <=,
- 	OPERATOR 3  =,
- 	OPERATOR 4  >=,
- 	OPERATOR 5  >,
- 	FUNCTION 1  btissn13cmp(issn13, issn13);
- 
- CREATE FUNCTION hashissn13(issn13)
- 	RETURNS int4
- 	AS 'hashint8'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE OPERATOR CLASS issn13_ops DEFAULT
- 	FOR TYPE issn13 USING hash FAMILY isn_ops AS
- 	OPERATOR 1  =,
- 	FUNCTION 1  hashissn13(issn13);
- 
- -- ISSN13 vs other types:
- CREATE FUNCTION btissn13cmp(issn13, ean13)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION btissn13cmp(issn13, issn)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- ALTER OPERATOR FAMILY isn_ops USING btree ADD
- 	OPERATOR 1  < (issn13, ean13),
- 	OPERATOR 1  < (issn13, issn),
- 	OPERATOR 2  <= (issn13, ean13),
- 	OPERATOR 2  <= (issn13, issn),
- 	OPERATOR 3  = (issn13, ean13),
- 	OPERATOR 3  = (issn13, issn),
- 	OPERATOR 4  >= (issn13, ean13),
- 	OPERATOR 4  >= (issn13, issn),
- 	OPERATOR 5  > (issn13, ean13),
- 	OPERATOR 5  > (issn13, issn),
- 	FUNCTION 1  btissn13cmp(issn13, ean13),
- 	FUNCTION 1  btissn13cmp(issn13, issn);
- 
- ALTER OPERATOR FAMILY isn_ops USING hash ADD
- 	OPERATOR 1  = (issn13, ean13),
- 	OPERATOR 1  = (issn13, issn);
- 
- ---------------------------------------------------
- -- ISSN:
- CREATE FUNCTION btissncmp(issn, issn)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE OPERATOR CLASS issn_ops DEFAULT
- 	FOR TYPE issn USING btree FAMILY isn_ops AS
- 	OPERATOR 1  <,
- 	OPERATOR 2  <=,
- 	OPERATOR 3  =,
- 	OPERATOR 4  >=,
- 	OPERATOR 5  >,
- 	FUNCTION 1  btissncmp(issn, issn);
- 
- CREATE FUNCTION hashissn(issn)
- 	RETURNS int4
- 	AS 'hashint8'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE OPERATOR CLASS issn_ops DEFAULT
- 	FOR TYPE issn USING hash FAMILY isn_ops AS
- 	OPERATOR 1  =,
- 	FUNCTION 1  hashissn(issn);
- 
- -- ISSN vs other types:
- CREATE FUNCTION btissncmp(issn, ean13)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- CREATE FUNCTION btissncmp(issn, issn13)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- ALTER OPERATOR FAMILY isn_ops USING btree ADD
- 	OPERATOR 1  < (issn, ean13),
- 	OPERATOR 1  < (issn, issn13),
- 	OPERATOR 2  <= (issn, ean13),
- 	OPERATOR 2  <= (issn, issn13),
- 	OPERATOR 3  = (issn, ean13),
- 	OPERATOR 3  = (issn, issn13),
- 	OPERATOR 4  >= (issn, ean13),
- 	OPERATOR 4  >= (issn, issn13),
- 	OPERATOR 5  > (issn, ean13),
- 	OPERATOR 5  > (issn, issn13),
- 	FUNCTION 1  btissncmp(issn, ean13),
- 	FUNCTION 1  btissncmp(issn, issn13);
- 
- ALTER OPERATOR FAMILY isn_ops USING hash ADD
- 	OPERATOR 1  = (issn, ean13),
- 	OPERATOR 1  = (issn, issn13);
- 
- ---------------------------------------------------
- -- UPC:
- CREATE FUNCTION btupccmp(upc, upc)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE OPERATOR CLASS upc_ops DEFAULT
- 	FOR TYPE upc USING btree FAMILY isn_ops AS
- 	OPERATOR 1  <,
- 	OPERATOR 2  <=,
- 	OPERATOR 3  =,
- 	OPERATOR 4  >=,
- 	OPERATOR 5  >,
- 	FUNCTION 1  btupccmp(upc, upc);
- 
- CREATE FUNCTION hashupc(upc)
- 	RETURNS int4
- 	AS 'hashint8'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- CREATE OPERATOR CLASS upc_ops DEFAULT
- 	FOR TYPE upc USING hash FAMILY isn_ops AS
- 	OPERATOR 1  =,
- 	FUNCTION 1  hashupc(upc);
- 
- -- UPC vs other types:
- CREATE FUNCTION btupccmp(upc, ean13)
- 	RETURNS int4
- 	AS 'btint8cmp'
- 	LANGUAGE 'internal'
- 	IMMUTABLE STRICT;
- 
- ALTER OPERATOR FAMILY isn_ops USING btree ADD
- 	OPERATOR 1  < (upc, ean13),
- 	OPERATOR 2  <= (upc, ean13),
- 	OPERATOR 3  = (upc, ean13),
- 	OPERATOR 4  >= (upc, ean13),
- 	OPERATOR 5  > (upc, ean13),
- 	FUNCTION 1  btupccmp(upc, ean13);
- 
- ALTER OPERATOR FAMILY isn_ops USING hash ADD
- 	OPERATOR 1  = (upc, ean13);
- 
- --
- -- Type casts:
- --
- ---------------------------------------------------
- CREATE FUNCTION isbn13(ean13)
- RETURNS isbn13
- AS 'MODULE_PATHNAME', 'isbn_cast_from_ean13'
- LANGUAGE C IMMUTABLE STRICT;
- CREATE FUNCTION ismn13(ean13)
- RETURNS ismn13
- AS 'MODULE_PATHNAME', 'ismn_cast_from_ean13'
- LANGUAGE C IMMUTABLE STRICT;
- CREATE FUNCTION issn13(ean13)
- RETURNS issn13
- AS 'MODULE_PATHNAME', 'issn_cast_from_ean13'
- LANGUAGE C IMMUTABLE STRICT;
- CREATE FUNCTION isbn(ean13)
- RETURNS isbn
- AS 'MODULE_PATHNAME', 'isbn_cast_from_ean13'
- LANGUAGE C IMMUTABLE STRICT;
- CREATE FUNCTION ismn(ean13)
- RETURNS ismn
- AS 'MODULE_PATHNAME', 'ismn_cast_from_ean13'
- LANGUAGE C IMMUTABLE STRICT;
- CREATE FUNCTION issn(ean13)
- RETURNS issn
- AS 'MODULE_PATHNAME', 'issn_cast_from_ean13'
- LANGUAGE C IMMUTABLE STRICT;
- CREATE FUNCTION upc(ean13)
- RETURNS upc
- AS 'MODULE_PATHNAME', 'upc_cast_from_ean13'
- LANGUAGE C IMMUTABLE STRICT;
- 
- 
- CREATE CAST (ean13 AS isbn13) WITH FUNCTION isbn13(ean13);
- CREATE CAST (ean13 AS isbn) WITH FUNCTION isbn(ean13);
- CREATE CAST (ean13 AS ismn13) WITH FUNCTION ismn13(ean13);
- CREATE CAST (ean13 AS ismn) WITH FUNCTION ismn(ean13);
- CREATE CAST (ean13 AS issn13) WITH FUNCTION issn13(ean13);
- CREATE CAST (ean13 AS issn) WITH FUNCTION issn(ean13);
- CREATE CAST (ean13 AS upc) WITH FUNCTION upc(ean13);
- 
- CREATE CAST (isbn13 AS ean13) WITHOUT FUNCTION AS ASSIGNMENT;
- CREATE CAST (isbn AS ean13) WITHOUT FUNCTION AS ASSIGNMENT;
- CREATE CAST (ismn13 AS ean13) WITHOUT FUNCTION AS ASSIGNMENT;
- CREATE CAST (ismn AS ean13) WITHOUT FUNCTION AS ASSIGNMENT;
- CREATE CAST (issn13 AS ean13) WITHOUT FUNCTION AS ASSIGNMENT;
- CREATE CAST (issn AS ean13) WITHOUT FUNCTION AS ASSIGNMENT;
- CREATE CAST (upc AS ean13) WITHOUT FUNCTION AS ASSIGNMENT;
- 
- CREATE CAST (isbn AS isbn13) WITHOUT FUNCTION AS ASSIGNMENT;
- CREATE CAST (isbn13 AS isbn) WITHOUT FUNCTION AS ASSIGNMENT;
- CREATE CAST (ismn AS ismn13) WITHOUT FUNCTION AS ASSIGNMENT;
- CREATE CAST (ismn13 AS ismn) WITHOUT FUNCTION AS ASSIGNMENT;
- CREATE CAST (issn AS issn13) WITHOUT FUNCTION AS ASSIGNMENT;
- CREATE CAST (issn13 AS issn) WITHOUT FUNCTION AS ASSIGNMENT;
- 
- --
- -- Validation stuff for lose types:
- --
- CREATE FUNCTION make_valid(ean13)
- 	RETURNS ean13
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE FUNCTION make_valid(isbn13)
- 	RETURNS isbn13
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE FUNCTION make_valid(ismn13)
- 	RETURNS ismn13
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE FUNCTION make_valid(issn13)
- 	RETURNS issn13
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE FUNCTION make_valid(isbn)
- 	RETURNS isbn
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE FUNCTION make_valid(ismn)
- 	RETURNS ismn
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE FUNCTION make_valid(issn)
- 	RETURNS issn
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE FUNCTION make_valid(upc)
- 	RETURNS upc
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- 
- CREATE FUNCTION is_valid(ean13)
- 	RETURNS boolean
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE FUNCTION is_valid(isbn13)
- 	RETURNS boolean
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE FUNCTION is_valid(ismn13)
- 	RETURNS boolean
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE FUNCTION is_valid(issn13)
- 	RETURNS boolean
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE FUNCTION is_valid(isbn)
- 	RETURNS boolean
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE FUNCTION is_valid(ismn)
- 	RETURNS boolean
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE FUNCTION is_valid(issn)
- 	RETURNS boolean
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- CREATE FUNCTION is_valid(upc)
- 	RETURNS boolean
- 	AS 'MODULE_PATHNAME'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- 
- --
- -- isn_weak(boolean) - Sets the weak input mode.
- -- This function is intended for testing use only!
- --
- CREATE FUNCTION isn_weak(boolean)
- 	RETURNS boolean
- 	AS 'MODULE_PATHNAME', 'accept_weak_input'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
- 
- --
- -- isn_weak() - Gets the weak input mode status
- --
- CREATE FUNCTION isn_weak()
- 	RETURNS boolean
- 	AS 'MODULE_PATHNAME', 'weak_input_status'
- 	LANGUAGE C
- 	IMMUTABLE STRICT;
--- 0 ----
diff --git a/cnew file mode 100644
index 0000000..347d692
*** /dev/null
--- b/contrib/isn/isn--1.1.sql
***************
*** 0 ****
--- 1,3222 ----
+ /* contrib/isn/isn--1.0.sql */
+ 
+ -- complain if script is sourced in psql, rather than via CREATE EXTENSION
+ \echo Use "CREATE EXTENSION isn" to load this file. \quit
+ 
+ -- Example:
+ --   create table test ( id isbn );
+ --   insert into test values('978-0-393-04002-9');
+ --
+ --   select isbn('978-0-393-04002-9');
+ --   select isbn13('0-901690-54-6');
+ --
+ 
+ --
+ --	Input and output functions and data types:
+ --
+ ---------------------------------------------------
+ CREATE FUNCTION ean13_in(cstring)
+ 	RETURNS ean13
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION ean13_out(ean13)
+ 	RETURNS cstring
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION ean13_recv(internal)
+ 	RETURNS ean13
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	STRICT IMMUTABLE;
+ CREATE FUNCTION ean13_send(ean13)
+ 	RETURNS bytea
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	STRICT IMMUTABLE;
+ CREATE TYPE ean13 (
+ 	INPUT = ean13_in,
+ 	OUTPUT = ean13_out,
+ 	RECEIVE = ean13_recv,
+ 	SEND = ean13_send,
+ 	LIKE = pg_catalog.int8
+ );
+ COMMENT ON TYPE ean13
+ 	IS 'International European Article Number (EAN13)';
+ 
+ CREATE FUNCTION isbn13_in(cstring)
+ 	RETURNS isbn13
+ 	AS 'MODULE_PATHNAME', 'isbn_in'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION ean13_out(isbn13)
+ 	RETURNS cstring
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE TYPE isbn13 (
+ 	INPUT = isbn13_in,
+ 	OUTPUT = ean13_out,
+ 	RECEIVE = ean13_recv,
+ 	SEND = ean13_send,
+ 	LIKE = pg_catalog.int8
+ );
+ COMMENT ON TYPE isbn13
+ 	IS 'International Standard Book Number 13 (ISBN13)';
+ 
+ CREATE FUNCTION ismn13_in(cstring)
+ 	RETURNS ismn13
+ 	AS 'MODULE_PATHNAME', 'ismn_in'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION ean13_out(ismn13)
+ 	RETURNS cstring
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE TYPE ismn13 (
+ 	INPUT = ismn13_in,
+ 	OUTPUT = ean13_out,
+ 	RECEIVE = ean13_recv,
+ 	SEND = ean13_send,
+ 	LIKE = pg_catalog.int8
+ );
+ COMMENT ON TYPE ismn13
+ 	IS 'International Standard Music Number 13 (ISMN13)';
+ 
+ CREATE FUNCTION issn13_in(cstring)
+ 	RETURNS issn13
+ 	AS 'MODULE_PATHNAME', 'issn_in'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION ean13_out(issn13)
+ 	RETURNS cstring
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE TYPE issn13 (
+ 	INPUT = issn13_in,
+ 	OUTPUT = ean13_out,
+ 	RECEIVE = ean13_recv,
+ 	SEND = ean13_send,
+ 	LIKE = pg_catalog.int8
+ );
+ COMMENT ON TYPE issn13
+ 	IS 'International Standard Serial Number 13 (ISSN13)';
+ 
+ -- Short format:
+ 
+ CREATE FUNCTION isbn_in(cstring)
+ 	RETURNS isbn
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isn_out(isbn)
+ 	RETURNS cstring
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE TYPE isbn (
+ 	INPUT = isbn_in,
+ 	OUTPUT = isn_out,
+ 	RECEIVE = ean13_recv,
+ 	SEND = ean13_send,
+ 	LIKE = pg_catalog.int8
+ );
+ COMMENT ON TYPE isbn
+ 	IS 'International Standard Book Number (ISBN)';
+ 
+ CREATE FUNCTION ismn_in(cstring)
+ 	RETURNS ismn
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isn_out(ismn)
+ 	RETURNS cstring
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE TYPE ismn (
+ 	INPUT = ismn_in,
+ 	OUTPUT = isn_out,
+ 	RECEIVE = ean13_recv,
+ 	SEND = ean13_send,
+ 	LIKE = pg_catalog.int8
+ );
+ COMMENT ON TYPE ismn
+ 	IS 'International Standard Music Number (ISMN)';
+ 
+ CREATE FUNCTION issn_in(cstring)
+ 	RETURNS issn
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isn_out(issn)
+ 	RETURNS cstring
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE TYPE issn (
+ 	INPUT = issn_in,
+ 	OUTPUT = isn_out,
+ 	RECEIVE = ean13_recv,
+ 	SEND = ean13_send,
+ 	LIKE = pg_catalog.int8
+ );
+ COMMENT ON TYPE issn
+ 	IS 'International Standard Serial Number (ISSN)';
+ 
+ CREATE FUNCTION upc_in(cstring)
+ 	RETURNS upc
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isn_out(upc)
+ 	RETURNS cstring
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE TYPE upc (
+ 	INPUT = upc_in,
+ 	OUTPUT = isn_out,
+ 	RECEIVE = ean13_recv,
+ 	SEND = ean13_send,
+ 	LIKE = pg_catalog.int8
+ );
+ COMMENT ON TYPE upc
+ 	IS 'Universal Product Code (UPC)';
+ 
+ --
+ -- Operator functions:
+ --
+ ---------------------------------------------------
+ -- EAN13:
+ CREATE FUNCTION isnlt(ean13, ean13)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(ean13, ean13)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(ean13, ean13)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(ean13, ean13)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(ean13, ean13)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(ean13, ean13)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE FUNCTION isnlt(ean13, isbn13)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(ean13, isbn13)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(ean13, isbn13)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(ean13, isbn13)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(ean13, isbn13)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(ean13, isbn13)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE FUNCTION isnlt(ean13, ismn13)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(ean13, ismn13)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(ean13, ismn13)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(ean13, ismn13)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(ean13, ismn13)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(ean13, ismn13)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE FUNCTION isnlt(ean13, issn13)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(ean13, issn13)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(ean13, issn13)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(ean13, issn13)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(ean13, issn13)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(ean13, issn13)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE FUNCTION isnlt(ean13, isbn)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(ean13, isbn)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(ean13, isbn)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(ean13, isbn)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(ean13, isbn)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(ean13, isbn)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE FUNCTION isnlt(ean13, ismn)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(ean13, ismn)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(ean13, ismn)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(ean13, ismn)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(ean13, ismn)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(ean13, ismn)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE FUNCTION isnlt(ean13, issn)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(ean13, issn)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(ean13, issn)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(ean13, issn)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(ean13, issn)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(ean13, issn)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE FUNCTION isnlt(ean13, upc)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(ean13, upc)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(ean13, upc)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(ean13, upc)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(ean13, upc)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(ean13, upc)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ ---------------------------------------------------
+ -- ISBN13:
+ CREATE FUNCTION isnlt(isbn13, isbn13)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(isbn13, isbn13)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(isbn13, isbn13)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(isbn13, isbn13)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(isbn13, isbn13)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(isbn13, isbn13)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE FUNCTION isnlt(isbn13, isbn)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(isbn13, isbn)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(isbn13, isbn)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(isbn13, isbn)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(isbn13, isbn)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(isbn13, isbn)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE FUNCTION isnlt(isbn13, ean13)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(isbn13, ean13)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(isbn13, ean13)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(isbn13, ean13)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(isbn13, ean13)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(isbn13, ean13)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ ---------------------------------------------------
+ -- ISBN:
+ CREATE FUNCTION isnlt(isbn, isbn)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(isbn, isbn)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(isbn, isbn)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(isbn, isbn)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(isbn, isbn)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(isbn, isbn)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE FUNCTION isnlt(isbn, isbn13)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(isbn, isbn13)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(isbn, isbn13)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(isbn, isbn13)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(isbn, isbn13)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(isbn, isbn13)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE FUNCTION isnlt(isbn, ean13)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(isbn, ean13)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(isbn, ean13)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(isbn, ean13)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(isbn, ean13)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(isbn, ean13)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ ---------------------------------------------------
+ -- ISMN13:
+ CREATE FUNCTION isnlt(ismn13, ismn13)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(ismn13, ismn13)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(ismn13, ismn13)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(ismn13, ismn13)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(ismn13, ismn13)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(ismn13, ismn13)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE FUNCTION isnlt(ismn13, ismn)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(ismn13, ismn)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(ismn13, ismn)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(ismn13, ismn)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(ismn13, ismn)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(ismn13, ismn)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE FUNCTION isnlt(ismn13, ean13)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(ismn13, ean13)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(ismn13, ean13)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(ismn13, ean13)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(ismn13, ean13)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(ismn13, ean13)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ ---------------------------------------------------
+ -- ISMN:
+ CREATE FUNCTION isnlt(ismn, ismn)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(ismn, ismn)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(ismn, ismn)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(ismn, ismn)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(ismn, ismn)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(ismn, ismn)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE FUNCTION isnlt(ismn, ismn13)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(ismn, ismn13)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(ismn, ismn13)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(ismn, ismn13)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(ismn, ismn13)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(ismn, ismn13)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE FUNCTION isnlt(ismn, ean13)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(ismn, ean13)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(ismn, ean13)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(ismn, ean13)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(ismn, ean13)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(ismn, ean13)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ ---------------------------------------------------
+ -- ISSN13:
+ CREATE FUNCTION isnlt(issn13, issn13)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(issn13, issn13)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(issn13, issn13)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(issn13, issn13)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(issn13, issn13)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(issn13, issn13)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE FUNCTION isnlt(issn13, issn)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(issn13, issn)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(issn13, issn)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(issn13, issn)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(issn13, issn)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(issn13, issn)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE FUNCTION isnlt(issn13, ean13)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(issn13, ean13)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(issn13, ean13)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(issn13, ean13)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(issn13, ean13)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(issn13, ean13)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ ---------------------------------------------------
+ -- ISSN:
+ CREATE FUNCTION isnlt(issn, issn)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(issn, issn)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(issn, issn)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(issn, issn)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(issn, issn)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(issn, issn)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE FUNCTION isnlt(issn, issn13)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(issn, issn13)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(issn, issn13)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(issn, issn13)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(issn, issn13)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(issn, issn13)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE FUNCTION isnlt(issn, ean13)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(issn, ean13)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(issn, ean13)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(issn, ean13)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(issn, ean13)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(issn, ean13)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ ---------------------------------------------------
+ -- UPC:
+ CREATE FUNCTION isnlt(upc, upc)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(upc, upc)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(upc, upc)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(upc, upc)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(upc, upc)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(upc, upc)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE FUNCTION isnlt(upc, ean13)
+ 	RETURNS boolean
+ 	AS 'int8lt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnle(upc, ean13)
+ 	RETURNS boolean
+ 	AS 'int8le'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isneq(upc, ean13)
+ 	RETURNS boolean
+ 	AS 'int8eq'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnge(upc, ean13)
+ 	RETURNS boolean
+ 	AS 'int8ge'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isngt(upc, ean13)
+ 	RETURNS boolean
+ 	AS 'int8gt'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION isnne(upc, ean13)
+ 	RETURNS boolean
+ 	AS 'int8ne'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ --
+ -- Now the operators:
+ --
+ 
+ --
+ -- EAN13 operators:
+ --
+ ---------------------------------------------------
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = isbn13,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = isbn13,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = isbn13,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = isbn13,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = isbn13,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = isbn13,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = isbn13,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = isbn13,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = isbn13,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = isbn13,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = isbn13,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = isbn13,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = ismn13,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = ismn13,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = ismn13,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = ismn13,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel);
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = ismn13,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel);
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = ismn13,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = ismn13,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = ismn13,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = ismn13,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = ismn13,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = ismn13,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = ismn13,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = issn13,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = issn13,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = issn13,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = issn13,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel);
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = issn13,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel);
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = issn13,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = isbn,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = isbn,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = isbn,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = isbn,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel);
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = isbn,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel);
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = isbn,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = ismn,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = ismn,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = ismn,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = ismn,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel);
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = ismn,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel);
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = ismn,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = issn,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = issn,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = issn,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = issn,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel);
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = issn,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel);
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = issn,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = upc,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = upc,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = upc,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = upc,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel);
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = upc,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel);
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = ean13,
+ 	RIGHTARG = upc,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ --
+ -- ISBN13 operators:
+ --
+ ---------------------------------------------------
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = isbn13,
+ 	RIGHTARG = isbn13,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = isbn13,
+ 	RIGHTARG = isbn13,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = isbn13,
+ 	RIGHTARG = isbn13,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = isbn13,
+ 	RIGHTARG = isbn13,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = isbn13,
+ 	RIGHTARG = isbn13,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = isbn13,
+ 	RIGHTARG = isbn13,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = isbn13,
+ 	RIGHTARG = isbn,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = isbn13,
+ 	RIGHTARG = isbn,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = isbn13,
+ 	RIGHTARG = isbn,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = isbn13,
+ 	RIGHTARG = isbn,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = isbn13,
+ 	RIGHTARG = isbn,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = isbn13,
+ 	RIGHTARG = isbn,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ --
+ -- ISBN operators:
+ --
+ ---------------------------------------------------
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = isbn,
+ 	RIGHTARG = isbn,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = isbn,
+ 	RIGHTARG = isbn,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = isbn,
+ 	RIGHTARG = isbn,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = isbn,
+ 	RIGHTARG = isbn,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = isbn,
+ 	RIGHTARG = isbn,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = isbn,
+ 	RIGHTARG = isbn,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = isbn,
+ 	RIGHTARG = isbn13,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = isbn,
+ 	RIGHTARG = isbn13,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = isbn,
+ 	RIGHTARG = isbn13,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = isbn,
+ 	RIGHTARG = isbn13,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = isbn,
+ 	RIGHTARG = isbn13,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = isbn,
+ 	RIGHTARG = isbn13,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = isbn,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = isbn,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = isbn,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = isbn,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = isbn,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = isbn,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ --
+ -- ISMN13 operators:
+ --
+ ---------------------------------------------------
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = ismn13,
+ 	RIGHTARG = ismn13,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = ismn13,
+ 	RIGHTARG = ismn13,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = ismn13,
+ 	RIGHTARG = ismn13,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = ismn13,
+ 	RIGHTARG = ismn13,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = ismn13,
+ 	RIGHTARG = ismn13,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = ismn13,
+ 	RIGHTARG = ismn13,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = ismn13,
+ 	RIGHTARG = ismn,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = ismn13,
+ 	RIGHTARG = ismn,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = ismn13,
+ 	RIGHTARG = ismn,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = ismn13,
+ 	RIGHTARG = ismn,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = ismn13,
+ 	RIGHTARG = ismn,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = ismn13,
+ 	RIGHTARG = ismn,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ --
+ -- ISMN operators:
+ --
+ ---------------------------------------------------
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = ismn,
+ 	RIGHTARG = ismn,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = ismn,
+ 	RIGHTARG = ismn,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = ismn,
+ 	RIGHTARG = ismn,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = ismn,
+ 	RIGHTARG = ismn,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = ismn,
+ 	RIGHTARG = ismn,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = ismn,
+ 	RIGHTARG = ismn,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = ismn,
+ 	RIGHTARG = ismn13,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = ismn,
+ 	RIGHTARG = ismn13,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = ismn,
+ 	RIGHTARG = ismn13,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = ismn,
+ 	RIGHTARG = ismn13,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = ismn,
+ 	RIGHTARG = ismn13,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = ismn,
+ 	RIGHTARG = ismn13,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = ismn,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = ismn,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = ismn,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = ismn,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = ismn,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = ismn,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ --
+ -- ISSN13 operators:
+ --
+ ---------------------------------------------------
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = issn13,
+ 	RIGHTARG = issn13,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = issn13,
+ 	RIGHTARG = issn13,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = issn13,
+ 	RIGHTARG = issn13,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = issn13,
+ 	RIGHTARG = issn13,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = issn13,
+ 	RIGHTARG = issn13,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = issn13,
+ 	RIGHTARG = issn13,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = issn13,
+ 	RIGHTARG = issn,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = issn13,
+ 	RIGHTARG = issn,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = issn13,
+ 	RIGHTARG = issn,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = issn13,
+ 	RIGHTARG = issn,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = issn13,
+ 	RIGHTARG = issn,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = issn13,
+ 	RIGHTARG = issn,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = issn13,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = issn13,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = issn13,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = issn13,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = issn13,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = issn13,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ --
+ -- ISSN operators:
+ --
+ ---------------------------------------------------
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = issn,
+ 	RIGHTARG = issn,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = issn,
+ 	RIGHTARG = issn,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = issn,
+ 	RIGHTARG = issn,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = issn,
+ 	RIGHTARG = issn,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = issn,
+ 	RIGHTARG = issn,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = issn,
+ 	RIGHTARG = issn,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = issn,
+ 	RIGHTARG = issn13,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = issn,
+ 	RIGHTARG = issn13,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = issn,
+ 	RIGHTARG = issn13,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = issn,
+ 	RIGHTARG = issn13,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = issn,
+ 	RIGHTARG = issn13,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = issn,
+ 	RIGHTARG = issn13,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = issn,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = issn,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = issn,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = issn,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = issn,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = issn,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ --
+ -- UPC operators:
+ --
+ ---------------------------------------------------
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = upc,
+ 	RIGHTARG = upc,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = upc,
+ 	RIGHTARG = upc,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = upc,
+ 	RIGHTARG = upc,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = upc,
+ 	RIGHTARG = upc,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = upc,
+ 	RIGHTARG = upc,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = upc,
+ 	RIGHTARG = upc,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ CREATE OPERATOR < (
+ 	PROCEDURE = isnlt,
+ 	LEFTARG = upc,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = >,
+ 	NEGATOR = >=,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR <= (
+ 	PROCEDURE = isnle,
+ 	LEFTARG = upc,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = >=,
+ 	NEGATOR = >,
+ 	RESTRICT = scalarltsel,
+ 	JOIN = scalarltjoinsel);
+ CREATE OPERATOR = (
+ 	PROCEDURE = isneq,
+ 	LEFTARG = upc,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = =,
+ 	NEGATOR = <>,
+ 	RESTRICT = eqsel,
+ 	JOIN = eqjoinsel,
+ 	MERGES,
+ 	HASHES);
+ CREATE OPERATOR >= (
+ 	PROCEDURE = isnge,
+ 	LEFTARG = upc,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = <=,
+ 	NEGATOR = <,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR > (
+ 	PROCEDURE = isngt,
+ 	LEFTARG = upc,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = <,
+ 	NEGATOR = <=,
+ 	RESTRICT = scalargtsel,
+ 	JOIN = scalargtjoinsel );
+ CREATE OPERATOR <> (
+ 	PROCEDURE = isnne,
+ 	LEFTARG = upc,
+ 	RIGHTARG = ean13,
+ 	COMMUTATOR = <>,
+ 	NEGATOR = =,
+ 	RESTRICT = neqsel,
+ 	JOIN = neqjoinsel);
+ 
+ --
+ -- Operator families for the various operator classes:
+ --
+ ---------------------------------------------------
+ 
+ CREATE OPERATOR FAMILY isn_ops USING btree;
+ CREATE OPERATOR FAMILY isn_ops USING hash;
+ 
+ --
+ -- Operator classes:
+ --
+ ---------------------------------------------------
+ -- EAN13:
+ CREATE FUNCTION btean13cmp(ean13, ean13)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE OPERATOR CLASS ean13_ops DEFAULT
+ 	FOR TYPE ean13 USING btree FAMILY isn_ops AS
+ 	OPERATOR 1  <,
+ 	OPERATOR 2  <=,
+ 	OPERATOR 3  =,
+ 	OPERATOR 4  >=,
+ 	OPERATOR 5  >,
+ 	FUNCTION 1  btean13cmp(ean13, ean13);
+ 
+ CREATE FUNCTION hashean13(ean13)
+ 	RETURNS int4
+ 	AS 'hashint8'
+ 	LANGUAGE 'internal' IMMUTABLE STRICT;
+ 
+ CREATE OPERATOR CLASS ean13_ops DEFAULT
+ 	FOR TYPE ean13 USING hash FAMILY isn_ops AS
+ 	OPERATOR 1  =,
+ 	FUNCTION 1  hashean13(ean13);
+ 
+ -- EAN13 vs other types:
+ CREATE FUNCTION btean13cmp(ean13, isbn13)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION btean13cmp(ean13, ismn13)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION btean13cmp(ean13, issn13)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION btean13cmp(ean13, isbn)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION btean13cmp(ean13, ismn)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION btean13cmp(ean13, issn)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION btean13cmp(ean13, upc)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ ALTER OPERATOR FAMILY isn_ops USING btree ADD
+ 	OPERATOR 1  < (ean13, isbn13),
+ 	OPERATOR 1  < (ean13, ismn13),
+ 	OPERATOR 1  < (ean13, issn13),
+ 	OPERATOR 1  < (ean13, isbn),
+ 	OPERATOR 1  < (ean13, ismn),
+ 	OPERATOR 1  < (ean13, issn),
+ 	OPERATOR 1  < (ean13, upc),
+ 	OPERATOR 2  <= (ean13, isbn13),
+ 	OPERATOR 2  <= (ean13, ismn13),
+ 	OPERATOR 2  <= (ean13, issn13),
+ 	OPERATOR 2  <= (ean13, isbn),
+ 	OPERATOR 2  <= (ean13, ismn),
+ 	OPERATOR 2  <= (ean13, issn),
+ 	OPERATOR 2  <= (ean13, upc),
+ 	OPERATOR 3  = (ean13, isbn13),
+ 	OPERATOR 3  = (ean13, ismn13),
+ 	OPERATOR 3  = (ean13, issn13),
+ 	OPERATOR 3  = (ean13, isbn),
+ 	OPERATOR 3  = (ean13, ismn),
+ 	OPERATOR 3  = (ean13, issn),
+ 	OPERATOR 3  = (ean13, upc),
+ 	OPERATOR 4  >= (ean13, isbn13),
+ 	OPERATOR 4  >= (ean13, ismn13),
+ 	OPERATOR 4  >= (ean13, issn13),
+ 	OPERATOR 4  >= (ean13, isbn),
+ 	OPERATOR 4  >= (ean13, ismn),
+ 	OPERATOR 4  >= (ean13, issn),
+ 	OPERATOR 4  >= (ean13, upc),
+ 	OPERATOR 5  > (ean13, isbn13),
+ 	OPERATOR 5  > (ean13, ismn13),
+ 	OPERATOR 5  > (ean13, issn13),
+ 	OPERATOR 5  > (ean13, isbn),
+ 	OPERATOR 5  > (ean13, ismn),
+ 	OPERATOR 5  > (ean13, issn),
+ 	OPERATOR 5  > (ean13, upc),
+ 	FUNCTION 1  btean13cmp(ean13, isbn13),
+ 	FUNCTION 1  btean13cmp(ean13, ismn13),
+ 	FUNCTION 1  btean13cmp(ean13, issn13),
+ 	FUNCTION 1  btean13cmp(ean13, isbn),
+ 	FUNCTION 1  btean13cmp(ean13, ismn),
+ 	FUNCTION 1  btean13cmp(ean13, issn),
+ 	FUNCTION 1  btean13cmp(ean13, upc);
+ 
+ ALTER OPERATOR FAMILY isn_ops USING hash ADD
+ 	OPERATOR 1  = (ean13, isbn13),
+ 	OPERATOR 1  = (ean13, ismn13),
+ 	OPERATOR 1  = (ean13, issn13),
+ 	OPERATOR 1  = (ean13, isbn),
+ 	OPERATOR 1  = (ean13, ismn),
+ 	OPERATOR 1  = (ean13, issn),
+ 	OPERATOR 1  = (ean13, upc);
+ 
+ ---------------------------------------------------
+ -- ISBN13:
+ CREATE FUNCTION btisbn13cmp(isbn13, isbn13)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE OPERATOR CLASS isbn13_ops DEFAULT
+ 	FOR TYPE isbn13 USING btree FAMILY isn_ops AS
+ 	OPERATOR 1  <,
+ 	OPERATOR 2  <=,
+ 	OPERATOR 3  =,
+ 	OPERATOR 4  >=,
+ 	OPERATOR 5  >,
+ 	FUNCTION 1  btisbn13cmp(isbn13, isbn13);
+ 
+ CREATE FUNCTION hashisbn13(isbn13)
+ 	RETURNS int4
+ 	AS 'hashint8'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE OPERATOR CLASS isbn13_ops DEFAULT
+ 	FOR TYPE isbn13 USING hash FAMILY isn_ops AS
+ 	OPERATOR 1  =,
+ 	FUNCTION 1  hashisbn13(isbn13);
+ 
+ -- ISBN13 vs other types:
+ CREATE FUNCTION btisbn13cmp(isbn13, ean13)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION btisbn13cmp(isbn13, isbn)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ ALTER OPERATOR FAMILY isn_ops USING btree ADD
+ 	OPERATOR 1  < (isbn13, ean13),
+ 	OPERATOR 1  < (isbn13, isbn),
+ 	OPERATOR 2  <= (isbn13, ean13),
+ 	OPERATOR 2  <= (isbn13, isbn),
+ 	OPERATOR 3  = (isbn13, ean13),
+ 	OPERATOR 3  = (isbn13, isbn),
+ 	OPERATOR 4  >= (isbn13, ean13),
+ 	OPERATOR 4  >= (isbn13, isbn),
+ 	OPERATOR 5  > (isbn13, ean13),
+ 	OPERATOR 5  > (isbn13, isbn),
+ 	FUNCTION 1  btisbn13cmp(isbn13, ean13),
+ 	FUNCTION 1  btisbn13cmp(isbn13, isbn);
+ 
+ ALTER OPERATOR FAMILY isn_ops USING hash ADD
+ 	OPERATOR 1  = (isbn13, ean13),
+ 	OPERATOR 1  = (isbn13, isbn);
+ 
+ ---------------------------------------------------
+ -- ISBN:
+ CREATE FUNCTION btisbncmp(isbn, isbn)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE OPERATOR CLASS isbn_ops DEFAULT
+ 	FOR TYPE isbn USING btree FAMILY isn_ops AS
+ 	OPERATOR 1  <,
+ 	OPERATOR 2  <=,
+ 	OPERATOR 3  =,
+ 	OPERATOR 4  >=,
+ 	OPERATOR 5  >,
+ 	FUNCTION 1  btisbncmp(isbn, isbn);
+ 
+ CREATE FUNCTION hashisbn(isbn)
+ 	RETURNS int4
+ 	AS 'hashint8'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE OPERATOR CLASS isbn_ops DEFAULT
+ 	FOR TYPE isbn USING hash FAMILY isn_ops AS
+ 	OPERATOR 1  =,
+ 	FUNCTION 1  hashisbn(isbn);
+ 
+ -- ISBN vs other types:
+ CREATE FUNCTION btisbncmp(isbn, ean13)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION btisbncmp(isbn, isbn13)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ ALTER OPERATOR FAMILY isn_ops USING btree ADD
+ 	OPERATOR 1  < (isbn, ean13),
+ 	OPERATOR 1  < (isbn, isbn13),
+ 	OPERATOR 2  <= (isbn, ean13),
+ 	OPERATOR 2  <= (isbn, isbn13),
+ 	OPERATOR 3  = (isbn, ean13),
+ 	OPERATOR 3  = (isbn, isbn13),
+ 	OPERATOR 4  >= (isbn, ean13),
+ 	OPERATOR 4  >= (isbn, isbn13),
+ 	OPERATOR 5  > (isbn, ean13),
+ 	OPERATOR 5  > (isbn, isbn13),
+ 	FUNCTION 1  btisbncmp(isbn, ean13),
+ 	FUNCTION 1  btisbncmp(isbn, isbn13);
+ 
+ ALTER OPERATOR FAMILY isn_ops USING hash ADD
+ 	OPERATOR 1  = (isbn, ean13),
+ 	OPERATOR 1  = (isbn, isbn13);
+ 
+ ---------------------------------------------------
+ -- ISMN13:
+ CREATE FUNCTION btismn13cmp(ismn13, ismn13)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE OPERATOR CLASS ismn13_ops DEFAULT
+ 	FOR TYPE ismn13 USING btree FAMILY isn_ops AS
+ 	OPERATOR 1  <,
+ 	OPERATOR 2  <=,
+ 	OPERATOR 3  =,
+ 	OPERATOR 4  >=,
+ 	OPERATOR 5  >,
+ 	FUNCTION 1  btismn13cmp(ismn13, ismn13);
+ 
+ CREATE FUNCTION hashismn13(ismn13)
+ 	RETURNS int4
+ 	AS 'hashint8'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE OPERATOR CLASS ismn13_ops DEFAULT
+ 	FOR TYPE ismn13 USING hash FAMILY isn_ops AS
+ 	OPERATOR 1  =,
+ 	FUNCTION 1  hashismn13(ismn13);
+ 
+ -- ISMN13 vs other types:
+ CREATE FUNCTION btismn13cmp(ismn13, ean13)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION btismn13cmp(ismn13, ismn)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ ALTER OPERATOR FAMILY isn_ops USING btree ADD
+ 	OPERATOR 1  < (ismn13, ean13),
+ 	OPERATOR 1  < (ismn13, ismn),
+ 	OPERATOR 2  <= (ismn13, ean13),
+ 	OPERATOR 2  <= (ismn13, ismn),
+ 	OPERATOR 3  = (ismn13, ean13),
+ 	OPERATOR 3  = (ismn13, ismn),
+ 	OPERATOR 4  >= (ismn13, ean13),
+ 	OPERATOR 4  >= (ismn13, ismn),
+ 	OPERATOR 5  > (ismn13, ean13),
+ 	OPERATOR 5  > (ismn13, ismn),
+ 	FUNCTION 1  btismn13cmp(ismn13, ean13),
+ 	FUNCTION 1  btismn13cmp(ismn13, ismn);
+ 
+ ALTER OPERATOR FAMILY isn_ops USING hash ADD
+ 	OPERATOR 1  = (ismn13, ean13),
+ 	OPERATOR 1  = (ismn13, ismn);
+ 
+ ---------------------------------------------------
+ -- ISMN:
+ CREATE FUNCTION btismncmp(ismn, ismn)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE OPERATOR CLASS ismn_ops DEFAULT
+ 	FOR TYPE ismn USING btree FAMILY isn_ops AS
+ 	OPERATOR 1  <,
+ 	OPERATOR 2  <=,
+ 	OPERATOR 3  =,
+ 	OPERATOR 4  >=,
+ 	OPERATOR 5  >,
+ 	FUNCTION 1  btismncmp(ismn, ismn);
+ 
+ CREATE FUNCTION hashismn(ismn)
+ 	RETURNS int4
+ 	AS 'hashint8'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE OPERATOR CLASS ismn_ops DEFAULT
+ 	FOR TYPE ismn USING hash FAMILY isn_ops AS
+ 	OPERATOR 1  =,
+ 	FUNCTION 1  hashismn(ismn);
+ 
+ -- ISMN vs other types:
+ CREATE FUNCTION btismncmp(ismn, ean13)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION btismncmp(ismn, ismn13)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ ALTER OPERATOR FAMILY isn_ops USING btree ADD
+ 	OPERATOR 1  < (ismn, ean13),
+ 	OPERATOR 1  < (ismn, ismn13),
+ 	OPERATOR 2  <= (ismn, ean13),
+ 	OPERATOR 2  <= (ismn, ismn13),
+ 	OPERATOR 3  = (ismn, ean13),
+ 	OPERATOR 3  = (ismn, ismn13),
+ 	OPERATOR 4  >= (ismn, ean13),
+ 	OPERATOR 4  >= (ismn, ismn13),
+ 	OPERATOR 5  > (ismn, ean13),
+ 	OPERATOR 5  > (ismn, ismn13),
+ 	FUNCTION 1  btismncmp(ismn, ean13),
+ 	FUNCTION 1  btismncmp(ismn, ismn13);
+ 
+ ALTER OPERATOR FAMILY isn_ops USING hash ADD
+ 	OPERATOR 1  = (ismn, ean13),
+ 	OPERATOR 1  = (ismn, ismn13);
+ 
+ ---------------------------------------------------
+ -- ISSN13:
+ CREATE FUNCTION btissn13cmp(issn13, issn13)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE OPERATOR CLASS issn13_ops DEFAULT
+ 	FOR TYPE issn13 USING btree FAMILY isn_ops AS
+ 	OPERATOR 1  <,
+ 	OPERATOR 2  <=,
+ 	OPERATOR 3  =,
+ 	OPERATOR 4  >=,
+ 	OPERATOR 5  >,
+ 	FUNCTION 1  btissn13cmp(issn13, issn13);
+ 
+ CREATE FUNCTION hashissn13(issn13)
+ 	RETURNS int4
+ 	AS 'hashint8'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE OPERATOR CLASS issn13_ops DEFAULT
+ 	FOR TYPE issn13 USING hash FAMILY isn_ops AS
+ 	OPERATOR 1  =,
+ 	FUNCTION 1  hashissn13(issn13);
+ 
+ -- ISSN13 vs other types:
+ CREATE FUNCTION btissn13cmp(issn13, ean13)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION btissn13cmp(issn13, issn)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ ALTER OPERATOR FAMILY isn_ops USING btree ADD
+ 	OPERATOR 1  < (issn13, ean13),
+ 	OPERATOR 1  < (issn13, issn),
+ 	OPERATOR 2  <= (issn13, ean13),
+ 	OPERATOR 2  <= (issn13, issn),
+ 	OPERATOR 3  = (issn13, ean13),
+ 	OPERATOR 3  = (issn13, issn),
+ 	OPERATOR 4  >= (issn13, ean13),
+ 	OPERATOR 4  >= (issn13, issn),
+ 	OPERATOR 5  > (issn13, ean13),
+ 	OPERATOR 5  > (issn13, issn),
+ 	FUNCTION 1  btissn13cmp(issn13, ean13),
+ 	FUNCTION 1  btissn13cmp(issn13, issn);
+ 
+ ALTER OPERATOR FAMILY isn_ops USING hash ADD
+ 	OPERATOR 1  = (issn13, ean13),
+ 	OPERATOR 1  = (issn13, issn);
+ 
+ ---------------------------------------------------
+ -- ISSN:
+ CREATE FUNCTION btissncmp(issn, issn)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE OPERATOR CLASS issn_ops DEFAULT
+ 	FOR TYPE issn USING btree FAMILY isn_ops AS
+ 	OPERATOR 1  <,
+ 	OPERATOR 2  <=,
+ 	OPERATOR 3  =,
+ 	OPERATOR 4  >=,
+ 	OPERATOR 5  >,
+ 	FUNCTION 1  btissncmp(issn, issn);
+ 
+ CREATE FUNCTION hashissn(issn)
+ 	RETURNS int4
+ 	AS 'hashint8'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE OPERATOR CLASS issn_ops DEFAULT
+ 	FOR TYPE issn USING hash FAMILY isn_ops AS
+ 	OPERATOR 1  =,
+ 	FUNCTION 1  hashissn(issn);
+ 
+ -- ISSN vs other types:
+ CREATE FUNCTION btissncmp(issn, ean13)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION btissncmp(issn, issn13)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ ALTER OPERATOR FAMILY isn_ops USING btree ADD
+ 	OPERATOR 1  < (issn, ean13),
+ 	OPERATOR 1  < (issn, issn13),
+ 	OPERATOR 2  <= (issn, ean13),
+ 	OPERATOR 2  <= (issn, issn13),
+ 	OPERATOR 3  = (issn, ean13),
+ 	OPERATOR 3  = (issn, issn13),
+ 	OPERATOR 4  >= (issn, ean13),
+ 	OPERATOR 4  >= (issn, issn13),
+ 	OPERATOR 5  > (issn, ean13),
+ 	OPERATOR 5  > (issn, issn13),
+ 	FUNCTION 1  btissncmp(issn, ean13),
+ 	FUNCTION 1  btissncmp(issn, issn13);
+ 
+ ALTER OPERATOR FAMILY isn_ops USING hash ADD
+ 	OPERATOR 1  = (issn, ean13),
+ 	OPERATOR 1  = (issn, issn13);
+ 
+ ---------------------------------------------------
+ -- UPC:
+ CREATE FUNCTION btupccmp(upc, upc)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE OPERATOR CLASS upc_ops DEFAULT
+ 	FOR TYPE upc USING btree FAMILY isn_ops AS
+ 	OPERATOR 1  <,
+ 	OPERATOR 2  <=,
+ 	OPERATOR 3  =,
+ 	OPERATOR 4  >=,
+ 	OPERATOR 5  >,
+ 	FUNCTION 1  btupccmp(upc, upc);
+ 
+ CREATE FUNCTION hashupc(upc)
+ 	RETURNS int4
+ 	AS 'hashint8'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ CREATE OPERATOR CLASS upc_ops DEFAULT
+ 	FOR TYPE upc USING hash FAMILY isn_ops AS
+ 	OPERATOR 1  =,
+ 	FUNCTION 1  hashupc(upc);
+ 
+ -- UPC vs other types:
+ CREATE FUNCTION btupccmp(upc, ean13)
+ 	RETURNS int4
+ 	AS 'btint8cmp'
+ 	LANGUAGE 'internal'
+ 	IMMUTABLE STRICT;
+ 
+ ALTER OPERATOR FAMILY isn_ops USING btree ADD
+ 	OPERATOR 1  < (upc, ean13),
+ 	OPERATOR 2  <= (upc, ean13),
+ 	OPERATOR 3  = (upc, ean13),
+ 	OPERATOR 4  >= (upc, ean13),
+ 	OPERATOR 5  > (upc, ean13),
+ 	FUNCTION 1  btupccmp(upc, ean13);
+ 
+ ALTER OPERATOR FAMILY isn_ops USING hash ADD
+ 	OPERATOR 1  = (upc, ean13);
+ 
+ --
+ -- Type casts:
+ --
+ ---------------------------------------------------
+ CREATE FUNCTION isbn13(ean13)
+ RETURNS isbn13
+ AS 'MODULE_PATHNAME', 'isbn_cast_from_ean13'
+ LANGUAGE C IMMUTABLE STRICT;
+ CREATE FUNCTION ismn13(ean13)
+ RETURNS ismn13
+ AS 'MODULE_PATHNAME', 'ismn_cast_from_ean13'
+ LANGUAGE C IMMUTABLE STRICT;
+ CREATE FUNCTION issn13(ean13)
+ RETURNS issn13
+ AS 'MODULE_PATHNAME', 'issn_cast_from_ean13'
+ LANGUAGE C IMMUTABLE STRICT;
+ CREATE FUNCTION isbn(ean13)
+ RETURNS isbn
+ AS 'MODULE_PATHNAME', 'isbn_cast_from_ean13'
+ LANGUAGE C IMMUTABLE STRICT;
+ CREATE FUNCTION ismn(ean13)
+ RETURNS ismn
+ AS 'MODULE_PATHNAME', 'ismn_cast_from_ean13'
+ LANGUAGE C IMMUTABLE STRICT;
+ CREATE FUNCTION issn(ean13)
+ RETURNS issn
+ AS 'MODULE_PATHNAME', 'issn_cast_from_ean13'
+ LANGUAGE C IMMUTABLE STRICT;
+ CREATE FUNCTION upc(ean13)
+ RETURNS upc
+ AS 'MODULE_PATHNAME', 'upc_cast_from_ean13'
+ LANGUAGE C IMMUTABLE STRICT;
+ 
+ 
+ CREATE CAST (ean13 AS isbn13) WITH FUNCTION isbn13(ean13);
+ CREATE CAST (ean13 AS isbn) WITH FUNCTION isbn(ean13);
+ CREATE CAST (ean13 AS ismn13) WITH FUNCTION ismn13(ean13);
+ CREATE CAST (ean13 AS ismn) WITH FUNCTION ismn(ean13);
+ CREATE CAST (ean13 AS issn13) WITH FUNCTION issn13(ean13);
+ CREATE CAST (ean13 AS issn) WITH FUNCTION issn(ean13);
+ CREATE CAST (ean13 AS upc) WITH FUNCTION upc(ean13);
+ 
+ CREATE CAST (isbn13 AS ean13) WITHOUT FUNCTION AS ASSIGNMENT;
+ CREATE CAST (isbn AS ean13) WITHOUT FUNCTION AS ASSIGNMENT;
+ CREATE CAST (ismn13 AS ean13) WITHOUT FUNCTION AS ASSIGNMENT;
+ CREATE CAST (ismn AS ean13) WITHOUT FUNCTION AS ASSIGNMENT;
+ CREATE CAST (issn13 AS ean13) WITHOUT FUNCTION AS ASSIGNMENT;
+ CREATE CAST (issn AS ean13) WITHOUT FUNCTION AS ASSIGNMENT;
+ CREATE CAST (upc AS ean13) WITHOUT FUNCTION AS ASSIGNMENT;
+ 
+ CREATE CAST (isbn AS isbn13) WITHOUT FUNCTION AS ASSIGNMENT;
+ CREATE CAST (isbn13 AS isbn) WITHOUT FUNCTION AS ASSIGNMENT;
+ CREATE CAST (ismn AS ismn13) WITHOUT FUNCTION AS ASSIGNMENT;
+ CREATE CAST (ismn13 AS ismn) WITHOUT FUNCTION AS ASSIGNMENT;
+ CREATE CAST (issn AS issn13) WITHOUT FUNCTION AS ASSIGNMENT;
+ CREATE CAST (issn13 AS issn) WITHOUT FUNCTION AS ASSIGNMENT;
+ 
+ --
+ -- Validation stuff for lose types:
+ --
+ CREATE FUNCTION make_valid(ean13)
+ 	RETURNS ean13
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION make_valid(isbn13)
+ 	RETURNS isbn13
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION make_valid(ismn13)
+ 	RETURNS ismn13
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION make_valid(issn13)
+ 	RETURNS issn13
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION make_valid(isbn)
+ 	RETURNS isbn
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION make_valid(ismn)
+ 	RETURNS ismn
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION make_valid(issn)
+ 	RETURNS issn
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION make_valid(upc)
+ 	RETURNS upc
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ 
+ CREATE FUNCTION is_valid(ean13)
+ 	RETURNS boolean
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION is_valid(isbn13)
+ 	RETURNS boolean
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION is_valid(ismn13)
+ 	RETURNS boolean
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION is_valid(issn13)
+ 	RETURNS boolean
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION is_valid(isbn)
+ 	RETURNS boolean
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION is_valid(ismn)
+ 	RETURNS boolean
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION is_valid(issn)
+ 	RETURNS boolean
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ CREATE FUNCTION is_valid(upc)
+ 	RETURNS boolean
+ 	AS 'MODULE_PATHNAME'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ 
+ --
+ -- isn_weak(boolean) - Sets the weak input mode.
+ -- This function is intended for testing use only!
+ --
+ CREATE FUNCTION isn_weak(boolean)
+ 	RETURNS boolean
+ 	AS 'MODULE_PATHNAME', 'accept_weak_input'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
+ 
+ --
+ -- isn_weak() - Gets the weak input mode status
+ --
+ CREATE FUNCTION isn_weak()
+ 	RETURNS boolean
+ 	AS 'MODULE_PATHNAME', 'weak_input_status'
+ 	LANGUAGE C
+ 	IMMUTABLE STRICT;
diff --git a/contrib/isn/isn.c index 49d088f..233d7ee 100644
*** a/contrib/isn/isn.c
--- b/contrib/isn/isn.c
***************
*** 16,21 ****
--- 16,23 ----
  
  #include "fmgr.h"
  #include "utils/builtins.h"
+ #include "lib/stringinfo.h"
+ #include "libpq/pqformat.h"
  
  #include "isn.h"
  #include "EAN13.h"
***************
*** 1037,1042 **** upc_in(PG_FUNCTION_ARGS)
--- 1039,1067 ----
  	PG_RETURN_EAN13(result);
  }
  
+ /* binary I/O functions
+ */
+ PG_FUNCTION_INFO_V1(ean13_recv);
+ Datum
+ ean13_recv(PG_FUNCTION_ARGS)
+ {
+ 	StringInfo      buf = (StringInfo) PG_GETARG_POINTER(0);
+ 
+ 	PG_RETURN_EAN13((ean13) pq_getmsgint64(buf));
+ }
+ 
+ PG_FUNCTION_INFO_V1(ean13_send);
+ Datum
+ ean13_send(PG_FUNCTION_ARGS)
+ {
+ 	ean13 val = PG_GETARG_EAN13(0);
+ 	StringInfoData buf;
+ 
+ 	pq_begintypsend(&buf);
+ 	pq_sendint64(&buf, val);
+ 	PG_RETURN_BYTEA_P(pq_endtypsend(&buf));
+ }
+ 
  /* casting functions
  */
  PG_FUNCTION_INFO_V1(isbn_cast_from_ean13);
diff --git a/contrib/isnindex cf0b2eb..544bd8d 100644
*** a/contrib/isn/isn.control
--- b/contrib/isn/isn.control
***************
*** 1,5 ****
  # isn extension
  comment = 'data types for international product numbering standards'
! default_version = '1.0'
  module_pathname = '$libdir/isn'
  relocatable = true
--- 1,5 ----
  # isn extension
  comment = 'data types for international product numbering standards'
! default_version = '1.1'
  module_pathname = '$libdir/isn'
  relocatable = true



-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic