Repository navigation
Conversation
The test steps join make_configs with spaces and then split the result on spaces. An entry that contains a space, such as "dir:all installcheck", becomes two configurations, and the second one has no directory. Join the entries with newlines and read one entry per line instead. All current entries give the same configurations as before. apache#2237 has the same change. Assisted-by: Claude Code
CI does not run the test in src/test/modules/parallel_customscan, which apache#1855 added to check that the segments can run a parallel-aware custom scan. So nobody sees when the dispatch of custom scans breaks. Add an ic-parallel-customscan test job that runs it on Rocky 8, 9 and 10. The build does not install the module, so the job runs "install installcheck". Assisted-by: Claude Code
gen_node_support.pl also writes the binary out and read functions that the dispatcher uses to send a plan to the segments. For the methods of a CustomScan, the binary out function writes the text format: appendStringInfoString(str, " :methods "); outToken(str, node->methods->CustomName); But the binary read function reads a length and then the bytes. So a QE takes " :me" as the length of the name, and each query that sends a custom scan to the segments fails: ERROR: invalid memory alloc request size 1701657121 Before the REL_16_9 merge, outfast.c wrote the name with WRITE_STRING_FIELD. Write it with WRITE_STRING_VAR again. Assisted-by: Claude Code
The library registers its custom scan methods when it is loaded. The coordinator loads it for CREATE EXTENSION. The QEs that run the scan do not, and neither do the QEs that CBDB parallel starts as parallel workers. PostgreSQL gives its parallel workers the libraries of the leader, but the dispatcher does not do that for the QEs. So a QE cannot read the plan: ERROR: ExtensibleNodeMethods "ParallelCustomScan" was not registered Set session_preload_libraries for the test database and connect again, so that each new QE loads the library. Reset it at the end. Assisted-by: Claude Code
In the EXPLAIN ANALYZE of the parallel hash join, a parallel worker can find no outer tuples left to probe. Then the outer custom scan of that worker shows "(never executed)", and the test failed in 1 of 5 runs. Replace it the same way as the actual row counts. Assisted-by: Claude Code
leborchuk
approved these changes
Nov 6, 2026
leborchuk
left a comment
Contributor
There was a problem hiding this comment.
LGTM, quite interesting, I bumped in a bug in gen_node_support.pl in Anser prototype. Spent some time to understand why it fails. And the issue could be found in tap tests, no need to dig it, just fix it out
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fixes #ISSUE_Number
What does this PR do?
Type of Change
Breaking Changes
Test Plan
make installcheckmake -C src/test installcheck-cbdb-parallelImpact
Performance:
User-facing changes:
Dependencies:
Checklist
Additional Context
CI Skip Instructions