From 5e16ffa0b4b22b7448a929f858b0e2d45d71583b Mon Sep 17 00:00:00 2001
From: Tomas Cohen Arazi <tomascohen@theke.io>
Date: Sat, 31 Oct 2015 11:57:42 -0300
Subject: [PATCH] Bug 15095: marc_modificacation_template_actions DB not
 consistent between fresh and updated DB

A review of the 3.20.00 + upgrade DB, compared to a fresh master install
highlighted an inconsistency on that table. This is mysqldbcompare's
output for it:

-   `action` enum('delete_field','update_field','move_field','copy_field','copy_and_replace_field') COLLATE utf8_unicode_ci DEFAULT NULL,
?                                                                        -------------------------                          ^^^^^^
+   `action` enum('delete_field','update_field','move_field','copy_field') COLLATE utf8_unicode_ci NOT NULL,

So one ENUM value is missing on fresh installs, and an upgraded one
yields a DEFAULT NULL configuration for the 'action' column.

To test:
1) have a v3.20.00 DB:
  > CREATE DATABASE koha_master_upgraded;
  $ git checkout v3.20.00
  $ mysql koha_master_upgraded < installer/data/mysql/kohastructure.sql
2) upgrade it to latest master by running:
  $ git checkout origin/master
  $ perl installer/data/mysql/updatedatabase.pl
3) Create a new DB
  > CREATE DATABASE koha_master_fresh;
  $ mysql koha_master_fresh < installer/data/mysql/kohastructure.sql
4) Run mysqldbcompare (you need mysql-utilities installed for that)
  $ mysqldbcompare --difftype=differ --server1=root@localhost \
                   --skip-data-check --skip-table-options \
                   --run-all-tests  koha_master_upgraded:koha_master_fresh
=> FAIL: You will notice the marc_modification_template_actions discrepancy
- Repeat from 1), but apply this patch on 2) before the upgrade.
=> SUCCESS: The DB's discrepancies are now irrelevant [1]
- Sign off :-D

[1] Only KEY definition order is 'wrong', but it is not relevant.

Signed-off-by: Frederic Demians <f.demians@tamil.fr>
---
 installer/data/mysql/kohastructure.sql | 2 +-
 installer/data/mysql/updatedatabase.pl | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql
index 12b7924..420c552 100644
--- a/installer/data/mysql/kohastructure.sql
+++ b/installer/data/mysql/kohastructure.sql
@@ -3450,7 +3450,7 @@ CREATE TABLE IF NOT EXISTS marc_modification_template_actions (
   mmta_id int(11) NOT NULL AUTO_INCREMENT,
   template_id int(11) NOT NULL,
   ordering int(3) NOT NULL,
-  action enum('delete_field','update_field','move_field','copy_field') NOT NULL,
+  action ENUM('delete_field','update_field','move_field','copy_field','copy_and_replace_field') NOT NULL,
   field_number smallint(6) NOT NULL DEFAULT '0',
   from_field varchar(3) NOT NULL,
   from_subfield varchar(1) DEFAULT NULL,
diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl
index f889532..bbee65a 100755
--- a/installer/data/mysql/updatedatabase.pl
+++ b/installer/data/mysql/updatedatabase.pl
@@ -10837,6 +10837,7 @@ if ( CheckVersion($DBversion) ) {
         ALTER TABLE marc_modification_template_actions
         MODIFY COLUMN action
             ENUM('delete_field','update_field','move_field','copy_field','copy_and_replace_field')
+            NOT NULL
     });
     print "Upgrade to $DBversion done (Bug 14098: Regression in Marc Modification Templates)\n";
     SetVersion($DBversion);
-- 
2.6.2