| 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 First Reported In: | 5.44.0 | ||
| Target Milestone: | --- | ||
| Platform: | Other | ||
| OS: | All | ||
| Latest Commit: | https://commits.kde.org/baloo/116e55a2076e5dd3264be4ad8a06b6a2554b6fda | Version Fixed/Implemented In: | |
| Sentry Crash Report: | |||
|
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
|