From 6268c33845a31c14a933c1e77e4c5745ce0a033d Mon Sep 17 00:00:00 2001
From: Peter Rotich <peter@osticket.com>
Date: Thu, 25 Sep 2014 19:07:24 +0000
Subject: [PATCH] bug: Make sure properties field exist

Add ticket status properties field before loading init data.
---
 .../streams/core/03ff59bf-b26f29a6.cleanup.sql  |  3 +++
 .../streams/core/03ff59bf-b26f29a6.patch.sql    | 17 +++++++++++++----
 .../streams/core/8f99b8bf-03ff59bf.patch.sql    |  1 +
 3 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/include/upgrader/streams/core/03ff59bf-b26f29a6.cleanup.sql b/include/upgrader/streams/core/03ff59bf-b26f29a6.cleanup.sql
index 66bc02c56..045605d3a 100644
--- a/include/upgrader/streams/core/03ff59bf-b26f29a6.cleanup.sql
+++ b/include/upgrader/streams/core/03ff59bf-b26f29a6.cleanup.sql
@@ -4,4 +4,7 @@ DELETE FROM  `%TABLE_PREFIX%config`
 DELETE FROM `%TABLE_PREFIX%ticket_status`
     WHERE `state` = 'resolved';
 
+ALTER TABLE  `%TABLE_PREFIX%ticket_status`
+    DROP  `notes`;
+
 OPTIMIZE TABLE `%TABLE_PREFIX%ticket_status`;
diff --git a/include/upgrader/streams/core/03ff59bf-b26f29a6.patch.sql b/include/upgrader/streams/core/03ff59bf-b26f29a6.patch.sql
index 9abb7bf11..d30596bf6 100644
--- a/include/upgrader/streams/core/03ff59bf-b26f29a6.patch.sql
+++ b/include/upgrader/streams/core/03ff59bf-b26f29a6.patch.sql
@@ -18,10 +18,19 @@ UPDATE  `%TABLE_PREFIX%ticket` t1
     SET t1.status_id = @statusId
     WHERE t2.state='resolved';
 
--- add properties field
-ALTER TABLE  `%TABLE_PREFIX%ticket_status`
-    ADD  `properties` TEXT NOT NULL AFTER  `sort`,
-    DROP  `notes`;
+-- add properties field IF it doesn't exist
+SET @s = (SELECT IF(
+    (SELECT COUNT(*)
+        FROM INFORMATION_SCHEMA.COLUMNS
+        WHERE table_name = '%TABLE_PREFIX%ticket_status'
+        AND table_schema = DATABASE()
+        AND column_name = 'properties'
+    ) > 0,
+    "SELECT 1",
+    "ALTER TABLE `%TABLE_PREFIX%ticket_status` ADD `properties` text NOT NULL AFTER `sort`"
+));
+PREPARE stmt FROM @s;
+EXECUTE stmt;
 
 UPDATE `%TABLE_PREFIX%ticket_status` s
     INNER JOIN `ost_config` c
diff --git a/include/upgrader/streams/core/8f99b8bf-03ff59bf.patch.sql b/include/upgrader/streams/core/8f99b8bf-03ff59bf.patch.sql
index 65a50036f..a6c94d159 100644
--- a/include/upgrader/streams/core/8f99b8bf-03ff59bf.patch.sql
+++ b/include/upgrader/streams/core/8f99b8bf-03ff59bf.patch.sql
@@ -51,6 +51,7 @@ CREATE TABLE IF NOT EXISTS `%TABLE_PREFIX%ticket_status` (
   `mode` int(11) unsigned NOT NULL DEFAULT '0',
   `flags` int(11) unsigned NOT NULL DEFAULT '0',
   `sort` int(11) unsigned NOT NULL DEFAULT '0',
+  `properties` text NOT NULL,
   `notes` text NOT NULL,
   `created` datetime NOT NULL,
   `updated` datetime NOT NULL,
-- 
GitLab