# HG changeset patch
# User Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
# Date 1643290687 -3600
# Node ID ee90918eab1117e2e3463d18d77c315a09037ef2
# Parent  3136c91b88e68983e46bd115be017b885911b9c5
Add tests for getBestRowIdentifier() on a table which does not have a primary key but two unique constraints of which one is defined on a column which allows NULL.

diff --git a/tests/JDBC_API_Tester.java b/tests/JDBC_API_Tester.java
--- a/tests/JDBC_API_Tester.java
+++ b/tests/JDBC_API_Tester.java
@@ -679,6 +679,16 @@ final public class JDBC_API_Tester {
 	private void Test_Dobjects() {
 		sb.setLength(0);	// clear the output log buffer
 
+		Statement stmt = null;
+		try {
+			stmt = con.createStatement();
+			int response = stmt.executeUpdate("CREATE TABLE nopk_twoucs (id INT NOT NULL UNIQUE, name VARCHAR(99) UNIQUE)");
+			if (response != Statement.SUCCESS_NO_INFO)
+				sb.append("Creating table nopk_twoucs failed to return -2!! It returned: " + response + "\n");
+		} catch (SQLException e) {
+			sb.append("failed to create test table nopk_twoucs: ").append(e.getMessage());
+		}
+
 		try {
 			DatabaseMetaData dbmd = con.getMetaData();
 
@@ -742,6 +752,19 @@ final public class JDBC_API_Tester {
 			"SCOPE	COLUMN_NAME	DATA_TYPE	TYPE_NAME	COLUMN_SIZE	BUFFER_LENGTH	DECIMAL_DIGITS	PSEUDO_COLUMN\n" +
 			"2	language_id	5	smallint	16	0	0	1\n");
 
+			compareResultSet(dbmd.getBestRowIdentifier(null, "sys", "nopk_twoucs", DatabaseMetaData.bestRowTransaction, true),
+						"getBestRowIdentifier(null, sys, nopk_twoucs, DatabaseMetaData.bestRowTransaction, true)",
+			"Resultset with 8 columns\n" +
+			"SCOPE	COLUMN_NAME	DATA_TYPE	TYPE_NAME	COLUMN_SIZE	BUFFER_LENGTH	DECIMAL_DIGITS	PSEUDO_COLUMN\n" +
+			"2	id	4	int	32	0	0	1\n" +
+			"2	name	12	varchar	99	0	0	1\n");
+
+			compareResultSet(dbmd.getBestRowIdentifier(null, "sys", "nopk_twoucs", DatabaseMetaData.bestRowTransaction, false),
+						"getBestRowIdentifier(null, sys, nopk_twoucs, DatabaseMetaData.bestRowTransaction, false)",
+			"Resultset with 8 columns\n" +
+			"SCOPE	COLUMN_NAME	DATA_TYPE	TYPE_NAME	COLUMN_SIZE	BUFFER_LENGTH	DECIMAL_DIGITS	PSEUDO_COLUMN\n" +
+			"2	id	4	int	32	0	0	1\n");
+
 			compareResultSet(dbmd.getTablePrivileges(null, "sys", "table\\_types"), "getTablePrivileges(null, sys, table\\_types)",
 			"Resultset with 7 columns\n" +
 			"TABLE_CAT	TABLE_SCHEM	TABLE_NAME	GRANTOR	GRANTEE	PRIVILEGE	IS_GRANTABLE\n" +
@@ -770,6 +793,17 @@ final public class JDBC_API_Tester {
 			sb.append("FAILED: ").append(e.getMessage()).append("\n");
 		}
 
+		try {
+			int response = stmt.executeUpdate("DROP TABLE nopk_twoucs");
+			if (response != Statement.SUCCESS_NO_INFO)
+				sb.append("Dropping table nopk_twoucs failed to return -2!! It returned: " + response + "\n");
+		} catch (SQLException e) {
+			// this means we get what we expect
+			sb.append("failed to drop table: ").append(e.getMessage());
+		}
+
+		closeStmtResSet(stmt, null);
+
 		compareExpectedOutput("Test_Dobjects", "");
 	}