Mimer SQL Documentation TOC PREV NEXT INDEX

Mimer SQL Developer Site

Change History

The following sections document changes in the drivers.

New Functions

This section describes the main new functions of each Mimer JDBC version.

New Functions in 3.38

New Functions in 3.35

New Functions in 3.31

VMS: On OpenVMS, mimcomm libraries older than 10.1 will not work.

New Functions in 3.30

New Functions in 3.28

 } catch (java.sql.SQLException se) {
   try {
     java.lang.reflect.Method method =
       se.getClass().getMethod("getErrorLength",new Class[0]);
     output.println("-- errorlength = "+method.invoke(se,new Object[0]));
   } catch (NoSuchMethodException nsme) {
     output.println("-- errorlength = unknown");

New Functions in 3.26

New Functions in 3.25

New Functions in 3.24 and 2.24

New Functions in 3.18, 2.18 and 1.18

The JDBC version 18 drivers may now connect to Mimer SQL Micro servers. Note however, that many features you normally expect in a Mimer SQL Engine are not available in the Mimer SQL Micro Edition server.

An application may detect the Mimer SQL product type by calling DatabaseMetaData.getDatabaseProductName(). This will return "Mimer SQL Micro", "Mimer SQL Mobile", or "Mimer SQL Engine" - depending on the server type.

New Functions in 3.17, 2.17 and 1.17

Support for the BOOLEAN SQL data type that was introduced in Mimer SQL 9.3 servers.

New Functions in 3.16, 2.16 and 1.16

New Functions in 3.15

New Functions in 2.9

Server data type NATIONAL CHARACTER LARGE OBJECT (NCLOB) is now supported.

New Functions in 2.8

The method PreparedStatement.setBytes is now supported on LONGVARBINARY and PreparedStatement.setString on LONGVARCHAR. In the case of Mimer, LONGVARBINARY is the same as a BLOB, and LONGVARCHAR is the same as a CLOB.

New Functions in 2.7

The object returned when calling .getBinaryStream, .getAsciiStream and .getCharacterStream on BLOB and CLOB objects now implements the .mark(), .reset() and .skip() methods.

New Functions in 2.5

Support for large objects; BINARY LARGE OBJECT (BLOB) and CHARACTER LARGE OBJECT (CLOB). BLOB's store any sequence of bytes, CLOB's store Latin-1 character data.

New Functions in 2.4

Support for server NCHAR and NCHAR VARYING data types. They are used to store Unicode data. By using these data types, any Java String object can now be stored in the database. This is not the case when using CHARACTER or CHARACTER VARYING data types since these can only store Latin-1 characters.

New Functions in 2.3

New Functions in 2.0

New Functions in 1.9

Server data type NATIONAL CHARACTER LARGE OBJECT (NCLOB) is now supported.

New Functions in 1.7

New Functions in 1.2

Support for query timeout and cancel. (Connection timeout is not supported.)

Changed Functions

This section describes the main changed functions of each Mimer JDBC version.

Changes in 3.29

Changes in 3.28

Changes in 3.25

When using the protocol local to connect to the database server the shared library mimcomm.dll is used. When using 64-bit Java the system has been changed to use the mimcomm64.dll. This library is present in 64-bit installations of Mimer SQL from version 10.0.6.

Changes in 3.24, 2.24 and 1.24

Changes in 3.20, 2.20 and 1.20

Changes in 3.16, 2.16 and 1.16

Changes in 2.15 and 1.15

Changes in 2.14 and 1.14

Changes in 2.9

The driver now returns the correct object type when doing CallableStatement.getObject. According to the JDBC specification, getObject should return a Java object whose type corresponds to what type the output parameter was registered to with the CallableStatement.registerOutParameter method call. Earlier drivers always returned the default Java object type.

Changes in 2.7

Changes in 2.2

Changes in 2.1

A Mimer SQL beta licence key is no longer required on the server.

Changes in 1.3

Statement.executeQuery no longer accepts non-query statements and Statement.executeUpdate no longer accepts statements other than updates, inserts or deletes.

Changes in 1.2

The name of the Mimer driver class is changed to com.mimer.jdbc.Driver (earlier com.mimer.jdbc1.Driver).

Corrected Problems

This section describes the main corrected functions of each Mimer JDBC version.

Corrections in 3.38

Note: No corrupted values were ever stored in tables.
 PreparedStatement ps = con.prepareStatement("insert into A values (?,?)");

The older behavior was not compatible with the JDBC specification which in section 13.2.2 specifically states that "the values set for the parameter markers of a PreparedStatement object are not reset when it is executed".

Corrections in 3.37

Corrections in 3.35

Corrections in 3.31

Corrections in 3.30

Corrections in 3.29

Corrections in 3.28

Corrections in 3.27

Corrections in 3.26

Corrections in 3.25


It was, however, possible to use a numerical IPv6 address as an URL attribute, or when using the javax.sql.DataSource interface to make database connections. For example, the following two URL's were, and are still, working properly:

jdbc:mimer:/odbc_net?serverName=::1 jdbc:mimer:/odbc_net?serverName=::1&portNumber=1360

Corrections in 3.24, 2.24 and 1.24

Corrections in 3.23 and 2.23

Scrollable cursors created with a SELECT statement with parameter markers did not always perform well before release 23. The symptoms where either that the parameter appeared to be ignored, or the server returns a -10303 "negative overflow occurred in arithmetic operation CHP."

Corrections in 3.23, 2.23 and 1.23

The DatabaseMetaData.getColumns view could previously return the -10312 error when connected to Mimer SQL 9.1 servers or older. See known problem System Views Raising Error -10312 for more information, as the very same problem still applies to DatabaseMetaData.getTypeInfo().

DatabaseMetaData.getColumns in release 23 clients and newer will avoid the problem.

Corrections in 3.22, 2.22 and 1.22

When using the driver with IBM WebSphere 6, connection attempts may end with a "java.sql.SQLException: Connection is closed" message. This is because the driver did not allow pooled connections (javax.sql.PooledConnection) to be closed after the associated Connection has already been closed. The error was not seen when using Websphere 5 or earlier.

Corrections in 3.21, 2.21 and 1.21

Fetching a scrollable cursor by positioning the cursor on a row relative to the end of the result set (e.g. specifying a negative row number to the ResultSet.absolute method) after the last row of the result set has already been visited produced incorrect results. The problem was introduced in version 20 of the JDBC driver.

Corrections in 3.20, 2.20 and 1.20

Correction in 3.19, 2.19 and 1.19

Version numbers for servers older than 9.3 was not returned properly by the Mimer JDBC n.18 drivers. This problem was seen in DatabaseMetaData.getProductVersion, DatabasMetaData.getDatabaseMajorVersion and DatabaseMetaData.getDatabaseMinorVersion.

Corrections in 3.18, 2.18 and 1.18

Corrections in 3.16, 2.16 and 1.16

Corrections in 2.14

Corrections in 2.14 and 1.14

 Class dc = Class.forName("com.mimer.jdbc.Driver");
 Driver d = (Driver)dc.getInstance();

Example of products using this (or similar) techniques, and thus avoiding the DriverManager object, are Sun Java Studio Creator and the Squirrel SQL database viewer.

Corrections in 2.13 and 1.13

Corrections in 2.12 and 1.12

Corrections in 2.11 and 1.11

Note: For the JDBC 1 driver, this problem applies to streams derived from the getUnicodeStream method call on CLOB and NCLOB columns.

Corrections in 2.10 and 1.10

Corrections in 2.9

Corrections in 2.7

 An internal error occurred in MimConnection.readFromServer (packlen=148, 
bufLen=100, maxReceive=0).

This problem is now corrected.

Corrections in 2.6

Server resources was not released even when the application was properly closing Statement, PreparedStatement and CallableStatement objects. This could sometimes cause the following error when attempting to drop a table:

 Error code: -16002, msg: Table locked by another cursor, state: S1000

This problem is now corrected.

Corrections in 2.2

Corrections in 1.9

Corrections in 1.7

Earlier versions incorrectly returned SQLSTATE 22001 for numeric value out of range. The correct 22003 is now returned.

Known Restrictions

Mimer SQL Experience

There are no support for Statement.setMaxFieldSize and Statement.getMaxFieldSize when connected to a Mimer SQL Experience server.

Mimer SQL Experience

The Mimer SQL Experience server does not support the following native SQL escape clauses:

  • ASCII, for example {fn ASCII(x)}
  • CHAR, for example {fn CHAR(x)}
  • BIT_LENGTH, for example {fn BIT_LENGTH(x)}
  • POSITION of the form {fn POSITION(x in y)}.
    (The form {fn POSITION(x,y)} is still supported.)
  • SUBSTRING of the form {fn SUBSTRING(x from y for z)}.
    (The form {fn SUBSTRING(x,y,z)} is still supported.)
  • DAYNAME, {fn DAYNAME(t)}
    for example {fn TIMESTAMPADD(SQL_TSI_SECOND,t,n)}
    for example {fn TIMESTAMPDIFF(SQL_TSI_SECOND,t,t2)}
  • CONVERT, for example {fn CONVERT(x,SQL_CHAR)}
  • DIFFERENCE, such as {fn DIFFERENCE(x,y)}
  • ACOS, {fn ACOS(n)}
  • ASIN, {fn ASIN(n)}
  • ATAN, {fn ATAN(n)}
  • ATAN2, {fn ATAN2(n,m)}
  • COS, {fn COS(n)}
  • COT, {fn COT(n)}
  • PI, {fn PI()}
  • DEGREES, {fn DEGREES(n)}
  • EXP, {fn EXP(n)}
  • LOG, {fn LOG(n)}
  • LOG10, {fn LOG10(n)}
  • POWER, {fn POWER(n,m)}
  • RADIANS, {fn RADIANS(n)}
  • SIN, {fn SIN(n)}
  • SQRT, {fn SQRT(n)}
  • TAN, {fn TAN(n)}
  • NOW, {fn NOW()}

Known Problems

This section describes the known problems with Mimer JDBC.


When storing large object data, current Mimer SQL servers require the client and/or application to supply the size and length of the large object in advance prior to actually storing the data. This poses a problem if the data contains UTF-16 surrogate characters, since the application will know the length of the data by the number of UTF-16 code points, while the server regards the length as being the number of Unicode characters. The number of Unicode characters may therefore be less than the number of UTF-16 code points in the input data.

In these situations, database objects of the type NATIONAL CHARACTER LARGE OBJECT will be padded with zero characters up to the length originally specified. When at a later date the object is retrieved, it may appear to have grown in length. The actual number of characters grown equals the number of surrogate characters in the input data.

System Views Raising Error -10312

The system metadata returned by DatabaseMetaData.getTypeInfo, DatabaseMetaData.getProcedureColumns, and DatabaseMetaData.getBestRowIdentifier from Mimer SQL 9.1 servers or older may return -10312 "numeric value out of range".

The error will not appear if no user created domains are present and returned by the views, or if less than 32768 system objects have been created in the database.

Statements Never Executed By java.sql.Statement.executeUpdate()

When issuing the statements ENTER, LEAVE, LEAVE RETAIN, SET DATABASE, SET DATABANK, and SET SHADOW are reported as having completed successfully, but they are actually never executed on the server. UPDATE STATISTICS and DELETE STATISTICS always return with an "Invalid internal DDU identifier" error.

All these statements are executed properly when being executed either using a java.sql.PreparedStatement or a java.sql.CallableStatement, but also using the java.sql.Statement.execute method.

The problem appeared in Mimer SQL servers in version 9.3.1 and was corrected in version 9.3.7G.

Update Counts on Errors in Batched Statements

Whenever an error occurs in a batched Statement, the driver is unable to return the correct information about the number of executed rows. The correct behavior is to return an integer array within a thrown BatchUpdateException object whose length corresponds to the number of batch statements. The Mimer driver is now returning an integer array with one entry per statement, with all entries set to 0.

Mimer Information Technology AB
Voice: +46 18 780 92 00
Fax: +46 18 780 92 40
Mimer SQL Documentation TOC PREV NEXT INDEX