Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagesql
DO
$$
    BEGIN
        CREATE TEMP TABLE value_matched_id_inconsistency ON COMMIT DROP AS
        SELECT rl.id, rl.matched_id, mi.value
        FROM {tenantId}_mod_source_record_storage.records_lb rl,
             {tenantId}_mod_source_record_storage.marc_indexers mi,
             {tenantId}_mod_source_record_storage.marc_records_tracking rt
        WHERE rt.marc_id = mi.marc_id and rt.version = mi.version
          AND rl.id = mi.marc_id AND rl.state='ACTUAL'
          AND mi.field_no='999' AND mi.ind1='f' AND mi.ind2='f' AND mi.subfield_no='s' AND rl.matched_id::text != mi.value;

        CREATE TEMP TABLE matched_id_max_generation_table ON COMMIT DROP AS
        SELECT rl.matched_id, MAX(rl.generation) AS max_gen
        FROM {tenantId}_mod_source_record_storage.records_lb rl,
             value_matched_id_inconsistency val_match
        WHERE rl.matched_id = val_match.value::uuid
        GROUP BY rl.matched_idUNIONid
        UNION ALL
        SELECT val_match.value::uuid, 0 AS max_gen
        FROM value_matched_id_inconsistency val_match
        WHERE val_match.value::uuid NOT IN (SELECT matched_id FROM test123{tenantId}_mod_source_record_storage.records_lb);;

        UPDATE {tenantId}_mod_source_record_storage.records_lb r
        SET matched_id = val_match.value::uuid,
            generation = matched_id_max_generation_table.max_gen + 1
        FROM value_matched_id_inconsistency val_match, matched_id_max_generation_table
        WHERE r.id = val_match.id AND val_match.value::uuid = matched_id_max_generation_table.matched_id;
    END;
$$;

...