The unixODBC Project home page

Do you support unixODBC?

We are compiling a directory of applications, languages and databases which support unixODBC. If you would like your products included please let me know.

What is the unixODBC Project?

The unixODBC Project goals are to develop and promote unixODBC to be the definitive standard for ODBC on non MS Windows platforms. This is to include GUI support for both KDE and GNOME.

What is ODBC?

ODBC is an open specification for providing application developers with a predictable API with which to access Data Sources. Data Sources include SQL Servers and any Data Source with an ODBC Driver. 

Why use ODBC?

The two major advantages of choosing to code an application to the ODBC API are;

Portable Data Access Code

The ODBC API, as outlined by X/Open and ISO, is availible on all major platforms. Microsoft platforms include many enhancements to this specification; these enhancements are also supported by unixODBC

Dynamic Data Binding

This allows the user or the system administrator to easily configure an application to use any ODBC compliant data source. This is perhaps the single biggest advantage of coding an application to the ODBC API and to purchase these applications. Dyamic binding allows the end-user to pick a data source, ie an SQL Server, and use it for all data applications without having to worry about recompiling the application. 

The unixODBC team has reached this objective by providing the best technical solution to ODBC demands on the Linux platform. Also; ALL unixODBC development is and will be distributed under GPL or LGPL. The LGPL on libs will ensure that commercial solutions will be able to utilize unixODBC.
News
31.Aug.2015 2.3.4 Released

Single bug fix. There was a typo in 2.3.3 that caused a problem loading the cursor lib, so I have pushed a new build out.

As always, any problems just let me know.

  • Fix typo in the loading of the cursor lib

22.Aug.2015 2.3.3 Released

Mainly bug fixes.

As always, any problems just let me know.

  • Reporting of logging state was broken in SQLGetConnectAttr
  • Fix incorrect text against HY007
  • Add -L option to isql to increase max column data display
  • Update automake toolset in svn
  • Add SQLFreeStmt( SQL_CLOSE ) function to SQLCancel
  • Allow SQL_NTS as a buffer length to SQLBindParameter
  • More manual pages for the tools
  • Fix buffer overrun returning long diagnostic from driver
  • Cross call between wide and ascii error reporting in the driver when needed
  • Fix some possible unchecked memory references after malloc
  • Prevent free( NULL ) in SQLGetDiagRecW
  • Add missing A->W conversion in SQLGetStmtOption
  • Allow iconv to convert strings into the driver with differing A and W lengthts (UTF)
  • SQLDataSourcesW takes buffer_lenghts as characters not bytes
  • Fix memory leak in SQLGetDiagRec
  • Allow setting custom non standard attributes via DMStmtAttr,

    format is:

            DMStmtAttr=[xxxx]=\yyy
            DMStmtAttr=[xxxx]={ssss}
    	
    where xxxx = integer attribute to set, yyy is decimal numeric value and ssss is a string value

  • Add check in SQLGetData for null target value or negative buffer length
  • Fix memory leak when using the cursor lib
  • Catch incorrectly expanded SHLIBEXT
  • There was a bug in the ini caching, now fixed
  • More ODBC 3.80 additions (streaming parameters)
  • Check for NULL handle in __validate_xxx()
  • Avoid potential memory leak in SQLAllocStatement
  • Avoid buffer overflow via environment variamles
  • Fix some typos

8.Oct.2013 2.3.2 Released

Mainly bug fixes.

As always, any problems just let me know.

  • The logging of WStrings was using the incorrect length in some cases
  • Pass SQLDescribeCol call to driver when in state 2 (not a cursor spec).
  • Pass SQLMoreResults call to driver when in state 2 (not a cursor spec). Both the last two changes are not as per the original book state table but allign with the current MS driver manager
  • The -e option to isql got lost somewhere. Back in now
  • Update install-sh
  • SQLCancel assumed that the DM was being built with thread support
  • Try and speed up SQLTransact and SQLEndTran operation
  • Add missing \ in Postgres7.1 Makefile
  • Correct some potential buffer overflows
  • Handle SQL_NEED_DATA from a SQLMoreResults
  • Get the local charset via nl_langinfo(CODESET) when asking the DM to do ASCII-UNICODE conversions
  • Handle (and remove) leading spaces from ini entries
  • Fixed unicode conversion problems in SQLGetDiagField(W)
  • missing terminating null in iusql
  • add to the list of errno states that does not cause a create of the ini file
  • SQLSetConnactAttr() -> SQLSetConnectAttrW() was passing incorrect string length
  • Fix double free in SQLGetDiagFieldW
  • Fix Unicode/Ansi conversion problem in SQLGetDiagFieldW.c
  • Add support for Driver64 in SQLDriverConnectW
  • Add missing unicode setting when returning a connection to the pool
  • Tidy up leaking iconv handles if connect_part_one fails
  • Fix (and avoid) some out of memory problems
  • Wrap lt_dlinit and dlerror in the lib mutex
  • Add slencheck executable to try and find the sizeof(SQLLEN) from a installed driver
  • SQL_NO_DATA after SQL_STILL_EXECUTING in SQLExtendedFetch was not setting the state correctly
  • A little more 3.80 stuff being added
  • Added fixes found by coverity
  • Added man pages
  • Patches to update VMS build
  • Change mutex protection around release_env
  • Altered strlen to be count of bytes in SQLGetDiagFieldW
  • Add check for W function support in do_attr
  • Allow SQLDrivers to return attribute length with no supplied buffer

28.Nov.2011 2.3.1 Released

Mainly bug fixes.
Major change is to change the library version number from 1 to 2 to signal the SQLLEN change for 64 land. Should have been done for 2.3.0, but better late than never. So if after installing you have apps that can't find libodbc.so, its likely they are linked to libodbc.so.1, so just create a symlink from libodbc.so.2

As always, any problems just let me know.

  • Change type definition of a integer in SQLConnect.c, just to avoid confusion
  • Allow setting the DM overrive values in the connection string to SQLDriverConnect for example
    "DRIVER={Easysoft ODBC-SQL Server};Server=myserver;UID=user;PWD=pass;DMStmtAttr=SQL_QUERY_TIMEOUT=10;"
  • Error and info message order was being inverted by the driver manager
  • Fix memory leak in SQLDriverConnect.c (Thanks JM)
  • The keyword matching for DRIVER=, DSN= etc was case sensitive. Make it insensitive now
  • Avoid sprintf NULL pointer problem in SQLGetDiagRec
  • Fix typo affecting the pooling of connections, (thanks Chris)
  • Fix SunCC _mcount problem
  • Attempt to stamp version info on the libs generated. There are aps in use linked against other driver managers that expect VERS_3.52. This should allow them to work.
  • Fix potential buffer overrun when using SAVEFILE
  • Fix mutex problem in the exit from __SQLGetInfo (thanks Richard)
  • Allow getting SQL_DM_VER via SQLGetInfo before connecting to a driver
  • Generate unixodbc_conf.h using macros to allow cross compiling
  • Fix some libltdl problems
  • Fix some naiming problems with the cursor lib
  • Fix odbcinst problems on systems without pwd.h
  • Change lib version to 2 to reflect SQLLEN changes in v2.3
  • Fix threading problem (thanks Petr Vandrovec)
  • Allow use of lib name in a DRIVER= connection string
  • Change default threading protection to 0, most drivers should be thread safe by now. If the driver is at all thread safe, allow SQLCancel to bipass the interlock.
  • Performance change to handle large numbers of connection and statement handles better. Thanks for the change from the folks at Acision.
  • Add -k option to isql to treat the DSN as a connection string and use SQLDriverConnect isql -k "DSN=server;UID=test;PWD=test"
  • Couple of the SQLSetConnactAttr values are now SQLULEN instead of SQLUINTEGER
  • SQLSetConnectAttr was passing a char length instead of a byte length into the Driver SQLSetConnectAttr when converting from Ansi->Unicode
  • Driver version was not being held when a second connection was made to the driver

20.April.2010 2.3.0 Released

New release, new major version. This is now the reduced unixODBC, after the GUI and additional driver parts have been split off to their own project.

The new minor number is a indication of the change to the new default SQLLEN size for 64 bit platfoems so projects using unixODBC can have a hope of distinguising between new and old.

There are also a number of bug fixes and changes as detailed below:

  • Try and rationalise the way the connection process find the driver version and supported functions
  • Sort out problem in isql with blank lines
  • Stop libthread from being used under AIX
  • Move the GUI parts off into a new project http://sourceforge.net/projects/unixodbc-gui-qt/
  • Strip out the GUI parts. I have also removed the spec files as they will need redoing,
  • Move the Test parts off into a new project http://sourceforge.net/projects/unixodbc-test/
  • Add interface into odbcinstQ to allow for a dialog if SQLDriverConnect is called without a DSN= (as the MS spec)
  • Allow the setting of a default Threading level in the ODBC section of odbcinst.ini
  • Change double format string in Postgre7.1 driver
  • Add missing CR to output of odbcinst
  • add fixes to MiniSQL driver
  • Add missing .y in nn driver, now I need to get it to work
  • Assoured bux fixes and format problems, thanks Tom
  • SQLBindCol on metadata calls was incorrectly going via the cursor lib if it
  • fix isql problem with nested definitions. was enabled
  • Add configure option to enable building of driver config libs
  • Shift build to using config.h, the compile lines were so big it was hard to see warnings
  • Fix bug in isql when using -b option.
  • Check attribute values when setting connection and statement attrs
  • Check for valid pointers in SQLGetInfo(W) and SQLGetFunctions
  • Add extra checks for states in SQLCopyDesc
  • Add --enable-stricterror option to allow compliance with the error reporting definition, driver errors don't have the unixODBC prefix
  • Check for statements in the NEED_DATA state when calling SQLEndTran
  • Extra error check for SQLPutData
  • Check handle type in SQLEndTran
  • Prevent seg fault if there are no driver error functions
  • the -n option to isql was not working correctly
  • Stripped out all the bespoke LDTL configure stull, not just what libtoolize provides
  • Fix problem where ansi_to_unicode_alloc didn't leave space for the NULL and could cause memory corruption
  • Add the ODBC 3.80 additions that MS have produced. I am sure I remember the standard being given to XOpen, what do I know :-)
  • Change the file open mode for the ini file from w to w+ just in case the original open failed but the file did exist
  • Fix configure problem preventing the CHAR encoding from being passed
  • Remove white spave from ini write, not all drivers use unixODBC ini functions and can handle the spaces
  • Update config.guess to current GNU version including support for AIX6
  • Create SVN repository at sourceforge
  • Add cast to fix problem in SQLSetConnectOption
  • Fix SQLINTEGER<->SQLLEN conversion broblem in SQLNativeSQL
  • Fix bug that stopped setting SQL_ATTR_CONCURRENCY to SQL_CONCUR_VALUES
  • Change minor version number because of the SQLLEN change
  • Remove unintended trailing white space from log generation

6.Jan.2009 New projects created

To avoid the main distribution becoming overloaded with parts that not everyone need, or are woefully out of date, two new sourceforge projects have been created and code from 2.2.14 has been migrated away from unixODBC into them.

The projects are:

  • unixODBC-Gui-Qt containing Qt based GUI bits for unixODBC. Includes; configuration interface and data manager.
  • unixODBC-Test containing Qt based ODBC test tool, and autotest framework.

The next distribution of unixODBC that will be released will have those parts removed, and other parts like drivers will not build by default. If this is going to cause a issue for anyone, could they please get the code from CVS, or contact me for a distribution of the work in progress.

Hopefully this split will allow the future development of the non central parts of unixODBC (mainly Peter at the moment), while allowing the central driver manager and tools to continue to focus on stability and conformance (mainly Nick).

We still need to produce a project to hold the text driver, as that deserves a home of its own.

Thanks, Nick


19.Nov.2008 2.2.14 Released

You wait for a year for a release, then two come at the same time. 2.2.13 had a missing prototype that caused a fatal problem on some 64 bit platforms so 2.2.14 has replaced it.


18.Nov.2008 2.2.13 Released

And a few more bugs, but the big change this time is the default build for 64 bit platforms is to make sizeof( SQLLEN ) = 8, so we are up to date now, and I will sit and wait for the fallout to happen :-)

Also I have started the process of trimming parts that are not the core of the distribution, this will continue in future. We don't need to include drivers (for example), they all have their own teams now.

  • There was a mutex around iconv that needed adding. Without this, there was a potential thread problem
  • Fix problem with SQLGetDiagRec/Field returning double driver errors
  • odbctest was using the wrong handle for SQLGetConnectOption
  • remove startup thread race condition
  • fix descriptor memory leak with UNICODE only drivers (thanks Ian)
  • Alter the default 64bit build mode, and change the flag to BUILD_LEGACY_64_BIT_MODE
  • Fix a couple of 64bit problems
  • create unixodbc_conf.h on install to contain compile settings
  • Allow the GUI parts to build with qt4
  • try and deal with drivers that call internal W functions and end up in the driver manager (informix for example). Enabled by --enable-handlemap=yes when configuring
  • Fix leak of iconv handles
  • Allow the setup API to call through to the wide driver functions
  • Fix potential seg fault in SQLGetPrivateProfileString
  • Fix a couple of broken casts, and some MS 64bit changes
  • Add check for postgres driver getting into a spin wait
  • Fix logging that reported the setting of env attrs failing
  • Add isql option to wrap strings with quotes
  • Add isql option -3 to make isql use ODBC 3 calls instead of 2
  • Add timestamp to logging output
  • Pull any errors from driver whern SQLBrowseConnect returns SQL_NEED_DATA
  • isql now displays any warnings from SQLMoreResults
  • Add include path to odbc_config --cflags output
  • Fix some SQLLEN/SQLINTEGER conflicts in the cursor lib
  • isql now checks if the driver has SQLMoreResults before calling it
  • A couple of tweeks in the txt driver
  • Fix More than 1 log msg relevant in odbcinst now
  • Changed UI plugin technique for odbcinst see... ODBCConfig > main.cpp, and odbcinst > SQLManageDataSources.c and odbcinstQ4 > SQLManageDataSources.cpp
  • Add more 64 bit changes, remove SQLROWCOUNT and its friends from 64 bit land
  • Couple of descriptor typo's fixed (Thanks Jess)
  • Add odbcinstQ4 to support pure Qt4 SQLCreateDataSource and SQLManageDataSources
  • Add ODBCCreateDataSourceQ4 as Qt4 based exec to SQLCreateDataSource
  • Add ODBCManageDataSourcesQ4 as Qt4 based exec to SQLManageDataSources
  • Add "-c" option to odbcinst to call SQLCreateDataSource
  • Add "-m" option to odbcinst to call SQLManageDataSources
  • Add ODBCDataManagerQ4
  • Add Wrappers (C++, QtCore 4, QtGui 4 - thin wrappers to ODBC)
  • Add more complete set of driver config options to GUI config
  • Fix incorrect export file in odbcinstQ
  • Added some extra features to isql (thanks to Ron Norman for the ideas)
  • Add diag support lib for driver development and possibly DM This is very 'black-boxed' on purpose.
  • Fix Replaced diag code in txt driver to use new diag lib.
  • Add New odbctrac library.
  • Add Threading can not be config via Qt(4) based GUI
  • Add New ODBCString library.
  • Add odbcinst.ini -> ODBC -> TraceLibrary and corresponding GUI Qt(4) config.
  • prevent the cursor lib from seg faulting if the query isn't a select
  • Add SQLULEN size display to the output of odbcinst -j
  • Add mutexes in odbcinst/_logging.c
  • Remove the MySQL Driver, its woefully out of date now
  • Remove incorrect path in vms_odbc.opt
  • rename trace.h to odbctrace.h to avoid potential name conflicts and move to include dir
  • update unixODBC.spec file
  • Add README.CYGWIN
  • Fix build problem with QT4 without QWizard support
  • Alter how the Ansi-Unicode mapping is done, so a unicode function can be passed to the driver (if it supports it) even if a non unicode connect was done
  • Fix buffer overrun in SQLDriverConnectW and SQLColAttributesW
  • I have cut back on a lot of the GUI parts that are being added. The goal is to create a distinct set of files that contains these and other parts that are not part of the core goal of providing ODBC. Likewise the drivers will go on the next release, as most DB's now have their own folk working on their drivers and they all interoperate with unixODBC so its just adding confusion including them here (IMHO that is)
  • Prevent a potential buffer overrun in the DM
  • The processing of --enable-rtldgroup had been dropped, back now
  • Allow the cursor lib to handle multiple result sets

08.Oct.2008 Mailing list problems - hopefully fixed

I have migrated the mailing lists to another machine, and they should be working again. Any problems let me know. I have disabled the mail based administration at the moment as it seems to leave a potential vector for spammers, so any account maintanance will now be via the web server.

Now I can get back to trying to get 2.2.13 released - Nick


24.Sep.2008 Mailing list problems

The mailing list server is down for the moment while we try and fix some spam related problems - Nick


13.Oct.2006 2.2.12 Released

Yet More bugs, and fixes. (Sorry this one has been waiting for so long)

  • Add missing SQLSetStmtOptionA and SQLSetStmtOptionW
  • The config string being passed into ConfigDsn was wrong, removed semicolon, and added terminating double null
  • Add help help to isql
  • Couple of changes to make the build on OSX work better
  • Alter odbctest FullConnect to use SQLDriverConnect
  • Replace a missed flag for true 64 bit operation
  • Add ODBC3<->ODBC2 type mapping in SQLSetParam
  • Add missing SQLSetStmtOptionW.c
  • Tidy up the search for GUI lib code in SQLManageDatasource
  • Backport a couple of changes from the Debian build into the cursor lib
  • Add extra config settings to the MaxDB/SapDB setup lib
  • Fix possible exit from SQLConnect without having closed in the driver
  • Fix configure problem on Tru64
  • Fix a build issue on Sinix
  • Allow calling metadata functions via the cursor lib
  • Alter args to SQLParamOptions
  • Fix bug preventing attribute length from being returned from SQLDrivers
  • Fix broken iusql
  • SQLTransact via the cursor lib has the args swapped
  • Remove leak in the postgres driver (error messages were not being released), and yet a different leak in convert.c
  • Add code to allow the Cursor lib to call SQLGetDiagRec
  • Updated libtool, automake and autoconf
  • Add new QT detection macros (Thanks Peter)
  • Removed some unneeded strlen's from the postgres drivers
  • Small change to the logging in SQLBrowseConnect
  • Add additional SQLGetInfo value SQL_ATTR_DRIVER_THREADING (1028) that returns a SQL_USMALLINT containing the level of thread protection afforded the driver by the driver manager
  • Fix small bug that prevents SQLDrivers from returning the first entry if SQL_FETCH_FIRST is not used
  • Make DataManagerII check the DB's quote char when creating SQL
  • The cursor lib wasn't correctly returning the last rowset
  • Fix problem with the cursor lib, rowsets and SQLExtendedFetch
  • Fix couple of spelling mistakes in isql
  • Allow decoupling of SQLHANDLES between application and driver, there is a 64bit DB2 where the driver handles are int's but unixODBC uses void *. There is a define for DRV_SQLHANDLE in DriverManager/drivermanager.h that allows this choice at build time
  • Add a few extra checks for only unicode API's from the driver
  • Check for existance of qt-mt lib before adding to link line
  • Added missing cleanup in Postgres driver
  • Added a contrib directory with (so far) a new ODBCConfig and ODBCStats apps, (Thanks Fizz for those). New versions of these are waiting for 2.2.13
  • Ask the driver when there are no errors left in the DM's store
  • Add a couple of unicode fixes suppled by Oracle
  • Small fix for call to SQLGetDiagField
  • Fix silly typo that was using sizeof( SQL_WCHAR ) instead of SQLWCHAR
  • Add check for C_TYPE in SQLBindCol, SQLBindParameter, SQLBindParam, and SQLGetData
  • Fix overflow if the LOG_MESSAGE_LENGTH is increased
  • Save the last arg for SQLSetConnectAttr if called before connection for later passing to driver
  • Fix missing mutex release in SQLFreeHandle (thanks Mark)
  • Add missing maps from unicode in SQLSetDescFieldW and SQLSetStmtAttrW
  • Handle resetting statement descriptors to implicit values, by passing in NULL or the implicit descrptor to SQLSetStmtAttr with the attribute SQL_ATTR_APP_PARAM_DESC or SQL_ATTR_APP_ROW_DESC
  • Avoid calling SQLGetInfo for every SQLEndTran/SQLTransact
  • Remove inconsistency in the return value from SQLGetPrivateProfileString
  • Fix broken QT_VERSION detection
  • Add UNICODE wrapper functions in libodbcinst. The ini file is still ascii, so its not got full support at the moment, but any apps that need the W functions should build now
  • Add GUI support for SQLCreateDataSource
  • More informative error message if a invalid handle is passed to SQLAllocHandle
  • Add TIMESTAMP_NO_TMZONE to Postgres drivers types
  • The ANSI to UNICODE mapping in SQLTablePrivilges was broken
  • Fix incorrect buffer length in SQLGetInfo when calling unicode drivers

4.March.2005 2.2.11 Released

Yet More bugs, and fixes.

  • Fix a couple of typo errors in postgres driver and odbctest
  • Fix problem where ini files could be truncated under heavy load
  • Fix potential hang with FILEDSN's if the connect string included a DSN= entry as well
  • Don't save the SAVEFILE attribute in the filedsn.
  • Fixed bug that prevented the setting of some attributes via the DMConnAttr method
  • Removed the -module entry from the cursor lib, it prevents it building on HPUX.
  • Add a couple of extra info types to the pull down in odbctest
  • SQLGetInfoW was returning the wrong length when converting from the ANSI call. The same was also going on the other way. Also fixed same thing for other calls.
  • Fix incorrect value in SQLFetchScroll in odbctest
  • Fix memory leak in odbcinstQ
  • Check for MOC being found, before building GUI parts
  • Add list of export symbols to libodbcinst
  • Fix a problem in the cursor lib returning blobs
  • SQL_DIAG_NUMBER was being stored and returned as a SQLINTEGER instead of a SQLRETURN
  • Check if we can include sys/stats.h in iniOpen.c
  • Fix potential buffer overun in SQLConfigDataSource()
  • Fix problem in odbctest that prevented intervals from being displayed.
  • Cope with SHLIBEXT not being set when finding the cursor lib
  • Add a couple of missing Setup64 checks
  • Small change in __info to conserve memory
  • Add odbcinst.exp to distrib
  • Add missing ODBC2 installer stubs
  • Fix typo in SQLStatistics
  • Not passing user names and password into isql passes NULLS not empty strings into SQLConnect
  • Add missing SQLPrepareA from the driver manager export file
  • Make the default for DontDLClose 1, it doesn't do any harm, and fixes some segfaults
  • Fix printf format in the postgres driver on 64 platforms

20.Sept.2004 2.2.10 Released

More bugs, and fixes.

  • Add additional check in sqltypes.h to detect AIX 64 bit
  • Fixed minor copypaste error in configure.in
  • Fixed problem in configure script that prevented it using the qt-header and qt-lib config args. And allow the QT bin dir to be set.
  • Add new spec file (Thanks Stefan)
  • Alter string initialisation in isql to reduce memory use on some platforms
  • Remove the parts of odbcinstext.h that only are needed in unixODBC builds from outside app builds. (Cheers Stefan)
  • Small fix to DataManagerII
  • Protect iconv handle in threaded environments
  • Extend cursor lib to cope with where clauses
  • Remove incorrect duplicate function in iniOpen.c
  • Strip FILEDSN from connection string before passing to driver
  • If using a cursor lib use "IS NULL" instead of binding nulls
  • Allow 32 and 64 installations to coexist using a Driver64 entry in odbcinst.ini
  • Fix uninitialsed value that was causing "Driver does not support the requested version" warning
  • Fix typo in sqltypes.h that failed when building Perl DBD::ODBC
  • INI cacheing is not on by default, it can lead to a memory leak
  • Alter the Makefile.am's so builds outside the config dir can be done
  • Fix possible buffer overrun in SQLConnect
  • Replaced crypt auth in postgres with md5 for 7.1 Postgres driver
  • Fix memory leak in descriptor thread support

24.June.2004 2.2.9 Released

More bugs, fixes, build options and 64 bit tidy ups.

  • Fix problem so that if SQLGetPrivateProfileString fails because odbcinst.ini doesn't exist, it copys the default value into the output.
  • Avoid caling SQLFreeEnv the driver more than once.
  • Rename lo_xxx func in Postgres driver(s) to avoid clash with postgres lib.
  • Add odbc-config to find compile time options for use with other build tools
  • Fix call to SQLParamData in cursor lib
  • Add SQL_NULL_DESC to include files
  • Remove -M for unixware builds from libtool
  • Fix descriptor bug in SQLCopyDesc (Thanks Erik)
  • Add extra iconv targets
  • Fix bug that stopped RTLD_GROUP from being added to dlopen
  • Remove mem leak if libodbc.so is loaded using dlopen instead of linked as is normally done.
  • Add check for LP64 in sqltypes.h
  • Remove dlclose from ODBCConfig
  • Fix typo in the readline detection in configure
  • Fix potential hang with semaphore allocation in driver manager
  • Alter how the state is set after a SQLParamData to S5 insted of S4
  • Stop the driver manager from calling SQLFreeEnv twice in the driver
  • Update the uo_fopen functions
  • Add some extra mutex locks around end_tran code.
  • Alter the flag to build real 64 bit mode to BUILD_REAL_64_BIT_MODE
  • Update a couple of prototypes for 64 bit builds
  • Fix assorted 64 bit warnings and cast issues

18.Feb.2004 2.2.8 Released

More bugs, and fixes, some changes to connection pooling

  • Fix bug in SQLMoreResults that moves to incorrect state
  • Fix problem where metadata calls fail if in STATE_S5
  • Fix bug inserting ini entry with more than one '='
  • Fix some stupid leaks in the connection pooling code
  • Allow the driver manager to probe a pooled connection, to see if its valid. Set the query to use in the odbcinst.ini entry by setting CPProbe = SQL, for example this works well for postgres
            [PostgreSQL]
            Description         = Postgres SQL Driver
            Driver              = /usr/local/lib/libodbcpsql.so.2.0.0
            Setup               = /usr/local/lib/libodbcpsqlS.so
            CPTimeout           = 1000
            CPTimeToLive        = 100
            CPProbe             = select user
            FileUsage           = 1
            DisableGetFunctions = 0
            DontDLCLose         = 1
    	
  • Fix the SQLGetPrivateProfile code when passing NULL sections or names.
  • Fix SQLGetData to avoid a problem returning unicode from ODBC2 drivers.
  • Make the header sqlext.h include the unicode header sqlucode.h. This matches the MS header files.
  • Added DriverConfig lib for Mimer. (From Mimer)
  • Make connection pooling check using SQLGetConnectOption as well as Attr
  • Fix leak if iconv is used and a connection fails
  • Add configure option to disable the use of readline in isql

10.Jan.2004 Patch to 2.2.7

There is a bug in 2.2.7 that will send a statement to the incorrect state if SQLMoreResults is used. To fix this, there is a patch That will fix this, to apply copy the patch file into the root of the unixODBC-2.2.7 build tree, and run:

patch -p1 < SQLMoreResults.patch

Then rebuild with a make, make install as normal.

Sorry for any problems this has caused. Nick.


2.Dec.2003 2.2.7 Released

More bugs and a new supported platform (with a high irony factor) Microsoft Interix

  • Add missing comma in Oracle setup lib
  • Add -l option to isql to allow setting locale
  • Fix problem in SQLDriverConnectW that prevented connecting to UNICODE driver.
  • Remove a couple of the attribute mappings from SQLColAttribute when going from V2 app to V3 driver.
  • Clear SQLError errors in the same was as SQLGetDiagRec (this will help PHP out somewhat).
  • Add a check to handle driver that don't support SQLGetEnvAttr
  • Allow ATTR; in set attr lists from ini file
  • Small change to warning dialogs in odbctest (Thanks Mark).
  • Fix the cursor lib to work via SQLFetch as well as the other fetches.
  • Update the README.OSX file to cover building the cursor lib.
  • Remove the SQLNumResults() call after a execute. This means the DM doesn't know if there is a result set, but it seems to match what the MS one is doing.
  • Fix a major mistake in the thread protection, it worked fine until the driver returned a error.
  • Fix write beyond string bound in SQLDriverConnect.c (Thanks Ocke)
  • Add call to setlocale( LC_ALL, "" ) in isql.c, can also be set using -l option
  • Add initial support for Microsoft Interix, details in README.INTERIX
  • small change to ODBCConfig to have the password field in the driver properties hide the password
  • Make both # and ; comments in ini files
  • Update README.OSX to cover changing driver libs into bundles
  • Fix a couple of small display problems in odbctest
  • minor updates to odbctest:
    • Have the gui list match the input order and the ini file
    • Restore the selection after Add/Remove
  • Expand a text buffer to avoid overflow
  • Add RTLD_MEMBER to dlopen args if available (AIX)
  • Fix bug in SQLWritePrivateProfileString

21.July.2003 2.2.6 Released

Holidays release.

  • Add SQL...A() functions as well as W
  • Add some 64 Bit changes
  • Add support for SQL_BIGINT in Postgre7.1 driver
  • Fix bug in libtool that fixes a problem with a call to access()
  • Allow setting of odbcinstQ lib load with either environment variable ODBCINSTQ or in the [ODBC] section of odbcinst.ini with a odbcinstq = /path/to/libodbcinstQ.so
  • Alter the way SQLDataSources works (again :-))
  • Add configure option to force the way dlopen works
    --enable-rtldgroup      build with RTDL_GROUP passed to dlopen (when supported)  default=yes
  • Fix bug in stats collection
  • Add call to endpwent() to avoid a small leak
  • Allow isql to handle SQLMoreResults
  • Add option TracePid in [ODBC] section of odbcinst.ini, setting this makes the DM treat the TracePath as a path to a directory, and creates seperate log file for eack PID in use, mainly of use when used under something like apache.
  • Add extra unicode string for Solaris, see README.SOLARIS
  • Sort error messages according to state (as per the spec)
  • Remove trailing \ from doc/Makefile.am
  • Fix memory corruption in postgres driver that caused table creation under OpenOffice to fail
  • Tidy up gODBCconfig so it builds with current tools (or so I hope).

26.Feb.2003 2.2.5 Released

And yet more (small) bug fixes.

  • On error from SQLMoreResult don't change to S1
  • Fix build problem with QT 3.1.1
  • Fix spelling of error message
  • Fix bug where multiple connections give ODBC version error (thanks Jay Cai)
  • Increase the TEXT_FIELD_SIZE in the PG drivers
  • Set output handle to NULL if SQLAllocHandle call fails
  • Return any errors from the drivers SQLAllocConnect
  • Update version of automake and autoconf used to produce distributions
  • rebuild libtools configure to work with new autoconf

24.January.2003 2.2.4 Released

And yet more bug fixes, there can't be many left now :-)

  • Make the DM look in libdir for the cursor lib
  • Additions to DataManagerII
  • More thread safe issues and fixes
  • Fix uninitialised pointer in SQLDriverConnect.c
  • Fix memory leak in SQLGetDiagRec
  • Add missing SAG conformance SQLGetfo call in odbctest
  • Fix bug in SQLDriverConnect where warnings were not getting into the error stack
  • Add quotes to table names in DataManager
  • update the file "missing"
  • Add missing SQL_DECIMAL in logging conversions
  • VMS build changes... (Thanks Craig)
    • get caught up with changes since the original VMS port
    • follow the compiler warnings to fix myriad small nits throughout the sources
    • change the handling of shareable images so they no longer need to be placed in SYS$SHARE
    • improve the installation and set-up process
  • Make the cursor lib build without needing libodbc, it breaks on HPUX
  • Fix allocation problem in cursor lib
  • Fix potential seg fault in cursor lib, when bind is done will null indicator
  • Update README.QNX to cope with QNX 6.2
  • Fix problem with flags to dlopen
  • Make the exit logging in the driver manager display unknown return codes
  • Fix big in driver manager where a SQLAllocHandle in the driver can cause a seg fault
  • Add -s option to isql to allow the input buffer size to be set
  • Update some of the autoconf scripts to handle RH 8
  • Add extra attrs to oracle setup lib
  • Allow DMEnvAttrs to be set in odbcinst.ini as well
  • Alter the way the config mode is stored, don't use putenv now, as it causes trouble if the DM is unloaded. Also malloc the strings if the environment is set via the DM, to avoid the same problem with putenv. This caused a crash of OpenOffice on Solaris

23.AUGUST.2002 2.2.3 Released

More bug fixes, and again some significant UNICODE changes, including the use of iconv in the conversion.

  • Fix bug in unicode_to_ansi_copy
  • DataManagerII was missed from the last release, sorry, I thought that it had been moved to DataManager.
  • DatamanagerII: Remove duplicate rows with drivers such as Postgres which doesn't work as expected when getting lists of Schemas
  • Attempt to set permissions for the file dsn directory. * Fix bug with conversion of ODBC 2 values to SQL_C_WCHAR
  • Make the postgres drivers return a SQL State of 01000 for a warning, not 00000
  • Add option to isql (-x) to specify a separator in hex (0x09 is V tab) or octal (012)
  • Fix typo in pre 7.1 Postgres driver that broke bound timestamps * Fix what looks like a bug in the libtool dlopen wrapper, its fails to fail, when failing to load a lib.
  • Only call the ODBC 3 version of SQLGetFuctions if we have requested ODBC3 some drivers (SAPDB) that return ODBC 3 API's only return this call if the connect specified ODBC 3.
  • Check the attributes being passed into SQLSetConnectAttr, only pas into SQLSetConnectOption if they are ODBC 2 values. The same for SQLSetStmtAttr
  • Allow double clicks on dsn's to bring up the configure in ODBCConfig
  • Add extra thread checks for FreeBSD
  • Add check for SQL_NO_DATA in isql
  • Add code to make DM cope with SQL_NO_DATA from SQLExec(Direct)
  • Change UNICODE conversions, remove all inplace converts.
  • Add support for iconv for the UNICODE to ANSI conversions
  • Add code to make DM code with SQL_NO_DATA from SQLExec(Direct)
  • DBFIO: completed basic functionality (DBF file access library)
  • dbfio: completed basic functionality (test program for DBFIO)
  • Add checks for usage counts for loaded libs
  • Replicate the way the MS DM only calls SQLAllocEnv on a driver once
  • Add fix from John L Miller for SQLEndTran and SQLTransact
  • Make it try and find a working iconv set of encodings
  • Small fix to SQLMoreResults from John L Miller
  • Alter error state return in SQLCloseCursor
  • Allow state 07009 to be mapped to S1002 or S1093 depending on the calling function
  • Fix major ineffiency with text fields and the Postgres drivers
  • Fix incorrect return state from SQLEndTran/SQLTransact
  • Make rowcount return a count of -1 if its returns a error
  • Further AIX linking tweeks

08.JULY.2002 2.2.2 Released

Mainly a bug fix release, but with some significant UNICODE changes

  • added -m option to isql
  • improved row count at end-of-result in isql
  • allow SQLColAttribute(s)(W) to be called with a column number of 0 to get the descriptor count
  • Remove -export-symbols from sample, it was causing some problems on Solaris
  • Add DataManagerII, this is a updated version from Mark Vanderwiel
  • Update libtool to escape from AIX build problem
  • Add fix to avoid file handle limitations
  • Add more UNICODE changes, it looks like it is native 16 representation after all. The old way (Fixed at BE) can be reproduced by defining UCS16BE
  • Add iusql, its just the same as isql but uses the wide functions
  • Couple of cast warnings cleaned up
  • Add change to libtool to clean up AIX build
  • Create README.AIX
  • Fix small bug in SQLDriverConnectW, I was allocating 1 byte two little
  • Fix typo in SQLConnect that wasn't allowing the driver manager to supply SQLFreeConnect for drivers that didn't support this.
  • Fix build on Caldera OpenUnix8 (not sure why anywone would want to go anywhere near this OS IMHO...)
  • Move DataManagerII to DataManager
  • Alter what comes back in the second field from SQLDataSources to be the description line from the ODBCINST.INI entry, this maches what happens with the windows DM.

24.APR.2002 2.2.1 Released

Mainly a bug fix release.

  • odbcinst: now tries to auto create system odbc.ini
  • odbcinst: implemented -n, -l, -h for -q -s
  • Add option to disable definition of windows types in sqltype.h
  • Fix small bug in ini uper case routines.
  • Added STMT and OPTION to MySQL driver setup
  • Added -j arg for odbcinst (shows INI file names)
  • Fixed seg fault bug in Text File driver
  • Fix small bug in SQLBrowseConnect
  • Fix check for Darwin (OSX)
  • Fix bug in sqltypes that stopped 64 bit builds
  • Fix build problem on 32 bit platforms without long long
  • Add option to set environment (unix) values via SQLSetEnv, this can also be done in the odbc.ini, for example
          [sample]
          Description     = Test to DB2
          Driver          = DB2
          DMEnvAttr       = SQL_ATTR_UNIXODBC_ENVATTR={DB2INSTANCE=db2inst1}
    
  • Fix some cases where the trace file env value was "Trace File"
  • Make the readline check make sure there are headers as well as libs
  • Add check to use RTLD_GROUP in libltdl if present
  • change DWORD definition to unsigned long where applicable
  • Fix bug in error reporting that cound crash with multiple errors and ODBC3
  • Remove C++ comment from exe/odbcinst.c
  • If we are not building the drivers, dont build sqp
  • Alter default size of odbctest window
  • Improve check for stats headers
  • Add install-data-am section back to Makefile.am to create the empty ini files
  • Extend naming of cursor lib to work on non linux platforms (it expected a .so)
  • Make Postgres driver(s) handle {oj ... } syntax, this helps OpenOffice
  • Fix some endian issues with 4 byte unicode support
  • Update the MySQL driver code

30.JAN.2002 2.2.0 Released

The MySQL people have now added the source of their new ODBC 3.5 driver to the distribution. Its a separate configure in Drivers/MySQL. Any problems or questions are best pointed at the MySQL lists.

Other than that, this release contains more bug fixes, they are getting more and more obscure as more and more people use ODBC 3 features :-)

  • Allow SQL_ATTR_LOGIN_TIMEOUT to be set on a connected connection doesn't make that much sense, but it mirrors what the Windows DM does.
  • Change DWORD in sqltypes to be a unsigned int to work on 64 bit platforms
  • Fix incorrect diag message in SQLSetStmtOption.c
  • Hack to the 7.1 postgres driver to enable SQLPrepare to be called BEFORE SQLBindParameter
  • Reset the stmt->prepared flag when going into a SQLParamData state after SQLExecDirect
  • Fix silly bug that stops odbctest failing the first entry on the test list
  • Add missing tracing to SQLBrowseConnect
  • Fix some potential corruption in SQLGetDiagField
  • Add some simple cacheing to SQLGetPrivateProfileString
  • check for redefinition of SQL_OL_CAP to stop AIX build breaking
  • Add missing getGlobalDefaults in PG 7.1 driver (Thanks Rick)
  • Fix bug in SQLConnectW (Thanks Artiom)
  • More mods to SQLConnectW and SQLDriverConnectW
  • More MS generated 64bit changes

21.DEC.2001 2.1.1 Released

Bug fix release, putting better 64 ODBC support in place, and assorted small problems cleared up

  • started to add mac package/install dirs for PackageMaker
  • added qmake project files as an optional build process
  • ODBCConfig can build with a static odbcinstQ
  • Remove auto text driver setup, this breaks new installs as it can't find odbcinst
  • Fix mixup in SQLSetScrollOptions
  • Small portability fix for BSDI
  • Make UNIX Domain socket settable in postgres driver via UDP= in odbc.ini dsn entry
  • Fix bug where some SQLGetConnectAttr values were not coming from the driver, but the driver manager
  • Alter odbctest to make directory select in Manage Auto Test work better
  • Fix browser in DataManager so that it works with drivers that don't return values from SQLRowCount
  • Fix some error retrieval problems
  • Alter the include files to match MS ODBC 3.52 with 64bit support, fix assorted warnings when building on 64bit platforms
  • Add option to force tracing on, this is for use with apps like StarOffice that disable tracing
  • Add support for MAX_ROWS in postgres drivers
  • Add fix to cover Darwin 1.5 (OSX)
  • Add DisableGetFunctions option to driver section of odbcinst.ini to cope with drivers that can't handle the call (Solid 2.2 AFAIK)
  • Fix 64 bit bug in Postgres driver
  • Add some ODBC 3 bits to the Postgres driver to make it run with Star Office 6.0 (beta)

27.NOV.2001 2.1.0 Released

Mainly a porting release, but Peters change to ODBCConfig has given me a excuse for a version number change.

  • attempts have been made to cleanup GNU auto-stuff to make the cvs code more accessable
    • added README.cvs
    • hopefully "make -f Makefile.cvs" works on more platforms
  • implemented more in SQLManageDataSources()
    • created odbcinstQ (plugin for Qt GUI support in odbcinst)
    • moved most code from ODBCConfig to odbcinstQ
  • Make calls to localtime in Postgres Driver only when required
  • Made some changes to Postgres prototypes
  • Add option to get odbcinst info from stdin
  • Make SQLError errors clean down after each API call for ODBC 3 apps
  • Add mapping from SQLColAttribute attributes to ODBC2 attributes
  • Fix reported leak in ltdl.c
  • Make the path for file DSN's come from the odbcinst.ini file
  • If using a ODBC 3 driver call the one off version of SQLGetFunctions
  • Now builds better on Darwin
  • Reinstate conversion from wide to ansi types in SQLGetData if the driver is ODBC2, also adjust the buffer length to prevent buffer overrun.
  • Stop ODBCConfig setting Trace File in odbcinst.ini it should be TraceFile

18.Sep.2001 2.0.11 Released

Stupid mistake on my (Nick) part, I left a #ifdef in isql,c that prevented it from getting a list of tables or columns. Sorry


16.Sep.2001 2.0.10 Released

Bug fixes, and support for FILEDSN's

  • odbctxt, escape special chars when read/write lines into a table
  • Fix bug where a Execute that errors should return to state S2
  • Update README.OSX to cover a txt driver problem
  • Add Drivers/txt/doc to distribution
  • Add missing text driver setup from spec file
  • add missing VMS opt files
  • Add missing include from DataManager (Samuel Cote)
  • Remove LT_GLOBAL from the libtool code. This breaks perl amongst others.
  • Allow the display of unicode data in logs
  • Fix stupid WCHAR bug in SQLGetData
  • Move ifdef in __stats.c to allow the building of ODBCConfig under Mac OSX
  • Add missing args to prototype in sqlext.h (Thanks Christian)
  • Pass on unknown connection attributes to driver after connect
  • Make SQLGetPrivateProfileString return the actual len read, not + 2
  • Make the OSX build cleaner, it just needs the dlcompat lib now
  • Allow ODBCConfig to handle attributes not described in setup libs
  • Stop the ODBC Version being set when there are open connections
  • Alter odbcinst error messages to match windows
  • Fix incorrect installer errors (they were offset by one...)
  • Create ./odbc.ini if it doesn't exist
  • Fix typo that stoped odbctest from building on Suns latest compiler
  • Slightly alter the unicode definitions in sqltypes.h
  • Add support for FILEDSN in driver manager, odbcinst, and ODBCConfig
  • Fix buffer overrun in Postgres drivers

18.Aug.2001 2.0.9 Released

Bug fixes, a new platform, and the addition of Attribute overrides

  • odbctxt: tweeked - now works on PowerPC
  • Add auto register for text driver to Makefile.am
  • Add check for flex, sqp won't build with lex now
  • odbctxtS: now supports CaseSensitive property
  • Add build time option to select wchar_t UNICODE (4 bytes) as opposed to signed short UNICODE (2 byte)
  • Add build time option to select the length of logged strings (LOG_MESSAGE_LEN in drivermanager.h)
  • Fix libtool bug that caused the AIX build to not produce shared libs - note to build on AIX now requires adding --enable-static to the configure line
  • Fix couple of typos that caused the build to fail on Solaris
  • Add conditional for 64 bit application compilation when the sizeof(long) will not have been done by configure
  • Fix small bug in postgres driver on debian
  • Add build instruction for QNX
  • add Slovak translation of gODBCConfig
  • Fixes to SQLBrowseConnect in driver manager
  • Get the DM to check with the driver for the CLI Year
  • Fix small bug in strncasecmp in extras
  • Add extra support for SQLSetConnectAttr before connection
  • rename global structure in Postgres drivers to avoid a colision
  • Add support for presetting Env,Conn and Stmt attributes via the ini file using the following syntax in the dsn section of odbc.ini
    DMConnAttr = SQL_ATTR_CONNECTION_TIMEOUT=30
    DMStmtAttr = SQL_ATTR_NOSCAN=SQL_NOSCAN_OFF;*SQL_ROWSET_SIZE=20
    the * indicates thats its a override attribute, so any attempt to call SQLSetStmtAttr to set the rowsize, will always set it to 20 in this example.

    NOTE: that at the moment this info will be lost if using ODBCConfig


25.June.2001 2.0.8 Released

Mostly additions to the text driver, with a couple of bug fixes.

  • Add definition of alphasort and checks for location of dir.h in the txt driver.
  • Add some missing functions from cur lib
  • Fix a problem in configure.in that was loosing LIB settings
  • Remove C++ comment from sqlext.h
  • sqp: now makes use of check for NOT NULL in CREATE TABLE
  • sqp: fixed missing pointer assignment (affected CREATE TABLE)
  • sqp: added more debugging messages (but turned off by default)
  • odbctxt: removed long log message (would cause seg fault)
  • odbctxt: now appends a space to each SQL statement; this is to work around a problem in the sqp lexer when last char is close quote
  • Fixed a bug in the driver manager that would fail if the driver returned a max size error message
  • sqp: now makes use of IS NULL and IS NOT NULL
  • sqp: now makes use of INSERT INTO table(col1,...)
  • sqp: now makes use of LIKE and NOT LIKE (with optional ESCAPE)
  • sqp: now makes use of any mix of AND, OR, () in WHERE clause
  • sqp: now makes use of ? for column value (used in SQLBindParameter)
  • sqp: now makes use of integers for column values (just mapped to string)
  • odbctxt: basic implementation of SQLBindParameter (only SQL_C_CHAR input allowed)
  • odbctxt: new syntaxes of sqp parser taken into account
  • odbctxt: new option CaseSensitive (Yes or No) allowed in .odbc.ini file
  • odbctxt: fix message length returned in SQLGetDiagRec function
  • odbctxt: drop statement when freeing it via SQLFreeHandle
  • sqp: default string length changed to 255
  • Fix threading problem when multiple ENV's are in use

6.June.2001 2.0.7 Released

Mostly a bugfix release, but with a port to Mac OSX and OpenVMS, and support for QT 3.x added. Also checked that it builds under Linux64.

  • ODBCConfig/DataManager: Updates for Qt 3.0
  • Add extra decoding of types in the log output
  • Fix some type problems for 64 bit platforms
  • Fix rogue logging in SQLGetInfo
  • Add correlation and alias to sqp
  • Add some fixes to the txt driver to enable it to work with StarOffice
  • Stop Ctrl-D from Segfaulting isql
  • Add a example autotest to the build
  • Make isql detect the EOF when not using readline
  • Tidy up the libs from autoconf
  • DataManager: refinements such as; logout a DSN, isql history
  • sqp: CREATE TABLE now supports most data types and some column options
  • sqp: added DROP TABLE
  • sqp: added ORDER BY
  • sqp: enhanced api with sqpOpen, sqpClose...
  • odbctxt: checked in rewrite (much less code now)
  • odbctxtS: added setup lib for odbctxt
  • ODBCConfig: Stats now shows PIDs
  • Add missing -lpthread in configure (thanks Jon Kåre Hellan)
  • Remove C++ comments from autotest.h
  • Fix big in Postgres7.1 with binding a column to a double (thanks Jürgen)
  • Update libtool to 1.4 Add OpenVMS port (Thanks Jason)
  • Add extra PG7.1 numeric fix (Thanks Zoltan)
  • Add fix to PG7.1 to allow the retrieval of more than 8K blobs, adjust the define TEXT_FIELD_SIZE in psqlodbc.h (Thanks Bojnourdi)
  • Fix small typo in SQLConnect (Thanks Martin)
  • The postgres drivers didn't recognise "Yes" in the ini files, only 1 or 0, fixed now
  • Avoid "broken pipe" message with postgres (Thanks Gary)
  • Alter check if cursor lib needed with ODBC 3 apps
  • Fix couple of bugs with cursor lib
  • Get to build on Mac OS X (without GUI bits ATM) look at README.OSX for help and hints
  • Fix odbctest for use with QT 3
  • Remove default trace option from ODBCINSTConstructProperties
  • Stop ODBCConfig from accepting null DSN names

18.Apr.2001 2.0.6 Released

AutoTest added to odbctest and bug fixes. The odbctest app now supports the use of test lib's in the same was as under windows. The distribution contains some examples in the samples directory. With any luck, this could form the basis of some conformance tests.

  • Add define for _THREAD_SAFE to help AIX builds
  • Fix bug in cursor lib introduced by UNICODE addon's
  • Make the header definitions work on 64 bit platforms
  • Fix a incorrect return from SQLConnect with pooling
  • Add support for unicode drivers that have ANSI functions renamed to the unicode versions (duh!).
  • If pooling, then set the flag to not close the driver handle (DontDLClose)
  • Add CPTimeToLive option to restrict the number of times a driver will be reused (useful with leaky drivers)
  • Alter logging, and support setting logging via SQLSetConnectAttr call
  • Add a AutoTest facility to odbctest
  • Fix incorrect error test in SQLBrowseConnect
  • Check descriptor is for a open connection
  • More unicode fixes

9.Apr.2001 New RPMS

Martin 'Edas' Ediman has built some current RPM's. Take a look at the Downloads Page.

Thanks Martin


21.Mar.2001 2.0.5 Released

Bug fix to 2.0.4

  • Add extra autoconf checks for -pthread and -mt compiler options
  • Add Postgres7.1 tree for code from new postgres development
  • Fix retrieval of errors for SQLTables and SQLColumns call in isql
  • Fix mem leak in DM if SQLDisconnect was called with open statements or descriptors
  • Fix broken check if readline needs -lcurses
  • Add setup lib for SAPDB (thanks Holger Schurig)
  • Added locale fixes to PG7.1 driver (thanks Zoltan)
  • Fix configure problem on Solaris

7.Feb.2001 2.0.4 Released

Bug fix to 2.0.3. SQLSetConnectAttr was broken by the UNICODE changes, its fixed now (I hope...). There is also a change to the Postgres Driver to make it work better with other locales (thanks, Zoltan Boszormenyi)


14.Jan.2001 2.0.3 Released

Bug fix to 2.0.2. SQLGetInfo now works correctly again, the other changes by Nick and Peter are :-

  • sqp: added a yywrap() to eliminate link dependency
  • sqi: home dir default if no path with database file name
  • sqi: creates database file if not exists
  • ini: open fails if existing file appears not be an ini
  • Fixed problem where null row status array could be passed into SQLExtendedFetch
  • Fixed further bug in unicode_to_ansi (thanks Martin Edlman)
  • Fixed bug in UNICODE converison in SQLGetInfo
  • Added sqi/test to build tree, its moved to exe
  • Add extra checks for readline to see if -lcurses is needed
  • Add check for -lpthreads that should be ok on Tru64
  • Replace printf with puts in isql to cope with columns containing '%'

09.Jan.2001 2.0.2 Released

Bug fix to 2.0.1. SQLGetDiagRec core dumps in ansi_back_to_unicode.

Peter has also made a couple of changes to ODBCConfig


06.Jan.2001 2.0.1 Released

Bug fix to 2.0.0. SQLError was returning rubbish in SQLSTATE


04.Jan.2001 2.0.0 Released

This build has the following major additions, some I think are big enough to justify the new major version number.

  • Initial support for UNICODE drivers and applications
  • Connection pooling
  • DM Stats collection and display
  • Support for GNU portable threads
A full list of changes follow...
  • Added table browse for DataManager
  • Fix problem in template driver with Solaris compiler
  • Add msql-include option to specify search path
  • Fix compile problem in MiniSQL code with Solaris compiler
  • Fix conditional include of strings.h in ODBCConfig build
  • Fix tracing in SQLConnect
  • Alter check for DSN length in SQLConnect
  • Validate input handle before setting output handle
  • Fix error code from SQLSpecialColumns and null table names
  • Fix potential deadlock in SQLFreeHandle
  • Add change to make the Postgres driver look for the local socket in two places to cope with debian distrib
  • Fiddle with the MiniSQL searching again
  • Add sqlucode.h to headers
  • Fix threaded race condition in __handles.c
  • Revamped Credits page in ODBCConfig.
  • Show more useful info in DataManager tree-view
  • Fixed problem with DataManager 'hanging' upon exit
  • Added -pthread option to gcc calls when needed
  • Now needs QT 2.2.x, changed configure to check
  • Add missing identifier_type in SQLSpecialColumns log
  • Add some checks for long columns in isql and DataManager
  • Add connection pooling support to driver manager
  • ODBCConfig; Code cleanup. Removed extra class layer created by QtArch
  • ODBCConfig.Drivers.Config; driver specific options now accepted, if already exist in odbcinst.ini, as simple text fields in GUI
  • ODBCConfig and DataManager now attempt to save and restore state... such as window geometry.
  • ODBCConfig now supports connection pooling options.
  • ODBCConfig now has a Stats tab which is similar to CPU or mem monitor. This will be improved upon and the code will likley make its way into a dock widget
  • Add UNICODE support
  • Disable the default building of static libs
  • Add support for GNU portable threads
BTW, Happy new year :-)
14.NOV.2000 1.8.13 Released

A few more bugs out of the way.

  • Add missing line continuation char in SQLGetDiagField.c
  • Add fix to SQLGetDiagField to return the server name on statements and descriptors
  • Remove -lcrypt from all but the Postgres driver build
  • Remove CR/LF expansion in Postgres driver
  • odbctest was calling SQLPrimaryKeys when it should have been calling SQLTablePrivileges
  • Add SQL_DRIVER_HDESC support to SQLGetInfo
  • Add display of returned error text in log file
  • Take notice of DontDLClose when calling ConfigDataSource.
  • Fix duplicated log messages on failed connect
  • Fix incorrect arg to SQLError, change from SQLINTEGER to SQLSMALLINT (Thanks Ralf)
  • Updated libtool to 1.3.5
  • Fixed crash in SQLConnect when NULL server and SQL_NTS passed in (Thanks Venu for the next four changes)
  • The error code mapping was wrong, it should only map ODBC 3 errors to ODBC 2, not the other way around
  • Fixed a incorrect error return in SQLPrepare when a NULL string was passed
  • Zero the handles when released, just to avoid reuse of values
  • Added readline support to isql, (thanks Tomas Zellerin)
  • Support the setting of SQL_AUTOCOMMIT before connecting
  • Fixed bug in odbctest's SQLColAttributes call
  • Add test in configure for localtime_r and use if present
The next thing I will be looking at is UNICODE support...
18.AUG.2000 1.8.12 Released

This corrects a couple of problems in the Postgres driver.


16.AUG.2000 1.8.11 Released

Another bugfix release pulling together the bugs discovered since the last release. Major addition is it now works with Corel Paradox for Linux

  • Add --enable-fastvalidate option. This reduces the safety of the handle checking but improves performance when using many handles
  • If SQLDriverConnect is called with a NULL con_str_in look for the DEFAULT DSN entry
  • Remove a underscore from odbcinst_system_file_path, it seem's to cause the linker on AIX to have problems
  • Remove some additional C++ comments from the postgres driver
  • Call SQLSetConfigMode before calling SQLConfigDataSource
  • Fix error handling in case of referential integrity violations in Postgres driver
  • Fix problem with SQLColAttributes swapping its args, and don't check the driver version before mapping to ODBC 3 values. (thanks Tomas)
  • Make SQLDescribeParam work in state S4 and above, when in ODBC 2 mode
  • Avoid potential buffer overrun in __info.c when reporting errors from SQLConnect/SQLDriverConnect
  • Fix potential mem corruption in SQLGetDiagField (thanks Jay)
  • Add fix to allow the Postgres driver to receive large objects (thanks Bill)
  • Fix buffer overrun in SQLGetDiagField (thanks again Jay)
  • Fix for SQLGetDiagField(SQL_DIAG_SUBCLASS_ORIGIN) returning a null string, it now returns something meaningful
  • The Postgres driver didn't shupdown the connection to the database before dropping the socket
  • Fix incorrect return from SQLDataSources
  • Make SQLDriverConnect return all errors from the driver not just the first one
  • Add Oracle setup lib for http://www.easysoft.org/projects/oracle
  • Stop isql calling SQLFetch if the query doesn't generate a result set. This stops the function sequence error
  • Add missing break in postgres password authentication
  • Add fix in SQLTables for broken version of EXCEL
  • Fix a bug that caused SQLTransact to fail if called with a connection handle in state C4. This caused Corel Paradox to fall over

28.JUN.2000 1.8.10 Released

A bugfix release pulling together the bugs discovered since the last release. Many found with the growing number of ODBC 3 apps and drivers.

  • Add some fixes to make it work and compile on IRIX (Murad)
  • Add a couple of missing casts in odbctest (Michael)
  • Fix BOOL bug in postgres driver (Dmitriy)
  • Use setenv rather that putenv if available
  • Fix a couple of bugs in odbctest/attr.cpp
  • Fix problem where info warnings could be lost
  • Fix a couple of problems in the Postgres driver
  • Fix bug that caused a success with info message from SQLExecute or SQLExecDirect to be lost if used with a ODBC 3 driver and the application called SQLGetDiagRec
  • Fix problem where bookmarks were failing for StarOffice 5.2
  • Stop SQLDriverConnect dumping core when passed a null dsn string
  • Map ODBC 2 SQLSTATE values to ODBC 3
  • Add missing odbcconfig.h to the install include in gODBCConfig
  • Fix incorrect state from Postgres Driver
  • Fix integer length problem with SQLExtendedFetch that manifested on big endian platforms (Sparc,Aix,HPUX etc) (Alex)
  • Avoid clash with definition of CHAR in GNOME XML layer
  • odbctest SQLExtendedFetch was using the wrong orentation value
  • Add define for SQLTCHAR
  • Fix problem in setting tracing on, and a core dump when loading the cursor lib failed (Steve)

13.JUN.2000 1.8.9 Released

The major addition for this release is the odbctest app, which is a QT version of the test tool shipped with the Windows ODBC SDK. There are also these changes

  • Fix a State problem when coming out of a SQLParamData cycle
  • Fix bug where SQLBrowseConnect may leave a connection in C1 not C2
  • Pass LOGIN_TIMEOUT onto driver if it is set before the connect
  • Reverse the test to set DIAG_CLASS_ORIGIN
  • Return SQL_DIAG_SERVER_NAME and SQL_DIAG_RETURNCODE
  • Allow explicit allocation of Descriptors
  • Fix a problem with the SQLFetchScroll -> SQLExtendedFetch mapping
  • Fix a problem in the MiniSQL Makefile.am
  • Call SQLSetConfigMode before calling ConfigDSN
  • Fix problem in SQLCopyDesc and complete case when DM does the work
  • Return SQL_SUCCESS_WITH_INFO messages from SQLConnect
  • Added MetaDataBlockFetch connection attribute to esoob driver
  • Fix bug in __info.c that caused a small memory corruption when logging was on
  • Enable the reporting of errors on descriptors
  • Fix extra ] in the msql part of configure.in
  • Add error reporting to DataManager (Tim)
  • Assorted fixes to text driver (Peter)

05.MAY.2000 Patch for StarOffice 5.2

Another patch for StarOffice 5.2 if you are using the Postgres driver. Apply this in the Drivers/PostgreSQL directory and remake and install.

I think however its down to a bug in the StarOffice beta so I hope it will not be needed in the next release.


27.APR.2000 1.8.8 Released

Bug fix release, now works fine with Star Office 5.2

  • Add extra include for UnixWare
  • Added some fixes to the template driver found by Nikolai Afanasiev, and also fix the logging code to recongnise 'On' as well as 'Yes'
  • Alter distrib to not include moc generated files
  • Using the env var ODBCHOME was a "real bad idea" for perl I have changed it to ODBCSYSINI
  • Alter logging so that if the log file fails to open stderr is not used. This caused problems in server processes.
  • Fix a problem with SQLDrivers
  • Fix a potential leak, that stopped SQLDisconnect being called
  • Fix problems with text driver
  • Improve isql (thanks Ralf)
  • Make gODBCConfig a proper gtk widget
  • Remove stray printf in the DM code
  • Fix a couple of daft bugs, thanks to Tim Roepken
  • Fix a problem where handles were not being free'd
  • Fix a problem that stopped StarOffice 5.2 working with a ODBC 2 driver, it failed to set SQLGetDiagRec in the output of SQLGetFunctions

25.APR.2000 Oracle Driver

Easysoft have started a project to create a Open Source Oracle ODBC Driver. Details can be found here www.easysoft.org.


18.APR.2000 RPM's

Murray Todd Williams has made up some RPM's which you can get from the CodingApes site. At the moment this contains binaries for Intel and PPC Linux. I hope others will follow.


26.MAR.2000 Building with Red Hat 6.2

It looks as if Red Hat 6.2 will contain QT 2.1 (beta 1). The mclass files that are in the 1.8.7 release will not work with this version of QT. The fix however is simple, just cd to the ODBCConfig and DataManager directories and rm mclass.cpp, then when you make the version of moc that comes with QT 2.1 will rebuild these files and it should be fine.

Nick


15.MAR.2000 1.8.7 Released

The big new addition in this release is a GTK+ based version of ODBCConfig. It also addresses the following bugs/changes

  • Add DontDLClose flag to the odbcinst.ini settings. This prevents the driver manager from unloading the driver and works around what seems to be a bug in the CLI lib from IBM. This now means that unixODBC will work with DB2
  • The problem with the new libtool and perl DBD:ODBC has been fixed in this release.
  • Threads are now supported under Solaris
  • The environment var ODBCINI now points to the user ini file defaults to ~/.odbc.ini. While the ODBCHOME var points to the location of odbc.ini and odbcinst.ini, normally /usr/local/etc
  • A couple of extra defines have been added to sqltypes.h to fix a Perl DBD:ODBC build problem
  • A bug in the Postgres driver that prevented the use of SQL_DATA_AT_EXEC has been fixed
  • The code that checks for a max filename length now works properly on HP/UX
  • ODBCConfig will now try calling SQLConfigureDSN to support driver that can handle their own dialogs
  • The mutex functions have been made static to avoid name clashes
  • A long standing bug in the Postgres driver has been fixed. Its now possible to call SQLNumResultCols after SQLPrepare. This has been a bug for so long that it was assumed to be a "feature" of Postgres

29.FEB.2000 Update for DBD::ODBC-0.24

If you are trying to install unixODBC with Perl DBD::ODBC-0.24 then apply this. patch in the include directory, either in the unixODBC tree before installing or in the target include directory (/usr/local/include by default)


24.FEB.2000 Problem with Perl DBD::ODBC

I have discovered that the new version of libtool which is included with unixODBC-1.8.6 has a problem when used with Perl. The dlopen call uses the GLOBAL flag, this can cause DBD::ODBC to fail. I have created a patch for this here. Apply the patch in the libltdl directory and then rebuild the Driver Manager


22.FEB.2000 1.8.6 released

Bug fix release.

  • Fix a memory leak in the Postgres Driver
  • Fix a bug when using a ODBC 3 driver and with threads enabled. SQLGetDiagField dumped core
  • Catch a problem introduced by PHP-4 beta 4 where calling SQLFreeStmt after SQLDisconnect would dump core
  • Add support for Solaris Threads
  • Make the default to build with thread support
  • Add option to use ODBCINI to move the system DSN files
  • Add Setup lib for Easysoft ODBC-ODBC bridge
  • Add flag to disable the SQLFetch->SQLExtendedFetch mapping for broken drivers
  • Allow ini file values to contain '='
  • Fix bug with in SQLGetStmtAttr
  • Add a couple of patches to improve solid driver support

08.FEB.2000 Easysoft provide support for unixODBC

Due to the increasing support load from unixODBC, Easysoft have offered to provide free support for unixODBC

In case you are wondering who Easysoft are, they are the company that pay me to write ODBC drivers during the day, and have been very supportive of unixODBC, both by allowing me to work on the project and provide support during working hours, also by supplying web and ftp space. And of course the unixodbc.org domain name. Easysoft have been providing ODBC drivers for Windows/Unix and VMS for over 7 years, so they are quite capable of providing support for the project and this change will enable me to concentrate on coding.

Easysoft's support desk are providing this service free of charge, to users of unixODBC, but I have to add that they are not in any way responsible for any problems caused by the use of unixODBC.

However if there are people using unixODBC commercially that would feel more secure with a proper support contract, Easysoft are prepared to do this as well. For details of this contact Easysoft Sales

Nick Gorham


23.JAN.2000 1.8.5 released

Again a bug fix release. Replaces the 1.8.4 release (never trust even numbered releases :-)

  • Fix a bug in SQLAllocHandle where a failed stmt alloc would report the error on the wrong handle.
  • Make the default path $prefix/lib when adding a driver in ODBCConfig
  • Add the missing [unixODBC] prefix to error messages
  • Fix a problem found in the template driver in SQLDriverConnect
  • Update to libtool 1.3.4
  • Fix compile problem in ODBCConfig
  • Fix typo that broke the SQI build in 1.8.4

28.DEC.99 1.8.3 released

This is mostly a bug fix release, but there are a couple of minor added features.

  • Fixed a bug, where a SQLConnect, SQLDisconnect and then SQLConnect would fail, because the driver lib was not being unloaded.
  • Merged in some changes to the Postgres driver to handle LONGVARBIN's better.
  • mask out the password fields in the logging.
  • Fixed a incorrect SQLState return value.
  • Removed the C++ comments from the Postgres driver so it will compile on non gcc platforms.
  • Fixed some non linux build problems.
  • Added support for encrypted passwords in the Postgres driver.
  • Stress test the threading support. It seems very solid now. 30 concurrent statements on the same connection running against a non thread safe MyODBC driver works a treat now.
P.S. Happy new year... Nick
2.DEC.99 Driver for YARD-SQL

The people responsible for YARD-SQL have let me know that they have ported there ODBC driver to work with unixODBC, contact them at the yard web site for more details


19.NOV.99 1.8.1 released

To fix a couple of bugs in the original 1.8 distribution I have put a new 1.8.1 build on the downloads page.


14.NOV.99 1.8 released

A new release of unixODBC is now available, Changes can be found here
A logo has been done by Richard Allsebrook that can be used on sites that use unixODBC


7.OCT.99 Beta 1.7

The build is now more portable to non Linux platforms
added --enable-gui configure option to turn off all c++ and GUI bits
improved performance by removing logging code when logging is disabled
first day out for the cursor lib, read only at the moment, a sample program is included in samples/cursor.c
fixed problem that if the user .odbc.ini was not found the code failed to go on to the system odbc.ini
Assorted bug fixes and tidy up's


8.SEP.99 A neophyte's guide

Charles Morrison has contributed a very useful article about his experience of installing unixODBC and MySQL.
Thanks Charles. While we are in a documentation mood, here is another new text about configuration.


4.AUG.99 Beta 1.0.6

A standardised build/config now follows the GNU recomendations
The code is now safe to use in a threaded environment
A number of bugs in the Driver Manager
Some changes have been made to improve the portability of the code

Thanks for all those who reported short-comings with unixODBC and particular thanks to those that submitted fixs and enhancements. I believe that all of those requests have now been addressed so lets do some more testing. My next plan is to start work on the cursor library. (Nick).


6.JULY.99 unixODBC in KDE!

The unixODBC DriverManager and the ODBCConfig tool have been integrated into the KDE desktop. The DriverManager will be mirrored, from time-to-time, while a KDE specific version of ODBCConfig has been created for KDE.


8.JULY.99 Project Lead

Due to other commitments Peter Harvey has stepped down as project lead for the unixODBC project, Nick Gorham (Author of the Driver Manager) has taken over the role.

A new mailing list has been setup for people interested in the development of unixODBC. To join send a message with 'subscribe unixodbc-dev' in the message body to majordomo@unixodbc.org

Please note the change in contact email.


6.JUN.99 Beta 1.0.5

much improved mapping 3.x to 2.x in DM
a number of 'minor' fixs/enhancents to DM
more work on MySQL driver (now mirrord in unixODBC)
more work on PostgreSQL driver
minor enhancemnts to GUI utilities
enhancements for StarOffice users

Thanks for all those who reported short-comings with unixODBC and particular thanks to those that submitted fixs and enhancements. I believe that all of those requests have now been addressed so lets do some more testing.


4.JUN.99 CVS

CVS, source code respository, is up. Public, read-only, access is availible for those that want the very latest unixODBC source code. Check out the download page for more.


19.MAY.99 Beta 1.0.2

Improved logging in the DriverManager.
Fix applied to Driver Manager catalog functions.
PostgreSQL driver enhancements.
Successfull tests with unixODBC and StarOffice using the enhanced PostgreSQL driver (included in this distribution).


16.MAY.99 Beta 1.0.0

This release is actually a mixture of Alpha and Beta software. Here is a hint of what is new...

A completely rewritten DriverManager.
PostgreSQL driver.
NNTP (Internet News Server) driver.
Enhanced ODBCConfig.
Enhanced DataManager.
Many fixs.


28.APR.99 Alpha 3.0.2

This release is much more stable. A bug in the LST lib has been fixed which makes the entire distrinution much more stable. This same bug also prevented the DataManager from working correctly so now, you should find the DataManager functional with the Text File Driver.

SQI has been enhanced to start its progress toward a global table cache and support for positional update/delete is well underway.


27.APR.99 Alpha 3.0.1

Resolves an issue with the redefinition of 'bool'. Allows ODBCConfig to be recompiled again. Also; Driver Setup in ODBCConfig has been started laying the foundation for adding, deleting, and configuring drivers in ODBCConfig.


26.APR.99 Alpha 3.0.0

This release contains many enhancements;
TRE lib is a library of functions for managing a tree data structure. This is not used yet but will be used for storing more complex, parsed, SQL in SQI.
LOG lib is working now that a few bugs have been fixed. More enhancements coming.
LST lib has support for cursor sets. Cursor sets are/will be used to implement a variety of SQI and cursor lib functionality.
SQI lib is an ultra lite SQL engine. SQI currently uses comma delimted text files for a data source but the API will be refined to allow user defined, low level, reads and writes.
Text File Driver is an ODBC Text File driver based upon SQI. This is the first, to this authors knowledge, File Based ODBC Driver to be released on Linux and in source.

NOTE: Some components are not stable in this release. Of particular note is the DataManager accessing the Text File Driver. Of course, this will be corrected in the near future.


04.APR.99 Alpha 2.0.1

This release contains; a slightly revised set of make files, some enhancements to the mSQL ODBC driver, and the addition of a linked list lib. The linked list lib will be used in future work on drivers and may be used to replace the ad-hoc linked list code else where in unixODBC.


30.MAR.99 Alpha 2.0.0

A new Alpha release is availible. This release contains some bug fixs and the addition of SQLDrivers to the driver manager.


20.MAR.99 Alpha 1.0.0

A new Alpha release containing minor enhancements to several components. The DataManager and Config programs now require Qt 2.0. The INI lib has been given some new functions for book marking and cursor processing.


4.MAR.99 unixODBC gets industry support

Inline Internet Systems, Inc. joins CodebyDesign and individual volunteers in sponsoring the unixODBC effort. 

Inline Internet Systems, Inc. is pleased to be supporting the unixODBC initiative for providing easier access by applications to databases. Russ Cobbe, President of Inline Internet Systems, Inc. points out "As it stands, it is very difficult to have a homogeneous install and access to databases on UNIX.  The unixODBC initiative will certainly help with our iHTML product.  We also see it assisting anyone that  provides applications that use a database on UNIX."

iHTML is a web based programming language that allows the creation of  dynamic database driven web sites on both Windows and UNIX platforms.

More information is available at http://www.ihtml.com


3.MAR.99 LinuxODBC goes UNIX

LinuxODBC core components such as; the Driver Manager, Drivers, and non-GUI utilities will be made portable to all majour UNIX variants. It is expected that this will be done on, or about, release 1.0. The implication is that the name of the project will have to change (again) to something like unixODBC. There are no plans to widen the scope to platforms other than UNIX variants particularly not to MS platforms. Drivers developed for LinuxODBC are still capable of being portable to any platform but this is not the mandate of this project.

So the new, working name, for this project is now unixODBC.


21.FEB.99 LinuxODBC Alpha Released

The first release of LinuxODBC is out. This release is very much Alpha but all components are quite useable. Unfortunately the PostgreSQL driver is not ready but a couple of other drivers are ready for use. Check it out... let us know what we can be doing better. Work with us to improve LinuxODBC.


10.FEB.99 MiniSQL driver in Alpha

This driver has been created from scratch. It uses ODBC 3.5 prototypes, declarations and defines. This driver is already very functional and forms the basis for our early testing of tools. see Driver for more.


10.FEB.99 DataManager in Beta

Code restructured and appearance improved.  This Qt based version of DataManager is well on its way to a long and usefull existence in the Linux community. see DataManager for more.


28.JAN.99 ODBCINST in Beta

This is a share library (a DLL) which provides an MS compatible API for installing and configuring ODBC system information. Included in ODBCINST is a command line tool for people writing install scripts/RPMs for ODBC Driver Installs. see Utilities and Internals for more.