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

Function BenchmarkMariaDB_ConnectBy

pkg/sql/parser/mariadb_bench_test.go:140–198  ·  view source on GitHub ↗

BenchmarkMariaDB_ConnectBy benchmarks MariaDB CONNECT BY hierarchical query parsing.

(b *testing.B)

Source from the content-addressed store, hash-verified

138
139// BenchmarkMariaDB_ConnectBy benchmarks MariaDB CONNECT BY hierarchical query parsing.
140func BenchmarkMariaDB_ConnectBy(b *testing.B) {
141 benchmarks := []struct {
142 name string
143 sql string
144 }{
145 {
146 name: "simple_prior_left",
147 sql: `SELECT id, name FROM employees
148 START WITH parent_id IS NULL
149 CONNECT BY PRIOR id = parent_id`,
150 },
151 {
152 name: "prior_right",
153 sql: `SELECT id, name FROM employees
154 START WITH id = 1
155 CONNECT BY id = PRIOR parent_id`,
156 },
157 {
158 name: "nocycle",
159 sql: `SELECT id, name, level FROM employees
160 START WITH parent_id IS NULL
161 CONNECT BY NOCYCLE PRIOR id = parent_id`,
162 },
163 {
164 name: "with_where_and_order",
165 sql: `SELECT id, name FROM employees
166 WHERE active = 1
167 START WITH parent_id IS NULL
168 CONNECT BY PRIOR id = parent_id
169 ORDER BY id`,
170 },
171 }
172
173 for _, bm := range benchmarks {
174 bm := bm
175 b.Run(bm.name, func(b *testing.B) {
176 tkz := tokenizer.GetTokenizer()
177 defer tokenizer.PutTokenizer(tkz)
178
179 tokens, err := tkz.Tokenize([]byte(bm.sql))
180 if err != nil {
181 b.Fatalf("Tokenize error: %v", err)
182 }
183
184 b.ResetTimer()
185 b.ReportAllocs()
186
187 for i := 0; i < b.N; i++ {
188 p := parser.NewParser(parser.WithDialect(string(keywords.DialectMariaDB)))
189 result, err := p.ParseFromModelTokens(tokens)
190 if err != nil {
191 b.Fatalf("Parse error: %v", err)
192 }
193 ast.ReleaseAST(result)
194 p.Release()
195 }
196 })
197 }

Callers

nothing calls this directly

Calls 10

ParseFromModelTokensMethod · 0.95
ReleaseMethod · 0.95
GetTokenizerFunction · 0.92
PutTokenizerFunction · 0.92
NewParserFunction · 0.92
WithDialectFunction · 0.92
ReleaseASTFunction · 0.92
RunMethod · 0.80
TokenizeMethod · 0.80
FatalfMethod · 0.65

Tested by

no test coverage detected