Author: vholani
Date: Tue Jun  2 10:04:47 2020
New Revision: 1878387

URL: http://svn.apache.org/viewvc?rev=1878387&view=rev
Log:
Squashed commit of the following:

commit 5c67d9af27e07f92ee410b450b4839c06965a7a9
Author: vholani <[email protected]>
Date:   Tue Jun 2 14:06:54 2020 +0530

    Correcting indendation

commit 5cf0c53662feac6fcd1d41265b9bc4593cba8ddc
Author: Vinod Holani <[email protected]>
Date:   Tue Jun 2 13:55:34 2020 +0530

    Adding regular test case for appending string truncation error in DB

commit 017f068b18255832957be6db6952c9638ac9496e
Author: Vinod Holani <[email protected]>
Date:   Mon Jun 1 12:28:12 2020 +0530

    Getting {String or binary data would be truncated... } error as it is not 
handled cause error code for the same is updated recently in MSSQL

Modified:
    
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
    
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStorePerformanceTest.java
    
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreTest.java

Modified: 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java?rev=1878387&r1=1878386&r2=1878387&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
 Tue Jun  2 10:04:47 2020
@@ -2128,7 +2128,8 @@ public class RDBDocumentStore implements
 
     private static void continueIfStringOverflow(SQLException ex) throws 
SQLException {
         String state = ex.getSQLState();
-        if ("22001".equals(state) /* everybody */|| ("72000".equals(state) && 
1489 == ex.getErrorCode()) /* Oracle */) {
+        if ("22001".equals(state) /* everybody */|| ("72000".equals(state) && 
1489 == ex.getErrorCode()) /* Oracle */
+                       || ("S0001".equals(state) && 2628 == ex.getErrorCode()) 
/* MSSQL update*/) {
             // ok
         } else {
             throw (ex);

Modified: 
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStorePerformanceTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStorePerformanceTest.java?rev=1878387&r1=1878386&r2=1878387&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStorePerformanceTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStorePerformanceTest.java
 Tue Jun  2 10:04:47 2020
@@ -192,7 +192,8 @@ public class RDBDocumentStorePerformance
                         // ex.printStackTrace();
                         String state = ex.getSQLState();
                         if ("22001".equals(state)
-                                /* everybody */ || ("72000".equals(state) && 
1489 == ex.getErrorCode()) /* Oracle */) {
+                                /* everybody */ || ("72000".equals(state) && 
1489 == ex.getErrorCode()) /* Oracle */
+                                || ("S0001".equals(state) && 2628 == 
ex.getErrorCode()) /* MSSQL update*/) {
                             // overflow
                             stmt = close(stmt);
                             connection.rollback();
@@ -239,6 +240,7 @@ public class RDBDocumentStorePerformance
                 }
             } catch (SQLException ex) {
                 LOG.error(ex.getMessage() + " " + ex.getSQLState() + " " + 
ex.getErrorCode(), ex);
+                throw(ex);
             } finally {
                 connection = close(connection);
             }

Modified: 
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreTest.java?rev=1878387&r1=1878386&r2=1878387&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreTest.java
 Tue Jun  2 10:04:47 2020
@@ -232,4 +232,23 @@ public class RDBDocumentStoreTest extend
             assertEquals(NUM_DOCS, ids.size());
         }
     }
+
+    @Test
+    public void testAppendStringColumnLimit() {
+        if (ds instanceof RDBDocumentStore) {
+            String id = this.getClass().getName() + 
".testAppendStringColumnLimit";
+            UpdateOp up = new UpdateOp(id, true);
+            assertTrue(ds.create(Collection.NODES, 
Collections.singletonList(up)));
+            removeMe.add(id);
+            int count = 1;
+            long duration = 1000;
+            long end = System.currentTimeMillis() + duration;
+            while (System.currentTimeMillis() < end) {
+                UpdateOp op = new UpdateOp(id, false);
+                String value = generateString(512, true);
+                op.set("foo-" + count++, value);
+                assertNotNull(ds.findAndUpdate(NODES, op));
+            }
+        }
+    }
 }


Reply via email to