@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);
      }
    }
  }