MCPcopy
hub / github.com/sqlc-dev/sqlc / Explain

Method Explain

internal/cmd/vet.go:350–373  ·  view source on GitHub ↗
(ctx context.Context, query string, args ...*plugin.Parameter)

Source from the content-addressed store, hash-verified

348}
349
350func (me *mysqlExplainer) Explain(ctx context.Context, query string, args ...*plugin.Parameter) (*vetEngineOutput, error) {
351 eQuery := "EXPLAIN FORMAT=JSON " + query
352 eArgs := make([]any, len(args))
353 for i, a := range args {
354 eArgs[i] = mysqlDefaultValue(a.Column)
355 }
356 row := me.QueryRowContext(ctx, eQuery, eArgs...)
357 var result json.RawMessage
358 if err := row.Scan(&result); err != nil {
359 return nil, err
360 }
361 if debug.Debug.DumpExplain {
362 fmt.Println(eQuery, "with args", eArgs)
363 fmt.Println(string(result))
364 }
365 var explain vet.MySQLExplain
366 if err := pjson.Unmarshal(result, &explain); err != nil {
367 return nil, err
368 }
369 if explain.QueryBlock.Message != "" {
370 return nil, fmt.Errorf("mysql explain: %s", explain.QueryBlock.Message)
371 }
372 return &vetEngineOutput{MySQL: &vet.MySQL{Explain: &explain}}, nil
373}
374
375type rule struct {
376 Program *cel.Program

Callers

nothing calls this directly

Calls 3

mysqlDefaultValueFunction · 0.85
QueryRowContextMethod · 0.65
ScanMethod · 0.45

Tested by

no test coverage detected