Fix to ensure cursor fields can be defined in the query
This commit is contained in:
parent
81338b6123
commit
a172193955
|
@ -3,6 +3,7 @@ package psql
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
@ -35,8 +36,6 @@ func (c *compilerContext) renderBaseColumns(
|
||||||
c.renderComma(i)
|
c.renderComma(i)
|
||||||
realColsRendered = append(realColsRendered, n)
|
realColsRendered = append(realColsRendered, n)
|
||||||
colWithTable(c.w, ti.Name, cn)
|
colWithTable(c.w, ti.Name, cn)
|
||||||
i++
|
|
||||||
continue
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
switch {
|
switch {
|
||||||
|
@ -44,27 +43,31 @@ func (c *compilerContext) renderBaseColumns(
|
||||||
if err := c.renderColumnSearchRank(sel, ti, col, i); err != nil {
|
if err := c.renderColumnSearchRank(sel, ti, col, i); err != nil {
|
||||||
return nil, false, err
|
return nil, false, err
|
||||||
}
|
}
|
||||||
i++
|
|
||||||
|
|
||||||
case isSearch && strings.HasPrefix(cn, "search_headline_"):
|
case isSearch && strings.HasPrefix(cn, "search_headline_"):
|
||||||
if err := c.renderColumnSearchHeadline(sel, ti, col, i); err != nil {
|
if err := c.renderColumnSearchHeadline(sel, ti, col, i); err != nil {
|
||||||
return nil, false, err
|
return nil, false, err
|
||||||
}
|
}
|
||||||
i++
|
|
||||||
|
|
||||||
case cn == "__typename":
|
case cn == "__typename":
|
||||||
if err := c.renderColumnTypename(sel, ti, col, i); err != nil {
|
if err := c.renderColumnTypename(sel, ti, col, i); err != nil {
|
||||||
return nil, false, err
|
return nil, false, err
|
||||||
}
|
}
|
||||||
i++
|
|
||||||
|
case strings.HasSuffix(cn, "_cursor"):
|
||||||
|
continue
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if err := c.renderColumnFunction(sel, ti, col, i); err != nil {
|
if err := c.renderColumnFunction(sel, ti, col, i); err != nil {
|
||||||
return nil, false, err
|
return nil, false, err
|
||||||
}
|
}
|
||||||
|
fmt.Println(">>>> isAgg", cn, sel.Name)
|
||||||
|
|
||||||
isAgg = true
|
isAgg = true
|
||||||
|
}
|
||||||
|
}
|
||||||
i++
|
i++
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if isCursorPaged {
|
if isCursorPaged {
|
||||||
|
|
|
@ -516,6 +516,10 @@ func (c *compilerContext) renderColumns(sel *qcode.Select, ti *DBTableInfo, skip
|
||||||
cn = col.Name[n:]
|
cn = col.Name[n:]
|
||||||
} else {
|
} else {
|
||||||
cn = col.Name
|
cn = col.Name
|
||||||
|
|
||||||
|
if strings.HasSuffix(cn, "_cursor") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(sel.Allowed) != 0 {
|
if len(sel.Allowed) != 0 {
|
||||||
|
|
|
@ -339,6 +339,13 @@ func (p *Parser) parseFields(fields []Field) ([]Field, error) {
|
||||||
if p.peek(itemObjOpen) {
|
if p.peek(itemObjOpen) {
|
||||||
p.ignore()
|
p.ignore()
|
||||||
st.Push(f.ID)
|
st.Push(f.ID)
|
||||||
|
|
||||||
|
} else if p.peek(itemObjClose) {
|
||||||
|
if st.Len() == 0 {
|
||||||
|
break
|
||||||
|
} else {
|
||||||
|
continue
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue