GH-46575: [C++][FlightRPC] Add Diagnostic tests - #47764

Merged
jduo merged 1 commit into
apache:mainfrom
Bit-Quill:gh-46575-odbc-diagnostics-tests
Dec 8, 2025
Merged

GH-46575: [C++][FlightRPC] Add Diagnostic tests#47764
jduo merged 1 commit into
apache:mainfrom
Bit-Quill:gh-46575-odbc-diagnostics-tests

Conversation

@alinaliBQ

@alinaliBQalinaliBQ commented Oct 8, 2025

Copy link
Copy Markdown
Collaborator

Rationale for this change

Putting the tests for diagnostics in a separate PR from #47763, because non-diagnostic ODBC APIs are required to get diagnostics.

What changes are included in this PR?

  • Add tests for ODBC diagnostics

Are these changes tested?

PR depends on #47971 for tests to work.

Tested locally.

Are there any user-facing changes?

No

@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

@lidavidm@kou Please review this draft ODBC API PR. The implementation PR is at #47763.


namespace arrow::flight::sql::odbc {

TYPED_TEST(FlightSQLODBCTestBase, TestSQLGetDiagFieldWForConnectFailure) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same comment here, we can subclass the base fixture and create a specific fixture for this file.

// Allocate an environment handle
SQLRETURN ret = SQLAllocEnv(&env);

EXPECT_EQ(SQL_SUCCESS, ret);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The test will continue even if EXPECT_ fails. Usually these kinds of checks should be ASSERT.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be more concise to just ASSERT_EQ(SQL_SUCCESS, SQLAllocEnv(&env)) and so on.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yup, updated the code to use ASSERT_EQ

Comment on lines +137 to +139
// Test is disabled because driver manager on Windows does not pass through SQL_NTS
// This test case can be potentially used on macOS/Linux
GTEST_SKIP();

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the test name starts with DISABLED_, GTest will ignore the test automatically

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changed to use DISABLED_ and removed GTEST_SKIP

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting review Awaiting review labels Oct 9, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 19da64d to 4f4bbc0CompareOctober 21, 2025 21:55

@alinaliBQalinaliBQ left a comment

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In-progress of addressing comments. The team is still working on improving the subclass logic for separate test fixture (discussion is in #47788)

// Allocate an environment handle
SQLRETURN ret = SQLAllocEnv(&env);

EXPECT_EQ(SQL_SUCCESS, ret);

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yup, updated the code to use ASSERT_EQ

Comment on lines +137 to +139
// Test is disabled because driver manager on Windows does not pass through SQL_NTS
// This test case can be potentially used on macOS/Linux
GTEST_SKIP();

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changed to use DISABLED_ and removed GTEST_SKIP

@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 21, 2025
Comment on lines +31 to +32
public:
using List = std::list<T>;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
public:
using List = std::list<T>;

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done, removed using List

Comment on lines +39 to +43
template <typename T>
class ErrorsOdbcV2Test : public T {
public:
using List = std::list<T>;
};

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
template <typename T>
classErrorsOdbcV2Test : publicT {
public:
using List = std::list<T>;
};
template <typename T>
classErrorsOdbcV2Test : publicT {
};

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Comment on lines +133 to +134
// Free connection handle
EXPECT_EQ(SQL_SUCCESS, SQLFreeHandle(SQL_HANDLE_DBC, conn));

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe consider an RAII helper to free resources in tests

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added RAII helper for this (ErrorsHandleTest)

// API not implemented error from driver manager
EXPECT_EQ(std::wstring(L"IM001"), std::wstring(sql_state));

EXPECT_TRUE(!std::wstring(message).empty());

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

EXPECT_FALSE?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup good catch, fixed

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 22, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 4f4bbc0 to 99d8ec6CompareOctober 22, 2025 22:30
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 22, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 99d8ec6 to eddea34CompareOctober 22, 2025 22:34

@alinaliBQalinaliBQ left a comment

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed comments

Comment on lines +31 to +32
public:
using List = std::list<T>;

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done, removed using List

Comment on lines +39 to +43
template <typename T>
class ErrorsOdbcV2Test : public T {
public:
using List = std::list<T>;
};

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Comment on lines +133 to +134
// Free connection handle
EXPECT_EQ(SQL_SUCCESS, SQLFreeHandle(SQL_HANDLE_DBC, conn));

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added RAII helper for this (ErrorsHandleTest)

// API not implemented error from driver manager
EXPECT_EQ(std::wstring(L"IM001"), std::wstring(sql_state));

EXPECT_TRUE(!std::wstring(message).empty());

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup good catch, fixed

Comment on lines +100 to +102
static constexpr std::string_view authorization_header = "authorization";
static constexpr std::string_view bearer_prefix = "Bearer ";
static constexpr std::string_view test_token = "t0k3n";

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we keep to the naming scheme? kAuthorizationHeader etc.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, the change was added by accident. Fixed.
The RAII helper logic will also be in #47971, after #47971 is merged, I will rebase this PR.

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 27, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from eddea34 to 2768502CompareOctober 27, 2025 23:51
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 27, 2025
kou pushed a commit that referenced this pull request Oct 29, 2025
### Rationale for this change
ODBC needs to provide diagnostic information so users can debug the error
### What changes are included in this PR?
- Implementation of SQLGetDiagField and SQLGetDiagRec Tests are included in separate PR (see #47764)
### Are these changes tested?
Tests will be in a separate PR (see #47764). Other APIs depend on SQLGetDiagField and SQLGetDiagRec to get error reporting functionality, and tests for SQLGetDiagField and SQLGetDiagRec depend on other APIs for creating errors, as these diagnostic APIs alone do not initiate any errors. Changes tested locally
### Are there any user-facing changes?
No
* GitHub Issue: #46575
Authored-by: Alina (Xi) Li <alina.li@improving.com>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
@github-actionsgithub-actionsBot added awaiting merge Awaiting merge and removed awaiting change review Awaiting change review labels Oct 31, 2025
Comment threadcpp/src/arrow/flight/sql/odbc/tests/CMakeLists.txt Outdated
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 2768502 to d808e34CompareNovember 7, 2025 00:41
@justing-bq
justing-bqforce-pushed the gh-46575-odbc-diagnostics-tests branch 2 times, most recently from 3bdd474 to fdaf290CompareNovember 17, 2025 21:46
@alinaliBQ
alinaliBQ marked this pull request as ready for review November 21, 2025 00:23
@justing-bq
justing-bqforce-pushed the gh-46575-odbc-diagnostics-tests branch from fdaf290 to 34546b5CompareDecember 2, 2025 20:56
Requires SQLDriverConnect Implementation
Co-authored-by: rscales <robscales@icloud.com>
@justing-bq
justing-bqforce-pushed the gh-46575-odbc-diagnostics-tests branch from 34546b5 to 9a1ebf4CompareDecember 3, 2025 18:25
jduo
jduo approved these changes Dec 8, 2025
@jduo
jduo merged commit 6fed4f3 into apache:mainDec 8, 2025
45 checks passed
@kou

kou commented Dec 9, 2025

Copy link
Copy Markdown
Member

@jduo Could you use our merge script https://github.com/apache/arrow/tree/main/dev#how-to-merge-a-pull-request in this repository?

@jduo

jduo commented Dec 9, 2025

Copy link
Copy Markdown
Member

@jduo Could you use our merge script https://github.com/apache/arrow/tree/main/dev#how-to-merge-a-pull-request in this repository?

Sure @kou . Do you mean to re-do the last two merges using the scripts or use the merge script going forward?

Thanks

@kou

kou commented Dec 9, 2025

Copy link
Copy Markdown
Member

The latter. (We can't re-do merges in public repositories because it changes commit hashes...)

@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 3 benchmarking runs that have been run so far on merge-commit 6fed4f3.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details. It also includes information about 1 possible false positive for unstable benchmarks that are known to sometimes produce them.

Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
ODBC needs to provide diagnostic information so users can debug the error
### What changes are included in this PR?
- Implementation of SQLGetDiagField and SQLGetDiagRec Tests are included in separate PR (see apache#47764)
### Are these changes tested?
Tests will be in a separate PR (see apache#47764). Other APIs depend on SQLGetDiagField and SQLGetDiagRec to get error reporting functionality, and tests for SQLGetDiagField and SQLGetDiagRec depend on other APIs for creating errors, as these diagnostic APIs alone do not initiate any errors. Changes tested locally
### Are there any user-facing changes?
No
* GitHub Issue: apache#46575
Authored-by: Alina (Xi) Li <alina.li@improving.com>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
Putting the tests for diagnostics in a separate PR from
apache#47763, because non-diagnostic ODBC
APIs are required to get diagnostics.
### What changes are included in this PR?
- Add tests for ODBC diagnostics ### Are these changes tested?
PR depends on apache#47971 for tests to
work.
Tested locally. ### Are there any user-facing changes?
No
* GitHub Issue: apache#46575
Co-authored-by: rscales <robscales@icloud.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@alinaliBQ@kou@jduo@lidavidm@justing-bq
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

GH-46575: [C++][FlightRPC] Add Diagnostic tests - #47764

Merged
jduo merged 1 commit into
apache:mainfrom
Bit-Quill:gh-46575-odbc-diagnostics-tests
Dec 8, 2025
Merged

GH-46575: [C++][FlightRPC] Add Diagnostic tests#47764
jduo merged 1 commit into
apache:mainfrom
Bit-Quill:gh-46575-odbc-diagnostics-tests

Conversation

@alinaliBQ

@alinaliBQalinaliBQ commented Oct 8, 2025

Copy link
Copy Markdown
Collaborator

Rationale for this change

Putting the tests for diagnostics in a separate PR from #47763, because non-diagnostic ODBC APIs are required to get diagnostics.

What changes are included in this PR?

  • Add tests for ODBC diagnostics

Are these changes tested?

PR depends on #47971 for tests to work.

Tested locally.

Are there any user-facing changes?

No

@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

@lidavidm@kou Please review this draft ODBC API PR. The implementation PR is at #47763.


namespace arrow::flight::sql::odbc {

TYPED_TEST(FlightSQLODBCTestBase, TestSQLGetDiagFieldWForConnectFailure) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same comment here, we can subclass the base fixture and create a specific fixture for this file.

// Allocate an environment handle
SQLRETURN ret = SQLAllocEnv(&env);

EXPECT_EQ(SQL_SUCCESS, ret);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The test will continue even if EXPECT_ fails. Usually these kinds of checks should be ASSERT.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be more concise to just ASSERT_EQ(SQL_SUCCESS, SQLAllocEnv(&env)) and so on.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yup, updated the code to use ASSERT_EQ

Comment on lines +137 to +139
// Test is disabled because driver manager on Windows does not pass through SQL_NTS
// This test case can be potentially used on macOS/Linux
GTEST_SKIP();

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the test name starts with DISABLED_, GTest will ignore the test automatically

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changed to use DISABLED_ and removed GTEST_SKIP

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting review Awaiting review labels Oct 9, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 19da64d to 4f4bbc0CompareOctober 21, 2025 21:55

@alinaliBQalinaliBQ left a comment

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In-progress of addressing comments. The team is still working on improving the subclass logic for separate test fixture (discussion is in #47788)

// Allocate an environment handle
SQLRETURN ret = SQLAllocEnv(&env);

EXPECT_EQ(SQL_SUCCESS, ret);

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yup, updated the code to use ASSERT_EQ

Comment on lines +137 to +139
// Test is disabled because driver manager on Windows does not pass through SQL_NTS
// This test case can be potentially used on macOS/Linux
GTEST_SKIP();

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changed to use DISABLED_ and removed GTEST_SKIP

@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 21, 2025
Comment on lines +31 to +32
public:
using List = std::list<T>;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
public:
using List = std::list<T>;

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done, removed using List

Comment on lines +39 to +43
template <typename T>
class ErrorsOdbcV2Test : public T {
public:
using List = std::list<T>;
};

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
template <typename T>
classErrorsOdbcV2Test : publicT {
public:
using List = std::list<T>;
};
template <typename T>
classErrorsOdbcV2Test : publicT {
};

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Comment on lines +133 to +134
// Free connection handle
EXPECT_EQ(SQL_SUCCESS, SQLFreeHandle(SQL_HANDLE_DBC, conn));

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe consider an RAII helper to free resources in tests

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added RAII helper for this (ErrorsHandleTest)

// API not implemented error from driver manager
EXPECT_EQ(std::wstring(L"IM001"), std::wstring(sql_state));

EXPECT_TRUE(!std::wstring(message).empty());

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

EXPECT_FALSE?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup good catch, fixed

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 22, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 4f4bbc0 to 99d8ec6CompareOctober 22, 2025 22:30
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 22, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 99d8ec6 to eddea34CompareOctober 22, 2025 22:34

@alinaliBQalinaliBQ left a comment

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed comments

Comment on lines +31 to +32
public:
using List = std::list<T>;

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done, removed using List

Comment on lines +39 to +43
template <typename T>
class ErrorsOdbcV2Test : public T {
public:
using List = std::list<T>;
};

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Comment on lines +133 to +134
// Free connection handle
EXPECT_EQ(SQL_SUCCESS, SQLFreeHandle(SQL_HANDLE_DBC, conn));

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added RAII helper for this (ErrorsHandleTest)

// API not implemented error from driver manager
EXPECT_EQ(std::wstring(L"IM001"), std::wstring(sql_state));

EXPECT_TRUE(!std::wstring(message).empty());

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup good catch, fixed

Comment on lines +100 to +102
static constexpr std::string_view authorization_header = "authorization";
static constexpr std::string_view bearer_prefix = "Bearer ";
static constexpr std::string_view test_token = "t0k3n";

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we keep to the naming scheme? kAuthorizationHeader etc.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, the change was added by accident. Fixed.
The RAII helper logic will also be in #47971, after #47971 is merged, I will rebase this PR.

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 27, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from eddea34 to 2768502CompareOctober 27, 2025 23:51
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 27, 2025
kou pushed a commit that referenced this pull request Oct 29, 2025
### Rationale for this change
ODBC needs to provide diagnostic information so users can debug the error
### What changes are included in this PR?
- Implementation of SQLGetDiagField and SQLGetDiagRec Tests are included in separate PR (see #47764)
### Are these changes tested?
Tests will be in a separate PR (see #47764). Other APIs depend on SQLGetDiagField and SQLGetDiagRec to get error reporting functionality, and tests for SQLGetDiagField and SQLGetDiagRec depend on other APIs for creating errors, as these diagnostic APIs alone do not initiate any errors. Changes tested locally
### Are there any user-facing changes?
No
* GitHub Issue: #46575
Authored-by: Alina (Xi) Li <alina.li@improving.com>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
@github-actionsgithub-actionsBot added awaiting merge Awaiting merge and removed awaiting change review Awaiting change review labels Oct 31, 2025
Comment threadcpp/src/arrow/flight/sql/odbc/tests/CMakeLists.txt Outdated
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 2768502 to d808e34CompareNovember 7, 2025 00:41
@justing-bq
justing-bqforce-pushed the gh-46575-odbc-diagnostics-tests branch 2 times, most recently from 3bdd474 to fdaf290CompareNovember 17, 2025 21:46
@alinaliBQ
alinaliBQ marked this pull request as ready for review November 21, 2025 00:23
@justing-bq
justing-bqforce-pushed the gh-46575-odbc-diagnostics-tests branch from fdaf290 to 34546b5CompareDecember 2, 2025 20:56
Requires SQLDriverConnect Implementation
Co-authored-by: rscales <robscales@icloud.com>
@justing-bq
justing-bqforce-pushed the gh-46575-odbc-diagnostics-tests branch from 34546b5 to 9a1ebf4CompareDecember 3, 2025 18:25
jduo
jduo approved these changes Dec 8, 2025
@jduo
jduo merged commit 6fed4f3 into apache:mainDec 8, 2025
45 checks passed
@kou

kou commented Dec 9, 2025

Copy link
Copy Markdown
Member

@jduo Could you use our merge script https://github.com/apache/arrow/tree/main/dev#how-to-merge-a-pull-request in this repository?

@jduo

jduo commented Dec 9, 2025

Copy link
Copy Markdown
Member

@jduo Could you use our merge script https://github.com/apache/arrow/tree/main/dev#how-to-merge-a-pull-request in this repository?

Sure @kou . Do you mean to re-do the last two merges using the scripts or use the merge script going forward?

Thanks

@kou

kou commented Dec 9, 2025

Copy link
Copy Markdown
Member

The latter. (We can't re-do merges in public repositories because it changes commit hashes...)

@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 3 benchmarking runs that have been run so far on merge-commit 6fed4f3.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details. It also includes information about 1 possible false positive for unstable benchmarks that are known to sometimes produce them.

Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
ODBC needs to provide diagnostic information so users can debug the error
### What changes are included in this PR?
- Implementation of SQLGetDiagField and SQLGetDiagRec Tests are included in separate PR (see apache#47764)
### Are these changes tested?
Tests will be in a separate PR (see apache#47764). Other APIs depend on SQLGetDiagField and SQLGetDiagRec to get error reporting functionality, and tests for SQLGetDiagField and SQLGetDiagRec depend on other APIs for creating errors, as these diagnostic APIs alone do not initiate any errors. Changes tested locally
### Are there any user-facing changes?
No
* GitHub Issue: apache#46575
Authored-by: Alina (Xi) Li <alina.li@improving.com>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
Putting the tests for diagnostics in a separate PR from
apache#47763, because non-diagnostic ODBC
APIs are required to get diagnostics.
### What changes are included in this PR?
- Add tests for ODBC diagnostics ### Are these changes tested?
PR depends on apache#47971 for tests to
work.
Tested locally. ### Are there any user-facing changes?
No
* GitHub Issue: apache#46575
Co-authored-by: rscales <robscales@icloud.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@alinaliBQ@kou@jduo@lidavidm@justing-bq
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

GH-46575: [C++][FlightRPC] Add Diagnostic tests - #47764

Merged
jduo merged 1 commit into
apache:mainfrom
Bit-Quill:gh-46575-odbc-diagnostics-tests
Dec 8, 2025
Merged

GH-46575: [C++][FlightRPC] Add Diagnostic tests#47764
jduo merged 1 commit into
apache:mainfrom
Bit-Quill:gh-46575-odbc-diagnostics-tests

Conversation

@alinaliBQ

@alinaliBQalinaliBQ commented Oct 8, 2025

Copy link
Copy Markdown
Collaborator

Rationale for this change

Putting the tests for diagnostics in a separate PR from #47763, because non-diagnostic ODBC APIs are required to get diagnostics.

What changes are included in this PR?

  • Add tests for ODBC diagnostics

Are these changes tested?

PR depends on #47971 for tests to work.

Tested locally.

Are there any user-facing changes?

No

@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

@lidavidm@kou Please review this draft ODBC API PR. The implementation PR is at #47763.


namespace arrow::flight::sql::odbc {

TYPED_TEST(FlightSQLODBCTestBase, TestSQLGetDiagFieldWForConnectFailure) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same comment here, we can subclass the base fixture and create a specific fixture for this file.

// Allocate an environment handle
SQLRETURN ret = SQLAllocEnv(&env);

EXPECT_EQ(SQL_SUCCESS, ret);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The test will continue even if EXPECT_ fails. Usually these kinds of checks should be ASSERT.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be more concise to just ASSERT_EQ(SQL_SUCCESS, SQLAllocEnv(&env)) and so on.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yup, updated the code to use ASSERT_EQ

Comment on lines +137 to +139
// Test is disabled because driver manager on Windows does not pass through SQL_NTS
// This test case can be potentially used on macOS/Linux
GTEST_SKIP();

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the test name starts with DISABLED_, GTest will ignore the test automatically

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changed to use DISABLED_ and removed GTEST_SKIP

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting review Awaiting review labels Oct 9, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 19da64d to 4f4bbc0CompareOctober 21, 2025 21:55

@alinaliBQalinaliBQ left a comment

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In-progress of addressing comments. The team is still working on improving the subclass logic for separate test fixture (discussion is in #47788)

// Allocate an environment handle
SQLRETURN ret = SQLAllocEnv(&env);

EXPECT_EQ(SQL_SUCCESS, ret);

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yup, updated the code to use ASSERT_EQ

Comment on lines +137 to +139
// Test is disabled because driver manager on Windows does not pass through SQL_NTS
// This test case can be potentially used on macOS/Linux
GTEST_SKIP();

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changed to use DISABLED_ and removed GTEST_SKIP

@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 21, 2025
Comment on lines +31 to +32
public:
using List = std::list<T>;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
public:
using List = std::list<T>;

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done, removed using List

Comment on lines +39 to +43
template <typename T>
class ErrorsOdbcV2Test : public T {
public:
using List = std::list<T>;
};

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
template <typename T>
classErrorsOdbcV2Test : publicT {
public:
using List = std::list<T>;
};
template <typename T>
classErrorsOdbcV2Test : publicT {
};

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Comment on lines +133 to +134
// Free connection handle
EXPECT_EQ(SQL_SUCCESS, SQLFreeHandle(SQL_HANDLE_DBC, conn));

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe consider an RAII helper to free resources in tests

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added RAII helper for this (ErrorsHandleTest)

// API not implemented error from driver manager
EXPECT_EQ(std::wstring(L"IM001"), std::wstring(sql_state));

EXPECT_TRUE(!std::wstring(message).empty());

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

EXPECT_FALSE?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup good catch, fixed

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 22, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 4f4bbc0 to 99d8ec6CompareOctober 22, 2025 22:30
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 22, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 99d8ec6 to eddea34CompareOctober 22, 2025 22:34

@alinaliBQalinaliBQ left a comment

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed comments

Comment on lines +31 to +32
public:
using List = std::list<T>;

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done, removed using List

Comment on lines +39 to +43
template <typename T>
class ErrorsOdbcV2Test : public T {
public:
using List = std::list<T>;
};

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Comment on lines +133 to +134
// Free connection handle
EXPECT_EQ(SQL_SUCCESS, SQLFreeHandle(SQL_HANDLE_DBC, conn));

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added RAII helper for this (ErrorsHandleTest)

// API not implemented error from driver manager
EXPECT_EQ(std::wstring(L"IM001"), std::wstring(sql_state));

EXPECT_TRUE(!std::wstring(message).empty());

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup good catch, fixed

Comment on lines +100 to +102
static constexpr std::string_view authorization_header = "authorization";
static constexpr std::string_view bearer_prefix = "Bearer ";
static constexpr std::string_view test_token = "t0k3n";

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we keep to the naming scheme? kAuthorizationHeader etc.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, the change was added by accident. Fixed.
The RAII helper logic will also be in #47971, after #47971 is merged, I will rebase this PR.

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 27, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from eddea34 to 2768502CompareOctober 27, 2025 23:51
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 27, 2025
kou pushed a commit that referenced this pull request Oct 29, 2025
### Rationale for this change
ODBC needs to provide diagnostic information so users can debug the error
### What changes are included in this PR?
- Implementation of SQLGetDiagField and SQLGetDiagRec Tests are included in separate PR (see #47764)
### Are these changes tested?
Tests will be in a separate PR (see #47764). Other APIs depend on SQLGetDiagField and SQLGetDiagRec to get error reporting functionality, and tests for SQLGetDiagField and SQLGetDiagRec depend on other APIs for creating errors, as these diagnostic APIs alone do not initiate any errors. Changes tested locally
### Are there any user-facing changes?
No
* GitHub Issue: #46575
Authored-by: Alina (Xi) Li <alina.li@improving.com>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
@github-actionsgithub-actionsBot added awaiting merge Awaiting merge and removed awaiting change review Awaiting change review labels Oct 31, 2025
Comment threadcpp/src/arrow/flight/sql/odbc/tests/CMakeLists.txt Outdated
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 2768502 to d808e34CompareNovember 7, 2025 00:41
@justing-bq
justing-bqforce-pushed the gh-46575-odbc-diagnostics-tests branch 2 times, most recently from 3bdd474 to fdaf290CompareNovember 17, 2025 21:46
@alinaliBQ
alinaliBQ marked this pull request as ready for review November 21, 2025 00:23
@justing-bq
justing-bqforce-pushed the gh-46575-odbc-diagnostics-tests branch from fdaf290 to 34546b5CompareDecember 2, 2025 20:56
Requires SQLDriverConnect Implementation
Co-authored-by: rscales <robscales@icloud.com>
@justing-bq
justing-bqforce-pushed the gh-46575-odbc-diagnostics-tests branch from 34546b5 to 9a1ebf4CompareDecember 3, 2025 18:25
jduo
jduo approved these changes Dec 8, 2025
@jduo
jduo merged commit 6fed4f3 into apache:mainDec 8, 2025
45 checks passed
@kou

kou commented Dec 9, 2025

Copy link
Copy Markdown
Member

@jduo Could you use our merge script https://github.com/apache/arrow/tree/main/dev#how-to-merge-a-pull-request in this repository?

@jduo

jduo commented Dec 9, 2025

Copy link
Copy Markdown
Member

@jduo Could you use our merge script https://github.com/apache/arrow/tree/main/dev#how-to-merge-a-pull-request in this repository?

Sure @kou . Do you mean to re-do the last two merges using the scripts or use the merge script going forward?

Thanks

@kou

kou commented Dec 9, 2025

Copy link
Copy Markdown
Member

The latter. (We can't re-do merges in public repositories because it changes commit hashes...)

@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 3 benchmarking runs that have been run so far on merge-commit 6fed4f3.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details. It also includes information about 1 possible false positive for unstable benchmarks that are known to sometimes produce them.

Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
ODBC needs to provide diagnostic information so users can debug the error
### What changes are included in this PR?
- Implementation of SQLGetDiagField and SQLGetDiagRec Tests are included in separate PR (see apache#47764)
### Are these changes tested?
Tests will be in a separate PR (see apache#47764). Other APIs depend on SQLGetDiagField and SQLGetDiagRec to get error reporting functionality, and tests for SQLGetDiagField and SQLGetDiagRec depend on other APIs for creating errors, as these diagnostic APIs alone do not initiate any errors. Changes tested locally
### Are there any user-facing changes?
No
* GitHub Issue: apache#46575
Authored-by: Alina (Xi) Li <alina.li@improving.com>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
Putting the tests for diagnostics in a separate PR from
apache#47763, because non-diagnostic ODBC
APIs are required to get diagnostics.
### What changes are included in this PR?
- Add tests for ODBC diagnostics ### Are these changes tested?
PR depends on apache#47971 for tests to
work.
Tested locally. ### Are there any user-facing changes?
No
* GitHub Issue: apache#46575
Co-authored-by: rscales <robscales@icloud.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@alinaliBQ@kou@jduo@lidavidm@justing-bq
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

GH-46575: [C++][FlightRPC] Add Diagnostic tests - #47764

Merged
jduo merged 1 commit into
apache:mainfrom
Bit-Quill:gh-46575-odbc-diagnostics-tests
Dec 8, 2025
Merged

GH-46575: [C++][FlightRPC] Add Diagnostic tests#47764
jduo merged 1 commit into
apache:mainfrom
Bit-Quill:gh-46575-odbc-diagnostics-tests

Conversation

@alinaliBQ

@alinaliBQalinaliBQ commented Oct 8, 2025

Copy link
Copy Markdown
Collaborator

Rationale for this change

Putting the tests for diagnostics in a separate PR from #47763, because non-diagnostic ODBC APIs are required to get diagnostics.

What changes are included in this PR?

  • Add tests for ODBC diagnostics

Are these changes tested?

PR depends on #47971 for tests to work.

Tested locally.

Are there any user-facing changes?

No

@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

@lidavidm@kou Please review this draft ODBC API PR. The implementation PR is at #47763.


namespace arrow::flight::sql::odbc {

TYPED_TEST(FlightSQLODBCTestBase, TestSQLGetDiagFieldWForConnectFailure) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same comment here, we can subclass the base fixture and create a specific fixture for this file.

// Allocate an environment handle
SQLRETURN ret = SQLAllocEnv(&env);

EXPECT_EQ(SQL_SUCCESS, ret);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The test will continue even if EXPECT_ fails. Usually these kinds of checks should be ASSERT.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be more concise to just ASSERT_EQ(SQL_SUCCESS, SQLAllocEnv(&env)) and so on.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yup, updated the code to use ASSERT_EQ

Comment on lines +137 to +139
// Test is disabled because driver manager on Windows does not pass through SQL_NTS
// This test case can be potentially used on macOS/Linux
GTEST_SKIP();

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the test name starts with DISABLED_, GTest will ignore the test automatically

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changed to use DISABLED_ and removed GTEST_SKIP

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting review Awaiting review labels Oct 9, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 19da64d to 4f4bbc0CompareOctober 21, 2025 21:55

@alinaliBQalinaliBQ left a comment

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In-progress of addressing comments. The team is still working on improving the subclass logic for separate test fixture (discussion is in #47788)

// Allocate an environment handle
SQLRETURN ret = SQLAllocEnv(&env);

EXPECT_EQ(SQL_SUCCESS, ret);

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yup, updated the code to use ASSERT_EQ

Comment on lines +137 to +139
// Test is disabled because driver manager on Windows does not pass through SQL_NTS
// This test case can be potentially used on macOS/Linux
GTEST_SKIP();

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changed to use DISABLED_ and removed GTEST_SKIP

@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 21, 2025
Comment on lines +31 to +32
public:
using List = std::list<T>;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
public:
using List = std::list<T>;

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done, removed using List

Comment on lines +39 to +43
template <typename T>
class ErrorsOdbcV2Test : public T {
public:
using List = std::list<T>;
};

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
template <typename T>
classErrorsOdbcV2Test : publicT {
public:
using List = std::list<T>;
};
template <typename T>
classErrorsOdbcV2Test : publicT {
};

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Comment on lines +133 to +134
// Free connection handle
EXPECT_EQ(SQL_SUCCESS, SQLFreeHandle(SQL_HANDLE_DBC, conn));

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe consider an RAII helper to free resources in tests

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added RAII helper for this (ErrorsHandleTest)

// API not implemented error from driver manager
EXPECT_EQ(std::wstring(L"IM001"), std::wstring(sql_state));

EXPECT_TRUE(!std::wstring(message).empty());

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

EXPECT_FALSE?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup good catch, fixed

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 22, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 4f4bbc0 to 99d8ec6CompareOctober 22, 2025 22:30
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 22, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 99d8ec6 to eddea34CompareOctober 22, 2025 22:34

@alinaliBQalinaliBQ left a comment

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed comments

Comment on lines +31 to +32
public:
using List = std::list<T>;

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done, removed using List

Comment on lines +39 to +43
template <typename T>
class ErrorsOdbcV2Test : public T {
public:
using List = std::list<T>;
};

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Comment on lines +133 to +134
// Free connection handle
EXPECT_EQ(SQL_SUCCESS, SQLFreeHandle(SQL_HANDLE_DBC, conn));

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added RAII helper for this (ErrorsHandleTest)

// API not implemented error from driver manager
EXPECT_EQ(std::wstring(L"IM001"), std::wstring(sql_state));

EXPECT_TRUE(!std::wstring(message).empty());

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup good catch, fixed

Comment on lines +100 to +102
static constexpr std::string_view authorization_header = "authorization";
static constexpr std::string_view bearer_prefix = "Bearer ";
static constexpr std::string_view test_token = "t0k3n";

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we keep to the naming scheme? kAuthorizationHeader etc.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, the change was added by accident. Fixed.
The RAII helper logic will also be in #47971, after #47971 is merged, I will rebase this PR.

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 27, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from eddea34 to 2768502CompareOctober 27, 2025 23:51
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 27, 2025
kou pushed a commit that referenced this pull request Oct 29, 2025
### Rationale for this change
ODBC needs to provide diagnostic information so users can debug the error
### What changes are included in this PR?
- Implementation of SQLGetDiagField and SQLGetDiagRec Tests are included in separate PR (see #47764)
### Are these changes tested?
Tests will be in a separate PR (see #47764). Other APIs depend on SQLGetDiagField and SQLGetDiagRec to get error reporting functionality, and tests for SQLGetDiagField and SQLGetDiagRec depend on other APIs for creating errors, as these diagnostic APIs alone do not initiate any errors. Changes tested locally
### Are there any user-facing changes?
No
* GitHub Issue: #46575
Authored-by: Alina (Xi) Li <alina.li@improving.com>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
@github-actionsgithub-actionsBot added awaiting merge Awaiting merge and removed awaiting change review Awaiting change review labels Oct 31, 2025
Comment threadcpp/src/arrow/flight/sql/odbc/tests/CMakeLists.txt Outdated
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 2768502 to d808e34CompareNovember 7, 2025 00:41
@justing-bq
justing-bqforce-pushed the gh-46575-odbc-diagnostics-tests branch 2 times, most recently from 3bdd474 to fdaf290CompareNovember 17, 2025 21:46
@alinaliBQ
alinaliBQ marked this pull request as ready for review November 21, 2025 00:23
@justing-bq
justing-bqforce-pushed the gh-46575-odbc-diagnostics-tests branch from fdaf290 to 34546b5CompareDecember 2, 2025 20:56
Requires SQLDriverConnect Implementation
Co-authored-by: rscales <robscales@icloud.com>
@justing-bq
justing-bqforce-pushed the gh-46575-odbc-diagnostics-tests branch from 34546b5 to 9a1ebf4CompareDecember 3, 2025 18:25
jduo
jduo approved these changes Dec 8, 2025
@jduo
jduo merged commit 6fed4f3 into apache:mainDec 8, 2025
45 checks passed
@kou

kou commented Dec 9, 2025

Copy link
Copy Markdown
Member

@jduo Could you use our merge script https://github.com/apache/arrow/tree/main/dev#how-to-merge-a-pull-request in this repository?

@jduo

jduo commented Dec 9, 2025

Copy link
Copy Markdown
Member

@jduo Could you use our merge script https://github.com/apache/arrow/tree/main/dev#how-to-merge-a-pull-request in this repository?

Sure @kou . Do you mean to re-do the last two merges using the scripts or use the merge script going forward?

Thanks

@kou

kou commented Dec 9, 2025

Copy link
Copy Markdown
Member

The latter. (We can't re-do merges in public repositories because it changes commit hashes...)

@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 3 benchmarking runs that have been run so far on merge-commit 6fed4f3.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details. It also includes information about 1 possible false positive for unstable benchmarks that are known to sometimes produce them.

Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
ODBC needs to provide diagnostic information so users can debug the error
### What changes are included in this PR?
- Implementation of SQLGetDiagField and SQLGetDiagRec Tests are included in separate PR (see apache#47764)
### Are these changes tested?
Tests will be in a separate PR (see apache#47764). Other APIs depend on SQLGetDiagField and SQLGetDiagRec to get error reporting functionality, and tests for SQLGetDiagField and SQLGetDiagRec depend on other APIs for creating errors, as these diagnostic APIs alone do not initiate any errors. Changes tested locally
### Are there any user-facing changes?
No
* GitHub Issue: apache#46575
Authored-by: Alina (Xi) Li <alina.li@improving.com>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
Putting the tests for diagnostics in a separate PR from
apache#47763, because non-diagnostic ODBC
APIs are required to get diagnostics.
### What changes are included in this PR?
- Add tests for ODBC diagnostics ### Are these changes tested?
PR depends on apache#47971 for tests to
work.
Tested locally. ### Are there any user-facing changes?
No
* GitHub Issue: apache#46575
Co-authored-by: rscales <robscales@icloud.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@alinaliBQ@kou@jduo@lidavidm@justing-bq
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

GH-46575: [C++][FlightRPC] Add Diagnostic tests - #47764

Merged
jduo merged 1 commit into
apache:mainfrom
Bit-Quill:gh-46575-odbc-diagnostics-tests
Dec 8, 2025
Merged

GH-46575: [C++][FlightRPC] Add Diagnostic tests#47764
jduo merged 1 commit into
apache:mainfrom
Bit-Quill:gh-46575-odbc-diagnostics-tests

Conversation

@alinaliBQ

@alinaliBQalinaliBQ commented Oct 8, 2025

Copy link
Copy Markdown
Collaborator

Rationale for this change

Putting the tests for diagnostics in a separate PR from #47763, because non-diagnostic ODBC APIs are required to get diagnostics.

What changes are included in this PR?

  • Add tests for ODBC diagnostics

Are these changes tested?

PR depends on #47971 for tests to work.

Tested locally.

Are there any user-facing changes?

No

@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

@lidavidm@kou Please review this draft ODBC API PR. The implementation PR is at #47763.


namespace arrow::flight::sql::odbc {

TYPED_TEST(FlightSQLODBCTestBase, TestSQLGetDiagFieldWForConnectFailure) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same comment here, we can subclass the base fixture and create a specific fixture for this file.

// Allocate an environment handle
SQLRETURN ret = SQLAllocEnv(&env);

EXPECT_EQ(SQL_SUCCESS, ret);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The test will continue even if EXPECT_ fails. Usually these kinds of checks should be ASSERT.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be more concise to just ASSERT_EQ(SQL_SUCCESS, SQLAllocEnv(&env)) and so on.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yup, updated the code to use ASSERT_EQ

Comment on lines +137 to +139
// Test is disabled because driver manager on Windows does not pass through SQL_NTS
// This test case can be potentially used on macOS/Linux
GTEST_SKIP();

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the test name starts with DISABLED_, GTest will ignore the test automatically

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changed to use DISABLED_ and removed GTEST_SKIP

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting review Awaiting review labels Oct 9, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 19da64d to 4f4bbc0CompareOctober 21, 2025 21:55

@alinaliBQalinaliBQ left a comment

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In-progress of addressing comments. The team is still working on improving the subclass logic for separate test fixture (discussion is in #47788)

// Allocate an environment handle
SQLRETURN ret = SQLAllocEnv(&env);

EXPECT_EQ(SQL_SUCCESS, ret);

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yup, updated the code to use ASSERT_EQ

Comment on lines +137 to +139
// Test is disabled because driver manager on Windows does not pass through SQL_NTS
// This test case can be potentially used on macOS/Linux
GTEST_SKIP();

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changed to use DISABLED_ and removed GTEST_SKIP

@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 21, 2025
Comment on lines +31 to +32
public:
using List = std::list<T>;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
public:
using List = std::list<T>;

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done, removed using List

Comment on lines +39 to +43
template <typename T>
class ErrorsOdbcV2Test : public T {
public:
using List = std::list<T>;
};

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
template <typename T>
classErrorsOdbcV2Test : publicT {
public:
using List = std::list<T>;
};
template <typename T>
classErrorsOdbcV2Test : publicT {
};

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Comment on lines +133 to +134
// Free connection handle
EXPECT_EQ(SQL_SUCCESS, SQLFreeHandle(SQL_HANDLE_DBC, conn));

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe consider an RAII helper to free resources in tests

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added RAII helper for this (ErrorsHandleTest)

// API not implemented error from driver manager
EXPECT_EQ(std::wstring(L"IM001"), std::wstring(sql_state));

EXPECT_TRUE(!std::wstring(message).empty());

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

EXPECT_FALSE?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup good catch, fixed

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 22, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 4f4bbc0 to 99d8ec6CompareOctober 22, 2025 22:30
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 22, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 99d8ec6 to eddea34CompareOctober 22, 2025 22:34

@alinaliBQalinaliBQ left a comment

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed comments

Comment on lines +31 to +32
public:
using List = std::list<T>;

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done, removed using List

Comment on lines +39 to +43
template <typename T>
class ErrorsOdbcV2Test : public T {
public:
using List = std::list<T>;
};

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Comment on lines +133 to +134
// Free connection handle
EXPECT_EQ(SQL_SUCCESS, SQLFreeHandle(SQL_HANDLE_DBC, conn));

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added RAII helper for this (ErrorsHandleTest)

// API not implemented error from driver manager
EXPECT_EQ(std::wstring(L"IM001"), std::wstring(sql_state));

EXPECT_TRUE(!std::wstring(message).empty());

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup good catch, fixed

Comment on lines +100 to +102
static constexpr std::string_view authorization_header = "authorization";
static constexpr std::string_view bearer_prefix = "Bearer ";
static constexpr std::string_view test_token = "t0k3n";

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we keep to the naming scheme? kAuthorizationHeader etc.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, the change was added by accident. Fixed.
The RAII helper logic will also be in #47971, after #47971 is merged, I will rebase this PR.

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 27, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from eddea34 to 2768502CompareOctober 27, 2025 23:51
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 27, 2025
kou pushed a commit that referenced this pull request Oct 29, 2025
### Rationale for this change
ODBC needs to provide diagnostic information so users can debug the error
### What changes are included in this PR?
- Implementation of SQLGetDiagField and SQLGetDiagRec Tests are included in separate PR (see #47764)
### Are these changes tested?
Tests will be in a separate PR (see #47764). Other APIs depend on SQLGetDiagField and SQLGetDiagRec to get error reporting functionality, and tests for SQLGetDiagField and SQLGetDiagRec depend on other APIs for creating errors, as these diagnostic APIs alone do not initiate any errors. Changes tested locally
### Are there any user-facing changes?
No
* GitHub Issue: #46575
Authored-by: Alina (Xi) Li <alina.li@improving.com>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
@github-actionsgithub-actionsBot added awaiting merge Awaiting merge and removed awaiting change review Awaiting change review labels Oct 31, 2025
Comment threadcpp/src/arrow/flight/sql/odbc/tests/CMakeLists.txt Outdated
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 2768502 to d808e34CompareNovember 7, 2025 00:41
@justing-bq
justing-bqforce-pushed the gh-46575-odbc-diagnostics-tests branch 2 times, most recently from 3bdd474 to fdaf290CompareNovember 17, 2025 21:46
@alinaliBQ
alinaliBQ marked this pull request as ready for review November 21, 2025 00:23
@justing-bq
justing-bqforce-pushed the gh-46575-odbc-diagnostics-tests branch from fdaf290 to 34546b5CompareDecember 2, 2025 20:56
Requires SQLDriverConnect Implementation
Co-authored-by: rscales <robscales@icloud.com>
@justing-bq
justing-bqforce-pushed the gh-46575-odbc-diagnostics-tests branch from 34546b5 to 9a1ebf4CompareDecember 3, 2025 18:25
jduo
jduo approved these changes Dec 8, 2025
@jduo
jduo merged commit 6fed4f3 into apache:mainDec 8, 2025
45 checks passed
@kou

kou commented Dec 9, 2025

Copy link
Copy Markdown
Member

@jduo Could you use our merge script https://github.com/apache/arrow/tree/main/dev#how-to-merge-a-pull-request in this repository?

@jduo

jduo commented Dec 9, 2025

Copy link
Copy Markdown
Member

@jduo Could you use our merge script https://github.com/apache/arrow/tree/main/dev#how-to-merge-a-pull-request in this repository?

Sure @kou . Do you mean to re-do the last two merges using the scripts or use the merge script going forward?

Thanks

@kou

kou commented Dec 9, 2025

Copy link
Copy Markdown
Member

The latter. (We can't re-do merges in public repositories because it changes commit hashes...)

@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 3 benchmarking runs that have been run so far on merge-commit 6fed4f3.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details. It also includes information about 1 possible false positive for unstable benchmarks that are known to sometimes produce them.

Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
ODBC needs to provide diagnostic information so users can debug the error
### What changes are included in this PR?
- Implementation of SQLGetDiagField and SQLGetDiagRec Tests are included in separate PR (see apache#47764)
### Are these changes tested?
Tests will be in a separate PR (see apache#47764). Other APIs depend on SQLGetDiagField and SQLGetDiagRec to get error reporting functionality, and tests for SQLGetDiagField and SQLGetDiagRec depend on other APIs for creating errors, as these diagnostic APIs alone do not initiate any errors. Changes tested locally
### Are there any user-facing changes?
No
* GitHub Issue: apache#46575
Authored-by: Alina (Xi) Li <alina.li@improving.com>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
Putting the tests for diagnostics in a separate PR from
apache#47763, because non-diagnostic ODBC
APIs are required to get diagnostics.
### What changes are included in this PR?
- Add tests for ODBC diagnostics ### Are these changes tested?
PR depends on apache#47971 for tests to
work.
Tested locally. ### Are there any user-facing changes?
No
* GitHub Issue: apache#46575
Co-authored-by: rscales <robscales@icloud.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@alinaliBQ@kou@jduo@lidavidm@justing-bq
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

GH-46575: [C++][FlightRPC] Add Diagnostic tests - #47764

Merged
jduo merged 1 commit into
apache:mainfrom
Bit-Quill:gh-46575-odbc-diagnostics-tests
Dec 8, 2025
Merged

GH-46575: [C++][FlightRPC] Add Diagnostic tests#47764
jduo merged 1 commit into
apache:mainfrom
Bit-Quill:gh-46575-odbc-diagnostics-tests

Conversation

@alinaliBQ

@alinaliBQalinaliBQ commented Oct 8, 2025

Copy link
Copy Markdown
Collaborator

Rationale for this change

Putting the tests for diagnostics in a separate PR from #47763, because non-diagnostic ODBC APIs are required to get diagnostics.

What changes are included in this PR?

  • Add tests for ODBC diagnostics

Are these changes tested?

PR depends on #47971 for tests to work.

Tested locally.

Are there any user-facing changes?

No

@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

@lidavidm@kou Please review this draft ODBC API PR. The implementation PR is at #47763.


namespace arrow::flight::sql::odbc {

TYPED_TEST(FlightSQLODBCTestBase, TestSQLGetDiagFieldWForConnectFailure) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same comment here, we can subclass the base fixture and create a specific fixture for this file.

// Allocate an environment handle
SQLRETURN ret = SQLAllocEnv(&env);

EXPECT_EQ(SQL_SUCCESS, ret);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The test will continue even if EXPECT_ fails. Usually these kinds of checks should be ASSERT.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be more concise to just ASSERT_EQ(SQL_SUCCESS, SQLAllocEnv(&env)) and so on.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yup, updated the code to use ASSERT_EQ

Comment on lines +137 to +139
// Test is disabled because driver manager on Windows does not pass through SQL_NTS
// This test case can be potentially used on macOS/Linux
GTEST_SKIP();

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the test name starts with DISABLED_, GTest will ignore the test automatically

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changed to use DISABLED_ and removed GTEST_SKIP

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting review Awaiting review labels Oct 9, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 19da64d to 4f4bbc0CompareOctober 21, 2025 21:55

@alinaliBQalinaliBQ left a comment

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In-progress of addressing comments. The team is still working on improving the subclass logic for separate test fixture (discussion is in #47788)

// Allocate an environment handle
SQLRETURN ret = SQLAllocEnv(&env);

EXPECT_EQ(SQL_SUCCESS, ret);

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yup, updated the code to use ASSERT_EQ

Comment on lines +137 to +139
// Test is disabled because driver manager on Windows does not pass through SQL_NTS
// This test case can be potentially used on macOS/Linux
GTEST_SKIP();

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changed to use DISABLED_ and removed GTEST_SKIP

@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 21, 2025
Comment on lines +31 to +32
public:
using List = std::list<T>;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
public:
using List = std::list<T>;

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done, removed using List

Comment on lines +39 to +43
template <typename T>
class ErrorsOdbcV2Test : public T {
public:
using List = std::list<T>;
};

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
template <typename T>
classErrorsOdbcV2Test : publicT {
public:
using List = std::list<T>;
};
template <typename T>
classErrorsOdbcV2Test : publicT {
};

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Comment on lines +133 to +134
// Free connection handle
EXPECT_EQ(SQL_SUCCESS, SQLFreeHandle(SQL_HANDLE_DBC, conn));

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe consider an RAII helper to free resources in tests

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added RAII helper for this (ErrorsHandleTest)

// API not implemented error from driver manager
EXPECT_EQ(std::wstring(L"IM001"), std::wstring(sql_state));

EXPECT_TRUE(!std::wstring(message).empty());

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

EXPECT_FALSE?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup good catch, fixed

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 22, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 4f4bbc0 to 99d8ec6CompareOctober 22, 2025 22:30
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 22, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 99d8ec6 to eddea34CompareOctober 22, 2025 22:34

@alinaliBQalinaliBQ left a comment

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed comments

Comment on lines +31 to +32
public:
using List = std::list<T>;

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done, removed using List

Comment on lines +39 to +43
template <typename T>
class ErrorsOdbcV2Test : public T {
public:
using List = std::list<T>;
};

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Comment on lines +133 to +134
// Free connection handle
EXPECT_EQ(SQL_SUCCESS, SQLFreeHandle(SQL_HANDLE_DBC, conn));

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added RAII helper for this (ErrorsHandleTest)

// API not implemented error from driver manager
EXPECT_EQ(std::wstring(L"IM001"), std::wstring(sql_state));

EXPECT_TRUE(!std::wstring(message).empty());

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup good catch, fixed

Comment on lines +100 to +102
static constexpr std::string_view authorization_header = "authorization";
static constexpr std::string_view bearer_prefix = "Bearer ";
static constexpr std::string_view test_token = "t0k3n";

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we keep to the naming scheme? kAuthorizationHeader etc.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, the change was added by accident. Fixed.
The RAII helper logic will also be in #47971, after #47971 is merged, I will rebase this PR.

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 27, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from eddea34 to 2768502CompareOctober 27, 2025 23:51
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 27, 2025
kou pushed a commit that referenced this pull request Oct 29, 2025
### Rationale for this change
ODBC needs to provide diagnostic information so users can debug the error
### What changes are included in this PR?
- Implementation of SQLGetDiagField and SQLGetDiagRec Tests are included in separate PR (see #47764)
### Are these changes tested?
Tests will be in a separate PR (see #47764). Other APIs depend on SQLGetDiagField and SQLGetDiagRec to get error reporting functionality, and tests for SQLGetDiagField and SQLGetDiagRec depend on other APIs for creating errors, as these diagnostic APIs alone do not initiate any errors. Changes tested locally
### Are there any user-facing changes?
No
* GitHub Issue: #46575
Authored-by: Alina (Xi) Li <alina.li@improving.com>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
@github-actionsgithub-actionsBot added awaiting merge Awaiting merge and removed awaiting change review Awaiting change review labels Oct 31, 2025
Comment threadcpp/src/arrow/flight/sql/odbc/tests/CMakeLists.txt Outdated
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 2768502 to d808e34CompareNovember 7, 2025 00:41
@justing-bq
justing-bqforce-pushed the gh-46575-odbc-diagnostics-tests branch 2 times, most recently from 3bdd474 to fdaf290CompareNovember 17, 2025 21:46
@alinaliBQ
alinaliBQ marked this pull request as ready for review November 21, 2025 00:23
@justing-bq
justing-bqforce-pushed the gh-46575-odbc-diagnostics-tests branch from fdaf290 to 34546b5CompareDecember 2, 2025 20:56
Requires SQLDriverConnect Implementation
Co-authored-by: rscales <robscales@icloud.com>
@justing-bq
justing-bqforce-pushed the gh-46575-odbc-diagnostics-tests branch from 34546b5 to 9a1ebf4CompareDecember 3, 2025 18:25
jduo
jduo approved these changes Dec 8, 2025
@jduo
jduo merged commit 6fed4f3 into apache:mainDec 8, 2025
45 checks passed
@kou

kou commented Dec 9, 2025

Copy link
Copy Markdown
Member

@jduo Could you use our merge script https://github.com/apache/arrow/tree/main/dev#how-to-merge-a-pull-request in this repository?

@jduo

jduo commented Dec 9, 2025

Copy link
Copy Markdown
Member

@jduo Could you use our merge script https://github.com/apache/arrow/tree/main/dev#how-to-merge-a-pull-request in this repository?

Sure @kou . Do you mean to re-do the last two merges using the scripts or use the merge script going forward?

Thanks

@kou

kou commented Dec 9, 2025

Copy link
Copy Markdown
Member

The latter. (We can't re-do merges in public repositories because it changes commit hashes...)

@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 3 benchmarking runs that have been run so far on merge-commit 6fed4f3.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details. It also includes information about 1 possible false positive for unstable benchmarks that are known to sometimes produce them.

Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
ODBC needs to provide diagnostic information so users can debug the error
### What changes are included in this PR?
- Implementation of SQLGetDiagField and SQLGetDiagRec Tests are included in separate PR (see apache#47764)
### Are these changes tested?
Tests will be in a separate PR (see apache#47764). Other APIs depend on SQLGetDiagField and SQLGetDiagRec to get error reporting functionality, and tests for SQLGetDiagField and SQLGetDiagRec depend on other APIs for creating errors, as these diagnostic APIs alone do not initiate any errors. Changes tested locally
### Are there any user-facing changes?
No
* GitHub Issue: apache#46575
Authored-by: Alina (Xi) Li <alina.li@improving.com>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
Putting the tests for diagnostics in a separate PR from
apache#47763, because non-diagnostic ODBC
APIs are required to get diagnostics.
### What changes are included in this PR?
- Add tests for ODBC diagnostics ### Are these changes tested?
PR depends on apache#47971 for tests to
work.
Tested locally. ### Are there any user-facing changes?
No
* GitHub Issue: apache#46575
Co-authored-by: rscales <robscales@icloud.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@alinaliBQ@kou@jduo@lidavidm@justing-bq
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

GH-46575: [C++][FlightRPC] Add Diagnostic tests - #47764

Merged
jduo merged 1 commit into
apache:mainfrom
Bit-Quill:gh-46575-odbc-diagnostics-tests
Dec 8, 2025
Merged

GH-46575: [C++][FlightRPC] Add Diagnostic tests#47764
jduo merged 1 commit into
apache:mainfrom
Bit-Quill:gh-46575-odbc-diagnostics-tests

Conversation

@alinaliBQ

@alinaliBQalinaliBQ commented Oct 8, 2025

Copy link
Copy Markdown
Collaborator

Rationale for this change

Putting the tests for diagnostics in a separate PR from #47763, because non-diagnostic ODBC APIs are required to get diagnostics.

What changes are included in this PR?

  • Add tests for ODBC diagnostics

Are these changes tested?

PR depends on #47971 for tests to work.

Tested locally.

Are there any user-facing changes?

No

@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

@lidavidm@kou Please review this draft ODBC API PR. The implementation PR is at #47763.


namespace arrow::flight::sql::odbc {

TYPED_TEST(FlightSQLODBCTestBase, TestSQLGetDiagFieldWForConnectFailure) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same comment here, we can subclass the base fixture and create a specific fixture for this file.

// Allocate an environment handle
SQLRETURN ret = SQLAllocEnv(&env);

EXPECT_EQ(SQL_SUCCESS, ret);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The test will continue even if EXPECT_ fails. Usually these kinds of checks should be ASSERT.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be more concise to just ASSERT_EQ(SQL_SUCCESS, SQLAllocEnv(&env)) and so on.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yup, updated the code to use ASSERT_EQ

Comment on lines +137 to +139
// Test is disabled because driver manager on Windows does not pass through SQL_NTS
// This test case can be potentially used on macOS/Linux
GTEST_SKIP();

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the test name starts with DISABLED_, GTest will ignore the test automatically

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changed to use DISABLED_ and removed GTEST_SKIP

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting review Awaiting review labels Oct 9, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 19da64d to 4f4bbc0CompareOctober 21, 2025 21:55

@alinaliBQalinaliBQ left a comment

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In-progress of addressing comments. The team is still working on improving the subclass logic for separate test fixture (discussion is in #47788)

// Allocate an environment handle
SQLRETURN ret = SQLAllocEnv(&env);

EXPECT_EQ(SQL_SUCCESS, ret);

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yup, updated the code to use ASSERT_EQ

Comment on lines +137 to +139
// Test is disabled because driver manager on Windows does not pass through SQL_NTS
// This test case can be potentially used on macOS/Linux
GTEST_SKIP();

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changed to use DISABLED_ and removed GTEST_SKIP

@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 21, 2025
Comment on lines +31 to +32
public:
using List = std::list<T>;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
public:
using List = std::list<T>;

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done, removed using List

Comment on lines +39 to +43
template <typename T>
class ErrorsOdbcV2Test : public T {
public:
using List = std::list<T>;
};

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
template <typename T>
classErrorsOdbcV2Test : publicT {
public:
using List = std::list<T>;
};
template <typename T>
classErrorsOdbcV2Test : publicT {
};

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Comment on lines +133 to +134
// Free connection handle
EXPECT_EQ(SQL_SUCCESS, SQLFreeHandle(SQL_HANDLE_DBC, conn));

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe consider an RAII helper to free resources in tests

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added RAII helper for this (ErrorsHandleTest)

// API not implemented error from driver manager
EXPECT_EQ(std::wstring(L"IM001"), std::wstring(sql_state));

EXPECT_TRUE(!std::wstring(message).empty());

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

EXPECT_FALSE?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup good catch, fixed

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 22, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 4f4bbc0 to 99d8ec6CompareOctober 22, 2025 22:30
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 22, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 99d8ec6 to eddea34CompareOctober 22, 2025 22:34

@alinaliBQalinaliBQ left a comment

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed comments

Comment on lines +31 to +32
public:
using List = std::list<T>;

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done, removed using List

Comment on lines +39 to +43
template <typename T>
class ErrorsOdbcV2Test : public T {
public:
using List = std::list<T>;
};

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Comment on lines +133 to +134
// Free connection handle
EXPECT_EQ(SQL_SUCCESS, SQLFreeHandle(SQL_HANDLE_DBC, conn));

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added RAII helper for this (ErrorsHandleTest)

// API not implemented error from driver manager
EXPECT_EQ(std::wstring(L"IM001"), std::wstring(sql_state));

EXPECT_TRUE(!std::wstring(message).empty());

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup good catch, fixed

Comment on lines +100 to +102
static constexpr std::string_view authorization_header = "authorization";
static constexpr std::string_view bearer_prefix = "Bearer ";
static constexpr std::string_view test_token = "t0k3n";

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we keep to the naming scheme? kAuthorizationHeader etc.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, the change was added by accident. Fixed.
The RAII helper logic will also be in #47971, after #47971 is merged, I will rebase this PR.

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 27, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from eddea34 to 2768502CompareOctober 27, 2025 23:51
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 27, 2025
kou pushed a commit that referenced this pull request Oct 29, 2025
### Rationale for this change
ODBC needs to provide diagnostic information so users can debug the error
### What changes are included in this PR?
- Implementation of SQLGetDiagField and SQLGetDiagRec Tests are included in separate PR (see #47764)
### Are these changes tested?
Tests will be in a separate PR (see #47764). Other APIs depend on SQLGetDiagField and SQLGetDiagRec to get error reporting functionality, and tests for SQLGetDiagField and SQLGetDiagRec depend on other APIs for creating errors, as these diagnostic APIs alone do not initiate any errors. Changes tested locally
### Are there any user-facing changes?
No
* GitHub Issue: #46575
Authored-by: Alina (Xi) Li <alina.li@improving.com>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
@github-actionsgithub-actionsBot added awaiting merge Awaiting merge and removed awaiting change review Awaiting change review labels Oct 31, 2025
Comment threadcpp/src/arrow/flight/sql/odbc/tests/CMakeLists.txt Outdated
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 2768502 to d808e34CompareNovember 7, 2025 00:41
@justing-bq
justing-bqforce-pushed the gh-46575-odbc-diagnostics-tests branch 2 times, most recently from 3bdd474 to fdaf290CompareNovember 17, 2025 21:46
@alinaliBQ
alinaliBQ marked this pull request as ready for review November 21, 2025 00:23
@justing-bq
justing-bqforce-pushed the gh-46575-odbc-diagnostics-tests branch from fdaf290 to 34546b5CompareDecember 2, 2025 20:56
Requires SQLDriverConnect Implementation
Co-authored-by: rscales <robscales@icloud.com>
@justing-bq
justing-bqforce-pushed the gh-46575-odbc-diagnostics-tests branch from 34546b5 to 9a1ebf4CompareDecember 3, 2025 18:25
jduo
jduo approved these changes Dec 8, 2025
@jduo
jduo merged commit 6fed4f3 into apache:mainDec 8, 2025
45 checks passed
@kou

kou commented Dec 9, 2025

Copy link
Copy Markdown
Member

@jduo Could you use our merge script https://github.com/apache/arrow/tree/main/dev#how-to-merge-a-pull-request in this repository?

@jduo

jduo commented Dec 9, 2025

Copy link
Copy Markdown
Member

@jduo Could you use our merge script https://github.com/apache/arrow/tree/main/dev#how-to-merge-a-pull-request in this repository?

Sure @kou . Do you mean to re-do the last two merges using the scripts or use the merge script going forward?

Thanks

@kou

kou commented Dec 9, 2025

Copy link
Copy Markdown
Member

The latter. (We can't re-do merges in public repositories because it changes commit hashes...)

@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 3 benchmarking runs that have been run so far on merge-commit 6fed4f3.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details. It also includes information about 1 possible false positive for unstable benchmarks that are known to sometimes produce them.

Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
ODBC needs to provide diagnostic information so users can debug the error
### What changes are included in this PR?
- Implementation of SQLGetDiagField and SQLGetDiagRec Tests are included in separate PR (see apache#47764)
### Are these changes tested?
Tests will be in a separate PR (see apache#47764). Other APIs depend on SQLGetDiagField and SQLGetDiagRec to get error reporting functionality, and tests for SQLGetDiagField and SQLGetDiagRec depend on other APIs for creating errors, as these diagnostic APIs alone do not initiate any errors. Changes tested locally
### Are there any user-facing changes?
No
* GitHub Issue: apache#46575
Authored-by: Alina (Xi) Li <alina.li@improving.com>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
Putting the tests for diagnostics in a separate PR from
apache#47763, because non-diagnostic ODBC
APIs are required to get diagnostics.
### What changes are included in this PR?
- Add tests for ODBC diagnostics ### Are these changes tested?
PR depends on apache#47971 for tests to
work.
Tested locally. ### Are there any user-facing changes?
No
* GitHub Issue: apache#46575
Co-authored-by: rscales <robscales@icloud.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@alinaliBQ@kou@jduo@lidavidm@justing-bq
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

GH-46575: [C++][FlightRPC] Add Diagnostic tests - #47764

Merged
jduo merged 1 commit into
apache:mainfrom
Bit-Quill:gh-46575-odbc-diagnostics-tests
Dec 8, 2025
Merged

GH-46575: [C++][FlightRPC] Add Diagnostic tests#47764
jduo merged 1 commit into
apache:mainfrom
Bit-Quill:gh-46575-odbc-diagnostics-tests

Conversation

@alinaliBQ

@alinaliBQalinaliBQ commented Oct 8, 2025

Copy link
Copy Markdown
Collaborator

Rationale for this change

Putting the tests for diagnostics in a separate PR from #47763, because non-diagnostic ODBC APIs are required to get diagnostics.

What changes are included in this PR?

  • Add tests for ODBC diagnostics

Are these changes tested?

PR depends on #47971 for tests to work.

Tested locally.

Are there any user-facing changes?

No

@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

@lidavidm@kou Please review this draft ODBC API PR. The implementation PR is at #47763.


namespace arrow::flight::sql::odbc {

TYPED_TEST(FlightSQLODBCTestBase, TestSQLGetDiagFieldWForConnectFailure) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same comment here, we can subclass the base fixture and create a specific fixture for this file.

// Allocate an environment handle
SQLRETURN ret = SQLAllocEnv(&env);

EXPECT_EQ(SQL_SUCCESS, ret);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The test will continue even if EXPECT_ fails. Usually these kinds of checks should be ASSERT.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be more concise to just ASSERT_EQ(SQL_SUCCESS, SQLAllocEnv(&env)) and so on.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yup, updated the code to use ASSERT_EQ

Comment on lines +137 to +139
// Test is disabled because driver manager on Windows does not pass through SQL_NTS
// This test case can be potentially used on macOS/Linux
GTEST_SKIP();

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the test name starts with DISABLED_, GTest will ignore the test automatically

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changed to use DISABLED_ and removed GTEST_SKIP

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting review Awaiting review labels Oct 9, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 19da64d to 4f4bbc0CompareOctober 21, 2025 21:55

@alinaliBQalinaliBQ left a comment

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In-progress of addressing comments. The team is still working on improving the subclass logic for separate test fixture (discussion is in #47788)

// Allocate an environment handle
SQLRETURN ret = SQLAllocEnv(&env);

EXPECT_EQ(SQL_SUCCESS, ret);

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yup, updated the code to use ASSERT_EQ

Comment on lines +137 to +139
// Test is disabled because driver manager on Windows does not pass through SQL_NTS
// This test case can be potentially used on macOS/Linux
GTEST_SKIP();

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changed to use DISABLED_ and removed GTEST_SKIP

@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 21, 2025
Comment on lines +31 to +32
public:
using List = std::list<T>;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
public:
using List = std::list<T>;

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done, removed using List

Comment on lines +39 to +43
template <typename T>
class ErrorsOdbcV2Test : public T {
public:
using List = std::list<T>;
};

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
template <typename T>
classErrorsOdbcV2Test : publicT {
public:
using List = std::list<T>;
};
template <typename T>
classErrorsOdbcV2Test : publicT {
};

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Comment on lines +133 to +134
// Free connection handle
EXPECT_EQ(SQL_SUCCESS, SQLFreeHandle(SQL_HANDLE_DBC, conn));

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe consider an RAII helper to free resources in tests

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added RAII helper for this (ErrorsHandleTest)

// API not implemented error from driver manager
EXPECT_EQ(std::wstring(L"IM001"), std::wstring(sql_state));

EXPECT_TRUE(!std::wstring(message).empty());

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

EXPECT_FALSE?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup good catch, fixed

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 22, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 4f4bbc0 to 99d8ec6CompareOctober 22, 2025 22:30
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 22, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 99d8ec6 to eddea34CompareOctober 22, 2025 22:34

@alinaliBQalinaliBQ left a comment

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed comments

Comment on lines +31 to +32
public:
using List = std::list<T>;

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done, removed using List

Comment on lines +39 to +43
template <typename T>
class ErrorsOdbcV2Test : public T {
public:
using List = std::list<T>;
};

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Comment on lines +133 to +134
// Free connection handle
EXPECT_EQ(SQL_SUCCESS, SQLFreeHandle(SQL_HANDLE_DBC, conn));

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added RAII helper for this (ErrorsHandleTest)

// API not implemented error from driver manager
EXPECT_EQ(std::wstring(L"IM001"), std::wstring(sql_state));

EXPECT_TRUE(!std::wstring(message).empty());

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup good catch, fixed

Comment on lines +100 to +102
static constexpr std::string_view authorization_header = "authorization";
static constexpr std::string_view bearer_prefix = "Bearer ";
static constexpr std::string_view test_token = "t0k3n";

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we keep to the naming scheme? kAuthorizationHeader etc.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, the change was added by accident. Fixed.
The RAII helper logic will also be in #47971, after #47971 is merged, I will rebase this PR.

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 27, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from eddea34 to 2768502CompareOctober 27, 2025 23:51
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 27, 2025
kou pushed a commit that referenced this pull request Oct 29, 2025
### Rationale for this change
ODBC needs to provide diagnostic information so users can debug the error
### What changes are included in this PR?
- Implementation of SQLGetDiagField and SQLGetDiagRec Tests are included in separate PR (see #47764)
### Are these changes tested?
Tests will be in a separate PR (see #47764). Other APIs depend on SQLGetDiagField and SQLGetDiagRec to get error reporting functionality, and tests for SQLGetDiagField and SQLGetDiagRec depend on other APIs for creating errors, as these diagnostic APIs alone do not initiate any errors. Changes tested locally
### Are there any user-facing changes?
No
* GitHub Issue: #46575
Authored-by: Alina (Xi) Li <alina.li@improving.com>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
@github-actionsgithub-actionsBot added awaiting merge Awaiting merge and removed awaiting change review Awaiting change review labels Oct 31, 2025
Comment threadcpp/src/arrow/flight/sql/odbc/tests/CMakeLists.txt Outdated
@alinaliBQ
alinaliBQforce-pushed the gh-46575-odbc-diagnostics-tests branch from 2768502 to d808e34CompareNovember 7, 2025 00:41
@justing-bq
justing-bqforce-pushed the gh-46575-odbc-diagnostics-tests branch 2 times, most recently from 3bdd474 to fdaf290CompareNovember 17, 2025 21:46
@alinaliBQ
alinaliBQ marked this pull request as ready for review November 21, 2025 00:23
@justing-bq
justing-bqforce-pushed the gh-46575-odbc-diagnostics-tests branch from fdaf290 to 34546b5CompareDecember 2, 2025 20:56
Requires SQLDriverConnect Implementation
Co-authored-by: rscales <robscales@icloud.com>
@justing-bq
justing-bqforce-pushed the gh-46575-odbc-diagnostics-tests branch from 34546b5 to 9a1ebf4CompareDecember 3, 2025 18:25
jduo
jduo approved these changes Dec 8, 2025
@jduo
jduo merged commit 6fed4f3 into apache:mainDec 8, 2025
45 checks passed
@kou

kou commented Dec 9, 2025

Copy link
Copy Markdown
Member

@jduo Could you use our merge script https://github.com/apache/arrow/tree/main/dev#how-to-merge-a-pull-request in this repository?

@jduo

jduo commented Dec 9, 2025

Copy link
Copy Markdown
Member

@jduo Could you use our merge script https://github.com/apache/arrow/tree/main/dev#how-to-merge-a-pull-request in this repository?

Sure @kou . Do you mean to re-do the last two merges using the scripts or use the merge script going forward?

Thanks

@kou

kou commented Dec 9, 2025

Copy link
Copy Markdown
Member

The latter. (We can't re-do merges in public repositories because it changes commit hashes...)

@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 3 benchmarking runs that have been run so far on merge-commit 6fed4f3.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details. It also includes information about 1 possible false positive for unstable benchmarks that are known to sometimes produce them.

Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
ODBC needs to provide diagnostic information so users can debug the error
### What changes are included in this PR?
- Implementation of SQLGetDiagField and SQLGetDiagRec Tests are included in separate PR (see apache#47764)
### Are these changes tested?
Tests will be in a separate PR (see apache#47764). Other APIs depend on SQLGetDiagField and SQLGetDiagRec to get error reporting functionality, and tests for SQLGetDiagField and SQLGetDiagRec depend on other APIs for creating errors, as these diagnostic APIs alone do not initiate any errors. Changes tested locally
### Are there any user-facing changes?
No
* GitHub Issue: apache#46575
Authored-by: Alina (Xi) Li <alina.li@improving.com>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
Putting the tests for diagnostics in a separate PR from
apache#47763, because non-diagnostic ODBC
APIs are required to get diagnostics.
### What changes are included in this PR?
- Add tests for ODBC diagnostics ### Are these changes tested?
PR depends on apache#47971 for tests to
work.
Tested locally. ### Are there any user-facing changes?
No
* GitHub Issue: apache#46575
Co-authored-by: rscales <robscales@icloud.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@alinaliBQ@kou@jduo@lidavidm@justing-bq