| 1 | 0. Changes |
| 2 | a. I realized that a driver manager doesn't aware of |
| 3 | difference between a C5 (i.e. hstmt) and a C6 |
| 4 | (i.e. transaction) states. |
| 5 | |
| 6 | b. The link flags "-lc" has been removed from Linux ELF |
| 7 | section of Config.mk to fix a segment fault problem. |
| 8 | Now, it works fine on Slackware 2.3 and Red Hat 2.0 |
| 9 | (kernel version are 1.2.xx and 1.3.xx respectively). |
| 10 | |
| 11 | c. On FreeBSD 2.x, dlsym() doesn't handle the '_' |
| 12 | prepended before a exporting function symbol. So, |
| 13 | CLI_NAME_PREFIX needs to be defined as "_SQL" for |
| 14 | FreeBSD. |
| 15 | |
| 16 | d. Some files are renamed |
| 17 | dld.c -> dlf.c |
| 18 | dld.h -> dlf.h |
| 19 | confg.h -> config.h |
| 20 | |
| 21 | 1. iODBC driver manager platform availability |
| 22 | |
| 23 | iODBC driver manager has been ported to following Unix platforms: |
| 24 | |
| 25 | SunOS 4.1.x Sun Sparc |
| 26 | HP/UX 9.x, 10.x HP9000 s700/s800 |
| 27 | HP/UX 9.x HP9000 s300/s400 |
| 28 | IBM AIX 3.x, 4.x IBM RS6000, PowerPC |
| 29 | Sun Solaris 2.x Sun Sparc, PCx86 |
| 30 | SGI Irix SVR4 5.x, 6.x IP12 MIPS, IP22 MIPS |
| 31 | NCR SVR4 3.x NCR 3435 |
| 32 | UnixWare SVR4.2 1.x, 2.x x86 |
| 33 | DEC Unix(OSF/1) 3.x, 4.x DEC Alpha |
| 34 | FreeBSD 2.x x86 |
| 35 | BSDI BSD/OS 2.x ? |
| 36 | Linux ELF 1.2.x, 1.3.x x86 |
| 37 | SCO OpenServer 5.x x86 |
| 38 | Max/OS SVR4 1.x Concurrent Maxion 9200 MP |
| 39 | DG/UX 5.x Aviion |
| 40 | |
| 41 | Porting of iODBC driver manager to some non-unix operating systems |
| 42 | such as Windows family(3.x, 95, NT), OS/2 and Mac is supported but |
| 43 | has never compiled and tested yet :). Of cause, you need to supply |
| 44 | a make/build file and a short LibMain for creating the iodbc.dll. |
| 45 | |
| 46 | 2. How to build iODBC driver manager: |
| 47 | |
| 48 | step 1. Identify your system |
| 49 | step 2. Run build with a suitable option |
| 50 | |
| 51 | Here is an example: |
| 52 | |
| 53 | %[1]: sh iodbc-2.12.shar |
| 54 | .... |
| 55 | %[2]: cd iodbc-2.12 |
| 56 | %[3]: uname -s -v -r -m |
| 57 | HP-UX B.10.01 A 9000/710 |
| 58 | %[4]: ./build hp700 |
| 59 | autoconfig hp700 |
| 60 | make |
| 61 | .... |
| 62 | Generating iODBC driver manager --> /home/kejin/iodbc-2.12.sl |
| 63 | |
| 64 | 3. odbc.ini( ~/.odbc.ini ) |
| 65 | |
| 66 | Driver manager and drivers use odbc.ini(or ~/.odbc.ini on Unix) file |
| 67 | or connection string when establishing a data source connection. On |
| 68 | Windows, odbc.ini is located in Windows directory. On unix, iODBC driver |
| 69 | manager(and all other ODBC drivers and driver managers I awared) looks |
| 70 | .odbc.ini file in real user's home directory (it could be a softlink to |
| 71 | the file located somewhere else). Make sure your driver will look into |
| 72 | the same file (or a file which is a symbolic link to the same file). |
| 73 | The format of odbc.ini( or ~/.odbc.ini ) is defined as: |
| 74 | |
| 75 | odbc.ini(or .odbc.ini) ::= data_source_list |
| 76 | |
| 77 | data_source_list ::= /* empty */ |
| 78 | | data_source '\n' data_source_list |
| 79 | |
| 80 | data_source ::= '[' data_source_name ']' '\n' data_source_desc |
| 81 | |
| 82 | data_source_name ::= 'default' | [A-Za-z]*[A-Za-z0-9_]* |
| 83 | |
| 84 | data_source_desc ::= /* empty */ |
| 85 | | attrib_desc '\n' data_source_desc |
| 86 | |
| 87 | addrib_desc ::= Attrib '=' attrib_value |
| 88 | |
| 89 | Attrib ::= 'Driver' | 'PID' | 'UID' | driver_def_attrib |
| 90 | |
| 91 | driver_def_attrib ::= [A-Za-z]*[A-Za-z0-9_]* |
| 92 | |
| 93 | An example of .odbc.ini file: |
| 94 | |
| 95 | [toronto_yp] |
| 96 | # yellow page of metro Toronto |
| 97 | Driver = /usr/lib/odbc/oracle.so |
| 98 | <....> |
| 99 | |
| 100 | [toronto_wp] |
| 101 | # white page of metro Toronto |
| 102 | Driver = /usr/lib/odbc/oracle.so |
| 103 | <....> |
| 104 | |
| 105 | [contract] |
| 106 | # all contract documents |
| 107 | Driver = /usr/lib/odbc/informix.so |
| 108 | <....> |
| 109 | |
| 110 | [netnews] |
| 111 | # NNTP netnews group |
| 112 | Driver = /usr/lib/odbc/nnodbc.so |
| 113 | Server = news.empress.com |
| 114 | |
| 115 | [rnd_test] |
| 116 | # data source for R&D test |
| 117 | Driver = /home/r_d/odbc/empodbc.so |
| 118 | URL = empodbc://rnd.empress.com:6322/rnd_test/testdb |
| 119 | |
| 120 | [default] |
| 121 | # default to odbc gateway |
| 122 | Driver = /usr/lib/odbc/gateway.so |
| 123 | |
| 124 | 4. Tracing |
| 125 | |
| 126 | iODBC driver manager traces driver's ODBC call invoked by the driver |
| 127 | manager. Default tracing file is ./odbc.log. Tracing option (i.e. |
| 128 | on/off or optional tracing file name) can be set in ~/.odbc.ini |
| 129 | file (under a data source section) as: |
| 130 | |
| 131 | TraceFile = <optional_trace_file> |
| 132 | Trace = ON | On | on | 1 | OFF | Off | off | 0 |
| 133 | |
| 134 | If <optional_trace_file> is stderr or stdout, i.e. |
| 135 | |
| 136 | TraceFile = stderr |
| 137 | |
| 138 | or |
| 139 | |
| 140 | TraceFile = stdout |
| 141 | |
| 142 | the tracing message will go to the terminal screen(if it is available). |
| 143 | |
| 144 | iODBC driver manager allows one to tune on/off tracing on selected |
| 145 | connection(s). Different connections can share one or use different |
| 146 | tracing file(s). ODBC calls on connections without tuning tracing on |
| 147 | will not be traced. |
| 148 | |
| 149 | 5. File list: |
| 150 | |
| 151 | README This file |
| 152 | IAFA-PACKAGE Version and copyright information |
| 153 | Changes.log Source changes log |
| 154 | Version.mk Version make include file |
| 155 | Config.mk Config make include file |
| 156 | Makefile make file |
| 157 | config.h system config include file |
| 158 | isql.h ODBC 1.0 macro |
| 159 | isqlext.h ODBC 2.0 macro |
| 160 | dlf.h general dynamic loader module interface |
| 161 | dlf.c general dynamic loader module (mapping to svr4) |
| 162 | dlproc.h simple dynamic loader module interface |
| 163 | dlproc.c simple dynamic loader on top of dlf module |
| 164 | herr.h error handling module interface |
| 165 | herr.c error handling module |
| 166 | herr.ci error handling source include |
| 167 | henv.h environment handle interface |
| 168 | henv.c environment handle module |
| 169 | henv.ci environment handle source include |
| 170 | hdbc.h connection handle interface |
| 171 | hdbc.c connection handle module |
| 172 | hstmt.h statement handle interface |
| 173 | hstmt.c statement handle module |
| 174 | connect.c connect functions |
| 175 | prepare.c query prepare functions |
| 176 | execute.c query executing functions |
| 177 | result.c query result property functions |
| 178 | fetch.c query result fetch functions |
| 179 | info.c driver information functions |
| 180 | catalog.c catalog functions |
| 181 | misc.c miscellaneous functions |
| 182 | itrace.h macro |
| 183 | itrace.c trace function |
| 184 | main.c entry function used to build a share library on AIX |
| 185 | shrsub.exp export symbol list used on AIX |
| 186 | autoconfig shell script for creating Config.mk |
| 187 | build shell script for building iodbc driver manager |