修复B模式下 uint1/uint2/uint4/uint8 的getObject类型为PGobject与M*不一致问题
This commit is contained in:
@ -73,6 +73,10 @@ public class TypeInfoCache implements TypeInfo {
|
||||
{"int4", Oid.INT4, Types.INTEGER, "java.lang.Integer", Oid.INT4_ARRAY},
|
||||
{"oid", Oid.OID, Types.BIGINT, "java.lang.Long", Oid.OID_ARRAY},
|
||||
{"int8", Oid.INT8, Types.BIGINT, "java.lang.Long", Oid.INT8_ARRAY},
|
||||
{"uint1", Oid.UNSPECIFIED, Types.SMALLINT, "java.lang.Integer", Oid.INT1_ARRAY},
|
||||
{"uint2", Oid.UNSPECIFIED, Types.INTEGER, "java.lang.Integer", Oid.INT2_ARRAY},
|
||||
{"uint4", Oid.UNSPECIFIED, Types.BIGINT, "java.lang.Long", Oid.INT4_ARRAY},
|
||||
{"uint8", Oid.UNSPECIFIED, Types.NUMERIC, "java.math.BigDecimal", Oid.INT8_ARRAY},
|
||||
{"money", Oid.MONEY, Types.DOUBLE, "java.lang.Double", Oid.MONEY_ARRAY},
|
||||
{"numeric", Oid.NUMERIC, Types.NUMERIC, "java.math.BigDecimal", Oid.NUMERIC_ARRAY},
|
||||
{"float4", Oid.FLOAT4, Types.REAL, "java.lang.Float", Oid.FLOAT4_ARRAY},
|
||||
|
||||
@ -0,0 +1,49 @@
|
||||
package org.postgresql.test.jdbc4;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.postgresql.test.TestUtil;
|
||||
import org.postgresql.test.jdbc2.BaseTest4;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.BigInteger;
|
||||
import java.sql.*;
|
||||
import java.util.Properties;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class UnsignedTest extends BaseTest4 {
|
||||
|
||||
/**
|
||||
* test uint8 type
|
||||
* @throws Exception
|
||||
*/
|
||||
@Test
|
||||
public void testUint8() throws SQLException {
|
||||
TestUtil.createTable(con, "test_unit8", "id uint8");
|
||||
|
||||
PreparedStatement pstmt = con.prepareStatement("INSERT INTO test_unit8 VALUES (?)");
|
||||
BigDecimal b = new BigDecimal("9223372036859999999");
|
||||
pstmt.setObject(1, b, Types.NUMERIC);
|
||||
pstmt.executeUpdate();
|
||||
|
||||
BigDecimal b2 = new BigDecimal("15223372036859999999");
|
||||
pstmt.setObject(1, b2, Types.NUMERIC);
|
||||
pstmt.executeUpdate();
|
||||
|
||||
Statement stmt = con.createStatement();
|
||||
ResultSet rs = stmt.executeQuery("SELECT id FROM test_unit8");
|
||||
|
||||
assertTrue(rs.next());
|
||||
Object r1 = rs.getObject(1);
|
||||
assertNotNull(r1);
|
||||
assertEquals(b, r1);
|
||||
|
||||
assertTrue(rs.next());
|
||||
Object r2 = rs.getObject(1);
|
||||
assertNotNull(r2);
|
||||
assertEquals(b2, r2);
|
||||
|
||||
TestUtil.dropTable(con, "test_unit8");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user