Skip to content
This repository was archived by the owner on Jan 28, 2021. It is now read-only.

Commit 676f862

Browse files
Ensure that keys in view registry are always lowercase
Signed-off-by: Alejandro García Montoro <alejandro.garciamontoro@gmail.com>
1 parent 4764cae commit 676f862

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

sql/viewregistry.go

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package sql
22

33
import (
4+
"strings"
45
"sync"
56

67
"gopkg.in/src-d/go-errors.v1"
78
)
89

9-
var ErrExistingView = errors.NewKind("the view %s.%s already exists in the registry")
10-
var ErrNonExistingView = errors.NewKind("the view %s.%s does not exist in the registry")
10+
var (
11+
ErrExistingView = errors.NewKind("the view %s.%s already exists in the registry")
12+
ErrNonExistingView = errors.NewKind("the view %s.%s does not exist in the registry")
13+
)
1114

1215
type View struct {
1316
Name string
@@ -18,6 +21,11 @@ type viewKey struct {
1821
dbName, viewName string
1922
}
2023

24+
// Creates a viewKey ensuring both names are lowercase
25+
func newViewKey(databaseName, viewName string) viewKey {
26+
return viewKey{strings.ToLower(databaseName), strings.ToLower(viewName)}
27+
}
28+
2129
type ViewRegistry struct {
2230
mutex sync.RWMutex
2331
views map[viewKey]View
@@ -33,7 +41,7 @@ func (registry *ViewRegistry) Register(database string, view View) error {
3341
registry.mutex.Lock()
3442
defer registry.mutex.Unlock()
3543

36-
key := viewKey{database, view.Name}
44+
key := newViewKey(database, view.Name)
3745

3846
if _, ok := registry.views[key]; ok {
3947
return ErrExistingView.New(database, view.Name)
@@ -43,8 +51,10 @@ func (registry *ViewRegistry) Register(database string, view View) error {
4351
return nil
4452
}
4553

54+
// Deletes the view specified by the pair {databaseName, viewName}, returning
55+
// an error if it does not exist
4656
func (registry *ViewRegistry) Delete(databaseName, viewName string) error {
47-
key := viewKey{databaseName, viewName}
57+
key := newViewKey(databaseName, viewName)
4858

4959
if _, ok := registry.views[key]; !ok {
5060
return ErrNonExistingView.New(databaseName, viewName)
@@ -58,7 +68,7 @@ func (registry *ViewRegistry) View(databaseName, viewName string) (*View, error)
5868
registry.mutex.RLock()
5969
defer registry.mutex.RUnlock()
6070

61-
key := viewKey{databaseName, viewName}
71+
key := newViewKey(databaseName, viewName)
6272

6373
if view, ok := registry.views[key]; ok {
6474
return &view, nil

0 commit comments

Comments
 (0)