@@ -73,12 +73,12 @@ public ResultSetLatestIT() {
73
73
super (queryResultFormat );
74
74
}
75
75
76
- public String createTableSql =
76
+ private String createTableSql =
77
77
"Create or replace table get_object_for_numeric_types (c1 INT, c2 BIGINT, c3 SMALLINT, c4 TINYINT) " ;
78
- public String insertStmt =
78
+ private String insertStmt =
79
79
"Insert into get_object_for_numeric_types (c1, c2, c3, c4) values (1000000000, 2000000000000000000000000, 3, 4)" ;
80
- public String selectQuery = "Select * from get_object_for_numeric_types" ;
81
- public String setJdbcTreatDecimalAsIntFalse =
80
+ private String selectQuery = "Select * from get_object_for_numeric_types" ;
81
+ private String setJdbcTreatDecimalAsIntFalse =
82
82
"alter session set JDBC_TREAT_DECIMAL_AS_INT = false" ;
83
83
84
84
/**
@@ -980,35 +980,102 @@ public void testLargeStringRetrieval() throws SQLException {
980
980
}
981
981
}
982
982
983
+ // Test setting new connection property jdbc_arrow_treat_decimal_as_int=false. Connection property introduced after version 3.15.0.
984
+ @ Test
985
+ public void testGetObjectForArrowResultFormatJDBCArrowDecimalAsIntFalse () throws SQLException {
986
+ Properties properties = new Properties ();
987
+ properties .put ("jdbc_arrow_treat_decimal_as_int" , false );
988
+ try (Connection con = getConnection (properties );
989
+ Statement stmt = con .createStatement ()) {
990
+ stmt .execute ("alter session set jdbc_query_result_format = 'ARROW'" );
991
+ stmt .execute (createTableSql );
992
+ stmt .execute (insertStmt );
993
+
994
+ // Test with jdbc_arrow_treat_decimal_as_int=false and JDBC_TREAT_DECIMAL_AS_INT=true
995
+ try (ResultSet rs = stmt .executeQuery (selectQuery )) {
996
+ while (rs .next ()) {
997
+ assertEquals ("class java.lang.Long" , rs .getObject (1 ).getClass ().toString ());
998
+ assertEquals ("class java.math.BigDecimal" , rs .getObject (2 ).getClass ().toString ());
999
+ assertEquals ("class java.lang.Long" , rs .getObject (3 ).getClass ().toString ());
1000
+ assertEquals ("class java.lang.Long" , rs .getObject (4 ).getClass ().toString ());
1001
+ }
1002
+ }
1003
+
1004
+ // Test with jdbc_arrow_treat_decimal_as_int=false and JDBC_TREAT_DECIMAL_AS_INT=false
1005
+ stmt .execute (setJdbcTreatDecimalAsIntFalse );
1006
+ try (ResultSet rs = stmt .executeQuery (selectQuery )) {
1007
+ while (rs .next ()) {
1008
+ assertEquals ("class java.math.BigDecimal" , rs .getObject (1 ).getClass ().toString ());
1009
+ assertEquals ("class java.math.BigDecimal" , rs .getObject (2 ).getClass ().toString ());
1010
+ assertEquals ("class java.math.BigDecimal" , rs .getObject (3 ).getClass ().toString ());
1011
+ assertEquals ("class java.math.BigDecimal" , rs .getObject (4 ).getClass ().toString ());
1012
+ }
1013
+ }
1014
+ }
1015
+ }
1016
+
1017
+ // Test default setting of new connection property jdbc_arrow_treat_decimal_as_int=true. Connection property introduced after version 3.15.0.
1018
+ @ Test
1019
+ public void testGetObjectForArrowResultFormatJDBCArrowDecimalAsIntTrue () throws SQLException {
1020
+ try (Connection con = BaseJDBCTest .getConnection ();
1021
+ Statement stmt = con .createStatement ()) {
1022
+ stmt .execute ("alter session set jdbc_query_result_format = 'ARROW'" );
1023
+ stmt .execute (createTableSql );
1024
+ stmt .execute (insertStmt );
1025
+
1026
+ // Test with jdbc_arrow_treat_decimal_as_int=true and JDBC_TREAT_DECIMAL_AS_INT=true
1027
+ try (ResultSet rs = stmt .executeQuery (selectQuery )) {
1028
+ while (rs .next ()) {
1029
+ assertEquals ("class java.lang.Long" , rs .getObject (1 ).getClass ().toString ());
1030
+ assertEquals ("class java.math.BigDecimal" , rs .getObject (2 ).getClass ().toString ());
1031
+ assertEquals ("class java.lang.Long" , rs .getObject (3 ).getClass ().toString ());
1032
+ assertEquals ("class java.lang.Long" , rs .getObject (4 ).getClass ().toString ());
1033
+ }
1034
+ }
1035
+
1036
+ // Test with jdbc_arrow_treat_decimal_as_int=true and JDBC_TREAT_DECIMAL_AS_INT=false
1037
+ stmt .execute (setJdbcTreatDecimalAsIntFalse );
1038
+ try (ResultSet rs = stmt .executeQuery (selectQuery )) {
1039
+ while (rs .next ()) {
1040
+ assertEquals ("class java.lang.Long" , rs .getObject (1 ).getClass ().toString ());
1041
+ assertEquals ("class java.math.BigDecimal" , rs .getObject (2 ).getClass ().toString ());
1042
+ assertEquals ("class java.lang.Long" , rs .getObject (3 ).getClass ().toString ());
1043
+ assertEquals ("class java.lang.Long" , rs .getObject (4 ).getClass ().toString ());
1044
+ }
1045
+ }
1046
+ }
1047
+ }
1048
+
983
1049
// Test setting new connection property jdbc_arrow_treat_decimal_as_int=false. Connection property
984
1050
// introduced after version 3.15.0.
985
1051
@ Test
986
1052
public void testGetObjectForJSONResultFormatJDBCArrowDecimalAsIntFalse () throws SQLException {
987
1053
Properties properties = new Properties ();
988
1054
properties .put ("jdbc_arrow_treat_decimal_as_int" , false );
989
- try (Connection con = init (properties );
1055
+ try (Connection con = getConnection (properties );
990
1056
Statement stmt = con .createStatement ()) {
1057
+ stmt .execute ("alter session set jdbc_query_result_format = 'JSON'" );
991
1058
stmt .execute (createTableSql );
992
1059
stmt .execute (insertStmt );
993
1060
994
1061
// Test with jdbc_arrow_treat_decimal_as_int=false and JDBC_TREAT_DECIMAL_AS_INT=true
995
1062
try (ResultSet rs = stmt .executeQuery (selectQuery )) {
996
1063
while (rs .next ()) {
997
- assertEquals (rs .getObject (1 ).getClass ().toString (), "class java.lang.Long" );
998
- assertEquals (rs .getObject (2 ).getClass ().toString (), "class java.math.BigDecimal" );
999
- assertEquals (rs .getObject (3 ).getClass ().toString (), "class java.lang.Long" );
1000
- assertEquals (rs .getObject (4 ).getClass ().toString (), "class java.lang.Long" );
1064
+ assertEquals ("class java.lang.Long" , rs .getObject (1 ).getClass ().toString ());
1065
+ assertEquals ("class java.math.BigDecimal" , rs .getObject (2 ).getClass ().toString ());
1066
+ assertEquals ("class java.lang.Long" , rs .getObject (3 ).getClass ().toString ());
1067
+ assertEquals ("class java.lang.Long" , rs .getObject (4 ).getClass ().toString ());
1001
1068
}
1002
1069
}
1003
1070
1004
1071
// Test with jdbc_arrow_treat_decimal_as_int=false and JDBC_TREAT_DECIMAL_AS_INT=false
1005
1072
stmt .execute (setJdbcTreatDecimalAsIntFalse );
1006
1073
try (ResultSet rs = stmt .executeQuery (selectQuery )) {
1007
1074
while (rs .next ()) {
1008
- assertEquals (rs .getObject (1 ).getClass ().toString (), "class java.math.BigDecimal" );
1009
- assertEquals (rs .getObject (2 ).getClass ().toString (), "class java.math.BigDecimal" );
1010
- assertEquals (rs .getObject (3 ).getClass ().toString (), "class java.math.BigDecimal" );
1011
- assertEquals (rs .getObject (4 ).getClass ().toString (), "class java.math.BigDecimal" );
1075
+ assertEquals ("class java.math.BigDecimal" , rs .getObject (1 ).getClass ().toString ());
1076
+ assertEquals ("class java.math.BigDecimal" , rs .getObject (2 ).getClass ().toString ());
1077
+ assertEquals ("class java.math.BigDecimal" , rs .getObject (3 ).getClass ().toString ());
1078
+ assertEquals ("class java.math.BigDecimal" , rs .getObject (4 ).getClass ().toString ());
1012
1079
}
1013
1080
}
1014
1081
}
@@ -1018,29 +1085,30 @@ public void testGetObjectForJSONResultFormatJDBCArrowDecimalAsIntFalse() throws
1018
1085
// Connection property introduced after version 3.15.0.
1019
1086
@ Test
1020
1087
public void testGetObjectForJSONResultFormatJDBCArrowDecimalAsIntTrue () throws SQLException {
1021
- try (Connection con = init ();
1088
+ try (Connection con = BaseJDBCTest . getConnection ();
1022
1089
Statement stmt = con .createStatement ()) {
1090
+ stmt .execute ("alter session set jdbc_query_result_format = 'JSON'" );
1023
1091
stmt .execute (createTableSql );
1024
1092
stmt .execute (insertStmt );
1025
1093
1026
1094
// Test with jdbc_arrow_treat_decimal_as_int=true and JDBC_TREAT_DECIMAL_AS_INT=true
1027
1095
try (ResultSet rs = stmt .executeQuery (selectQuery )) {
1028
1096
while (rs .next ()) {
1029
- assertEquals (rs .getObject (1 ).getClass ().toString (), "class java.lang.Long" );
1030
- assertEquals (rs .getObject (2 ).getClass ().toString (), "class java.math.BigDecimal" );
1031
- assertEquals (rs .getObject (3 ).getClass ().toString (), "class java.lang.Long" );
1032
- assertEquals (rs .getObject (4 ).getClass ().toString (), "class java.lang.Long" );
1097
+ assertEquals ("class java.lang.Long" , rs .getObject (1 ).getClass ().toString ());
1098
+ assertEquals ("class java.math.BigDecimal" , rs .getObject (2 ).getClass ().toString ());
1099
+ assertEquals ("class java.lang.Long" , rs .getObject (3 ).getClass ().toString ());
1100
+ assertEquals ("class java.lang.Long" , rs .getObject (4 ).getClass ().toString ());
1033
1101
}
1034
1102
}
1035
1103
1036
1104
// Test with jdbc_arrow_treat_decimal_as_int=true and JDBC_TREAT_DECIMAL_AS_INT=false
1037
1105
stmt .execute (setJdbcTreatDecimalAsIntFalse );
1038
1106
try (ResultSet rs = stmt .executeQuery (selectQuery )) {
1039
1107
while (rs .next ()) {
1040
- assertEquals (rs .getObject (1 ).getClass ().toString (), "class java.math.BigDecimal" );
1041
- assertEquals (rs .getObject (2 ).getClass ().toString (), "class java.math.BigDecimal" );
1042
- assertEquals (rs .getObject (3 ).getClass ().toString (), "class java.math.BigDecimal" );
1043
- assertEquals (rs .getObject (4 ).getClass ().toString (), "class java.math.BigDecimal" );
1108
+ assertEquals ("class java.math.BigDecimal" , rs .getObject (1 ).getClass ().toString ());
1109
+ assertEquals ("class java.math.BigDecimal" , rs .getObject (2 ).getClass ().toString ());
1110
+ assertEquals ("class java.math.BigDecimal" , rs .getObject (3 ).getClass ().toString ());
1111
+ assertEquals ("class java.math.BigDecimal" , rs .getObject (4 ).getClass ().toString ());
1044
1112
}
1045
1113
}
1046
1114
}
0 commit comments