From f8ab6ee37382ee1310bb05932be5f6cf15f3e072 Mon Sep 17 00:00:00 2001 From: Telmo Brugnara Date: Wed, 29 May 2019 17:42:47 -0300 Subject: [PATCH 1/2] Accept null 'columnNamePattern' on DatabaseMetaData.getColumns() - #11 --- .../opendistroforelasticsearch/jdbc/DatabaseMetaDataImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/amazon/opendistroforelasticsearch/jdbc/DatabaseMetaDataImpl.java b/src/main/java/com/amazon/opendistroforelasticsearch/jdbc/DatabaseMetaDataImpl.java index 2bb99d2..638058f 100644 --- a/src/main/java/com/amazon/opendistroforelasticsearch/jdbc/DatabaseMetaDataImpl.java +++ b/src/main/java/com/amazon/opendistroforelasticsearch/jdbc/DatabaseMetaDataImpl.java @@ -1217,7 +1217,9 @@ static class ColumnMetadataStatement extends PreparedStatementImpl { ColumnMetadataStatement(ConnectionImpl connection, String tableNamePattern, String columnNamePattern, Logger log) throws SQLException { // TODO - once sql plugin supports PreparedStatement fully, do this through a preparedStatement with params - super(connection, "DESCRIBE TABLES LIKE " + tableNamePattern + " COLUMNS LIKE " + columnNamePattern, log); + super(connection, "DESCRIBE TABLES LIKE " + tableNamePattern + + (columnNamePattern != null ? (" COLUMNS LIKE " + columnNamePattern) : ""), + log); } static class ColumnMetadataResultSet extends ResultSetImpl { From bead669f5822cdcc881221574bbde7f1e23fb057 Mon Sep 17 00:00:00 2001 From: Telmo Brugnara Date: Mon, 24 Jun 2019 17:02:13 -0300 Subject: [PATCH 2/2] Tests added for DatabaseMetaData.getColumns() - #11 --- .../jdbc/DatabaseMetaDataTests.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/test/java/com/amazon/opendistroforelasticsearch/jdbc/DatabaseMetaDataTests.java b/src/test/java/com/amazon/opendistroforelasticsearch/jdbc/DatabaseMetaDataTests.java index fbf2bbd..aa8e854 100644 --- a/src/test/java/com/amazon/opendistroforelasticsearch/jdbc/DatabaseMetaDataTests.java +++ b/src/test/java/com/amazon/opendistroforelasticsearch/jdbc/DatabaseMetaDataTests.java @@ -16,6 +16,7 @@ package com.amazon.opendistroforelasticsearch.jdbc; +import com.amazon.opendistroforelasticsearch.jdbc.DatabaseMetaDataImpl.ColumnMetadataStatement; import com.amazon.opendistroforelasticsearch.jdbc.config.ConnectionConfig; import com.amazon.opendistroforelasticsearch.jdbc.logging.NoOpLogger; import com.amazon.opendistroforelasticsearch.jdbc.protocol.ClusterMetadata; @@ -367,6 +368,24 @@ void testGetSchemasWithInvalidPatterns() throws Exception { assertEmptySchemaResultSet(dbmd.getSchemas("mock-cluster", "some-schema")); assertEmptySchemaResultSet(dbmd.getSchemas(null, "some-schema")); } + + @Test + void testGetColumnsWithoutColumnNamePattern() throws Exception { + Connection con = getMockConnection(); + + ColumnMetadataStatement stmt = new ColumnMetadataStatement((ConnectionImpl)con, "TABLE_%", null, NoOpLogger.INSTANCE); + assertEquals("DESCRIBE TABLES LIKE TABLE_%", stmt.sql); + assertDoesNotThrow(stmt::close); + } + + @Test + void testGetColumnsWithColumnNamePattern() throws Exception { + Connection con = getMockConnection(); + + ColumnMetadataStatement stmt = new ColumnMetadataStatement((ConnectionImpl)con, "TABLE_%", "COLUMN_%", NoOpLogger.INSTANCE); + assertEquals("DESCRIBE TABLES LIKE TABLE_% COLUMNS LIKE COLUMN_%", stmt.sql); + assertDoesNotThrow(stmt::close); + } private void assertValidSchemaResultSet(ResultSet rs) throws SQLException { getExpectedSchemaResultSet().assertMatches(rs);