@@ -18,7 +18,7 @@ func dataType(n *ast.TypeName) string {
1818 }
1919}
2020
21- func resolveCatalogRefs (c * catalog.Catalog , rvs []* ast.RangeVar , args []paramRef , names map [int ]string ) ([]Parameter , error ) {
21+ func resolveCatalogRefs (c * catalog.Catalog , qc * QueryCatalog , rvs []* ast.RangeVar , args []paramRef , names map [int ]string ) ([]Parameter , error ) {
2222 aliasMap := map [string ]* ast.TableName {}
2323 // TODO: Deprecate defaultTable
2424 var defaultTable * ast.TableName
@@ -62,6 +62,10 @@ func resolveCatalogRefs(c *catalog.Catalog, rvs []*ast.RangeVar, args []paramRef
6262 }
6363 table , err := c .GetTable (fqn )
6464 if err != nil {
65+ // If the table name doesn't exist, fisrt check if it's a CTE
66+ if _ , qcerr := qc .GetTable (fqn ); qcerr != nil {
67+ return nil , err
68+ }
6569 continue
6670 }
6771 err = indexTable (table )
@@ -299,15 +303,19 @@ func resolveCatalogRefs(c *catalog.Catalog, rvs []*ast.RangeVar, args []paramRef
299303 if err != nil {
300304 return nil , err
301305 }
306+
302307 case * ast.ResTarget :
303308 if n .Name == nil {
304309 return nil , fmt .Errorf ("*ast.ResTarget has nil name" )
305310 }
306311 key := * n .Name
307312
313+ var schema , rel string
308314 // TODO: Deprecate defaultTable
309- schema := defaultTable .Schema
310- rel := defaultTable .Name
315+ if defaultTable != nil {
316+ schema = defaultTable .Schema
317+ rel = defaultTable .Name
318+ }
311319 if ref .rv != nil {
312320 fqn , err := ParseTableName (ref .rv )
313321 if err != nil {
@@ -319,7 +327,13 @@ func resolveCatalogRefs(c *catalog.Catalog, rvs []*ast.RangeVar, args []paramRef
319327 if schema == "" {
320328 schema = c .DefaultSchema
321329 }
322- if c , ok := typeMap [schema ][rel ][key ]; ok {
330+
331+ tableMap , ok := typeMap [schema ][rel ]
332+ if ! ok {
333+ return nil , sqlerr .RelationNotFound (rel )
334+ }
335+
336+ if c , ok := tableMap [key ]; ok {
323337 a = append (a , Parameter {
324338 Number : ref .ref .Number ,
325339 Column : & Column {
0 commit comments