@Override protected void addTo(DatabaseObject foundObject, DatabaseSnapshot snapshot) throws DatabaseException, InvalidExampleException { if (!snapshot.getSnapshotControl().shouldInclude(Column.class)) { return; } if (foundObject instanceof Relation) { Database database = snapshot.getDatabase(); Relation relation = (Relation) foundObject; List<CachedRow> allColumnsMetadataRs = null; try { JdbcDatabaseSnapshot.CachingDatabaseMetaData databaseMetaData = ((JdbcDatabaseSnapshot) snapshot).getMetaData(); Schema schema; schema = relation.getSchema(); allColumnsMetadataRs = databaseMetaData.getColumns( ((AbstractJdbcDatabase) database).getJdbcCatalogName(schema), ((AbstractJdbcDatabase) database).getJdbcSchemaName(schema), relation.getName(), null); for (CachedRow row : allColumnsMetadataRs) { Column exampleColumn = new Column() .setRelation(relation) .setName(StringUtils.trimToNull(row.getString("COLUMN_NAME"))); relation.getColumns().add(exampleColumn); } } catch (Exception e) { throw new DatabaseException(e); } } }