diff options
| author | JP Appel <jeanpierre.appel01@gmail.com> | 2025-11-21 20:50:42 -0500 |
|---|---|---|
| committer | JP Appel <jeanpierre.appel01@gmail.com> | 2025-11-21 20:50:42 -0500 |
| commit | 1aad60b49a32b6bced95a251f266799c031ca83e (patch) | |
| tree | 4b156c7f6df11a164a31a5615d30f9cd6f07c44f /pkg/query | |
| parent | 7383ea149c9444c297e21f21294fd41e67f9c9ff (diff) | |
Update documentation, comments, and tidy codebase
Diffstat (limited to 'pkg/query')
| -rw-r--r-- | pkg/query/compiler.go | 11 | ||||
| -rw-r--r-- | pkg/query/errors.go | 1 | ||||
| -rw-r--r-- | pkg/query/lexer.go | 4 | ||||
| -rw-r--r-- | pkg/query/optimizer.go | 3 |
4 files changed, 14 insertions, 5 deletions
diff --git a/pkg/query/compiler.go b/pkg/query/compiler.go index 7d24b10..2272933 100644 --- a/pkg/query/compiler.go +++ b/pkg/query/compiler.go @@ -103,6 +103,13 @@ func (s Statements) buildCompile(b *strings.Builder, delim string) ([]any, error } } + // NOTE: cases + // cat op + // any re + // .isOrd ap + // .isSet !ap + // .isSet ap + // any any if op == OP_RE { idx := 0 for _, stmt := range opStmts { @@ -197,6 +204,8 @@ func (s Statements) buildCompile(b *strings.Builder, delim string) ([]any, error } for _, stmt := range opStmts { if stmt.Negated { + // FIXME: doesn't evaluate correctly for when using MATCH operator in SQL + // a potential fix for negated statements is using an EXCEPT-like subquery b.WriteString("NOT ") } b.WriteString(catStr) @@ -278,7 +287,7 @@ func (c Clause) buildCompile(b *strings.Builder) ([]any, error) { } if !isRoot { - b.WriteString(") ") + b.WriteString(")") } return args, nil diff --git a/pkg/query/errors.go b/pkg/query/errors.go index 889d40d..713e9f0 100644 --- a/pkg/query/errors.go +++ b/pkg/query/errors.go @@ -16,7 +16,6 @@ var ErrExpectedMoreStringTokens = errors.New("Expected more string tokens") var ErrUnexpectedValueType = errors.New("Unexpected value type") var ErrEmptyResult = errors.New("Queries are contradictory, will lead to an empty result") - type TokenError struct { got Token gotPrev Token diff --git a/pkg/query/lexer.go b/pkg/query/lexer.go index 0ebdb1d..bdb09ef 100644 --- a/pkg/query/lexer.go +++ b/pkg/query/lexer.go @@ -130,6 +130,10 @@ func (t queryTokenType) isCategory() bool { TOK_CAT_META) } +func (t queryTokenType) isOrdered() bool { + return t == TOK_CAT_DATE || t == TOK_CAT_FILETIME +} + func (t queryTokenType) isDateOperation() bool { return t.Any(TOK_OP_EQ, TOK_OP_AP, TOK_OP_NE, TOK_OP_LT, TOK_OP_LE, TOK_OP_GE, TOK_OP_GT) } diff --git a/pkg/query/optimizer.go b/pkg/query/optimizer.go index 337ee35..21de619 100644 --- a/pkg/query/optimizer.go +++ b/pkg/query/optimizer.go @@ -9,9 +9,6 @@ import ( "github.com/jpappel/atlas/pkg/util" ) -// FIXME: any substring checks on unorderd approximate statements will fail -// this is because quotes are added to all approximate string values - type Optimizer struct { workers uint root *Clause |
