package sqlancer; import java.util.List; import sqlancer.common.log.LoggableFactory; import sqlancer.common.log.SQLLoggableFactory; import sqlancer.common.query.SQLQueryAdapter; import sqlancer.common.schema.AbstractSchema; import sqlancer.common.schema.AbstractTable; public abstract class SQLProviderAdapter>, O extends DBMSSpecificOptions extends OracleFactory>> extends ProviderAdapter { protected SQLProviderAdapter(Class globalClass, Class optionClass) { super(globalClass, optionClass); } @Override public LoggableFactory getLoggableFactory() { return new SQLLoggableFactory(); } @Override protected void checkViewsAreValid(G globalState) { List extends AbstractTable, ?, ?>> views = globalState.getSchema().getViews(); for (AbstractTable, ?, ?> view : views) { SQLQueryAdapter q = new SQLQueryAdapter("SELECT 1 FROM " + view.getName() + " LIMIT 1"); try { if (!q.execute(globalState)) { dropView(globalState, view.getName()); } } catch (Throwable t) { dropView(globalState, view.getName()); } } } private void dropView(G globalState, String viewName) { try { globalState.executeStatement(new SQLQueryAdapter("DROP VIEW " + viewName, true)); } catch (Throwable t2) { throw new IgnoreMeException(); } } }