fix: issue with jit performance
This commit is contained in:
parent
9f35f85857
commit
00cfa251a2
|
@ -85,7 +85,7 @@ type SuperGraph struct {
|
||||||
allowList *allow.List
|
allowList *allow.List
|
||||||
encKey [32]byte
|
encKey [32]byte
|
||||||
hashSeed maphash.Seed
|
hashSeed maphash.Seed
|
||||||
queries map[uint64]query
|
queries map[uint64]*query
|
||||||
roles map[string]*Role
|
roles map[string]*Role
|
||||||
getRole *sql.Stmt
|
getRole *sql.Stmt
|
||||||
rmap map[uint64]resolvFn
|
rmap map[uint64]resolvFn
|
||||||
|
|
|
@ -172,14 +172,15 @@ func (c *scontext) resolvePreparedSQL() ([]byte, *stmt, error) {
|
||||||
|
|
||||||
h := maphash.Hash{}
|
h := maphash.Hash{}
|
||||||
h.SetSeed(c.sg.hashSeed)
|
h.SetSeed(c.sg.hashSeed)
|
||||||
|
id := queryID(&h, c.res.name, role)
|
||||||
|
|
||||||
q, ok := c.sg.queries[queryID(&h, c.res.name, role)]
|
q, ok := c.sg.queries[id]
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, nil, errNotFound
|
return nil, nil, errNotFound
|
||||||
}
|
}
|
||||||
|
|
||||||
if q.sd == nil {
|
if q.sd == nil {
|
||||||
q.Do(func() { c.sg.prepare(&q, role) })
|
q.Do(func() { c.sg.prepare(q, role) })
|
||||||
|
|
||||||
if q.err != nil {
|
if q.err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
|
|
|
@ -494,24 +494,6 @@ func (p *Parser) parseField(f *Field) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// func (p *Parser) parseInlineFragmentFields(st *Stack, fields []Field) ([]Field, error) {
|
|
||||||
// var err error
|
|
||||||
|
|
||||||
// if p.peek(itemName) {
|
|
||||||
// p.ignore()
|
|
||||||
// // frag.On = p.vall(p.next())
|
|
||||||
// } else {
|
|
||||||
// return nil, errors.New("inline fragment: missing table name after 'on' keyword")
|
|
||||||
// }
|
|
||||||
|
|
||||||
// fields, err = p.parseNormalFields(st, fields)
|
|
||||||
// if err != nil {
|
|
||||||
// return nil, fmt.Errorf("inline fragment: %v", err)
|
|
||||||
// }
|
|
||||||
|
|
||||||
// return fields, nil
|
|
||||||
// }
|
|
||||||
|
|
||||||
func (p *Parser) parseOpParams(args []Arg) ([]Arg, error) {
|
func (p *Parser) parseOpParams(args []Arg) ([]Arg, error) {
|
||||||
for {
|
for {
|
||||||
if len(args) >= maxArgs {
|
if len(args) >= maxArgs {
|
||||||
|
|
|
@ -64,7 +64,7 @@ func (sg *SuperGraph) initPrepared() error {
|
||||||
return fmt.Errorf("role query: %w", err)
|
return fmt.Errorf("role query: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
sg.queries = make(map[uint64]query)
|
sg.queries = make(map[uint64]*query)
|
||||||
|
|
||||||
list, err := sg.allowList.Load()
|
list, err := sg.allowList.Load()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -82,15 +82,15 @@ func (sg *SuperGraph) initPrepared() error {
|
||||||
|
|
||||||
switch qt {
|
switch qt {
|
||||||
case qcode.QTQuery:
|
case qcode.QTQuery:
|
||||||
sg.queries[queryID(&h, v.Name, "user")] = query{ai: v, qt: qt}
|
sg.queries[queryID(&h, v.Name, "user")] = &query{ai: v, qt: qt}
|
||||||
|
|
||||||
if sg.anonExists {
|
if sg.anonExists {
|
||||||
sg.queries[queryID(&h, v.Name, "anon")] = query{ai: v, qt: qt}
|
sg.queries[queryID(&h, v.Name, "anon")] = &query{ai: v, qt: qt}
|
||||||
}
|
}
|
||||||
|
|
||||||
case qcode.QTMutation:
|
case qcode.QTMutation:
|
||||||
for _, role := range sg.conf.Roles {
|
for _, role := range sg.conf.Roles {
|
||||||
sg.queries[queryID(&h, v.Name, role.Name)] = query{ai: v, qt: qt}
|
sg.queries[queryID(&h, v.Name, role.Name)] = &query{ai: v, qt: qt}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue