H
htaylor
Guest
So, I'm going to post this here in case anyone ever is searching for the same problem. We've finally figured out what was going on. To understand it, you need to know that we are using the EnterpriseDB version of PostgreSQL here at our business. In order to get the DataDirect drivers to work with EnterpriseDB, we had to overload the version() function in our database and have it return a string that contained the "PostgreSQL" instead of "EnterpriseDB". We worked that out with the people from SAP and Progress. EnterpriseDB, at some point, though we don't know when, overloaded their int4/div function to return a numeric value rather than in integer. The DataDirect driver determines the length and precision of a NUMBERIC datatype field via division operation. Normally, this division would return an integer and everything is fine. But, when you override the division function and return a numeric value, suddenly 30 becomes 30.0001373291015625 and the driver rejects it. I'm not sure why one would calculate the length and precision, since I'm sure they are stored in the catalog somewhere, but in case, that's how the driver does it and that, combined with EDB's modification, horked our communication with the DB. For now, because we can't upgrade our drivers ourselves (we are dependent on SAP to include them in their software), we're going to drop the overloaded division function and we'll be good to go.
Continue reading...
Continue reading...