ParseTablePattern parses a table pattern. The table name must contain one or more name parts, using the full input SQL syntax: each name part containing special characters, or non-lowercase characters, must be enclosed in double quote. The name may not be an invalid table name (the caller is respons
(sql string)
| 330 | // valid table names are provided as input). |
| 331 | // The last part may be '*' to denote a wildcard. |
| 332 | func ParseTablePattern(sql string) (tree.TablePattern, error) { |
| 333 | // We wrap the name we want to parse into a dummy statement since our parser |
| 334 | // can only parse full statements. |
| 335 | stmt, err := ParseOne(fmt.Sprintf("GRANT SELECT ON TABLE %s TO admin", sql)) |
| 336 | if err != nil { |
| 337 | return nil, err |
| 338 | } |
| 339 | grant, ok := stmt.AST.(*tree.Grant) |
| 340 | if !ok { |
| 341 | return nil, errors.AssertionFailedf("expected a GRANT statement, but found %T", stmt) |
| 342 | } |
| 343 | if len(grant.Targets.Tables.TablePatterns) == 0 { |
| 344 | return nil, errors.AssertionFailedf("expected at least one pattern") |
| 345 | } |
| 346 | u := grant.Targets.Tables.TablePatterns[0] |
| 347 | un, ok := u.(*tree.UnresolvedName) |
| 348 | if !ok { |
| 349 | return nil, errors.AssertionFailedf("expected an unresolved name, but found %T", u) |
| 350 | } |
| 351 | return un.NormalizeTablePattern() |
| 352 | } |
| 353 | |
| 354 | // parseExprsWithInt parses one or more sql expressions. |
| 355 | func parseExprsWithInt(exprs []string, nakedIntType *types.T) (tree.Exprs, error) { |
nothing calls this directly
no test coverage detected
searching dependent graphs…