Author: reschke
Date: Thu Feb 12 17:29:25 2015
New Revision: 1659329
URL: http://svn.apache.org/r1659329
Log:
OAK-2395 - MS SQL Support - update append string testcase
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/BasicDocumentStoreTest.java
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/BasicDocumentStoreTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/BasicDocumentStoreTest.java?rev=1659329&r1=1659328&r2=1659329&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/BasicDocumentStoreTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/BasicDocumentStoreTest.java
Thu Feb 12 17:29:25 2015
@@ -737,8 +737,9 @@ public class BasicDocumentStoreTest exte
long cnt = 0;
byte bdata[] = new byte[65536];
String sdata = appendString;
- boolean needsConcat = super.dsname.contains("MySQL") ||
super.dsname.contains("Microsoft SQL Server");
- int dataInChars = (super.dsname.contains("Oracle") ? 4000 : 16384);
+ boolean needsConcat = super.dsname.contains("MySQL");
+ boolean needsSQLStringConcat = super.dsname.contains("MSSql");
+ int dataInChars = ((super.dsname.contains("Oracle") ||
(super.dsname.contains("MSSql"))) ? 4000 : 16384);
int dataInBytes = dataInChars / 3;
while (System.currentTimeMillis() < end) {
@@ -785,11 +786,21 @@ public class BasicDocumentStoreTest exte
stmt.close();
}
} else if (mode == 3) {
- PreparedStatement stmt =
connection.prepareStatement("update "
- + table
- + " set "
- + (needsConcat ? "DATA = CONCAT(DATA, ?)" :
"DATA = DATA || CAST(? as varchar(" + dataInChars
- + "))") + " where ID = ?");
+ String t = "update " + table + " ";
+
+ t += "set DATA = ";
+ if (needsConcat) {
+ t += "CONCAT(DATA, ?) ";
+ } else if (needsSQLStringConcat) {
+ t += "CASE WHEN LEN(DATA) <= " + (dataInChars -
appendString.length()) + " THEN (DATA + CAST(? AS nvarchar(" + 4000
+ + "))) ELSE (DATA + CAST(DATA AS
nvarchar(max))) END";
+ } else {
+ t += "DATA || CAST(? as varchar(" + dataInChars +
"))";
+ }
+
+ t += " where ID = ?";
+
+ PreparedStatement stmt =
connection.prepareStatement(t);
try {
stmt.setString(1, appendString);
stmt.setString(2, key);