You are right.
I have tracked it down from my application.
The problem is the GREATEST method and not the BIGINT type.

Here is the test case:

package db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import org.h2.tools.DeleteDbFiles;
public class BigintLongTest
{
    public static void main(String[] args) throws Exception
    {
        org.h2.Driver.load();
        DeleteDbFiles.execute("data", null, true);
        Connection conn;
        conn = DriverManager.getConnection("jdbc:h2:data/test", "sa",
"sa");
        Statement stat = conn.createStatement();

        String createSQL = "CREATE TABLE test (id BIGINT);";
        stat.execute(createSQL);
        stat.execute("insert into test values (1)");

        // Returns BigDecimal
        String query = "SELECT GREATEST(id, " +
((long)Integer.MAX_VALUE) + ") FROM test";
        ResultSet rs = stat.executeQuery(query);
        rs.next();
        Object o = rs.getObject(1);
        System.out.println(o.getClass().getName());

        // Returns Long
        String query2 = "SELECT GREATEST(id, " +
((long)Integer.MAX_VALUE + 1) + ") FROM test";
        ResultSet rs2 = stat.executeQuery(query2);
        rs2.next();
        Object o2 = rs2.getObject(1);
        System.out.println(o2.getClass().getName());

        conn.close();
    }
}

GREATEST returns Long for all Java-Integer values and BigDecimal for
all values greater Java-Integer range.
I don't know if that's correct or not.
MySQL returns Long for both queries.

Uli

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

Reply via email to