|
44 | 44 | import java.sql.Timestamp;
|
45 | 45 | import java.sql.Types;
|
46 | 46 | import java.util.Arrays;
|
| 47 | +import java.util.Collections; |
47 | 48 | import java.util.UUID;
|
48 | 49 | import org.junit.Test;
|
49 | 50 | import org.junit.runner.RunWith;
|
|
52 | 53 | @RunWith(JUnit4.class)
|
53 | 54 | public class JdbcParameterStoreTest {
|
54 | 55 |
|
| 56 | + /** |
| 57 | + * Tests setting a {@link Value} as a parameter value. |
| 58 | + * |
| 59 | + * @throws SQLException |
| 60 | + */ |
| 61 | + @Test |
| 62 | + public void testSetValueAsParameter() throws SQLException { |
| 63 | + JdbcParameterStore params = new JdbcParameterStore(); |
| 64 | + params.setParameter(1, Value.bool(true)); |
| 65 | + verifyParameter(params, Value.bool(true)); |
| 66 | + params.setParameter(1, Value.bytes(ByteArray.copyFrom("test"))); |
| 67 | + verifyParameter(params, Value.bytes(ByteArray.copyFrom("test"))); |
| 68 | + params.setParameter(1, Value.date(com.google.cloud.Date.fromYearMonthDay(2021, 5, 3))); |
| 69 | + verifyParameter(params, Value.date(com.google.cloud.Date.fromYearMonthDay(2021, 5, 3))); |
| 70 | + params.setParameter(1, Value.float64(3.14d)); |
| 71 | + verifyParameter(params, Value.float64(3.14d)); |
| 72 | + params.setParameter(1, Value.int64(1L)); |
| 73 | + verifyParameter(params, Value.int64(1L)); |
| 74 | + params.setParameter(1, Value.numeric(BigDecimal.TEN)); |
| 75 | + verifyParameter(params, Value.numeric(BigDecimal.TEN)); |
| 76 | + params.setParameter(1, Value.string("test")); |
| 77 | + verifyParameter(params, Value.string("test")); |
| 78 | + params.setParameter( |
| 79 | + 1, Value.timestamp(com.google.cloud.Timestamp.ofTimeSecondsAndNanos(9999L, 101))); |
| 80 | + verifyParameter( |
| 81 | + params, Value.timestamp(com.google.cloud.Timestamp.ofTimeSecondsAndNanos(9999L, 101))); |
| 82 | + |
| 83 | + params.setParameter(1, Value.boolArray(new boolean[] {true, false})); |
| 84 | + verifyParameter(params, Value.boolArray(new boolean[] {true, false})); |
| 85 | + params.setParameter(1, Value.bytesArray(Collections.singleton(ByteArray.copyFrom("test")))); |
| 86 | + verifyParameter(params, Value.bytesArray(Collections.singleton(ByteArray.copyFrom("test")))); |
| 87 | + params.setParameter( |
| 88 | + 1, |
| 89 | + Value.dateArray(Collections.singleton(com.google.cloud.Date.fromYearMonthDay(2021, 5, 3)))); |
| 90 | + verifyParameter( |
| 91 | + params, |
| 92 | + Value.dateArray(Collections.singleton(com.google.cloud.Date.fromYearMonthDay(2021, 5, 3)))); |
| 93 | + params.setParameter(1, Value.float64Array(Collections.singleton(3.14d))); |
| 94 | + verifyParameter(params, Value.float64Array(Collections.singleton(3.14d))); |
| 95 | + params.setParameter(1, Value.int64Array(Collections.singleton(1L))); |
| 96 | + verifyParameter(params, Value.int64Array(Collections.singleton(1L))); |
| 97 | + params.setParameter(1, Value.numericArray(Collections.singleton(BigDecimal.TEN))); |
| 98 | + verifyParameter(params, Value.numericArray(Collections.singleton(BigDecimal.TEN))); |
| 99 | + params.setParameter(1, Value.stringArray(Collections.singleton("test"))); |
| 100 | + verifyParameter(params, Value.stringArray(Collections.singleton("test"))); |
| 101 | + params.setParameter( |
| 102 | + 1, |
| 103 | + Value.timestampArray( |
| 104 | + Collections.singleton(com.google.cloud.Timestamp.ofTimeSecondsAndNanos(9999L, 101)))); |
| 105 | + verifyParameter( |
| 106 | + params, |
| 107 | + Value.timestampArray( |
| 108 | + Collections.singleton(com.google.cloud.Timestamp.ofTimeSecondsAndNanos(9999L, 101)))); |
| 109 | + } |
| 110 | + |
55 | 111 | /** Tests setting a parameter value together with a sql type */
|
56 | 112 | @SuppressWarnings("deprecation")
|
57 | 113 | @Test
|
@@ -422,55 +478,55 @@ private void assertInvalidParameter(JdbcParameterStore params, Object value, int
|
422 | 478 | @Test
|
423 | 479 | public void testSetParameterWithoutType() throws SQLException {
|
424 | 480 | JdbcParameterStore params = new JdbcParameterStore();
|
425 |
| - params.setParameter(1, (byte) 1, null); |
| 481 | + params.setParameter(1, (byte) 1, (Integer) null); |
426 | 482 | assertEquals(1, ((Byte) params.getParameter(1)).byteValue());
|
427 | 483 | verifyParameter(params, Value.int64(1));
|
428 |
| - params.setParameter(1, (short) 1, null); |
| 484 | + params.setParameter(1, (short) 1, (Integer) null); |
429 | 485 | assertEquals(1, ((Short) params.getParameter(1)).shortValue());
|
430 | 486 | verifyParameter(params, Value.int64(1));
|
431 |
| - params.setParameter(1, 1, null); |
| 487 | + params.setParameter(1, 1, (Integer) null); |
432 | 488 | assertEquals(1, ((Integer) params.getParameter(1)).intValue());
|
433 | 489 | verifyParameter(params, Value.int64(1));
|
434 |
| - params.setParameter(1, 1L, null); |
| 490 | + params.setParameter(1, 1L, (Integer) null); |
435 | 491 | assertEquals(1, ((Long) params.getParameter(1)).longValue());
|
436 | 492 | verifyParameter(params, Value.int64(1));
|
437 |
| - params.setParameter(1, (float) 1, null); |
| 493 | + params.setParameter(1, (float) 1, (Integer) null); |
438 | 494 | assertEquals(1.0f, ((Float) params.getParameter(1)).floatValue(), 0.0f);
|
439 | 495 | verifyParameter(params, Value.float64(1));
|
440 |
| - params.setParameter(1, (double) 1, null); |
| 496 | + params.setParameter(1, (double) 1, (Integer) null); |
441 | 497 | assertEquals(1.0d, ((Double) params.getParameter(1)).doubleValue(), 0.0d);
|
442 | 498 | verifyParameter(params, Value.float64(1));
|
443 |
| - params.setParameter(1, new Date(1970 - 1900, 0, 1), null); |
| 499 | + params.setParameter(1, new Date(1970 - 1900, 0, 1), (Integer) null); |
444 | 500 | assertEquals(new Date(1970 - 1900, 0, 1), params.getParameter(1));
|
445 | 501 | verifyParameter(params, Value.date(com.google.cloud.Date.fromYearMonthDay(1970, 1, 1)));
|
446 |
| - params.setParameter(1, new Time(0L), null); |
| 502 | + params.setParameter(1, new Time(0L), (Integer) null); |
447 | 503 | assertEquals(new Time(0L), params.getParameter(1));
|
448 | 504 | verifyParameter(
|
449 | 505 | params, Value.timestamp(com.google.cloud.Timestamp.ofTimeSecondsAndNanos(0L, 0)));
|
450 |
| - params.setParameter(1, new Timestamp(0L), null); |
| 506 | + params.setParameter(1, new Timestamp(0L), (Integer) null); |
451 | 507 | assertEquals(new Timestamp(0L), params.getParameter(1));
|
452 | 508 | verifyParameter(
|
453 | 509 | params, Value.timestamp(com.google.cloud.Timestamp.ofTimeSecondsAndNanos(0L, 0)));
|
454 |
| - params.setParameter(1, new byte[] {1, 2, 3}, null); |
| 510 | + params.setParameter(1, new byte[] {1, 2, 3}, (Integer) null); |
455 | 511 | assertArrayEquals(new byte[] {1, 2, 3}, (byte[]) params.getParameter(1));
|
456 | 512 | verifyParameter(params, Value.bytes(ByteArray.copyFrom(new byte[] {1, 2, 3})));
|
457 | 513 |
|
458 |
| - params.setParameter(1, new JdbcBlob(new byte[] {1, 2, 3}), null); |
| 514 | + params.setParameter(1, new JdbcBlob(new byte[] {1, 2, 3}), (Integer) null); |
459 | 515 | assertEquals(new JdbcBlob(new byte[] {1, 2, 3}), params.getParameter(1));
|
460 | 516 | verifyParameter(params, Value.bytes(ByteArray.copyFrom(new byte[] {1, 2, 3})));
|
461 |
| - params.setParameter(1, new JdbcClob("test"), null); |
| 517 | + params.setParameter(1, new JdbcClob("test"), (Integer) null); |
462 | 518 | assertEquals(new JdbcClob("test"), params.getParameter(1));
|
463 | 519 | verifyParameter(params, Value.string("test"));
|
464 |
| - params.setParameter(1, true, null); |
| 520 | + params.setParameter(1, true, (Integer) null); |
465 | 521 | assertTrue((Boolean) params.getParameter(1));
|
466 | 522 | verifyParameter(params, Value.bool(true));
|
467 |
| - params.setParameter(1, "test", null); |
| 523 | + params.setParameter(1, "test", (Integer) null); |
468 | 524 | assertEquals("test", params.getParameter(1));
|
469 | 525 | verifyParameter(params, Value.string("test"));
|
470 |
| - params.setParameter(1, new JdbcClob("test"), null); |
| 526 | + params.setParameter(1, new JdbcClob("test"), (Integer) null); |
471 | 527 | assertEquals(new JdbcClob("test"), params.getParameter(1));
|
472 | 528 | verifyParameter(params, Value.string("test"));
|
473 |
| - params.setParameter(1, UUID.fromString("83b988cf-1f4e-428a-be3d-cc712621942e"), null); |
| 529 | + params.setParameter(1, UUID.fromString("83b988cf-1f4e-428a-be3d-cc712621942e"), (Integer) null); |
474 | 530 | assertEquals(UUID.fromString("83b988cf-1f4e-428a-be3d-cc712621942e"), params.getParameter(1));
|
475 | 531 | verifyParameter(params, Value.string("83b988cf-1f4e-428a-be3d-cc712621942e"));
|
476 | 532 | }
|
|
0 commit comments