From 5364e3b658a8035b62b1624b18a33351ae6f469c Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Wed, 18 Nov 2020 21:19:28 -0800 Subject: [PATCH 01/23] dolphin: Add a subset of math func signatures --- internal/engine/dolphin/stdlib.go | 199 ++++++++++++++++++++++++------ 1 file changed, 162 insertions(+), 37 deletions(-) diff --git a/internal/engine/dolphin/stdlib.go b/internal/engine/dolphin/stdlib.go index 71a20b1e37..94f5db6cb4 100644 --- a/internal/engine/dolphin/stdlib.go +++ b/internal/engine/dolphin/stdlib.go @@ -8,16 +8,77 @@ import ( func defaultSchema(name string) *catalog.Schema { s := &catalog.Schema{Name: name} s.Funcs = []*catalog.Function{ - { - Name: "ABS", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ABS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "tinyint"}, + }, + }, + ReturnType: &ast.TypeName{Name: "tinyint"}, }, { - Name: "ACOS", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ABS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "smallint"}, + }, + }, + ReturnType: &ast.TypeName{Name: "smallint"}, + }, + { + Name: "ABS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "mediumint"}, + }, + }, + ReturnType: &ast.TypeName{Name: "mediumint"}, + }, + { + Name: "ABS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, + }, + { + Name: "ABS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "bigint"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bigint"}, + }, + { + Name: "ABS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double"}, + }, + { + Name: "ABS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, + }, + { + Name: "ACOS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, }, { Name: "ADDDATE", @@ -50,19 +111,31 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ASIN", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ASIN", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, }, { - Name: "ATAN", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ATAN", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, }, { - Name: "ATAN2", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ATAN2", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, }, { Name: "AVG", @@ -115,14 +188,40 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "CEIL", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "CEIL", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "CEILING", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "CEIL", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, + }, + { + Name: "CEILING", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, + }, + { + Name: "CEILING", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, }, { Name: "CHAR", @@ -180,9 +279,19 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "CONV", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "CONV", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "CONVERT", @@ -195,14 +304,22 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "COS", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "COS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, }, { - Name: "COT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "COT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, }, { Name: "COUNT", @@ -219,9 +336,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "bigint"}, }, { - Name: "CRC32", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "CRC32", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "CUME_DIST", @@ -344,9 +465,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "DEGREES", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "DEGREES", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "DENSE_RANK", From 78da44e9f7210244ca4ef764c9d6b89838c8c79c Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Wed, 18 Nov 2020 21:30:05 -0800 Subject: [PATCH 02/23] dolphin: Add FROM_UNIXTIME signature Fixes #655 --- internal/engine/dolphin/stdlib.go | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/internal/engine/dolphin/stdlib.go b/internal/engine/dolphin/stdlib.go index 94f5db6cb4..a63690b6d6 100644 --- a/internal/engine/dolphin/stdlib.go +++ b/internal/engine/dolphin/stdlib.go @@ -564,9 +564,25 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "FROM_UNIXTIME", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "FROM_UNIXTIME", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "bigint"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, + }, + { + Name: "FROM_UNIXTIME", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "bigint"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "GEOMCOLLECTION", From ff270b27edf892e7d88b25afe307052b200e3451 Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Wed, 18 Nov 2020 21:35:49 -0800 Subject: [PATCH 03/23] dolphin: flow control function signatures --- internal/engine/dolphin/stdlib.go | 36 +++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/internal/engine/dolphin/stdlib.go b/internal/engine/dolphin/stdlib.go index a63690b6d6..600e6c0ecf 100644 --- a/internal/engine/dolphin/stdlib.go +++ b/internal/engine/dolphin/stdlib.go @@ -645,13 +645,30 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "IF", - Args: []*catalog.Argument{}, + Name: "IF", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "IFNULL", - Args: []*catalog.Argument{}, + Name: "IFNULL", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { @@ -1150,8 +1167,15 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "NULLIF", - Args: []*catalog.Argument{}, + Name: "NULLIF", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { From cfbba66b4c752b376977c73394bb0a8ccffb8a96 Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Wed, 18 Nov 2020 21:37:29 -0800 Subject: [PATCH 04/23] dolphin: Add ISNULL function signature Fixes #630 --- internal/engine/dolphin/stdlib.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/internal/engine/dolphin/stdlib.go b/internal/engine/dolphin/stdlib.go index 600e6c0ecf..cb6d1a6e44 100644 --- a/internal/engine/dolphin/stdlib.go +++ b/internal/engine/dolphin/stdlib.go @@ -707,9 +707,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ISNULL", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ISNULL", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { Name: "IS_FREE_LOCK", From f00f426e7c8a44d4930c7de28655c6058ab4b795 Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Wed, 18 Nov 2020 21:54:51 -0800 Subject: [PATCH 05/23] dolphin: Add STRCMP function signature --- internal/engine/dolphin/stdlib.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/internal/engine/dolphin/stdlib.go b/internal/engine/dolphin/stdlib.go index cb6d1a6e44..f39ffa05e8 100644 --- a/internal/engine/dolphin/stdlib.go +++ b/internal/engine/dolphin/stdlib.go @@ -1473,9 +1473,16 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "STRCMP", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "STRCMP", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "tinyint"}, }, { Name: "STR_TO_DATE", From 0adacfd2e709dc8eac2ff5552b2ace48bcbad609 Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Sun, 22 Nov 2020 10:12:28 -0800 Subject: [PATCH 06/23] dolphin: Add aggregate function signatures --- internal/engine/dolphin/stdlib.go | 143 ++++++++++++++++++++++-------- 1 file changed, 107 insertions(+), 36 deletions(-) diff --git a/internal/engine/dolphin/stdlib.go b/internal/engine/dolphin/stdlib.go index f39ffa05e8..4275e86ec9 100644 --- a/internal/engine/dolphin/stdlib.go +++ b/internal/engine/dolphin/stdlib.go @@ -138,8 +138,12 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "double precision"}, }, { - Name: "AVG", - Args: []*catalog.Argument{}, + Name: "AVG", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { @@ -158,8 +162,12 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "BIT_AND", - Args: []*catalog.Argument{}, + Name: "BIT_AND", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { @@ -173,13 +181,21 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "BIT_OR", - Args: []*catalog.Argument{}, + Name: "BIT_OR", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "BIT_XOR", - Args: []*catalog.Argument{}, + Name: "BIT_XOR", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { @@ -615,8 +631,12 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "GROUP_CONCAT", - Args: []*catalog.Argument{}, + Name: "GROUP_CONCAT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { @@ -756,9 +776,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "JSON_ARRAYAGG", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "JSON_ARRAYAGG", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "json"}, }, { Name: "JSON_ARRAY_APPEND", @@ -826,9 +850,16 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "JSON_OBJECTAGG", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "JSON_OBJECTAGG", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "json"}, }, { Name: "JSON_OVERLAPS", @@ -1046,8 +1077,12 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "MAX", - Args: []*catalog.Argument{}, + Name: "MAX", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { @@ -1111,8 +1146,12 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "MIN", - Args: []*catalog.Argument{}, + Name: "MIN", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { @@ -1453,23 +1492,39 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "STD", - Args: []*catalog.Argument{}, + Name: "STD", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "STDDEV", - Args: []*catalog.Argument{}, + Name: "STDDEV", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "STDDEV_POP", - Args: []*catalog.Argument{}, + Name: "STDDEV_POP", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "STDDEV_SAMP", - Args: []*catalog.Argument{}, + Name: "STDDEV_SAMP", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { @@ -1965,8 +2020,12 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "SUM", - Args: []*catalog.Argument{}, + Name: "SUM", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { @@ -2135,18 +2194,30 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "VARIANCE", - Args: []*catalog.Argument{}, + Name: "VARIANCE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "VAR_POP", - Args: []*catalog.Argument{}, + Name: "VAR_POP", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "VAR_SAMP", - Args: []*catalog.Argument{}, + Name: "VAR_SAMP", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { From 2768583ce92a67b4bf1eef38b6060a40036d98db Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Sun, 22 Nov 2020 11:08:57 -0800 Subject: [PATCH 07/23] dolphin: Add all JSON function signatures --- internal/engine/dolphin/stdlib.go | 458 ++++++++++++++++++++++++------ 1 file changed, 374 insertions(+), 84 deletions(-) diff --git a/internal/engine/dolphin/stdlib.go b/internal/engine/dolphin/stdlib.go index 4275e86ec9..1b7c0e2eec 100644 --- a/internal/engine/dolphin/stdlib.go +++ b/internal/engine/dolphin/stdlib.go @@ -771,9 +771,14 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "JSON_ARRAY", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "JSON_ARRAY", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + Mode: ast.FuncParamVariadic, + }, + }, + ReturnType: &ast.TypeName{Name: "json"}, }, { Name: "JSON_ARRAYAGG", @@ -785,69 +790,232 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "json"}, }, { - Name: "JSON_ARRAY_APPEND", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "JSON_ARRAY_APPEND", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + Mode: ast.FuncParamVariadic, + }, + }, + ReturnType: &ast.TypeName{Name: "json"}, }, { - Name: "JSON_ARRAY_INSERT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "JSON_ARRAY_INSERT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + Mode: ast.FuncParamVariadic, + }, + }, + ReturnType: &ast.TypeName{Name: "json"}, }, { - Name: "JSON_CONTAINS", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "JSON_CONTAINS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { - Name: "JSON_CONTAINS_PATH", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "JSON_CONTAINS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { - Name: "JSON_DEPTH", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "JSON_CONTAINS_PATH", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + Mode: ast.FuncParamVariadic, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { - Name: "JSON_EXTRACT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "JSON_DEPTH", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "JSON_INSERT", - Args: []*catalog.Argument{}, + Name: "JSON_EXTRACT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + Mode: ast.FuncParamVariadic, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "JSON_KEYS", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "JSON_INSERT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + Mode: ast.FuncParamVariadic, + }, + }, + ReturnType: &ast.TypeName{Name: "json"}, }, { - Name: "JSON_LENGTH", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "JSON_KEYS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "json"}, }, { - Name: "JSON_MERGE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "JSON_KEYS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "json"}, }, { - Name: "JSON_MERGE_PATCH", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "JSON_LENGTH", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "JSON_MERGE_PRESERVE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "JSON_LENGTH", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "JSON_OBJECT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "JSON_MERGE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + Mode: ast.FuncParamVariadic, + }, + }, + ReturnType: &ast.TypeName{Name: "json"}, + }, + { + Name: "JSON_MERGE_PATCH", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + Mode: ast.FuncParamVariadic, + }, + }, + ReturnType: &ast.TypeName{Name: "json"}, + }, + { + Name: "JSON_MERGE_PRESERVE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + Mode: ast.FuncParamVariadic, + }, + }, + ReturnType: &ast.TypeName{Name: "json"}, + }, + { + Name: "JSON_OBJECT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + Mode: ast.FuncParamVariadic, + }, + }, + ReturnType: &ast.TypeName{Name: "json"}, }, { Name: "JSON_OBJECTAGG", @@ -862,83 +1030,205 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "json"}, }, { - Name: "JSON_OVERLAPS", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "JSON_OVERLAPS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { - Name: "JSON_PRETTY", - Args: []*catalog.Argument{}, + Name: "JSON_PRETTY", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "JSON_QUOTE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "JSON_QUOTE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "JSON_REMOVE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "JSON_REMOVE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + Mode: ast.FuncParamVariadic, + }, + }, + ReturnType: &ast.TypeName{Name: "json"}, }, { - Name: "JSON_REPLACE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "JSON_REPLACE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + Mode: ast.FuncParamVariadic, + }, + }, + ReturnType: &ast.TypeName{Name: "json"}, }, { - Name: "JSON_SCHEMA_VALID", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "JSON_SCHEMA_VALID", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { - Name: "JSON_SCHEMA_VALIDATION_REPORT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "JSON_SCHEMA_VALIDATION_REPORT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "json"}, }, { - Name: "JSON_SCHEMA_VALIDATION_REPORT", - Args: []*catalog.Argument{}, + Name: "JSON_SEARCH", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "JSON_SEARCH", - Args: []*catalog.Argument{}, + Name: "JSON_SEARCH", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + Mode: ast.FuncParamVariadic, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "JSON_SET", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "JSON_SET", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + Mode: ast.FuncParamVariadic, + }, + }, + ReturnType: &ast.TypeName{Name: "json"}, }, { - Name: "JSON_STORAGE_FREE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "JSON_STORAGE_FREE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "JSON_STORAGE_SIZE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "JSON_STORAGE_SIZE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "JSON_TYPE", - Args: []*catalog.Argument{}, + Name: "JSON_TYPE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "JSON_UNQUOTE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "JSON_UNQUOTE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "json"}, }, { - Name: "JSON_VALID", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "JSON_VALID", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { - Name: "JSON_VALUE", - Args: []*catalog.Argument{}, + Name: "JSON_VALUE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { From 6932ff153ef2fe014b5a380d206546eeded7fac4 Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Sun, 22 Nov 2020 11:23:10 -0800 Subject: [PATCH 08/23] dolphin: Add signatures for mathematical functions --- internal/engine/dolphin/stdlib.go | 241 +++++++++++++++++++++++------- 1 file changed, 185 insertions(+), 56 deletions(-) diff --git a/internal/engine/dolphin/stdlib.go b/internal/engine/dolphin/stdlib.go index 1b7c0e2eec..8e59a4a323 100644 --- a/internal/engine/dolphin/stdlib.go +++ b/internal/engine/dolphin/stdlib.go @@ -505,9 +505,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "EXP", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "EXP", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, }, { Name: "EXPORT_SET", @@ -545,14 +549,25 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "FLOOR", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "FLOOR", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "FORMAT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "FORMAT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "FORMAT_BYTES", @@ -650,9 +665,22 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "HEX", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "HEX", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, + }, + { + Name: "HEX", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "HOUR", @@ -1292,9 +1320,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "LN", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "LN", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, }, { Name: "LOAD_FILE", @@ -1317,19 +1349,43 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "LOG", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "LOG", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, }, { - Name: "LOG10", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "LOG", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "LOG2", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "LOG10", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, + }, + { + Name: "LOG2", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "LOWER", @@ -1450,9 +1506,16 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "MOD", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "MOD", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "MONTH", @@ -1549,7 +1612,7 @@ func defaultSchema(name string) *catalog.Schema { { Name: "PI", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "double precision"}, }, { Name: "POINT", @@ -1572,14 +1635,28 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "POW", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "POW", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, }, { - Name: "POWER", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "POWER", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, }, { Name: "PS_CURRENT_THREAD_ID", @@ -1602,14 +1679,27 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "RADIANS", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "RADIANS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, }, { Name: "RAND", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "double precision"}, + }, + { + Name: "RAND", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, }, { Name: "RANDOM_BYTES", @@ -1682,9 +1772,25 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ROUND", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ROUND", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, + }, + { + Name: "ROUND", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, }, { Name: "ROW_COUNT", @@ -1742,14 +1848,22 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "SIGN", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "SIGN", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "SIN", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "SIN", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, }, { Name: "SLEEP", @@ -1767,9 +1881,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "SQRT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "SQRT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, }, { Name: "STATEMENT_DIGEST", @@ -2334,9 +2452,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "TAN", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "TAN", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, }, { Name: "TIME", @@ -2399,9 +2521,16 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "TRUNCATE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "TRUNCATE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "UCASE", From 71143640780cf13ddf7f05f603ac17848f1319c6 Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Sun, 22 Nov 2020 12:23:11 -0800 Subject: [PATCH 09/23] dolphin: Add string function signatures --- internal/engine/dolphin/stdlib.go | 697 +++++++++++++++++++++++------- 1 file changed, 530 insertions(+), 167 deletions(-) diff --git a/internal/engine/dolphin/stdlib.go b/internal/engine/dolphin/stdlib.go index 8e59a4a323..7c19f7470f 100644 --- a/internal/engine/dolphin/stdlib.go +++ b/internal/engine/dolphin/stdlib.go @@ -106,9 +106,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ASCII", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ASCII", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "ASIN", @@ -152,9 +156,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "BIN", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "BIN", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "BIN_TO_UUID", @@ -176,9 +184,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "BIT_LENGTH", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "BIT_LENGTH", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "BIT_OR", @@ -240,14 +252,26 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "double precision"}, }, { - Name: "CHAR", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "CHAR", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + Mode: ast.FuncParamVariadic, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "CHARACTER_LENGTH", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "CHARACTER_LENGTH", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "CHARSET", @@ -255,9 +279,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "CHAR_LENGTH", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "CHAR_LENGTH", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "COALESCE", @@ -280,14 +308,33 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "CONCAT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "CONCAT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + Mode: ast.FuncParamVariadic, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "CONCAT_WS", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "CONCAT_WS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + Mode: ast.FuncParamVariadic, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "CONNECTION_ID", @@ -500,9 +547,17 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ELT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ELT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + Mode: ast.FuncParamVariadic, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "EXP", @@ -514,14 +569,58 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "double precision"}, }, { - Name: "EXPORT_SET", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "EXPORT_SET", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "EXTRACT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "EXPORT_SET", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, + }, + { + Name: "EXPORT_SET", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "EXTRACT", @@ -534,14 +633,32 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "FIELD", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "FIELD", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + Mode: ast.FuncParamVariadic, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "FIND_IN_SET", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "FIND_IN_SET", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "FIRST_VALUE", @@ -585,9 +702,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "FROM_BASE64", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "FROM_BASE64", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "FROM_DAYS", @@ -740,14 +861,34 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "INSERT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "INSERT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "INSTR", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "INSTR", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "INTERVAL", @@ -1280,9 +1421,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "LCASE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "LCASE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "LEAD", @@ -1295,14 +1440,25 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "LEFT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "LEFT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "LENGTH", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "LENGTH", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "LIKE_RANGE_MAX", @@ -1329,9 +1485,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "double precision"}, }, { - Name: "LOAD_FILE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "LOAD_FILE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "LOCALTIME", @@ -1344,27 +1504,49 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "LOCATE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, - }, - { - Name: "LOG", + Name: "LOCATE", Args: []*catalog.Argument{ { - Type: &ast.TypeName{Name: "double precision"}, + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, }, }, - ReturnType: &ast.TypeName{Name: "double precision"}, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "LOG", + Name: "LOCATE", Args: []*catalog.Argument{ { - Type: &ast.TypeName{Name: "double precision"}, + Type: &ast.TypeName{Name: "text"}, }, { - Type: &ast.TypeName{Name: "int"}, + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, + }, + { + Name: "LOG", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, + }, + { + Name: "LOG", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + { + Type: &ast.TypeName{Name: "int"}, }, }, ReturnType: &ast.TypeName{Name: "int"}, @@ -1388,19 +1570,37 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "LOWER", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "LOWER", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "LPAD", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "LPAD", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "LTRIM", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "LTRIM", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "MAKEDATE", @@ -1413,9 +1613,20 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "MAKE_SET", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "MAKE_SET", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + Mode: ast.FuncParamVariadic, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "MASTER_POS_WAIT", @@ -1487,9 +1698,19 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "MID", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "MID", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "MIN", @@ -1575,19 +1796,31 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "OCT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "OCT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "bigint"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "OCTET_LENGTH", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "OCTET_LENGTH", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "ORD", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ORD", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "PASSWORD", @@ -1625,14 +1858,16 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "POSITION", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, - }, - { - Name: "POSITION", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "POSITION", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "POW", @@ -1674,9 +1909,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "QUOTE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "QUOTE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "RADIANS", @@ -1742,29 +1981,52 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "REPEAT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, - }, - { - Name: "REPLACE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "REPEAT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "REVERSE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "REPLACE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "REVERSE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "REVERSE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "RIGHT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "RIGHT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "ROLES_GRAPHML", @@ -1803,14 +2065,28 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "RPAD", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "RPAD", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "RTRIM", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "RTRIM", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "SCHEMA", @@ -1871,14 +2147,22 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "SOUNDEX", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "SOUNDEX", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "SPACE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "SPACE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "SQRT", @@ -2403,24 +2687,73 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "SUBSTR", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "SUBSTR", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "SUBSTRING", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "SUBSTR", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "SUBSTRING", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "SUBSTRING", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "SUBSTRING_INDEX", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "SUBSTRING", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, + }, + { + Name: "SUBSTRING_INDEX", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "SUBTIME", @@ -2496,9 +2829,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "TO_BASE64", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "TO_BASE64", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "TO_DAYS", @@ -2511,14 +2848,25 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "TRIM", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "TRIM", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "TRIM", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "TRIM", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "TRUNCATE", @@ -2533,9 +2881,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "UCASE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "UCASE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "UNCOMPRESS", @@ -2548,9 +2900,12 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "UNHEX", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "UNHEX", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, }, { Name: "UNIX_TIMESTAMP", @@ -2563,9 +2918,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "UPPER", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "UPPER", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "USER", @@ -2670,8 +3029,12 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "WEIGHT_STRING", - Args: []*catalog.Argument{}, + Name: "WEIGHT_STRING", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { From bb0f30654ec0a71b9d8c7718763f1a4d94606baa Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Sun, 22 Nov 2020 12:57:16 -0800 Subject: [PATCH 10/23] dolphin: Add date and time function signatures --- internal/engine/dolphin/stdlib.go | 692 ++++++++++++++++++++++-------- 1 file changed, 522 insertions(+), 170 deletions(-) diff --git a/internal/engine/dolphin/stdlib.go b/internal/engine/dolphin/stdlib.go index 7c19f7470f..9ee5d85355 100644 --- a/internal/engine/dolphin/stdlib.go +++ b/internal/engine/dolphin/stdlib.go @@ -81,14 +81,28 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "double precision"}, }, { - Name: "ADDDATE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ADDDATE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "date"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "date"}, }, { - Name: "ADDTIME", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ADDTIME", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "time"}, + }, + { + Type: &ast.TypeName{Name: "time"}, + }, + }, + ReturnType: &ast.TypeName{Name: "time"}, }, { Name: "AES_DECRYPT", @@ -362,9 +376,19 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "CONVERT_TZ", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "CONVERT_TZ", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "datetime"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "datetime"}, }, { Name: "COS", @@ -415,17 +439,12 @@ func defaultSchema(name string) *catalog.Schema { { Name: "CURDATE", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, - }, - { - Name: "CURDATE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "date"}, }, { Name: "CURRENT_DATE", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "date"}, }, { Name: "CURRENT_ROLE", @@ -435,12 +454,30 @@ func defaultSchema(name string) *catalog.Schema { { Name: "CURRENT_TIME", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "time"}, + }, + { + Name: "CURRENT_TIME", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "time"}, }, { Name: "CURRENT_TIMESTAMP", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "datetime"}, + }, + { + Name: "CURRENT_TIMESTAMP", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "datetime"}, }, { Name: "CURRENT_USER", @@ -450,12 +487,16 @@ func defaultSchema(name string) *catalog.Schema { { Name: "CURTIME", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "time"}, }, { - Name: "CURTIME", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "CURTIME", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "time"}, }, { Name: "DATABASE", @@ -463,64 +504,130 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "DATE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "DATE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "datetime"}, + }, + }, + ReturnType: &ast.TypeName{Name: "date"}, }, { - Name: "DATEDIFF", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "DATEDIFF", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "datetime"}, + }, + { + Type: &ast.TypeName{Name: "datetime"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "DATE_ADD", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "DATE_ADD", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "date"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "date"}, }, { - Name: "DATE_ADD_INTERVAL", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "DATE_ADD_INTERVAL", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "date"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "date"}, }, { - Name: "DATE_FORMAT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "DATE_FORMAT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "date"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "DATE_SUB", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "DATE_SUB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "date"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "date"}, }, { - Name: "DATE_SUB_INTERVAL", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "DATE_SUB_INTERVAL", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "date"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "date"}, }, { - Name: "DAY", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "DAY", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "date"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "DAYNAME", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "DAYNAME", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "date"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "DAYOFMONTH", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "DAYOFMONTH", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "date"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "DAYOFWEEK", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "DAYOFWEEK", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "date"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "DAYOFYEAR", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "DAYOFYEAR", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "date"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "DEFAULT", @@ -623,9 +730,16 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "EXTRACT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "EXTRACT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "date"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "EXTRACTVALUE", @@ -711,9 +825,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "FROM_DAYS", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "FROM_DAYS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "date"}, }, { Name: "FROM_UNIXTIME", @@ -747,9 +865,16 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "GET_FORMAT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "GET_FORMAT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "GET_LOCK", @@ -804,9 +929,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "HOUR", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "HOUR", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "time"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "ICU_VERSION", @@ -1406,9 +1535,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "LAST_DAY", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "LAST_DAY", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "date"}, + }, + }, + ReturnType: &ast.TypeName{Name: "date"}, }, { Name: "LAST_INSERT_ID", @@ -1496,12 +1629,31 @@ func defaultSchema(name string) *catalog.Schema { { Name: "LOCALTIME", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "datetime"}, }, + { + Name: "LOCALTIME", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "datetime"}, + }, + { Name: "LOCALTIMESTAMP", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "datetime"}, + }, + { + Name: "LOCALTIMESTAMP", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "datetime"}, }, { Name: "LOCATE", @@ -1603,14 +1755,31 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "MAKEDATE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "MAKEDATE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "date"}, }, { - Name: "MAKETIME", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "MAKETIME", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "time"}, }, { Name: "MAKE_SET", @@ -1693,9 +1862,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "MICROSECOND", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "MICROSECOND", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "time"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "MID", @@ -1722,9 +1895,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "MINUTE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "MINUTE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "time"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "MOD", @@ -1739,14 +1916,22 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "MONTH", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "MONTH", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "date"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "MONTHNAME", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "MONTHNAME", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "date"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "MULTILINESTRING", @@ -1771,7 +1956,16 @@ func defaultSchema(name string) *catalog.Schema { { Name: "NOW", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "datetime"}, + }, + { + Name: "NOW", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "datetime"}, }, { Name: "NTH_VALUE", @@ -1833,14 +2027,28 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "PERIOD_ADD", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "PERIOD_ADD", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "PERIOD_DIFF", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "PERIOD_DIFF", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "PI", @@ -1904,9 +2112,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "QUARTER", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "QUARTER", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "date"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "QUOTE", @@ -2094,14 +2306,22 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "SECOND", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "SECOND", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "time"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "SEC_TO_TIME", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "SEC_TO_TIME", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "time"}, }, { Name: "SESSION_USER", @@ -2232,9 +2452,16 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "tinyint"}, }, { - Name: "STR_TO_DATE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "STR_TO_DATE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "datetime"}, }, { Name: "ST_AREA", @@ -2677,14 +2904,16 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "SUBDATE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, - }, - { - Name: "SUBDATE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "SUBDATE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "date"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "date"}, }, { Name: "SUBSTR", @@ -2756,9 +2985,16 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "SUBTIME", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "SUBTIME", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "time"}, + }, + { + Type: &ast.TypeName{Name: "time"}, + }, + }, + ReturnType: &ast.TypeName{Name: "time"}, }, { Name: "SUM", @@ -2777,7 +3013,16 @@ func defaultSchema(name string) *catalog.Schema { { Name: "SYSDATE", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "datetime"}, + }, + { + Name: "SYSDATE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "datetime"}, }, { Name: "SYSTEM_USER", @@ -2794,39 +3039,97 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "double precision"}, }, { - Name: "TIME", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "TIME", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "datetime"}, + }, + }, + ReturnType: &ast.TypeName{Name: "time"}, }, { - Name: "TIMEDIFF", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "TIMEDIFF", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "time"}, + }, + { + Type: &ast.TypeName{Name: "time"}, + }, + }, + ReturnType: &ast.TypeName{Name: "time"}, }, { - Name: "TIMESTAMP", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "TIMESTAMP", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "datetime"}, + }, + }, + ReturnType: &ast.TypeName{Name: "datetime"}, }, { - Name: "TIMESTAMPADD", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "TIMESTAMP", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "datetime"}, + }, + { + Type: &ast.TypeName{Name: "datetime"}, + }, + }, + ReturnType: &ast.TypeName{Name: "datetime"}, }, { - Name: "TIMESTAMPDIFF", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "TIMESTAMPADD", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "datetime"}, + }, + }, + ReturnType: &ast.TypeName{Name: "datetime"}, }, { - Name: "TIME_FORMAT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "TIMESTAMPDIFF", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "datetime"}, + }, + { + Type: &ast.TypeName{Name: "datetime"}, + }, + }, + ReturnType: &ast.TypeName{Name: "datetime"}, }, { - Name: "TIME_TO_SEC", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "TIME_FORMAT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "time"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, + }, + { + Name: "TIME_TO_SEC", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "time"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "TO_BASE64", @@ -2838,14 +3141,22 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "TO_DAYS", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "TO_DAYS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "date"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "TO_SECONDS", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "TO_SECONDS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "datetime"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bigint"}, }, { Name: "TRIM", @@ -2910,7 +3221,16 @@ func defaultSchema(name string) *catalog.Schema { { Name: "UNIX_TIMESTAMP", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "bigint"}, + }, + { + Name: "UNIX_TIMESTAMP", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "datetime"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bigint"}, }, { Name: "UPDATEXML", @@ -2934,17 +3254,17 @@ func defaultSchema(name string) *catalog.Schema { { Name: "UTC_DATE", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "date"}, }, { Name: "UTC_TIME", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "time"}, }, { Name: "UTC_TIMESTAMP", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "datetime"}, }, { Name: "UUID", @@ -3014,19 +3334,43 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "WEEK", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "WEEK", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "date"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "WEEKDAY", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "WEEK", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "date"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "WEEKOFYEAR", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "WEEKDAY", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "date"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, + }, + { + Name: "WEEKOFYEAR", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "date"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "WEIGHT_STRING", @@ -3038,14 +3382,22 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "YEAR", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "YEAR", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "date"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "YEARWEEK", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "YEARWEEK", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "date"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, } return s From 25f2b38a79e7f5a697ed5a9ca58e4803853b711b Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Sun, 22 Nov 2020 13:01:21 -0800 Subject: [PATCH 11/23] dolphin: Add comparison operator function signatures --- internal/engine/dolphin/stdlib.go | 50 ++++++++++++++++++++++++------- 1 file changed, 39 insertions(+), 11 deletions(-) diff --git a/internal/engine/dolphin/stdlib.go b/internal/engine/dolphin/stdlib.go index 9ee5d85355..06e4f93e67 100644 --- a/internal/engine/dolphin/stdlib.go +++ b/internal/engine/dolphin/stdlib.go @@ -301,11 +301,6 @@ func defaultSchema(name string) *catalog.Schema { }, ReturnType: &ast.TypeName{Name: "int"}, }, - { - Name: "COALESCE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, - }, { Name: "COERCIBILITY", Args: []*catalog.Argument{}, @@ -882,8 +877,19 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "GREATEST", - Args: []*catalog.Argument{}, + Name: "GREATEST", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + Mode: ast.FuncParamVariadic, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { @@ -1020,8 +1026,19 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "INTERVAL", - Args: []*catalog.Argument{}, + Name: "INTERVAL", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + Mode: ast.FuncParamVariadic, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { @@ -1568,8 +1585,19 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "LEAST", - Args: []*catalog.Argument{}, + Name: "LEAST", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + Mode: ast.FuncParamVariadic, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { From 4f0c8361e37597782b0bac165da5666b18773c8d Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Sun, 22 Nov 2020 13:08:33 -0800 Subject: [PATCH 12/23] dolphin: Add encryption function signatures --- internal/engine/dolphin/stdlib.go | 169 +++++++++++++++++++++++------- 1 file changed, 130 insertions(+), 39 deletions(-) diff --git a/internal/engine/dolphin/stdlib.go b/internal/engine/dolphin/stdlib.go index 06e4f93e67..2dcb0707ef 100644 --- a/internal/engine/dolphin/stdlib.go +++ b/internal/engine/dolphin/stdlib.go @@ -105,14 +105,58 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "time"}, }, { - Name: "AES_DECRYPT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "AES_DECRYPT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "AES_ENCRYPT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "AES_DECRYPT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "binary"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, + }, + { + Name: "AES_ENCRYPT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "binary"}, + }, + { + Name: "AES_ENCRYPT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "binary"}, + }, + }, + ReturnType: &ast.TypeName{Name: "binary"}, }, { Name: "ANY_VALUE", @@ -312,9 +356,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "COMPRESS", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "COMPRESS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "binary"}, }, { Name: "CONCAT", @@ -1885,9 +1933,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "MD5", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "MD5", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "MICROSECOND", @@ -2181,9 +2233,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "double precision"}, }, { - Name: "RANDOM_BYTES", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "RANDOM_BYTES", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "binary"}, }, { Name: "RANK", @@ -2357,19 +2413,34 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "SHA", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "SHA", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "SHA1", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "SHA1", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "SHA2", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "SHA2", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "SIGN", @@ -2422,14 +2493,22 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "double precision"}, }, { - Name: "STATEMENT_DIGEST", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "STATEMENT_DIGEST", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "STATEMENT_DIGEST_TEXT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "STATEMENT_DIGEST_TEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "STD", @@ -3229,14 +3308,22 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "UNCOMPRESS", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "UNCOMPRESS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "UNCOMPRESSED_LENGTH", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "UNCOMPRESSED_LENGTH", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "UNHEX", @@ -3310,9 +3397,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "VALIDATE_PASSWORD_STRENGTH", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "VALIDATE_PASSWORD_STRENGTH", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "VALUES", From 5c9d95691bf882084ade73bfda36a34df5a67300 Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Sun, 22 Nov 2020 13:20:43 -0800 Subject: [PATCH 13/23] dolphin: Add miscellaneous function signatures --- internal/engine/dolphin/stdlib.go | 241 +++++++++++++++++++++++------- 1 file changed, 190 insertions(+), 51 deletions(-) diff --git a/internal/engine/dolphin/stdlib.go b/internal/engine/dolphin/stdlib.go index 2dcb0707ef..b2cb9037d3 100644 --- a/internal/engine/dolphin/stdlib.go +++ b/internal/engine/dolphin/stdlib.go @@ -159,8 +159,12 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "binary"}, }, { - Name: "ANY_VALUE", - Args: []*catalog.Argument{}, + Name: "ANY_VALUE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { @@ -223,9 +227,25 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "BIN_TO_UUID", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "BIN_TO_UUID", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, + }, + { + Name: "BIN_TO_UUID", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "tinyint"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "BIT_AND", @@ -673,8 +693,12 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "DEFAULT", - Args: []*catalog.Argument{}, + Name: "DEFAULT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { @@ -941,8 +965,16 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "GROUPING", - Args: []*catalog.Argument{}, + Name: "GROUPING", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + Mode: ast.FuncParamVariadic, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { @@ -1024,24 +1056,40 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "INET6_ATON", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "INET6_ATON", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "binary"}, }, { - Name: "INET6_NTOA", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "INET6_NTOA", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "INET_ATON", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "INET_ATON", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "INET_NTOA", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "INET_NTOA", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "INSERT", @@ -1104,24 +1152,40 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "IS_IPV4", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "IS_IPV4", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { - Name: "IS_IPV4_COMPAT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "IS_IPV4_COMPAT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { - Name: "IS_IPV4_MAPPED", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "IS_IPV4_MAPPED", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { - Name: "IS_IPV6", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "IS_IPV6", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { Name: "IS_USED_LOCK", @@ -1129,9 +1193,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "IS_UUID", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "IS_UUID", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { Name: "JSON_ARRAY", @@ -1874,9 +1942,49 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "MASTER_POS_WAIT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "MASTER_POS_WAIT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, + }, + { + Name: "MASTER_POS_WAIT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, + }, + { + Name: "MASTER_POS_WAIT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "MAX", @@ -2029,8 +2137,15 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "NAME_CONST", - Args: []*catalog.Argument{}, + Name: "NAME_CONST", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { @@ -2461,9 +2576,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "double precision"}, }, { - Name: "SLEEP", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "SLEEP", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "SOUNDEX", @@ -3384,17 +3503,33 @@ func defaultSchema(name string) *catalog.Schema { { Name: "UUID", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "UUID_SHORT", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "bigint"}, }, { - Name: "UUID_TO_BIN", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "UUID_TO_BIN", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "binary"}, + }, + { + Name: "UUID_TO_BIN", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "tinyint"}, + }, + }, + ReturnType: &ast.TypeName{Name: "binary"}, }, { Name: "VALIDATE_PASSWORD_STRENGTH", @@ -3406,8 +3541,12 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "VALUES", - Args: []*catalog.Argument{}, + Name: "VALUES", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { From 32a7199b96726751d074e968ff04680467326466 Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Sun, 22 Nov 2020 13:26:45 -0800 Subject: [PATCH 14/23] dolphin: Add information function signatures --- internal/engine/dolphin/stdlib.go | 71 ++++++++++++++++++++----------- 1 file changed, 45 insertions(+), 26 deletions(-) diff --git a/internal/engine/dolphin/stdlib.go b/internal/engine/dolphin/stdlib.go index b2cb9037d3..5262bd42ee 100644 --- a/internal/engine/dolphin/stdlib.go +++ b/internal/engine/dolphin/stdlib.go @@ -213,9 +213,16 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "BENCHMARK", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "BENCHMARK", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "BIN", @@ -352,9 +359,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "CHARSET", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "CHARSET", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "CHAR_LENGTH", @@ -366,14 +377,22 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "COERCIBILITY", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "COERCIBILITY", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "COLLATION", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "COLLATION", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "COMPRESS", @@ -416,7 +435,7 @@ func defaultSchema(name string) *catalog.Schema { { Name: "CONNECTION_ID", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "CONV", @@ -512,7 +531,7 @@ func defaultSchema(name string) *catalog.Schema { { Name: "CURRENT_ROLE", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "CURRENT_TIME", @@ -545,7 +564,7 @@ func defaultSchema(name string) *catalog.Schema { { Name: "CURRENT_USER", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "CURTIME", @@ -564,7 +583,7 @@ func defaultSchema(name string) *catalog.Schema { { Name: "DATABASE", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "DATE", @@ -880,7 +899,7 @@ func defaultSchema(name string) *catalog.Schema { { Name: "FOUND_ROWS", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "FROM_BASE64", @@ -1026,7 +1045,7 @@ func defaultSchema(name string) *catalog.Schema { { Name: "ICU_VERSION", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "IF", @@ -1679,7 +1698,7 @@ func defaultSchema(name string) *catalog.Schema { { Name: "LAST_INSERT_ID", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "bigint"}, }, { Name: "LAST_VALUE", @@ -2442,7 +2461,7 @@ func defaultSchema(name string) *catalog.Schema { { Name: "ROLES_GRAPHML", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "ROUND", @@ -2468,7 +2487,7 @@ func defaultSchema(name string) *catalog.Schema { { Name: "ROW_COUNT", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "bigint"}, }, { Name: "ROW_NUMBER", @@ -2502,7 +2521,7 @@ func defaultSchema(name string) *catalog.Schema { { Name: "SCHEMA", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "SECOND", @@ -2525,7 +2544,7 @@ func defaultSchema(name string) *catalog.Schema { { Name: "SESSION_USER", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "SHA", @@ -3253,7 +3272,7 @@ func defaultSchema(name string) *catalog.Schema { { Name: "SYSTEM_USER", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "TAN", @@ -3483,7 +3502,7 @@ func defaultSchema(name string) *catalog.Schema { { Name: "USER", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "UTC_DATE", @@ -3579,7 +3598,7 @@ func defaultSchema(name string) *catalog.Schema { { Name: "VERSION", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "WAIT_FOR_EXECUTED_GTID_SET", From 8948668adfdde573fb0a3414539ab0e9ce281c3d Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Sun, 22 Nov 2020 13:47:01 -0800 Subject: [PATCH 15/23] dolphin: Add window function signatures --- internal/engine/dolphin/stdlib.go | 98 ++++++++++++++++++++++++------- 1 file changed, 76 insertions(+), 22 deletions(-) diff --git a/internal/engine/dolphin/stdlib.go b/internal/engine/dolphin/stdlib.go index 5262bd42ee..af4db0083e 100644 --- a/internal/engine/dolphin/stdlib.go +++ b/internal/engine/dolphin/stdlib.go @@ -296,8 +296,12 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "CAST", - Args: []*catalog.Argument{}, + Name: "CAST", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { @@ -453,8 +457,15 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "CONVERT", - Args: []*catalog.Argument{}, + Name: "CONVERT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { @@ -516,7 +527,7 @@ func defaultSchema(name string) *catalog.Schema { { Name: "CUME_DIST", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "double precision"}, }, { Name: "CURDATE", @@ -732,7 +743,7 @@ func defaultSchema(name string) *catalog.Schema { { Name: "DENSE_RANK", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "DISTINCT", @@ -861,8 +872,12 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "FIRST_VALUE", - Args: []*catalog.Argument{}, + Name: "FIRST_VALUE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { @@ -1682,8 +1697,20 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "LAG", - Args: []*catalog.Argument{}, + Name: "LAG", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + HasDefault: true, + }, + { + Type: &ast.TypeName{Name: "any"}, + HasDefault: true, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { @@ -1701,8 +1728,12 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "bigint"}, }, { - Name: "LAST_VALUE", - Args: []*catalog.Argument{}, + Name: "LAST_VALUE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { @@ -1715,8 +1746,20 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "LEAD", - Args: []*catalog.Argument{}, + Name: "LEAD", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + HasDefault: true, + }, + { + Type: &ast.TypeName{Name: "any"}, + HasDefault: true, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { @@ -2182,14 +2225,25 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "datetime"}, }, { - Name: "NTH_VALUE", - Args: []*catalog.Argument{}, + Name: "NTH_VALUE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "NTILE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "NTILE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "NULLIF", @@ -2238,7 +2292,7 @@ func defaultSchema(name string) *catalog.Schema { { Name: "PERCENT_RANK", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "double precision"}, }, { Name: "PERIOD_ADD", @@ -2378,7 +2432,7 @@ func defaultSchema(name string) *catalog.Schema { { Name: "RANK", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "REGEXP_INSTR", @@ -2492,7 +2546,7 @@ func defaultSchema(name string) *catalog.Schema { { Name: "ROW_NUMBER", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "RPAD", From 894be6cee17fbb0beeaf31e3c0c2ca8df90fd653 Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Sun, 22 Nov 2020 13:50:01 -0800 Subject: [PATCH 16/23] dolphin: Add performance schema function signatures --- internal/engine/dolphin/stdlib.go | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/internal/engine/dolphin/stdlib.go b/internal/engine/dolphin/stdlib.go index af4db0083e..f3854db5bb 100644 --- a/internal/engine/dolphin/stdlib.go +++ b/internal/engine/dolphin/stdlib.go @@ -902,14 +902,22 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "FORMAT_BYTES", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "FORMAT_BYTES", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "FORMAT_PICO_TIME", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "FORMAT_PICO_TIME", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "time"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "FOUND_ROWS", @@ -2372,12 +2380,12 @@ func defaultSchema(name string) *catalog.Schema { { Name: "PS_CURRENT_THREAD_ID", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "PS_THREAD_ID", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "int"}, }, { Name: "QUARTER", From 0217d69af4732900dd7af14bf4890d2fb4e12c9d Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Sun, 22 Nov 2020 13:53:58 -0800 Subject: [PATCH 17/23] dolphin: Add locking function signatures --- internal/engine/dolphin/stdlib.go | 53 ++++++++++++++++++++++--------- 1 file changed, 38 insertions(+), 15 deletions(-) diff --git a/internal/engine/dolphin/stdlib.go b/internal/engine/dolphin/stdlib.go index f3854db5bb..b58681ef1a 100644 --- a/internal/engine/dolphin/stdlib.go +++ b/internal/engine/dolphin/stdlib.go @@ -986,9 +986,16 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "GET_LOCK", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "GET_LOCK", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { Name: "GREATEST", @@ -1189,9 +1196,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "bool"}, }, { - Name: "IS_FREE_LOCK", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "IS_FREE_LOCK", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { Name: "IS_IPV4", @@ -1230,9 +1241,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "bool"}, }, { - Name: "IS_USED_LOCK", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "IS_USED_LOCK", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { Name: "IS_UUID", @@ -2383,8 +2398,12 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "PS_THREAD_ID", - Args: []*catalog.Argument{}, + Name: "PS_THREAD_ID", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "int"}, + }, + }, ReturnType: &ast.TypeName{Name: "int"}, }, { @@ -2465,12 +2484,16 @@ func defaultSchema(name string) *catalog.Schema { { Name: "RELEASE_ALL_LOCKS", Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "RELEASE_LOCK", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "RELEASE_LOCK", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { Name: "REPEAT", From 60b48be3d68619851a20cce512a41b1b437d644c Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Sun, 22 Nov 2020 13:57:51 -0800 Subject: [PATCH 18/23] dolphin: Add regexp function signatures --- internal/engine/dolphin/stdlib.go | 99 +++++++++++++++++++++++++++---- 1 file changed, 87 insertions(+), 12 deletions(-) diff --git a/internal/engine/dolphin/stdlib.go b/internal/engine/dolphin/stdlib.go index b58681ef1a..9ce41e3909 100644 --- a/internal/engine/dolphin/stdlib.go +++ b/internal/engine/dolphin/stdlib.go @@ -2462,24 +2462,99 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "REGEXP_INSTR", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "REGEXP_INSTR", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + HasDefault: true, + }, + { + Type: &ast.TypeName{Name: "int"}, + HasDefault: true, + }, + { + Type: &ast.TypeName{Name: "int"}, + HasDefault: true, + }, + { + Type: &ast.TypeName{Name: "text"}, + HasDefault: true, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "REGEXP_LIKE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "REGEXP_LIKE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + HasDefault: true, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { - Name: "REGEXP_REPLACE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "REGEXP_REPLACE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + HasDefault: true, + }, + { + Type: &ast.TypeName{Name: "int"}, + HasDefault: true, + }, + { + Type: &ast.TypeName{Name: "text"}, + HasDefault: true, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "REGEXP_SUBSTR", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "REGEXP_SUBSTR", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + HasDefault: true, + }, + { + Type: &ast.TypeName{Name: "int"}, + HasDefault: true, + }, + { + Type: &ast.TypeName{Name: "text"}, + HasDefault: true, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "RELEASE_ALL_LOCKS", From 138845fa93f045f46026d9b9c64c82d2fc6e9bcb Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Sun, 22 Nov 2020 14:02:15 -0800 Subject: [PATCH 19/23] dolphin: Add XML function signatures --- internal/engine/dolphin/stdlib.go | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/internal/engine/dolphin/stdlib.go b/internal/engine/dolphin/stdlib.go index 9ce41e3909..c9f3a8e290 100644 --- a/internal/engine/dolphin/stdlib.go +++ b/internal/engine/dolphin/stdlib.go @@ -839,8 +839,15 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "EXTRACTVALUE", - Args: []*catalog.Argument{}, + Name: "EXTRACTVALUE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { @@ -3646,9 +3653,19 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "bigint"}, }, { - Name: "UPDATEXML", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "UPDATEXML", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "UPPER", From 2f6fc9585474fa240e7353105848cc773a3991d1 Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Sun, 22 Nov 2020 14:09:18 -0800 Subject: [PATCH 20/23] dolphin: Add GTID function signatures --- internal/engine/dolphin/stdlib.go | 63 ++++++++++++++++++++++--------- 1 file changed, 46 insertions(+), 17 deletions(-) diff --git a/internal/engine/dolphin/stdlib.go b/internal/engine/dolphin/stdlib.go index c9f3a8e290..1baeab5bff 100644 --- a/internal/engine/dolphin/stdlib.go +++ b/internal/engine/dolphin/stdlib.go @@ -1043,14 +1043,28 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "GTID_SUBSET", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "GTID_SUBSET", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { - Name: "GTID_SUBTRACT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "GTID_SUBTRACT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { Name: "HEX", @@ -3417,11 +3431,6 @@ func defaultSchema(name string) *catalog.Schema { }, ReturnType: &ast.TypeName{Name: "any"}, }, - { - Name: "SYSDATE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, - }, { Name: "SYSDATE", Args: []*catalog.Argument{}, @@ -3778,14 +3787,34 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "WAIT_FOR_EXECUTED_GTID_SET", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "WAIT_FOR_EXECUTED_GTID_SET", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + HasDefault: true, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { - Name: "WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + HasDefault: true, + }, + { + Type: &ast.TypeName{Name: "text"}, + HasDefault: true, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { Name: "WEEK", From 1825cf6820d016462259d06dc19b8be187b47f5a Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Sun, 22 Nov 2020 14:11:23 -0800 Subject: [PATCH 21/23] dolphin: Add a few more function signatures --- internal/engine/dolphin/stdlib.go | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/internal/engine/dolphin/stdlib.go b/internal/engine/dolphin/stdlib.go index 1baeab5bff..094f1abfd5 100644 --- a/internal/engine/dolphin/stdlib.go +++ b/internal/engine/dolphin/stdlib.go @@ -264,9 +264,13 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "BIT_COUNT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "BIT_COUNT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "bigint"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bigint"}, }, { Name: "BIT_LENGTH", @@ -746,8 +750,12 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "DISTINCT", - Args: []*catalog.Argument{}, + Name: "DISTINCT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { @@ -2328,11 +2336,6 @@ func defaultSchema(name string) *catalog.Schema { }, ReturnType: &ast.TypeName{Name: "int"}, }, - { - Name: "PASSWORD", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, - }, { Name: "PERCENT_RANK", Args: []*catalog.Argument{}, From 6da948d04fe97780cd9162767d62388b62f0095a Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Sun, 22 Nov 2020 15:54:19 -0800 Subject: [PATCH 22/23] dolphin: Add spatial analysis function signatures --- internal/engine/dolphin/stdlib.go | 2248 +++++++++++++++++++++++++---- 1 file changed, 2004 insertions(+), 244 deletions(-) diff --git a/internal/engine/dolphin/stdlib.go b/internal/engine/dolphin/stdlib.go index 094f1abfd5..7d276f0af7 100644 --- a/internal/engine/dolphin/stdlib.go +++ b/internal/engine/dolphin/stdlib.go @@ -979,13 +979,29 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "GEOMCOLLECTION", - Args: []*catalog.Argument{}, + Name: "GEOMCOLLECTION", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + Mode: ast.FuncParamVariadic, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "GEOMETRYCOLLECTION", - Args: []*catalog.Argument{}, + Name: "GEOMETRYCOLLECTION", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + Mode: ast.FuncParamVariadic, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { @@ -1862,8 +1878,16 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "LINESTRING", - Args: []*catalog.Argument{}, + Name: "LINESTRING", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + Mode: ast.FuncParamVariadic, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { @@ -2110,49 +2134,112 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "MBRCONTAINS", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "MBRCONTAINS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { - Name: "MBRCOVEREDBY", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "MBRCOVEREDBY", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { - Name: "MBRCOVERS", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "MBRCOVERS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { - Name: "MBRDISJOINT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "MBRDISJOINT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { - Name: "MBREQUALS", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "MBREQUALS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { - Name: "MBRINTERSECTS", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "MBRINTERSECTS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { - Name: "MBROVERLAPS", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "MBROVERLAPS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { - Name: "MBRTOUCHES", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "MBRTOUCHES", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { - Name: "MBRWITHIN", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "MBRWITHIN", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { Name: "MD5", @@ -2236,18 +2323,42 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "MULTILINESTRING", - Args: []*catalog.Argument{}, + Name: "MULTILINESTRING", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + Mode: ast.FuncParamVariadic, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "MULTIPOINT", - Args: []*catalog.Argument{}, + Name: "MULTIPOINT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + Mode: ast.FuncParamVariadic, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "MULTIPOLYGON", - Args: []*catalog.Argument{}, + Name: "MULTIPOLYGON", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + Mode: ast.FuncParamVariadic, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { @@ -2371,13 +2482,28 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "double precision"}, }, { - Name: "POINT", - Args: []*catalog.Argument{}, + Name: "POINT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "POLYGON", - Args: []*catalog.Argument{}, + Name: "POLYGON", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + Mode: ast.FuncParamVariadic, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { @@ -2893,443 +3019,2077 @@ func defaultSchema(name string) *catalog.Schema { ReturnType: &ast.TypeName{Name: "datetime"}, }, { - Name: "ST_AREA", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, - }, - { - Name: "ST_ASBINARY", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, - }, - { - Name: "ST_ASGEOJSON", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ST_AREA", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, }, { - Name: "ST_ASTEXT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ST_ASBINARY", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "binary"}, }, { - Name: "ST_ASWKB", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ST_ASBINARY", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "binary"}, }, { - Name: "ST_ASWKT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ST_ASGEOJSON", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "json"}, }, { - Name: "ST_BUFFER", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ST_ASGEOJSON", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "json"}, }, { - Name: "ST_BUFFER_STRATEGY", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ST_ASGEOJSON", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "tinyint"}, + }, + }, + ReturnType: &ast.TypeName{Name: "json"}, }, { - Name: "ST_CENTROID", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ST_ASTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, }, { - Name: "ST_CONTAINS", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ST_ASTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, + }, + { + Name: "ST_ASWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "binary"}, + }, + { + Name: "ST_ASWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "binary"}, + }, + { + Name: "ST_ASWKT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, + }, + { + Name: "ST_ASWKT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, + }, + { + Name: "ST_BUFFER", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_BUFFER", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "double precision"}, + }, + { + Type: &ast.TypeName{Name: "binary"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_BUFFER", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "double precision"}, + }, + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "binary"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_BUFFER", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "double precision"}, + }, + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "binary"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_BUFFER_STRATEGY", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "binary"}, + }, + { + Name: "ST_BUFFER_STRATEGY", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "binary"}, + }, + { + Name: "ST_CENTROID", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_CONTAINS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, + }, + { + Name: "ST_CONVEXHULL", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_CROSSES", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, + }, + { + Name: "ST_DIFFERENCE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_DIMENSION", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "tinyint"}, + }, + { + Name: "ST_DISJOINT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, + }, + { + Name: "ST_DISTANCE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, + }, + { + Name: "ST_DISTANCE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, + }, + { + Name: "ST_DISTANCE_SPHERE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, + }, + { + Name: "ST_DISTANCE_SPHERE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, + }, + { + Name: "ST_ENDPOINT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_ENVELOPE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_EQUALS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, + }, + { + Name: "ST_EXTERIORRING", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_FRECHET_DISTANCE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, + }, + { + Name: "ST_FRECHET_DISTANCE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, + }, + { + Name: "ST_GEOHASH", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "double precision"}, + }, + { + Type: &ast.TypeName{Name: "double precision"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, + }, + { + Name: "ST_GEOHASH", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, + }, + { + Name: "ST_GEOMCOLLFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMCOLLFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMCOLLFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMCOLLFROMTXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMCOLLFROMTXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMCOLLFROMTXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMCOLLFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMCOLLFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMCOLLFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMETRYCOLLECTIONFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMETRYCOLLECTIONFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMETRYCOLLECTIONFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMETRYCOLLECTIONFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMETRYCOLLECTIONFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMETRYCOLLECTIONFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMETRYFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMETRYFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMETRYFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMETRYFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMETRYFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMETRYFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMETRYN", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMETRYTYPE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "text"}, + }, + { + Name: "ST_GEOMFROMGEOJSON", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMFROMGEOJSON", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "tinyint"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMFROMGEOJSON", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "tinyint"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_GEOMFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_HAUSDORFF_DISTANCE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, + }, + { + Name: "ST_HAUSDORFF_DISTANCE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, + }, + + { + Name: "ST_INTERIORRINGN", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_INTERSECTION", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_INTERSECTS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, + }, + { + Name: "ST_ISCLOSED", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, + }, + { + Name: "ST_ISEMPTY", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, + }, + { + Name: "ST_ISSIMPLE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, + }, + { + Name: "ST_ISVALID", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, + }, + { + Name: "ST_LATFROMGEOHASH", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, + }, + { + Name: "ST_LATITUDE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, + }, + { + Name: "ST_LATITUDE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_LENGTH", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, + }, + { + Name: "ST_LENGTH", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, + }, + { + Name: "ST_LINEFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_LINEFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_LINEFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_LINEFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_LINEFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_LINEFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_LINEINTERPOLATEPOINT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_LINEINTERPOLATEPOINTS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_LINESTRINGFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_LINESTRINGFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_CONVEXHULL", - Args: []*catalog.Argument{}, + Name: "ST_LINESTRINGFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_CROSSES", - Args: []*catalog.Argument{}, + Name: "ST_LINESTRINGFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_DIFFERENCE", - Args: []*catalog.Argument{}, + Name: "ST_LINESTRINGFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_DIMENSION", - Args: []*catalog.Argument{}, + Name: "ST_LINESTRINGFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_DISJOINT", - Args: []*catalog.Argument{}, + Name: "ST_LONGFROMGEOHASH", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, + }, + { + Name: "ST_LONGITUDE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, + }, + { + Name: "ST_LONGITUDE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_DISTANCE", - Args: []*catalog.Argument{}, + Name: "ST_MAKEENVELOPE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_DISTANCE_SPHERE", - Args: []*catalog.Argument{}, + Name: "ST_MLINEFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_ENDPOINT", - Args: []*catalog.Argument{}, + Name: "ST_MLINEFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_ENVELOPE", - Args: []*catalog.Argument{}, + Name: "ST_MLINEFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_EQUALS", - Args: []*catalog.Argument{}, + Name: "ST_MLINEFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_EXTERIORRING", - Args: []*catalog.Argument{}, + Name: "ST_MLINEFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_GEOHASH", - Args: []*catalog.Argument{}, + Name: "ST_MLINEFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_GEOMCOLLFROMTEXT", - Args: []*catalog.Argument{}, + Name: "ST_MPOINTFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_GEOMCOLLFROMTXT", - Args: []*catalog.Argument{}, + Name: "ST_MPOINTFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_GEOMCOLLFROMWKB", - Args: []*catalog.Argument{}, + Name: "ST_MPOINTFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_GEOMETRYCOLLECTIONFROMTEXT", - Args: []*catalog.Argument{}, + Name: "ST_MPOINTFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_GEOMETRYCOLLECTIONFROMWKB", - Args: []*catalog.Argument{}, + Name: "ST_MPOINTFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_GEOMETRYFROMTEXT", - Args: []*catalog.Argument{}, + Name: "ST_MPOINTFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_GEOMETRYFROMWKB", - Args: []*catalog.Argument{}, + Name: "ST_MPOLYFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_GEOMETRYN", - Args: []*catalog.Argument{}, + Name: "ST_MPOLYFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_GEOMETRYTYPE", - Args: []*catalog.Argument{}, + Name: "ST_MPOLYFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_MPOLYFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_MPOLYFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_MPOLYFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_MULTILINESTRINGFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, + ReturnType: &ast.TypeName{Name: "any"}, + }, + { + Name: "ST_MULTILINESTRINGFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_GEOMFROMGEOJSON", - Args: []*catalog.Argument{}, + Name: "ST_MULTILINESTRINGFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_GEOMFROMTEXT", - Args: []*catalog.Argument{}, + Name: "ST_MULTILINESTRINGFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_GEOMFROMWKB", - Args: []*catalog.Argument{}, + Name: "ST_MULTILINESTRINGFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_INTERIORRINGN", - Args: []*catalog.Argument{}, + Name: "ST_MULTILINESTRINGFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_INTERSECTION", - Args: []*catalog.Argument{}, + Name: "ST_MULTIPOINTFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_INTERSECTS", - Args: []*catalog.Argument{}, + Name: "ST_MULTIPOINTFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_ISCLOSED", - Args: []*catalog.Argument{}, + Name: "ST_MULTIPOINTFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_ISEMPTY", - Args: []*catalog.Argument{}, + Name: "ST_MULTIPOINTFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_ISSIMPLE", - Args: []*catalog.Argument{}, + Name: "ST_MULTIPOINTFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_ISVALID", - Args: []*catalog.Argument{}, + Name: "ST_MULTIPOINTFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_LATFROMGEOHASH", - Args: []*catalog.Argument{}, + Name: "ST_MULTIPOLYGONFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_LATITUDE", - Args: []*catalog.Argument{}, + Name: "ST_MULTIPOLYGONFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_LENGTH", - Args: []*catalog.Argument{}, + Name: "ST_MULTIPOLYGONFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_LINEFROMTEXT", - Args: []*catalog.Argument{}, + Name: "ST_MULTIPOLYGONFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_LINEFROMWKB", - Args: []*catalog.Argument{}, + Name: "ST_MULTIPOLYGONFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_LINESTRINGFROMTEXT", - Args: []*catalog.Argument{}, + Name: "ST_MULTIPOLYGONFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_LINESTRINGFROMWKB", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ST_NUMGEOMETRIES", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bigint"}, }, { - Name: "ST_LONGFROMGEOHASH", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ST_NUMINTERIORRING", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "ST_LONGITUDE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ST_NUMINTERIORRINGS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "ST_MAKEENVELOPE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ST_NUMPOINTS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bigint"}, }, { - Name: "ST_MLINEFROMTEXT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ST_OVERLAPS", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { - Name: "ST_MLINEFROMWKB", - Args: []*catalog.Argument{}, + Name: "ST_POINTATDISTANCE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_MPOINTFROMTEXT", - Args: []*catalog.Argument{}, + Name: "ST_POINTFROMGEOHASH", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_MPOINTFROMWKB", - Args: []*catalog.Argument{}, + Name: "ST_POINTFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_MPOLYFROMTEXT", - Args: []*catalog.Argument{}, + Name: "ST_POINTFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_MPOLYFROMWKB", - Args: []*catalog.Argument{}, + Name: "ST_POINTFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_MULTILINESTRINGFROMTEXT", - Args: []*catalog.Argument{}, + Name: "ST_POINTFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_MULTILINESTRINGFROMWKB", - Args: []*catalog.Argument{}, + Name: "ST_POINTFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_MULTIPOINTFROMTEXT", - Args: []*catalog.Argument{}, + Name: "ST_POINTFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_MULTIPOINTFROMWKB", - Args: []*catalog.Argument{}, + Name: "ST_POINTN", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_MULTIPOLYGONFROMTEXT", - Args: []*catalog.Argument{}, + Name: "ST_POLYFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_MULTIPOLYGONFROMWKB", - Args: []*catalog.Argument{}, + Name: "ST_POLYFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_NUMGEOMETRIES", - Args: []*catalog.Argument{}, + Name: "ST_POLYFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_NUMINTERIORRING", - Args: []*catalog.Argument{}, + Name: "ST_POLYFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_NUMINTERIORRINGS", - Args: []*catalog.Argument{}, + Name: "ST_POLYFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_NUMPOINTS", - Args: []*catalog.Argument{}, + Name: "ST_POLYFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_OVERLAPS", - Args: []*catalog.Argument{}, + Name: "ST_POLYGONFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_POINTFROMGEOHASH", - Args: []*catalog.Argument{}, + Name: "ST_POLYGONFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_POINTFROMTEXT", - Args: []*catalog.Argument{}, + Name: "ST_POLYGONFROMTEXT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "text"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_POINTFROMWKB", - Args: []*catalog.Argument{}, + Name: "ST_POLYGONFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_POINTN", - Args: []*catalog.Argument{}, + Name: "ST_POLYGONFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_POLYFROMTEXT", - Args: []*catalog.Argument{}, + Name: "ST_POLYGONFROMWKB", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "binary"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + { + Type: &ast.TypeName{Name: "text"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_POLYFROMWKB", - Args: []*catalog.Argument{}, + Name: "ST_SIMPLIFY", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_POLYGONFROMTEXT", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ST_SRID", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "ST_POLYGONFROMWKB", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ST_SRID", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, + ReturnType: &ast.TypeName{Name: "int"}, }, { - Name: "ST_SIMPLIFY", - Args: []*catalog.Argument{}, + Name: "ST_STARTPOINT", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_SRID", - Args: []*catalog.Argument{}, + Name: "ST_SWAPXY", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_STARTPOINT", - Args: []*catalog.Argument{}, + Name: "ST_SYMDIFFERENCE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_SWAPXY", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ST_TOUCHES", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { - Name: "ST_SYMDIFFERENCE", - Args: []*catalog.Argument{}, + Name: "ST_TRANSFORM", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "int"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_TOUCHES", - Args: []*catalog.Argument{}, + Name: "ST_UNION", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_TRANSFORM", - Args: []*catalog.Argument{}, + Name: "ST_VALIDATE", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_UNION", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ST_WITHIN", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "bool"}, }, { - Name: "ST_VALIDATE", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ST_X", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, }, { - Name: "ST_WITHIN", - Args: []*catalog.Argument{}, + Name: "ST_X", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { - Name: "ST_X", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, + Name: "ST_Y", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + }, + ReturnType: &ast.TypeName{Name: "double precision"}, }, { - Name: "ST_Y", - Args: []*catalog.Argument{}, + Name: "ST_Y", + Args: []*catalog.Argument{ + { + Type: &ast.TypeName{Name: "any"}, + }, + { + Type: &ast.TypeName{Name: "double precision"}, + }, + }, ReturnType: &ast.TypeName{Name: "any"}, }, { From 93f45dd93622df35a998daf78b27827927af6dff Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Sun, 22 Nov 2020 15:55:09 -0800 Subject: [PATCH 23/23] dolphin: Remove two unknown functions --- internal/engine/dolphin/stdlib.go | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/internal/engine/dolphin/stdlib.go b/internal/engine/dolphin/stdlib.go index 7d276f0af7..f03e9556a3 100644 --- a/internal/engine/dolphin/stdlib.go +++ b/internal/engine/dolphin/stdlib.go @@ -1867,16 +1867,6 @@ func defaultSchema(name string) *catalog.Schema { }, ReturnType: &ast.TypeName{Name: "int"}, }, - { - Name: "LIKE_RANGE_MAX", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, - }, - { - Name: "LIKE_RANGE_MIN", - Args: []*catalog.Argument{}, - ReturnType: &ast.TypeName{Name: "any"}, - }, { Name: "LINESTRING", Args: []*catalog.Argument{