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 { 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);