/** * @param excludeIndirectColumns * @param excludeColumns * @throws SQLException */ private void initColumns(Pattern excludeIndirectColumns, Pattern excludeColumns) throws SQLException { ResultSet rs = null; synchronized (Table.class) { try { rs = db.getMetaData().getColumns(null, getSchema(), getName(), "%"); while (rs.next()) addColumn(rs, excludeIndirectColumns, excludeColumns); } catch (SQLException exc) { class ColumnInitializationFailure extends SQLException { private static final long serialVersionUID = 1L; public ColumnInitializationFailure(SQLException failure) { super( "Failed to collect column details for " + (isView() ? "view" : "table") + " '" + getName() + "' in schema '" + getSchema() + "'"); initCause(failure); } } throw new ColumnInitializationFailure(exc); } finally { if (rs != null) rs.close(); } } if (!isView() && !isRemote()) initColumnAutoUpdate(false); }