GH-47710: [C++][FlightRPC] Statement attribute Support in ODBC - #47773

Merged
lidavidm merged 7 commits into
apache:mainfrom
Bit-Quill:gh-47710-sql-stmt-attr
Nov 28, 2025
Merged

GH-47710: [C++][FlightRPC] Statement attribute Support in ODBC#47773
lidavidm merged 7 commits into
apache:mainfrom
Bit-Quill:gh-47710-sql-stmt-attr

Conversation

@alinaliBQ

@alinaliBQalinaliBQ commented Oct 9, 2025

Copy link
Copy Markdown
Collaborator

Rationale for this change

Support for getting and setting statement attributes in ODBC is added.

What changes are included in this PR?

  • Implementation of SQLGetStmtAttr and SQLSetStmtAttr to get and set statement attributes.
  • Tests

Are these changes tested?

Tested on local MSVC

Are there any user-facing changes?

No

@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

@lidavidm@kou Please review this draft ODBC API PR, thanks. The testing folder structure will be in a separate PR

@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #47710has been automatically assigned in GitHub to PR creator.

@lidavidmlidavidm left a comment

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 general comments as the other PRs.

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting review Awaiting review labels Oct 10, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from 42f4f14 to 1e025c7CompareOctober 21, 2025 22:30
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 21, 2025
@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

we worked on:

  • replace EXPECT_ with ASSERT_ where applicable
  • use platform.h
  • still in-progress on subclassing test fixture and moving connect/disconnect to setup/teardown

@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from 1e025c7 to be51a05CompareOctober 22, 2025 23:07
@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

Rebased on top of master branch. Wrapped up subclassing test fixture and moving connect/disconnect to setup/teardown.

Comment on lines +39 to +52
namespace {
// Helper Functions

// Validate SQLULEN return value
void ValidateGetStmtAttr(SQLHSTMT statement, SQLINTEGER attribute,
SQLULEN expected_value) {
SQLULEN value = 0;
SQLINTEGER string_length = 0;

ASSERT_EQ(SQL_SUCCESS,
SQLGetStmtAttr(statement, attribute, &value, sizeof(value), &string_length));

EXPECT_EQ(expected_value, value);
}

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.

Instead of having variants for each type of comparison (equal, greater than, etc.) wouldn't it be better to just have a getter for each type, and keep the assertion in the tests themselves? (It could throw on failure, for instance, to keep the signature simple.)

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.

Yea that makes sense. I added getters, please let me know what you think

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 23, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from be51a05 to aebac29CompareOctober 28, 2025 21:55
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 28, 2025

@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.

worked on comment

Comment on lines +39 to +52
namespace {
// Helper Functions

// Validate SQLULEN return value
void ValidateGetStmtAttr(SQLHSTMT statement, SQLINTEGER attribute,
SQLULEN expected_value) {
SQLULEN value = 0;
SQLINTEGER string_length = 0;

ASSERT_EQ(SQL_SUCCESS,
SQLGetStmtAttr(statement, attribute, &value, sizeof(value), &string_length));

EXPECT_EQ(expected_value, value);
}

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.

Yea that makes sense. I added getters, please let me know what you think

@github-actionsgithub-actionsBot added awaiting merge Awaiting merge and removed awaiting change review Awaiting change review labels Oct 31, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from 0675c21 to bafe934CompareNovember 14, 2025 23:06
@alinaliBQ
alinaliBQ marked this pull request as ready for review November 14, 2025 23:06
alinaliBQand others added 7 commits November 20, 2025 13:47
Co-Authored-By: rscales <robscales@icloud.com>
Add tests for setting and getting statement attributes
Co-Authored-By: rscales <robscales@icloud.com>
- use `platform.h`
- move `connect/disconnect` to `setup/teardown`
- in-progress on subclassing test fixture
Co-authored-by: justing-bq <justin.gossett@improving.com>
Co-authored-by: alinalibq <alina.li@improving.com>
- remove `using List = std::list<T>;`
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from bafe934 to 501eab7CompareNovember 20, 2025 22:04
@lidavidm
lidavidm merged commit 430d4b1 into apache:mainNov 28, 2025
43 of 46 checks passed
@lidavidmlidavidm removed the awaiting merge Awaiting merge label Nov 28, 2025
@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 4 benchmarking runs that have been run so far on merge-commit 430d4b1.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details. It also includes information about 3 possible false positives 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
…pache#47773)
### Rationale for this change
Support for getting and setting statement attributes in ODBC is added. ### What changes are included in this PR?
- Implementation of `SQLGetStmtAttr` and `SQLSetStmtAttr` to get and set statement attributes. - Tests
### Are these changes tested?
Tested on local MSVC
### Are there any user-facing changes?
No
* GitHub Issue: apache#47710
Lead-authored-by: Alina (Xi) Li <alina.li@improving.com>
Co-authored-by: alinalibq <alina.li@improving.com>
Co-authored-by: justing-bq <justin.gossett@improving.com>
Signed-off-by: David Li <li.davidm96@gmail.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.

2 participants

@alinaliBQ@lidavidm
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e 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-47710: [C++][FlightRPC] Statement attribute Support in ODBC - #47773

Merged
lidavidm merged 7 commits into
apache:mainfrom
Bit-Quill:gh-47710-sql-stmt-attr
Nov 28, 2025
Merged

GH-47710: [C++][FlightRPC] Statement attribute Support in ODBC#47773
lidavidm merged 7 commits into
apache:mainfrom
Bit-Quill:gh-47710-sql-stmt-attr

Conversation

@alinaliBQ

@alinaliBQalinaliBQ commented Oct 9, 2025

Copy link
Copy Markdown
Collaborator

Rationale for this change

Support for getting and setting statement attributes in ODBC is added.

What changes are included in this PR?

  • Implementation of SQLGetStmtAttr and SQLSetStmtAttr to get and set statement attributes.
  • Tests

Are these changes tested?

Tested on local MSVC

Are there any user-facing changes?

No

@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

@lidavidm@kou Please review this draft ODBC API PR, thanks. The testing folder structure will be in a separate PR

@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #47710has been automatically assigned in GitHub to PR creator.

@lidavidmlidavidm left a comment

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 general comments as the other PRs.

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting review Awaiting review labels Oct 10, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from 42f4f14 to 1e025c7CompareOctober 21, 2025 22:30
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 21, 2025
@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

we worked on:

  • replace EXPECT_ with ASSERT_ where applicable
  • use platform.h
  • still in-progress on subclassing test fixture and moving connect/disconnect to setup/teardown

@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from 1e025c7 to be51a05CompareOctober 22, 2025 23:07
@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

Rebased on top of master branch. Wrapped up subclassing test fixture and moving connect/disconnect to setup/teardown.

Comment on lines +39 to +52
namespace {
// Helper Functions

// Validate SQLULEN return value
void ValidateGetStmtAttr(SQLHSTMT statement, SQLINTEGER attribute,
SQLULEN expected_value) {
SQLULEN value = 0;
SQLINTEGER string_length = 0;

ASSERT_EQ(SQL_SUCCESS,
SQLGetStmtAttr(statement, attribute, &value, sizeof(value), &string_length));

EXPECT_EQ(expected_value, value);
}

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.

Instead of having variants for each type of comparison (equal, greater than, etc.) wouldn't it be better to just have a getter for each type, and keep the assertion in the tests themselves? (It could throw on failure, for instance, to keep the signature simple.)

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.

Yea that makes sense. I added getters, please let me know what you think

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 23, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from be51a05 to aebac29CompareOctober 28, 2025 21:55
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 28, 2025

@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.

worked on comment

Comment on lines +39 to +52
namespace {
// Helper Functions

// Validate SQLULEN return value
void ValidateGetStmtAttr(SQLHSTMT statement, SQLINTEGER attribute,
SQLULEN expected_value) {
SQLULEN value = 0;
SQLINTEGER string_length = 0;

ASSERT_EQ(SQL_SUCCESS,
SQLGetStmtAttr(statement, attribute, &value, sizeof(value), &string_length));

EXPECT_EQ(expected_value, value);
}

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.

Yea that makes sense. I added getters, please let me know what you think

@github-actionsgithub-actionsBot added awaiting merge Awaiting merge and removed awaiting change review Awaiting change review labels Oct 31, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from 0675c21 to bafe934CompareNovember 14, 2025 23:06
@alinaliBQ
alinaliBQ marked this pull request as ready for review November 14, 2025 23:06
alinaliBQand others added 7 commits November 20, 2025 13:47
Co-Authored-By: rscales <robscales@icloud.com>
Add tests for setting and getting statement attributes
Co-Authored-By: rscales <robscales@icloud.com>
- use `platform.h`
- move `connect/disconnect` to `setup/teardown`
- in-progress on subclassing test fixture
Co-authored-by: justing-bq <justin.gossett@improving.com>
Co-authored-by: alinalibq <alina.li@improving.com>
- remove `using List = std::list<T>;`
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from bafe934 to 501eab7CompareNovember 20, 2025 22:04
@lidavidm
lidavidm merged commit 430d4b1 into apache:mainNov 28, 2025
43 of 46 checks passed
@lidavidmlidavidm removed the awaiting merge Awaiting merge label Nov 28, 2025
@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 4 benchmarking runs that have been run so far on merge-commit 430d4b1.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details. It also includes information about 3 possible false positives 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
…pache#47773)
### Rationale for this change
Support for getting and setting statement attributes in ODBC is added. ### What changes are included in this PR?
- Implementation of `SQLGetStmtAttr` and `SQLSetStmtAttr` to get and set statement attributes. - Tests
### Are these changes tested?
Tested on local MSVC
### Are there any user-facing changes?
No
* GitHub Issue: apache#47710
Lead-authored-by: Alina (Xi) Li <alina.li@improving.com>
Co-authored-by: alinalibq <alina.li@improving.com>
Co-authored-by: justing-bq <justin.gossett@improving.com>
Signed-off-by: David Li <li.davidm96@gmail.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.

2 participants

@alinaliBQ@lidavidm
, '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-47710: [C++][FlightRPC] Statement attribute Support in ODBC - #47773

Merged
lidavidm merged 7 commits into
apache:mainfrom
Bit-Quill:gh-47710-sql-stmt-attr
Nov 28, 2025
Merged

GH-47710: [C++][FlightRPC] Statement attribute Support in ODBC#47773
lidavidm merged 7 commits into
apache:mainfrom
Bit-Quill:gh-47710-sql-stmt-attr

Conversation

@alinaliBQ

@alinaliBQalinaliBQ commented Oct 9, 2025

Copy link
Copy Markdown
Collaborator

Rationale for this change

Support for getting and setting statement attributes in ODBC is added.

What changes are included in this PR?

  • Implementation of SQLGetStmtAttr and SQLSetStmtAttr to get and set statement attributes.
  • Tests

Are these changes tested?

Tested on local MSVC

Are there any user-facing changes?

No

@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

@lidavidm@kou Please review this draft ODBC API PR, thanks. The testing folder structure will be in a separate PR

@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #47710has been automatically assigned in GitHub to PR creator.

@lidavidmlidavidm left a comment

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 general comments as the other PRs.

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting review Awaiting review labels Oct 10, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from 42f4f14 to 1e025c7CompareOctober 21, 2025 22:30
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 21, 2025
@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

we worked on:

  • replace EXPECT_ with ASSERT_ where applicable
  • use platform.h
  • still in-progress on subclassing test fixture and moving connect/disconnect to setup/teardown

@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from 1e025c7 to be51a05CompareOctober 22, 2025 23:07
@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

Rebased on top of master branch. Wrapped up subclassing test fixture and moving connect/disconnect to setup/teardown.

Comment on lines +39 to +52
namespace {
// Helper Functions

// Validate SQLULEN return value
void ValidateGetStmtAttr(SQLHSTMT statement, SQLINTEGER attribute,
SQLULEN expected_value) {
SQLULEN value = 0;
SQLINTEGER string_length = 0;

ASSERT_EQ(SQL_SUCCESS,
SQLGetStmtAttr(statement, attribute, &value, sizeof(value), &string_length));

EXPECT_EQ(expected_value, value);
}

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.

Instead of having variants for each type of comparison (equal, greater than, etc.) wouldn't it be better to just have a getter for each type, and keep the assertion in the tests themselves? (It could throw on failure, for instance, to keep the signature simple.)

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.

Yea that makes sense. I added getters, please let me know what you think

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 23, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from be51a05 to aebac29CompareOctober 28, 2025 21:55
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 28, 2025

@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.

worked on comment

Comment on lines +39 to +52
namespace {
// Helper Functions

// Validate SQLULEN return value
void ValidateGetStmtAttr(SQLHSTMT statement, SQLINTEGER attribute,
SQLULEN expected_value) {
SQLULEN value = 0;
SQLINTEGER string_length = 0;

ASSERT_EQ(SQL_SUCCESS,
SQLGetStmtAttr(statement, attribute, &value, sizeof(value), &string_length));

EXPECT_EQ(expected_value, value);
}

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.

Yea that makes sense. I added getters, please let me know what you think

@github-actionsgithub-actionsBot added awaiting merge Awaiting merge and removed awaiting change review Awaiting change review labels Oct 31, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from 0675c21 to bafe934CompareNovember 14, 2025 23:06
@alinaliBQ
alinaliBQ marked this pull request as ready for review November 14, 2025 23:06
alinaliBQand others added 7 commits November 20, 2025 13:47
Co-Authored-By: rscales <robscales@icloud.com>
Add tests for setting and getting statement attributes
Co-Authored-By: rscales <robscales@icloud.com>
- use `platform.h`
- move `connect/disconnect` to `setup/teardown`
- in-progress on subclassing test fixture
Co-authored-by: justing-bq <justin.gossett@improving.com>
Co-authored-by: alinalibq <alina.li@improving.com>
- remove `using List = std::list<T>;`
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from bafe934 to 501eab7CompareNovember 20, 2025 22:04
@lidavidm
lidavidm merged commit 430d4b1 into apache:mainNov 28, 2025
43 of 46 checks passed
@lidavidmlidavidm removed the awaiting merge Awaiting merge label Nov 28, 2025
@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 4 benchmarking runs that have been run so far on merge-commit 430d4b1.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details. It also includes information about 3 possible false positives 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
…pache#47773)
### Rationale for this change
Support for getting and setting statement attributes in ODBC is added. ### What changes are included in this PR?
- Implementation of `SQLGetStmtAttr` and `SQLSetStmtAttr` to get and set statement attributes. - Tests
### Are these changes tested?
Tested on local MSVC
### Are there any user-facing changes?
No
* GitHub Issue: apache#47710
Lead-authored-by: Alina (Xi) Li <alina.li@improving.com>
Co-authored-by: alinalibq <alina.li@improving.com>
Co-authored-by: justing-bq <justin.gossett@improving.com>
Signed-off-by: David Li <li.davidm96@gmail.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.

2 participants

@alinaliBQ@lidavidm
, '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 \u003e 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-47710: [C++][FlightRPC] Statement attribute Support in ODBC - #47773

Merged
lidavidm merged 7 commits into
apache:mainfrom
Bit-Quill:gh-47710-sql-stmt-attr
Nov 28, 2025
Merged

GH-47710: [C++][FlightRPC] Statement attribute Support in ODBC#47773
lidavidm merged 7 commits into
apache:mainfrom
Bit-Quill:gh-47710-sql-stmt-attr

Conversation

@alinaliBQ

@alinaliBQalinaliBQ commented Oct 9, 2025

Copy link
Copy Markdown
Collaborator

Rationale for this change

Support for getting and setting statement attributes in ODBC is added.

What changes are included in this PR?

  • Implementation of SQLGetStmtAttr and SQLSetStmtAttr to get and set statement attributes.
  • Tests

Are these changes tested?

Tested on local MSVC

Are there any user-facing changes?

No

@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

@lidavidm@kou Please review this draft ODBC API PR, thanks. The testing folder structure will be in a separate PR

@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #47710has been automatically assigned in GitHub to PR creator.

@lidavidmlidavidm left a comment

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 general comments as the other PRs.

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting review Awaiting review labels Oct 10, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from 42f4f14 to 1e025c7CompareOctober 21, 2025 22:30
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 21, 2025
@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

we worked on:

  • replace EXPECT_ with ASSERT_ where applicable
  • use platform.h
  • still in-progress on subclassing test fixture and moving connect/disconnect to setup/teardown

@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from 1e025c7 to be51a05CompareOctober 22, 2025 23:07
@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

Rebased on top of master branch. Wrapped up subclassing test fixture and moving connect/disconnect to setup/teardown.

Comment on lines +39 to +52
namespace {
// Helper Functions

// Validate SQLULEN return value
void ValidateGetStmtAttr(SQLHSTMT statement, SQLINTEGER attribute,
SQLULEN expected_value) {
SQLULEN value = 0;
SQLINTEGER string_length = 0;

ASSERT_EQ(SQL_SUCCESS,
SQLGetStmtAttr(statement, attribute, &value, sizeof(value), &string_length));

EXPECT_EQ(expected_value, value);
}

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.

Instead of having variants for each type of comparison (equal, greater than, etc.) wouldn't it be better to just have a getter for each type, and keep the assertion in the tests themselves? (It could throw on failure, for instance, to keep the signature simple.)

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.

Yea that makes sense. I added getters, please let me know what you think

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 23, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from be51a05 to aebac29CompareOctober 28, 2025 21:55
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 28, 2025

@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.

worked on comment

Comment on lines +39 to +52
namespace {
// Helper Functions

// Validate SQLULEN return value
void ValidateGetStmtAttr(SQLHSTMT statement, SQLINTEGER attribute,
SQLULEN expected_value) {
SQLULEN value = 0;
SQLINTEGER string_length = 0;

ASSERT_EQ(SQL_SUCCESS,
SQLGetStmtAttr(statement, attribute, &value, sizeof(value), &string_length));

EXPECT_EQ(expected_value, value);
}

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.

Yea that makes sense. I added getters, please let me know what you think

@github-actionsgithub-actionsBot added awaiting merge Awaiting merge and removed awaiting change review Awaiting change review labels Oct 31, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from 0675c21 to bafe934CompareNovember 14, 2025 23:06
@alinaliBQ
alinaliBQ marked this pull request as ready for review November 14, 2025 23:06
alinaliBQand others added 7 commits November 20, 2025 13:47
Co-Authored-By: rscales <robscales@icloud.com>
Add tests for setting and getting statement attributes
Co-Authored-By: rscales <robscales@icloud.com>
- use `platform.h`
- move `connect/disconnect` to `setup/teardown`
- in-progress on subclassing test fixture
Co-authored-by: justing-bq <justin.gossett@improving.com>
Co-authored-by: alinalibq <alina.li@improving.com>
- remove `using List = std::list<T>;`
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from bafe934 to 501eab7CompareNovember 20, 2025 22:04
@lidavidm
lidavidm merged commit 430d4b1 into apache:mainNov 28, 2025
43 of 46 checks passed
@lidavidmlidavidm removed the awaiting merge Awaiting merge label Nov 28, 2025
@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 4 benchmarking runs that have been run so far on merge-commit 430d4b1.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details. It also includes information about 3 possible false positives 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
…pache#47773)
### Rationale for this change
Support for getting and setting statement attributes in ODBC is added. ### What changes are included in this PR?
- Implementation of `SQLGetStmtAttr` and `SQLSetStmtAttr` to get and set statement attributes. - Tests
### Are these changes tested?
Tested on local MSVC
### Are there any user-facing changes?
No
* GitHub Issue: apache#47710
Lead-authored-by: Alina (Xi) Li <alina.li@improving.com>
Co-authored-by: alinalibq <alina.li@improving.com>
Co-authored-by: justing-bq <justin.gossett@improving.com>
Signed-off-by: David Li <li.davidm96@gmail.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.

2 participants

@alinaliBQ@lidavidm
, '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-47710: [C++][FlightRPC] Statement attribute Support in ODBC - #47773

Merged
lidavidm merged 7 commits into
apache:mainfrom
Bit-Quill:gh-47710-sql-stmt-attr
Nov 28, 2025
Merged

GH-47710: [C++][FlightRPC] Statement attribute Support in ODBC#47773
lidavidm merged 7 commits into
apache:mainfrom
Bit-Quill:gh-47710-sql-stmt-attr

Conversation

@alinaliBQ

@alinaliBQalinaliBQ commented Oct 9, 2025

Copy link
Copy Markdown
Collaborator

Rationale for this change

Support for getting and setting statement attributes in ODBC is added.

What changes are included in this PR?

  • Implementation of SQLGetStmtAttr and SQLSetStmtAttr to get and set statement attributes.
  • Tests

Are these changes tested?

Tested on local MSVC

Are there any user-facing changes?

No

@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

@lidavidm@kou Please review this draft ODBC API PR, thanks. The testing folder structure will be in a separate PR

@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #47710has been automatically assigned in GitHub to PR creator.

@lidavidmlidavidm left a comment

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 general comments as the other PRs.

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting review Awaiting review labels Oct 10, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from 42f4f14 to 1e025c7CompareOctober 21, 2025 22:30
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 21, 2025
@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

we worked on:

  • replace EXPECT_ with ASSERT_ where applicable
  • use platform.h
  • still in-progress on subclassing test fixture and moving connect/disconnect to setup/teardown

@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from 1e025c7 to be51a05CompareOctober 22, 2025 23:07
@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

Rebased on top of master branch. Wrapped up subclassing test fixture and moving connect/disconnect to setup/teardown.

Comment on lines +39 to +52
namespace {
// Helper Functions

// Validate SQLULEN return value
void ValidateGetStmtAttr(SQLHSTMT statement, SQLINTEGER attribute,
SQLULEN expected_value) {
SQLULEN value = 0;
SQLINTEGER string_length = 0;

ASSERT_EQ(SQL_SUCCESS,
SQLGetStmtAttr(statement, attribute, &value, sizeof(value), &string_length));

EXPECT_EQ(expected_value, value);
}

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.

Instead of having variants for each type of comparison (equal, greater than, etc.) wouldn't it be better to just have a getter for each type, and keep the assertion in the tests themselves? (It could throw on failure, for instance, to keep the signature simple.)

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.

Yea that makes sense. I added getters, please let me know what you think

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 23, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from be51a05 to aebac29CompareOctober 28, 2025 21:55
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 28, 2025

@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.

worked on comment

Comment on lines +39 to +52
namespace {
// Helper Functions

// Validate SQLULEN return value
void ValidateGetStmtAttr(SQLHSTMT statement, SQLINTEGER attribute,
SQLULEN expected_value) {
SQLULEN value = 0;
SQLINTEGER string_length = 0;

ASSERT_EQ(SQL_SUCCESS,
SQLGetStmtAttr(statement, attribute, &value, sizeof(value), &string_length));

EXPECT_EQ(expected_value, value);
}

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.

Yea that makes sense. I added getters, please let me know what you think

@github-actionsgithub-actionsBot added awaiting merge Awaiting merge and removed awaiting change review Awaiting change review labels Oct 31, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from 0675c21 to bafe934CompareNovember 14, 2025 23:06
@alinaliBQ
alinaliBQ marked this pull request as ready for review November 14, 2025 23:06
alinaliBQand others added 7 commits November 20, 2025 13:47
Co-Authored-By: rscales <robscales@icloud.com>
Add tests for setting and getting statement attributes
Co-Authored-By: rscales <robscales@icloud.com>
- use `platform.h`
- move `connect/disconnect` to `setup/teardown`
- in-progress on subclassing test fixture
Co-authored-by: justing-bq <justin.gossett@improving.com>
Co-authored-by: alinalibq <alina.li@improving.com>
- remove `using List = std::list<T>;`
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from bafe934 to 501eab7CompareNovember 20, 2025 22:04
@lidavidm
lidavidm merged commit 430d4b1 into apache:mainNov 28, 2025
43 of 46 checks passed
@lidavidmlidavidm removed the awaiting merge Awaiting merge label Nov 28, 2025
@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 4 benchmarking runs that have been run so far on merge-commit 430d4b1.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details. It also includes information about 3 possible false positives 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
…pache#47773)
### Rationale for this change
Support for getting and setting statement attributes in ODBC is added. ### What changes are included in this PR?
- Implementation of `SQLGetStmtAttr` and `SQLSetStmtAttr` to get and set statement attributes. - Tests
### Are these changes tested?
Tested on local MSVC
### Are there any user-facing changes?
No
* GitHub Issue: apache#47710
Lead-authored-by: Alina (Xi) Li <alina.li@improving.com>
Co-authored-by: alinalibq <alina.li@improving.com>
Co-authored-by: justing-bq <justin.gossett@improving.com>
Signed-off-by: David Li <li.davidm96@gmail.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.

2 participants

@alinaliBQ@lidavidm
, '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-47710: [C++][FlightRPC] Statement attribute Support in ODBC - #47773

Merged
lidavidm merged 7 commits into
apache:mainfrom
Bit-Quill:gh-47710-sql-stmt-attr
Nov 28, 2025
Merged

GH-47710: [C++][FlightRPC] Statement attribute Support in ODBC#47773
lidavidm merged 7 commits into
apache:mainfrom
Bit-Quill:gh-47710-sql-stmt-attr

Conversation

@alinaliBQ

@alinaliBQalinaliBQ commented Oct 9, 2025

Copy link
Copy Markdown
Collaborator

Rationale for this change

Support for getting and setting statement attributes in ODBC is added.

What changes are included in this PR?

  • Implementation of SQLGetStmtAttr and SQLSetStmtAttr to get and set statement attributes.
  • Tests

Are these changes tested?

Tested on local MSVC

Are there any user-facing changes?

No

@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

@lidavidm@kou Please review this draft ODBC API PR, thanks. The testing folder structure will be in a separate PR

@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #47710has been automatically assigned in GitHub to PR creator.

@lidavidmlidavidm left a comment

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 general comments as the other PRs.

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting review Awaiting review labels Oct 10, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from 42f4f14 to 1e025c7CompareOctober 21, 2025 22:30
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 21, 2025
@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

we worked on:

  • replace EXPECT_ with ASSERT_ where applicable
  • use platform.h
  • still in-progress on subclassing test fixture and moving connect/disconnect to setup/teardown

@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from 1e025c7 to be51a05CompareOctober 22, 2025 23:07
@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

Rebased on top of master branch. Wrapped up subclassing test fixture and moving connect/disconnect to setup/teardown.

Comment on lines +39 to +52
namespace {
// Helper Functions

// Validate SQLULEN return value
void ValidateGetStmtAttr(SQLHSTMT statement, SQLINTEGER attribute,
SQLULEN expected_value) {
SQLULEN value = 0;
SQLINTEGER string_length = 0;

ASSERT_EQ(SQL_SUCCESS,
SQLGetStmtAttr(statement, attribute, &value, sizeof(value), &string_length));

EXPECT_EQ(expected_value, value);
}

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.

Instead of having variants for each type of comparison (equal, greater than, etc.) wouldn't it be better to just have a getter for each type, and keep the assertion in the tests themselves? (It could throw on failure, for instance, to keep the signature simple.)

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.

Yea that makes sense. I added getters, please let me know what you think

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 23, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from be51a05 to aebac29CompareOctober 28, 2025 21:55
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 28, 2025

@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.

worked on comment

Comment on lines +39 to +52
namespace {
// Helper Functions

// Validate SQLULEN return value
void ValidateGetStmtAttr(SQLHSTMT statement, SQLINTEGER attribute,
SQLULEN expected_value) {
SQLULEN value = 0;
SQLINTEGER string_length = 0;

ASSERT_EQ(SQL_SUCCESS,
SQLGetStmtAttr(statement, attribute, &value, sizeof(value), &string_length));

EXPECT_EQ(expected_value, value);
}

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.

Yea that makes sense. I added getters, please let me know what you think

@github-actionsgithub-actionsBot added awaiting merge Awaiting merge and removed awaiting change review Awaiting change review labels Oct 31, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from 0675c21 to bafe934CompareNovember 14, 2025 23:06
@alinaliBQ
alinaliBQ marked this pull request as ready for review November 14, 2025 23:06
alinaliBQand others added 7 commits November 20, 2025 13:47
Co-Authored-By: rscales <robscales@icloud.com>
Add tests for setting and getting statement attributes
Co-Authored-By: rscales <robscales@icloud.com>
- use `platform.h`
- move `connect/disconnect` to `setup/teardown`
- in-progress on subclassing test fixture
Co-authored-by: justing-bq <justin.gossett@improving.com>
Co-authored-by: alinalibq <alina.li@improving.com>
- remove `using List = std::list<T>;`
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from bafe934 to 501eab7CompareNovember 20, 2025 22:04
@lidavidm
lidavidm merged commit 430d4b1 into apache:mainNov 28, 2025
43 of 46 checks passed
@lidavidmlidavidm removed the awaiting merge Awaiting merge label Nov 28, 2025
@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 4 benchmarking runs that have been run so far on merge-commit 430d4b1.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details. It also includes information about 3 possible false positives 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
…pache#47773)
### Rationale for this change
Support for getting and setting statement attributes in ODBC is added. ### What changes are included in this PR?
- Implementation of `SQLGetStmtAttr` and `SQLSetStmtAttr` to get and set statement attributes. - Tests
### Are these changes tested?
Tested on local MSVC
### Are there any user-facing changes?
No
* GitHub Issue: apache#47710
Lead-authored-by: Alina (Xi) Li <alina.li@improving.com>
Co-authored-by: alinalibq <alina.li@improving.com>
Co-authored-by: justing-bq <justin.gossett@improving.com>
Signed-off-by: David Li <li.davidm96@gmail.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.

2 participants

@alinaliBQ@lidavidm
, '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-47710: [C++][FlightRPC] Statement attribute Support in ODBC - #47773

Merged
lidavidm merged 7 commits into
apache:mainfrom
Bit-Quill:gh-47710-sql-stmt-attr
Nov 28, 2025
Merged

GH-47710: [C++][FlightRPC] Statement attribute Support in ODBC#47773
lidavidm merged 7 commits into
apache:mainfrom
Bit-Quill:gh-47710-sql-stmt-attr

Conversation

@alinaliBQ

@alinaliBQalinaliBQ commented Oct 9, 2025

Copy link
Copy Markdown
Collaborator

Rationale for this change

Support for getting and setting statement attributes in ODBC is added.

What changes are included in this PR?

  • Implementation of SQLGetStmtAttr and SQLSetStmtAttr to get and set statement attributes.
  • Tests

Are these changes tested?

Tested on local MSVC

Are there any user-facing changes?

No

@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

@lidavidm@kou Please review this draft ODBC API PR, thanks. The testing folder structure will be in a separate PR

@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #47710has been automatically assigned in GitHub to PR creator.

@lidavidmlidavidm left a comment

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 general comments as the other PRs.

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting review Awaiting review labels Oct 10, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from 42f4f14 to 1e025c7CompareOctober 21, 2025 22:30
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 21, 2025
@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

we worked on:

  • replace EXPECT_ with ASSERT_ where applicable
  • use platform.h
  • still in-progress on subclassing test fixture and moving connect/disconnect to setup/teardown

@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from 1e025c7 to be51a05CompareOctober 22, 2025 23:07
@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

Rebased on top of master branch. Wrapped up subclassing test fixture and moving connect/disconnect to setup/teardown.

Comment on lines +39 to +52
namespace {
// Helper Functions

// Validate SQLULEN return value
void ValidateGetStmtAttr(SQLHSTMT statement, SQLINTEGER attribute,
SQLULEN expected_value) {
SQLULEN value = 0;
SQLINTEGER string_length = 0;

ASSERT_EQ(SQL_SUCCESS,
SQLGetStmtAttr(statement, attribute, &value, sizeof(value), &string_length));

EXPECT_EQ(expected_value, value);
}

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.

Instead of having variants for each type of comparison (equal, greater than, etc.) wouldn't it be better to just have a getter for each type, and keep the assertion in the tests themselves? (It could throw on failure, for instance, to keep the signature simple.)

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.

Yea that makes sense. I added getters, please let me know what you think

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 23, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from be51a05 to aebac29CompareOctober 28, 2025 21:55
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 28, 2025

@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.

worked on comment

Comment on lines +39 to +52
namespace {
// Helper Functions

// Validate SQLULEN return value
void ValidateGetStmtAttr(SQLHSTMT statement, SQLINTEGER attribute,
SQLULEN expected_value) {
SQLULEN value = 0;
SQLINTEGER string_length = 0;

ASSERT_EQ(SQL_SUCCESS,
SQLGetStmtAttr(statement, attribute, &value, sizeof(value), &string_length));

EXPECT_EQ(expected_value, value);
}

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.

Yea that makes sense. I added getters, please let me know what you think

@github-actionsgithub-actionsBot added awaiting merge Awaiting merge and removed awaiting change review Awaiting change review labels Oct 31, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from 0675c21 to bafe934CompareNovember 14, 2025 23:06
@alinaliBQ
alinaliBQ marked this pull request as ready for review November 14, 2025 23:06
alinaliBQand others added 7 commits November 20, 2025 13:47
Co-Authored-By: rscales <robscales@icloud.com>
Add tests for setting and getting statement attributes
Co-Authored-By: rscales <robscales@icloud.com>
- use `platform.h`
- move `connect/disconnect` to `setup/teardown`
- in-progress on subclassing test fixture
Co-authored-by: justing-bq <justin.gossett@improving.com>
Co-authored-by: alinalibq <alina.li@improving.com>
- remove `using List = std::list<T>;`
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from bafe934 to 501eab7CompareNovember 20, 2025 22:04
@lidavidm
lidavidm merged commit 430d4b1 into apache:mainNov 28, 2025
43 of 46 checks passed
@lidavidmlidavidm removed the awaiting merge Awaiting merge label Nov 28, 2025
@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 4 benchmarking runs that have been run so far on merge-commit 430d4b1.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details. It also includes information about 3 possible false positives 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
…pache#47773)
### Rationale for this change
Support for getting and setting statement attributes in ODBC is added. ### What changes are included in this PR?
- Implementation of `SQLGetStmtAttr` and `SQLSetStmtAttr` to get and set statement attributes. - Tests
### Are these changes tested?
Tested on local MSVC
### Are there any user-facing changes?
No
* GitHub Issue: apache#47710
Lead-authored-by: Alina (Xi) Li <alina.li@improving.com>
Co-authored-by: alinalibq <alina.li@improving.com>
Co-authored-by: justing-bq <justin.gossett@improving.com>
Signed-off-by: David Li <li.davidm96@gmail.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.

2 participants

@alinaliBQ@lidavidm
, '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-47710: [C++][FlightRPC] Statement attribute Support in ODBC - #47773

Merged
lidavidm merged 7 commits into
apache:mainfrom
Bit-Quill:gh-47710-sql-stmt-attr
Nov 28, 2025
Merged

GH-47710: [C++][FlightRPC] Statement attribute Support in ODBC#47773
lidavidm merged 7 commits into
apache:mainfrom
Bit-Quill:gh-47710-sql-stmt-attr

Conversation

@alinaliBQ

@alinaliBQalinaliBQ commented Oct 9, 2025

Copy link
Copy Markdown
Collaborator

Rationale for this change

Support for getting and setting statement attributes in ODBC is added.

What changes are included in this PR?

  • Implementation of SQLGetStmtAttr and SQLSetStmtAttr to get and set statement attributes.
  • Tests

Are these changes tested?

Tested on local MSVC

Are there any user-facing changes?

No

@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

@lidavidm@kou Please review this draft ODBC API PR, thanks. The testing folder structure will be in a separate PR

@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #47710has been automatically assigned in GitHub to PR creator.

@lidavidmlidavidm left a comment

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 general comments as the other PRs.

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting review Awaiting review labels Oct 10, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from 42f4f14 to 1e025c7CompareOctober 21, 2025 22:30
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 21, 2025
@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

we worked on:

  • replace EXPECT_ with ASSERT_ where applicable
  • use platform.h
  • still in-progress on subclassing test fixture and moving connect/disconnect to setup/teardown

@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from 1e025c7 to be51a05CompareOctober 22, 2025 23:07
@alinaliBQ

Copy link
Copy Markdown
CollaboratorAuthor

Rebased on top of master branch. Wrapped up subclassing test fixture and moving connect/disconnect to setup/teardown.

Comment on lines +39 to +52
namespace {
// Helper Functions

// Validate SQLULEN return value
void ValidateGetStmtAttr(SQLHSTMT statement, SQLINTEGER attribute,
SQLULEN expected_value) {
SQLULEN value = 0;
SQLINTEGER string_length = 0;

ASSERT_EQ(SQL_SUCCESS,
SQLGetStmtAttr(statement, attribute, &value, sizeof(value), &string_length));

EXPECT_EQ(expected_value, value);
}

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.

Instead of having variants for each type of comparison (equal, greater than, etc.) wouldn't it be better to just have a getter for each type, and keep the assertion in the tests themselves? (It could throw on failure, for instance, to keep the signature simple.)

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.

Yea that makes sense. I added getters, please let me know what you think

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 23, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from be51a05 to aebac29CompareOctober 28, 2025 21:55
@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 28, 2025

@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.

worked on comment

Comment on lines +39 to +52
namespace {
// Helper Functions

// Validate SQLULEN return value
void ValidateGetStmtAttr(SQLHSTMT statement, SQLINTEGER attribute,
SQLULEN expected_value) {
SQLULEN value = 0;
SQLINTEGER string_length = 0;

ASSERT_EQ(SQL_SUCCESS,
SQLGetStmtAttr(statement, attribute, &value, sizeof(value), &string_length));

EXPECT_EQ(expected_value, value);
}

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.

Yea that makes sense. I added getters, please let me know what you think

@github-actionsgithub-actionsBot added awaiting merge Awaiting merge and removed awaiting change review Awaiting change review labels Oct 31, 2025
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from 0675c21 to bafe934CompareNovember 14, 2025 23:06
@alinaliBQ
alinaliBQ marked this pull request as ready for review November 14, 2025 23:06
alinaliBQand others added 7 commits November 20, 2025 13:47
Co-Authored-By: rscales <robscales@icloud.com>
Add tests for setting and getting statement attributes
Co-Authored-By: rscales <robscales@icloud.com>
- use `platform.h`
- move `connect/disconnect` to `setup/teardown`
- in-progress on subclassing test fixture
Co-authored-by: justing-bq <justin.gossett@improving.com>
Co-authored-by: alinalibq <alina.li@improving.com>
- remove `using List = std::list<T>;`
@alinaliBQ
alinaliBQforce-pushed the gh-47710-sql-stmt-attr branch from bafe934 to 501eab7CompareNovember 20, 2025 22:04
@lidavidm
lidavidm merged commit 430d4b1 into apache:mainNov 28, 2025
43 of 46 checks passed
@lidavidmlidavidm removed the awaiting merge Awaiting merge label Nov 28, 2025
@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 4 benchmarking runs that have been run so far on merge-commit 430d4b1.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details. It also includes information about 3 possible false positives 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
…pache#47773)
### Rationale for this change
Support for getting and setting statement attributes in ODBC is added. ### What changes are included in this PR?
- Implementation of `SQLGetStmtAttr` and `SQLSetStmtAttr` to get and set statement attributes. - Tests
### Are these changes tested?
Tested on local MSVC
### Are there any user-facing changes?
No
* GitHub Issue: apache#47710
Lead-authored-by: Alina (Xi) Li <alina.li@improving.com>
Co-authored-by: alinalibq <alina.li@improving.com>
Co-authored-by: justing-bq <justin.gossett@improving.com>
Signed-off-by: David Li <li.davidm96@gmail.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.

2 participants

@alinaliBQ@lidavidm