From c1e50fb25633739f8bf3ff68f380734dddeddab7 Mon Sep 17 00:00:00 2001 From: Oliver Tan Date: Mon, 24 Oct 2022 22:15:55 +1100 Subject: [PATCH] make WrapFunction not panic --- parser_test.go | 2 +- pkg/sql/sem/tree/function_name.go | 3 +-- snapshot.sh | 3 +++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/parser_test.go b/parser_test.go index fa7825f..71b38f5 100644 --- a/parser_test.go +++ b/parser_test.go @@ -8,6 +8,6 @@ import ( ) func TestParser(t *testing.T) { - _, err := parser.Parse("SELECT 1") + _, err := parser.Parse("CREATE TABLE t (a TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP)") require.NoError(t, err) } diff --git a/pkg/sql/sem/tree/function_name.go b/pkg/sql/sem/tree/function_name.go index 07c8583..5b7cfd5 100644 --- a/pkg/sql/sem/tree/function_name.go +++ b/pkg/sql/sem/tree/function_name.go @@ -19,7 +19,6 @@ import ( "github.com/cockroachdb/cockroachdb-parser/pkg/sql/pgwire/pgerror" "github.com/cockroachdb/cockroachdb-parser/pkg/sql/sem/catconstants" "github.com/cockroachdb/errors" - "github.com/cockroachdb/redact" "github.com/lib/pq/oid" ) @@ -144,7 +143,7 @@ type CustomBuiltinFunctionWrapper interface { func WrapFunction(n string) ResolvableFunctionReference { fd, ok := FunDefs[n] if !ok { - panic(errors.AssertionFailedf("function %s() not defined", redact.Safe(n))) + return ResolvableFunctionReference{&FunctionDefinition{Name: n}} } return ResolvableFunctionReference{fd} } diff --git a/snapshot.sh b/snapshot.sh index 8f2230a..e5430bb 100755 --- a/snapshot.sh +++ b/snapshot.sh @@ -42,6 +42,9 @@ rm pkg/sql/lexbase/.gitignore pkg/sql/parser/.gitignore find pkg -type f -name '*_test.go' | xargs rm # sed replace any instances of cockroachdb find pkg -type f -name '*.go' | xargs sed -i '' -e 's_github\.com/cockroachdb/cockroach/_github.com/cockroachdb/cockroachdb-parser/_g' +# replace WrapFunction +sed -i '' -e 's_panic(errors.AssertionFailedf("function %s() not defined", redact.Safe(n)))_return ResolvableFunctionReference{\&FunctionDefinition{Name: n}}_g' pkg/sql/sem/tree/function_name.go +goimports -w pkg/sql/sem/tree/function_name.go echo "Cleaning up go and testing everything works" go mod tidy