THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Code Block | ||
---|---|---|
| ||
public JDBCCatalog extends AbstractCatalog { JDBCDialect dialect; Catalog internal; public JDBCCatalog(String catalogName, String defaultDatabase, String userName, String pwd, String baseUrl) { JDBCDialect d = JDBCDialects.get(baseUrl).get(); switch(d) { case postgres: internal = new PostgresJDBCCatalog(...); break; case derby: ... } } void open() { // verify jdbc connection to fail earlier } void close(); Optional<TableFactory> getTableFactory() { return Optional.of(new JDBCTableSourceSinkFactory()); } List<String> listDatabases() { return internal.listDatabases(); } List<String>boolean listDatabasesdatabaseExists(String dbname) { return internal.listDatabases();// just try to make a connection, true if succeeded, false otherwise } CatalogTable getTable(ObjectPath op) { return internal.getTable(op); } List<String> listTables(String db) { return internal.listTables(db); } } public PostgresJDBCCatalog extends JDBCCatalog { // cannot be instantiated by users protected PostgresJDBCCatalog(String catalogName, String defaultDatabase, String userName, String pwd, String baseUrl) { } boolean databaseExists(String dbname) { // execute and parse result } boolean tableExists(ObjectPath path) { // execute and parse result } List<String> listDatabases() { // execute and parse result } CatalogTable getTable(ObjectPath op) { // execute and parse result // map data types and build catalog table } List<String> listTables() { // execute and parse result } } |
...