Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[CONJ-776] Temporal Data Tables are not listed in DatabaseMetaData.ge…
…tTables
  • Loading branch information
rusher committed Mar 26, 2020
1 parent ab2e8db commit 5506f00
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 2 deletions.
5 changes: 3 additions & 2 deletions src/main/java/org/mariadb/jdbc/MariaDbDatabaseMetaData.java
Expand Up @@ -656,7 +656,7 @@ public ResultSet getTables(
StringBuilder sql =
new StringBuilder(
"SELECT TABLE_SCHEMA TABLE_CAT, NULL TABLE_SCHEM, TABLE_NAME,"
+ " IF(TABLE_TYPE='BASE TABLE', 'TABLE', TABLE_TYPE) as TABLE_TYPE,"
+ " IF(TABLE_TYPE='BASE TABLE' or TABLE_TYPE='SYSTEM VERSIONED', 'TABLE', TABLE_TYPE) as TABLE_TYPE,"
+ " TABLE_COMMENT REMARKS, NULL TYPE_CAT, NULL TYPE_SCHEM, NULL TYPE_NAME, NULL SELF_REFERENCING_COL_NAME, "
+ " NULL REF_GENERATION"
+ " FROM INFORMATION_SCHEMA.TABLES "
Expand All @@ -670,7 +670,8 @@ public ResultSet getTables(
if (types[i] == null) {
continue;
}
String type = "TABLE".equals(types[i]) ? "'BASE TABLE'" : escapeQuote(types[i]);
String type =
"TABLE".equals(types[i]) ? "'BASE TABLE','SYSTEM VERSIONED'" : escapeQuote(types[i]);
if (i == types.length - 1) {
sql.append(type).append(")");
} else {
Expand Down
14 changes: 14 additions & 0 deletions src/test/java/org/mariadb/jdbc/DatabaseMetadataTest.java
Expand Up @@ -111,6 +111,7 @@ public static void initClass() throws SQLException {
createTable("ytab", "y year");
createTable("maxcharlength", "maxcharlength char(1)", "character set utf8");
createTable("conj72", "t tinyint(1)");
createTable("versionTable", "x INT", "WITH SYSTEM VERSIONING");
}

private static void checkType(String name, int actualType, String colName, int expectedType) {
Expand Down Expand Up @@ -445,6 +446,19 @@ public void testGetTables2() throws SQLException {
assertEquals(false, rs.next());
}

@Test
public void testGetTablesSystemVersionTables() throws SQLException {
DatabaseMetaData dbmd = sharedConnection.getMetaData();
ResultSet rs = dbmd.getTables(null, null, "versionTable", null);
assertEquals(true, rs.next());
assertEquals(false, rs.next());
rs = dbmd.getTables(null, null, "versionTable", new String[] {"TABLE"});
assertEquals(true, rs.next());
assertEquals(false, rs.next());
rs = dbmd.getTables(null, null, "versionTable", new String[] {"SYSTEM VIEW"});
assertEquals(false, rs.next());
}

@Test
public void testGetTables3() throws SQLException {
Statement stmt = sharedConnection.createStatement();
Expand Down

0 comments on commit 5506f00

Please sign in to comment.