11. Understanding JDBC Connectivity : Unsupported JDBC Features
 
Share this page                  
Unsupported JDBC Features
The JDBC Driver is compliant with the JDBC 4.2 API specification. JDBC 4.2 API interfaces are fully supported with the following exceptions:
Java Logging
The JDBC Driver does not directly support Java Logging. The JDBC 4.1 methods Driver.getParentLogger() and DataSource.getParentLogger() throw SQLFeatureNotSupportedException. JDBC Driver tracing can be output through Java Logging. For details, see JDBC Tracing.
Schemas
Ingres supports schema names as the owner of the referenced object and do not support a general SET SCHEMA statement. In accordance with JDBC 4.1 standards when schemas are not supported, Connection.setSchema() does nothing and Connection.getSchema() returns null.
Pseudo-Columns
The only pseudo column supported is 'tid'. The parameters to the JDBC 4.1 DatabaseMetaData method getPseudoColumns() are used to query the iitables system catalog and then column information for a 'tid' column is returned for each resulting table.
PooledConnection interface
The JDBC Driver does not support Statement pooling and does not implement the JDBC 4.0 methods addStatementEventListener() and RemoveStatementEventListener().
Calling stored procedures
JDBC Driver does not support escape syntax for calling stored procedures in Statement and PreparedStatement.
Auto-generated keys
If the table contains a system_maintained column, the DBMS returns only a single table key or a single object key per INSERT statement. Ingres does not return table and object keys for INSERT AS SELECT statements. Depending on the keys that are produced by the statement executed, auto-generated key parameters in execute(), executeUpdate(), and prepareStatement() methods are ignored and getGeneratedKeys() returns a result-set containing no rows, a single row with one column, or a single row with two columns. The JDBC Driver returns table and object keys as BINARY values.
If the table contains an identity column, getGeneratedKeys() retrieves the last generated identity value and returns it as a JDBC generated key. The query is issued if the following conditions are met:
The identity_query JDBC driver property (see JDBC Driver Properties) is set to ON.
The application has requested generated keys be returned using the JDBC interface.
No table or object key is returned by the statement.
If no identity value was generated in the session, a NULL value is returned.
Note:  The SQL function last_identity() is used to obtain the generated identity value and it returns the last generated identity value for any SQL statement in the session; therefore, the identity value returned will be incorrect if the current SQL INSERT statement did not automatically generate an identity value.
We assume that table/object keys and identity columns are not mixed in the same table, or at least that access through generated keys for both is not needed.
Result sets
Result sets generated by executeQuery() requests are always CLOSE_CURSORS_AT_COMMIT (non-holdable).
The methods isBeforeFirst() and isLast() may return invalid information when used on a FORWARD-ONLY ResultSet. The method isBeforeFirst() cannot always detect that a ResultSet is empty when no call to next() has been made and may return true instead of returning false. The method isLast() cannot always detect when the ResultSet is positioned on the last row and may return false instead of returning true.
Data types
The JDBC data types ARRAY, DATALINK, DISTINCT, JAVA_OBJECT, REF, REF_CURSOR, ROWID, SQLXML, and STRUCT are not supported. The storage or mapping of Java objects (SQLInput, SQLOutput, and SQLData) is also not supported. Methods associated with these data types throw exceptions when called.
Calendars
Ingres stores date/time values in GMT (same as Java). With an Ingres DBMS, the JDBC Driver handles all date/time values in GMT and calendars provided in setXXX() and getXXX() methods are ignored. EDBC servers and Enterprise Access gateways do not reference date/time values to a particular time zone. The JDBC Driver uses the local time zone when accessing a non-Ingres DBMS Server, and utilizes calendars if provided. Calendars are also used for TIME WITHOUT TIME ZONE and TIMESTAMP WITHOUT TIME ZONE values.
Batch updates
If the DBMS does not support batch processing, batched execution for Statements, PreparedStatements, and CallableStatements is supported by individual execution of each batched request.