Files
2026-07-13 12:32:25 +08:00

57 lines
1.6 KiB
Go

// Copyright 2024 Dolthub, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package settings
import (
"strings"
"github.com/dolthub/go-mysql-server/sql"
)
// GetCurrentSchemas returns all the schemas in the search_path setting, with elements like "$user" excluded
func GetCurrentSchemas(ctx *sql.Context) ([]string, error) {
searchPathVar, err := ctx.GetSessionVariable(ctx, "search_path")
if err != nil {
return nil, err
}
pathElems := strings.Split(searchPathVar.(string), ",")
var path []string
for _, schemaName := range pathElems {
schemaName = strings.Trim(schemaName, " ")
if schemaName == "\"$user\"" {
continue
}
path = append(path, schemaName)
}
return path, nil
}
// GetCurrentSchemasAsMap returns the schemas from the search_path setting as a map for easy lookup. Any
// elements like "$user" are excluded.
func GetCurrentSchemasAsMap(ctx *sql.Context) (map[string]struct{}, error) {
schemas, err := GetCurrentSchemas(ctx)
if err != nil {
return nil, err
}
schemaMap := make(map[string]struct{}, len(schemas))
for _, schema := range schemas {
schemaMap[schema] = struct{}{}
}
return schemaMap, nil
}