MCPcopy Create free account
hub / github.com/ajitpratap0/GoSQLX / TestParser_IntervalExpression_Simple

Function TestParser_IntervalExpression_Simple

pkg/sql/parser/interval_test.go:28–76  ·  view source on GitHub ↗

TestParser_IntervalExpression_Simple tests basic INTERVAL expression parsing

(t *testing.T)

Source from the content-addressed store, hash-verified

26
27// TestParser_IntervalExpression_Simple tests basic INTERVAL expression parsing
28func TestParser_IntervalExpression_Simple(t *testing.T) {
29 sql := "SELECT INTERVAL '1 day'"
30
31 // Tokenize the SQL
32 tkz := tokenizer.GetTokenizer()
33 defer tokenizer.PutTokenizer(tkz)
34
35 tokens, err := tkz.Tokenize([]byte(sql))
36 if err != nil {
37 t.Fatalf("tokenizer error: %v", err)
38 }
39
40 // Convert to parser tokens
41
42 parser := NewParser()
43 defer parser.Release()
44
45 tree, err := parser.ParseFromModelTokens(tokens)
46 if err != nil {
47 t.Fatalf("unexpected error: %v", err)
48 }
49 defer ast.ReleaseAST(tree)
50
51 if len(tree.Statements) != 1 {
52 t.Fatalf("expected 1 statement, got %d", len(tree.Statements))
53 }
54
55 stmt, ok := tree.Statements[0].(*ast.SelectStatement)
56 if !ok {
57 t.Fatalf("expected SelectStatement, got %T", tree.Statements[0])
58 }
59
60 if len(stmt.Columns) != 1 {
61 t.Fatalf("expected 1 column, got %d", len(stmt.Columns))
62 }
63
64 intervalExpr, ok := stmt.Columns[0].(*ast.IntervalExpression)
65 if !ok {
66 t.Fatalf("expected IntervalExpression, got %T", stmt.Columns[0])
67 }
68
69 if intervalExpr.Value != "1 day" {
70 t.Errorf("expected interval value '1 day', got '%s'", intervalExpr.Value)
71 }
72
73 if intervalExpr.TokenLiteral() != "INTERVAL" {
74 t.Errorf("expected TokenLiteral 'INTERVAL', got '%s'", intervalExpr.TokenLiteral())
75 }
76}
77
78// TestParser_IntervalExpression_WithArithmetic tests INTERVAL in arithmetic expressions
79func TestParser_IntervalExpression_WithArithmetic(t *testing.T) {

Callers

nothing calls this directly

Calls 10

ReleaseMethod · 0.95
ParseFromModelTokensMethod · 0.95
GetTokenizerFunction · 0.92
PutTokenizerFunction · 0.92
ReleaseASTFunction · 0.92
TokenizeMethod · 0.80
NewParserFunction · 0.70
FatalfMethod · 0.65
ErrorfMethod · 0.65
TokenLiteralMethod · 0.65

Tested by

no test coverage detected