// Catalog clone_catalog = new Catalog();
// clone_catalog.execute(catalog_db.getCatalog().serialize());
// return (CatalogUtil.getDatabase(clone_catalog));
final Catalog clone_catalog = CatalogCloner.cloneBaseCatalog(catalog_db.getCatalog(), new ArrayList<Class<? extends CatalogType>>());
Database clone_db = CatalogUtil.getDatabase(clone_catalog);
assert (!catalog_db.equals(clone_db));
// Need to also clone the MultiColumn guys too!
for (Table catalog_tbl : catalog_db.getTables()) {
Table clone_tbl = clone_db.getTables().get(catalog_tbl.getName());
for (Column catalog_col : catalog_tbl.getColumns()) {
if (catalog_col instanceof MultiColumn) {
MultiColumn mc = (MultiColumn) catalog_col;
Column clone_cols[] = new Column[mc.size()];
for (int i = 0; i < clone_cols.length; i++) {
clone_cols[i] = clone_tbl.getColumns().get(mc.get(i).getName());
} // FOR
MultiColumn clone_mc = MultiColumn.get(clone_cols);
assert (clone_mc != null);
}
}
assert (catalog_tbl.getColumns().size() == clone_tbl.getColumns().size()) : catalog_tbl.getColumns() + " != " + clone_tbl.getColumns();
} // FOR
// And don't forget MultiProcParameter!
for (Procedure catalog_proc : catalog_db.getProcedures()) {
Procedure clone_proc = clone_db.getProcedures().get(catalog_proc.getName());
for (ProcParameter catalog_param : catalog_proc.getParameters()) {
if (catalog_param instanceof MultiProcParameter) {
MultiProcParameter mpp = (MultiProcParameter) catalog_param;
ProcParameter clone_params[] = new ProcParameter[mpp.size()];
for (int i = 0; i < clone_params.length; i++) {