fix: duplicate fragment crash issue
This commit is contained in:
parent
7169dd65f5
commit
6716b97a39
@ -330,8 +330,6 @@ func (p *Parser) parseFields(fields []Field) ([]Field, error) {
|
|||||||
return nil, fmt.Errorf("unexpected token: %s", p.peekNext())
|
return nil, fmt.Errorf("unexpected token: %s", p.peekNext())
|
||||||
}
|
}
|
||||||
|
|
||||||
// fm := make(map[uint64]struct{})
|
|
||||||
|
|
||||||
for {
|
for {
|
||||||
if p.peek(itemEOF) {
|
if p.peek(itemEOF) {
|
||||||
p.ignore()
|
p.ignore()
|
||||||
@ -384,23 +382,10 @@ func (p *Parser) parseFields(fields []Field) ([]Field, error) {
|
|||||||
n := int32(len(fields))
|
n := int32(len(fields))
|
||||||
fields = append(fields, fr.Fields...)
|
fields = append(fields, fr.Fields...)
|
||||||
|
|
||||||
for i := int(n); i < len(fields); i++ {
|
for i := 0; i < len(fr.Fields); i++ {
|
||||||
f := &fields[i]
|
k := (n + int32(i))
|
||||||
f.ID = int32(i)
|
f := &fields[k]
|
||||||
|
f.ID = int32(k)
|
||||||
// var name string
|
|
||||||
|
|
||||||
// if f.Alias != "" {
|
|
||||||
// name = f.Alias
|
|
||||||
// } else {
|
|
||||||
// name = f.Name
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if _, ok := fm[name]; ok {
|
|
||||||
// continue
|
|
||||||
// } else {
|
|
||||||
// fm[name] = struct{}{}
|
|
||||||
// }
|
|
||||||
|
|
||||||
// If this is the top-level point the parent to the parent of the
|
// If this is the top-level point the parent to the parent of the
|
||||||
// previous field.
|
// previous field.
|
||||||
@ -415,6 +400,9 @@ func (p *Parser) parseFields(fields []Field) ([]Field, error) {
|
|||||||
f.ParentID += n
|
f.ParentID += n
|
||||||
}
|
}
|
||||||
|
|
||||||
|
f.Children = make([]int32, len(f.Children))
|
||||||
|
copy(f.Children, fr.Fields[i].Children)
|
||||||
|
|
||||||
// Update all the children which is needed.
|
// Update all the children which is needed.
|
||||||
for j := range f.Children {
|
for j := range f.Children {
|
||||||
f.Children[j] += n
|
f.Children[j] += n
|
||||||
@ -433,20 +421,6 @@ func (p *Parser) parseFields(fields []Field) ([]Field, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// var name string
|
|
||||||
|
|
||||||
// if f.Alias != "" {
|
|
||||||
// name = f.Alias
|
|
||||||
// } else {
|
|
||||||
// name = f.Name
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if _, ok := fm[name]; ok {
|
|
||||||
// continue
|
|
||||||
// } else {
|
|
||||||
// fm[name] = struct{}{}
|
|
||||||
// }
|
|
||||||
|
|
||||||
if st.Len() == 0 {
|
if st.Len() == 0 {
|
||||||
f.ParentID = -1
|
f.ParentID = -1
|
||||||
} else {
|
} else {
|
||||||
|
@ -450,7 +450,6 @@ func (com *Compiler) compileQuery(qc *QCode, op *Operation, role string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
col := Column{Name: f.Name, FieldName: fname}
|
col := Column{Name: f.Name, FieldName: fname}
|
||||||
|
|
||||||
s.Cols = append(s.Cols, col)
|
s.Cols = append(s.Cols, col)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user