[Rt-commit] rt branch, 4.2/consistent-time-taken, updated. rt-4.1.6-348-g02f17f9
Ruslan Zakirov
ruz at bestpractical.com
Tue Apr 2 16:10:31 EDT 2013
The branch, 4.2/consistent-time-taken has been updated
via 02f17f9d98c9389e327a45d574204569ee058835 (commit)
from d2cb8b88dfdc95be569391876a55e5906c52447f (commit)
Summary of changes:
etc/upgrade/4.1.9/schema.Oracle | 5 ++++-
etc/upgrade/4.1.9/schema.Pg | 6 +++++-
2 files changed, 9 insertions(+), 2 deletions(-)
- Log -----------------------------------------------------------------
commit 02f17f9d98c9389e327a45d574204569ee058835
Author: Ruslan Zakirov <ruz at bestpractical.com>
Date: Tue Apr 2 21:04:43 2013 +0400
handle strings during upgrade of (Set,TimeWorked) txns
Pg and Oracle will stop update query if string can not
be converted to integer.
NewValue for (Set, TimeWorked) txns may contain string
if this DB was used with mysql and users entered strings
like "two days" as TimeWorked value. mysql just
converts string to 0 that end up in TimeWorked of a ticket,
but string as is ends up in transactions table.
For Pg/Oracle operation is just rejected and SetTimeWorked
fails.
Let's adjust upgrade SQL just in case RT was migrated from
mysql to Oracle/Pg.
diff --git a/etc/upgrade/4.1.9/schema.Oracle b/etc/upgrade/4.1.9/schema.Oracle
index 8d6680d..219eefa 100644
--- a/etc/upgrade/4.1.9/schema.Oracle
+++ b/etc/upgrade/4.1.9/schema.Oracle
@@ -1,2 +1,5 @@
-UPDATE Transactions SET TimeTaken = NewValue - OldValue
+UPDATE Transactions
+SET TimeTaken
+ = COALESCE(TO_NUMBER(REGEXP_SUBSTR(NewValue, '^-?\d+$')), 0)
+ - TO_NUMBER(OldValue)
WHERE ObjectType = 'RT::Ticket' AND Type = 'Set' AND Field = 'TimeWorked';
\ No newline at end of file
diff --git a/etc/upgrade/4.1.9/schema.Pg b/etc/upgrade/4.1.9/schema.Pg
index bef3e25..b6a8e1f 100644
--- a/etc/upgrade/4.1.9/schema.Pg
+++ b/etc/upgrade/4.1.9/schema.Pg
@@ -1,2 +1,6 @@
-UPDATE Transactions SET TimeTaken = NewValue::integer - OldValue::integer
+UPDATE Transactions
+SET TimeTaken = (
+ (CASE WHEN NewValue~E'^-?\\d+$' THEN NewValue::integer ELSE 0 END)
+ - OldValue::integer
+)
WHERE ObjectType = 'RT::Ticket' AND Type = 'Set' AND Field = 'TimeWorked';
\ No newline at end of file
-----------------------------------------------------------------------
More information about the Rt-commit
mailing list