Fix JdbcTest for database metadata

This commit is contained in:
Kevin Risden 2016-04-29 08:57:02 -05:00
parent e9ff7264ed
commit 201527a611
2 changed files with 35 additions and 17 deletions

View File

@ -705,17 +705,29 @@ class DatabaseMetaDataImpl implements DatabaseMetaData {
@Override
public ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) throws SQLException {
return this.connectionStatement.executeQuery("select TABLE_CAT, TABLE_SCHEM, TABLE_NAME, TABLE_TYPE, REMARKS from _TABLES_");
String tableCatCheck = "";
if(catalog != null) {
tableCatCheck = "tableCat = '\" + catalog + \"' and";
}
if(schemaPattern == null) {
schemaPattern = "%";
}
if(tableNamePattern == null) {
tableNamePattern = "%";
}
return this.connectionStatement.executeQuery("select tableCat, tableSchem, tableName, tableType, remarks from " +
"metadata.TABLES where " + tableCatCheck + " tableSchem like '" + schemaPattern + "' and tableName like '" +
tableNamePattern + "'");
}
@Override
public ResultSet getSchemas() throws SQLException {
return this.connectionStatement.executeQuery("select TABLE_SCHEM, TABLE_CATALOG from _SCHEMAS_");
return this.connectionStatement.executeQuery("select distinct tableSchem, tableCat from metadata.TABLES");
}
@Override
public ResultSet getCatalogs() throws SQLException {
return this.connectionStatement.executeQuery("select TABLE_CAT from _CATALOGS_");
return this.connectionStatement.executeQuery("select distinct tableCat from metadata.TABLES");
}
@Override

View File

@ -25,6 +25,9 @@ import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.sql.Types;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Properties;
import org.apache.lucene.util.LuceneTestCase;
@ -466,11 +469,19 @@ public class JdbcTest extends AbstractFullDistribZkTestBase {
// assertEquals(0, databaseMetaData.getDriverMajorVersion());
// assertEquals(0, databaseMetaData.getDriverMinorVersion());
// TODO fix getCatalogs, getSchemas, and getTables
/*
try(ResultSet rs = databaseMetaData.getSchemas()) {
assertTrue(rs.next());
assertEquals(zkServer.getZkAddress(), rs.getString("tableSchem"));
assertNull(rs.getString("tableCat"));
assertTrue(rs.next());
assertEquals("metadata", rs.getString("tableSchem"));
assertNull(rs.getString("tableCat"));
assertFalse(rs.next());
}
try(ResultSet rs = databaseMetaData.getCatalogs()) {
assertTrue(rs.next());
assertEquals(zkServer.getZkAddress(), rs.getString("TABLE_CAT"));
assertNull(rs.getString("tableCat"));
assertFalse(rs.next());
}
@ -478,22 +489,17 @@ public class JdbcTest extends AbstractFullDistribZkTestBase {
collections.addAll(cloudClient.getZkStateReader().getClusterState().getCollections());
Collections.sort(collections);
try(ResultSet rs = databaseMetaData.getSchemas()) {
assertFalse(rs.next());
}
try(ResultSet rs = databaseMetaData.getTables(zkServer.getZkAddress(), null, "%", null)) {
try(ResultSet rs = databaseMetaData.getTables(null, zkServer.getZkAddress(), "%", null)) {
for(String acollection : collections) {
assertTrue(rs.next());
assertEquals(zkServer.getZkAddress(), rs.getString("TABLE_CAT"));
assertNull(rs.getString("TABLE_SCHEM"));
assertEquals(acollection, rs.getString("TABLE_NAME"));
assertEquals("TABLE", rs.getString("TABLE_TYPE"));
assertNull(rs.getString("REMARKS"));
assertNull(rs.getString("tableCat"));
assertEquals(zkServer.getZkAddress(), rs.getString("tableSchem"));
assertEquals(acollection, rs.getString("tableName"));
assertEquals("TABLE", rs.getString("tableType"));
assertNull(rs.getString("remarks"));
}
assertFalse(rs.next());
}
*/
assertTrue(con.isReadOnly());
con.setReadOnly(true);