|
40 | 40 | import java.sql.ResultSetMetaData; |
41 | 41 | import java.sql.SQLException; |
42 | 42 | import java.sql.Statement; |
| 43 | +import java.sql.Types; |
43 | 44 | import java.text.DateFormat; |
44 | 45 | import java.time.ZoneId; |
45 | 46 | import java.time.ZoneOffset; |
|
51 | 52 | import java.util.List; |
52 | 53 | import java.util.Map; |
53 | 54 | import java.util.Objects; |
| 55 | +import java.util.Optional; |
54 | 56 | import java.util.Set; |
55 | 57 | import java.util.TreeMap; |
56 | 58 | import java.util.concurrent.TimeUnit; |
@@ -233,6 +235,18 @@ public static void tableResultSetEqualTest( |
233 | 235 | "+00:00"); |
234 | 236 | } |
235 | 237 |
|
| 238 | + public static void tableResultSetEqualByDataTypeTest( |
| 239 | + String sql, String[] expectedHeader, String[] expectedRetArray, String database) { |
| 240 | + tableResultSetEqualByDataTypeTest( |
| 241 | + sql, |
| 242 | + expectedHeader, |
| 243 | + expectedRetArray, |
| 244 | + SessionConfig.DEFAULT_USER, |
| 245 | + SessionConfig.DEFAULT_PASSWORD, |
| 246 | + database, |
| 247 | + "+00:00"); |
| 248 | + } |
| 249 | + |
236 | 250 | public static void tableResultSetEqualTest( |
237 | 251 | String sql, |
238 | 252 | String timeZone, |
@@ -298,6 +312,57 @@ public static void tableResultSetEqualTest( |
298 | 312 | } |
299 | 313 | } |
300 | 314 |
|
| 315 | + public static void tableResultSetEqualByDataTypeTest( |
| 316 | + String sql, |
| 317 | + String[] expectedHeader, |
| 318 | + String[] expectedRetArray, |
| 319 | + String userName, |
| 320 | + String password, |
| 321 | + String database, |
| 322 | + String timeZone) { |
| 323 | + try (Connection connection = |
| 324 | + EnvFactory.getEnv().getConnection(userName, password, BaseEnv.TABLE_SQL_DIALECT)) { |
| 325 | + connection.setClientInfo("time_zone", timeZone); |
| 326 | + try (Statement statement = connection.createStatement()) { |
| 327 | + statement.execute("use " + database); |
| 328 | + try (ResultSet resultSet = statement.executeQuery(sql)) { |
| 329 | + ResultSetMetaData resultSetMetaData = resultSet.getMetaData(); |
| 330 | + for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) { |
| 331 | + assertEquals(expectedHeader[i - 1], resultSetMetaData.getColumnName(i)); |
| 332 | + } |
| 333 | + assertEquals(expectedHeader.length, resultSetMetaData.getColumnCount()); |
| 334 | + |
| 335 | + int cnt = 0; |
| 336 | + while (resultSet.next()) { |
| 337 | + for (int i = 1; i <= expectedHeader.length; i++) { |
| 338 | + if (resultSetMetaData.getColumnType(i) == Types.BOOLEAN) { |
| 339 | + assertEquals( |
| 340 | + Boolean.valueOf(expectedRetArray[cnt].split(",")[i - 1]), |
| 341 | + resultSet.getBoolean(i)); |
| 342 | + } else if (resultSetMetaData.getColumnType(i) == Types.INTEGER) { |
| 343 | + assertEquals( |
| 344 | + Optional.of(Integer.valueOf(expectedRetArray[cnt].split(",")[i - 1])), |
| 345 | + Optional.of(resultSet.getInt(i))); |
| 346 | + } else if (resultSetMetaData.getColumnType(i) == Types.DOUBLE) { |
| 347 | + assertEquals( |
| 348 | + Double.valueOf(expectedRetArray[cnt].split(",")[i - 1]), |
| 349 | + resultSet.getDouble(i), |
| 350 | + DELTA); |
| 351 | + } else if (resultSetMetaData.getColumnType(i) == Types.VARCHAR) { |
| 352 | + assertEquals(expectedRetArray[cnt].split(",")[i - 1], resultSet.getString(i)); |
| 353 | + } |
| 354 | + } |
| 355 | + cnt++; |
| 356 | + } |
| 357 | + assertEquals(expectedRetArray.length, cnt); |
| 358 | + } |
| 359 | + } |
| 360 | + } catch (SQLException e) { |
| 361 | + e.printStackTrace(); |
| 362 | + fail(e.getMessage()); |
| 363 | + } |
| 364 | + } |
| 365 | + |
301 | 366 | public static void tableExecuteTest(String sql, String userName, String password) { |
302 | 367 | try (Connection connection = |
303 | 368 | EnvFactory.getEnv().getConnection(userName, password, BaseEnv.TABLE_SQL_DIALECT)) { |
|
0 commit comments