Esempio n. 1
0
 def drop_sql_ids(self, couch_ids):
     """Filter the given couch ids, removing ids that are in SQL"""
     for dbname, form_ids in split_list_by_db_partition(couch_ids):
         with XFormInstanceSQL.get_cursor_for_partition_db(
                 dbname, readonly=True) as cursor:
             cursor.execute(self.sql, [form_ids])
             yield from (form_id for form_id, in cursor.fetchall())
def _drop_sql_form_ids(couch_ids, domain):
    from corehq.sql_db.util import split_list_by_db_partition
    get_missing_forms = """
        SELECT couch.form_id
        FROM (SELECT unnest(%s) AS form_id) AS couch
        LEFT JOIN form_processor_xforminstancesql sql USING (form_id)
        WHERE sql.form_id IS NULL
    """
    for dbname, form_ids in split_list_by_db_partition(couch_ids):
        with XFormInstanceSQL.get_cursor_for_partition_db(
                dbname, readonly=True) as cursor:
            cursor.execute(get_missing_forms, [form_ids])
            yield from (form_id for form_id, in cursor.fetchall())
Esempio n. 3
0
def _update_forms(db_name, form_ids):
    with XFormInstanceSQL.get_cursor_for_partition_db(db_name) as cursor:
        cursor.execute(
            """
        WITH max_dates as (
            SELECT form_id, max(modified_on) as modified_on FROM (
                     SELECT form_id,
                        CASE WHEN deleted_on is not NULL THEN deleted_on
                        WHEN edited_on is not NULL AND edited_on > received_on THEN edited_on
                        ELSE received_on END as modified_on
                        FROM form_processor_xforminstancesql
                        WHERE form_processor_xforminstancesql.form_id in %(form_ids)s
                union
                select form_id, max(date) as modified_on from form_processor_xformoperationsql
                where form_processor_xformoperationsql.form_id in %(form_ids)s
                group by form_id
                ) as d group by form_id
        )
        UPDATE form_processor_xforminstancesql SET server_modified_on = max_dates.modified_on
        FROM max_dates
        WHERE form_processor_xforminstancesql.form_id = max_dates.form_id
        """, {'form_ids': form_ids})
Esempio n. 4
0
 def get_missing_form_ids(db, db_form_ids):
     with XFormInstanceSQL.get_cursor_for_partition_db(
             db, readonly=True) as cursor:
         cursor.execute(sql, [db_form_ids])
         return [r[0] for r in cursor.fetchall()]