String table = getMailItemTableName(mbox);
    public static List markDeletionTargets(Mailbox mbox, List ids) throws ServiceException {        Connection conn = mbox.getOperationConnection();        String table = getMailItemTableName(mbox);        PreparedStatement stmt = null;        ResultSet rs = null;        for (int i = 0; i < ids.size(); i += IN_CLAUSE_BATCH_SIZE)            try {                int count = Math.min(IN_CLAUSE_BATCH_SIZE, ids.size() - i);                stmt = conn.prepareStatement("UPDATE " + table + ", " +                        "(SELECT parent_id pid, COUNT(*) count, GROUP_CONCAT(id SEPARATOR ':') deleted FROM " + getMailItemTableName(mbox) +                        " WHERE id IN" + suitableNumberOfVariables(count) + "AND parent_id IS NOT NULL GROUP BY parent_id) x" +                        " SET size = size - count, metadata = CONCAT(deleted, ':', metadata), mod_metadata = ?" +                        " WHERE id = pid AND type = " + MailItem.TYPE_CONVERSATION);                int attr = 1;                for (int index = i; index < i + count; index++)                	stmt.setInt(attr++, ((Integer) ids.get(index)).intValue());                stmt.setLong(attr++, mbox.getOperationTimestamp());                stmt.executeUpdate();                stmt.close();            } catch (SQLException e) {                throw ServiceException.FAILURE("marking deletions for conversations touching items " + ids, e);            } finally {                DbPool.closeResults(rs);                DbPool.closeStatement(stmt);            }        return getPurgedConversations(mbox);    }