summaryrefslogtreecommitdiff
path: root/contrib/odbc
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2000-09-18 20:11:37 +0000
committerPeter Eisentraut <peter_e@gmx.net>2000-09-18 20:11:37 +0000
commit2acdef186dda3ee4606f561446d2b825009fc2cf (patch)
treeeadcaa1126005cdad5ad311e76023d58bcea8b6a /contrib/odbc
parent7cce011178f9bccd2cc8700440e252d96cc4622b (diff)
downloadpostgresql-2acdef186dda3ee4606f561446d2b825009fc2cf.tar.gz
Move contrib/odbc/odbc.sql together with odbc driver, remove old files;
revise ODBC "installation instructions"; update some other outdated documentation; update contrib documentation
Diffstat (limited to 'contrib/odbc')
-rw-r--r--contrib/odbc/Makefile48
-rw-r--r--contrib/odbc/README.odbc38
-rw-r--r--contrib/odbc/odbc-pre7.source162
-rw-r--r--contrib/odbc/odbc.c403
-rw-r--r--contrib/odbc/odbc.sql145
5 files changed, 0 insertions, 796 deletions
diff --git a/contrib/odbc/Makefile b/contrib/odbc/Makefile
deleted file mode 100644
index e81f51f215..0000000000
--- a/contrib/odbc/Makefile
+++ /dev/null
@@ -1,48 +0,0 @@
-# ODBC extensions
-# Thomas Lockhart 2000-04-03
-
-subdir = contrib/odbc
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
-
-ifndef PGLIB
- PGLIB= .
-endif
-
-CFLAGS+= $(CFLAGS_SL)
-
-TARGETS_7= odbc.sql
-TARGETS_PRE7= odbc$(DLSUFFIX) odbc-pre7.sql
-
-TARGETS= $(TARGETS_7)
-
-CLEANFILES+= $(TARGETS) $(TARGETS_PRE7)
-
-all: $(TARGETS)
-
-install: all
-ifneq ($(filter odbc$(DLSUFFIX), $(TARGETS)),)
- -test -d $(PGLIB) || $(INSTALL) -d $(PGLIB)
- $(INSTALL) odbc$(DLSUFFIX) $(PGLIB)
-endif
-
-pre7:
- $(MAKE) TARGETS="$(TARGETS) $(TARGETS_PRE7)"
-
-install-pre7:
- $(MAKE) TARGETS="$(TARGETS) $(TARGETS_PRE7)" install
-
-odbc-pre7.sql: odbc-pre7.source odbc.sql
- rm -f $@; \
- cat $^ \
- | sed -e "s:_OBJWD_:$(PGLIB):g" \
- -e "s:_DLSUFFIX_:$(DLSUFFIX):g" \
- -e "s:float(15):float8:g" > $@
-
-%.sql: %.source
- rm -f $@; \
- sed -e "s:_OBJWD_:$(PGLIB):g" \
- -e "s:_DLSUFFIX_:$(DLSUFFIX):g" < $< > $@
-
-clean:
- rm -f $(TARGETS) *.o
diff --git a/contrib/odbc/README.odbc b/contrib/odbc/README.odbc
deleted file mode 100644
index c36f183c05..0000000000
--- a/contrib/odbc/README.odbc
+++ /dev/null
@@ -1,38 +0,0 @@
-This directory contains support functions for the ODBC driver
-supplied with PostgreSQL-7.0.
-
-To enable additional ODBC functions with PostgreSQL-7.0, simply
-execute the commands in odbc.sql:
-
-psql
-Welcome to psql, the PostgreSQL interactive terminal.
-
-Type: \copyright for distribution terms
- \h for help with SQL commands
- \? for help on internal slash commands
- \g or terminate with semicolon to execute query
- \q to quit
-
-postgres=# \i odbc.sql
-CREATE
-...
-
-
-To enable additional ODBC functions with versions of PostgreSQL
-prior to PostgreSQL-7.0 (e.g. PostgreSQL-6.5.3), build the shared
-library and SQL commands as follows:
-
-make pre7
-psql
-Welcome to psql, the PostgreSQL interactive terminal.
-
-Type: \copyright for distribution terms
- \h for help with SQL commands
- \? for help on internal slash commands
- \g or terminate with semicolon to execute query
- \q to quit
-
-postgres=# \i odbc-pre7.sql
-CREATE
-...
-
diff --git a/contrib/odbc/odbc-pre7.source b/contrib/odbc/odbc-pre7.source
deleted file mode 100644
index 4fa06c4264..0000000000
--- a/contrib/odbc/odbc-pre7.source
+++ /dev/null
@@ -1,162 +0,0 @@
--- 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
-);
-
-
-
-
diff --git a/contrib/odbc/odbc.c b/contrib/odbc/odbc.c
deleted file mode 100644
index 2a134ee488..0000000000
--- a/contrib/odbc/odbc.c
+++ /dev/null
@@ -1,403 +0,0 @@
-#include "postgres.h"
-
-#include <stdlib.h>
-#include <ctype.h>
-#include <errno.h>
-#include <float.h> /* faked on sunos4 */
-#include <math.h>
-#include <limits.h>
-
-#include "fmgr.h"
-#include "utils/timestamp.h"
-#include "utils/builtins.h"
-
-
-int4 ascii(text *string);
-text *ichar(int4 cvalue);
-text *repeat(text *string, int4 count);
-Interval *interval_mul(Interval *span1, float8 *arg2);
-float64 dasin(float64 arg1);
-float64 datan(float64 arg1);
-float64 datan2(float64 arg1, float64 arg2);
-float64 dcos(float64 arg1);
-float64 dcot(float64 arg1);
-float64 dsin(float64 arg1);
-float64 dtan(float64 arg1);
-float64 degrees(float64 arg1);
-float64 dpi(void);
-float64 radians(float64 arg1);
-float64 drandom(void);
-void setseed(int32 seed);
-
-
-int4
-ascii(text *string)
-{
- if (!PointerIsValid(string))
- return 0;
-
- if (VARSIZE(string) <= VARHDRSZ)
- return 0;
-
- return ((int) *(VARDATA(string)));
-} /* ascii() */
-
-
-text *
-ichar(int4 cvalue)
-{
- text *result;
-
- result = (text *) palloc(VARHDRSZ + 1);
- VARSIZE(result) = VARHDRSZ + 1;
- *VARDATA(result) = (char) cvalue;
-
- return result;
-} /* ichar() */
-
-
-text *
-repeat(text *string, int4 count)
-{
- text *result;
- int slen, tlen;
- int i;
- char *cp;
-
- if (count < 0)
- count = 0;
-
- slen = (VARSIZE(string)-VARHDRSZ);
- tlen = (VARHDRSZ + (count * slen));
-
- result = (text *) palloc(tlen);
-
- VARSIZE(result) = tlen;
- cp = VARDATA(result);
- for (i = 0; i < count; i++)
- {
- memcpy(cp, VARDATA(string), slen);
- cp += slen;
- }
-
- return result;
-} /* ichar() */
-
-Interval *
-interval_mul(Interval *span1, float8 *arg2)
-{
- Interval *result;
- double months;
-
- if ((!PointerIsValid(span1)) || (!PointerIsValid(arg2)))
- return NULL;
-
- if (!PointerIsValid(result = palloc(sizeof(Interval))))
- elog(ERROR, "Memory allocation failed, can't divide intervals");
-
- months = (span1->month * *arg2);
- result->month = rint(months);
- result->time = JROUND(span1->time * *arg2);
- result->time += JROUND((months - result->month) * 30);
-
- return result;
-} /* interval_mul() */
-
-/*
- * dasin - returns a pointer to the arcsin of arg1 (radians)
- */
-float64
-dasin(float64 arg1)
-{
- float64 result;
- double tmp;
-
- if (!PointerIsValid(arg1))
- return (float64) NULL;
-
- result = (float64) palloc(sizeof(float64data));
-
- tmp = *arg1;
- errno = 0;
- *result = (float64data) asin(tmp);
- if (errno != 0
-#ifdef HAVE_FINITE
- || !finite(*result)
-#endif
- )
- elog(ERROR, "dasin(%f) input is out of range", *arg1);
-
- CheckFloat8Val(*result);
- return result;
-} /* dasin() */
-
-
-/*
- * datan - returns a pointer to the arctan of arg1 (radians)
- */
-float64
-datan(float64 arg1)
-{
- float64 result;
- double tmp;
-
- if (!PointerIsValid(arg1))
- return (float64) NULL;
-
- result = (float64) palloc(sizeof(float64data));
-
- tmp = *arg1;
- errno = 0;
- *result = (float64data) atan(tmp);
- if (errno != 0
-#ifdef HAVE_FINITE
- || !finite(*result)
-#endif
- )
- elog(ERROR, "atan(%f) input is out of range", *arg1);
-
- CheckFloat8Val(*result);
- return result;
-} /* datan() */
-
-
-/*
- * atan2 - returns a pointer to the arctan2 of arg1 (radians)
- */
-float64
-datan2(float64 arg1, float64 arg2)
-{
- float64 result;
-
- if (!PointerIsValid(arg1) || !PointerIsValid(arg1))
- return (float64) NULL;
-
- result = (float64) palloc(sizeof(float64data));
-
- errno = 0;
- *result = (float64data) atan2(*arg1, *arg2);
- if (errno != 0
-#ifdef HAVE_FINITE
- || !finite(*result)
-#endif
- )
- elog(ERROR, "atan2(%f,%f) input is out of range", *arg1, *arg2);
-
- CheckFloat8Val(*result);
- return result;
-} /* datan2() */
-
-
-/*
- * dcos - returns a pointer to the cosine of arg1 (radians)
- */
-float64
-dcos(float64 arg1)
-{
- float64 result;
- double tmp;
-
- if (!PointerIsValid(arg1))
- return (float64) NULL;
-
- result = (float64) palloc(sizeof(float64data));
-
- tmp = *arg1;
- errno = 0;
- *result = (float64data) cos(tmp);
- if (errno != 0
-#ifdef HAVE_FINITE
- || !finite(*result)
-#endif
- )
- elog(ERROR, "dcos(%f) input is out of range", *arg1);
-
- CheckFloat8Val(*result);
- return result;
-} /* dcos() */
-
-
-/*
- * dcot - returns a pointer to the cotangent of arg1 (radians)
- */
-float64
-dcot(float64 arg1)
-{
- float64 result;
- double tmp;
-
- if (!PointerIsValid(arg1))
- return (float64) NULL;
-
- result = (float64) palloc(sizeof(float64data));
-
- tmp = *arg1;
- errno = 0;
- *result = (float64data) tan(tmp);
- if ((errno != 0) || (*result == 0.0)
-#ifdef HAVE_FINITE
- || !finite(*result)
-#endif
- )
- elog(ERROR, "dcot(%f) input is out of range", *arg1);
-
- *result = 1.0/(*result);
- CheckFloat8Val(*result);
- return result;
-} /* dcot() */
-
-
-/*
- * dsin - returns a pointer to the sine of arg1 (radians)
- */
-float64
-dsin(float64 arg1)
-{
- float64 result;
- double tmp;
-
- if (!PointerIsValid(arg1))
- return (float64) NULL;
-
- result = (float64) palloc(sizeof(float64data));
-
- tmp = *arg1;
- errno = 0;
- *result = (float64data) sin(tmp);
- if (errno != 0
-#ifdef HAVE_FINITE
- || !finite(*result)
-#endif
- )
- elog(ERROR, "dsin(%f) input is out of range", *arg1);
-
- CheckFloat8Val(*result);
- return result;
-} /* dsin() */
-
-
-/*
- * dtan - returns a pointer to the tangent of arg1 (radians)
- */
-float64
-dtan(float64 arg1)
-{
- float64 result;
- double tmp;
-
- if (!PointerIsValid(arg1))
- return (float64) NULL;
-
- result = (float64) palloc(sizeof(float64data));
-
- tmp = *arg1;
- errno = 0;
- *result = (float64data) tan(tmp);
- if (errno != 0
-#ifdef HAVE_FINITE
- || !finite(*result)
-#endif
- )
- elog(ERROR, "dtan(%f) input is out of range", *arg1);
-
- CheckFloat8Val(*result);
- return result;
-} /* dtan() */
-
-
-#ifndef M_PI
-/* from my RH5.2 gcc math.h file - thomas 2000-04-03 */
-#define M_PI 3.14159265358979323846
-#endif
-
-
-/*
- * degrees - returns a pointer to degrees converted from radians
- */
-float64
-degrees(float64 arg1)
-{
- float64 result;
-
- if (!arg1)
- return (float64) NULL;
-
- result = (float64) palloc(sizeof(float64data));
-
- *result = ((*arg1) * (180.0 / M_PI));
-
- CheckFloat8Val(*result);
- return result;
-} /* degrees() */
-
-
-/*
- * dpi - returns a pointer to degrees converted to radians
- */
-float64
-dpi(void)
-{
- float64 result;
-
- result = (float64) palloc(sizeof(float64data));
-
- *result = (M_PI);
-
- return result;
-} /* dpi() */
-
-
-/*
- * radians - returns a pointer to radians converted from degrees
- */
-float64
-radians(float64 arg1)
-{
- float64 result;
-
- if (!arg1)
- return (float64) NULL;
-
- result = (float64) palloc(sizeof(float64data));
-
- *result = ((*arg1) * (M_PI / 180.0));
-
- CheckFloat8Val(*result);
- return result;
-} /* radians() */
-
-
-#ifdef RAND_MAX
-
-/*
- * drandom - returns a random number
- */
-float64
-drandom(void)
-{
- float64 result;
-
- result = (float64) palloc(sizeof(float64data));
-
- /* result 0.0-1.0 */
- *result = (((double)rand()) / RAND_MAX);
-
- CheckFloat8Val(*result);
- return result;
-} /* drandom() */
-
-
-/*
- * setseed - set seed for the random number generator
- */
-void
-setseed(int32 seed)
-{
- srand(seed);
-
- return;
-} /* setseed() */
-
-#endif
-
-
diff --git a/contrib/odbc/odbc.sql b/contrib/odbc/odbc.sql
deleted file mode 100644
index bec7f486b4..0000000000
--- a/contrib/odbc/odbc.sql
+++ /dev/null
@@ -1,145 +0,0 @@
--- ODBC.sql
---
-
---
--- Character string manipulation
---
-
---
--- 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.
---
-
--- truncate on the left
-CREATE FUNCTION ltrunc(text, integer)
- RETURNS text
- AS 'SELECT substring($1 FROM 1 FOR $2)'
- LANGUAGE 'SQL';
-
--- truncate on the right
-CREATE FUNCTION rtrunc(text, integer)
- RETURNS text
- AS 'SELECT substring($1 FROM (char_length($1)-($2)+1) FOR $2)'
- LANGUAGE 'SQL';
-
-CREATE FUNCTION space(integer)
- RETURNS text
- AS 'SELECT lpad('''', $1, '' '')'
- LANGUAGE 'SQL';
-
---
--- Mathematical functions
---
-
-CREATE FUNCTION truncate(numeric,integer)
- RETURNS numeric
- AS 'SELECT trunc($1, $2)'
- LANGUAGE 'SQL';
-
---
--- Date/time functions for v7.0
---
-
-CREATE FUNCTION curdate()
- RETURNS date
- AS 'SELECT CAST(''now'' AS date)'
- LANGUAGE 'SQL';
-
-CREATE FUNCTION curtime()
- RETURNS time
- AS 'SELECT CAST(''now'' AS time)'
- LANGUAGE 'SQL';
-
-CREATE FUNCTION dayname(timestamp)
- RETURNS text
- AS 'SELECT to_char($1,''Day'')'
- LANGUAGE 'SQL';
-
-CREATE FUNCTION dayofmonth(timestamp)
- RETURNS integer
- AS 'SELECT CAST(date_part(''day'', $1) AS integer)'
- LANGUAGE 'SQL';
-
-CREATE FUNCTION dayofweek(timestamp)
- RETURNS integer
- AS 'SELECT ( CAST(date_part(''dow'', $1) AS integer) + 1)'
- LANGUAGE 'SQL';
-
-CREATE FUNCTION dayofyear(timestamp)
- RETURNS integer
- AS 'SELECT CAST(date_part(''doy'', $1) AS integer)'
- LANGUAGE 'SQL';
-
-CREATE FUNCTION hour(timestamp)
- RETURNS integer
- AS 'SELECT CAST(date_part(''hour'', $1) AS integer)'
- LANGUAGE 'SQL';
-
-CREATE FUNCTION minute(timestamp)
- RETURNS integer
- AS 'SELECT CAST(date_part(''minute'', $1) AS integer)'
- LANGUAGE 'SQL';
-
-CREATE FUNCTION odbc_month(timestamp)
- RETURNS integer
- AS 'SELECT CAST(date_part(''month'', $1) AS integer)'
- LANGUAGE 'SQL';
-
-CREATE FUNCTION monthname(timestamp)
- RETURNS text
- AS 'SELECT to_char($1, ''Month'')'
- LANGUAGE 'SQL';
-
-CREATE FUNCTION quarter(timestamp)
- RETURNS integer
- AS 'SELECT CAST(date_part(''quarter'', $1) AS integer)'
- LANGUAGE 'SQL';
-
-CREATE FUNCTION second(timestamp)
- RETURNS integer
- AS 'SELECT CAST(date_part(''second'', $1) AS integer)'
- LANGUAGE 'SQL';
-
-/*
--- The first argument is an integer constant denoting the units
--- of the second argument. Until we know the actual values, we
--- cannot implement these. - thomas 2000-04-11
-CREATE FUNCTION timestampadd(integer,integer,timestamp)
- RETURNS timestamp
- AS 'SELECT CAST(($3 + ($2 * $1)) AS timestamp)'
- LANGUAGE 'SQL';
-
-CREATE FUNCTION timestampdiff(integer,integer,timestamp)
- RETURNS timestamp
- AS 'SELECT CAST(($3 + ($2 * $1)) AS timestamp)'
- LANGUAGE 'SQL';
-*/
-
-CREATE FUNCTION week(timestamp)
- RETURNS integer
- AS 'SELECT CAST(date_part(''week'', $1) AS integer)'
- LANGUAGE 'SQL';
-
-CREATE FUNCTION year(timestamp)
- RETURNS integer
- AS 'SELECT CAST(date_part(''year'', $1) AS integer)'
- LANGUAGE 'SQL';
-
---
--- System functions.
---
-
-/*
-CREATE FUNCTION database()
- RETURNS text
- AS 'SELECT ...'
- LANGUAGE 'SQL';
-*/
-
-CREATE FUNCTION odbc_user()
- RETURNS text
- AS 'SELECT CAST(USER AS text)'
- LANGUAGE 'SQL';
-