aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Peter McGoron 2021-07-27 13:19:21 -0400
committerGravatar Peter McGoron 2021-07-27 13:19:21 -0400
commit244bb8ed4b358262287fe806666fb089513cad81 (patch)
tree7decf8be191723da68f95e79d9dcef73f634379c
parentadd command line option for search (diff)
queryparse: fix NOT
NOT queries are now two-step: the list is queries and then all elements in the cards table that are also in the query are discarded.
-rw-r--r--queryparse.py15
1 files changed, 8 insertions, 7 deletions
diff --git a/queryparse.py b/queryparse.py
index 7ebd0ab..b1acddb 100644
--- a/queryparse.py
+++ b/queryparse.py
@@ -55,22 +55,23 @@ class ParseTree:
def query_lit(alist, lit, isNot):
id = len(alist) + 1
if lit.op == LitType.TAGGLOB:
- qr = f"""tag in (SELECT DISTINCT id FROM tags
+ qr = f"""SELECT DISTINCT card FROM tagmap WHERE
+ tag in (SELECT DISTINCT id FROM tags
WHERE name GLOB ?{id})"""
elif lit.op == LitType.TITLEGLOB:
- qr = f"""card in (SELECT DISTINCT id FROM cards
- WHERE name GLOB ?{id})"""
+ qr = f"SELECT id FROM cards WHERE name GLOB ?{id})"
elif lit.op == LitType.TAG:
- qr = f"""tag in (SELECT id FROM tags
+ qr = f"""SELECT DISTINCT card FROM tagmap WHERE
+ tag in (SELECT id FROM tags
WHERE name = ?{id} LIMIT 1)"""
else:
raise ParseError
alist.append(lit.v)
-
if isNot:
- qr = f"NOT ({qr})"
- return f"SELECT DISTINCT card FROM tagmap WHERE {qr}"
+ qr = f"SELECT id AS card FROM cards WHERE id NOT IN ({qr})"
+ return qr
+
# Returns bl,xpr where bl = True when xpr is for a literal
def build_r(alist, pt):
gg/commit/srfi-225.html?h=draft-3&id=98a5e0146cc28724307c6ea0e4b8d8d9a1a0e44e&follow=1'>MN-W reviewGravatar John Cowan 1-6/+6 2021-07-18Fix typo.Gravatar Arthur A. Gleckler 2-4/+4 2021-07-18Add <p> around abstract.Gravatar Arthur A. Gleckler 1-2/+2 2021-07-18Publish first draft.draft-1Gravatar Arthur A. Gleckler 3-0/+114 2021-07-18Ignore trailing whitespace.Gravatar Arthur A. Gleckler 11-129/+129 2021-07-18Ignore "Dictionaries.log".Gravatar Arthur A. Gleckler 1-1/+2 2021-07-18Fix errors reported by W3C HTML Validator.Gravatar Arthur A. Gleckler 1-27/+27 2021-07-18Eliminate unnecessary redirect by using TLS/SSL.Gravatar Arthur A. Gleckler 1-1/+1