Reduce realloc of maps and slices

This commit is contained in:
Vikram Rangnekar
2019-04-07 01:12:11 -04:00
parent b562e1603e
commit 8acc3ed08d
6 changed files with 65 additions and 64 deletions

View File

@ -274,7 +274,7 @@ func (v *selectBlock) renderBaseSelect(w io.Writer, schema *DBSchema, childCols
isFil := v.sel.Where != nil
isAgg := false
searchVal := findArgVal(v.sel, "search")
_, isSearch := v.sel.Args["search"]
io.WriteString(w, " FROM (SELECT ")
@ -284,15 +284,19 @@ func (v *selectBlock) renderBaseSelect(w io.Writer, schema *DBSchema, childCols
if !isRealCol {
switch {
case searchVal != nil && cn == "search_rank":
case isSearch && cn == "search_rank":
cn = v.ti.TSVCol
fmt.Fprintf(w, `ts_rank("%s"."%s", to_tsquery('%s')) AS %s`,
v.sel.Table, cn, searchVal.Val, col.Name)
arg := v.sel.Args["search"]
case searchVal != nil && strings.HasPrefix(cn, "search_headline_"):
fmt.Fprintf(w, `ts_rank("%s"."%s", to_tsquery('%s')) AS %s`,
v.sel.Table, cn, arg.Val, col.Name)
case isSearch && strings.HasPrefix(cn, "search_headline_"):
cn = cn[16:]
arg := v.sel.Args["search"]
fmt.Fprintf(w, `ts_headline("%s"."%s", to_tsquery('%s')) AS %s`,
v.sel.Table, cn, searchVal.Val, col.Name)
v.sel.Table, cn, arg.Val, col.Name)
default:
pl := funcPrefixLen(cn)
@ -647,12 +651,3 @@ func funcPrefixLen(fn string) int {
}
return 0
}
func findArgVal(sel *qcode.Select, name string) *qcode.Node {
for i := range sel.Args {
if sel.Args[i].Name == name {
return sel.Args[i].Val
}
}
return nil
}

View File

@ -4,7 +4,7 @@ import "regexp"
func NewVariables(varlist map[string]string) map[string]string {
re := regexp.MustCompile(`(?mi)\$([a-zA-Z0-9_.]+)`)
vars := make(map[string]string)
vars := make(map[string]string, len(varlist))
for k, v := range varlist {
vars[k] = re.ReplaceAllString(v, `{{$1}}`)