0. Changes
a. I realized that a driver manager doesn't aware of
difference between a C5 (i.e. hstmt) and a C6
(i.e. transaction) states.
b. The link flags "-lc" has been removed from Linux ELF
section of Config.mk to fix a segment fault problem.
Now, it works fine on Slackware 2.3 and Red Hat 2.0
(kernel version are 1.2.xx and 1.3.xx respectively).
c. On FreeBSD 2.x, dlsym() doesn't handle the '_'
prepended before a exporting function symbol. So,
CLI_NAME_PREFIX needs to be defined as "_SQL" for
FreeBSD.
d. Some files are renamed
dld.c -> dlf.c
dld.h -> dlf.h
confg.h -> config.h
1. iODBC driver manager platform availability
iODBC driver manager has been ported to following Unix platforms:
SunOS 4.1.x Sun Sparc
HP/UX 9.x, 10.x HP9000 s700/s800
HP/UX 9.x HP9000 s300/s400
IBM AIX 3.x, 4.x IBM RS6000, PowerPC
Sun Solaris 2.x Sun Sparc, PCx86
SGI Irix SVR4 5.x, 6.x IP12 MIPS, IP22 MIPS
NCR SVR4 3.x NCR 3435
UnixWare SVR4.2 1.x, 2.x x86
DEC Unix(OSF/1) 3.x, 4.x DEC Alpha
FreeBSD 2.x x86
BSDI BSD/OS 2.x ?
Linux ELF 1.2.x, 1.3.x x86
SCO OpenServer 5.x x86
Max/OS SVR4 1.x Concurrent Maxion 9200 MP
DG/UX 5.x Aviion
Porting of iODBC driver manager to some non-unix operating systems
such as Windows family(3.x, 95, NT), OS/2 and Mac is supported but
has never compiled and tested yet :). Of cause, you need to supply
a make/build file and a short LibMain for creating the iodbc.dll.
2. How to build iODBC driver manager:
step 1. Identify your system
step 2. Run build with a suitable option
Here is an example:
%[1]: sh iodbc-2.12.shar
....
%[2]: cd iodbc-2.12
%[3]: uname -s -v -r -m
HP-UX B.10.01 A 9000/710
%[4]: ./build hp700
autoconfig hp700
make
....
Generating iODBC driver manager --> /home/kejin/iodbc-2.12.sl
3. odbc.ini( ~/.odbc.ini )
Driver manager and drivers use odbc.ini(or ~/.odbc.ini on Unix) file
or connection string when establishing a data source connection. On
Windows, odbc.ini is located in Windows directory. On unix, iODBC driver
manager(and all other ODBC drivers and driver managers I awared) looks
.odbc.ini file in real user's home directory (it could be a softlink to
the file located somewhere else). Make sure your driver will look into
the same file (or a file which is a symbolic link to the same file).
The format of odbc.ini( or ~/.odbc.ini ) is defined as:
odbc.ini(or .odbc.ini) ::= data_source_list
data_source_list ::= /* empty */
| data_source '\n' data_source_list
data_source ::= '[' data_source_name ']' '\n' data_source_desc
data_source_name ::= 'default' | [A-Za-z]*[A-Za-z0-9_]*
data_source_desc ::= /* empty */
| attrib_desc '\n' data_source_desc
addrib_desc ::= Attrib '=' attrib_value
Attrib ::= 'Driver' | 'PID' | 'UID' | driver_def_attrib
driver_def_attrib ::= [A-Za-z]*[A-Za-z0-9_]*
An example of .odbc.ini file:
[toronto_yp]
# yellow page of metro Toronto
Driver = /usr/lib/odbc/oracle.so
<....>
[toronto_wp]
# white page of metro Toronto
Driver = /usr/lib/odbc/oracle.so
<....>
[contract]
# all contract documents
Driver = /usr/lib/odbc/informix.so
<....>
[netnews]
# NNTP netnews group
Driver = /usr/lib/odbc/nnodbc.so
Server = news.empress.com
[rnd_test]
# data source for R&D test
Driver = /home/r_d/odbc/empodbc.so
URL = empodbc://rnd.empress.com:6322/rnd_test/testdb
[default]
# default to odbc gateway
Driver = /usr/lib/odbc/gateway.so
4. Tracing
iODBC driver manager traces driver's ODBC call invoked by the driver
manager. Default tracing file is ./odbc.log. Tracing option (i.e.
on/off or optional tracing file name) can be set in ~/.odbc.ini
file (under a data source section) as:
TraceFile = <optional_trace_file>
Trace = ON | On | on | 1 | OFF | Off | off | 0
If <optional_trace_file> is stderr or stdout, i.e.
TraceFile = stderr
or
TraceFile = stdout
the tracing message will go to the terminal screen(if it is available).
iODBC driver manager allows one to tune on/off tracing on selected
connection(s). Different connections can share one or use different
tracing file(s). ODBC calls on connections without tuning tracing on
will not be traced.
5. File list:
README This file
IAFA-PACKAGE Version and copyright information
Changes.log Source changes log
Version.mk Version make include file
Config.mk Config make include file
Makefile make file
config.h system config include file
isql.h ODBC 1.0 macro
isqlext.h ODBC 2.0 macro
dlf.h general dynamic loader module interface
dlf.c general dynamic loader module (mapping to svr4)
dlproc.h simple dynamic loader module interface
dlproc.c simple dynamic loader on top of dlf module
herr.h error handling module interface
herr.c error handling module
herr.ci error handling source include
henv.h environment handle interface
henv.c environment handle module
henv.ci environment handle source include
hdbc.h connection handle interface
hdbc.c connection handle module
hstmt.h statement handle interface
hstmt.c statement handle module
connect.c connect functions
prepare.c query prepare functions
execute.c query executing functions
result.c query result property functions
fetch.c query result fetch functions
info.c driver information functions
catalog.c catalog functions
misc.c miscellaneous functions
itrace.h macro
itrace.c trace function
main.c entry function used to build a share library on AIX
shrsub.exp export symbol list used on AIX
autoconfig shell script for creating Config.mk
build shell script for building iodbc driver manager