code: func extractTableSourceAsNames(node ast.ResultSetNode, input []string, onlySelectStmt bool) []string {
  	switch x := node.(type) {
  	case *ast.Join:
  		input = extractTableSourceAsNames(x.Left, input, onlySelectStmt)
  		input = extractTableSourceAsNames(x.Right, input, onlySelectStmt)
  	case *ast.TableSource:
  		if _, ok := x.Source.(*ast.SelectStmt); !ok && onlySelectStmt {
  			break
  		}
  		if s, ok := x.Source.(*ast.TableName); ok {
  			if x.AsName.L == "" {
  				input = append(input, s.Name.L)
  				break
  			}
  		}
  		input = append(input, x.AsName.L)
  	}
  	return input
  }
docs: // extractTableSourceAsNames extracts TableSource.AsNames from node.
  // if onlySelectStmt is set to be true, only extracts AsNames when TableSource.Source.(type) == *ast.SelectStmt