@@ -1016,6 +1016,88 @@ TEST(CatalogTest, ANSI_SQLPrimaryKeys_TableWithoutPrimaryKeys) {
10161016 EXPECT_EQ (Disconnect (conn), SQL_SUCCESS );
10171017}
10181018
1019+ #ifndef BQ_DRIVER_INTEGRATION_TESTS
1020+ TEST (CatalogTest, SQLSpecialColumns_SQL_BEST_ROWID_TableWithPrimaryKeys) {
1021+ auto conn = std::make_shared<ODBCHandles>();
1022+ EXPECT_EQ (Connect (kDefaultConnectionString , conn), SQL_SUCCESS );
1023+ CreateTableDirect (conn, kTableWithPKSchema );
1024+
1025+ RowWiseResults special_columns = Catalog::GetSpecialColumns (
1026+ conn, SQL_BEST_ROWID , kDatasetName , kCatalogDatasetTableWithPK );
1027+
1028+ // existing driver returns an empty result set for SQL_BEST_ROWID.
1029+ EXPECT_TRUE (special_columns.empty ());
1030+
1031+ EXPECT_EQ (Disconnect (conn), SQL_SUCCESS );
1032+ }
1033+
1034+ TEST (CatalogTest, SQLSpecialColumns_SQL_BEST_ROWID_TableWithoutPrimaryKeys) {
1035+ auto conn = std::make_shared<ODBCHandles>();
1036+ EXPECT_EQ (Connect (kDefaultConnectionString , conn), SQL_SUCCESS );
1037+ CreateTableDirect (conn, kTableWithOutPKSchema );
1038+
1039+ RowWiseResults special_columns = Catalog::GetSpecialColumns (
1040+ conn, SQL_BEST_ROWID , kDatasetName , kCatalogDatasetTableWithoutPK );
1041+
1042+ EXPECT_TRUE (special_columns.empty ());
1043+ EXPECT_EQ (Disconnect (conn), SQL_SUCCESS );
1044+ }
1045+
1046+ TEST (CatalogTest, SQLSpecialColumns_SQL_ROWVER) {
1047+ auto conn = std::make_shared<ODBCHandles>();
1048+ EXPECT_EQ (Connect (kDefaultConnectionString , conn), SQL_SUCCESS );
1049+ CreateTableDirect (conn, kTableWithPKSchema );
1050+
1051+ RowWiseResults special_columns = Catalog::GetSpecialColumns (
1052+ conn, SQL_ROWVER , kDatasetName , kCatalogDatasetTableWithPK );
1053+
1054+ EXPECT_TRUE (special_columns.empty ());
1055+ EXPECT_EQ (Disconnect (conn), SQL_SUCCESS );
1056+ }
1057+
1058+ TEST (CatalogTest, ANSI_SQLSpecialColumns_SQL_BEST_ROWID_TableWithPrimaryKeys) {
1059+ auto conn = std::make_shared<ODBCHandles>();
1060+ EXPECT_EQ (Connect (kDefaultConnectionString , conn, true ), SQL_SUCCESS );
1061+ CreateTableDirect (conn, kTableWithPKSchema , true );
1062+
1063+ RowWiseResults special_columns = Catalog::GetSpecialColumns (
1064+ conn, SQL_BEST_ROWID , kDatasetName , kCatalogDatasetTableWithPK ,
1065+ SQL_SCOPE_SESSION , SQL_NO_NULLS , true );
1066+
1067+ // existing driver returns an empty result set for SQL_BEST_ROWID.
1068+ EXPECT_TRUE (special_columns.empty ());
1069+
1070+ EXPECT_EQ (Disconnect (conn), SQL_SUCCESS );
1071+ }
1072+
1073+ TEST (CatalogTest,
1074+ ANSI_SQLSpecialColumns_SQL_BEST_ROWID_TableWithoutPrimaryKeys) {
1075+ auto conn = std::make_shared<ODBCHandles>();
1076+ EXPECT_EQ (Connect (kDefaultConnectionString , conn, true ), SQL_SUCCESS );
1077+ CreateTableDirect (conn, kTableWithOutPKSchema , true );
1078+
1079+ RowWiseResults special_columns = Catalog::GetSpecialColumns (
1080+ conn, SQL_BEST_ROWID , kDatasetName , kCatalogDatasetTableWithoutPK ,
1081+ SQL_SCOPE_SESSION , SQL_NO_NULLS , true );
1082+
1083+ EXPECT_TRUE (special_columns.empty ());
1084+ EXPECT_EQ (Disconnect (conn), SQL_SUCCESS );
1085+ }
1086+
1087+ TEST (CatalogTest, ANSI_SQLSpecialColumns_SQL_ROWVER) {
1088+ auto conn = std::make_shared<ODBCHandles>();
1089+ EXPECT_EQ (Connect (kDefaultConnectionString , conn, true ), SQL_SUCCESS );
1090+ CreateTableDirect (conn, kTableWithPKSchema , true );
1091+
1092+ RowWiseResults special_columns = Catalog::GetSpecialColumns (
1093+ conn, SQL_ROWVER , kDatasetName , kCatalogDatasetTableWithPK ,
1094+ SQL_SCOPE_SESSION , SQL_NO_NULLS , true );
1095+
1096+ EXPECT_TRUE (special_columns.empty ());
1097+ EXPECT_EQ (Disconnect (conn), SQL_SUCCESS );
1098+ }
1099+ #endif // BQ_DRIVER_INTEGRATION_TESTS
1100+
10191101// //////////////////////////////////////////////////////////////
10201102// TODO(b/360994080): SQLForeignKeys is not implemented
10211103// correctly by existing Driver. Move all SQLForeignKeys function
0 commit comments