Fix dm_paste() pipe length issue by implementing operation chunking #2301
+210
−11
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR addresses the issue where
dm_paste()generates extremely long pipe chains that can cause C stack overflow errors and are difficult to read and debug.Problem
When working with large data models containing many tables and relationships,
dm_paste()would generate a single pipe chain with hundreds of operations:This could trigger
Error: C stack usage 7970324 is too close to the limitwith older R/magrittr versions and creates unwieldy code that's hard to debug.Solution
The fix implements automatic pipe chunking when the number of operations exceeds a configurable threshold (default: 100). Large pipe chains are split into manageable chunks with intermediate variable assignments:
Key Changes
dm_paste_impl()to collect and count all operations before formattingdm_paste_chunk_operations()function to handle the chunking logic%>%) and base R (|>) pipe operatorsTesting
The implementation has been thoroughly tested with:
%>%and|>)Fixes #400.
💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.