Oracle Data Source adam  2011-06-21 07:22
Status: Closed
 
No apologies necessary… writing a new dialect is an ambitious undertaking. (When I suggested earlier that writing one "wouldn't be hard" I meant for someone very familiar with LabKey internals.)

I haven't run your code since I don't have Oracle running locally, but it looks like LabKey is attempting to read result set meta data after the underlying statement is closed; apparently the other four databases we support allow this. This comes up because LabKey caches result sets in many cases to free up JDBC connections. The solution is likely invasive… we probably need to cache the meta data as well in CachedResultSetImpl for Oracle.

As for the other things you mentioned in your message and code:

  • You should probably try to get / parse the actual product version instead of using the driver version. JDBC drivers are typically backward (and often forward) compatible with different server versions; the dialect is most concerned with actual server version, since server version (not driver version) determines SQL syntax, capabilities supported, reserved words, etc.
  • I believe the database name is used only for logging and error reporting… if a LabKey Server is connecting to many databases it's helpful to point admins to the problematic one. But not a critical thing right now.
  • Oracle doesn't support LIMIT or OFFSET? That's terrible...
Adam