A key feature of the OpenEdge database is the variable width nature of the data, from both a storage and query standpoint. Currently the Progress DataDirect ODBC/JDBC driver is incompatible with the Progress OpenEdge database, because when you query a record that has a value larger than the defined max_width, the entire query fails. Querying the offending record will continue to fail until the OpenEdge Database schema is modified. This means, a query that ran fine a moment ago, will now fail forever until the database schema is changed, or the data within the offending record is truncated. One would expect that the Progress DataDirect ODBC/JDBC drivers would be compatible with the Progress OpenEdge database, from the same company. Obviously, this is not the case.
Option 1 – handle this issue with a soft error and truncate the data. The current error message states that the value has exceeded the specified length. So, we already know what the length was supposed to be and that the value is larger than the specified length. Truncate the data, and provide a warning.
Option2 – provide a soft error and skip the offending record. This allows you to get a data set back without the 1 offending record in the entire table that causes the entire result set to crash.
Option 3 – my wish list: remove the artificial limitation of max_width on the OpenEdge driver. Since the OpenEdge database is a variable width record database, there is no benefit to forcing an artificial width constraint on any record, other than the 32k overall record hard limit, or the ~200 character hard limit on an index.
The first 2 options are not ideal, but are way better than not returning any of the result set.
At the end of the day, if I can put the data in, I should be able to get that data out.