summaryrefslogtreecommitdiff
path: root/internal/mapr
diff options
context:
space:
mode:
authorPaul Buetow <git@mx.buetow.org>2020-12-28 09:49:10 +0000
committerPaul Buetow <git@mx.buetow.org>2020-12-28 09:49:10 +0000
commita5a91623ee60f33dafc16e1752f3fb1f6798ee76 (patch)
treec6433ef4a3415cc7206b5fbe733c0539d0e5a60f /internal/mapr
parentae8ffc84331ca72f0d33fff69edd85d6e03d29ae (diff)
parent495e9f38220a6d448b15882a235e7a9c21f21d18 (diff)
merge
Diffstat (limited to 'internal/mapr')
-rw-r--r--internal/mapr/funcs/function.go1
-rw-r--r--internal/mapr/query.go6
-rw-r--r--internal/mapr/selectcondition.go1
-rw-r--r--internal/mapr/server/aggregate.go1
-rw-r--r--internal/mapr/token.go3
-rw-r--r--internal/mapr/wherecondition.go24
6 files changed, 30 insertions, 6 deletions
diff --git a/internal/mapr/funcs/function.go b/internal/mapr/funcs/function.go
index 52aaa98..1a89c3a 100644
--- a/internal/mapr/funcs/function.go
+++ b/internal/mapr/funcs/function.go
@@ -12,6 +12,7 @@ type CallbackFunc func(text string) string
type Function struct {
// Name of the callback function
Name string
+ // The Go-callback function to call for this DTail function.
call CallbackFunc
}
diff --git a/internal/mapr/query.go b/internal/mapr/query.go
index 7f6b63c..01852da 100644
--- a/internal/mapr/query.go
+++ b/internal/mapr/query.go
@@ -177,12 +177,6 @@ func (q *Query) parse(tokens []token) error {
}
}
- // Comment out for empty table support, which is "all" log lines.
- /*
- if q.Table == "" {
- return errors.New(invalidQuery + "Empty table specified in 'from' clause")
- }
- */
if len(q.Select) < 1 {
return errors.New(invalidQuery + "Expected at least one field in 'select' clause but got none")
}
diff --git a/internal/mapr/selectcondition.go b/internal/mapr/selectcondition.go
index 1882b7e..d6aa0d4 100644
--- a/internal/mapr/selectcondition.go
+++ b/internal/mapr/selectcondition.go
@@ -92,5 +92,6 @@ func makeSelectConditions(tokens []token) ([]selectCondition, error) {
}
sel = append(sel, sc)
}
+
return sel, nil
}
diff --git a/internal/mapr/server/aggregate.go b/internal/mapr/server/aggregate.go
index cd59b63..28bb074 100644
--- a/internal/mapr/server/aggregate.go
+++ b/internal/mapr/server/aggregate.go
@@ -80,6 +80,7 @@ func NewAggregate(queryStr string) (*Aggregate, error) {
return &a, nil
}
+// Shutdown the aggregation engine.
func (a *Aggregate) Shutdown() {
a.Flush()
a.done.Shutdown()
diff --git a/internal/mapr/token.go b/internal/mapr/token.go
index d337bd2..8972188 100644
--- a/internal/mapr/token.go
+++ b/internal/mapr/token.go
@@ -22,6 +22,7 @@ func (t token) isKeyword() bool {
return true
}
}
+
return false
}
@@ -94,6 +95,7 @@ func tokensConsumeStr(tokens []token) ([]token, []string) {
for _, token := range found {
strings = append(strings, token.str)
}
+
return tokens, strings
}
@@ -104,5 +106,6 @@ func tokensConsumeOptional(tokens []token, optional string) []token {
if strings.ToLower(tokens[0].str) == strings.ToLower(optional) {
return tokens[1:]
}
+
return tokens
}
diff --git a/internal/mapr/wherecondition.go b/internal/mapr/wherecondition.go
index ff1b489..7a60dba 100644
--- a/internal/mapr/wherecondition.go
+++ b/internal/mapr/wherecondition.go
@@ -19,6 +19,10 @@ const (
StringNe QueryOperation = iota
StringContains QueryOperation = iota
StringNotContains QueryOperation = iota
+ StringHasPrefix QueryOperation = iota
+ StringNotHasPrefix QueryOperation = iota
+ StringHasSuffix QueryOperation = iota
+ StringNotHasSuffix QueryOperation = iota
FloatOperation QueryOperation = iota
FloatEq QueryOperation = iota
FloatNe QueryOperation = iota
@@ -78,7 +82,17 @@ func makeWhereConditions(tokens []token) (where []whereCondition, err error) {
case "contains":
wc.Operation = StringContains
case "lacks":
+ fallthrough
+ case "ncontains":
wc.Operation = StringNotContains
+ case "hasprefix":
+ wc.Operation = StringHasPrefix
+ case "nhasprefix":
+ wc.Operation = StringNotHasPrefix
+ case "hassuffix":
+ wc.Operation = StringHasSuffix
+ case "nhassuffix":
+ wc.Operation = StringNotHasSuffix
default:
return wc, nil, errors.New(invalidQuery + "Unknown operation in 'where' clause: " + whereOp)
}
@@ -156,6 +170,7 @@ func (wc *whereCondition) floatClause(lValue float64, rValue float64) bool {
default:
logger.Error("Unknown float operation", lValue, wc.Operation, rValue)
}
+
return false
}
@@ -169,8 +184,17 @@ func (wc *whereCondition) stringClause(lValue string, rValue string) bool {
return strings.Contains(lValue, rValue)
case StringNotContains:
return !strings.Contains(lValue, rValue)
+ case StringHasPrefix:
+ return strings.HasPrefix(lValue, rValue)
+ case StringNotHasPrefix:
+ return !strings.HasPrefix(lValue, rValue)
+ case StringHasSuffix:
+ return strings.HasSuffix(lValue, rValue)
+ case StringNotHasSuffix:
+ return !strings.HasSuffix(lValue, rValue)
default:
logger.Error("Unknown string operation", lValue, wc.Operation, rValue)
}
+
return false
}