Skip to content

Commit

Permalink
XML test added, harness minor cleanup
Browse files Browse the repository at this point in the history
Signed-off-by: Alex Kasko <[email protected]>
  • Loading branch information
staticlibs committed Apr 21, 2024
1 parent 7ea9e04 commit e86d598
Show file tree
Hide file tree
Showing 9 changed files with 89 additions and 13 deletions.
54 changes: 54 additions & 0 deletions test/JDBC/expected/jtds-TestXML.out
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
CREATE TABLE XML_dt (a XML)
#prepst#!# INSERT INTO XML_dt values(@a) #!#XML|-|a|-|<NULL>
#prepst#!# INSERT INTO XML_dt values(@a) #!#XML|-|a|-|<contact><name>Contact Name 2</name><phone>YYY-YYY-YYYY</phone></contact>
#prepst#!#exec#!#XML|-|a|-|
SELECT * FROM XML_dt;
~~START~~
ntext
~~END~~

INSERT INTO XML_dt values('<contact><name>Contact Name 2</name><phone>YYY-YYY-YYYY</phone></contact>')
~~ROW COUNT: 1~~

INSERT INTO XML_dt values(NULL)
~~ROW COUNT: 1~~

#INSERT INTO XML_dt values('')
INSERT INTO XML_dt values(<contact><name>Contact Name 2</name><phone>YYY-YYY-YYYY</phone>)
~~ERROR (Code: 33557097)~~

~~ERROR (Message: syntax error near '<' at line 1 and character position 26)~~

SELECT * FROM XML_dt;
~~START~~
ntext
<contact><name>Contact Name 2</name><phone>YYY-YYY-YYYY</phone></contact>
<NULL>
~~END~~

DROP TABLE XML_dt;

CREATE TABLE [dbo].[notification_definition]([id] [bigint] NOT NULL,[name_tx] [nvarchar](200) NOT NULL,[description_tx] [nvarchar](max) NULL,[schedule_xml] [xml] NULL,[default_sender_tx] [nvarchar](200) NULL,[lock_id] [tinyint] NOT NULL,[settings_xml] [xml] NULL,[agency_id] [bigint] NULL)
INSERT [dbo].[NOTIFICATION_DEFINITION] VALUES (13, N'INTRA_MSG', N'Intra-System Message', NULL, N'[email protected]', 63,N'<Settings><SubjectTemplateTypeCd>NTF_SUB_INTRA_MSG</SubjectTemplateTypeCd><MessageTemplateTypeCd>NTF_MSG_INTRA_MSG<MessageTemplateTypeCd><VariableRefDomainName>PolicyDocumentTemplateVars<VariableRefDomainName><ProcessDefinitionId>11</ProcessDefinitionId></Settings>', 1)
~~ROW COUNT: 1~~

SELECT ID,NAME_TX,LOCK_ID,DESCRIPTION_TX,N'' as emptystring, SCHEDULE_XML,DEFAULT_SENDER_TX,SETTINGS_XML,AGENCY_ID FROM NOTIFICATION_DEFINITION
~~START~~
bigint#!#nvarchar#!#tinyint#!#nvarchar#!#nvarchar#!#ntext#!#nvarchar#!#ntext#!#bigint
13#!#INTRA_MSG#!#63#!#Intra-System Message#!##!#<NULL>#!#[email protected]#!#<Settings><SubjectTemplateTypeCd>NTF_SUB_INTRA_MSG</SubjectTemplateTypeCd><MessageTemplateTypeCd>NTF_MSG_INTRA_MSG<MessageTemplateTypeCd><VariableRefDomainName>PolicyDocumentTemplateVars<VariableRefDomainName><ProcessDefinitionId>11</ProcessDefinitionId></Settings>#!#1
~~END~~

DROP TABLE [dbo].[notification_definition];

CREATE TABLE [dbo].[notification_definition]([id] [bigint] NOT NULL,[name_tx] [nvarchar](200) NOT NULL,[description_tx] [nvarchar](max) NULL,[schedule_xml] [xml] NULL,[default_sender_tx] [nvarchar](200) NULL,[lock_id] [tinyint] NOT NULL,[settings_xml] [xml] NULL,[agency_id] [bigint] NULL)
prepst#!# INSERT [dbo].[NOTIFICATION_DEFINITION] VALUES(?, ?, ?, ?, ?, ?, ?, ?) #!#bigint|-|a|-|13#!#nvarchar|-|b|-|INTRA_MSG#!#nvarchar|-|c|-|Intra-System Message#!#XML|-|d|-|NULL#!#nvarchar|-|e|-|donotreply_OPMQA#!#tinyint|-|f|-|63#!#XML|-|g|-|<Settings><SubjectTemplateTypeCd>NTF_SUB_INTRA_MSG</SubjectTemplateTypeCd><MessageTemplateTypeCd>NTF_MSG_INTRA_MSG</MessageTemplateTypeCd><VariableRefDomainName>PolicyDocumentTemplateVars</VariableRefDomainName><ProcessDefinitionId>11</ProcessDefinitionId></Settings>#!#bigint|-|h|-|1
~~ROW COUNT: 1~~

#INSERT [dbo].[NOTIFICATION_DEFINITION] VALUES (13, N'INTRA_MSG', N'Intra-System Message', NULL, N'[email protected]', 63,N'<Settings><SubjectTemplateTypeCd>NTF_SUB_INTRA_MSG</SubjectTemplateTypeCd><MessageTemplateTypeCd>NTF_MSG_INTRA_MSG<MessageTemplateTypeCd><VariableRefDomainName>PolicyDocumentTemplateVars<VariableRefDomainName><ProcessDefinitionId>11</ProcessDefinitionId></Settings>', 1)
SELECT ID,NAME_TX,LOCK_ID,DESCRIPTION_TX,N'' as emptystring, SCHEDULE_XML,DEFAULT_SENDER_TX,SETTINGS_XML,AGENCY_ID FROM NOTIFICATION_DEFINITION
~~START~~
bigint#!#nvarchar#!#tinyint#!#nvarchar#!#nvarchar#!#ntext#!#nvarchar#!#ntext#!#bigint
13#!#INTRA_MSG#!#63#!#Intra-System Message#!##!#NULL#!#donotreply_OPMQA#!#<Settings><SubjectTemplateTypeCd>NTF_SUB_INTRA_MSG</SubjectTemplateTypeCd><MessageTemplateTypeCd>NTF_MSG_INTRA_MSG</MessageTemplateTypeCd><VariableRefDomainName>PolicyDocumentTemplateVars</VariableRefDomainName><ProcessDefinitionId>11</ProcessDefinitionId></Settings>#!#1
~~END~~

DROP TABLE [dbo].[notification_definition];
22 changes: 22 additions & 0 deletions test/JDBC/input/jtds/jtds-TestXML.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
CREATE TABLE XML_dt (a XML)
#prepst#!# INSERT INTO XML_dt values(@a) #!#XML|-|a|-|<NULL>
#prepst#!# INSERT INTO XML_dt values(@a) #!#XML|-|a|-|<contact><name>Contact Name 2</name><phone>YYY-YYY-YYYY</phone></contact>
#prepst#!#exec#!#XML|-|a|-|
SELECT * FROM XML_dt;
INSERT INTO XML_dt values('<contact><name>Contact Name 2</name><phone>YYY-YYY-YYYY</phone></contact>')
INSERT INTO XML_dt values(NULL)
#INSERT INTO XML_dt values('')
INSERT INTO XML_dt values(<contact><name>Contact Name 2</name><phone>YYY-YYY-YYYY</phone>)
SELECT * FROM XML_dt;
DROP TABLE XML_dt;

CREATE TABLE [dbo].[notification_definition]([id] [bigint] NOT NULL,[name_tx] [nvarchar](200) NOT NULL,[description_tx] [nvarchar](max) NULL,[schedule_xml] [xml] NULL,[default_sender_tx] [nvarchar](200) NULL,[lock_id] [tinyint] NOT NULL,[settings_xml] [xml] NULL,[agency_id] [bigint] NULL)
INSERT [dbo].[NOTIFICATION_DEFINITION] VALUES (13, N'INTRA_MSG', N'Intra-System Message', NULL, N'[email protected]', 63,N'<Settings><SubjectTemplateTypeCd>NTF_SUB_INTRA_MSG</SubjectTemplateTypeCd><MessageTemplateTypeCd>NTF_MSG_INTRA_MSG<MessageTemplateTypeCd><VariableRefDomainName>PolicyDocumentTemplateVars<VariableRefDomainName><ProcessDefinitionId>11</ProcessDefinitionId></Settings>', 1)
SELECT ID,NAME_TX,LOCK_ID,DESCRIPTION_TX,N'' as emptystring, SCHEDULE_XML,DEFAULT_SENDER_TX,SETTINGS_XML,AGENCY_ID FROM NOTIFICATION_DEFINITION
DROP TABLE [dbo].[notification_definition];

CREATE TABLE [dbo].[notification_definition]([id] [bigint] NOT NULL,[name_tx] [nvarchar](200) NOT NULL,[description_tx] [nvarchar](max) NULL,[schedule_xml] [xml] NULL,[default_sender_tx] [nvarchar](200) NULL,[lock_id] [tinyint] NOT NULL,[settings_xml] [xml] NULL,[agency_id] [bigint] NULL)
prepst#!# INSERT [dbo].[NOTIFICATION_DEFINITION] VALUES(@a, @b, @c, @d, @e, @f, @g, @h) #!#bigint|-|a|-|13#!#nvarchar|-|b|-|INTRA_MSG#!#nvarchar|-|c|-|Intra-System Message#!#XML|-|d|-|NULL#!#nvarchar|-|e|-|donotreply_OPMQA#!#tinyint|-|f|-|63#!#XML|-|g|-|<Settings><SubjectTemplateTypeCd>NTF_SUB_INTRA_MSG</SubjectTemplateTypeCd><MessageTemplateTypeCd>NTF_MSG_INTRA_MSG</MessageTemplateTypeCd><VariableRefDomainName>PolicyDocumentTemplateVars</VariableRefDomainName><ProcessDefinitionId>11</ProcessDefinitionId></Settings>#!#bigint|-|h|-|1
#INSERT [dbo].[NOTIFICATION_DEFINITION] VALUES (13, N'INTRA_MSG', N'Intra-System Message', NULL, N'[email protected]', 63,N'<Settings><SubjectTemplateTypeCd>NTF_SUB_INTRA_MSG</SubjectTemplateTypeCd><MessageTemplateTypeCd>NTF_MSG_INTRA_MSG<MessageTemplateTypeCd><VariableRefDomainName>PolicyDocumentTemplateVars<VariableRefDomainName><ProcessDefinitionId>11</ProcessDefinitionId></Settings>', 1)
SELECT ID,NAME_TX,LOCK_ID,DESCRIPTION_TX,N'' as emptystring, SCHEDULE_XML,DEFAULT_SENDER_TX,SETTINGS_XML,AGENCY_ID FROM NOTIFICATION_DEFINITION
DROP TABLE [dbo].[notification_definition];
1 change: 1 addition & 0 deletions test/JDBC/jdbc_schedule
Original file line number Diff line number Diff line change
Expand Up @@ -244,4 +244,5 @@ ignore#!#jtds-TestErrorsWithTryCatch
ignore#!#jtds-TestSQLQueries
ignore#!#jtds-TestStoredProcedures
ignore#!#jtds-TestTransactionSupportForProcedure
ignore#!#jtds-TestXML
ignore#!#jtds-varchar-max-length-check
6 changes: 3 additions & 3 deletions test/JDBC/jtds_jdbc_schedule
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,9 @@ TestImage-vu-cleanup
# TestSQLVariant-vu-prepare
# TestSQLVariant-vu-verify
# TestSQLVariant-vu-cleanup
# Failure: conn.createSQLXML() is not supported in jTDS
# TestXML
# jTDS reports XML column as ntext in ResultSetMetaData, this behaviour is the same
# with both MSSQL and Babelfish
jtds-TestXML
jtds-TestTableType-vu-prepare
jtds-TestTableType-vu-verify
jtds-TestTableType-vu-cleanup
Expand Down Expand Up @@ -91,7 +92,6 @@ jtds-TestStoredProcedures

# transactions
TestTransactionsSQLBatch
# See comment to TestSimpleErrors above
jtds-TestTransactionSupportForProcedure

# temporary
Expand Down
2 changes: 0 additions & 2 deletions test/JDBC/src/main/java/com/sqlsamples/CompareResults.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package com.sqlsamples;

import org.junit.jupiter.api.Assertions;
import org.opentest4j.AssertionFailedError;
import microsoft.sql.DateTimeOffset;
import org.apache.logging.log4j.Logger;

Expand Down
1 change: 0 additions & 1 deletion test/JDBC/src/main/java/com/sqlsamples/JDBCBulkCopy.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.sqlsamples;

import com.microsoft.sqlserver.jdbc.SQLServerBulkCopy;
import com.microsoft.sqlserver.jdbc.SQLServerException;
import org.apache.logging.log4j.Logger;

import java.io.BufferedWriter;
Expand Down
4 changes: 2 additions & 2 deletions test/JDBC/src/main/java/com/sqlsamples/JDBCCursor.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.sqlsamples;

import net.sourceforge.jtds.jdbc.JtdsConnection;
import org.apache.logging.log4j.Logger;

import java.io.BufferedWriter;
Expand Down Expand Up @@ -52,7 +51,8 @@ int[] setCursorOptions(int i, String[] result, Logger logger) {
}

void setHoldabilityOnConnection(Connection conn, int holdability) throws SQLException {
if (conn instanceof JtdsConnection && ResultSet.CLOSE_CURSORS_AT_COMMIT == holdability) {
if ("JtdsConnection".equals(conn.getClass().getSimpleName()) &&
ResultSet.CLOSE_CURSORS_AT_COMMIT == holdability) {
// CLOSE_CURSORS_AT_COMMIT option not supported i jTDS
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.ParseException;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneOffset;
import java.util.ArrayList;
Expand Down Expand Up @@ -156,9 +155,13 @@ static void set_bind_values(String[] result, PreparedStatement pstmt, BufferedWr
byte [] byteArray = bos.toByteArray();
pstmt.setBytes(j - 1, byteArray);
} else if (parameter[0].equalsIgnoreCase("xml")) {
SQLXML sqlxml = pstmt.getConnection().createSQLXML();
sqlxml.setString(parameter[2]);
pstmt.setSQLXML(j - 1, sqlxml);
if ("JtdsPreparedStatement".equals(pstmt.getClass().getSimpleName())) {
pstmt.setString(j - 1, parameter[2]);
} else {
SQLXML sqlxml = pstmt.getConnection().createSQLXML();
sqlxml.setString(parameter[2]);
pstmt.setSQLXML(j - 1, sqlxml);
}
} else if (parameter[0].equalsIgnoreCase("tvp")) {
FileInputStream fstream = new FileInputStream(Paths.get(Paths.get("").toAbsolutePath().toString(), parameter[2]).toString());
DataInputStream in = new DataInputStream(fstream);
Expand Down
1 change: 0 additions & 1 deletion test/JDBC/src/main/java/com/sqlsamples/JDBCStatement.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import java.io.BufferedWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.SQLWarning;
Expand Down

0 comments on commit e86d598

Please sign in to comment.