Author: ryota
Date: Fri Aug  2 22:27:04 2013
New Revision: 1509894

URL: http://svn.apache.org/r1509894
Log:
OOZIE-1484 Error in DB upgrade when error message exceeds 4K characters (ryota)

Modified:
    
oozie/trunk/core/src/main/java/org/apache/oozie/client/rest/JsonWorkflowAction.java
    oozie/trunk/release-log.txt
    oozie/trunk/tools/src/main/java/org/apache/oozie/tools/OozieDBCLI.java

Modified: 
oozie/trunk/core/src/main/java/org/apache/oozie/client/rest/JsonWorkflowAction.java
URL: 
http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/client/rest/JsonWorkflowAction.java?rev=1509894&r1=1509893&r2=1509894&view=diff
==============================================================================
--- 
oozie/trunk/core/src/main/java/org/apache/oozie/client/rest/JsonWorkflowAction.java
 (original)
+++ 
oozie/trunk/core/src/main/java/org/apache/oozie/client/rest/JsonWorkflowAction.java
 Fri Aug  2 22:27:04 2013
@@ -116,7 +116,7 @@ public class JsonWorkflowAction implemen
     @Column(name = "error_code")
     private String errorCode = null;
 
-    @Column(name = "error_message", length = 4000)
+    @Column(name = "error_message", length = 500)
     private String errorMessage = null;
 
     public JsonWorkflowAction() {

Modified: oozie/trunk/release-log.txt
URL: 
http://svn.apache.org/viewvc/oozie/trunk/release-log.txt?rev=1509894&r1=1509893&r2=1509894&view=diff
==============================================================================
--- oozie/trunk/release-log.txt (original)
+++ oozie/trunk/release-log.txt Fri Aug  2 22:27:04 2013
@@ -7,6 +7,7 @@ OOZIE-1440 Build fails in certain enviro
 
 -- Oozie 4.0.0 release
 
+OOZIE-1484 Error in DB upgrade when error message exceeds 4K characters (ryota)
 OOZIE-1482 4.0 client does not work with 3.x server for coord jobs (rohini)
 OOZIE-1479 Duplicate end_miss events introduced by OOZIE-1472 (rohini)
 OOZIE-1472 Confirm against database before generating start and duration miss 
events (rohini)

Modified: oozie/trunk/tools/src/main/java/org/apache/oozie/tools/OozieDBCLI.java
URL: 
http://svn.apache.org/viewvc/oozie/trunk/tools/src/main/java/org/apache/oozie/tools/OozieDBCLI.java?rev=1509894&r1=1509893&r2=1509894&view=diff
==============================================================================
--- oozie/trunk/tools/src/main/java/org/apache/oozie/tools/OozieDBCLI.java 
(original)
+++ oozie/trunk/tools/src/main/java/org/apache/oozie/tools/OozieDBCLI.java Fri 
Aug  2 22:27:04 2013
@@ -412,9 +412,9 @@ public class OozieDBCLI {
         ArrayList<String> ddlQueries = new ArrayList<String>();
         if (dbVendor.equals("derby")) {
             ddlQueries.add("ALTER TABLE WF_ACTIONS ALTER COLUMN execution_path 
SET DATA TYPE VARCHAR(1024)");
-            // change wf_action.error_message from clob to varchar(4000)
-            ddlQueries.add("ALTER TABLE WF_ACTIONS ADD COLUMN 
error_message_temp VARCHAR(4000)");
-            ddlQueries.add("UPDATE WF_ACTIONS SET 
error_message_temp=error_message");
+            // change wf_action.error_message from clob to varchar(500)
+            ddlQueries.add("ALTER TABLE WF_ACTIONS ADD COLUMN 
error_message_temp VARCHAR(500)");
+            ddlQueries.add("UPDATE WF_ACTIONS SET error_message_temp = 
SUBSTR(error_message,1,500)");
             ddlQueries.add("ALTER TABLE WF_ACTIONS DROP COLUMN error_message");
             ddlQueries.add("RENAME COLUMN WF_ACTIONS.error_message_temp TO 
error_message");
             // change coord_jobs.frequency from int to varchar(255)
@@ -433,9 +433,9 @@ public class OozieDBCLI {
         else
         if (dbVendor.equals("oracle")) {
             ddlQueries.add("ALTER TABLE WF_ACTIONS MODIFY (execution_path 
VARCHAR2(1024))");
-            // change wf_action.error_message from clob to varchar2(4000)
-            ddlQueries.add("ALTER TABLE WF_ACTIONS ADD (error_message_temp 
VARCHAR2(4000))");
-            ddlQueries.add("UPDATE WF_ACTIONS SET error_message_temp = 
error_message");
+            // change wf_action.error_message from clob to varchar2(500)
+            ddlQueries.add("ALTER TABLE WF_ACTIONS ADD (error_message_temp 
VARCHAR2(500))");
+            ddlQueries.add("UPDATE WF_ACTIONS SET error_message_temp = 
dbms_lob.substr(error_message,500,1)");
             ddlQueries.add("ALTER TABLE WF_ACTIONS DROP COLUMN error_message");
             ddlQueries.add("ALTER TABLE WF_ACTIONS RENAME COLUMN 
error_message_temp TO error_message");
             // change coord_jobs.frequency from int to varchar(255)
@@ -447,13 +447,19 @@ public class OozieDBCLI {
         else
         if (dbVendor.equals("mysql")) {
             ddlQueries.add("ALTER TABLE WF_ACTIONS MODIFY execution_path 
VARCHAR(1024)");
-            ddlQueries.add("ALTER TABLE WF_ACTIONS MODIFY error_message 
VARCHAR(4000)");
+            ddlQueries.add("ALTER TABLE WF_ACTIONS ADD COLUMN 
error_message_temp VARCHAR(500)");
+            ddlQueries.add("UPDATE WF_ACTIONS SET error_message_temp = 
SUBSTR(error_message,1,500)");
+            ddlQueries.add("ALTER TABLE WF_ACTIONS DROP COLUMN error_message");
+            ddlQueries.add("ALTER TABLE WF_ACTIONS CHANGE error_message_temp 
error_message VARCHAR(500)");
             ddlQueries.add("ALTER TABLE COORD_JOBS MODIFY frequency 
VARCHAR(255)");
         }
         else
         if (dbVendor.equals("postgresql")) {
             ddlQueries.add("ALTER TABLE WF_ACTIONS ALTER COLUMN execution_path 
TYPE VARCHAR(1024)");
-            ddlQueries.add("ALTER TABLE WF_ACTIONS ALTER COLUMN error_message 
TYPE VARCHAR(4000)");
+            ddlQueries.add("ALTER TABLE WF_ACTIONS ADD COLUMN 
error_message_temp VARCHAR(500)");
+            ddlQueries.add("UPDATE WF_ACTIONS SET error_message_temp = 
SUBSTR(error_message,1,500)");
+            ddlQueries.add("ALTER TABLE WF_ACTIONS DROP COLUMN error_message");
+            ddlQueries.add("ALTER TABLE WF_ACTIONS RENAME error_message_temp 
TO error_message");
             ddlQueries.add("ALTER TABLE COORD_JOBS ALTER COLUMN frequency TYPE 
VARCHAR(255)");
         }
         Connection conn = (run) ? createConnection() : null;


Reply via email to