/** * Create a PreparedStatement for SELECT requests with scrolling of results */ public PreparedStatement newScrollingSelectStatement(DbSession session, String sql) { int fetchSize = database.getDialect().getScrollDefaultFetchSize(); return newScrollingSelectStatement(session, sql, fetchSize); }
/** * Create a PreparedStatement for SELECT requests with scrolling of results row by row (only one row * in memory at a time) */ public PreparedStatement newScrollingSingleRowSelectStatement(DbSession session, String sql) { int fetchSize = database.getDialect().getScrollSingleRowFetchSize(); return newScrollingSelectStatement(session, sql, fetchSize); }
IssueIteratorForSingleChunk(DbClient dbClient, @Nullable String projectUuid, @Nullable Collection<String> issueKeys) { checkArgument(issueKeys == null || issueKeys.size() <= DatabaseUtils.PARTITION_SIZE_FOR_ORACLE, "Cannot search for more than " + DatabaseUtils.PARTITION_SIZE_FOR_ORACLE + " issue keys at once. Please provide the keys in smaller chunks."); this.projectUuid = projectUuid; this.issueKeys = issueKeys; this.session = dbClient.openSession(false); try { String sql = createSql(); stmt = dbClient.getMyBatis().newScrollingSelectStatement(session, sql); iterator = createIterator(); } catch (Exception e) { session.close(); throw new IllegalStateException("Fail to prepare SQL request to select all issues", e); } }
private static PreparedStatement createStatement(DbClient dbClient, DbSession session, List<String> projectUuids) throws SQLException { String sql; if (projectUuids.isEmpty()) { sql = StringUtils.replace(SQL_TEMPLATE, "{projectsCondition}", ""); } else { sql = StringUtils.replace(SQL_TEMPLATE, "{projectsCondition}", " AND projects.uuid in (" + repeat("?", ", ", projectUuids.size()) + ")"); } PreparedStatement stmt = dbClient.getMyBatis().newScrollingSelectStatement(session, sql); int index = 1; // query for RowKind.USER index = populateProjectUuidPlaceholders(stmt, projectUuids, index); // query for RowKind.GROUP index = populateProjectUuidPlaceholders(stmt, projectUuids, index); // query for RowKind.ANYONE index = setPrivateProjectPlaceHolder(stmt, index, false); index = populateProjectUuidPlaceholders(stmt, projectUuids, index); // query for RowKind.NONE index = setPrivateProjectPlaceHolder(stmt, index, true); populateProjectUuidPlaceholders(stmt, projectUuids, index); return stmt; }
/** * Create a PreparedStatement for SELECT requests with scrolling of results row by row (only one row * in memory at a time) */ public PreparedStatement newScrollingSingleRowSelectStatement(DbSession session, String sql) { int fetchSize = database.getDialect().getScrollSingleRowFetchSize(); return newScrollingSelectStatement(session, sql, fetchSize); }
/** * Create a PreparedStatement for SELECT requests with scrolling of results */ public PreparedStatement newScrollingSelectStatement(DbSession session, String sql) { int fetchSize = database.getDialect().getScrollDefaultFetchSize(); return newScrollingSelectStatement(session, sql, fetchSize); }
IssueIteratorForSingleChunk(DbClient dbClient, @Nullable String projectUuid, @Nullable Collection<String> issueKeys) { checkArgument(issueKeys == null || issueKeys.size() <= DatabaseUtils.PARTITION_SIZE_FOR_ORACLE, "Cannot search for more than " + DatabaseUtils.PARTITION_SIZE_FOR_ORACLE + " issue keys at once. Please provide the keys in smaller chunks."); this.projectUuid = projectUuid; this.issueKeys = issueKeys; this.session = dbClient.openSession(false); try { String sql = createSql(); stmt = dbClient.getMyBatis().newScrollingSelectStatement(session, sql); iterator = createIterator(); } catch (Exception e) { session.close(); throw new IllegalStateException("Fail to prepare SQL request to select all issues", e); } }
private static PreparedStatement createStatement(DbClient dbClient, DbSession session, List<String> projectUuids) throws SQLException { String sql; if (projectUuids.isEmpty()) { sql = StringUtils.replace(SQL_TEMPLATE, "{projectsCondition}", ""); } else { sql = StringUtils.replace(SQL_TEMPLATE, "{projectsCondition}", " AND projects.uuid in (" + repeat("?", ", ", projectUuids.size()) + ")"); } PreparedStatement stmt = dbClient.getMyBatis().newScrollingSelectStatement(session, sql); int index = 1; // query for RowKind.USER index = populateProjectUuidPlaceholders(stmt, projectUuids, index); // query for RowKind.GROUP index = populateProjectUuidPlaceholders(stmt, projectUuids, index); // query for RowKind.ANYONE index = setPrivateProjectPlaceHolder(stmt, index, false); index = populateProjectUuidPlaceholders(stmt, projectUuids, index); // query for RowKind.NONE index = setPrivateProjectPlaceHolder(stmt, index, true); populateProjectUuidPlaceholders(stmt, projectUuids, index); return stmt; }