<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
        xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.0.xsd
        http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">
    <changeSet id="1" author="pshrivastava">
        <sql dbms="mysql" endDelimiter=";;" splitStatements="true" stripComments="true">
            USE art_relations;;

            -- Created temp table to store manufacturer UPC and release_id
            CREATE TABLE `ROLLBACK-PHYS_916_manufacturer_upc`
            SELECT r.release_id, r.manufacturer_upc
            FROM releases r
            INNER JOIN artist_info a ON a.artist_id = r.artist_id
            INNER JOIN vendor v ON a.vendor_id = v.vendor_id
            LEFT JOIN distribution_format df ON df.distribution_format_id = r.distribution_format_id
            WHERE (v.owner = 'REDESSENT' OR v.vendor_id IN (22456,22457,21989))
            AND (r.manufacturer_upc = 'NULL' OR r.manufacturer_upc = 0) 
            AND df.context_type = 'physical';;

            -- Updated manufacturer UPC to for all releases stored in temp table
            UPDATE releases SET manufacturer_upc = NULL WHERE 
            release_id IN (SELECT release_id FROM `ROLLBACK-PHYS_916_manufacturer_upc`);;
        </sql>
        <rollback>
            USE art_relations;;

            -- Updated releases with old value of manufacturer upc stored in temp table
            UPDATE releases r 
            JOIN `ROLLBACK-PHYS_916_manufacturer_upc` rl ON rl.release_id =  r.release_id
            SET r.manufacturer_upc = rl.manufacturer_upc
            WHERE r.release_id IN (SELECT release_id FROM `ROLLBACK-PHYS_916_manufacturer_upc`);;

            DROP TABLE `ROLLBACK-PHYS_916_manufacturer_upc`;;
        </rollback>
    </changeSet>
</databaseChangeLog>
