Fix bug that causes Merge to fail with empty DataFrames - #7573

Merged
tarekgh merged 2 commits into
dotnet:mainfrom
sevenzees:main
Feb 5, 2026
Merged

Fix bug that causes Merge to fail with empty DataFrames#7573
tarekgh merged 2 commits into
dotnet:mainfrom
sevenzees:main

Conversation

@sevenzees

Copy link
Copy Markdown
Contributor

Fixes#7572

When using the DataFrame Merge method, if one of the DataFrames is empty (has no rows), you will get a System.ArgumentOutOfRangeException. This was caused by the Clone method trying to access the first element of the empty Buffers array. It is easily fixed by returning an empty container of the appropriate length when Buffers.Count == 0.

@codecov

codecovBot commented Jan 28, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 69.07%. Comparing base (25b977e) to head (17caca4).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #7573 +/- ##
==========================================
+ Coverage 69.02% 69.07% +0.04% 
==========================================
Files 1482 1483 +1 Lines 274099 274362 +263 Branches 28266 28270 +4 ==========================================
+ Hits 189199 189503 +304 + Misses 77518 77478 -40 + Partials 7382 7381 -1 
FlagCoverage Δ
Debug69.07% <100.00%> (+0.04%)⬆️
production63.33% <100.00%> (+0.01%)⬆️
test89.51% <100.00%> (+0.04%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing linesCoverage Δ
...icrosoft.Data.Analysis/PrimitiveColumnContainer.cs86.58% <100.00%> (+0.06%)⬆️
...t/Microsoft.Data.Analysis.Tests/DataFrameAssert.cs100.00% <100.00%> (ø)
...rosoft.Data.Analysis.Tests/DataFrameTests.Merge.cs99.09% <100.00%> (+0.50%)⬆️

... and 5 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@sevenzees

Copy link
Copy Markdown
ContributorAuthor

Looks like some builds timed out, which doesn't appear to be related to my commit. Is there some way to run them again?

@sevenzees

Copy link
Copy Markdown
ContributorAuthor

@tarekgh I see that you have been active in this repo recently. Are you able to review this PR or point me to someone who can?

@tarekgh

Copy link
Copy Markdown
Member

Thanks @sevenzees!

@ericstj the change LGTM. Please let me know if you have any feedback or we are good to merge. Thanks!

CC @jeffhandley

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

cc @rokonec@ManickaP -- it looks like Mac CI is timing out. Might be something to look into -- seems like the helix jobs are sitting in queue and not running.

@tarekgh
tarekgh merged commit 3604580 into dotnet:mainFeb 5, 2026
21 of 25 checks passed
@github-actionsgithub-actionsBot mentioned this pull request Mar 7, 2026
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 7, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DataFrame Merge method throws exception when one of the DataFrames is empty.

3 participants

@sevenzees@tarekgh@ericstj
, '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

Fix bug that causes Merge to fail with empty DataFrames - #7573

Merged
tarekgh merged 2 commits into
dotnet:mainfrom
sevenzees:main
Feb 5, 2026
Merged

Fix bug that causes Merge to fail with empty DataFrames#7573
tarekgh merged 2 commits into
dotnet:mainfrom
sevenzees:main

Conversation

@sevenzees

Copy link
Copy Markdown
Contributor

Fixes#7572

When using the DataFrame Merge method, if one of the DataFrames is empty (has no rows), you will get a System.ArgumentOutOfRangeException. This was caused by the Clone method trying to access the first element of the empty Buffers array. It is easily fixed by returning an empty container of the appropriate length when Buffers.Count == 0.

@codecov

codecovBot commented Jan 28, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 69.07%. Comparing base (25b977e) to head (17caca4).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #7573 +/- ##
==========================================
+ Coverage 69.02% 69.07% +0.04% 
==========================================
Files 1482 1483 +1 Lines 274099 274362 +263 Branches 28266 28270 +4 ==========================================
+ Hits 189199 189503 +304 + Misses 77518 77478 -40 + Partials 7382 7381 -1 
FlagCoverage Δ
Debug69.07% <100.00%> (+0.04%)⬆️
production63.33% <100.00%> (+0.01%)⬆️
test89.51% <100.00%> (+0.04%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing linesCoverage Δ
...icrosoft.Data.Analysis/PrimitiveColumnContainer.cs86.58% <100.00%> (+0.06%)⬆️
...t/Microsoft.Data.Analysis.Tests/DataFrameAssert.cs100.00% <100.00%> (ø)
...rosoft.Data.Analysis.Tests/DataFrameTests.Merge.cs99.09% <100.00%> (+0.50%)⬆️

... and 5 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@sevenzees

Copy link
Copy Markdown
ContributorAuthor

Looks like some builds timed out, which doesn't appear to be related to my commit. Is there some way to run them again?

@sevenzees

Copy link
Copy Markdown
ContributorAuthor

@tarekgh I see that you have been active in this repo recently. Are you able to review this PR or point me to someone who can?

@tarekgh

Copy link
Copy Markdown
Member

Thanks @sevenzees!

@ericstj the change LGTM. Please let me know if you have any feedback or we are good to merge. Thanks!

CC @jeffhandley

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

cc @rokonec@ManickaP -- it looks like Mac CI is timing out. Might be something to look into -- seems like the helix jobs are sitting in queue and not running.

@tarekgh
tarekgh merged commit 3604580 into dotnet:mainFeb 5, 2026
21 of 25 checks passed
@github-actionsgithub-actionsBot mentioned this pull request Mar 7, 2026
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 7, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DataFrame Merge method throws exception when one of the DataFrames is empty.

3 participants

@sevenzees@tarekgh@ericstj
, '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

Fix bug that causes Merge to fail with empty DataFrames - #7573

Merged
tarekgh merged 2 commits into
dotnet:mainfrom
sevenzees:main
Feb 5, 2026
Merged

Fix bug that causes Merge to fail with empty DataFrames#7573
tarekgh merged 2 commits into
dotnet:mainfrom
sevenzees:main

Conversation

@sevenzees

Copy link
Copy Markdown
Contributor

Fixes#7572

When using the DataFrame Merge method, if one of the DataFrames is empty (has no rows), you will get a System.ArgumentOutOfRangeException. This was caused by the Clone method trying to access the first element of the empty Buffers array. It is easily fixed by returning an empty container of the appropriate length when Buffers.Count == 0.

@codecov

codecovBot commented Jan 28, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 69.07%. Comparing base (25b977e) to head (17caca4).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #7573 +/- ##
==========================================
+ Coverage 69.02% 69.07% +0.04% 
==========================================
Files 1482 1483 +1 Lines 274099 274362 +263 Branches 28266 28270 +4 ==========================================
+ Hits 189199 189503 +304 + Misses 77518 77478 -40 + Partials 7382 7381 -1 
FlagCoverage Δ
Debug69.07% <100.00%> (+0.04%)⬆️
production63.33% <100.00%> (+0.01%)⬆️
test89.51% <100.00%> (+0.04%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing linesCoverage Δ
...icrosoft.Data.Analysis/PrimitiveColumnContainer.cs86.58% <100.00%> (+0.06%)⬆️
...t/Microsoft.Data.Analysis.Tests/DataFrameAssert.cs100.00% <100.00%> (ø)
...rosoft.Data.Analysis.Tests/DataFrameTests.Merge.cs99.09% <100.00%> (+0.50%)⬆️

... and 5 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@sevenzees

Copy link
Copy Markdown
ContributorAuthor

Looks like some builds timed out, which doesn't appear to be related to my commit. Is there some way to run them again?

@sevenzees

Copy link
Copy Markdown
ContributorAuthor

@tarekgh I see that you have been active in this repo recently. Are you able to review this PR or point me to someone who can?

@tarekgh

Copy link
Copy Markdown
Member

Thanks @sevenzees!

@ericstj the change LGTM. Please let me know if you have any feedback or we are good to merge. Thanks!

CC @jeffhandley

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

cc @rokonec@ManickaP -- it looks like Mac CI is timing out. Might be something to look into -- seems like the helix jobs are sitting in queue and not running.

@tarekgh
tarekgh merged commit 3604580 into dotnet:mainFeb 5, 2026
21 of 25 checks passed
@github-actionsgithub-actionsBot mentioned this pull request Mar 7, 2026
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 7, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DataFrame Merge method throws exception when one of the DataFrames is empty.

3 participants

@sevenzees@tarekgh@ericstj
, '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

Fix bug that causes Merge to fail with empty DataFrames - #7573

Merged
tarekgh merged 2 commits into
dotnet:mainfrom
sevenzees:main
Feb 5, 2026
Merged

Fix bug that causes Merge to fail with empty DataFrames#7573
tarekgh merged 2 commits into
dotnet:mainfrom
sevenzees:main

Conversation

@sevenzees

Copy link
Copy Markdown
Contributor

Fixes#7572

When using the DataFrame Merge method, if one of the DataFrames is empty (has no rows), you will get a System.ArgumentOutOfRangeException. This was caused by the Clone method trying to access the first element of the empty Buffers array. It is easily fixed by returning an empty container of the appropriate length when Buffers.Count == 0.

@codecov

codecovBot commented Jan 28, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 69.07%. Comparing base (25b977e) to head (17caca4).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #7573 +/- ##
==========================================
+ Coverage 69.02% 69.07% +0.04% 
==========================================
Files 1482 1483 +1 Lines 274099 274362 +263 Branches 28266 28270 +4 ==========================================
+ Hits 189199 189503 +304 + Misses 77518 77478 -40 + Partials 7382 7381 -1 
FlagCoverage Δ
Debug69.07% <100.00%> (+0.04%)⬆️
production63.33% <100.00%> (+0.01%)⬆️
test89.51% <100.00%> (+0.04%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing linesCoverage Δ
...icrosoft.Data.Analysis/PrimitiveColumnContainer.cs86.58% <100.00%> (+0.06%)⬆️
...t/Microsoft.Data.Analysis.Tests/DataFrameAssert.cs100.00% <100.00%> (ø)
...rosoft.Data.Analysis.Tests/DataFrameTests.Merge.cs99.09% <100.00%> (+0.50%)⬆️

... and 5 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@sevenzees

Copy link
Copy Markdown
ContributorAuthor

Looks like some builds timed out, which doesn't appear to be related to my commit. Is there some way to run them again?

@sevenzees

Copy link
Copy Markdown
ContributorAuthor

@tarekgh I see that you have been active in this repo recently. Are you able to review this PR or point me to someone who can?

@tarekgh

Copy link
Copy Markdown
Member

Thanks @sevenzees!

@ericstj the change LGTM. Please let me know if you have any feedback or we are good to merge. Thanks!

CC @jeffhandley

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

cc @rokonec@ManickaP -- it looks like Mac CI is timing out. Might be something to look into -- seems like the helix jobs are sitting in queue and not running.

@tarekgh
tarekgh merged commit 3604580 into dotnet:mainFeb 5, 2026
21 of 25 checks passed
@github-actionsgithub-actionsBot mentioned this pull request Mar 7, 2026
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 7, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DataFrame Merge method throws exception when one of the DataFrames is empty.

3 participants

@sevenzees@tarekgh@ericstj
, '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

Fix bug that causes Merge to fail with empty DataFrames - #7573

Merged
tarekgh merged 2 commits into
dotnet:mainfrom
sevenzees:main
Feb 5, 2026
Merged

Fix bug that causes Merge to fail with empty DataFrames#7573
tarekgh merged 2 commits into
dotnet:mainfrom
sevenzees:main

Conversation

@sevenzees

Copy link
Copy Markdown
Contributor

Fixes#7572

When using the DataFrame Merge method, if one of the DataFrames is empty (has no rows), you will get a System.ArgumentOutOfRangeException. This was caused by the Clone method trying to access the first element of the empty Buffers array. It is easily fixed by returning an empty container of the appropriate length when Buffers.Count == 0.

@codecov

codecovBot commented Jan 28, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 69.07%. Comparing base (25b977e) to head (17caca4).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #7573 +/- ##
==========================================
+ Coverage 69.02% 69.07% +0.04% 
==========================================
Files 1482 1483 +1 Lines 274099 274362 +263 Branches 28266 28270 +4 ==========================================
+ Hits 189199 189503 +304 + Misses 77518 77478 -40 + Partials 7382 7381 -1 
FlagCoverage Δ
Debug69.07% <100.00%> (+0.04%)⬆️
production63.33% <100.00%> (+0.01%)⬆️
test89.51% <100.00%> (+0.04%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing linesCoverage Δ
...icrosoft.Data.Analysis/PrimitiveColumnContainer.cs86.58% <100.00%> (+0.06%)⬆️
...t/Microsoft.Data.Analysis.Tests/DataFrameAssert.cs100.00% <100.00%> (ø)
...rosoft.Data.Analysis.Tests/DataFrameTests.Merge.cs99.09% <100.00%> (+0.50%)⬆️

... and 5 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@sevenzees

Copy link
Copy Markdown
ContributorAuthor

Looks like some builds timed out, which doesn't appear to be related to my commit. Is there some way to run them again?

@sevenzees

Copy link
Copy Markdown
ContributorAuthor

@tarekgh I see that you have been active in this repo recently. Are you able to review this PR or point me to someone who can?

@tarekgh

Copy link
Copy Markdown
Member

Thanks @sevenzees!

@ericstj the change LGTM. Please let me know if you have any feedback or we are good to merge. Thanks!

CC @jeffhandley

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

cc @rokonec@ManickaP -- it looks like Mac CI is timing out. Might be something to look into -- seems like the helix jobs are sitting in queue and not running.

@tarekgh
tarekgh merged commit 3604580 into dotnet:mainFeb 5, 2026
21 of 25 checks passed
@github-actionsgithub-actionsBot mentioned this pull request Mar 7, 2026
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 7, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DataFrame Merge method throws exception when one of the DataFrames is empty.

3 participants

@sevenzees@tarekgh@ericstj
, '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

Fix bug that causes Merge to fail with empty DataFrames - #7573

Merged
tarekgh merged 2 commits into
dotnet:mainfrom
sevenzees:main
Feb 5, 2026
Merged

Fix bug that causes Merge to fail with empty DataFrames#7573
tarekgh merged 2 commits into
dotnet:mainfrom
sevenzees:main

Conversation

@sevenzees

Copy link
Copy Markdown
Contributor

Fixes#7572

When using the DataFrame Merge method, if one of the DataFrames is empty (has no rows), you will get a System.ArgumentOutOfRangeException. This was caused by the Clone method trying to access the first element of the empty Buffers array. It is easily fixed by returning an empty container of the appropriate length when Buffers.Count == 0.

@codecov

codecovBot commented Jan 28, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 69.07%. Comparing base (25b977e) to head (17caca4).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #7573 +/- ##
==========================================
+ Coverage 69.02% 69.07% +0.04% 
==========================================
Files 1482 1483 +1 Lines 274099 274362 +263 Branches 28266 28270 +4 ==========================================
+ Hits 189199 189503 +304 + Misses 77518 77478 -40 + Partials 7382 7381 -1 
FlagCoverage Δ
Debug69.07% <100.00%> (+0.04%)⬆️
production63.33% <100.00%> (+0.01%)⬆️
test89.51% <100.00%> (+0.04%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing linesCoverage Δ
...icrosoft.Data.Analysis/PrimitiveColumnContainer.cs86.58% <100.00%> (+0.06%)⬆️
...t/Microsoft.Data.Analysis.Tests/DataFrameAssert.cs100.00% <100.00%> (ø)
...rosoft.Data.Analysis.Tests/DataFrameTests.Merge.cs99.09% <100.00%> (+0.50%)⬆️

... and 5 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@sevenzees

Copy link
Copy Markdown
ContributorAuthor

Looks like some builds timed out, which doesn't appear to be related to my commit. Is there some way to run them again?

@sevenzees

Copy link
Copy Markdown
ContributorAuthor

@tarekgh I see that you have been active in this repo recently. Are you able to review this PR or point me to someone who can?

@tarekgh

Copy link
Copy Markdown
Member

Thanks @sevenzees!

@ericstj the change LGTM. Please let me know if you have any feedback or we are good to merge. Thanks!

CC @jeffhandley

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

cc @rokonec@ManickaP -- it looks like Mac CI is timing out. Might be something to look into -- seems like the helix jobs are sitting in queue and not running.

@tarekgh
tarekgh merged commit 3604580 into dotnet:mainFeb 5, 2026
21 of 25 checks passed
@github-actionsgithub-actionsBot mentioned this pull request Mar 7, 2026
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 7, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DataFrame Merge method throws exception when one of the DataFrames is empty.

3 participants

@sevenzees@tarekgh@ericstj
, '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

Fix bug that causes Merge to fail with empty DataFrames - #7573

Merged
tarekgh merged 2 commits into
dotnet:mainfrom
sevenzees:main
Feb 5, 2026
Merged

Fix bug that causes Merge to fail with empty DataFrames#7573
tarekgh merged 2 commits into
dotnet:mainfrom
sevenzees:main

Conversation

@sevenzees

Copy link
Copy Markdown
Contributor

Fixes#7572

When using the DataFrame Merge method, if one of the DataFrames is empty (has no rows), you will get a System.ArgumentOutOfRangeException. This was caused by the Clone method trying to access the first element of the empty Buffers array. It is easily fixed by returning an empty container of the appropriate length when Buffers.Count == 0.

@codecov

codecovBot commented Jan 28, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 69.07%. Comparing base (25b977e) to head (17caca4).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #7573 +/- ##
==========================================
+ Coverage 69.02% 69.07% +0.04% 
==========================================
Files 1482 1483 +1 Lines 274099 274362 +263 Branches 28266 28270 +4 ==========================================
+ Hits 189199 189503 +304 + Misses 77518 77478 -40 + Partials 7382 7381 -1 
FlagCoverage Δ
Debug69.07% <100.00%> (+0.04%)⬆️
production63.33% <100.00%> (+0.01%)⬆️
test89.51% <100.00%> (+0.04%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing linesCoverage Δ
...icrosoft.Data.Analysis/PrimitiveColumnContainer.cs86.58% <100.00%> (+0.06%)⬆️
...t/Microsoft.Data.Analysis.Tests/DataFrameAssert.cs100.00% <100.00%> (ø)
...rosoft.Data.Analysis.Tests/DataFrameTests.Merge.cs99.09% <100.00%> (+0.50%)⬆️

... and 5 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@sevenzees

Copy link
Copy Markdown
ContributorAuthor

Looks like some builds timed out, which doesn't appear to be related to my commit. Is there some way to run them again?

@sevenzees

Copy link
Copy Markdown
ContributorAuthor

@tarekgh I see that you have been active in this repo recently. Are you able to review this PR or point me to someone who can?

@tarekgh

Copy link
Copy Markdown
Member

Thanks @sevenzees!

@ericstj the change LGTM. Please let me know if you have any feedback or we are good to merge. Thanks!

CC @jeffhandley

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

cc @rokonec@ManickaP -- it looks like Mac CI is timing out. Might be something to look into -- seems like the helix jobs are sitting in queue and not running.

@tarekgh
tarekgh merged commit 3604580 into dotnet:mainFeb 5, 2026
21 of 25 checks passed
@github-actionsgithub-actionsBot mentioned this pull request Mar 7, 2026
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 7, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DataFrame Merge method throws exception when one of the DataFrames is empty.

3 participants

@sevenzees@tarekgh@ericstj
, '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

Fix bug that causes Merge to fail with empty DataFrames - #7573

Merged
tarekgh merged 2 commits into
dotnet:mainfrom
sevenzees:main
Feb 5, 2026
Merged

Fix bug that causes Merge to fail with empty DataFrames#7573
tarekgh merged 2 commits into
dotnet:mainfrom
sevenzees:main

Conversation

@sevenzees

Copy link
Copy Markdown
Contributor

Fixes#7572

When using the DataFrame Merge method, if one of the DataFrames is empty (has no rows), you will get a System.ArgumentOutOfRangeException. This was caused by the Clone method trying to access the first element of the empty Buffers array. It is easily fixed by returning an empty container of the appropriate length when Buffers.Count == 0.

@codecov

codecovBot commented Jan 28, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 69.07%. Comparing base (25b977e) to head (17caca4).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #7573 +/- ##
==========================================
+ Coverage 69.02% 69.07% +0.04% 
==========================================
Files 1482 1483 +1 Lines 274099 274362 +263 Branches 28266 28270 +4 ==========================================
+ Hits 189199 189503 +304 + Misses 77518 77478 -40 + Partials 7382 7381 -1 
FlagCoverage Δ
Debug69.07% <100.00%> (+0.04%)⬆️
production63.33% <100.00%> (+0.01%)⬆️
test89.51% <100.00%> (+0.04%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing linesCoverage Δ
...icrosoft.Data.Analysis/PrimitiveColumnContainer.cs86.58% <100.00%> (+0.06%)⬆️
...t/Microsoft.Data.Analysis.Tests/DataFrameAssert.cs100.00% <100.00%> (ø)
...rosoft.Data.Analysis.Tests/DataFrameTests.Merge.cs99.09% <100.00%> (+0.50%)⬆️

... and 5 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@sevenzees

Copy link
Copy Markdown
ContributorAuthor

Looks like some builds timed out, which doesn't appear to be related to my commit. Is there some way to run them again?

@sevenzees

Copy link
Copy Markdown
ContributorAuthor

@tarekgh I see that you have been active in this repo recently. Are you able to review this PR or point me to someone who can?

@tarekgh

Copy link
Copy Markdown
Member

Thanks @sevenzees!

@ericstj the change LGTM. Please let me know if you have any feedback or we are good to merge. Thanks!

CC @jeffhandley

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

cc @rokonec@ManickaP -- it looks like Mac CI is timing out. Might be something to look into -- seems like the helix jobs are sitting in queue and not running.

@tarekgh
tarekgh merged commit 3604580 into dotnet:mainFeb 5, 2026
21 of 25 checks passed
@github-actionsgithub-actionsBot mentioned this pull request Mar 7, 2026
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 7, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DataFrame Merge method throws exception when one of the DataFrames is empty.

3 participants

@sevenzees@tarekgh@ericstj