Author: vholani Date: Tue Jun 2 11:05:04 2020 New Revision: 1878390 URL: http://svn.apache.org/viewvc?rev=1878390&view=rev Log: OAK-9096 : 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. Fixed the same.
Merge from http://svn.apache.org/r1878387 Modified: jackrabbit/oak/branches/1.22/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java jackrabbit/oak/branches/1.22/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStorePerformanceTest.java jackrabbit/oak/branches/1.22/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreTest.java Modified: jackrabbit/oak/branches/1.22/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.22/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java?rev=1878390&r1=1878389&r2=1878390&view=diff ============================================================================== --- jackrabbit/oak/branches/1.22/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java (original) +++ jackrabbit/oak/branches/1.22/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java Tue Jun 2 11:05:04 2020 @@ -2127,7 +2127,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/branches/1.22/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStorePerformanceTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.22/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStorePerformanceTest.java?rev=1878390&r1=1878389&r2=1878390&view=diff ============================================================================== --- jackrabbit/oak/branches/1.22/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStorePerformanceTest.java (original) +++ jackrabbit/oak/branches/1.22/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStorePerformanceTest.java Tue Jun 2 11:05:04 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/branches/1.22/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.22/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreTest.java?rev=1878390&r1=1878389&r2=1878390&view=diff ============================================================================== --- jackrabbit/oak/branches/1.22/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreTest.java (original) +++ jackrabbit/oak/branches/1.22/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreTest.java Tue Jun 2 11:05:04 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)); + } + } + } }
