postgresql/contrib/odbc/odbc-pre7.source

163 lines
3.4 KiB
Plaintext

-- ODBC-pre7.sql
--
-- Use float8 rather than float(15) since pre-7.0 does not accept
-- SQL92 type names of this form in the CREATE FUNCTION command.
--
--
-- Character string manipulation
--
--
-- Compatibility functions for pre-v7.0.
-- These should be applied to pre-v7.0 databases
-- when using the v7.0 ODBC driver.
--
CREATE FUNCTION char_length(text)
RETURNS integer
AS 'SELECT length(CAST($1 AS text))'
LANGUAGE 'SQL';
CREATE FUNCTION pow(float8)
RETURNS float8
AS 'SELECT dpow($1)'
LANGUAGE 'SQL';
--
-- Extensions for ODBC compliance in v7.0.
-- In the current driver, ODBC functions must map directly into a
-- Postgres function. So in some cases we must create a compatible
-- function.
--
CREATE FUNCTION ascii(text)
RETURNS integer
AS '_OBJWD_/odbc_DLSUFFIX_', 'ascii'
LANGUAGE 'C';
CREATE FUNCTION ichar(integer)
RETURNS char(1)
AS '_OBJWD_/odbc_DLSUFFIX_', 'ichar'
LANGUAGE 'C';
CREATE FUNCTION insert(text, integer, integer, text)
RETURNS text
AS '_OBJWD_/odbc_DLSUFFIX_', 'insert'
LANGUAGE 'C';
-- replace all occurences of $2 with $3
CREATE FUNCTION replace(text, text, text)
RETURNS text
AS '_OBJWD_/odbc_DLSUFFIX_', 'replace'
LANGUAGE 'C';
-- return the string repeated n times
CREATE FUNCTION repeat(text, integer)
RETURNS text
AS '_OBJWD_/odbc_DLSUFFIX_', 'repeat'
LANGUAGE 'C';
--
-- Mathematical functions for pre-v7.0
--
CREATE FUNCTION dround(float8)
RETURNS float8
AS '_OBJWD_/odbc_DLSUFFIX_', 'dround'
LANGUAGE 'C';
CREATE FUNCTION round(float8)
RETURNS float8
AS 'SELECT dround($1)'
LANGUAGE 'SQL';
--
-- Math functions present in backend, but not in catalog for v7.0
--
CREATE FUNCTION acos(float8)
RETURNS float8
AS '_OBJWD_/odbc_DLSUFFIX_', 'dacos'
LANGUAGE 'C';
CREATE FUNCTION asin(float8)
RETURNS float8
AS '_OBJWD_/odbc_DLSUFFIX_', 'dasin'
LANGUAGE 'C';
CREATE FUNCTION atan(float8)
RETURNS float8
AS '_OBJWD_/odbc_DLSUFFIX_', 'datan'
LANGUAGE 'C';
CREATE FUNCTION atan2(float8,float8)
RETURNS float8
AS '_OBJWD_/odbc_DLSUFFIX_', 'datan2'
LANGUAGE 'C';
CREATE FUNCTION cos(float8)
RETURNS float8
AS '_OBJWD_/odbc_DLSUFFIX_', 'dcos'
LANGUAGE 'C';
CREATE FUNCTION cot(float8)
RETURNS float8
AS '_OBJWD_/odbc_DLSUFFIX_', 'dcot'
LANGUAGE 'C';
CREATE FUNCTION sin(float8)
RETURNS float8
AS '_OBJWD_/odbc_DLSUFFIX_', 'dsin'
LANGUAGE 'C';
CREATE FUNCTION dtan(float8)
RETURNS float8
AS '_OBJWD_/odbc_DLSUFFIX_', 'dtan'
LANGUAGE 'C';
CREATE FUNCTION degrees(float8)
RETURNS float8
AS '_OBJWD_/odbc_DLSUFFIX_', 'degrees'
LANGUAGE 'C';
CREATE FUNCTION pi()
RETURNS float8
AS '_OBJWD_/odbc_DLSUFFIX_', 'dpi'
LANGUAGE 'C';
CREATE FUNCTION radians(float8)
RETURNS float8
AS '_OBJWD_/odbc_DLSUFFIX_', 'radians'
LANGUAGE 'C';
-- random number generator currently requires RAND_MAX be available
CREATE FUNCTION random()
RETURNS float8
AS '_OBJWD_/odbc_DLSUFFIX_', 'drandom'
LANGUAGE 'C';
CREATE FUNCTION truncate(numeric,integer)
RETURNS numeric
AS 'SELECT trunc($1, $2)'
LANGUAGE 'SQL';
--
-- Date/time functions for v7.0
--
CREATE FUNCTION interval_mul(interval,float8)
RETURNS interval
AS '_OBJWD_/odbc_DLSUFFIX_'
LANGUAGE 'C';
CREATE OPERATOR * (
LEFTARG = interval,
RIGHTARG = float8,
PROCEDURE = interval_mul
);