|
4 | 4 | import java.io.File; |
5 | 5 | import java.io.IOException; |
6 | 6 | import java.math.BigDecimal; |
| 7 | +import java.math.BigInteger; |
7 | 8 | import java.net.Inet4Address; |
8 | 9 | import java.net.Inet6Address; |
9 | 10 | import java.net.MalformedURLException; |
|
16 | 17 | import java.sql.ParameterMetaData; |
17 | 18 | import java.sql.PreparedStatement; |
18 | 19 | import java.sql.ResultSet; |
| 20 | +import java.sql.ResultSetMetaData; |
19 | 21 | import java.sql.SQLException; |
20 | 22 | import java.sql.Statement; |
21 | 23 | import java.sql.Timestamp; |
@@ -2006,6 +2008,80 @@ public void testInsertWithSettings() throws SQLException { |
2006 | 2008 | } |
2007 | 2009 | } |
2008 | 2010 |
|
| 2011 | + @Test(groups = "integration") |
| 2012 | + public void testGetMetadataTypes() throws SQLException { |
| 2013 | + try (Connection conn = newConnection(new Properties()); |
| 2014 | + PreparedStatement ps = conn.prepareStatement("select ? a, ? b")) { |
| 2015 | + ResultSetMetaData md = ps.getMetaData(); |
| 2016 | + Assert.assertEquals(md.getColumnCount(), 2); |
| 2017 | + Assert.assertEquals(md.getColumnName(1), "a"); |
| 2018 | + Assert.assertEquals(md.getColumnTypeName(1), "Nullable(Nothing)"); |
| 2019 | + Assert.assertEquals(md.getColumnName(2), "b"); |
| 2020 | + Assert.assertEquals(md.getColumnTypeName(2), "Nullable(Nothing)"); |
| 2021 | + |
| 2022 | + ps.setString(1, "x"); |
| 2023 | + md = ps.getMetaData(); |
| 2024 | + Assert.assertEquals(md.getColumnCount(), 2); |
| 2025 | + Assert.assertEquals(md.getColumnName(1), "a"); |
| 2026 | + Assert.assertEquals(md.getColumnTypeName(1), "String"); |
| 2027 | + Assert.assertEquals(md.getColumnName(2), "b"); |
| 2028 | + Assert.assertEquals(md.getColumnTypeName(2), "Nullable(Nothing)"); |
| 2029 | + |
| 2030 | + ps.setObject(2, new BigInteger("12345")); |
| 2031 | + md = ps.getMetaData(); |
| 2032 | + Assert.assertEquals(md.getColumnCount(), 2); |
| 2033 | + Assert.assertEquals(md.getColumnName(1), "a"); |
| 2034 | + Assert.assertEquals(md.getColumnTypeName(1), "String"); |
| 2035 | + Assert.assertEquals(md.getColumnName(2), "b"); |
| 2036 | + Assert.assertEquals(md.getColumnTypeName(2), "UInt16"); |
| 2037 | + |
| 2038 | + ps.addBatch(); |
| 2039 | + ps.setInt(1, 2); |
| 2040 | + md = ps.getMetaData(); |
| 2041 | + Assert.assertEquals(md.getColumnCount(), 2); |
| 2042 | + Assert.assertEquals(md.getColumnName(1), "a"); |
| 2043 | + Assert.assertEquals(md.getColumnTypeName(1), "String"); |
| 2044 | + Assert.assertEquals(md.getColumnName(2), "b"); |
| 2045 | + Assert.assertEquals(md.getColumnTypeName(2), "UInt16"); |
| 2046 | + |
| 2047 | + ps.clearBatch(); |
| 2048 | + ps.clearParameters(); |
| 2049 | + md = ps.getMetaData(); |
| 2050 | + Assert.assertEquals(md.getColumnCount(), 2); |
| 2051 | + Assert.assertEquals(md.getColumnName(1), "a"); |
| 2052 | + Assert.assertEquals(md.getColumnTypeName(1), "Nullable(Nothing)"); |
| 2053 | + Assert.assertEquals(md.getColumnName(2), "b"); |
| 2054 | + Assert.assertEquals(md.getColumnTypeName(2), "Nullable(Nothing)"); |
| 2055 | + } |
| 2056 | + } |
| 2057 | + |
| 2058 | + @Test(groups = "integration") |
| 2059 | + public void testGetMetadataStatements() throws SQLException { |
| 2060 | + try (Connection conn = newConnection(new Properties()); |
| 2061 | + PreparedStatement createPs = conn.prepareStatement("create table test_get_metadata_statements (col String) Engine=Log"); |
| 2062 | + PreparedStatement selectPs = conn.prepareStatement("select 'Hello, World!'"); |
| 2063 | + PreparedStatement insertPs = conn.prepareStatement( |
| 2064 | + "insert into test_get_metadata_statements select 'Hello, World!'"); |
| 2065 | + PreparedStatement updatePs = conn.prepareStatement( |
| 2066 | + "update test_get_metadata_statements set col = 'Bye, World!'"); |
| 2067 | + PreparedStatement grantPs = conn.prepareStatement("grant select on * to default"); |
| 2068 | + PreparedStatement commitPS = conn.prepareStatement("commit");) { |
| 2069 | + |
| 2070 | + // Only select shall have valid metadata |
| 2071 | + ResultSetMetaData selectMetaData = selectPs.getMetaData(); |
| 2072 | + Assert.assertNotNull(selectMetaData); |
| 2073 | + Assert.assertEquals(selectMetaData.getColumnCount(), 1); |
| 2074 | + Assert.assertEquals(selectMetaData.getColumnTypeName(1), "String"); |
| 2075 | + |
| 2076 | + // The rest shall return null |
| 2077 | + Assert.assertNull(createPs.getMetaData()); |
| 2078 | + Assert.assertNull(insertPs.getMetaData()); |
| 2079 | + Assert.assertNull(updatePs.getMetaData()); |
| 2080 | + Assert.assertNull(grantPs.getMetaData()); |
| 2081 | + Assert.assertNull(commitPS.getMetaData()); |
| 2082 | + } |
| 2083 | + } |
| 2084 | + |
2009 | 2085 | @Test(groups = "integration") |
2010 | 2086 | public void testGetParameterMetaData() throws SQLException { |
2011 | 2087 | try (Connection conn = newConnection(new Properties()); |
|
0 commit comments