Menu

error creating named Savepoint

Help
2014-11-10
2014-11-17
  • Gord Thompson

    Gord Thompson - 2014-11-10

    UCanAccess 2.0.9.2 throws an exception when I try to create a named Savepoint. An unnamed Savepoint works fine:

    package ucaNamedSavepoint;
    
    import java.sql.*;
    
    public class UcaNamedSavepointMain {
    
        public static void main(String[] args) {
            String connStr = "jdbc:ucanaccess://C:/Users/Public/mdbTest.mdb";
            try (Connection conn = DriverManager.getConnection(connStr)) {
                conn.setAutoCommit(false);
                try (Statement s = conn.createStatement()) {
                    s.executeUpdate("UPDATE ucaTest SET Field2='NEWVALUE1' WHERE ID=1");
                }
                Savepoint sp1 = conn.setSavepoint();
                try (Statement s = conn.createStatement()) {
                    s.executeUpdate("UPDATE ucaTest SET Field2='NEWVALUE2' WHERE ID=2");
                }
                conn.rollback(sp1);
                conn.commit();
            } catch (Exception e) {
                e.printStackTrace(System.out);
            }
        }
    
    }
    

    but if I change the line

    Savepoint sp1 = conn.setSavepoint();
    

    to

    Savepoint sp1 = conn.setSavepoint("mySavepoint");
    

    I get

    net.ucanaccess.jdbc.UcanaccessSQLException: Invalid argument in JDBC call: 3B001 savepoint exception: invalid specification
        at net.ucanaccess.jdbc.UcanaccessConnection.rollback(UcanaccessConnection.java:609)
        at ucaNamedSavepoint.UcaNamedSavepointMain.main(UcaNamedSavepointMain.java:18)
    Caused by: java.sql.SQLException: Invalid argument in JDBC call: 3B001 savepoint exception: invalid specification
        at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
        at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
        at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
        at org.hsqldb.jdbc.Util.invalidArgument(Unknown Source)
        at org.hsqldb.jdbc.JDBCConnection.rollback(Unknown Source)
        at net.ucanaccess.jdbc.UcanaccessConnection.rollback(UcanaccessConnection.java:597)
        ... 1 more
    Caused by: org.hsqldb.HsqlException: Invalid argument in JDBC call: 3B001 savepoint exception: invalid specification
        at org.hsqldb.error.Error.error(Unknown Source)
        at org.hsqldb.error.Error.error(Unknown Source)
        ... 5 more
    
     
  • Marco Amadei

    Marco Amadei - 2014-11-10

    Hi Gord
    A trivial bug omitting Savepoint unwrapping to get the hasqldb original savepoint.
    The fix will be in the 2.0.9.3.
    Cheers Marco

     

    Last edit: Marco Amadei 2014-11-10
  • Marco Amadei

    Marco Amadei - 2014-11-17

    Fixed on svn trunk

     

Log in to post a comment.