修复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},
|
{"int4", Oid.INT4, Types.INTEGER, "java.lang.Integer", Oid.INT4_ARRAY},
|
||||||
{"oid", Oid.OID, Types.BIGINT, "java.lang.Long", Oid.OID_ARRAY},
|
{"oid", Oid.OID, Types.BIGINT, "java.lang.Long", Oid.OID_ARRAY},
|
||||||
{"int8", Oid.INT8, Types.BIGINT, "java.lang.Long", Oid.INT8_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},
|
{"money", Oid.MONEY, Types.DOUBLE, "java.lang.Double", Oid.MONEY_ARRAY},
|
||||||
{"numeric", Oid.NUMERIC, Types.NUMERIC, "java.math.BigDecimal", Oid.NUMERIC_ARRAY},
|
{"numeric", Oid.NUMERIC, Types.NUMERIC, "java.math.BigDecimal", Oid.NUMERIC_ARRAY},
|
||||||
{"float4", Oid.FLOAT4, Types.REAL, "java.lang.Float", Oid.FLOAT4_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