From e5187f47873a3c6856f7d6313dbe764ee9ee7c40 Mon Sep 17 00:00:00 2001 From: Alex Eustis Date: Mon, 8 Aug 2022 15:23:29 -0700 Subject: [PATCH 1/4] expose FuncGet --- expr/funcs.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/expr/funcs.go b/expr/funcs.go index 5102b4f6..07f04d39 100644 --- a/expr/funcs.go +++ b/expr/funcs.go @@ -72,6 +72,11 @@ func (m *FuncRegistry) Add(name string, fn CustomFunc) { m.funcs[name] = newFunc } +// FuncGet gets a function from the global registry if it exists. +func FuncGet(name string) (Func, bool) { + return funcReg.FuncGet(name) +} + // FuncGet gets a function from registry if it exists. func (m *FuncRegistry) FuncGet(name string) (Func, bool) { m.mu.RLock() From a9251ea28df0dc93afac393731fbc761d4821c94 Mon Sep 17 00:00:00 2001 From: Alex Eustis Date: Mon, 8 Aug 2022 15:25:39 -0700 Subject: [PATCH 2/4] rename --- expr/funcs.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/expr/funcs.go b/expr/funcs.go index 07f04d39..c2127c4c 100644 --- a/expr/funcs.go +++ b/expr/funcs.go @@ -72,8 +72,8 @@ func (m *FuncRegistry) Add(name string, fn CustomFunc) { m.funcs[name] = newFunc } -// FuncGet gets a function from the global registry if it exists. -func FuncGet(name string) (Func, bool) { +// GetFunc gets a function from the global registry if it exists. +func GetFunc(name string) (Func, bool) { return funcReg.FuncGet(name) } From 85819656bbbd8953747ff1262aebc867c2e06587 Mon Sep 17 00:00:00 2001 From: Alex Eustis Date: Mon, 8 Aug 2022 15:36:59 -0700 Subject: [PATCH 3/4] ensure funcs are loaded --- expr/funcs.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/expr/funcs.go b/expr/funcs.go index c2127c4c..a31ea342 100644 --- a/expr/funcs.go +++ b/expr/funcs.go @@ -4,6 +4,7 @@ import ( "strings" "sync" + "github.com/lytics/qlbridge/expr/builtins" "github.com/lytics/qlbridge/value" ) @@ -74,6 +75,7 @@ func (m *FuncRegistry) Add(name string, fn CustomFunc) { // GetFunc gets a function from the global registry if it exists. func GetFunc(name string) (Func, bool) { + builtins.LoadAllBuiltins() // This is behind a sync.Once return funcReg.FuncGet(name) } From e82943d4eea7828dcbfe6b7c6686c933dfc9d505 Mon Sep 17 00:00:00 2001 From: Alex Eustis Date: Mon, 8 Aug 2022 15:45:35 -0700 Subject: [PATCH 4/4] fix import cycle --- expr/builtins/builtins.go | 6 ++++++ expr/funcs.go | 12 +++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/expr/builtins/builtins.go b/expr/builtins/builtins.go index c85bb0a6..c4acde68 100644 --- a/expr/builtins/builtins.go +++ b/expr/builtins/builtins.go @@ -141,6 +141,12 @@ func LoadAllBuiltins() { }) } +// GetFunc gets a function from the global registry if it exists. +func GetFunc(name string) (expr.Func, bool) { + LoadAllBuiltins() // This is behind a sync.Once + return expr.FuncGet(name) +} + // uuid generates a new uuid // // uuid() => "...." diff --git a/expr/funcs.go b/expr/funcs.go index a31ea342..77f589b9 100644 --- a/expr/funcs.go +++ b/expr/funcs.go @@ -4,7 +4,6 @@ import ( "strings" "sync" - "github.com/lytics/qlbridge/expr/builtins" "github.com/lytics/qlbridge/value" ) @@ -73,12 +72,6 @@ func (m *FuncRegistry) Add(name string, fn CustomFunc) { m.funcs[name] = newFunc } -// GetFunc gets a function from the global registry if it exists. -func GetFunc(name string) (Func, bool) { - builtins.LoadAllBuiltins() // This is behind a sync.Once - return funcReg.FuncGet(name) -} - // FuncGet gets a function from registry if it exists. func (m *FuncRegistry) FuncGet(name string) (Func, bool) { m.mu.RLock() @@ -91,3 +84,8 @@ func (m *FuncRegistry) FuncGet(name string) (Func, bool) { func FuncAdd(name string, fn CustomFunc) { funcReg.Add(name, fn) } + +// FuncGet gets a function from the global registry if it exists. +func FuncGet(name string) (Func, bool) { + return funcReg.FuncGet(name) +}