|
16 | 16 | import org.junit.jupiter.api.Assertions;
|
17 | 17 | import org.junit.jupiter.api.BeforeAll;
|
18 | 18 | import org.junit.jupiter.api.BeforeEach;
|
| 19 | +import org.junit.jupiter.api.Disabled; |
19 | 20 | import org.junit.jupiter.api.DisplayName;
|
20 | 21 | import org.junit.jupiter.api.Test;
|
21 | 22 | import org.junit.jupiter.api.extension.RegisterExtension;
|
@@ -685,6 +686,102 @@ public void testMixedStatements() throws SQLException {
|
685 | 686 | }
|
686 | 687 | }
|
687 | 688 |
|
| 689 | + @Test |
| 690 | + @Disabled // https://github.com/ydb-platform/ydb/issues/6699 |
| 691 | + public void testReturingStatements() throws SQLException { |
| 692 | + String returningQuery = QUERIES.withTableName("" |
| 693 | + + "INSERT INTO #tableName (key, c_Text) VALUES (1, '123') RETURNING key;\n" |
| 694 | + + "INSERT INTO #tableName (key, c_Text) VALUES (2, '234');\n" |
| 695 | + + "UPDATE #tableName SET c_Text = '100' WHERE key = 1 RETURNING c_Text;\n" |
| 696 | + + "UPDATE #tableName SET c_Text = '200' WHERE key = 2;\n" |
| 697 | + + "UPSERT INTO #tableName (key, c_Text) VALUES (1, '321') RETURNING key, c_Text;\n" |
| 698 | + + "UPSERT INTO #tableName (key, c_Text) VALUES (2, '222');\n" |
| 699 | + + "REPLACE INTO #tableName (key, c_Text) VALUES (1, '111') RETURNING c_Text, key;\n" |
| 700 | + + "REPLACE INTO #tableName (key, c_Text) VALUES (2, '333');\n" |
| 701 | + + "DELETE FROM #tableName WHERE key = 1 RETURNING c_Text;\n" |
| 702 | + + "DELETE FROM #tableName WHERE key = 2;\n" |
| 703 | + ); |
| 704 | + |
| 705 | + try (Statement statement = jdbc.connection().createStatement()) { |
| 706 | + // INSERT with returning |
| 707 | + Assertions.assertTrue(statement.execute(returningQuery)); |
| 708 | + Assertions.assertEquals(-1, statement.getUpdateCount()); |
| 709 | + try (ResultSet rs = statement.getResultSet()) { |
| 710 | + Assertions.assertTrue(rs.next()); |
| 711 | + Assertions.assertEquals(1, rs.getInt("key")); |
| 712 | + Assertions.assertFalse(rs.next()); |
| 713 | + } |
| 714 | + |
| 715 | + // simple INSERT |
| 716 | + Assertions.assertFalse(statement.getMoreResults()); |
| 717 | + Assertions.assertNull(statement.getResultSet()); |
| 718 | + Assertions.assertEquals(1, statement.getUpdateCount()); |
| 719 | + |
| 720 | + // UPDATE with returning |
| 721 | + Assertions.assertTrue(statement.getMoreResults()); |
| 722 | + Assertions.assertEquals(-1, statement.getUpdateCount()); |
| 723 | + try (ResultSet rs = statement.getResultSet()) { |
| 724 | + Assertions.assertTrue(rs.next()); |
| 725 | + Assertions.assertEquals("100", rs.getString("c_Text")); |
| 726 | + Assertions.assertFalse(rs.next()); |
| 727 | + } |
| 728 | + |
| 729 | + // simple UPDATE |
| 730 | + Assertions.assertFalse(statement.getMoreResults()); |
| 731 | + Assertions.assertNull(statement.getResultSet()); |
| 732 | + Assertions.assertEquals(1, statement.getUpdateCount()); |
| 733 | + |
| 734 | + // UPSERT with returning |
| 735 | + Assertions.assertTrue(statement.getMoreResults()); |
| 736 | + Assertions.assertEquals(-1, statement.getUpdateCount()); |
| 737 | + try (ResultSet rs = statement.getResultSet()) { |
| 738 | + Assertions.assertTrue(rs.next()); |
| 739 | + Assertions.assertEquals(1, rs.getInt("key")); |
| 740 | + Assertions.assertEquals("321", rs.getString("c_Text")); |
| 741 | + Assertions.assertFalse(rs.next()); |
| 742 | + } |
| 743 | + |
| 744 | + // simple UPSERT |
| 745 | + Assertions.assertFalse(statement.getMoreResults()); |
| 746 | + Assertions.assertNull(statement.getResultSet()); |
| 747 | + Assertions.assertEquals(1, statement.getUpdateCount()); |
| 748 | + |
| 749 | + // REPLACE with returning |
| 750 | + Assertions.assertTrue(statement.getMoreResults()); |
| 751 | + Assertions.assertEquals(-1, statement.getUpdateCount()); |
| 752 | + try (ResultSet rs = statement.getResultSet()) { |
| 753 | + Assertions.assertTrue(rs.next()); |
| 754 | + Assertions.assertEquals(1, rs.getInt("key")); |
| 755 | + Assertions.assertEquals("111", rs.getString("c_Text")); |
| 756 | + Assertions.assertFalse(rs.next()); |
| 757 | + } |
| 758 | + |
| 759 | + // simple REPLACE |
| 760 | + Assertions.assertFalse(statement.getMoreResults()); |
| 761 | + Assertions.assertNull(statement.getResultSet()); |
| 762 | + Assertions.assertEquals(1, statement.getUpdateCount()); |
| 763 | + |
| 764 | + // DELETE with returning |
| 765 | + Assertions.assertTrue(statement.getMoreResults()); |
| 766 | + Assertions.assertEquals(-1, statement.getUpdateCount()); |
| 767 | + try (ResultSet rs = statement.getResultSet()) { |
| 768 | + Assertions.assertTrue(rs.next()); |
| 769 | + Assertions.assertEquals("111", rs.getString("c_Text")); |
| 770 | + Assertions.assertFalse(rs.next()); |
| 771 | + } |
| 772 | + |
| 773 | + // simple DELETE |
| 774 | + Assertions.assertFalse(statement.getMoreResults()); |
| 775 | + Assertions.assertNull(statement.getResultSet()); |
| 776 | + Assertions.assertEquals(1, statement.getUpdateCount()); |
| 777 | + |
| 778 | + // no more results |
| 779 | + Assertions.assertFalse(statement.getMoreResults()); |
| 780 | + Assertions.assertNull(statement.getResultSet()); |
| 781 | + Assertions.assertEquals(-1, statement.getUpdateCount()); |
| 782 | + } |
| 783 | + } |
| 784 | + |
688 | 785 | @Test
|
689 | 786 | public void testWarningsInQuery() throws SQLException {
|
690 | 787 | String createTempTable = QUERIES.withTableName(
|
|
0 commit comments