forked from openlink/iODBC
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
400 lines (304 loc) · 16.7 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
# iODBC Driver Manager
Copyright (C) 1995 Ke Jin <[email protected]>.
Copyright (C) 1996-2024 OpenLink Software <[email protected]>.
## License
Copyright 1996-2024 [OpenLink Software](http://www.openlinksw.com)
This software is released under either the GNU Library General Public
License (see [LICENSE.LGPL](./LICENSE.LGPL)) or the BSD License (see
[LICENSE.BSD](./LICENSE.BSD)).
**Note**: The only valid version of the GPL license as far as this
project is concerned is the original GNU General Public License Version
2, dated June 1991.
### Contributions
While not mandated by the BSD license, any patches you make to the iODBC
project may be contributed back into the project at your discretion.
Contributions will benefit the Open Source and Data Access community as
a whole. Submissions may be made via the [iODBC Github
project](https://github.com/openlink/iODBC/) or via email to
## Introduction
Welcome to the iODBC driver manager maintained by [OpenLink
Software](http://www.openlinksw.com/).
This kit will provide you with everything you need to develop
ODBC-compliant applications under Unix without having to pay royalties
to other parties.
This kit consists of a number of parts:
- **The iODBC driver manager.** This is a complete implementation of
an ODBC driver manager, released under either the GNU Library
General Public License or the BSD License. We fully comply with
these licenses by giving you this product in source form (as well as
the binary form). You can download the latest version of the driver
manager from the [iODBC website](http://www.iodbc.org/).
- **A simple example application, `iodbctest.c`**, which gives you a
command-line interface to SQL. You can fit this to your purposes,
but at the very least this is useful for verification of your ODBC
installation.
You can use either part stand-alone, if you wish.
An ODBC driver is still needed to affect your connection architecture.
You may build a driver with the iODBC components or obtain an ODBC
driver from a commercial vendor. OpenLink Software produces
cross-platform commercial drivers as well as maintaining the iODBC
distribution: evaluation copies may be obtained via download from the
[OpenLink Software website](http://www.openlinksw.com/). Any
ODBC-compliant driver will work with the iODBC Driver Manager.
You can see the [iODBC website](http://www.iodbc.org/) for pointers to
various ODBC drivers.
## Installation of run-time distribution
You have probably already unpacked this distribution. The next step is
to make sure that your applications can find all the dynamic link
libraries. Depending on your system's implementation of dynamic link
libraries, you have a number of options:
- Install the libraries in a directory that is searched by your linker
by default. Typical locations are `/usr/lib` and `/usr/local/lib`.
- Install the libraries in some other place, and make sure that the
environment variable your dynamic linker uses to find extra
locations for dynamic link libraries. Most systems use the
environment variable `LD_LIBRARY_PATH` to this end. Known exceptions
include AIX which uses `LIBPATH`, and HP/UX which uses `SHLIB_PATH`
for 32-bit libraries.
If your system has a C compiler, you can verify the installation by
compiling the `iodbctest` program. Otherwise, you may have ODBC
applications installed on your system which you can use.
## Configuration of run-time distribution
The iODBC driver manager looks for a file `~/.odbc.ini`, where the tilde
stands for the user's home directory. This file initially contains only
a default section where you can select which driver library to use. Copy
the `odbc.ini` file from the examples directory to `~/.odbc.ini` and
make sure the right path and filename is used for your installation.
A data source is a section (enclosed in square brackets), and the
attributes for a data source are given within this section. The most
important attribute to iODBC for each datasource is the `Driver`
attribute. This must point to the shared library for the ODBC driver
associated with the data source.
For example, the OpenLink Enterprise Edition (Multi-Tier) ODBC drivers
have a number of attributes which can be set for a data source. Here is
a description:
-----------------------------------------------------------------------------------
`odbc.ini` keyword ODBC connect string keyword Description
-------------------------- -------------------------------------- -----------------
`Host` `HOST` The hostname
where the
database resides.
`ServerType` `SVT` The type of
Database Agent.
(See `oplrqb.ini`
on the server.)
`ServerOptions` `SVO` Server-specific
extra options.
See Enterprise
Edition
server-side
documentation for
Agents which can
use this.
`Database` `DATABASE` The database to
use.
`Options` `OPTIONS` Connect options
for the database.
`UserName` `UID` The name of the
database user.
`Password` `PWD` The password of
the database
user.
`ReadOnly` `READONLY` A `Yes`/`No`
value in order to
make the
connection
read-only.
`FetchBufferSize` `FBS` The number of
records that are
transferred in a
single call to
the server.
Default is `5`;
maximum is `999`;
minimum is `1`.
`Protocol` `PROTO` The protocol to
use. Set to `TCP`
for Release 3.x
and later.
-----------------------------------------------------------------------------------
Apart from these data source-specific settings, you may add a section
called `[Communications]`, which you may use to tune the OpenLink
Enterprise Edition (Multi-Tier) driver further:
-----------------------------------------------------------------------
`odbc.ini` keyword Description
------------------------------------------- ---------------------------
`ReceiveTimeout` The time in seconds that
the client application will
wait for the Database Agent
to start sending results.
Default is `60`.
`BrokerTimeout` The time in seconds that
the client application will
wait for the Request Broker
to accept or reject a
database connection
request. Default is `30`.
`SendSize` RPC send buffer size. A
value of `0` (the default)
will cause the application
to use system-dependent
defaults.
`ReceiveSize` RPC receive buffer size. A
value of `0` (the default)
will cause the application
to use system-dependent
defaults.
`DebugFile` If set, the name of a file
to which debugging output
from the driver should be
directed.
-----------------------------------------------------------------------
## iODBC driver manager platform availability
The iODBC driver manager has been ported to following platforms:
OS Version Processor
------------------ -------------- ------------------------------------------------
BSDi BSD/OS 2.x x86
DEC Unix (OSF/1) 3.x - 5.x DEC Alpha
DG/UX 5.x Aviion
FreeBSD 2.x - 9.x x86
HP/UX 9.x - 11.x HP9000 s700/s800
HP/UX 9.x HP9000 s300/s400
IBM AIX 3.x - 5.x IBM RS6000, ppc32, ppc64
Linux ELF 1.x, 2.x x86, x86_64, IA_64, ppc32, ppc64, arm32, arm64
macOS 10.x -- 11.x ppc32, ppc64, x86, x86_64, arm64
Max/OS SVR4 1.x Concurrent Maxion 9200 MP
NCR SVR4 3.x NCR 3435
OpenVMS 6.x DEC Alpha
SCO OpenServer 5.x x86
SGI Irix SVR4 5.x, 6.x IP12 MIPS, IP22 MIPS
SunOS 4.1.x Sun Sparc
Sun Solaris 2.x Sun Sparc, x86, x86_64
UnixWare SVR4.2 1.x, 2.x x86
Windows NT 4.x x86
As the iODBC driver manager uses `autoconf`/`automake`/`libtool`, it
should be portable to most modern UNIX-like OS out of the box. However,
if you do need to make changes to the code or the configuration files,
we would appreciate it if you would share your changes with the rest of
the internet community by mailing your patches to
<[email protected]>, so we can include them for the next build.
Porting the iODBC driver manager to some non-UNIX-like operating
systems, such as the Windows family (3.x, 95, NT, 200x, etc.), IBM OS/2,
or Mac Classic, is supported, but has not been compiled or tested
recently. Of course, you will need to supply a `make`/`build` file and a
short `LibMain` for creating the `iodbc.dll`.
## How to build the iODBC driver manager
Users of macOS should read the separate
[README_MACOSX](./README_MACOSX.md) document for more detail of porting
to this platform.
Users of all other UNIX-like OS:
1. Run `configure` to adjust to target platform
2. Run `make`
3. Run `make install`
The `configure` program will examine your system for various compiler
flags, system options, etc. In some cases, extra flags need to be added
for the `C` compiler to work properly; for instance, on HP systems, you
may need:
$ CFLAGS="-Ae -O" ./configure --prefix=/usr/local ..........
### File Hierarchy
Note that the path of the system wide `odbc.ini` file is calculated as
follows (based on flags to `./configure`):
no --prefix default is /etc/odbc.ini
--prefix=/usr /etc/odbc.ini
--prefix=/xxx/yyy /xxx/yyy/etc/odbc.ini
--sysconfdir=/xxx/yyy /xxx/yyy/odbc.ini
--with-iodbc-inidir=/xxx/yyy /xxx/yyy/odbc.ini
If the **`--with-layout=`** option is set, then the `prefix` and
`sysconfdir` parameters will be changed accordingly. Currently, this
parameter understands values of **`gentoo`**, **`redhat`**, **`gnu`**,
**`debian`**, or **`opt`** (with everything going into `/opt/iodbc/`).
If both are specified, `--prefix` argument will overrule
`--with-layout`.
### Example
$ ./configure --prefix=/usr/local --with-iodbc-inidir=/etc
...
...
...
$ make
...
...
...
$ su
# make install
...
...
...
## `odbc.ini`
Driver manager and drivers use the `odbc.ini` file or connection string
when establishing a data source connection. On Windows, `odbc.ini` is
located in the Windows directory.
On UNIX-like OS, the iODBC driver manager looks for the `odbc.ini` file
in the following sequence:
1. check environment variable `ODBCINI`
2. check `$HOME/.odbc.ini`
3. check home in `/etc/passwd` and try `.odbc.ini` in there
4. system-wide `odbc.ini` (settable at configuration time)
Item 1 is the easiest, as most drivers will also look at this variable.
The format of `odbc.ini` (or `~/.odbc.ini`) is defined as:
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 an `odbc.ini` file:
;
; odbc.ini
;
[ODBC Data Sources]
Myodbc = Myodbc
Sample = OpenLink Generic ODBC Driver
Virtuoso = Virtuoso
[ODBC]
TraceFile = /tmp/odbc.trace
Trace = 0 ; set to 1 to enable tracing
[Sample]
Driver = /usr/local/openlink/lib/oplodbc.so.1
Description = Sample OpenLink DSN
Host = localhost
UserName = openlink
Password = xxxx
ServerType = Oracle 8.1.x
Database =
FetchBufferSize = 99
ReadOnly = no
[Virtuoso]
Driver = /usr/local/virtuoso/lib/virtodbc.so.1
Address = localhost:1112
Database = Demo
[Myodbc]
Driver = /usr/lib/libmyodbc.so
HOST = localhost
[Default]
Driver = /usr/local/openlink/lib/oplodbc.so.1
## Tracing
The 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 the `[ODBC]` heading, as:
[ODBC]
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 available).
## Further Information Sources
- [iODBC Website](http://www.iodbc.org/) containing binaries, sources
and documentation.
- [iODBC Project page on GitHub](https://github.com/openlink/iODBC/)
containing source archives, GIT tree, issues forum.
- [iODBC Project page on
Sourceforge](http://sourceforge.net/projects/iodbc) containing
source archives, GIT tree, mailing lists, forums, bug reports.
- [OpenLink Software Website](http://www.openlinksw.com/) containing
free trials and support for OpenLink's ODBC drivers.
- [Microsoft ODBC
Documentation](https://msdn.microsoft.com/en-us/library/ms714177)
containing the ODBC API Reference Guide.