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)); + } + } + } }
