chore: move visitor impl out of generated files (#7956)

This commit is contained in:
Srikanth Chekuri 2025-05-16 20:17:23 +05:30 committed by GitHub
parent c5d5c84a0e
commit 6821efeb99
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 44 additions and 43 deletions

View File

@ -1 +0,0 @@
package parser

View File

@ -1,6 +1,7 @@
package parser
package querybuilder
import (
grammar "github.com/SigNoz/signoz/pkg/parser/grammar"
"github.com/SigNoz/signoz/pkg/types/telemetrytypes"
"github.com/antlr4-go/antlr/v4"
)
@ -25,7 +26,7 @@ import (
// },
// }
func QueryStringToKeysSelectors(query string) ([]*telemetrytypes.FieldKeySelector, error) {
lexer := NewFilterQueryLexer(antlr.NewInputStream(query))
lexer := grammar.NewFilterQueryLexer(antlr.NewInputStream(query))
keys := []*telemetrytypes.FieldKeySelector{}
for {
tok := lexer.NextToken()
@ -33,7 +34,7 @@ func QueryStringToKeysSelectors(query string) ([]*telemetrytypes.FieldKeySelecto
break
}
if tok.GetTokenType() == FilterQueryLexerKEY {
if tok.GetTokenType() == grammar.FilterQueryLexerKEY {
key := telemetrytypes.GetFieldKeyFromKeyText(tok.GetText())
keys = append(keys, &telemetrytypes.FieldKeySelector{
Name: key.Name,

View File

@ -1,4 +1,4 @@
package parser
package querybuilder
import (
"testing"

View File

@ -1,4 +1,4 @@
package parser
package querybuilder
import (
"context"
@ -7,6 +7,7 @@ import (
"strings"
"github.com/SigNoz/signoz/pkg/errors"
grammar "github.com/SigNoz/signoz/pkg/parser/grammar"
"github.com/SigNoz/signoz/pkg/telemetrylogs"
qbtypes "github.com/SigNoz/signoz/pkg/types/querybuildertypes/querybuildertypesv5"
"github.com/SigNoz/signoz/pkg/types/telemetrytypes"
@ -79,7 +80,7 @@ func PrepareWhereClause(
) (*sqlbuilder.WhereClause, []error, error) {
// Setup the ANTLR parsing pipeline
input := antlr.NewInputStream(query)
lexer := NewFilterQueryLexer(input)
lexer := grammar.NewFilterQueryLexer(input)
sb := sqlbuilder.NewSelectBuilder()
@ -92,7 +93,7 @@ func PrepareWhereClause(
tokens := antlr.NewCommonTokenStream(lexer, 0)
parserErrorListener := NewErrorListener()
parser := NewFilterQueryParser(tokens)
parser := grammar.NewFilterQueryParser(tokens)
parser.RemoveErrorListeners()
parser.AddErrorListener(parserErrorListener)
@ -139,57 +140,57 @@ func (v *WhereClauseVisitor) Visit(tree antlr.ParseTree) any {
}
switch t := tree.(type) {
case *QueryContext:
case *grammar.QueryContext:
return v.VisitQuery(t)
case *ExpressionContext:
case *grammar.ExpressionContext:
return v.VisitExpression(t)
case *OrExpressionContext:
case *grammar.OrExpressionContext:
return v.VisitOrExpression(t)
case *AndExpressionContext:
case *grammar.AndExpressionContext:
return v.VisitAndExpression(t)
case *UnaryExpressionContext:
case *grammar.UnaryExpressionContext:
return v.VisitUnaryExpression(t)
case *PrimaryContext:
case *grammar.PrimaryContext:
return v.VisitPrimary(t)
case *ComparisonContext:
case *grammar.ComparisonContext:
return v.VisitComparison(t)
case *InClauseContext:
case *grammar.InClauseContext:
return v.VisitInClause(t)
case *NotInClauseContext:
case *grammar.NotInClauseContext:
return v.VisitNotInClause(t)
case *ValueListContext:
case *grammar.ValueListContext:
return v.VisitValueList(t)
case *FullTextContext:
case *grammar.FullTextContext:
return v.VisitFullText(t)
case *FunctionCallContext:
case *grammar.FunctionCallContext:
return v.VisitFunctionCall(t)
case *FunctionParamListContext:
case *grammar.FunctionParamListContext:
return v.VisitFunctionParamList(t)
case *FunctionParamContext:
case *grammar.FunctionParamContext:
return v.VisitFunctionParam(t)
case *ArrayContext:
case *grammar.ArrayContext:
return v.VisitArray(t)
case *ValueContext:
case *grammar.ValueContext:
return v.VisitValue(t)
case *KeyContext:
case *grammar.KeyContext:
return v.VisitKey(t)
default:
return ""
}
}
func (v *WhereClauseVisitor) VisitQuery(ctx *QueryContext) any {
func (v *WhereClauseVisitor) VisitQuery(ctx *grammar.QueryContext) any {
return v.Visit(ctx.Expression())
}
// VisitExpression passes through to the orExpression
func (v *WhereClauseVisitor) VisitExpression(ctx *ExpressionContext) any {
func (v *WhereClauseVisitor) VisitExpression(ctx *grammar.ExpressionContext) any {
return v.Visit(ctx.OrExpression())
}
// VisitOrExpression handles OR expressions
func (v *WhereClauseVisitor) VisitOrExpression(ctx *OrExpressionContext) any {
func (v *WhereClauseVisitor) VisitOrExpression(ctx *grammar.OrExpressionContext) any {
andExpressions := ctx.AllAndExpression()
andExpressionConditions := make([]string, len(andExpressions))
@ -205,7 +206,7 @@ func (v *WhereClauseVisitor) VisitOrExpression(ctx *OrExpressionContext) any {
}
// VisitAndExpression handles AND expressions
func (v *WhereClauseVisitor) VisitAndExpression(ctx *AndExpressionContext) any {
func (v *WhereClauseVisitor) VisitAndExpression(ctx *grammar.AndExpressionContext) any {
unaryExpressions := ctx.AllUnaryExpression()
unaryExpressionConditions := make([]string, len(unaryExpressions))
@ -221,7 +222,7 @@ func (v *WhereClauseVisitor) VisitAndExpression(ctx *AndExpressionContext) any {
}
// VisitUnaryExpression handles NOT expressions
func (v *WhereClauseVisitor) VisitUnaryExpression(ctx *UnaryExpressionContext) any {
func (v *WhereClauseVisitor) VisitUnaryExpression(ctx *grammar.UnaryExpressionContext) any {
result := v.Visit(ctx.Primary()).(string)
// Check if this is a NOT expression
@ -233,7 +234,7 @@ func (v *WhereClauseVisitor) VisitUnaryExpression(ctx *UnaryExpressionContext) a
}
// VisitPrimary handles grouped expressions, comparisons, function calls, and full-text search
func (v *WhereClauseVisitor) VisitPrimary(ctx *PrimaryContext) any {
func (v *WhereClauseVisitor) VisitPrimary(ctx *grammar.PrimaryContext) any {
if ctx.OrExpression() != nil {
// This is a parenthesized expression
return fmt.Sprintf("(%s)", v.Visit(ctx.OrExpression()).(string))
@ -248,7 +249,7 @@ func (v *WhereClauseVisitor) VisitPrimary(ctx *PrimaryContext) any {
// Handle standalone key as a full text search term
if ctx.GetChildCount() == 1 {
child := ctx.GetChild(0)
if keyCtx, ok := child.(*KeyContext); ok {
if keyCtx, ok := child.(*grammar.KeyContext); ok {
// create a full text search condition on the body field
keyText := keyCtx.GetText()
cond, err := v.conditionBuilder.ConditionFor(context.Background(), v.fullTextColumn, qbtypes.FilterOperatorRegexp, keyText, v.builder)
@ -263,7 +264,7 @@ func (v *WhereClauseVisitor) VisitPrimary(ctx *PrimaryContext) any {
}
// VisitComparison handles all comparison operators
func (v *WhereClauseVisitor) VisitComparison(ctx *ComparisonContext) any {
func (v *WhereClauseVisitor) VisitComparison(ctx *grammar.ComparisonContext) any {
keys := v.Visit(ctx.Key()).([]*telemetrytypes.TelemetryFieldKey)
// Handle EXISTS specially
@ -380,17 +381,17 @@ func (v *WhereClauseVisitor) VisitComparison(ctx *ComparisonContext) any {
}
// VisitInClause handles IN expressions
func (v *WhereClauseVisitor) VisitInClause(ctx *InClauseContext) any {
func (v *WhereClauseVisitor) VisitInClause(ctx *grammar.InClauseContext) any {
return v.Visit(ctx.ValueList())
}
// VisitNotInClause handles NOT IN expressions
func (v *WhereClauseVisitor) VisitNotInClause(ctx *NotInClauseContext) any {
func (v *WhereClauseVisitor) VisitNotInClause(ctx *grammar.NotInClauseContext) any {
return v.Visit(ctx.ValueList())
}
// VisitValueList handles comma-separated value lists
func (v *WhereClauseVisitor) VisitValueList(ctx *ValueListContext) any {
func (v *WhereClauseVisitor) VisitValueList(ctx *grammar.ValueListContext) any {
values := ctx.AllValue()
parts := []any{}
@ -402,7 +403,7 @@ func (v *WhereClauseVisitor) VisitValueList(ctx *ValueListContext) any {
}
// VisitFullText handles standalone quoted strings for full-text search
func (v *WhereClauseVisitor) VisitFullText(ctx *FullTextContext) any {
func (v *WhereClauseVisitor) VisitFullText(ctx *grammar.FullTextContext) any {
// remove quotes from the quotedText
quotedText := strings.Trim(ctx.QUOTED_TEXT().GetText(), "\"'")
cond, err := v.conditionBuilder.ConditionFor(context.Background(), v.fullTextColumn, qbtypes.FilterOperatorRegexp, quotedText, v.builder)
@ -413,7 +414,7 @@ func (v *WhereClauseVisitor) VisitFullText(ctx *FullTextContext) any {
}
// VisitFunctionCall handles function calls like has(), hasAny(), etc.
func (v *WhereClauseVisitor) VisitFunctionCall(ctx *FunctionCallContext) any {
func (v *WhereClauseVisitor) VisitFunctionCall(ctx *grammar.FunctionCallContext) any {
// Get function name based on which token is present
var functionName string
if ctx.HAS() != nil {
@ -482,7 +483,7 @@ func (v *WhereClauseVisitor) VisitFunctionCall(ctx *FunctionCallContext) any {
}
// VisitFunctionParamList handles the parameter list for function calls
func (v *WhereClauseVisitor) VisitFunctionParamList(ctx *FunctionParamListContext) any {
func (v *WhereClauseVisitor) VisitFunctionParamList(ctx *grammar.FunctionParamListContext) any {
params := ctx.AllFunctionParam()
parts := make([]any, len(params))
@ -494,7 +495,7 @@ func (v *WhereClauseVisitor) VisitFunctionParamList(ctx *FunctionParamListContex
}
// VisitFunctionParam handles individual parameters in function calls
func (v *WhereClauseVisitor) VisitFunctionParam(ctx *FunctionParamContext) any {
func (v *WhereClauseVisitor) VisitFunctionParam(ctx *grammar.FunctionParamContext) any {
if ctx.Key() != nil {
return v.Visit(ctx.Key())
} else if ctx.Value() != nil {
@ -507,12 +508,12 @@ func (v *WhereClauseVisitor) VisitFunctionParam(ctx *FunctionParamContext) any {
}
// VisitArray handles array literals
func (v *WhereClauseVisitor) VisitArray(ctx *ArrayContext) any {
func (v *WhereClauseVisitor) VisitArray(ctx *grammar.ArrayContext) any {
return v.Visit(ctx.ValueList())
}
// VisitValue handles literal values: strings, numbers, booleans
func (v *WhereClauseVisitor) VisitValue(ctx *ValueContext) any {
func (v *WhereClauseVisitor) VisitValue(ctx *grammar.ValueContext) any {
if ctx.QUOTED_TEXT() != nil {
txt := ctx.QUOTED_TEXT().GetText()
// trim quotes and return the value
@ -545,7 +546,7 @@ func (v *WhereClauseVisitor) VisitValue(ctx *ValueContext) any {
}
// VisitKey handles field/column references
func (v *WhereClauseVisitor) VisitKey(ctx *KeyContext) any {
func (v *WhereClauseVisitor) VisitKey(ctx *grammar.KeyContext) any {
fieldKey := telemetrytypes.GetFieldKeyFromKeyText(ctx.KEY().GetText())