MCPcopy Create free account
hub / github.com/brimdata/super / sqlTableExpr

Method sqlTableExpr

compiler/semantic/op.go:115–176  ·  view source on GitHub ↗
(e ast.SQLTableExpr, seq sem.Seq)

Source from the content-addressed store, hash-verified

113}
114
115func (t *translator) sqlTableExpr(e ast.SQLTableExpr, seq sem.Seq) (sem.Seq, relScope) {
116 switch e := e.(type) {
117 case *ast.SQLFromItem:
118 if e.Ordinality != nil {
119 t.error(e.Ordinality, errors.New("WITH ORDINALITY clause is not yet supported"))
120 return seq, badTable
121 }
122 alias := e.Alias
123 switch input := e.Input.(type) {
124 case *ast.FromItem:
125 var table relTable
126 if c, name := t.maybeCTE(input.Source); c != nil {
127 if bad := t.hasFromParent(input, seq); bad != nil {
128 return bad, badTable
129 }
130 if len(input.Args) != 0 {
131 t.error(input, fmt.Errorf("CTE cannot use operator arguments"))
132 return seq, badTable
133 }
134 if alias == nil {
135 alias = c.Name
136 }
137 seq, table = t.fromCTE(input, c)
138 } else {
139 if _, ok := input.Source.(*ast.FromEval); !ok {
140 if bad := t.hasFromParent(e, seq); bad != nil {
141 return bad, badTable
142 }
143 }
144 var typ super.Type
145 seq, typ, name = t.fromSource(input.Source, input.Args, seq)
146 table = newTableFromType(typ, t.checker.unknown)
147 if _, ok := table.(*dynamicTable); !ok && alias == nil {
148 alias = &ast.TableAlias{Name: name, Loc: input.Loc}
149 }
150 }
151 if table == badTable {
152 return seq, badTable
153 }
154 seq, table, err := applyAlias(t.sctx, alias, table, seq)
155 if err != nil {
156 t.error(alias, err)
157 }
158 return seq, table
159 case *ast.SQLPipe:
160 seq, sch := t.sqlFromPipe(input, seq)
161 seq, sch, err := applyAlias(t.sctx, alias, sch, seq)
162 if err != nil {
163 t.error(alias, err)
164 }
165 return seq, sch
166 default:
167 panic(input)
168 }
169 case *ast.SQLJoin:
170 return t.sqlJoin(e, seq)
171 case *ast.SQLCrossJoin:
172 return t.sqlCrossJoin(e, seq)

Callers 4

selectFromMethod · 0.95
sqlCrossJoinMethod · 0.95
sqlAppendCrossJoinMethod · 0.95
sqlJoinMethod · 0.95

Calls 11

maybeCTEMethod · 0.95
hasFromParentMethod · 0.95
fromCTEMethod · 0.95
fromSourceMethod · 0.95
sqlFromPipeMethod · 0.95
sqlJoinMethod · 0.95
sqlCrossJoinMethod · 0.95
newTableFromTypeFunction · 0.85
applyAliasFunction · 0.85
NewMethod · 0.80
errorMethod · 0.45

Tested by

no test coverage detected