diff --git a/cpp/src/arrow/flight/sql/odbc/tests/columns_test.cc b/cpp/src/arrow/flight/sql/odbc/tests/columns_test.cc index 04ca7ec9b96..c48339a1103 100644 --- a/cpp/src/arrow/flight/sql/odbc/tests/columns_test.cc +++ b/cpp/src/arrow/flight/sql/odbc/tests/columns_test.cc @@ -2781,12 +2781,22 @@ TYPED_TEST(FlightSQLODBCTestBase, SQLColumnsGetMetadataBySQLDescribeCol) { SQLSMALLINT nullable = 0; size_t columnIndex = 0; - SQLWCHAR* columnNames[] = {(SQLWCHAR*)L"TABLE_CAT", (SQLWCHAR*)L"TABLE_SCHEM", - (SQLWCHAR*)L"TABLE_NAME", (SQLWCHAR*)L"COLUMN_NAME", - (SQLWCHAR*)L"DATA_TYPE"}; - SQLSMALLINT columnDataTypes[] = {SQL_WVARCHAR, SQL_WVARCHAR, SQL_WVARCHAR, SQL_WVARCHAR, - SQL_SMALLINT}; - SQLULEN columnSizes[] = {1024, 1024, 1024, 1024, 2}; + SQLWCHAR* columnNames[] = { + (SQLWCHAR*)L"TABLE_CAT", (SQLWCHAR*)L"TABLE_SCHEM", + (SQLWCHAR*)L"TABLE_NAME", (SQLWCHAR*)L"COLUMN_NAME", + (SQLWCHAR*)L"DATA_TYPE", (SQLWCHAR*)L"TYPE_NAME", + (SQLWCHAR*)L"COLUMN_SIZE", (SQLWCHAR*)L"BUFFER_LENGTH", + (SQLWCHAR*)L"DECIMAL_DIGITS", (SQLWCHAR*)L"NUM_PREC_RADIX", + (SQLWCHAR*)L"NULLABLE", (SQLWCHAR*)L"REMARKS", + (SQLWCHAR*)L"COLUMN_DEF", (SQLWCHAR*)L"SQL_DATA_TYPE", + (SQLWCHAR*)L"SQL_DATETIME_SUB", (SQLWCHAR*)L"CHAR_OCTET_LENGTH", + (SQLWCHAR*)L"ORDINAL_POSITION", (SQLWCHAR*)L"IS_NULLABLE"}; + SQLSMALLINT columnDataTypes[] = { + SQL_WVARCHAR, SQL_WVARCHAR, SQL_WVARCHAR, SQL_WVARCHAR, SQL_SMALLINT, SQL_WVARCHAR, + SQL_INTEGER, SQL_INTEGER, SQL_SMALLINT, SQL_SMALLINT, SQL_SMALLINT, SQL_WVARCHAR, + SQL_WVARCHAR, SQL_SMALLINT, SQL_SMALLINT, SQL_INTEGER, SQL_INTEGER, SQL_WVARCHAR}; + SQLULEN columnSizes[] = {1024, 1024, 1024, 1024, 2, 1024, 4, 4, 2, + 2, 2, 1024, 1024, 2, 2, 4, 4, 1024}; SQLRETURN ret = SQLColumns(this->stmt, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0); @@ -2833,12 +2843,30 @@ TYPED_TEST(FlightSQLODBCTestBase, SQLColumnsGetMetadataBySQLDescribeColODBC2) { SQLSMALLINT nullable = 0; size_t columnIndex = 0; - SQLWCHAR* columnNames[] = {(SQLWCHAR*)L"TABLE_QUALIFIER", (SQLWCHAR*)L"TABLE_OWNER", - (SQLWCHAR*)L"TABLE_NAME", (SQLWCHAR*)L"COLUMN_NAME", - (SQLWCHAR*)L"DATA_TYPE"}; - SQLSMALLINT columnDataTypes[] = {SQL_WVARCHAR, SQL_WVARCHAR, SQL_WVARCHAR, SQL_WVARCHAR, - SQL_SMALLINT}; - SQLULEN columnSizes[] = {1024, 1024, 1024, 1024, 2}; + SQLWCHAR* columnNames[] = {(SQLWCHAR*)L"TABLE_QUALIFIER", + (SQLWCHAR*)L"TABLE_OWNER", + (SQLWCHAR*)L"TABLE_NAME", + (SQLWCHAR*)L"COLUMN_NAME", + (SQLWCHAR*)L"DATA_TYPE", + (SQLWCHAR*)L"TYPE_NAME", + (SQLWCHAR*)L"PRECISION", + (SQLWCHAR*)L"LENGTH", + (SQLWCHAR*)L"SCALE", + (SQLWCHAR*)L"RADIX", + (SQLWCHAR*)L"NULLABLE", + (SQLWCHAR*)L"REMARKS", + (SQLWCHAR*)L"COLUMN_DEF", + (SQLWCHAR*)L"SQL_DATA_TYPE", + (SQLWCHAR*)L"SQL_DATETIME_SUB", + (SQLWCHAR*)L"CHAR_OCTET_LENGTH", + (SQLWCHAR*)L"ORDINAL_POSITION", + (SQLWCHAR*)L"IS_NULLABLE"}; + SQLSMALLINT columnDataTypes[] = { + SQL_WVARCHAR, SQL_WVARCHAR, SQL_WVARCHAR, SQL_WVARCHAR, SQL_SMALLINT, SQL_WVARCHAR, + SQL_INTEGER, SQL_INTEGER, SQL_SMALLINT, SQL_SMALLINT, SQL_SMALLINT, SQL_WVARCHAR, + SQL_WVARCHAR, SQL_SMALLINT, SQL_SMALLINT, SQL_INTEGER, SQL_INTEGER, SQL_WVARCHAR}; + SQLULEN columnSizes[] = {1024, 1024, 1024, 1024, 2, 1024, 4, 4, 2, + 2, 2, 1024, 1024, 2, 2, 4, 4, 1024}; SQLRETURN ret = SQLColumns(this->stmt, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0); diff --git a/cpp/src/arrow/flight/sql/odbc/tests/type_info_test.cc b/cpp/src/arrow/flight/sql/odbc/tests/type_info_test.cc index e642575210b..45f90caac9c 100644 --- a/cpp/src/arrow/flight/sql/odbc/tests/type_info_test.cc +++ b/cpp/src/arrow/flight/sql/odbc/tests/type_info_test.cc @@ -26,13 +26,117 @@ #include "gtest/gtest.h" -// TODO: add tests with SQLDescribeCol to check metadata of SQLGetTypeInfo for ODBC 2 and -// ODBC 3. - namespace arrow::flight::sql::odbc { using std::optional; +void checkSQLDescribeCol(SQLHSTMT stmt, const SQLUSMALLINT columnIndex, + const std::wstring& expectedName, + const SQLSMALLINT& expectedDataType, + const SQLULEN& expectedColumnSize, + const SQLSMALLINT& expectedDecimalDigits, + const SQLSMALLINT& expectedNullable) { + SQLWCHAR columnName[1024]; + constexpr SQLINTEGER bufCharLen = sizeof(columnName) / ODBC::GetSqlWCharSize(); + SQLSMALLINT nameLength = 0; + SQLSMALLINT columnDataType = 0; + SQLULEN columnSize = 0; + SQLSMALLINT decimalDigits = 0; + SQLSMALLINT nullable = 0; + + SQLRETURN ret = SQLDescribeCol(stmt, columnIndex, columnName, bufCharLen, &nameLength, + &columnDataType, &columnSize, &decimalDigits, &nullable); + + EXPECT_EQ(ret, SQL_SUCCESS); + + EXPECT_GT(nameLength, 0); + + // returned nameLength is in bytes so convert to length in characters + size_t charCount = static_cast(nameLength) / ODBC::GetSqlWCharSize(); + std::wstring returned(columnName, columnName + charCount); + EXPECT_EQ(returned, expectedName); + EXPECT_EQ(columnDataType, expectedDataType); + EXPECT_EQ(columnSize, expectedColumnSize); + EXPECT_EQ(decimalDigits, expectedDecimalDigits); + EXPECT_EQ(nullable, expectedNullable); +} + +void checkSQLDescribeColODBC2(SQLHSTMT stmt) { + SQLWCHAR* columnNames[] = {(SQLWCHAR*)L"TYPE_NAME", + (SQLWCHAR*)L"DATA_TYPE", + (SQLWCHAR*)L"PRECISION", + (SQLWCHAR*)L"LITERAL_PREFIX", + (SQLWCHAR*)L"LITERAL_SUFFIX", + (SQLWCHAR*)L"CREATE_PARAMS", + (SQLWCHAR*)L"NULLABLE", + (SQLWCHAR*)L"CASE_SENSITIVE", + (SQLWCHAR*)L"SEARCHABLE", + (SQLWCHAR*)L"UNSIGNED_ATTRIBUTE", + (SQLWCHAR*)L"MONEY", + (SQLWCHAR*)L"AUTO_INCREMENT", + (SQLWCHAR*)L"LOCAL_TYPE_NAME", + (SQLWCHAR*)L"MINIMUM_SCALE", + (SQLWCHAR*)L"MAXIMUM_SCALE", + (SQLWCHAR*)L"SQL_DATA_TYPE", + (SQLWCHAR*)L"SQL_DATETIME_SUB", + (SQLWCHAR*)L"NUM_PREC_RADIX", + (SQLWCHAR*)L"INTERVAL_PRECISION"}; + SQLSMALLINT columnDataTypes[] = {SQL_WVARCHAR, SQL_SMALLINT, SQL_INTEGER, SQL_WVARCHAR, + SQL_WVARCHAR, SQL_WVARCHAR, SQL_SMALLINT, SQL_SMALLINT, + SQL_SMALLINT, SQL_SMALLINT, SQL_SMALLINT, SQL_SMALLINT, + SQL_WVARCHAR, SQL_SMALLINT, SQL_SMALLINT, SQL_SMALLINT, + SQL_SMALLINT, SQL_INTEGER, SQL_SMALLINT}; + SQLULEN columnSizes[] = {1024, 2, 4, 1024, 1024, 1024, 2, 2, 2, 2, + 2, 2, 1024, 2, 2, 2, 2, 4, 2}; + SQLSMALLINT columnDecimalDigits[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + SQLSMALLINT columnNullable[] = {SQL_NO_NULLS, SQL_NO_NULLS, SQL_NULLABLE, SQL_NULLABLE, + SQL_NULLABLE, SQL_NULLABLE, SQL_NO_NULLS, SQL_NO_NULLS, + SQL_NO_NULLS, SQL_NULLABLE, SQL_NO_NULLS, SQL_NULLABLE, + SQL_NULLABLE, SQL_NULLABLE, SQL_NULLABLE, SQL_NO_NULLS, + SQL_NULLABLE, SQL_NULLABLE, SQL_NULLABLE}; + + for (size_t i = 0; i < sizeof(columnNames) / sizeof(*columnNames); ++i) { + SQLUSMALLINT columnIndex = i + 1; + checkSQLDescribeCol(stmt, columnIndex, columnNames[i], columnDataTypes[i], + columnSizes[i], columnDecimalDigits[i], columnNullable[i]); + } +} + +void checkSQLDescribeColODBC3(SQLHSTMT stmt) { + SQLWCHAR* columnNames[] = { + (SQLWCHAR*)L"TYPE_NAME", (SQLWCHAR*)L"DATA_TYPE", + (SQLWCHAR*)L"COLUMN_SIZE", (SQLWCHAR*)L"LITERAL_PREFIX", + (SQLWCHAR*)L"LITERAL_SUFFIX", (SQLWCHAR*)L"CREATE_PARAMS", + (SQLWCHAR*)L"NULLABLE", (SQLWCHAR*)L"CASE_SENSITIVE", + (SQLWCHAR*)L"SEARCHABLE", (SQLWCHAR*)L"UNSIGNED_ATTRIBUTE", + (SQLWCHAR*)L"FIXED_PREC_SCALE", (SQLWCHAR*)L"AUTO_UNIQUE_VALUE", + (SQLWCHAR*)L"LOCAL_TYPE_NAME", (SQLWCHAR*)L"MINIMUM_SCALE", + (SQLWCHAR*)L"MAXIMUM_SCALE", (SQLWCHAR*)L"SQL_DATA_TYPE", + (SQLWCHAR*)L"SQL_DATETIME_SUB", (SQLWCHAR*)L"NUM_PREC_RADIX", + (SQLWCHAR*)L"INTERVAL_PRECISION"}; + SQLSMALLINT columnDataTypes[] = {SQL_WVARCHAR, SQL_SMALLINT, SQL_INTEGER, SQL_WVARCHAR, + SQL_WVARCHAR, SQL_WVARCHAR, SQL_SMALLINT, SQL_SMALLINT, + SQL_SMALLINT, SQL_SMALLINT, SQL_SMALLINT, SQL_SMALLINT, + SQL_WVARCHAR, SQL_SMALLINT, SQL_SMALLINT, SQL_SMALLINT, + SQL_SMALLINT, SQL_INTEGER, SQL_SMALLINT}; + SQLULEN columnSizes[] = {1024, 2, 4, 1024, 1024, 1024, 2, 2, 2, 2, + 2, 2, 1024, 2, 2, 2, 2, 4, 2}; + SQLSMALLINT columnDecimalDigits[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + SQLSMALLINT columnNullable[] = {SQL_NO_NULLS, SQL_NO_NULLS, SQL_NULLABLE, SQL_NULLABLE, + SQL_NULLABLE, SQL_NULLABLE, SQL_NO_NULLS, SQL_NO_NULLS, + SQL_NO_NULLS, SQL_NULLABLE, SQL_NO_NULLS, SQL_NULLABLE, + SQL_NULLABLE, SQL_NULLABLE, SQL_NULLABLE, SQL_NO_NULLS, + SQL_NULLABLE, SQL_NULLABLE, SQL_NULLABLE}; + + for (size_t i = 0; i < sizeof(columnNames) / sizeof(*columnNames); ++i) { + SQLUSMALLINT columnIndex = i + 1; + checkSQLDescribeCol(stmt, columnIndex, columnNames[i], columnDataTypes[i], + columnSizes[i], columnDecimalDigits[i], columnNullable[i]); + } +} + void checkSQLGetTypeInfo( SQLHSTMT stmt, const std::wstring& expectedTypeName, const SQLSMALLINT& expectedDataType, const SQLINTEGER& expectedColumnSize, @@ -114,6 +218,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypes) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // Check tinyint data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -139,6 +245,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypes) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // Check bigint data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -164,6 +272,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypes) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // Check longvarbinary data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -189,6 +299,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypes) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // Check varbinary data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -214,6 +326,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypes) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // Check text data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -240,6 +354,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypes) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // Check longvarchar data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -265,6 +381,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypes) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // Check char data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -291,6 +409,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypes) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // Check integer data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -316,6 +436,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypes) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // Check smallint data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -341,6 +463,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypes) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // Check float data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -366,6 +490,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypes) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // Check double data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -391,6 +517,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypes) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // Check numeric data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -417,6 +545,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypes) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // Check varchar data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -443,6 +573,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypes) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // Check date data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -468,6 +600,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypes) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // Check time data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -493,6 +627,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypes) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // Check timestamp data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -518,6 +654,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypes) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + this->disconnect(); } @@ -552,6 +690,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypesVer2) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC2(this->stmt); + // Check tinyint data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -577,6 +717,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypesVer2) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC2(this->stmt); + // Check bigint data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -602,6 +744,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypesVer2) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC2(this->stmt); + // Check longvarbinary data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -627,6 +771,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypesVer2) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC2(this->stmt); + // Check varbinary data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -652,6 +798,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypesVer2) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC2(this->stmt); + // Check text data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -678,6 +826,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypesVer2) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC2(this->stmt); + // Check longvarchar data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -703,6 +853,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypesVer2) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC2(this->stmt); + // Check char data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -729,6 +881,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypesVer2) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC2(this->stmt); + // Check integer data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -754,6 +908,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypesVer2) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC2(this->stmt); + // Check smallint data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -779,6 +935,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypesVer2) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC2(this->stmt); + // Check float data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -804,6 +962,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypesVer2) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC2(this->stmt); + // Check double data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -829,6 +989,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypesVer2) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC2(this->stmt); + // Check numeric data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -855,6 +1017,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypesVer2) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC2(this->stmt); + // Check varchar data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -881,6 +1045,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypesVer2) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC2(this->stmt); + // Check date data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -906,6 +1072,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypesVer2) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC2(this->stmt); + // Check time data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -931,6 +1099,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypesVer2) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC2(this->stmt); + // Check timestamp data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -956,6 +1126,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoAllTypesVer2) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC2(this->stmt); + this->disconnect(); } @@ -990,6 +1162,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoBit) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // No more data ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_NO_DATA); @@ -1028,6 +1202,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoTinyInt) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // No more data ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_NO_DATA); @@ -1066,6 +1242,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoBigInt) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // No more data ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_NO_DATA); @@ -1104,6 +1282,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoLongVarbinary) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // No more data ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_NO_DATA); @@ -1181,6 +1361,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoLongVarchar) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // Check longvarchar data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -1206,6 +1388,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoLongVarchar) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // No more data ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_NO_DATA); @@ -1245,6 +1429,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoChar) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // No more data ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_NO_DATA); @@ -1283,6 +1469,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoInteger) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // No more data ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_NO_DATA); @@ -1321,6 +1509,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoSmallInt) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // No more data ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_NO_DATA); @@ -1359,6 +1549,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoFloat) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // No more data ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_NO_DATA); @@ -1397,6 +1589,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoDouble) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // Check numeric data type ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_SUCCESS); @@ -1423,6 +1617,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoDouble) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // No more data ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_NO_DATA); @@ -1462,6 +1658,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoVarchar) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // No more data ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_NO_DATA); @@ -1500,6 +1698,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoSQLTypeDate) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // No more data ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_NO_DATA); @@ -1539,6 +1739,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoSQLDate) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // No more data ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_NO_DATA); @@ -1577,6 +1779,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoDateVer2) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC2(this->stmt); + // No more data ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_NO_DATA); @@ -1629,6 +1833,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoSQLTypeTime) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // No more data ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_NO_DATA); @@ -1668,6 +1874,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoSQLTime) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // No more data ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_NO_DATA); @@ -1706,6 +1914,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoTimeVer2) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC2(this->stmt); + // No more data ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_NO_DATA); @@ -1758,6 +1968,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoSQLTypeTimestamp) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // No more data ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_NO_DATA); @@ -1797,6 +2009,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoSQLTimestamp) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC3(this->stmt); + // No more data ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_NO_DATA); @@ -1835,6 +2049,8 @@ TEST_F(FlightSQLODBCMockTestBase, TestSQLGetTypeInfoSQLTimestampVer2) { NULL, // expectedNumPrecRadix NULL); // expectedIntervalPrec + checkSQLDescribeColODBC2(this->stmt); + // No more data ret = SQLFetch(this->stmt); EXPECT_EQ(ret, SQL_NO_DATA);