'` (id, _iversion) SELECT source.id, _get_head_iversion(source.id) FROM entities AS source WHERE EXISTS (SELECT 1 FROM `reference_data` AS data WHERE data.value=source.id AND ( data.value_iversion IS NULL OR data.value_iversion=_get_head_iversion(source.id))',
IF(entitiesTableISNULL,
'',
CONCAT(' AND EXISTS (SELECT 1 FROM `',
entitiesTable,
'` AS e WHERE e.id=data.entity_id LIMIT 1)')),
IF(propertiesTableISNULL,
'',
CONCAT(' AND EXISTS (SELECT 1 FROM `',
propertiesTable,
'` AS p WHERE p.id=data.property_id LIMIT 1)')),
') UNION ALL SELECT source.id, source._iversion FROM archive_entities AS source WHERE EXISTS (SELECT 1 FROM `reference_data` AS data WHERE data.value=source.id AND ( data.value_iversion IS NULL OR data.value_iversion=source._iversion)',
IF(entitiesTableISNULL,
'',
CONCAT(' AND EXISTS (SELECT 1 FROM `',
entitiesTable,
'` AS e WHERE e.id=data.entity_id LIMIT 1)')),
IF(propertiesTableISNULL,
'',
CONCAT(' AND EXISTS (SELECT 1 FROM `',
propertiesTable,
'` AS p WHERE p.id=data.property_id LIMIT 1)')),
')');
ELSEIFtargetSetISNULLORsourceSet=targetSetTHEN
SET@stmtBackRefStr=CONCAT('DELETE FROM `',
sourceSet,
'` WHERE NOT EXISTS (SELECT 1 FROM `reference_data` AS data WHERE data.value=`',
sourceSet,
'`.`id` AND ( data.value_iversion IS NULL OR data.value_iversion=`',
sourceSet,
'`._iversion)',
IF(entitiesTableISNULL,
'',
CONCAT(' AND EXISTS (SELECT 1 FROM `',
entitiesTable,
'` AS e WHERE e.id=data.entity_id LIMIT 1)')),
IF(propertiesTableISNULL,
'',
CONCAT(' AND EXISTS (SELECT 1 FROM `',
propertiesTable,
'` AS p WHERE p.id=data.property_id LIMIT 1)')),
')');
ELSE
SET@stmtBackRefStr=CONCAT('INSERT IGNORE INTO `',
targetSet,
'` (id, _iversion) SELECT source.id, source._iversion FROM `',
sourceSet,
'` AS source WHERE EXISTS (SELECT 1 FROM `reference_data` AS data WHERE data.value=source.id AND ( data.value_iversion IS NULL OR data.value_iversion=_get_head_iversion(source.id))',
IF(entitiesTableISNULL,
'',
CONCAT(' AND EXISTS (SELECT 1 FROM `',
entitiesTable,
'` AS e WHERE e.id=data.entity_id LIMIT 1)')),
IF(propertiesTableISNULL,
'',
CONCAT(' AND EXISTS (SELECT 1 FROM `',
propertiesTable,
'` AS p WHERE p.id=data.property_id LIMIT 1)')),
')');
ENDIF;
ELSE
IFtargetSetISNULLORsourceSet=targetSetTHEN
SET@stmtBackRefStr=CONCAT('DELETE FROM `',sourceSet,'` WHERE NOT EXISTS (SELECT 1 FROM `reference_data` AS data WHERE data.value=`',sourceSet,'`.`id`',IF(entitiesTableISNULL,'',CONCAT(' AND EXISTS (SELECT 1 FROM `',entitiesTable,'` AS e WHERE e.id=data.entity_id LIMIT 1)')),IF(propertiesTableISNULL,'',CONCAT(' AND EXISTS (SELECT 1 FROM `',propertiesTable,'` AS p WHERE p.id=data.property_id LIMIT 1)')),')');
SET@stmtBackRefStr=CONCAT('DELETE FROM `',
sourceSet,
'` WHERE NOT EXISTS (SELECT 1 FROM `reference_data` AS data WHERE data.value=`',
sourceSet,
'`.`id`',
IF(entitiesTableISNULL,
'',
CONCAT('
AND EXISTS (SELECT 1 FROM `',
entitiesTable,
'` AS e WHERE e.id=data.entity_id LIMIT 1)')),
IF(propertiesTableISNULL,
'',
CONCAT('
AND EXISTS (SELECT 1 FROM `',
propertiesTable,
'` AS p WHERE p.id=data.property_id LIMIT 1)')),
')');
ELSE
SET@stmtBackRefStr=CONCAT('INSERT IGNORE INTO `',targetSet,'` (id) SELECT id FROM `',sourceSet,'` AS source WHERE EXISTS (SELECT 1 FROM `reference_data` AS data WHERE data.value=source.id',IF(entitiesTableISNULL,'',CONCAT(' AND EXISTS (SELECT 1 FROM `',entitiesTable,'` AS e WHERE e.id=data.entity_id LIMIT 1)')),IF(propertiesTableISNULL,'',CONCAT(' AND EXISTS (SELECT 1 FROM `',propertiesTable,'` AS p WHERE p.id=data.property_id LIMIT 1)')),')');
SET@stmtBackRefStr=CONCAT('INSERT IGNORE INTO `',
targetSet,
'` (id) SELECT id FROM `',
sourceSet,
'` AS source WHERE EXISTS (SELECT 1 FROM `reference_data` AS data WHERE data.value=source.id',