func GenerateSelectOuterQuery(sel *sqlparser.Select, tableInfo *schema.Table, alloc arena.ArenaAllocator) *sqlparser.ParsedQuery { buf := sqlparser.NewTrackedBuffer(nil, alloc) fmt.Fprintf(buf, "select ") writeColumnList(buf, tableInfo.Columns) buf.Myprintf(" from %v where %a", sel.From, ":#pk") return buf.ParsedQuery() }
func GenerateFieldQuery(statement sqlparser.Statement, alloc arena.ArenaAllocator) *sqlparser.ParsedQuery { buf := sqlparser.NewTrackedBuffer(FormatImpossible, alloc) buf.Myprintf("%v", statement) if buf.HasBindVars() { return nil } return buf.ParsedQuery() }
func GenerateInsertOuterQuery(ins *sqlparser.Insert, alloc arena.ArenaAllocator) *sqlparser.ParsedQuery { buf := sqlparser.NewTrackedBuffer(nil, alloc) buf.Myprintf("insert %vinto %v%v values %a%v", ins.Comments, ins.Table, ins.Columns, ":#values", ins.OnDup, ) return buf.ParsedQuery() }
func GenerateSelectLimitQuery(selStmt sqlparser.SelectStatement, alloc arena.ArenaAllocator) *sqlparser.ParsedQuery { buf := sqlparser.NewTrackedBuffer(nil, alloc) sel, ok := selStmt.(*sqlparser.Select) if ok { limit := sel.Limit if limit == nil { sel.Limit = execLimit defer func() { sel.Limit = nil }() } } buf.Myprintf("%v", selStmt) return buf.ParsedQuery() }
func GenerateSubquery(columns []string, table *sqlparser.AliasedTableExpr, where *sqlparser.Where, order sqlparser.OrderBy, limit *sqlparser.Limit, for_update bool, alloc arena.ArenaAllocator) *sqlparser.ParsedQuery { buf := sqlparser.NewTrackedBuffer(nil, alloc) if limit == nil { limit = execLimit } fmt.Fprintf(buf, "select ") i := 0 for i = 0; i < len(columns)-1; i++ { fmt.Fprintf(buf, "%s, ", columns[i]) } fmt.Fprintf(buf, "%s", columns[i]) buf.Myprintf(" from %v%v%v%v", table, where, order, limit) if for_update { buf.Myprintf(sqlparser.AST_FOR_UPDATE) } return buf.ParsedQuery() }
func GenerateUpdateOuterQuery(upd *sqlparser.Update, alloc arena.ArenaAllocator) *sqlparser.ParsedQuery { buf := sqlparser.NewTrackedBuffer(nil, alloc) buf.Myprintf("update %v%v set %v where %a", upd.Comments, upd.Table, upd.Exprs, ":#pk") return buf.ParsedQuery() }
func GenerateFullQuery(statement sqlparser.Statement, alloc arena.ArenaAllocator) *sqlparser.ParsedQuery { buf := sqlparser.NewTrackedBuffer(nil, alloc) statement.Format(buf) return buf.ParsedQuery() }
func GenerateDeleteOuterQuery(del *sqlparser.Delete, alloc arena.ArenaAllocator) *sqlparser.ParsedQuery { buf := sqlparser.NewTrackedBuffer(nil, alloc) buf.Myprintf("delete %vfrom %v where %a", del.Comments, del.Table, ":#pk") return buf.ParsedQuery() }