diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2000-09-18 20:11:37 +0000 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2000-09-18 20:11:37 +0000 |
commit | 2acdef186dda3ee4606f561446d2b825009fc2cf (patch) | |
tree | eadcaa1126005cdad5ad311e76023d58bcea8b6a | |
parent | 7cce011178f9bccd2cc8700440e252d96cc4622b (diff) | |
download | postgresql-2acdef186dda3ee4606f561446d2b825009fc2cf.tar.gz postgresql-2acdef186dda3ee4606f561446d2b825009fc2cf.zip |
Move contrib/odbc/odbc.sql together with odbc driver, remove old files;
revise ODBC "installation instructions"; update some other outdated
documentation; update contrib documentation
-rw-r--r-- | contrib/Contrib.index | 82 | ||||
-rw-r--r-- | contrib/Makefile | 20 | ||||
-rw-r--r-- | contrib/README | 144 | ||||
-rw-r--r-- | contrib/mac/README.mac | 8 | ||||
-rw-r--r-- | contrib/odbc/Makefile | 48 | ||||
-rw-r--r-- | contrib/odbc/README.odbc | 38 | ||||
-rw-r--r-- | contrib/odbc/odbc-pre7.source | 162 | ||||
-rw-r--r-- | contrib/odbc/odbc.c | 403 | ||||
-rw-r--r-- | doc/src/sgml/ecpg.sgml | 15 | ||||
-rw-r--r-- | doc/src/sgml/geqo.sgml | 4 | ||||
-rw-r--r-- | doc/src/sgml/odbc.sgml | 629 | ||||
-rw-r--r-- | doc/src/sgml/page.sgml | 48 | ||||
-rw-r--r-- | src/interfaces/odbc/GNUmakefile | 16 | ||||
-rw-r--r-- | src/interfaces/odbc/odbc.sql (renamed from contrib/odbc/odbc.sql) | 12 |
14 files changed, 258 insertions, 1371 deletions
diff --git a/contrib/Contrib.index b/contrib/Contrib.index deleted file mode 100644 index fe183127ea3..00000000000 --- a/contrib/Contrib.index +++ /dev/null @@ -1,82 +0,0 @@ - -The PostgreSQL contrib: -~~~~~~~~~~~~~~~~~~~~~~ - -tips/apache_logging - - Getting Apache to log to PostgreSQL - by Terry Mackintosh <terry@terrym.com> - -array - - Array iterator functions - by Massimo Dal Zotto <dz@cs.unitn.it> - -earthdistance - - Operator for computing earth distance for two points - by Hal Snyder <hal@vailsys.com> - -findoidjoins - - Finds the joins used by oid columns by examining the actual - values in the oid columns and row oids. - by Bruce Momjian <root@candle.pha.pa.us> - -fulltextindex - - Full text indexing using triggers - by Maarten Boekhold <maartenb@dutepp0.et.tudelft.nl> - -isbn_issn - - PostgreSQL type extensions for ISBN (books) and ISSN (serials) - by Garrett A. Wollman <wollman@khavrinen.lcs.mit.edu> - -linux - - Start postgres back end system - by Thomas Lockhart <lockhart@alumni.caltech.edu> - -lo - - Large Object maintenance - by Peter Mount <peter@retep.org.uk> - -miscutil - - Postgres assert checking and various utility functions - by Dal Zotto <dz@cs.unitn.it> - -mSQL-interface - - mSQL API translation library - by Aldrin Leal <aldrin@americasnet.com> - -noupdate - - trigger to prevent updates on single columns - - -pg_dumplo - - Dump large objects - by Karel Zak <zakkr@zf.jcu.cz> - -soundex - - Prototype for soundex function - -spi - - A general trigger function autoinc() and so on. - -string - - C-like input/output conversion routines for strings - by Massimo Dal Zotto <dz@cs.unitn.it> - -tools - - Assorted developer tools - by Massimo Dal Zotto <dz@cs.unitn.it> - -unixdate - - Conversions from integer to datetime - by Thomas Lockhart <lockhart@alumni.caltech.edu> - -userlock - - User locks - by Massimo Dal Zotto <dz@cs.unitn.it> - -vacuumlo - - Remove orphaned large objects - by Peter T Mount <peter@retep.org.uk> - -pgbench - - TPC-B like benchmarking tool - by Tatsuo Ishii <t-ishii@sra.co.jp> diff --git a/contrib/Makefile b/contrib/Makefile index 411979e9eb8..a1adaa048cf 100644 --- a/contrib/Makefile +++ b/contrib/Makefile @@ -1,12 +1,8 @@ -# -# The PostgreSQL contrib tree Makefile -# -# $Header: /cvsroot/pgsql/contrib/Makefile,v 1.7 2000/07/16 14:50:29 petere Exp $ -# +# $Header: /cvsroot/pgsql/contrib/Makefile,v 1.8 2000/09/18 20:11:34 petere Exp $ subdir = contrib top_builddir = .. -include ../src/Makefile.global +include $(top_builddir)/src/Makefile.global WANTED_DIRS = array \ earthdistance \ @@ -16,6 +12,7 @@ WANTED_DIRS = array \ linux \ lo \ mSQL-interface \ + mac \ miscutil \ noupdate \ pg_dumplo \ @@ -27,19 +24,10 @@ WANTED_DIRS = array \ unixdate \ userlock \ vacuumlo - # odbc all install installdirs uninstall clean distclean maintainer-clean: for dir in $(WANTED_DIRS); do \ if [ -e $$dir/Makefile ]; then \ - $(MAKE) -C $$dir $@ ; \ + $(MAKE) -C $$dir $@; \ fi; \ done - -install: - for dir in $(WANTED_DIRS); do \ - if [ -e $$dir/Makefile ]; then \ - $(MAKE) -C $$dir $@ ; \ - fi; \ - done - $(INSTALL_DATA) Contrib.index $(docdir)/contrib diff --git a/contrib/README b/contrib/README index 23cfe8c4d29..0187c2ae5b6 100644 --- a/contrib/README +++ b/contrib/README @@ -1,81 +1,109 @@ +The PostgreSQL contrib tree +~~~~~~~~~~~~~~~~~~~~~~~~~~~ - The PostgreSQL contrib tree - ~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This subtree contains tools, modules, and examples that are not +maintained as part of the core PostgreSQL system, mainly because +they only address a limited audience or are too inelegant to be +sold as an official feature. That, however, does not preclude +their usefulness. - FIXME: - odbc - spi/preprocessor - tools +Each subdirectory contains a README file with information about the +module. Most items can be built with `gmake all' and installed +with `gmake install' in the usual fashion, after you have run the +`configure' script in the top-level directory. Some directories +supply new user-defined functions, operators, or types. After you +have installed the files you need to register the new entities in +the database system by running the commands in the supplied .sql +file. For example, - - the contrib contain is in the "Contrib.index" + $ psql -d dbname -f module.sql - - in each directory must be Makefile, possible Makefile template - is below this text, +See the PostgreSQL documentation for more information about this +procedure. --------- -# -# $Header: /cvsroot/pgsql/contrib/README,v 1.19 2000/06/19 13:52:59 momjian Exp $ -# -TOPDIR=../.. +Index: +------ -include ../Makefile.global +array - + Array iterator functions + by Massimo Dal Zotto <dz@cs.unitn.it> -NAME = some_name +earthdistance - + Operator for computing earth distance for two points + by Hal Snyder <hal@vailsys.com> -PROGRAM = -OBJS = $(NAME).o -DOCS = $(NAME).doc -SQLS = $(NAME).sql -BINS = -EXAMPLES= -MODS = $(NAME)$(DLSUFFIX) +findoidjoins - + Finds the joins used by oid columns by examining the actual + values in the oid columns and row oids. + by Bruce Momjian <pgman@candle.pha.pa.us> -CFLAGS += -I. $(CFLAGS_SL) +fulltextindex - + Full text indexing using triggers + by Maarten Boekhold <maartenb@dutepp0.et.tudelft.nl> -OTHER_CLEAN = $(SQLS) +isbn_issn - + PostgreSQL type extensions for ISBN (books) and ISSN (serials) + by Garrett A. Wollman <wollman@khavrinen.lcs.mit.edu> -all: $(MODS) $(SQLS) +linux - + Scripts for starting and stopping the PostgreSQL server on + a Linux system + by Thomas Lockhart <lockhart@alumni.caltech.edu> -%.sql: %.sql.in - $(SED) "s|MODULE_PATHNAME|$(CONTRIB_MODDIR)/$@|" < $< > $@ +lo - + Large Object maintenance + by Peter Mount <peter@retep.org.uk> +mSQL-interface - + mSQL API translation library + by Aldrin Leal <aldrin@americasnet.com> -install: install_doc install_sql install_mod install_bin install_example +mac - + Support functions for MAC address types + by Lawrence E. Rosenman <ler@lerctr.org> -install_doc: - for inst_file in $(DOCS); do \ - $(INSTALL) $(INSTL_LIB_OPTS) $$inst_file $(CONTRIB_DOCDIR); \ - done +miscutil - + PostgreSQL assert checking and various utility functions + by Massimo Dal Zotto <dz@cs.unitn.it> -install_sql: - for inst_file in $(SQLS); do \ - $(INSTALL) $(INSTL_LIB_OPTS) $$inst_file $(CONTRIB_SQLDIR); \ - done +noupdate - + trigger to prevent updates on single columns -install_mod: - for inst_file in $(MODS); do \ - $(INSTALL) $(INSTL_SHLIB_OPTS) $$inst_file $(CONTRIB_MODDIR); \ - done +pgbench - + TPC-B like benchmarking tool + by Tatsuo Ishii <t-ishii@sra.co.jp> -install_bin: - for inst_file in $(BINS); do \ - $(INSTALL) $(INSTL_EXE_OPTS) $$inst_file $(CONTRIB_BINDIR); \ - done +pg_dumplo - + Dump large objects + by Karel Zak <zakkr@zf.jcu.cz> -install_example: - for inst_file in $(EXAMPLES); do \ - $(INSTALL) $(INSTL_LIB_OPTS) $$inst_file $(CONTRIB_EXAMPLESDIR); \ - done +soundex - + Soundex function -depend dep: - $(CC) -MM -MG $(CFLAGS) *.c > depend +spi - + Various trigger functions, examples for using SPI. -clean: - $(RM) *~ $(OBJS) $(MODS) $(PROGRAM) depend $(OTHER_CLEAN) core log +string - + C-like input/output conversion routines for strings + by Massimo Dal Zotto <dz@cs.unitn.it> -ifeq (depend,$(wildcard depend)) -include depend -endif ------------ -
\ No newline at end of file +tips/apache_logging - + Getting Apache to log to PostgreSQL + by Terry Mackintosh <terry@terrym.com> + +tools - + Assorted developer tools + by Massimo Dal Zotto <dz@cs.unitn.it> + +unixdate - + Conversions from integer to datetime + by Thomas Lockhart <lockhart@alumni.caltech.edu> + +userlock - + User locks + by Massimo Dal Zotto <dz@cs.unitn.it> + +vacuumlo - + Remove orphaned large objects + by Peter T Mount <peter@retep.org.uk> diff --git a/contrib/mac/README.mac b/contrib/mac/README.mac new file mode 100644 index 00000000000..f68a5fafa48 --- /dev/null +++ b/contrib/mac/README.mac @@ -0,0 +1,8 @@ +This directory contains tools to create a mapping table from MAC +addresses (e.g., Ethernet hardware addresses) to human-readable +manufacturer strings. The `createoui' script builds the table +structure, `updateoui' obtains the current official mapping table +from the web site of the IEEE, converts it, and stores it in the +database, `dropoui' removes everything. Use the --help option to +get more usage information from the respective script. All three +use the psql program; any extra arguments will be passed to psql. diff --git a/contrib/odbc/Makefile b/contrib/odbc/Makefile deleted file mode 100644 index e81f51f215b..00000000000 --- 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 c36f183c054..00000000000 --- 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 4fa06c4264d..00000000000 --- 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 2a134ee488b..00000000000 --- 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/doc/src/sgml/ecpg.sgml b/doc/src/sgml/ecpg.sgml index fabf9bee397..8b3049c6ee7 100644 --- a/doc/src/sgml/ecpg.sgml +++ b/doc/src/sgml/ecpg.sgml @@ -1,5 +1,5 @@ <!-- -$Header: /cvsroot/pgsql/doc/src/sgml/ecpg.sgml,v 1.15 2000/08/23 05:59:01 thomas Exp $ +$Header: /cvsroot/pgsql/doc/src/sgml/ecpg.sgml,v 1.16 2000/09/18 20:11:36 petere Exp $ --> <chapter> @@ -31,9 +31,9 @@ $Header: /cvsroot/pgsql/doc/src/sgml/ecpg.sgml,v 1.15 2000/08/23 05:59:01 thomas <para> This describes an embedded <acronym>SQL</acronym> in <acronym>C</acronym> package for <productname>Postgres</productname>. - It is written by <ulink url="mailto:linus@epact.se">Linus Tolke</ulink> and <ulink url="mailto:meskes@debian.org">Michael Meskes</ulink>. + The package is installed with the <productname>Postgres</> distribution. <note> <para> @@ -504,17 +504,6 @@ struct sqlca </sect1> <sect1> - <title>Installation</title> - - <para> - Since version 0.5 <application>ecpg</application> is distributed - together with <productname>Postgres</productname>. So you - should get your precompiler, libraries and header files compiled and - installed by default as a part of your installation. - </para> - </sect1> - - <sect1> <title>For the Developer</title> <para> diff --git a/doc/src/sgml/geqo.sgml b/doc/src/sgml/geqo.sgml index 04b8def4ed1..10fc2d90e8f 100644 --- a/doc/src/sgml/geqo.sgml +++ b/doc/src/sgml/geqo.sgml @@ -1,5 +1,5 @@ <!-- -$Header: /cvsroot/pgsql/doc/src/sgml/geqo.sgml,v 1.11 2000/08/23 05:59:02 thomas Exp $ +$Header: /cvsroot/pgsql/doc/src/sgml/geqo.sgml,v 1.12 2000/09/18 20:11:37 petere Exp $ Genetic Optimizer --> @@ -233,7 +233,7 @@ P''(t) generation of descendants at a time t <sect1> <title>Future Implementation Tasks for - <productname>ame>Post</productname>ame> <acronym>GEQO</acronym></title> + <productname>PostgreSQL</> <acronym>GEQO</acronym></title> <sect2> <title>Basic Improvements</title> diff --git a/doc/src/sgml/odbc.sgml b/doc/src/sgml/odbc.sgml index a50f1f8bb59..b4d1826550a 100644 --- a/doc/src/sgml/odbc.sgml +++ b/doc/src/sgml/odbc.sgml @@ -1,5 +1,5 @@ <!-- -$Header: /cvsroot/pgsql/doc/src/sgml/Attic/odbc.sgml,v 1.16 2000/08/29 20:02:07 momjian Exp $ +$Header: /cvsroot/pgsql/doc/src/sgml/Attic/odbc.sgml,v 1.17 2000/09/18 20:11:37 petere Exp $ --> <chapter id="odbc"> @@ -70,496 +70,69 @@ $Header: /cvsroot/pgsql/doc/src/sgml/Attic/odbc.sgml,v 1.16 2000/08/29 20:02:07 same calls and the back end data source would look the same (to the Windows app). </para> - -<!-- - <para> - <ulink url="http://www.insightdist.com/">Insight Distributors</ulink> - provides active and ongoing - support for the core <productname>psqlODBC</productname> distribution. - They provide a - <ulink url="http://www.insightdist.com/psqlodbc/"><acronym>FAQ</acronym></ulink>, - ongoing development on the code base, and actively participate on the - <ulink url="mailto:interfaces@postgresql.org">interfaces mailing list</ulink>. - </para> ---> </sect1> <sect1> - <title><productname>Windows</productname> Applications</title> + <title>Installation</title> <para> - In the real world, differences in drivers and the level of - <acronym>ODBC</acronym> support - lessens the potential of <acronym>ODBC</acronym>: - - <itemizedlist spacing="compact" mark="bullet"> - <listitem> - <para> - Access, Delphi, and Visual Basic all support <acronym>ODBC</acronym> directly. - </para> - </listitem> - <listitem> - <para> - Under C++, such as Visual C++, - you can use the C++ <acronym>ODBC</acronym> <acronym>API</acronym>. - </para> - </listitem> - - <listitem> - <para> - In Visual C++, you can use the CRecordSet class, which wraps the - <acronym>ODBC</acronym> <acronym>API</acronym> - set within an MFC 4.2 class. This is the easiest route if you are doing - Windows C++ development under Windows NT. - </para> - </listitem> - </itemizedlist> + The first thing to note about the <productname>psqlODBC</> driver + (or any <acronym>ODBC</> driver) is that there must exist a + <firstterm>driver manager</> on the system where the + <acronym>ODBC</> driver is to be used. There exists a free + <acronym>ODBC</> driver for Unix called <productname>iODBC</> + which can be obtained via <ulink + url="http://www.iodbc.org">http://www.iodbc.org</ulink>. + Instructions for installing <productname>iODBC</> are contained in + the <productname>iODBC</> distribution. Having said that, any + driver manager that you can find for your platform should support + the <productname>psqlODBC</> driver, or any other <acronym>ODBC</> + driver for that matter. </para> - <sect2> - <title>Writing Applications</title> - - <para> - <quote> - If I write an application for <productname>Postgres</productname> - can I write it using <acronym>ODBC</acronym> calls - to the <productname>Postgres</productname> server, - or is that only when another database program - like MS SQL Server or Access needs to access the data? - </quote> - </para> - <para> - The <acronym>ODBC</acronym> <acronym>API</acronym> - is the way to go. - For <productname>Visual C++</productname> coding you can find out more at - Microsoft's web site or in your <productname>VC++</productname> docs. - </para> - - <para> - Visual Basic and the other RAD tools have Recordset objects - that use <acronym>ODBC</acronym> - directly to access data. Using the data-aware controls, you can quickly - link to the <acronym>ODBC</acronym> back end database - (<emphasis>very</emphasis> quickly). - </para> - - <para> - Playing around with MS Access will help you sort this out. Try using - <literal>File->Get External Data</literal>. - </para> - - <tip> - <para> - You'll have to set up a DSN first. - </para> - </tip> - - <!-- - <Para> - <Tip> - <Para> - The <productname>Postgres</productname> datetime type will break MS Access. - </Para> - </Tip> - --> - </sect2> - </sect1> + <para> + To install <productname>psqlODBC</> you simply need to supply the + <option>--enable-odbc</> option to the <filename>configure</> script when you are + building the entire <productname>PostgreSQL</> distribution. The library + and header files will then automatically be built and installed with the + rest of the programs. If you forget that option or want to build the ODBC + driver later you can change into the directory <filename>src/interfaces/odbc</> + and do <literal>make</> and <literal>make install</> there. + </para> - <sect1> - <title>Unix Installation</title> + <para> + The installation-wide configuration file <filename>odbcinst.ini</> will be + installed into the directory <filename>/usr/local/pgsql/etc/</>, or equivalent, + depending on what <option>--prefix</> and/or <option>--sysconfdir</> options + you supplied to <filename>configure</>. Since this file can also be shared + between different <acronym>ODBC</> drivers you can also install it in a shared + location. To do that, override the location of this file with the + <option>--with-odbcinst</> option. + </para> <para> - <productname>ApplixWare</productname> has an - <acronym>ODBC</acronym> database interface - supported on at least some platforms. - <productname>ApplixWare</productname> v4.4.2 has been - demonstrated under Linux with <productname>Postgres</productname> v7.0 - using the <productname>psqlODBC</productname> - driver contained in the <productname>Postgres</productname> distribution. + Additionally, you should install the ODBC catalog extensions. That will + provide a number of functions mandated by the ODBC standard that are not + supplied by <productname>PostgreSQL</> by default. The file + <filename>/usr/local/pgsql/share/odbc.sql</> (in the default installation layout) + contains the appropriate definitions, which you can install as follows: +<programlisting> +psql -d template1 -f <replaceable>LOCATION</>/odbc.sql +</programlisting> + where specifying <literal>template1</literal> as the target + database will ensure that all subsequent new databases will + have these same definitions. </para> <sect2> - <title>Building the Driver</title> - - <para> - The first thing - to note about the <productname>psqlODBC</productname> driver - (or any <acronym>ODBC</acronym> driver) is that there must - exist a driver manager on the system where - the <acronym>ODBC</acronym> driver is to be - used. There exists a freeware <acronym>ODBC</acronym> driver for Unix - called <productname>iodbc</productname> which - can be obtained from various locations on the Net, including at - <ulink url="http://www.as220.org/FreeODBC/iodbc-2.12.shar.Z">AS200</ulink>. - Instructions for installing <productname>iodbc</productname> - are beyond the scope of this - document, but there is a <filename>README</filename> - that can be found inside the <productname>iodbc</productname> compressed - .shar file that should explain how to get it up and running. - </para> - - <para> - Having said that, any driver manager that you can find for your platform - should support the <productname>psqlODBC</productname> driver - or any <acronym>ODBC</acronym> driver. - </para> - - <para> - The Unix configuration files for <productname>psqlODBC</productname> - have recently been extensively - reworked to allow for easy building on supported platforms as - well as to allow for support of other Unix platforms in the future. - The new configuration and build files for the driver should make it - a simple process to build the driver on the supported platforms. Currently - these include Linux and FreeBSD but we are hoping other users will - contribute the necessary information to quickly expand the number of - platforms for which the driver can be built. - </para> - - <para> - There are actually two separate methods to build the driver depending on - how you received it and these differences come down to only where and how to - run <application>configure</application> and <application>make</application>. - The driver can be built in a standalone, client-only installation, or can be - built as a part of the main <productname>Postgres</productname> distribution. - The standalone installation is convenient if you have <acronym>ODBC</acronym> - client applications on multiple, heterogeneous platforms. The integrated - installation is convenient when the target client is the same as the - server, or when the client and server have similar runtime configurations. - </para> - - <para> - Specifically if you have received the <productname>psqlODBC</productname> - driver as part of the <productname>Postgres</productname> distribution - (from now on referred to as an "integrated" build) then you will - configure and make the <acronym>ODBC</acronym> driver - from the top level source directory - of the <productname>Postgres</productname> distribution - along with the rest of its libraries. - If you received the driver as a standalone package than you will run - configure and make from the directory in which you unpacked the - driver source. - </para> - - <procedure> - <title>Integrated Installation</title> - - <para> - This installation procedure is appropriate for an integrated installation. - </para> - - <step performance="required"> - <para> - Specify the <option>--with-odbc</option> - command-line argument for <application>src/configure</application>: - - <programlisting> -% ./configure --with-odbc -% make - </programlisting> - </para> - </step> - - <step performance="required"> - <para> - Rebuild the <productname>Postgres</productname> distribution: - - <programlisting> -% make install - </programlisting> - </para> - </step> - - <step performance="optional"> - <para> - Install the ODBC catalog extensions available in - <filename>PGROOT/contrib/odbc/odbc.sql</filename>: - - <programlisting> -% psql -e template1 < $PGROOT/contrib/odbc/odbc.sql - </programlisting> - - where specifying <literal>template1</literal> as the target - database will ensure that all subsequent new databases will - have these same definitions. - </para> - </step> - </procedure> - + <title>Supported Platforms</title> <para> - Once configured, the <acronym>ODBC</acronym> driver will be built and installed - into the areas defined for the other components of the - <productname>Postgres</productname> system. The installation-wide - <acronym>ODBC</acronym> configuration file will be placed into - the top directory of the Postgres target tree (<envar>POSTGRESDIR</envar>). - This can be overridden from the <application>make</application> command-line - as - <programlisting> -% make ODBCINST=<replaceable>filename</replaceable> install - </programlisting> + <productname>psqlODBC</productname> has been built and tested + on <productname>Linux</productname>. There have been reports of success + with FreeBSD and with Solaris. There are no known restrictions + on the basic code for other platforms which already support + <productname>Postgres</productname>. </para> - - <procedure> - <title>Pre-v6.4 Integrated Installation</title> - - <para> - If you have a <productname>Postgres</productname> installation older than - v6.4, you have the original source tree available, - and you want to use the newest version of the <acronym>ODBC</acronym> - driver, then you may want to try this form of installation. - </para> - - <step performance="required"> - <para> - Copy the output tar file to your target system and unpack it into a - clean directory. - </para> - </step> - <step performance="required"> - <para> - From the directory containing the - sources, type: - - <programlisting> -% ./configure -% make -% make POSTGRESDIR=<replaceable class="parameter">PostgresTopDir</replaceable> install - </programlisting> - </para> - </step> - - <step performance="optional"> - <para> - If you would like to install components into different trees, - then you can specify various destinations explicitly: - - <programlisting> -% make BINDIR=bindir LIBDIR=libdir HEADERDIR=headerdir ODBCINST=instfile install - </programlisting> - </para> - </step> - </procedure> - - <procedure> - <title>Standalone Installation</title> - - <para> - A standalone installation is not integrated with or built on the normal - <productname>Postgres</productname> distribution. It should be best suited - for building the <acronym>ODBC</acronym> driver for multiple, heterogeneous - clients who do not have a locally-installed <productname>Postgres</productname> - source tree. - </para> - - <para> - The default location for libraries and headers - for the standalone installation is <filename>/usr/local/lib</filename> - and <filename>/usr/local/include/iodbc</filename>, respectively. - There is another system wide configuration file that gets installed - as <filename>/share/odbcinst.ini</filename> (if <filename>/share</filename> - exists) or as <filename>/etc/odbcinst.ini</filename> - (if <filename>/share</filename> does not exist). - </para> - - <note> - <para> - Installation of files into <filename>/share</filename> - or <filename>/etc</filename> requires system root privileges. - Most installation steps for <productname>Postgres</productname> do not - have this requirement, and you can choose another destination which - is writable by your non-root <productname>Postgres</productname> superuser - account instead. - </para> - </note> - - <step performance="required"> - <para> - The standalone installation distribution can be built from the - <productname>Postgres</productname> distribution or may be obtained from - <ulink url="http://www.insightdist.com/psqlodbc">Insight Distributors</ulink>, - the current maintainers of the non-Unix sources. - </para> - - <para> - Copy the zip - or gzipped tarfile to an empty directory. If using the zip package - unzip it with the command - <programlisting> -% unzip -a <replaceable>packagename</replaceable> - </programlisting> - - The <option>-a</option> option - is necessary to get rid of <acronym>DOS</acronym> - CR/LF pairs in the source files. - </para> - - <para> - If you have the gzipped tar package than simply run - - <programlisting> -% tar -xzf <replaceable>packagename</replaceable> - </programlisting> - </para> - - <substeps> - - <step performance="optional"> - <para> - To create a tar file for a complete standalone installation - from the main <productname>Postgres</productname> source tree: - </para> - </step> - </substeps> - </step> - <step performance="required"> - <para> - Configure the main <productname>Postgres</productname> distribution. - </para> - </step> - <step performance="required"> - <para> - Create the tar file: - - <programlisting> -% cd interfaces/odbc -% make standalone - </programlisting> - </para> - </step> - - <step performance="required"> - <para> - Copy the output tar file to your target system. Be sure to transfer as - a binary file if using <application>ftp</application>. - </para> - </step> - - <step performance="required"> - <para> - Unpack the tar file into a clean - directory. - </para> - </step> - - <step performance="required"> - <para> - Configure the standalone installation: - - <programlisting> -% ./configure - </programlisting> - </para> - - <para> - The configuration can be done with options: - - <programlisting> -% ./configure --prefix=<replaceable>rootdir</replaceable> --with-odbc=<replaceable>inidir</replaceable> - </programlisting> - - where <option>--prefix</option> installs the libraries and headers in - the directories <filename><replaceable>rootdir</replaceable>/lib</filename> and - <filename><replaceable>rootdir</replaceable>/include/iodbc</filename>, and - <option>--with-odbc</option> installs <filename>odbcinst.ini</filename> in the - specified directory. - </para> - - <para> - Note that both of these options can also be used from the integrated build - but be aware that <emphasis>when used in the integrated build</emphasis> - <option>--prefix</option> will also apply to the rest of - your <productname>Postgres</productname> installation. - <option>--with-odbc</option> applies only to the configuration file - <filename>odbcinst.ini</filename>. - </para> - </step> - - <step performance="required"> - <para> - Compile and link the source code: - - <programlisting> -% make ODBCINST=<replaceable>instdir</replaceable> - </programlisting> - </para> - - <para> - You can also override the default location for installation on the - 'make' command line. This only applies to the installation of the - library and header files. Since the driver needs to know the location - of the odbcinst.ini file attempting to override the enviroment variable - that specifies its installation directory will probably cause you - headaches. It is safest simply to allow the driver to install the - odbcinst.ini file in the default directory or the directory you specified - on the './configure' command line with --with-odbc. - </para> - </step> - - <!-- - This doesn't currently work - thomas 1998-10-19 - <tip> - <para> - <envar>ODBCINST</envar> can be specified during configuration or during - the compilation. It is not necessary to do so in both steps. - </tip> - --> - - <step performance="required"> - <para> - Install the source code: - - <programlisting> -% make POSTGRESDIR=<replaceable>targettree</replaceable> install - </programlisting> - </para> - - <para> - To override the library and header installation directories separately - you need to pass the correct installation variables on the - <literal>make install</literal> command line. These variables are - <envar>LIBDIR</envar>, <envar>HEADERDIR</envar> - and <envar>ODBCINST</envar>. - Overriding <envar>POSTGRESDIR</envar> on the make command line will cause - <envar>LIBDIR</envar> and <envar>HEADERDIR</envar> - to be rooted at the new directory you specify. - <envar>ODBCINST</envar> is independent of <envar>POSTGRESDIR</envar>. - </para> - - <para> - Here is how you would specify the various destinations explicitly: - - <programlisting> -% make BINDIR=<replaceable>bindir</replaceable> LIBDIR=<replaceable>libdir</replaceable> HEADERDIR=<replaceable>headerdir</replaceable> install - </programlisting> - </para> - - <para> - For example, typing - - <programlisting> -% make POSTGRESDIR=/opt/psqlodbc install - </programlisting> - - (after you've used - <application>./configure</application> and <application>make</application>) - will cause the libraries and headers to be installed in the directories - <filename>/opt/psqlodbc/lib</filename> - and <filename>/opt/psqlodbc/include/iodbc</filename> respectively. - </para> - - <para> - The command - - <programlisting> -% make POSTGRESDIR=/opt/psqlodbc HEADERDIR=/usr/local install - </programlisting> - - should cause the libraries to be installed in /opt/psqlodbc/lib and - the headers in /usr/local/include/iodbc. If this doesn't work as - expected please contact one of the maintainers. - </para> - </step> - </procedure> </sect2> </sect1> @@ -584,7 +157,7 @@ $Header: /cvsroot/pgsql/doc/src/sgml/Attic/odbc.sgml,v 1.16 2000/08/29 20:02:07 <literal>[ODBC Data Sources]</literal> and must contain the following entries: <programlisting> -Driver = <replaceable>POSTGRESDIR</replaceable>/lib/libpsqlodbc.so +Driver = <replaceable>prefix</replaceable>/lib/libpsqlodbc.so Database=<replaceable>DatabaseName</replaceable> Servername=localhost Port=5432 @@ -648,8 +221,100 @@ InstallDir = /opt/applix/axdata/axshlib </sect1> <sect1> + <title><productname>Windows</productname> Applications</title> + + <para> + In the real world, differences in drivers and the level of + <acronym>ODBC</acronym> support + lessens the potential of <acronym>ODBC</acronym>: + + <itemizedlist spacing="compact" mark="bullet"> + <listitem> + <para> + Access, Delphi, and Visual Basic all support <acronym>ODBC</acronym> directly. + </para> + </listitem> + <listitem> + <para> + Under C++, such as Visual C++, + you can use the C++ <acronym>ODBC</acronym> <acronym>API</acronym>. + </para> + </listitem> + + <listitem> + <para> + In Visual C++, you can use the CRecordSet class, which wraps the + <acronym>ODBC</acronym> <acronym>API</acronym> + set within an MFC 4.2 class. This is the easiest route if you are doing + Windows C++ development under Windows NT. + </para> + </listitem> + </itemizedlist> + </para> + + <sect2> + <title>Writing Applications</title> + + <para> + <quote> + If I write an application for <productname>Postgres</productname> + can I write it using <acronym>ODBC</acronym> calls + to the <productname>Postgres</productname> server, + or is that only when another database program + like MS SQL Server or Access needs to access the data? + </quote> + </para> + <para> + The <acronym>ODBC</acronym> <acronym>API</acronym> + is the way to go. + For <productname>Visual C++</productname> coding you can find out more at + Microsoft's web site or in your <productname>VC++</productname> docs. + </para> + + <para> + Visual Basic and the other RAD tools have Recordset objects + that use <acronym>ODBC</acronym> + directly to access data. Using the data-aware controls, you can quickly + link to the <acronym>ODBC</acronym> back end database + (<emphasis>very</emphasis> quickly). + </para> + + <para> + Playing around with MS Access will help you sort this out. Try using + <literal>File->Get External Data</literal>. + </para> + + <tip> + <para> + You'll have to set up a DSN first. + </para> + </tip> + + <!-- + <Para> + <Tip> + <Para> + The <productname>Postgres</productname> datetime type will break MS Access. + </Para> + </Tip> + --> + </sect2> + </sect1> + + + <sect1> <title>ApplixWare</title> + <para> + <productname>ApplixWare</productname> has an + <acronym>ODBC</acronym> database interface + supported on at least some platforms. + <productname>ApplixWare</productname> 4.4.2 has been + demonstrated under Linux with <productname>Postgres</productname> 7.0 + using the <productname>psqlODBC</productname> + driver contained in the <productname>Postgres</productname> distribution. + </para> + <sect2> <title>Configuration</title> @@ -1089,17 +754,7 @@ endmacro </caution> </para> </sect2> - <sect2> - <title>Supported Platforms</title> - <para> - <productname>psqlODBC</productname> has been built and tested - on <productname>Linux</productname>. There have been reports of success - with FreeBSD and with Solaris. There are no known restrictions - on the basic code for other platforms which already support - <productname>Postgres</productname>. - </para> - </sect2> </sect1> </chapter> diff --git a/doc/src/sgml/page.sgml b/doc/src/sgml/page.sgml index 0e93f3e4c71..8817c3c290e 100644 --- a/doc/src/sgml/page.sgml +++ b/doc/src/sgml/page.sgml @@ -21,9 +21,6 @@ is assumed to contain 8 bits. In addition, the term refers to data which is stored in <productname>Postgres</productname> classes. </para> -<sect1> -<title>Page Structure</title> - <para> The following table shows how pages in both normal <productname>Postgres</productname> classes and <productname>Postgres</productname> index @@ -176,50 +173,5 @@ itemPointerData which points to the next piece and the piece itself. The last piece is handled normally. </para> -</sect1> - -<sect1> -<title>Files</title> - -<para> -<variablelist> -<varlistentry> -<term> -<filename>data/</filename> -</term> -<listitem> -<para> -Location of shared (global) database files. -</para> -</listitem> -</varlistentry> - -<varlistentry> -<term> -<filename>data/base/</filename> -</term> -<listitem> -<para> -Location of local database files. -</para> -</listitem> -</varlistentry> -</variablelist> -</para> -</sect1> - -<sect1> -<title>Bugs</title> - -<para> -The page format may change in the future to provide more efficient -access to large objects. -</para> - -<para> -This section contains insufficient detail to be of any assistance in -writing a new access method. -</para> -</sect1> </chapter> diff --git a/src/interfaces/odbc/GNUmakefile b/src/interfaces/odbc/GNUmakefile index 81c16387ca9..a51f71899ac 100644 --- a/src/interfaces/odbc/GNUmakefile +++ b/src/interfaces/odbc/GNUmakefile @@ -2,7 +2,7 @@ # # GNUMakefile for psqlodbc (Postgres ODBC driver) # -# $Header: /cvsroot/pgsql/src/interfaces/odbc/Attic/GNUmakefile,v 1.3 2000/09/17 13:02:51 petere Exp $ +# $Header: /cvsroot/pgsql/src/interfaces/odbc/Attic/GNUmakefile,v 1.4 2000/09/18 20:11:37 petere Exp $ # #------------------------------------------------------------------------- @@ -35,21 +35,27 @@ LDFLAGS_SL+= $(LDFLAGS_ODBC) odbc_headers = isql.h isqlext.h iodbc.h odbc_includedir = $(includedir)/iodbc -install: all installdirs install-headers install-ini install-lib +install: all installdirs install-headers install-ini install-lib install-data installdirs: - $(mkinstalldirs) $(DESTDIR)$(odbc_includedir) $(DESTDIR)$(libdir) $(DESTDIR)$(odbcinst_ini_dir) + $(mkinstalldirs) $(DESTDIR)$(odbc_includedir) $(DESTDIR)$(libdir) $(DESTDIR)$(odbcinst_ini_dir) $(DESTDIR)$(datadir) .PHONY: install-headers install-headers: $(odbc_headers) - for i in $^; do $(INSTALL_DATA) $$i $(DESTDIR)$(odbc_includedir) || exit 1; done + for i in $^; do $(INSTALL_DATA) $$i $(DESTDIR)$(odbc_includedir)/$$i || exit 1; done .PHONY: install-ini install-ini: odbcinst.ini - $(INSTALL_DATA) $< $(DESTDIR)$(odbcinst_ini_dir) + $(INSTALL_DATA) $< $(DESTDIR)$(odbcinst_ini_dir)/$< + +.PHONY: install-data +install-data: odbc.sql + $(INSTALL_DATA) $< $(DESTDIR)$(datadir)/$< uninstall: uninstall-lib rm -f $(addprefix $(DESTDIR)$(odbc_includedir)/, $(odbc_headers)) + rm -f $(DESTDIR)$(datadir)/odbc.sql +# XXX Uninstall the .ini file as well? clean distclean maintainer-clean: clean-lib rm -f $(OBJS) diff --git a/contrib/odbc/odbc.sql b/src/interfaces/odbc/odbc.sql index bec7f486b4f..f4e593d329a 100644 --- a/contrib/odbc/odbc.sql +++ b/src/interfaces/odbc/odbc.sql @@ -1,16 +1,11 @@ --- ODBC.sql --- +-- PostgreSQL catalog extensions for ODBC compliance +-- $Header: /cvsroot/pgsql/src/interfaces/odbc/Attic/odbc.sql,v 1.1 2000/09/18 20:11:37 petere Exp $ --- --- 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) @@ -142,4 +137,3 @@ CREATE FUNCTION odbc_user() RETURNS text AS 'SELECT CAST(USER AS text)' LANGUAGE 'SQL'; - |