The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
-- Migratie EekBoek database van versie 1.0.9 naar 1.0.10 (EB 1.01.xx).

BEGIN WORK;

-- Table Dagboeken
ALTER TABLE ONLY Dagboeken ADD COLUMN dbk_dcsplit BOOLEAN;
ALTER TABLE ONLY Dagboeken ALTER COLUMN dbk_dcsplit SET DEFAULT false;
UPDATE Dagboeken SET dbk_dcsplit = 'false';

-- Table Journal
ALTER TABLE ONLY Journal ADD COLUMN jnl_damount int8;

-- Table Boekstukregels
ALTER TABLE ONLY Boekstukregels DROP COLUMN bsr_id;

-- Table Boekstukken

-- Operatie: wijzig type van bsk_id van serial naar int.
-- Omdat bsk_id vanuit diverse andere tabellen wordt gerefereerd als
-- foreign key moeten deze constraints eerst worden vervijderd, en
-- later weer aangemaakt.

ALTER TABLE ONLY Journal
    DROP CONSTRAINT "journal_jnl_bsk_id_fkey";
ALTER TABLE ONLY Boekstukregels
    DROP CONSTRAINT "boekstukregels_bsr_paid_fkey";
ALTER TABLE ONLY Boekstukregels
    DROP CONSTRAINT "boekstukregels_bsr_bsk_id_fkey";

-- De eigenlijke wijziging.
ALTER TABLE ONLY Boekstukken ADD COLUMN temp int8;
UPDATE Boekstukken SET temp = bsk_id;
ALTER TABLE ONLY Boekstukken DROP COLUMN bsk_id;
ALTER TABLE ONLY Boekstukken RENAME COLUMN temp TO bsk_id;
ALTER TABLE ONLY Boekstukken
    ADD CONSTRAINT "boekstukken_pkey"
    PRIMARY KEY ( bsk_id );

-- Expliciete sequence.
CREATE SEQUENCE boekstukken_bsk_id_seq;
SELECT setval('boekstukken_bsk_id_seq', max(bsk_id)) FROM Boekstukken;

-- Restore de FK constraints.
ALTER TABLE ONLY Journal
    ADD CONSTRAINT "journal_jnl_bsk_id_fkey"
    FOREIGN KEY ( jnl_bsk_id ) REFERENCES Boekstukken ( bsk_id );
ALTER TABLE ONLY Boekstukregels
    ADD CONSTRAINT "boekstukregels_bsr_paid_fkey"
    FOREIGN KEY ( bsr_paid ) REFERENCES Boekstukken ( bsk_id );
ALTER TABLE ONLY Boekstukregels
    ADD CONSTRAINT "boekstukregels_bsr_bsk_id_fkey"
    FOREIGN KEY ( bsr_bsk_id ) REFERENCES Boekstukken ( bsk_id );

-- Bump version.

UPDATE Constants
  SET value = 10
  WHERE name = 'SCM_REVISION';
UPDATE Metadata
  SET adm_scm_revision =
	(SELECT int4(value) FROM Constants WHERE name = 'SCM_REVISION');

COMMIT WORK;