code: func MyQueryColumns(args *internal.ArgType, inspect []string) ([]*models.Column, error) {
  	var err error
  
  	// create temporary view xoid
  	xoid := "_xo_" + internal.GenRandomID()
  	viewq := `CREATE VIEW ` + xoid + ` AS (` + strings.Join(inspect, "\n") + `)`
  	models.XOLog(viewq)
  	_, err = args.DB.Exec(viewq)
  	if err != nil {
  		return nil, err
  	}
  
  	// load columns
  	cols, err := models.MyTableColumns(args.DB, args.Schema, xoid)
  
  	// drop inspect view
  	dropq := `DROP VIEW ` + xoid
  	models.XOLog(dropq)
  	_, _ = args.DB.Exec(dropq)
  
  	// load column information
  	return cols, err
  }
docs: // MyQueryColumns parses the query and generates a type for it.