queryTypeFromText parses statement and classifies its single top-level statement, applying the legacy statement-text system-schema promotion: a base.Select that references a Trino system/metadata schema becomes base.SelectInfoSchema. EXPLAIN over such a query is likewise promoted. On parse failure
(statement string)
| 71 | // |
| 72 | // On parse failure or empty/multi input it returns base.QueryTypeUnknown. |
| 73 | func queryTypeFromText(statement string) base.QueryType { |
| 74 | file, errs := parser.Parse(statement) |
| 75 | if len(errs) > 0 || file == nil || len(file.Stmts) == 0 { |
| 76 | return base.QueryTypeUnknown |
| 77 | } |
| 78 | qt, _ := getQueryType(file.Stmts[0]) |
| 79 | switch qt { |
| 80 | case base.Select, base.Explain: |
| 81 | if containsSystemSchema(statement) { |
| 82 | return base.SelectInfoSchema |
| 83 | } |
| 84 | default: |
| 85 | } |
| 86 | return qt |
| 87 | } |
| 88 | |
| 89 | // IsReadOnlyStatement reports whether the given omni AST node is a read-only |
| 90 | // Trino statement (SELECT family, EXPLAIN, SHOW/DESCRIBE, session-state). |