with 'odbc' tag

building c/odbc 5.1 on mac os x

to build connector/odbc 5.1 on mac os x leopard, the first thing you will need is xcode. then you will want to install a recent version of mysql (5.0 or 5.1, or even 6.0 if you are feeling adventurous).

to be able to build the gui setup library, you will need to install qt, but i have found it easiest to work with qt3, not the latest qt4. you can download the last release of that from trolltech’s ftp server — the file is called qt-mac-free-3.3.8.tar.gz. you will need to apply this patch to allow it to compile on leopard. i configure it with some options to eliminate stuff i don’t care about, and to build statically:

./configure -no-tablet -no-accessibility -no-cups -thread -static

with those prerequisites met, you can download the source for connector/odbc (using the release packages or svn for now, and we will migrate to bzr soon). i build with the gui enabled and with debugging symbols and no optimization:

./configure --with-qt-dir=/path/to/qt-mac-free-3.3.8 \
--with-extra-xlibs="-framework Carbon -framework QuickTime -lz" \
--enable-dmlink --with-debug CFLAGS="-O0 -g"

that should be enough to get the driver compiled. the test suite should mostly pass — there is one test in the my_basics suite that fails because of bugs in the iODBC implementation of SQLCancel, which i reported to them last november.

there is also one other test that fails right now, but we are working on that. it is a test for a workaround for a server bug, and it’s not clear whether the test case needs to be updated for the unicode-aware connector/odbc 5.1, or if the fix we applied in connector/odbc 3.51 didn’t get merged correctly into the 5.1 tree.

connector/odbc 3.51.25 and 5.1.4

connector/odbc 3.51.25 and 5.1.4 were released today. the new 5.1 release has been deemed “generally available,” which is our really ridiculous term for a non-alpha/beta/rc release.

it was the day for the connectors team to do releases — previews of connector/openoffice.org and pdo_mysqlnd made it out before us, and i believe that a connector/net release is in the wings.

connector/odbc 5.1.3 (release candidate!)

yeah, it is all odbc, all the time here, it seems. that is just because i can’t write about the really exciting stuff. soon!

that is not to say that releasing mysql connector/odbc 5.1.3-rc is not a huge milestone! it took us a while to get there, but we finally have a unicode-aware odbc driver that is, in our opinions, production-ready. now we just need some community feedback to find out if we are right. there are a few minor issues we know about already, but the impact of those is generally small enough that the majority of folks should not have any problems.

connector/odbc 3.51.24

the march of progress continues, with the release of mysql connector/odbc 3.51.24. we are down to 33 bugs, most of which will not get fixed further 3.51 releases, but will be fixed in 5.1 or later. i think the two remaining issues we might fix in 3.51 are the crashes of the setup library on mac os x (which may just require a 10.5 build) and bug #12805.

iodbc and mac os x problems

working with the iodbc driver manager on mac os x has been a frustration on two fronts.

first, the installer api functions provided by iodbc constantly set the configuration mode to ODBC_BOTH_DSN, which means you have to keep resetting it to the correct value after nearly every installer api call. this problem is platform-agnostic — the iodbc code is just plain wrong.

second, when called from the odbc administrator application on mac os x, any failures that the driver reports or passes through from the installer api in registering the driver are ignored, and the application instead uses a generic prompt for dsn configuration.

so even with the first problem fixed, the second problem has led to a lot of tail-chasing until i discovered that the odbc administrator application only obtains enough privileges to write to /Library/ODBC as a member of the admin group, not as the root user. because the connector/odbc installer was trying to be helpful in only creating the /Library/ODBC/*.ini files with root-writable permissions, it was running straight into the second problem.

this is all related to bug #31495 filed against mysql connector/odbc.

connector/odbc 5.1.2

connector/odbc 5.1.2 was released today. this will probably be the last beta. we have gone back and triaged all of the bugs filed against connector/odbc, and have identified a few bugs that we have to fix before we will release a release candidate, but overall the trend of bugs is very encouraging. there are only a handful of bugs filed specifically against 5.1, and the total number of connector/odbc bugs is down to under 60.

new responsibility

while we start to wind up development of connector/odbc 5.1, i will also be taking on responsibility for libmysql, the c library that defines the client interface to mysql, and the mysql command-line utilities. there are about 120 active bugs in those areas right now, so the first task will be getting that down to a more manageable number.

after that, the field will open up for new development. i know that an asynchronous interface to libmysql is on some people’s wishlist, and there are other areas where i think that libmysql could be cleaned up in general.

but the idea that i think is the most exciting is to build a scripting language into the mysql command-line client, such as lua. this would allow us to rewrite many of the utility scripts and perhaps even other command-line clients (like mysqldump) in lua, so they would be easier to work with and more naturally cross-platform.

i should be careful to note that this does not mean that we are abandoning connector/odbc development (again). it is just that 5.1 has been a huge leap forward in closing most of the gaps in its functionality, and the remaining features are both not numerous and not that widely used.

connector/odbc 3.51.23

we usually try to avoid doing releases on friday, but we had been trying to release mysql connector/odbc 3.51.23 for a while now, and if it didn’t happen today, there was a good chance it wouldn’t happen for a few more weeks. this release just contains a few bug fixes, but we have gotten the bug count down to 60. one of the things i hope we can accomplish at our big orlando meeting is doing some triage on those remaining bugs.

connector/odbc 5.1.1 (beta!)

mysql connector/odbc 5.1.1-beta is available.

we didn’t implement all of the features in our original plan, but we decided to close out 5.1 to new features so that we could work on getting it to a production (GA) release as soon as possible.

5.1 has it’s share of bugs still, but we have tackled the most serious ones, and now that we are done with features (for the time being) we can focus on making the GA release shine.

now the race is on to see who gets out a 5.1 GA release first — the server or connector/odbc!

mac os x programming help needed

one of the features we had planned for mysql connector/odbc 5.1 is native setup libraries for the major platforms. we have the microsoft windows version going, and some code to get us going on linux/unix (using gtk instead of qt), but our gui team is too busy to get us started on a native mac os x version.

anyone want to pitch in by showing us how to get a basic dialog window to pop up based on a c library call? i think we will be able to customize it from there, but i am just unfamiliar enough with mac os x gui programming that i have a feeling it would take a long time for me to get that going.

connector/odbc 3.51.22

mysql connector/odbc 3.51.22 is available, still keeping to that mostly-monthly schedule. there has actually been an slight increase in the bug count to a little over 70. we went back through all of the bugs filed against the now-defunct 5.0 version, and that turned up some that still appeared in 3.51.

the next release of the 5.1 branch is still imminent. it has taken a little longer than planned to get the new windows setup library integrated.

connector/odbc 3.51.21

after eight releases, we have gone from over 150 open bugs to under 70 bugs.

one of the really old bugs we are still looking at is how identifiers that are reserved words (or have non-alphanumeric characters) are handled from ado. as far as we can tell, the driver is doing everything correctly, and it is ado that is failing to properly quote the identifiers, but we have gotten some developers at microsoft involved in tracking the problem from that end.

just today there was a new bug filed about using the driver with visual basic 6, which was itself released in 1998. i am going to have to build a vm image with that installed so i can do some testing.

the next release of the new 5.1 branch should be out later this week. we will probably limit the scope of new features we are going to implement in 5.1 so that we can get unicode support and the other already-implemented features out there as a beta (and then production/ga) release sooner.

connector/odbc 3.51.20 and 5.1.0

another month, another release of connector/odbc 3.51. there’s not a lot of bug fixes in this one, but we did manage to get the bug count under 80 bugs.

the reason there were fewer bug fixes in the release of 3.51.20 (other than there being fewer bugs to fix) was that we have been hard at work on connector/odbc 5.1.0, which builds on the 3.51 foundation to bring new functionality like unicode and descriptor support. there are more features planned, and you can see the release announcement for details. i hope that we’ll be able to keep on releasing new versions of 3.51 and 5.1 on a monthly basis.

connector/odbc 5.0 has met the same fate as the aborted 3.52 and 3.53 releases. it was an ambitious ground-up rewrite of the driver, but once we had put renewed efforts into getting the 3.51 code into better shape, it became clear that doing the same for a completely different code-base made little sense. we are going to be cherry-picking some of the 5.0 code for some of the new features.

i am sorry that we have been secretive about what was up with the future of 5.0, but we decided it was better to not talk about what was happening until we were confident about the decision to kill it.

connector/odbc 3.51.19

we managed to let a pretty significant regression sneak through in 3.51.18, so we’ve turned out a quick release of mysql connector/odbc 3.51.19. sorry for the hassle.

connector/odbc 3.51.18

we were able to get out this month’s connector/odbc release a little earlier in the month than usual. one reason we made the release earlier was to get a replacement for last month’s 3.51.17 out there, because that release had an unfortunate bug that caused problems when working with many odbc applications, like microsoft access.

we were also able to get under 90 bugs by fixing a number of other bugs, and working through more of the old bugs and figuring out that they were either already solved or otherwise no longer relevant.

the other reason to get this out earlier in the month has to do with a project that should see some more daylight by the end of the month. more on that when the time comes.

connector/odbc 3.51.17

another month, another mysql connector/odbc release. it has almost become a trend. we only chipped it down to about 124 bugs this time, about a half-dozen less than last time. but we’re going back and re-evaluating some the open bugs now.

we didn’t manage to get windows x64 packaged up this time, but we might slip out a 3.51.17 package for that platform before the next full release. part of the problem in getting it together in time for this release was that odbc on win64 appears rather half-baked, and we couldn’t find much in the way of applications to test with it.

now i’m hip-deep in making sure that the way we calculate the various column lengths that you can retrieve from odbc are correct. in many cases they are not, but the msdn odbc documentation is wonderfully imprecise on what lengths are meant to be returned for many of these. and it sometimes appears to contradict some of the ibm db2 odbc documentation.

connector/odbc 3.51.16

it’s another month, so time for another connector/odbc release.

there’s already three bug fixes that have been committed to the repository for the next release, and the changes to support building on windows x64 should land soon.

we’re down to about 130 open bugs, about 20 less than the last release. some of those were newly fixed, and some were closed because they duplicated earlier problems that had already been fixed. this release does close another bug that is nearly three years old.

one of the things i hope to get fixed for the next release is being able to specify the default character set for the connection. you can’t do this now, so when developers try to use a different default character set like big5, problems show up in how parameters are escaped. this shouldn’t be hard to do, but it will involve adding another widget to our gui configuration, which i haven’t really had to do very much with up until now.

connector/odbc 3.51.15

this time it only took two months since the last release — mysql connector/odbc 3.51.15 is now available. there aren’t a lot of bugs fixed in this release, compared to the 150 or so open bugs, but it is nice when you get to close a bug that is nearly three years old.

i’m not sure when the next release will happen, but i already have one patch pending.

another connector/odbc release — finally

a mere seventeen months since the last release, we finally managed to release version 3.51.14 of connector/odbc. while much of the development energy around connector/odbc is going into the rewrite from scratch, there’s a few of us that have been working on getting the old workhorse of 3.51 back into shape and releasable.

kent from the build team has constructed a new build tool that lets him crank out builds (and test them) on too many platforms, bogdan and tonci (and others) from the support team have really dug in and solved some annoying problems our customers have run across, and georg and i have been getting into the code and cleaning up some of the other issues. there were also a number of fixes from peter that had simply not been released yet.

there will probably be some embarrassing problems with this new release, but now we finally have the tools at hand to do a release without breaking the back of any one person, and we are getting more organized and disciplined about how we fix the bugs that remain.

backcountry programming

i’m back to doing some work on connector/odbc, fixing bugs in the “stable” version (otherwise known as 3.51.x). we have another project going that is a ground-up rewrite of the driver, but i’m not really involved with that.

the state of the stable version of the driver is pretty sad. i keep running into pockets of code that are truly frightening. my first big foray was a bug i reported when i was trying to get the test suite to run, and it basically entailed throwing out a function that made no sense and replacing it with code that has such niceties as comments.

as i’ve started into the catalog functions, starting from this ancient bug, i’m finding even more frightening (and untested) code.

my general goal is to leave things cleaner than i’ve found them, doing things as incrementally as i can. we’re going to be building out a richer test suite, which will be a tremendous help, both in getting the “stable” version of the driver into better shape, and proving the capabilities of the rewrite.

i know it has been a long time since the last connector/odbc 3.51 release — kent, one of the build team members, is working on scripting the building, testing, and packaging so that we can crank out builds more consistently and reliably. unfortunately, a lot of the magic incantations were lost as people moved on to other work or other companies. the days of connector/odbc being the neglected stepchild of mysql products may be coming to an end.