Repository navigation
Conversation
Contributor
Author
|
@yegor256 please take a look when you have a moment, happy to clarify anything here. |
Member
|
This looks like the right fix for the quoting bug, but it's got conflicts with master now, so it needs a rebase before it can go in. Requesting another look too. Generated by Claude Code |
yegor256
self-requested a review
September 27, 2026 06:44
…stays within the complexity limit
Contributor
Author
|
@yegor256 done, ready for review again |
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.
Fbe.delete_onebuilt its delete query by interpolating the identifying value straight into the sentence, so a String value arrived at the parser as a bare word and was read as a property name. With a customid:the query matched nothing, the delete removed nothing, and the rebuilt fact was inserted anyway, leaving the original next to a copy of it.The value now goes through
Fbe::Term, a small object that renders one(eq prop value)sentence with the value spelled the way the parser reads it back: a String in quotes with the quotes inside escaped, a Time in ISO 8601, everything else as it is. The same interpolation lives inFbe.if_absent,Fbe.just_one,Fbe.deleteandFbe.overwrite; moving them onto this object is worth a separate issue.The second half of the bug had nothing to do with quoting.
delete!was called for its side effect and its answer thrown away, so handingdelete_onea fact that does not live in the given factbase inserted a copy of it there. It now raisesFbe::Errorwhen the delete matched no facts, the wayFbe.overwritealready does.Closes #799