github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/sql/opt/optbuilder/name_resolution_test.go (about) 1 // Copyright 2018 The Cockroach Authors. 2 // 3 // Use of this software is governed by the Business Source License 4 // included in the file licenses/BSL.txt. 5 // 6 // As of the Change Date specified in that file, in accordance with 7 // the Business Source License, use of this software will be governed 8 // by the Apache License, Version 2.0, included in the file 9 // licenses/APL.txt. 10 11 package optbuilder 12 13 import ( 14 "fmt" 15 "testing" 16 17 "github.com/cockroachdb/cockroach/pkg/sql/sem/tree" 18 "github.com/cockroachdb/cockroach/pkg/testutils/sqlutils" 19 ) 20 21 var _ sqlutils.ColumnItemResolverTester = &scope{} 22 23 // GetColumnItemResolver is part of the sqlutils.ColumnItemResolverTester 24 // interface. 25 func (s *scope) GetColumnItemResolver() tree.ColumnItemResolver { 26 return s 27 } 28 29 // AddTable is part of the sqlutils.ColumnItemResolverTester interface. 30 func (s *scope) AddTable(tabName tree.TableName, colNames []tree.Name) { 31 for _, col := range colNames { 32 s.cols = append(s.cols, scopeColumn{name: col, table: tabName}) 33 } 34 } 35 36 // ResolveQualifiedStarTestResults is part of the 37 // sqlutils.ColumnItemResolverTester interface. 38 func (s *scope) ResolveQualifiedStarTestResults( 39 srcName *tree.TableName, srcMeta tree.ColumnSourceMeta, 40 ) (string, string, error) { 41 s, ok := srcMeta.(*scope) 42 if !ok { 43 return "", "", fmt.Errorf("resolver did not return *scope, found %T instead", srcMeta) 44 } 45 nl := make(tree.NameList, 0, len(s.cols)) 46 for i := range s.cols { 47 col := s.cols[i] 48 if col.table == *srcName && !col.hidden { 49 nl = append(nl, col.name) 50 } 51 } 52 return srcName.String(), nl.String(), nil 53 } 54 55 // ResolveColumnItemTestResults is part of the 56 // sqlutils.ColumnItemResolverTester interface. 57 func (s *scope) ResolveColumnItemTestResults(colRes tree.ColumnResolutionResult) (string, error) { 58 col, ok := colRes.(*scopeColumn) 59 if !ok { 60 return "", fmt.Errorf("resolver did not return *scopeColumn, found %T instead", colRes) 61 } 62 return fmt.Sprintf("%s.%s", col.table.String(), col.name), nil 63 } 64 65 func TestResolveQualifiedStar(t *testing.T) { 66 s := &scope{} 67 sqlutils.RunResolveQualifiedStarTest(t, s) 68 } 69 70 func TestResolveColumnItem(t *testing.T) { 71 s := &scope{} 72 sqlutils.RunResolveColumnItemTest(t, s) 73 }