Files
upstream-sqlc/internal/sql/catalog/extension.go
upstream-mirror 0f4df23290
Some checks failed
kotlin / test (push) Has been skipped
python / test (push) Has been skipped
typescript / test (push) Has been skipped
go / build darwin/amd64 (push) Has been cancelled
go / build linux/amd64 (push) Has been cancelled
go / build windows/amd64 (push) Has been cancelled
go / build darwin/arm64 (push) Has been cancelled
go / build linux/arm64 (push) Has been cancelled
go / build windows/arm64 (push) Has been cancelled
go / test (push) Has been cancelled
go / vuln_check (push) Has been cancelled
snapshot of https://github.com/sqlc-dev/sqlc.git (main, 2026-09-16; blobs > 131072B omitted)
2026-09-16 02:17:34 +05:00

42 lines
998 B
Go

package catalog
import (
"github.com/sqlc-dev/sqlc/internal/sql/ast"
)
func (c *Catalog) createExtension(stmt *ast.CreateExtensionStmt) error {
if stmt.Extname == nil {
return nil
}
// TODO: Implement IF NOT EXISTS
return c.loadExtension(*stmt.Extname)
}
// loadExtension adds what the engine knows of the named extension — or of
// the virtual table module that stands for one — to the default schema,
// once. An engine without extension data, or without data for this one,
// adds nothing.
func (c *Catalog) loadExtension(name string) error {
if _, exists := c.Extensions[name]; exists {
return nil
}
if c.LoadExtension == nil {
return nil
}
ext := c.LoadExtension(name)
if ext == nil {
return nil
}
if c.Extensions == nil {
c.Extensions = map[string]struct{}{}
}
c.Extensions[name] = struct{}{}
s, err := c.getSchema(c.DefaultSchema)
if err != nil {
return err
}
// TODO: Error on duplicate functions
s.Funcs = append(s.Funcs, ext.Funcs...)
return nil
}