def _dequeuing_delete_mc_rmcb(cursor, transfersession_id):
# delete rmcb records with merge conflicts
delete_mc_rmc = """DELETE FROM {rmcb}
WHERE EXISTS
(SELECT 1 FROM {store} AS store, {rmc} AS rmc
/*Scope to a single record.*/
WHERE store.id = {rmcb}.model_uuid
AND store.id = rmc.store_model_id
/*Where buffer rmc is greater than store rmc*/
AND {rmcb}.instance_id = rmc.instance_id
AND {rmcb}.transfer_session_id = '{transfer_session_id}'
/*Exclude fast fast-forwards*/
AND NOT EXISTS (SELECT 1 FROM {rmcb} AS rmcb2 WHERE store.id = rmcb2.model_uuid
AND store.last_saved_instance = rmcb2.instance_id
AND store.last_saved_counter <= rmcb2.counter
AND rmcb2.transfer_session_id = '{transfer_session_id}'))
""".format(buffer=Buffer._meta.db_table,
store=Store._meta.db_table,
rmc=RecordMaxCounter._meta.db_table,
rmcb=RecordMaxCounterBuffer._meta.db_table,
transfer_session_id=transfersession_id)
cursor.execute(delete_mc_rmc)
评论列表
文章目录