I got the following error for linked table:
Exception in thread "main" org.h2.jdbc.JdbcSQLException: Value too
long for column DT: DATE '2008-01-08' [90005-105]
        at org.h2.message.Message.getSQLException(Message.java:103)
        at org.h2.message.Message.getSQLException(Message.java:114)
        at org.h2.table.Column.validateConvertUpdateSequence(Column.java:301)
        at org.h2.table.Table.validateConvertUpdateSequence(Table.java:579)
        at org.h2.command.dml.Insert.update(Insert.java:119)
        at org.h2.command.CommandContainer.update(CommandContainer.java:71)
        at org.h2.command.Command.executeUpdate(Command.java:207)
        at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:163)
        at org.h2.mine.Test.datetime2date(Test.java:51)
        at org.h2.mine.Test.main(Test.java:10)

==============================================

The reason for this error is that Oracle and H2 have different
precision for date/time values and the precision check fails within
Column.java (line 296). The fix may be to  remove  precision checks
for date/time types and for most numeric types (like REAL and DOUBLE).
Precisions returns by different database are different and they are
not important in this place.


========================================

To reproduce the error:
========================================

package org.h2.mine;

import org.h2.test.TestBase;

import java.sql.*;

public class Test {

    public static void main(String[] a) throws Exception {
        new Test().datetime2date();
    }


    public void datetime2date() throws Exception {

        String driver = "oracle.jdbc.driver.OracleDriver";
        Class.forName(driver);
        String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
        Connection oracle = DriverManager.getConnection(url, "scott",
"tiger");

        Statement ora = oracle.createStatement();
        drop(ora, "TWO");
        ora.execute("CREATE TABLE TWO (DT DATE)");

        Class.forName("org.h2.Driver");

        Connection h2 = DriverManager.getConnection
("jdbc:h2:mem:dual");
        Statement sa = h2.createStatement();
        drop(sa, "ONE");

        sa.execute("CREATE TABLE ONE (DT DATE)");
        sa.execute("INSERT INTO ONE VALUES (TIMESTAMP'2008-01-08
10:11:15')");

        sa.execute("CREATE LINKED TABLE TWOL
('oracle.jdbc.driver.OracleDriver',
'jdbc:oracle:thin:@127.0.0.1:1521:XE', 'scott', 'tiger', 'TWO');");

        sa.execute("INSERT INTO TWOL SELECT DT FROM ONE");
        {
            ResultSet rs = sa.executeQuery("select * FROM TWO");
            rs.next();
        }
        drop(ora, "TWO");
        drop(sa, "ONE");
    }


    private void drop(Statement sa, String name) {
        try {
            sa.execute("DROP TABLE " + name);
        } catch (SQLException e) {
        }
    }


}


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/h2-database?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to