
Includes compiled code to support pre-7.0 backends, but for 7.0 only requires executing odbc.sql.
163 lines
3.4 KiB
Plaintext
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
|
|
);
|
|
|
|
|
|
|
|
|