From c231379f2007172b7157f0a25afb2266bccf4dd6 Mon Sep 17 00:00:00 2001 From: v-afrafi Date: Thu, 27 Jul 2017 10:31:52 -0700 Subject: [PATCH 1/2] fix sending null to TVP --- src/main/java/com/microsoft/sqlserver/jdbc/IOBuffer.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/IOBuffer.java b/src/main/java/com/microsoft/sqlserver/jdbc/IOBuffer.java index 75e97866ee..b8becdeeca 100644 --- a/src/main/java/com/microsoft/sqlserver/jdbc/IOBuffer.java +++ b/src/main/java/com/microsoft/sqlserver/jdbc/IOBuffer.java @@ -4877,10 +4877,10 @@ private void writeInternalTVPRowValues(JDBCType jdbcType, dataLength = isNull ? 0 : currentColumnStringValue.length() * 2; if (!isShortValue) { // check null - if (isNull) + if (isNull) // Null header for v*max types is 0xFFFFFFFFFFFFFFFF. writeLong(0xFFFFFFFFFFFFFFFFL); - if (isSqlVariant) { + else if (isSqlVariant) { // for now we send as bigger type, but is sendStringParameterAsUnicoe is set to false we can't send nvarchar // since we are writing as nvarchar we need to write as tdstype.bigvarchar value because if we // want to supprot varchar(8000) it becomes as nvarchar, 8000*2 therefore we should send as longvarchar, From d4284129420e876346d21f451b94406e5a09dc11 Mon Sep 17 00:00:00 2001 From: v-afrafi Date: Thu, 27 Jul 2017 10:38:02 -0700 Subject: [PATCH 2/2] added { to follow coding convetion --- src/main/java/com/microsoft/sqlserver/jdbc/IOBuffer.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/IOBuffer.java b/src/main/java/com/microsoft/sqlserver/jdbc/IOBuffer.java index b8becdeeca..01ad482566 100644 --- a/src/main/java/com/microsoft/sqlserver/jdbc/IOBuffer.java +++ b/src/main/java/com/microsoft/sqlserver/jdbc/IOBuffer.java @@ -4877,9 +4877,10 @@ private void writeInternalTVPRowValues(JDBCType jdbcType, dataLength = isNull ? 0 : currentColumnStringValue.length() * 2; if (!isShortValue) { // check null - if (isNull) + if (isNull) { // Null header for v*max types is 0xFFFFFFFFFFFFFFFF. writeLong(0xFFFFFFFFFFFFFFFFL); + } else if (isSqlVariant) { // for now we send as bigger type, but is sendStringParameterAsUnicoe is set to false we can't send nvarchar // since we are writing as nvarchar we need to write as tdstype.bigvarchar value because if we