What are the functional differences between iODBC and unixODBC?
Asked Answered
W

2

36

There are two major Open Source platform independent implementation of the ODBC. It is iODBC and unixODBC.

Considering Unix as ODBC user platform and feature-wise, what are the real practical differences between these two implementations?

Warfeld answered 25/9, 2011 at 21:41 Comment(3)
On what platform? OS X comes with iODBC preinstalled.Promontory
MacOS releases in the past couple of years no longer include iODBC preinstalled.Allomorphism
macOS 11.2 includes the iODBC libraries in /usr/lib/, as has been true since Mac OS X 10.3.0. Apple never included the iODBC Administrator.app nor the iODBC Frameworks (to which Microsoft Excel is bound, among other third party ODBC-compliant tools), but these have always been available for no-cost user install from <iodbc.org>.Evangelia
M
42

Just so you know I use and have contributed to unixODBC and I don't use iODBC.

Unicode support

unixODBC follows MS ODBC Driver manager and has SQLWCHARs as 2 bytes UCS2 encoded. iODBC I believe uses wchar_t (this is based on attempting to support iODBC in DBD::ODBC)

cursor library

unixODBC has one, I don't "think" iODBC has.

application support

A lot of ODBC applications support unixODBC e.g., OpenOffice and ODBC drivers from Oracle, IBM and SAP. I'm not sure about iODBC.

OS support

iODBC has always been the most used on on Macs since Apple included it (although I believe it is removed from Lion). Both can be built from source and most Linux distributions package both (although not Novell/Suse which only distributes unixODBC).

thread safety

unixODBC is thread safe and includes flags to protect handles at different levels. This did not used to be the case with iODBC (but that might have changed now).

support

Both have support forums (unixODBC has 3) although I'd say the unixODBC ones are far more active (I'm on both).

Licensing

unixODBC is GPL and LGPL. iODBC is LGPL/BSD

In practice there is not a lot of difference but I think you'll find unixODBC is more widely used.

Mccarley answered 26/9, 2011 at 8:33 Comment(5)
@Mccarley thanks for the details +1 Not marked as answered yet, waiting for more possible answers.Warfeld
@Mccarley I've marked your response as the answer. Thanks againWarfeld
iODBC and unixOBDC are basically API equivalent, both being cross-platform implementations of Microsoft's ODBC standard. iODBC's flexible Unicode support includes UCS-2, UTF-8, UCS-4. iODBC is bundled into OS X, Jaguar through El Capitan (10.2 - 10.11), and may be installed on AIX, Solaris, HP-UX, most any Linux, *BSD, and more. iODBC has been thread safe for a very long time, and is actively maintained and supported by OpenLink Software (my employer).Evangelia
@TallTed, your comment is flagrant promotion of iODBC and Openlink Software especially since a) it adds nothing to the answer b) it links to iODBC and not unixODBC c) it links to Openlink Software. How does your comment relate to the practical differences since you never mention unixODBC. I suppose as "Technical Evangelist" for openlink this is to be expected i.e., are you here to help someone or promote Openlink. My answer from 2011 is admittedly out of date now but I question your motives for commenting.Mccarley
@Mccarley - The question asks about the differences between these two projects. Your answer started by saying you knew basically nothing about iODBC, but had contributed to unixODBC, and then you went on to say several things which were untrue about iODBC. I could have written a totally new answer, or as I chose, left my comments for incorporation into and correction of your answer. I gather you would prefer to have your answer remain partial in both senses; I'll try to find the time to write a more complete alternative answer.Evangelia
E
6

I finally found some time for a more complete answer... (attn @mloskot -- you can change your accepted answer, if you agree that this one is more accurate and/or complete than the other)

iODBC and unixOBDC are basically API equivalent, both being cross-platform implementations of Microsoft's ODBC standard. iODBC's flexible Unicode support includes UCS-2, UTF-8, UCS-4. iODBC libraries are bundled into macOS Panther (10.3.0) through Big Sur (11.2.x), and may be built and/or installed on AIX, Solaris, HP-UX, any Linux distribution, *BSD, other Unix-like OS, and more. iODBC has been thread safe for a very long time, and is actively maintained and supported by OpenLink Software (my employer).

The table below covers the most common comparative questions (is there something I should add?), and is based on iODBC 3.52.14, as of February 2021 (reports version 03.52.1421.0217), and unixODBC 2.3.9, as of September 2020.

For a somewhat more detailed comparison, and a much more fancy and detailed table, see this spreadsheet

feature iODBC UnixODBC
Unicode support
    UCS-2 YES YES
    UCS-4 (a/k/a UTF-32) YES NO
    UTF-08 (a/k/a UTF-8) YES NO
    UTF-16 YES YES
    UTF-32 (a/k/a UCS-4) YES NO
Supports drivers and apps
developed using other SDKs
    Supports drivers developed using iODBC SDK YES NO
    Supports apps developed using iODBC SDK YES NO
    Supports drivers developed using unixODBC SDK YES YES
    Supports apps developed using unixODBC SDK YES YES
    Supports drivers developed using DataDirect SDK YES NO
    Supports apps developed using DataDirect SDK YES NO
OS default DM
    macOS YES NO
    Linux partial partial
    Unix-like partial partial
OS support
    macOS YES partial
    Linux YES YES
    Unix-like YES YES
User-friendly native GUI Administrator
    macOS YES Qt-based
    Linux GTK-based and HTML-based Qt-based
    Unix-like GTK-based and HTML-based Qt-based
Thread Safe YES YES
Support
    Mailing List(s) YES YES
    Forum(s) YES YES
    Github repository YES YES
    SourceForge repository YES YES
Open Source Licensing
    GPL NO programs
    LGPL YES libraries
    BSD YES NO

Notes

Unicode a/k/a Wide Characters

  • iODBC supports and translates between all of UCS-2, UCS-4, UTF-8, UTF-16, UTF-32
  • unixODBC follows MDAC, and SQLWCHARs are 2 bytes UCS2 encoded

SDK lock-in

  • iODBC supports applications and drivers developed using unixODBC SDK and DataDirect SDK as well as those developed using iODBC SDK
  • unixODBC only supports applications and drivers developed using unixODBC SDK
Evangelia answered 17/2, 2021 at 18:22 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.