snapshot of https://github.com/sqlc-dev/sqlc.git (main, 2026-09-16; blobs > 131072B omitted)
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
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
This commit is contained in:
41
internal/sql/catalog/extension.go
Normal file
41
internal/sql/catalog/extension.go
Normal file
@@ -0,0 +1,41 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user