Fix bugs in SQLScriptScanner with big String literals and PostgreSQL identifiers (as introduced by #7646)#7818
Merged
eddumelendez merged 5 commits intotestcontainers:mainfrom Nov 17, 2023
Conversation
ScriptScanner with big String literals and PostgreSQL identifiers (as introduced by #7646)
kiview
approved these changes
Nov 16, 2023
kiview
requested changes
Nov 16, 2023
Member
|
The checkstyle issue breaks CI. I am not sure, why it is not correctly displayed as failing CI, I'd say our You can run the checkstyle checks locally with |
eddumelendez
requested changes
Nov 16, 2023
…ScriptScannerTest.java
kiview
approved these changes
Nov 17, 2023
Member
|
Thanks for your contribution, @inponomarev ! |
fokion
pushed a commit
to fokion/testcontainers-java
that referenced
this pull request
Jan 18, 2025
…L identifiers (as introduced by testcontainers#7646) (testcontainers#7818) Co-authored-by: Eddú Meléndez Gonzales <eddu.melendez@gmail.com>
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.
"This never happened before, and here we go again": unfortunately #7646 introduced not only proper bug fixes, but some new bugs as well, reproducible on some of our test SQL scripts.
This PR introduces 3 changes:
"(\\"|[^"])*", though working well with strings of a reasonable size, tends to yieldStackOverflowErrorwhen literals are big (10k simbols and more). The workaround is the same as with comments: use finite-state machine to match the literal, not the regexp.this$is$a$valid$postgreSQL$identifieris not mixed with dollar-quoted stringsm.find(offset) && m.start() == offsetwas suboptimal (we are only interested in cases when the regexp matches exactly starting from the offset and there is no reason in finding it somewhere far away in the script).Existing tests are not modified, new tests added.