summaryrefslogtreecommitdiffstats
path: root/srfi/225/srfi-146-hash-impl.sld (follow)
Commit message (Expand)AuthorAgeFilesLines
r> 2021-07-27redo schemaGravatar Peter McGoron 2-4/+55 The new schema can now store blobs and file strings (which can be URLs or other names). These are different tables. In the future the cards table can have two columns, where one and only one must be NULL, with a CHECK to confirm that. Then coalesce() can be used to retrieve data from the table. 2021-07-27natargs: return None when no function handles an argumentGravatar Peter McGoron 1-0/+2 2021-07-27remove unused functionsGravatar Peter McGoron 1-15/+1 2021-07-27queryparse: fix NOTGravatar Peter McGoron 1-7/+8 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. 2021-07-26add command line option for searchGravatar Peter McGoron 2-12/+28 As of right now NOT queries do not work correctly for cards with more than one tag. 2021-07-26natargs: add missing importGravatar Peter McGoron 1-0/+2 2021-07-26queryparse: remove literal setGravatar Peter McGoron 2-17/+14 2021-07-26queryparse: add function to build SQL queriesGravatar Peter McGoron 2-1/+73 SQLite allows for UNIONs and INTERSECTIONs between SELECT statements, but it does not support grouping them. By recursively applying DeMorgan's laws, the parser can reduce the parse tree to only * Literals * NOT literals (i.e. "all items not belonging to this tag") * ANDs * ORs What SQLite /can/ do is have SELECT statements come from other SELECT statements. A query like (X & Y & Z) | (A & B & C) in pseudo-SQLite becomes SELECT * FROM ( SELECT * FROM tbl WHERE name IN X INTERSECTION SELECT * FROM tbl WHERE name IN Y INTERSECTION SELECT * FROM tbl WHERE name IN Z ) UNION SELECT * FROM ( SELECT * FROM tbl WHERE name IN A INTERSECTION SELECT * FROM tbl WHERE name IN B INTERSECTION SELECT * FROM tbl WHERE name IN C ) One future optimization would be to group all literals at a certain level with each other, so that there are less direct queries to the entire tag table. 2021-07-26queryparse: use demorgan's laws to simplify parsed expressionGravatar Peter McGoron 2-1/+17 2021-07-26update README.mdGravatar Peter McGoron 1-0/+10 2021-07-26queryparse: collect literals into set and return itGravatar Peter McGoron 2-16/+22 2021-07-26gitea wants .md suffixes for web renderingGravatar Peter McGoron 2-0/+0 2021-07-26example/query.md: change to what the code actually implementsGravatar Peter McGoron 1-3/+3