--------------------------------------------------------------------------- -- -- int8.sql- -- This file defines operators for 64-bit integers. -- --------------------------------------------------------------------------- LOAD '_OBJWD_/int8.so'; CREATE FUNCTION int8in(opaque) RETURNS int8 AS '_OBJWD_/int8.so' LANGUAGE 'c'; CREATE FUNCTION int8out(opaque) RETURNS opaque AS '_OBJWD_/int8.so' LANGUAGE 'c'; CREATE TYPE int8 ( internallength = 8, input = int8in, output = int8out ); ----------------------------- -- Create operators ----------------------------- CREATE FUNCTION int8um(int8) RETURNS int8 AS '_OBJWD_/int8.so' LANGUAGE 'c'; CREATE OPERATOR - ( rightarg = int8, procedure = int8um ); CREATE FUNCTION int8pl(int8,int8) RETURNS int8 AS '_OBJWD_/int8.so' LANGUAGE 'c'; CREATE OPERATOR + ( leftarg = int8, rightarg = int8, procedure = int8pl, commutator = + ); CREATE FUNCTION int8mi(int8,int8) RETURNS int8 AS '_OBJWD_/int8.so' LANGUAGE 'c'; CREATE OPERATOR - ( leftarg = int8, rightarg = int8, procedure = int8mi ); CREATE FUNCTION int8mul(int8,int8) RETURNS int8 AS '_OBJWD_/int8.so' LANGUAGE 'c'; CREATE OPERATOR * ( leftarg = int8, rightarg = int8, procedure = int8mul, commutator = * ); CREATE FUNCTION int8div(int8,int8) RETURNS int8 AS '_OBJWD_/int8.so' LANGUAGE 'c'; CREATE OPERATOR / ( leftarg = int8, rightarg = int8, procedure = int8div ); -- -- 64-bit comparison operators -- CREATE FUNCTION int8eq(int8,int8) RETURNS bool AS '_OBJWD_/int8.so' LANGUAGE 'c'; CREATE OPERATOR = ( leftarg = int8, rightarg = int8, procedure = int8eq, commutator = = ); CREATE FUNCTION int8ne(int8,int8) RETURNS bool AS '_OBJWD_/int8.so' LANGUAGE 'c'; CREATE OPERATOR <> ( leftarg = int8, rightarg = int8, procedure = int8ne, commutator = <> ); CREATE FUNCTION int8lt(int8,int8) RETURNS bool AS '_OBJWD_/int8.so' LANGUAGE 'c'; CREATE OPERATOR < ( leftarg = int8, rightarg = int8, procedure = int8lt ); CREATE FUNCTION int8gt(int8,int8) RETURNS bool AS '_OBJWD_/int8.so' LANGUAGE 'c'; CREATE OPERATOR > ( leftarg = int8, rightarg = int8, procedure = int8gt ); CREATE FUNCTION int8le(int8,int8) RETURNS bool AS '_OBJWD_/int8.so' LANGUAGE 'c'; CREATE OPERATOR <= ( leftarg = int8, rightarg = int8, procedure = int8le ); CREATE FUNCTION int8ge(int8,int8) RETURNS bool AS '_OBJWD_/int8.so' LANGUAGE 'c'; CREATE OPERATOR >= ( leftarg = int8, rightarg = int8, procedure = int8ge ); -- -- 64-bit/32-bit comparison operators -- CREATE FUNCTION int84eq(int8,int4) RETURNS bool AS '_OBJWD_/int8.so' LANGUAGE 'c'; CREATE OPERATOR = ( leftarg = int8, rightarg = int4, procedure = int84eq, commutator = = ); CREATE FUNCTION int84ne(int8,int4) RETURNS bool AS '_OBJWD_/int8.so' LANGUAGE 'c'; CREATE OPERATOR <> ( leftarg = int8, rightarg = int4, procedure = int84ne, commutator = <> ); CREATE FUNCTION int84lt(int8,int4) RETURNS bool AS '_OBJWD_/int8.so' LANGUAGE 'c'; CREATE OPERATOR < ( leftarg = int8, rightarg = int4, procedure = int84lt ); CREATE FUNCTION int84gt(int8,int4) RETURNS bool AS '_OBJWD_/int8.so' LANGUAGE 'c'; CREATE OPERATOR > ( leftarg = int8, rightarg = int4, procedure = int84gt ); CREATE FUNCTION int84le(int8,int4) RETURNS bool AS '_OBJWD_/int8.so' LANGUAGE 'c'; CREATE OPERATOR <= ( leftarg = int8, rightarg = int4, procedure = int84le ); CREATE FUNCTION int84ge(int8,int4) RETURNS bool AS '_OBJWD_/int8.so' LANGUAGE 'c'; CREATE OPERATOR >= ( leftarg = int8, rightarg = int4, procedure = int84ge ); -- -- Conversion functions -- CREATE FUNCTION int48(int4) RETURNS int8 AS '_OBJWD_/int8.so' LANGUAGE 'c'; CREATE FUNCTION int84(int8) RETURNS int4 AS '_OBJWD_/int8.so' LANGUAGE 'c'; --CREATE FUNCTION int28(int2) -- RETURNS int8 -- AS '_OBJWD_/int8.so' -- LANGUAGE 'c'; -- --CREATE FUNCTION int82(int8) -- RETURNS int2 -- AS '_OBJWD_/int8.so' -- LANGUAGE 'c'; CREATE FUNCTION i8tod(int8) RETURNS float8 AS '_OBJWD_/int8.so' LANGUAGE 'c'; CREATE FUNCTION dtoi8(float8) RETURNS int8 AS '_OBJWD_/int8.so' LANGUAGE 'c'; -- -- Generic conversion routines -- CREATE FUNCTION int8(int4) RETURNS int8 AS 'select int48($1)' LANGUAGE 'sql'; CREATE FUNCTION int8(float8) RETURNS int8 AS 'select dtoi8($1)' LANGUAGE 'sql'; CREATE FUNCTION float8(int8) RETURNS float8 AS 'select i8tod($1)' LANGUAGE 'sql'; CREATE FUNCTION int4(int8) RETURNS int4 AS 'select int84($1)' LANGUAGE 'sql';