Summary: | Baloo parses queries like 'a AND ((b OR c) OR d) incorrectly | ||
---|---|---|---|
Product: | [Frameworks and Libraries] frameworks-baloo | Reporter: | Stefan Brüns <stefan.bruens> |
Component: | general | Assignee: | baloo-bugs-null |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | NOR | ||
Version: | 5.44.0 | ||
Target Milestone: | --- | ||
Platform: | Other | ||
OS: | All | ||
Latest Commit: | https://commits.kde.org/baloo/116e55a2076e5dd3264be4ad8a06b6a2554b6fda | Version Fixed In: |
Description
Stefan Brüns
2018-04-01 22:07:48 UTC
Git commit 4e69ffeab75f81f9c50aa12bb34aba0a477ee23e by Stefan Brüns. Committed on 08/04/2018 at 15:40. Pushed by bruns into branch 'master'. Add test case for parsing of double opening '((' Summary: Parsing of e.g. "a OR ((b AND c) AND d)" currently fails, as for the opening '((' only one token is created by the lexer. Test Plan: ``` QDEBUG : AdvancedQueryParserTest::testNestedParentheses(a OR ((b AND c) AND d)) result term [ OR ( : a (QString)) [ AND ( : b (QString)) ( : c (QString)) ] ( : d (QString)) ] QDEBUG : AdvancedQueryParserTest::testNestedParentheses(a OR ((b AND c) AND d)) expected term [ OR ( : a (QString)) [ AND ( : b (QString)) ( : c (QString)) ( : d (QString)) ] ] XFAIL : AdvancedQueryParserTest::testNestedParentheses(a OR ((b AND c) AND d)) Opening '((' parsed incorrectly ``` Reviewers: #baloo, michaelh Reviewed By: michaelh Subscribers: #frameworks Tags: #frameworks, #baloo Differential Revision: https://phabricator.kde.org/D12007 M +26 -1 autotests/unit/lib/advancedqueryparsertest.cpp https://commits.kde.org/baloo/4e69ffeab75f81f9c50aa12bb34aba0a477ee23e Git commit 116e55a2076e5dd3264be4ad8a06b6a2554b6fda by Stefan Brüns. Committed on 08/04/2018 at 15:41. Pushed by bruns into branch 'master'. Handle adjacent special characters correctly Summary: The code handled sequences like '((' incorrectly, i.e. this was parsed as a single opening quote, and thus could get operator association wrong. Although only '>=' and '<=' have a special meaning, also accept '==' and ':=' as '=' resp. ':'. Test Plan: ``` 38: QDEBUG : AdvancedQueryParserTest::testNestedParentheses(a OR ((b AND c) AND d)) result term [ OR ( : a (QString)) [ AND ( : b (QString)) ( : c (QString)) ( : d (QString)) ] ] 38: QDEBUG : AdvancedQueryParserTest::testNestedParentheses(a OR ((b AND c) AND d)) expected term [ OR ( : a (QString)) [ AND ( : b (QString)) ( : c (QString)) ( : d (QString)) ] ] 38: PASS : AdvancedQueryParserTest::testNestedParentheses(a OR ((b AND c) AND d)) ``` Reviewers: #baloo, michaelh Reviewed By: #baloo, michaelh Subscribers: #frameworks Tags: #frameworks, #baloo Differential Revision: https://phabricator.kde.org/D11888 M +1 -1 autotests/unit/lib/advancedqueryparsertest.cpp M +28 -39 src/lib/advancedqueryparser.cpp https://commits.kde.org/baloo/116e55a2076e5dd3264be4ad8a06b6a2554b6fda |