public static BSimSqlClause createFilter(BSimFilter exeFilter, IDSQLResolution idres[],
		SQLFunctionDatabase db) throws SQLException {
		String tableclause = null;
		String whereclause = null;

		SQLEffects effects = new SQLEffects();
		effects.generateWhereClause(exeFilter, idres, db);
		whereclause = effects.buildWhereClause();
		if ((whereclause == null) || (whereclause.length() == 0)) {
			return null;
		}

		tableclause = effects.buildTableClause();

		return new BSimSqlClause(tableclause, whereclause);
	}
Given a general ExecutableFilter object, return a set of matching SQL string pieces,
ready to be pasted into the full SQL statement.  The routine is handed an array of IDResolution references
matching individual FilterAtoms as returned by ExecutableFilter.getAtom(i).  The IDResolution, if non-null,
holds any pre-calculated ids associated with the corresponding FilterAtom
@param exeFilter is the general filter
@param idres is the array holding pre-calculated ids
@param db SQL function database
@return BSimFilterSQL, holding the table clause and the where clause
@throws SQLException for errors building the SQL clause
Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/client/SQLEffects.java