PHOENIX-4182 DatabaseMetaData.getTables throws exception when getting SEQUENCE information
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/3392fa6f Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/3392fa6f Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/3392fa6f Branch: refs/heads/master Commit: 3392fa6fc2b8b0eb5ce683fb8bad4a421110b817 Parents: 63b71ca Author: James Taylor <[email protected]> Authored: Mon Sep 11 13:06:17 2017 -0700 Committer: James Taylor <[email protected]> Committed: Mon Sep 11 14:53:36 2017 -0700 ---------------------------------------------------------------------- .../phoenix/end2end/QueryDatabaseMetaDataIT.java | 13 +++++++++++++ .../apache/phoenix/jdbc/PhoenixDatabaseMetaData.java | 14 ++++++++------ 2 files changed, 21 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/3392fa6f/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryDatabaseMetaDataIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryDatabaseMetaDataIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryDatabaseMetaDataIT.java index 44012b9..12c0bd3 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryDatabaseMetaDataIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryDatabaseMetaDataIT.java @@ -275,6 +275,19 @@ public class QueryDatabaseMetaDataIT extends BaseClientManagedTimeIT { assertEquals("BAS", rs.getString("TABLE_NAME")); assertEquals(PTableType.TABLE.toString(), rs.getString("TABLE_TYPE")); assertFalse(rs.next()); + + rs = dbmd.getTables(null, "B", null, new String[] {PhoenixDatabaseMetaData.SEQUENCE_TABLE_TYPE}); + assertTrue(rs.next()); + assertNull(rs.getString("TABLE_CAT")); + assertEquals("B", rs.getString("TABLE_SCHEM")); + assertEquals("S1", rs.getString("TABLE_NAME")); + assertEquals(PhoenixDatabaseMetaData.SEQUENCE_TABLE_TYPE, rs.getString("TABLE_TYPE")); + assertTrue(rs.next()); + assertNull(rs.getString("TABLE_CAT")); + assertEquals("B", rs.getString("TABLE_SCHEM")); + assertEquals("S3", rs.getString("TABLE_NAME")); + assertEquals(PhoenixDatabaseMetaData.SEQUENCE_TABLE_TYPE, rs.getString("TABLE_TYPE")); + assertFalse(rs.next()); } @Test http://git-wip-us.apache.org/repos/asf/phoenix/blob/3392fa6f/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixDatabaseMetaData.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixDatabaseMetaData.java b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixDatabaseMetaData.java index 24bfde7..ac7f3ef 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixDatabaseMetaData.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixDatabaseMetaData.java @@ -1031,10 +1031,10 @@ public class PhoenixDatabaseMetaData implements DatabaseMetaData { public Integer getScale() { return null; } - @Override - public SortOrder getSortOrder() { - return SortOrder.getDefault(); - } + @Override + public SortOrder getSortOrder() { + return SortOrder.getDefault(); + } }; private static final RowProjector TABLE_TYPE_ROW_PROJECTOR = new RowProjector(Arrays.<ColumnProjector>asList( new ExpressionProjector(TABLE_TYPE, SYSTEM_CATALOG, @@ -1160,10 +1160,12 @@ public class PhoenixDatabaseMetaData implements DatabaseMetaData { StringBuilder whereClause = new StringBuilder(); addTenantIdFilter(whereClause, catalog); if (schemaPattern != null) { - whereClause.append(" and " + SEQUENCE_SCHEMA + (schemaPattern.length() == 0 ? " is null" : " like '" + StringUtil.escapeStringConstant(schemaPattern) + "'\n" )); + appendConjunction(whereClause); + whereClause.append(SEQUENCE_SCHEMA + (schemaPattern.length() == 0 ? " is null" : " like '" + StringUtil.escapeStringConstant(schemaPattern) + "'\n" )); } if (tableNamePattern != null) { - whereClause.append(" and " + SEQUENCE_NAME + " like '" + StringUtil.escapeStringConstant(tableNamePattern) + "'\n" ); + appendConjunction(whereClause); + whereClause.append(SEQUENCE_NAME + " like '" + StringUtil.escapeStringConstant(tableNamePattern) + "'\n" ); } if (whereClause.length() > 0) { buf.append(" where\n");
