Fix parameter parsing inside SQL/JPQL comments #4158
+104
−1
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.
I have implemented a state-aware parser in
PreprocessedQueryto resolve GH-4090.Currently, the
ParameterBindingParserincorrectly identifies characters like?or:as bind markers when they appear inside comments. I chose to use aBitSetto track these "comment zones" rather than stripping the comments entirely for two reasons:/*+ ... */) for SQL hints. Stripping them would break this functionality.The parser handles block comments (
/* */), SQL-style line comments (--), and Java-style comments (//). It explicitly tracks string literal bounds first to ensure that markers inside quoted strings are not mistakenly treated as comments.I've included unit tests with 100% branch coverage for the detection logic and attached a reproducible demo.
Checklist
Fixes #4090.
Demo: demo.zip