|
15 | 15 | import java.sql.Connection; |
16 | 16 | import java.sql.Date; |
17 | 17 | import java.sql.ResultSet; |
| 18 | +import java.sql.ResultSetMetaData; |
18 | 19 | import java.sql.SQLException; |
19 | 20 | import java.sql.Statement; |
20 | 21 | import java.time.LocalDate; |
@@ -1189,6 +1190,43 @@ public void testSetFetchSize() throws Exception { |
1189 | 1190 | } |
1190 | 1191 | } |
1191 | 1192 |
|
| 1193 | + @Test(groups = {"integration"}) |
| 1194 | + public void testResponseWithDuplicateColumns() throws Exception { |
| 1195 | + try (Connection conn = getJdbcConnection(); Statement stmt = conn.createStatement()) { |
| 1196 | + |
| 1197 | + |
| 1198 | + try (ResultSet rs = stmt.executeQuery("SELECT 'a', 'a'")) { |
| 1199 | + ResultSetMetaData metaData = rs.getMetaData(); |
| 1200 | + Assert.assertEquals(metaData.getColumnCount(), 2); |
| 1201 | + Assert.assertEquals(metaData.getColumnName(1), "'a'"); |
| 1202 | + Assert.assertEquals(metaData.getColumnName(2), "'a'"); |
| 1203 | + } |
| 1204 | + |
| 1205 | + { |
| 1206 | + stmt.execute("DROP TABLE IF EXISTS test_jdbc_duplicate_column_names_1"); |
| 1207 | + stmt.execute("DROP TABLE IF EXISTS test_jdbc_duplicate_column_names_2"); |
| 1208 | + stmt.execute("CREATE TABLE test_jdbc_duplicate_column_names1 (name String ) ENGINE = MergeTree ORDER BY ()"); |
| 1209 | + stmt.execute("INSERT INTO test_jdbc_duplicate_column_names1 VALUES ('some name')"); |
| 1210 | + stmt.execute("CREATE TABLE test_jdbc_duplicate_column_names2 (name String ) ENGINE = MergeTree ORDER BY ()"); |
| 1211 | + stmt.execute("INSERT INTO test_jdbc_duplicate_column_names2 VALUES ('another name')"); |
| 1212 | + |
| 1213 | + try (ResultSet rs = stmt.executeQuery("SELECT * FROM test_jdbc_duplicate_column_names1, test_jdbc_duplicate_column_names2")) { |
| 1214 | + ResultSetMetaData metaData = rs.getMetaData(); |
| 1215 | + Assert.assertEquals(metaData.getColumnCount(), 2); |
| 1216 | + Assert.assertEquals(metaData.getColumnName(1), "name"); |
| 1217 | + Assert.assertEquals(metaData.getColumnName(2), "test_jdbc_duplicate_column_names2.name"); |
| 1218 | + |
| 1219 | + rs.next(); |
| 1220 | + Assert.assertEquals(rs.getString("name"), "some name"); |
| 1221 | + Assert.assertEquals(rs.getString("test_jdbc_duplicate_column_names2.name"), "another name"); |
| 1222 | + Assert.assertEquals(rs.getString(1), "some name"); |
| 1223 | + Assert.assertEquals(rs.getString(2), "another name"); |
| 1224 | + |
| 1225 | + } |
| 1226 | + } |
| 1227 | + } |
| 1228 | + } |
| 1229 | + |
1192 | 1230 | private static String getDBName(Statement stmt) throws SQLException { |
1193 | 1231 | try (ResultSet rs = stmt.executeQuery("SELECT database()")) { |
1194 | 1232 | rs.next(); |
|
0 commit comments