snapshot of https://github.com/sqlc-dev/sqlc.git (main, 2026-09-16; blobs > 131072B omitted)
Some checks failed
kotlin / test (push) Has been skipped
python / test (push) Has been skipped
typescript / test (push) Has been skipped
go / build darwin/amd64 (push) Has been cancelled
go / build linux/amd64 (push) Has been cancelled
go / build windows/amd64 (push) Has been cancelled
go / build darwin/arm64 (push) Has been cancelled
go / build linux/arm64 (push) Has been cancelled
go / build windows/arm64 (push) Has been cancelled
go / test (push) Has been cancelled
go / vuln_check (push) Has been cancelled
Some checks failed
kotlin / test (push) Has been skipped
python / test (push) Has been skipped
typescript / test (push) Has been skipped
go / build darwin/amd64 (push) Has been cancelled
go / build linux/amd64 (push) Has been cancelled
go / build windows/amd64 (push) Has been cancelled
go / build darwin/arm64 (push) Has been cancelled
go / build linux/arm64 (push) Has been cancelled
go / build windows/arm64 (push) Has been cancelled
go / test (push) Has been cancelled
go / vuln_check (push) Has been cancelled
This commit is contained in:
16
internal/engine/clickhouse/catalog.go
Normal file
16
internal/engine/clickhouse/catalog.go
Normal file
@@ -0,0 +1,16 @@
|
||||
package clickhouse
|
||||
|
||||
import (
|
||||
"github.com/sqlc-dev/sqlc/internal/sql/catalog"
|
||||
)
|
||||
|
||||
func NewCatalog() *catalog.Catalog {
|
||||
def := "default" // ClickHouse default database
|
||||
return &catalog.Catalog{
|
||||
DefaultSchema: def,
|
||||
Schemas: []*catalog.Schema{
|
||||
defaultSchema(def),
|
||||
},
|
||||
Extensions: map[string]struct{}{},
|
||||
}
|
||||
}
|
||||
1398
internal/engine/clickhouse/convert.go
Normal file
1398
internal/engine/clickhouse/convert.go
Normal file
File diff suppressed because it is too large
Load Diff
41
internal/engine/clickhouse/dialect/dialect.json
Normal file
41
internal/engine/clickhouse/dialect/dialect.json
Normal file
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"dialect": "clickhouse",
|
||||
"default_schema": "default",
|
||||
"const": {
|
||||
"integer": "Int64",
|
||||
"float": "Float64",
|
||||
"string": "String",
|
||||
"bool": "Bool"
|
||||
},
|
||||
"bool": "UInt8",
|
||||
"limit": "UInt64",
|
||||
"untyped": "Nothing",
|
||||
"propagate_nullable": true,
|
||||
"qualify_duplicate_columns": true,
|
||||
"comparison": ["=", "==", "<>", "!=", "<", "<=", ">", ">="],
|
||||
"comparison_categories": "NBSDU",
|
||||
"arithmetic": ["+", "-", "*", "/", "%"],
|
||||
"arithmetic_categories": "N",
|
||||
"rewrites": [
|
||||
{
|
||||
"from": "Decimal32($1)",
|
||||
"to": "Decimal(9, $1)"
|
||||
},
|
||||
{
|
||||
"from": "Decimal64($1)",
|
||||
"to": "Decimal(18, $1)"
|
||||
},
|
||||
{
|
||||
"from": "Decimal128($1)",
|
||||
"to": "Decimal(38, $1)"
|
||||
},
|
||||
{
|
||||
"from": "Decimal256($1)",
|
||||
"to": "Decimal(76, $1)"
|
||||
}
|
||||
],
|
||||
"ident_args": {
|
||||
"AggregateFunction": [1],
|
||||
"SimpleAggregateFunction": [1]
|
||||
}
|
||||
}
|
||||
581
internal/engine/clickhouse/dialect/functions.jsonl
Normal file
581
internal/engine/clickhouse/dialect/functions.jsonl
Normal file
@@ -0,0 +1,581 @@
|
||||
{"name": "count", "kind": "a", "returns": "UInt64", "never_null": true}
|
||||
{"name": "count", "kind": "a", "args": [{"type": "any"}], "returns": "UInt64", "never_null": true}
|
||||
{"name": "countIf", "kind": "a", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt64", "never_null": true}
|
||||
{"name": "sum", "kind": "a", "args": [{"type": "UInt8"}], "returns": "UInt64"}
|
||||
{"name": "sum", "kind": "a", "args": [{"type": "UInt16"}], "returns": "UInt64"}
|
||||
{"name": "sum", "kind": "a", "args": [{"type": "UInt32"}], "returns": "UInt64"}
|
||||
{"name": "sum", "kind": "a", "args": [{"type": "Int8"}], "returns": "Int64"}
|
||||
{"name": "sum", "kind": "a", "args": [{"type": "Int16"}], "returns": "Int64"}
|
||||
{"name": "sum", "kind": "a", "args": [{"type": "Int32"}], "returns": "Int64"}
|
||||
{"name": "sum", "kind": "a", "args": [{"type": "Float32"}], "returns": "Float64"}
|
||||
{"name": "sum", "kind": "a", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "sumIf", "kind": "a", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "avg", "kind": "a", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "avgIf", "kind": "a", "args": [{"type": "any"}, {"type": "any"}], "returns": "Float64"}
|
||||
{"name": "min", "kind": "a", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "max", "kind": "a", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "any", "kind": "a", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "anyLast", "kind": "a", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "minIf", "kind": "a", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "maxIf", "kind": "a", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "anyIf", "kind": "a", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "uniq", "kind": "a", "args": [{"type": "any"}], "returns": "UInt64", "never_null": true}
|
||||
{"name": "uniqExact", "kind": "a", "args": [{"type": "any"}], "returns": "UInt64", "never_null": true}
|
||||
{"name": "uniqCombined", "kind": "a", "args": [{"type": "any"}], "returns": "UInt64", "never_null": true}
|
||||
{"name": "uniqHLL12", "kind": "a", "args": [{"type": "any"}], "returns": "UInt64", "never_null": true}
|
||||
{"name": "uniqIf", "kind": "a", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt64", "never_null": true}
|
||||
{"name": "argMin", "kind": "a", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "argMax", "kind": "a", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "stddevPop", "kind": "a", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "stddevSamp", "kind": "a", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "varPop", "kind": "a", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "varSamp", "kind": "a", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "median", "kind": "a", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "quantile", "kind": "a", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "quantile", "kind": "a", "args": [{"type": "any"}, {"type": "any"}], "returns": "Float64"}
|
||||
{"name": "row_number", "kind": "w", "returns": "UInt64", "never_null": true}
|
||||
{"name": "rank", "kind": "w", "returns": "UInt64", "never_null": true}
|
||||
{"name": "dense_rank", "kind": "w", "returns": "UInt64", "never_null": true}
|
||||
{"name": "plus", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "minus", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "multiply", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "intDiv", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "intDivOrZero", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "modulo", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "moduloOrZero", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "gcd", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "lcm", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "bitAnd", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "bitOr", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "bitXor", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "bitShiftLeft", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "bitShiftRight", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "greatest", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "least", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "divide", "args": [{"type": "any"}, {"type": "any"}], "returns": "Float64"}
|
||||
{"name": "negate", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "abs", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "round", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "floor", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "ceil", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "ceiling", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "trunc", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "truncate", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "identity", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "bitNot", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "round", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "floor", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "ceil", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "trunc", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "exp", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "log", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "ln", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "exp2", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "log2", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "exp10", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "log10", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "sqrt", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "cbrt", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "sin", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "cos", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "tan", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "asin", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "acos", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "atan", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "sigmoid", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "erf", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "lgamma", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "tgamma", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "pow", "args": [{"type": "any"}, {"type": "any"}], "returns": "Float64"}
|
||||
{"name": "power", "args": [{"type": "any"}, {"type": "any"}], "returns": "Float64"}
|
||||
{"name": "atan2", "args": [{"type": "any"}, {"type": "any"}], "returns": "Float64"}
|
||||
{"name": "hypot", "args": [{"type": "any"}, {"type": "any"}], "returns": "Float64"}
|
||||
{"name": "e", "returns": "Float64", "never_null": true}
|
||||
{"name": "pi", "returns": "Float64", "never_null": true}
|
||||
{"name": "sign", "args": [{"type": "any"}], "returns": "Int8"}
|
||||
{"name": "isFinite", "args": [{"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "isInfinite", "args": [{"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "isNaN", "args": [{"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "rand", "returns": "UInt32", "never_null": true}
|
||||
{"name": "rand32", "returns": "UInt32", "never_null": true}
|
||||
{"name": "rand64", "returns": "UInt64", "never_null": true}
|
||||
{"name": "randCanonical", "returns": "Float64", "never_null": true}
|
||||
{"name": "equals", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "notEquals", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "less", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "greater", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "lessOrEquals", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "greaterOrEquals", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "and", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "or", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "xor", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "like", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "notLike", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "ilike", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "notILike", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "match", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "startsWith", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "endsWith", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "has", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "hasAll", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "hasAny", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "mapContains", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "multiSearchAny", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "in", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "notIn", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "not", "args": [{"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "isNull", "args": [{"type": "any"}], "returns": "UInt8", "never_null": true}
|
||||
{"name": "isNotNull", "args": [{"type": "any"}], "returns": "UInt8", "never_null": true}
|
||||
{"name": "isZeroOrNull", "args": [{"type": "any"}], "returns": "UInt8", "never_null": true}
|
||||
{"name": "assumeNotNull", "args": [{"type": "any"}], "returns": "$1", "never_null": true}
|
||||
{"name": "toNullable", "args": [{"type": "any"}], "returns": "$1", "nullable": true}
|
||||
{"name": "nullIf", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1", "nullable": true}
|
||||
{"name": "if", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$2"}
|
||||
{"name": "empty", "args": [{"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "notEmpty", "args": [{"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "length", "args": [{"type": "any"}], "returns": "UInt64"}
|
||||
{"name": "lengthUTF8", "args": [{"type": "any"}], "returns": "UInt64"}
|
||||
{"name": "char_length", "args": [{"type": "any"}], "returns": "UInt64"}
|
||||
{"name": "character_length", "args": [{"type": "any"}], "returns": "UInt64"}
|
||||
{"name": "position", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt64"}
|
||||
{"name": "positionUTF8", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt64"}
|
||||
{"name": "positionCaseInsensitive", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt64"}
|
||||
{"name": "countSubstrings", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt64"}
|
||||
{"name": "indexOf", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt64"}
|
||||
{"name": "countEqual", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt64"}
|
||||
{"name": "ngramSearch", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt64"}
|
||||
{"name": "lower", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "upper", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "lowerUTF8", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "upperUTF8", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "toString", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "toValidUTF8", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "trim", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "trimLeft", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "trimRight", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "trimBoth", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "ltrim", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "rtrim", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "hex", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "unhex", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "bin", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "base64Encode", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "base64Decode", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "tryBase64Decode", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "reverseUTF8", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "initcap", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "normalizeQuery", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "typeName", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "dumpColumnStructure", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "urlDecode", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "encodeURLComponent", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "decodeURLComponent", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "domain", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "topLevelDomain", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "path", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "pathFull", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "protocol", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "queryString", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "fragment", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "cutQueryString", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "cutFragment", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "cutWWW", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "firstSignificantSubdomain", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "IPv4NumToString", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "IPv6NumToString", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "formatReadableSize", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "formatReadableQuantity", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "formatReadableDecimalSize", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "formatReadableTimeDelta", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "toDecimalString", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "monthName", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "toJSONString", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "toTypeName", "args": [{"type": "any"}], "returns": "String", "never_null": true}
|
||||
{"name": "hostName", "returns": "String", "never_null": true}
|
||||
{"name": "version", "returns": "String", "never_null": true}
|
||||
{"name": "currentDatabase", "returns": "String", "never_null": true}
|
||||
{"name": "currentUser", "returns": "String", "never_null": true}
|
||||
{"name": "FQDN", "returns": "String", "never_null": true}
|
||||
{"name": "queryID", "returns": "String", "never_null": true}
|
||||
{"name": "generateULID", "returns": "String", "never_null": true}
|
||||
{"name": "concat", "args": [{"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "substring", "args": [{"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "substr", "args": [{"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "mid", "args": [{"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "substringUTF8", "args": [{"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "repeat", "args": [{"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "leftPad", "args": [{"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "rightPad", "args": [{"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "left", "args": [{"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "right", "args": [{"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "extract", "args": [{"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "formatDateTime", "args": [{"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "formatDateTimeInJodaSyntax", "args": [{"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "dateName", "args": [{"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "JSONExtractString", "args": [{"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "JSONExtractRaw", "args": [{"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "visitParamExtractString", "args": [{"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "simpleJSONExtractString", "args": [{"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "arrayStringConcat", "args": [{"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "regexpExtract", "args": [{"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "translate", "args": [{"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "format", "args": [{"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "toDecimalString", "args": [{"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "concat", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "substring", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "substr", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "mid", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "substringUTF8", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "leftPad", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "rightPad", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "replaceOne", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "replaceAll", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "replaceRegexpOne", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "replaceRegexpAll", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "translate", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "format", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "concatWithSeparator", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "regexpExtract", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "formatDateTime", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "JSONExtractString", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "JSONExtractRaw", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "concat", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "concat", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "concat", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}, {"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "arrayStringConcat", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "splitByChar", "args": [{"type": "any"}, {"type": "any"}], "returns": "Array(String)"}
|
||||
{"name": "splitByString", "args": [{"type": "any"}, {"type": "any"}], "returns": "Array(String)"}
|
||||
{"name": "splitByRegexp", "args": [{"type": "any"}, {"type": "any"}], "returns": "Array(String)"}
|
||||
{"name": "splitByWhitespace", "args": [{"type": "any"}, {"type": "any"}], "returns": "Array(String)"}
|
||||
{"name": "alphaTokens", "args": [{"type": "any"}, {"type": "any"}], "returns": "Array(String)"}
|
||||
{"name": "extractAll", "args": [{"type": "any"}, {"type": "any"}], "returns": "Array(String)"}
|
||||
{"name": "tokens", "args": [{"type": "any"}, {"type": "any"}], "returns": "Array(String)"}
|
||||
{"name": "splitByWhitespace", "args": [{"type": "any"}], "returns": "Array(String)"}
|
||||
{"name": "alphaTokens", "args": [{"type": "any"}], "returns": "Array(String)"}
|
||||
{"name": "tokens", "args": [{"type": "any"}], "returns": "Array(String)"}
|
||||
{"name": "reverse", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "md5", "args": [{"type": "any"}], "returns": "FixedString(16)"}
|
||||
{"name": "MD5", "args": [{"type": "any"}], "returns": "FixedString(16)"}
|
||||
{"name": "sipHash128", "args": [{"type": "any"}], "returns": "FixedString(16)"}
|
||||
{"name": "murmurHash3_128", "args": [{"type": "any"}], "returns": "FixedString(16)"}
|
||||
{"name": "cityHash128", "args": [{"type": "any"}], "returns": "FixedString(16)"}
|
||||
{"name": "SHA1", "args": [{"type": "any"}], "returns": "FixedString(20)"}
|
||||
{"name": "SHA224", "args": [{"type": "any"}], "returns": "FixedString(28)"}
|
||||
{"name": "SHA256", "args": [{"type": "any"}], "returns": "FixedString(32)"}
|
||||
{"name": "SHA512", "args": [{"type": "any"}], "returns": "FixedString(64)"}
|
||||
{"name": "sipHash64", "args": [{"type": "any"}], "returns": "UInt64", "never_null": true}
|
||||
{"name": "cityHash64", "args": [{"type": "any"}], "returns": "UInt64", "never_null": true}
|
||||
{"name": "xxHash64", "args": [{"type": "any"}], "returns": "UInt64", "never_null": true}
|
||||
{"name": "halfMD5", "args": [{"type": "any"}], "returns": "UInt64", "never_null": true}
|
||||
{"name": "farmHash64", "args": [{"type": "any"}], "returns": "UInt64", "never_null": true}
|
||||
{"name": "javaHash", "args": [{"type": "any"}], "returns": "UInt64", "never_null": true}
|
||||
{"name": "intHash64", "args": [{"type": "any"}], "returns": "UInt64", "never_null": true}
|
||||
{"name": "murmurHash2_64", "args": [{"type": "any"}], "returns": "UInt64", "never_null": true}
|
||||
{"name": "murmurHash3_64", "args": [{"type": "any"}], "returns": "UInt64", "never_null": true}
|
||||
{"name": "metroHash64", "args": [{"type": "any"}], "returns": "UInt64", "never_null": true}
|
||||
{"name": "xxh3", "args": [{"type": "any"}], "returns": "UInt64", "never_null": true}
|
||||
{"name": "wyHash64", "args": [{"type": "any"}], "returns": "UInt64", "never_null": true}
|
||||
{"name": "xxHash32", "args": [{"type": "any"}], "returns": "UInt32", "never_null": true}
|
||||
{"name": "intHash32", "args": [{"type": "any"}], "returns": "UInt32", "never_null": true}
|
||||
{"name": "murmurHash2_32", "args": [{"type": "any"}], "returns": "UInt32", "never_null": true}
|
||||
{"name": "murmurHash3_32", "args": [{"type": "any"}], "returns": "UInt32", "never_null": true}
|
||||
{"name": "crc32", "args": [{"type": "any"}], "returns": "UInt32", "never_null": true}
|
||||
{"name": "CRC32", "args": [{"type": "any"}], "returns": "UInt32", "never_null": true}
|
||||
{"name": "javaHash", "args": [{"type": "any"}], "returns": "UInt32", "never_null": true}
|
||||
{"name": "levenshteinDistance", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt64"}
|
||||
{"name": "editDistance", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt64"}
|
||||
{"name": "ngramDistance", "args": [{"type": "any"}, {"type": "any"}], "returns": "Float32"}
|
||||
{"name": "ngramSearch", "args": [{"type": "any"}, {"type": "any"}], "returns": "Float32"}
|
||||
{"name": "jaroSimilarity", "args": [{"type": "any"}, {"type": "any"}], "returns": "Float32"}
|
||||
{"name": "jaroWinklerSimilarity", "args": [{"type": "any"}, {"type": "any"}], "returns": "Float32"}
|
||||
{"name": "toInt8", "args": [{"type": "any"}], "returns": "Int8"}
|
||||
{"name": "toInt8OrZero", "args": [{"type": "any"}], "returns": "Int8"}
|
||||
{"name": "toInt8OrNull", "args": [{"type": "any"}], "returns": "Int8", "nullable": true}
|
||||
{"name": "toInt16", "args": [{"type": "any"}], "returns": "Int16"}
|
||||
{"name": "toInt16OrZero", "args": [{"type": "any"}], "returns": "Int16"}
|
||||
{"name": "toInt16OrNull", "args": [{"type": "any"}], "returns": "Int16", "nullable": true}
|
||||
{"name": "toInt32", "args": [{"type": "any"}], "returns": "Int32"}
|
||||
{"name": "toInt32OrZero", "args": [{"type": "any"}], "returns": "Int32"}
|
||||
{"name": "toInt32OrNull", "args": [{"type": "any"}], "returns": "Int32", "nullable": true}
|
||||
{"name": "toInt64", "args": [{"type": "any"}], "returns": "Int64"}
|
||||
{"name": "toInt64OrZero", "args": [{"type": "any"}], "returns": "Int64"}
|
||||
{"name": "toInt64OrNull", "args": [{"type": "any"}], "returns": "Int64", "nullable": true}
|
||||
{"name": "toInt128", "args": [{"type": "any"}], "returns": "Int128"}
|
||||
{"name": "toInt128OrZero", "args": [{"type": "any"}], "returns": "Int128"}
|
||||
{"name": "toInt128OrNull", "args": [{"type": "any"}], "returns": "Int128", "nullable": true}
|
||||
{"name": "toInt256", "args": [{"type": "any"}], "returns": "Int256"}
|
||||
{"name": "toInt256OrZero", "args": [{"type": "any"}], "returns": "Int256"}
|
||||
{"name": "toInt256OrNull", "args": [{"type": "any"}], "returns": "Int256", "nullable": true}
|
||||
{"name": "toUInt8", "args": [{"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "toUInt8OrZero", "args": [{"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "toUInt8OrNull", "args": [{"type": "any"}], "returns": "UInt8", "nullable": true}
|
||||
{"name": "toUInt16", "args": [{"type": "any"}], "returns": "UInt16"}
|
||||
{"name": "toUInt16OrZero", "args": [{"type": "any"}], "returns": "UInt16"}
|
||||
{"name": "toUInt16OrNull", "args": [{"type": "any"}], "returns": "UInt16", "nullable": true}
|
||||
{"name": "toUInt32", "args": [{"type": "any"}], "returns": "UInt32"}
|
||||
{"name": "toUInt32OrZero", "args": [{"type": "any"}], "returns": "UInt32"}
|
||||
{"name": "toUInt32OrNull", "args": [{"type": "any"}], "returns": "UInt32", "nullable": true}
|
||||
{"name": "toUInt64", "args": [{"type": "any"}], "returns": "UInt64"}
|
||||
{"name": "toUInt64OrZero", "args": [{"type": "any"}], "returns": "UInt64"}
|
||||
{"name": "toUInt64OrNull", "args": [{"type": "any"}], "returns": "UInt64", "nullable": true}
|
||||
{"name": "toUInt128", "args": [{"type": "any"}], "returns": "UInt128"}
|
||||
{"name": "toUInt128OrZero", "args": [{"type": "any"}], "returns": "UInt128"}
|
||||
{"name": "toUInt128OrNull", "args": [{"type": "any"}], "returns": "UInt128", "nullable": true}
|
||||
{"name": "toUInt256", "args": [{"type": "any"}], "returns": "UInt256"}
|
||||
{"name": "toUInt256OrZero", "args": [{"type": "any"}], "returns": "UInt256"}
|
||||
{"name": "toUInt256OrNull", "args": [{"type": "any"}], "returns": "UInt256", "nullable": true}
|
||||
{"name": "toFloat32", "args": [{"type": "any"}], "returns": "Float32"}
|
||||
{"name": "toFloat32OrZero", "args": [{"type": "any"}], "returns": "Float32"}
|
||||
{"name": "toFloat32OrNull", "args": [{"type": "any"}], "returns": "Float32", "nullable": true}
|
||||
{"name": "toFloat64", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "toFloat64OrZero", "args": [{"type": "any"}], "returns": "Float64"}
|
||||
{"name": "toFloat64OrNull", "args": [{"type": "any"}], "returns": "Float64", "nullable": true}
|
||||
{"name": "toDate", "args": [{"type": "any"}], "returns": "Date"}
|
||||
{"name": "toDateOrZero", "args": [{"type": "any"}], "returns": "Date"}
|
||||
{"name": "toDateOrNull", "args": [{"type": "any"}], "returns": "Date", "nullable": true}
|
||||
{"name": "toDate32", "args": [{"type": "any"}], "returns": "Date32"}
|
||||
{"name": "toDate32OrZero", "args": [{"type": "any"}], "returns": "Date32"}
|
||||
{"name": "toDate32OrNull", "args": [{"type": "any"}], "returns": "Date32", "nullable": true}
|
||||
{"name": "toDateTime", "args": [{"type": "any"}], "returns": "DateTime"}
|
||||
{"name": "toDateTimeOrZero", "args": [{"type": "any"}], "returns": "DateTime"}
|
||||
{"name": "toDateTimeOrNull", "args": [{"type": "any"}], "returns": "DateTime", "nullable": true}
|
||||
{"name": "toUUID", "args": [{"type": "any"}], "returns": "UUID"}
|
||||
{"name": "toUUIDOrZero", "args": [{"type": "any"}], "returns": "UUID"}
|
||||
{"name": "toUUIDOrNull", "args": [{"type": "any"}], "returns": "UUID", "nullable": true}
|
||||
{"name": "toIPv4", "args": [{"type": "any"}], "returns": "IPv4"}
|
||||
{"name": "toIPv4OrZero", "args": [{"type": "any"}], "returns": "IPv4"}
|
||||
{"name": "toIPv4OrNull", "args": [{"type": "any"}], "returns": "IPv4", "nullable": true}
|
||||
{"name": "toIPv6", "args": [{"type": "any"}], "returns": "IPv6"}
|
||||
{"name": "toIPv6OrZero", "args": [{"type": "any"}], "returns": "IPv6"}
|
||||
{"name": "toIPv6OrNull", "args": [{"type": "any"}], "returns": "IPv6", "nullable": true}
|
||||
{"name": "toBool", "args": [{"type": "any"}], "returns": "Bool"}
|
||||
{"name": "toString", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "toDateTime", "args": [{"type": "any"}, {"type": "any"}], "returns": "DateTime"}
|
||||
{"name": "toDate", "args": [{"type": "any"}, {"type": "any"}], "returns": "Date"}
|
||||
{"name": "toDateTime64", "args": [{"type": "any"}, {"type": "any"}], "returns": "DateTime64($2)"}
|
||||
{"name": "toDateTime64", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "DateTime64($2, $3)"}
|
||||
{"name": "toDecimal32", "args": [{"type": "any"}, {"type": "any"}], "returns": "Decimal(9, $2)"}
|
||||
{"name": "toDecimal64", "args": [{"type": "any"}, {"type": "any"}], "returns": "Decimal(18, $2)"}
|
||||
{"name": "toDecimal128", "args": [{"type": "any"}, {"type": "any"}], "returns": "Decimal(38, $2)"}
|
||||
{"name": "toDecimal256", "args": [{"type": "any"}, {"type": "any"}], "returns": "Decimal(76, $2)"}
|
||||
{"name": "toFixedString", "args": [{"type": "any"}, {"type": "any"}], "returns": "FixedString"}
|
||||
{"name": "toStringCutToZero", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "reinterpretAsString", "args": [{"type": "any"}], "returns": "String"}
|
||||
{"name": "reinterpretAsUInt64", "args": [{"type": "any"}], "returns": "UInt64"}
|
||||
{"name": "toUnixTimestamp", "args": [{"type": "any"}], "returns": "UInt32"}
|
||||
{"name": "toUnixTimestamp", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt32"}
|
||||
{"name": "fromUnixTimestamp", "args": [{"type": "any"}], "returns": "DateTime"}
|
||||
{"name": "toUUIDOrNull", "args": [{"type": "any"}], "returns": "UUID", "nullable": true}
|
||||
{"name": "toUUIDOrZero", "args": [{"type": "any"}], "returns": "UUID"}
|
||||
{"name": "generateUUIDv4", "returns": "UUID", "never_null": true}
|
||||
{"name": "generateUUIDv7", "returns": "UUID", "never_null": true}
|
||||
{"name": "toIntervalSecond", "args": [{"type": "any"}], "returns": "IntervalSecond"}
|
||||
{"name": "toIntervalMinute", "args": [{"type": "any"}], "returns": "IntervalMinute"}
|
||||
{"name": "toIntervalHour", "args": [{"type": "any"}], "returns": "IntervalHour"}
|
||||
{"name": "toIntervalDay", "args": [{"type": "any"}], "returns": "IntervalDay"}
|
||||
{"name": "toIntervalWeek", "args": [{"type": "any"}], "returns": "IntervalWeek"}
|
||||
{"name": "toIntervalMonth", "args": [{"type": "any"}], "returns": "IntervalMonth"}
|
||||
{"name": "toIntervalYear", "args": [{"type": "any"}], "returns": "IntervalYear"}
|
||||
{"name": "now", "returns": "DateTime", "never_null": true}
|
||||
{"name": "now", "args": [{"type": "any"}], "returns": "DateTime", "never_null": true}
|
||||
{"name": "now64", "returns": "DateTime64", "never_null": true}
|
||||
{"name": "now64", "args": [{"type": "any"}], "returns": "DateTime64", "never_null": true}
|
||||
{"name": "today", "returns": "Date", "never_null": true}
|
||||
{"name": "yesterday", "returns": "Date", "never_null": true}
|
||||
{"name": "timeZone", "returns": "String", "never_null": true}
|
||||
{"name": "serverTimezone", "returns": "String", "never_null": true}
|
||||
{"name": "toYear", "args": [{"type": "any"}], "returns": "UInt16"}
|
||||
{"name": "toISOYear", "args": [{"type": "any"}], "returns": "UInt16"}
|
||||
{"name": "toDayOfYear", "args": [{"type": "any"}], "returns": "UInt16"}
|
||||
{"name": "toRelativeYearNum", "args": [{"type": "any"}], "returns": "UInt16"}
|
||||
{"name": "toWeek", "args": [{"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "toISOWeek", "args": [{"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "toYearWeek", "args": [{"type": "any"}], "returns": "UInt32"}
|
||||
{"name": "toQuarter", "args": [{"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "toMonth", "args": [{"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "toDayOfMonth", "args": [{"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "toDayOfWeek", "args": [{"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "toHour", "args": [{"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "toMinute", "args": [{"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "toSecond", "args": [{"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "toMillisecond", "args": [{"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "toYYYYMM", "args": [{"type": "any"}], "returns": "UInt32"}
|
||||
{"name": "toYYYYMMDD", "args": [{"type": "any"}], "returns": "UInt32"}
|
||||
{"name": "toYYYYMMDDhhmmss", "args": [{"type": "any"}], "returns": "UInt64"}
|
||||
{"name": "toStartOfDay", "args": [{"type": "any"}], "returns": "DateTime"}
|
||||
{"name": "toStartOfHour", "args": [{"type": "any"}], "returns": "DateTime"}
|
||||
{"name": "toStartOfMinute", "args": [{"type": "any"}], "returns": "DateTime"}
|
||||
{"name": "toStartOfFiveMinutes", "args": [{"type": "any"}], "returns": "DateTime"}
|
||||
{"name": "toStartOfFifteenMinutes", "args": [{"type": "any"}], "returns": "DateTime"}
|
||||
{"name": "toStartOfTenMinutes", "args": [{"type": "any"}], "returns": "DateTime"}
|
||||
{"name": "toTime", "args": [{"type": "any"}], "returns": "DateTime"}
|
||||
{"name": "timeSlot", "args": [{"type": "any"}], "returns": "DateTime"}
|
||||
{"name": "toLastDayOfMonth", "args": [{"type": "any"}], "returns": "DateTime"}
|
||||
{"name": "toLastDayOfMonth", "args": [{"type": "any"}], "returns": "Date"}
|
||||
{"name": "toStartOfMonth", "args": [{"type": "any"}], "returns": "Date"}
|
||||
{"name": "toStartOfQuarter", "args": [{"type": "any"}], "returns": "Date"}
|
||||
{"name": "toStartOfYear", "args": [{"type": "any"}], "returns": "Date"}
|
||||
{"name": "toStartOfWeek", "args": [{"type": "any"}], "returns": "Date"}
|
||||
{"name": "toMonday", "args": [{"type": "any"}], "returns": "Date"}
|
||||
{"name": "toStartOfISOYear", "args": [{"type": "any"}], "returns": "Date"}
|
||||
{"name": "toStartOfWeek", "args": [{"type": "any"}, {"type": "any"}], "returns": "Date"}
|
||||
{"name": "toStartOfInterval", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "addYears", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "addQuarters", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "addMonths", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "addWeeks", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "addDays", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "addHours", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "addMinutes", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "addSeconds", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "addMilliseconds", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "subtractYears", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "subtractQuarters", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "subtractMonths", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "subtractWeeks", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "subtractDays", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "subtractHours", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "subtractMinutes", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "subtractSeconds", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "addInterval", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "subtractInterval", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "dateDiff", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "Int64"}
|
||||
{"name": "date_diff", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "Int64"}
|
||||
{"name": "timestampDiff", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "Int64"}
|
||||
{"name": "timestamp_diff", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "Int64"}
|
||||
{"name": "age", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "Int64"}
|
||||
{"name": "dateAdd", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$3"}
|
||||
{"name": "date_add", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$3"}
|
||||
{"name": "dateSub", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$3"}
|
||||
{"name": "date_sub", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$3"}
|
||||
{"name": "timestampAdd", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$3"}
|
||||
{"name": "timestampSub", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$3"}
|
||||
{"name": "dateTrunc", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$3"}
|
||||
{"name": "date_trunc", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$3"}
|
||||
{"name": "dateTrunc", "args": [{"type": "any"}, {"type": "any"}], "returns": "$2"}
|
||||
{"name": "date_trunc", "args": [{"type": "any"}, {"type": "any"}], "returns": "$2"}
|
||||
{"name": "toRelativeDayNum", "args": [{"type": "any"}], "returns": "UInt32"}
|
||||
{"name": "toRelativeHourNum", "args": [{"type": "any"}], "returns": "UInt32"}
|
||||
{"name": "toRelativeMinuteNum", "args": [{"type": "any"}], "returns": "UInt32"}
|
||||
{"name": "toRelativeSecondNum", "args": [{"type": "any"}], "returns": "UInt32"}
|
||||
{"name": "toRelativeMonthNum", "args": [{"type": "any"}], "returns": "UInt32"}
|
||||
{"name": "toRelativeWeekNum", "args": [{"type": "any"}], "returns": "UInt32"}
|
||||
{"name": "toTimeZone", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "toTimezone", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "parseDateTimeBestEffort", "args": [{"type": "any"}], "returns": "DateTime"}
|
||||
{"name": "parseDateTimeBestEffortOrNull", "args": [{"type": "any"}], "returns": "DateTime", "nullable": true}
|
||||
{"name": "parseDateTimeBestEffortOrZero", "args": [{"type": "any"}], "returns": "DateTime"}
|
||||
{"name": "parseDateTime", "args": [{"type": "any"}, {"type": "any"}], "returns": "DateTime"}
|
||||
{"name": "parseDateTime64BestEffort", "args": [{"type": "any"}], "returns": "DateTime64"}
|
||||
{"name": "makeDate", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "Date"}
|
||||
{"name": "makeDateTime", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}, {"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "DateTime"}
|
||||
{"name": "arrayConcat", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayConcat", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayConcat", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayDistinct", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayDistinct", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayDistinct", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arraySort", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "arraySort", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arraySort", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayReverseSort", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayReverseSort", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayReverseSort", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayReverse", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayReverse", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayReverse", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arraySlice", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "arraySlice", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arraySlice", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayResize", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayResize", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayResize", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayPushBack", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayPushBack", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayPushBack", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayPushFront", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayPushFront", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayPushFront", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayPopBack", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayPopBack", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayPopBack", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayPopFront", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayPopFront", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayPopFront", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayFlatten", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayFlatten", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayFlatten", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayCompact", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayCompact", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayCompact", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayIntersect", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayIntersect", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayIntersect", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayUnion", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayUnion", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayUnion", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayShuffle", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayShuffle", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayShuffle", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "arrayCount", "args": [{"type": "any"}], "returns": "UInt32"}
|
||||
{"name": "arrayCount", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt32"}
|
||||
{"name": "arrayUniq", "args": [{"type": "any"}], "returns": "UInt32"}
|
||||
{"name": "arrayExists", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "arrayAll", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "hasSubstr", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "arrayEnumerate", "args": [{"type": "any"}], "returns": "Array(UInt32)"}
|
||||
{"name": "arrayEnumerateUniq", "args": [{"type": "any"}], "returns": "Array(UInt32)"}
|
||||
{"name": "range", "args": [{"type": "any"}], "returns": "Array(UInt64)"}
|
||||
{"name": "range", "args": [{"type": "any"}, {"type": "any"}], "returns": "Array(UInt64)"}
|
||||
{"name": "range", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "Array(UInt64)"}
|
||||
{"name": "mapKeys", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "mapValues", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "length", "args": [{"type": "any"}], "returns": "UInt64"}
|
||||
{"name": "JSONExtractInt", "args": [{"type": "any"}, {"type": "any"}], "returns": "Int64"}
|
||||
{"name": "JSONExtractInt64", "args": [{"type": "any"}, {"type": "any"}], "returns": "Int64"}
|
||||
{"name": "JSONExtractUInt", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt64"}
|
||||
{"name": "JSONExtractFloat", "args": [{"type": "any"}, {"type": "any"}], "returns": "Float64"}
|
||||
{"name": "JSONExtractBool", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "JSONHas", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "JSONLength", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt64"}
|
||||
{"name": "JSONType", "args": [{"type": "any"}, {"type": "any"}], "returns": "Enum8"}
|
||||
{"name": "isValidJSON", "args": [{"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "JSONArrayLength", "args": [{"type": "any"}], "returns": "UInt64", "nullable": true}
|
||||
{"name": "simpleJSONExtractInt", "args": [{"type": "any"}, {"type": "any"}], "returns": "Int64"}
|
||||
{"name": "simpleJSONExtractUInt", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt64"}
|
||||
{"name": "simpleJSONExtractFloat", "args": [{"type": "any"}, {"type": "any"}], "returns": "Float64"}
|
||||
{"name": "simpleJSONExtractBool", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "simpleJSONHas", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "visitParamExtractInt", "args": [{"type": "any"}, {"type": "any"}], "returns": "Int64"}
|
||||
{"name": "visitParamExtractUInt", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt64"}
|
||||
{"name": "visitParamExtractFloat", "args": [{"type": "any"}, {"type": "any"}], "returns": "Float64"}
|
||||
{"name": "visitParamExtractBool", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "visitParamHas", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "IPv4StringToNum", "args": [{"type": "any"}], "returns": "UInt32"}
|
||||
{"name": "IPv4StringToNumOrNull", "args": [{"type": "any"}], "returns": "UInt32", "nullable": true}
|
||||
{"name": "IPv6StringToNum", "args": [{"type": "any"}], "returns": "FixedString(16)"}
|
||||
{"name": "isIPv4String", "args": [{"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "isIPv6String", "args": [{"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "sleep", "args": [{"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "blockSize", "returns": "UInt64", "never_null": true}
|
||||
{"name": "rowNumberInAllBlocks", "returns": "UInt64", "never_null": true}
|
||||
{"name": "materialize", "args": [{"type": "any"}], "returns": "$1"}
|
||||
{"name": "ignore", "args": [{"type": "any"}], "returns": "UInt8", "never_null": true}
|
||||
{"name": "ifNotFinite", "args": [{"type": "any"}, {"type": "any"}], "returns": "$1"}
|
||||
{"name": "throwIf", "args": [{"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "transform", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$4"}
|
||||
{"name": "bar", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "bar", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "dictGetString", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "String"}
|
||||
{"name": "dictGetUInt64", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "UInt64"}
|
||||
{"name": "dictGetInt64", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "Int64"}
|
||||
{"name": "dictGetFloat64", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "Float64"}
|
||||
{"name": "dictGetDate", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "Date"}
|
||||
{"name": "dictGetDateTime", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "DateTime"}
|
||||
{"name": "dictHas", "args": [{"type": "any"}, {"type": "any"}], "returns": "UInt8"}
|
||||
{"name": "tuple", "args": [{"type": "any"}], "returns": "Tuple"}
|
||||
{"name": "tupleElement", "args": [{"type": "any"}, {"type": "any"}], "returns": "any"}
|
||||
{"name": "map", "args": [{"type": "any"}, {"type": "any"}], "returns": "Map"}
|
||||
{"name": "multiIf", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$2"}
|
||||
{"name": "multiIf", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$2"}
|
||||
{"name": "multiIf", "args": [{"type": "any"}, {"type": "any"}, {"type": "any"}, {"type": "any"}, {"type": "any"}, {"type": "any"}, {"type": "any"}], "returns": "$2"}
|
||||
66
internal/engine/clickhouse/dialect/types.jsonl
Normal file
66
internal/engine/clickhouse/dialect/types.jsonl
Normal file
@@ -0,0 +1,66 @@
|
||||
{"name":"AggregateFunction","category":"U"}
|
||||
{"name":"Array","category":"A"}
|
||||
{"name":"BFloat16","category":"N"}
|
||||
{"name":"Bool","category":"B","aliases":["boolean"]}
|
||||
{"name":"Date","category":"D"}
|
||||
{"name":"Date32","category":"D"}
|
||||
{"name":"DateTime","category":"D","aliases":["TIMESTAMP"]}
|
||||
{"name":"DateTime32","category":"D"}
|
||||
{"name":"DateTime64","category":"D"}
|
||||
{"name":"Decimal","category":"N","aliases":["DEC","FIXED","NUMERIC"]}
|
||||
{"name":"Decimal128","category":"N"}
|
||||
{"name":"Decimal256","category":"N"}
|
||||
{"name":"Decimal32","category":"N"}
|
||||
{"name":"Decimal64","category":"N"}
|
||||
{"name":"Dynamic","category":"U"}
|
||||
{"name":"Enum","category":"U"}
|
||||
{"name":"Enum16","category":"U"}
|
||||
{"name":"Enum8","category":"U"}
|
||||
{"name":"FixedString","category":"S","aliases":["BINARY"]}
|
||||
{"name":"Float32","category":"N","aliases":["FLOAT","REAL","SINGLE"]}
|
||||
{"name":"Float64","category":"N","aliases":["DOUBLE","DOUBLE PRECISION"]}
|
||||
{"name":"IPv4","category":"S","aliases":["INET4"]}
|
||||
{"name":"IPv6","category":"S","aliases":["INET6"]}
|
||||
{"name":"Int128","category":"N"}
|
||||
{"name":"Int16","category":"N","aliases":["SMALLINT","SMALLINT SIGNED"]}
|
||||
{"name":"Int256","category":"N"}
|
||||
{"name":"Int32","category":"N","aliases":["INT","INT SIGNED","INTEGER","INTEGER SIGNED","MEDIUMINT","MEDIUMINT SIGNED"]}
|
||||
{"name":"Int64","category":"N","aliases":["BIGINT","BIGINT SIGNED","SIGNED"]}
|
||||
{"name":"Int8","category":"N","aliases":["BYTE","INT1","INT1 SIGNED","TINYINT","TINYINT SIGNED"]}
|
||||
{"name":"IntervalDay","category":"T"}
|
||||
{"name":"IntervalHour","category":"T"}
|
||||
{"name":"IntervalMicrosecond","category":"T"}
|
||||
{"name":"IntervalMillisecond","category":"T"}
|
||||
{"name":"IntervalMinute","category":"T"}
|
||||
{"name":"IntervalMonth","category":"T"}
|
||||
{"name":"IntervalNanosecond","category":"T"}
|
||||
{"name":"IntervalQuarter","category":"T"}
|
||||
{"name":"IntervalSecond","category":"T"}
|
||||
{"name":"IntervalWeek","category":"T"}
|
||||
{"name":"IntervalYear","category":"T"}
|
||||
{"name":"JSON","category":"U"}
|
||||
{"name":"LineString","category":"U"}
|
||||
{"name":"LowCardinality","category":"U"}
|
||||
{"name":"Map","category":"U"}
|
||||
{"name":"MultiLineString","category":"U"}
|
||||
{"name":"MultiPolygon","category":"U"}
|
||||
{"name":"Nested","category":"U"}
|
||||
{"name":"Nothing","category":"U"}
|
||||
{"name":"Nullable","category":"U"}
|
||||
{"name":"Object","category":"U"}
|
||||
{"name":"Point","category":"U"}
|
||||
{"name":"Polygon","category":"U"}
|
||||
{"name":"Ring","category":"U"}
|
||||
{"name":"SimpleAggregateFunction","category":"U"}
|
||||
{"name":"String","category":"S","aliases":["BINARY LARGE OBJECT","BINARY VARYING","BLOB","BYTEA","CHAR","CHAR LARGE OBJECT","CHAR VARYING","CHARACTER","CHARACTER LARGE OBJECT","CHARACTER VARYING","CLOB","GEOMETRY","LONGBLOB","LONGTEXT","MEDIUMBLOB","MEDIUMTEXT","NATIONAL CHAR","NATIONAL CHAR VARYING","NATIONAL CHARACTER","NATIONAL CHARACTER LARGE OBJECT","NATIONAL CHARACTER VARYING","NCHAR","NCHAR LARGE OBJECT","NCHAR VARYING","NVARCHAR","TEXT","TINYBLOB","TINYTEXT","VARBINARY","VARCHAR","VARCHAR2"]}
|
||||
{"name":"Time","category":"D"}
|
||||
{"name":"Time64","category":"D"}
|
||||
{"name":"Tuple","category":"U"}
|
||||
{"name":"UInt128","category":"N"}
|
||||
{"name":"UInt16","category":"N","aliases":["SMALLINT UNSIGNED","YEAR"]}
|
||||
{"name":"UInt256","category":"N"}
|
||||
{"name":"UInt32","category":"N","aliases":["INT UNSIGNED","INTEGER UNSIGNED","MEDIUMINT UNSIGNED"]}
|
||||
{"name":"UInt64","category":"N","aliases":["BIGINT UNSIGNED","BIT","SET","UNSIGNED"]}
|
||||
{"name":"UInt8","category":"N","aliases":["INT1 UNSIGNED","TINYINT UNSIGNED"]}
|
||||
{"name":"UUID","category":"S"}
|
||||
{"name":"Variant","category":"U"}
|
||||
29
internal/engine/clickhouse/format.go
Normal file
29
internal/engine/clickhouse/format.go
Normal file
@@ -0,0 +1,29 @@
|
||||
package clickhouse
|
||||
|
||||
// QuoteIdent returns a quoted identifier if it needs quoting.
|
||||
// ClickHouse uses backticks or double quotes for quoting identifiers.
|
||||
func (p *Parser) QuoteIdent(s string) string {
|
||||
// For now, don't quote - can be extended to quote when necessary
|
||||
return s
|
||||
}
|
||||
|
||||
// TypeName returns the SQL type name for the given namespace and name.
|
||||
func (p *Parser) TypeName(ns, name string) string {
|
||||
if ns != "" {
|
||||
return ns + "." + name
|
||||
}
|
||||
return name
|
||||
}
|
||||
|
||||
// Param returns the parameter placeholder for the given number.
|
||||
// ClickHouse uses {name:Type} for named parameters, but for positional
|
||||
// parameters we use ? which is supported by the clickhouse-go driver.
|
||||
func (p *Parser) Param(n int, numbered bool) string {
|
||||
return "?"
|
||||
}
|
||||
|
||||
// Cast returns a type cast expression.
|
||||
// ClickHouse uses CAST(expr AS type) syntax, same as MySQL.
|
||||
func (p *Parser) Cast(arg, typeName string) string {
|
||||
return "CAST(" + arg + " AS " + typeName + ")"
|
||||
}
|
||||
125
internal/engine/clickhouse/parse.go
Normal file
125
internal/engine/clickhouse/parse.go
Normal file
@@ -0,0 +1,125 @@
|
||||
package clickhouse
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"io"
|
||||
|
||||
"github.com/sqlc-dev/doubleclick/parser"
|
||||
|
||||
"github.com/sqlc-dev/sqlc/internal/source"
|
||||
"github.com/sqlc-dev/sqlc/internal/sql/ast"
|
||||
)
|
||||
|
||||
func NewParser() *Parser {
|
||||
return &Parser{}
|
||||
}
|
||||
|
||||
type Parser struct{}
|
||||
|
||||
func (p *Parser) Parse(r io.Reader) ([]ast.Statement, error) {
|
||||
blob, err := io.ReadAll(r)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
stmtNodes, err := parser.Parse(ctx, bytes.NewReader(blob))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var stmts []ast.Statement
|
||||
loc := 0
|
||||
for _, stmt := range stmtNodes {
|
||||
start := stmt.Pos().Offset - 1
|
||||
if start < loc {
|
||||
start = loc
|
||||
}
|
||||
end := statementEnd(blob, start)
|
||||
|
||||
converter := &cc{}
|
||||
out := converter.convert(stmt)
|
||||
if _, ok := out.(*ast.TODO); ok {
|
||||
loc = end
|
||||
continue
|
||||
}
|
||||
|
||||
stmts = append(stmts, ast.Statement{
|
||||
Raw: &ast.RawStmt{
|
||||
Stmt: out,
|
||||
StmtLocation: loc,
|
||||
StmtLen: end - loc,
|
||||
},
|
||||
})
|
||||
loc = end
|
||||
}
|
||||
|
||||
return stmts, nil
|
||||
}
|
||||
|
||||
func statementEnd(blob []byte, start int) int {
|
||||
for i := start; i < len(blob); i++ {
|
||||
switch blob[i] {
|
||||
case '\'', '"', '`':
|
||||
i = skipQuoted(blob, i)
|
||||
case '-':
|
||||
if i+1 < len(blob) && blob[i+1] == '-' {
|
||||
i = skipLineComment(blob, i)
|
||||
}
|
||||
case '#':
|
||||
i = skipLineComment(blob, i)
|
||||
case '/':
|
||||
if i+1 < len(blob) && blob[i+1] == '*' {
|
||||
i = skipBlockComment(blob, i)
|
||||
}
|
||||
case ';':
|
||||
return i + 1
|
||||
}
|
||||
}
|
||||
return len(blob)
|
||||
}
|
||||
|
||||
func skipQuoted(blob []byte, i int) int {
|
||||
q := blob[i]
|
||||
for j := i + 1; j < len(blob); j++ {
|
||||
switch blob[j] {
|
||||
case '\\':
|
||||
j++
|
||||
case q:
|
||||
if j+1 < len(blob) && blob[j+1] == q {
|
||||
j++
|
||||
continue
|
||||
}
|
||||
return j
|
||||
}
|
||||
}
|
||||
return len(blob) - 1
|
||||
}
|
||||
|
||||
func skipLineComment(blob []byte, i int) int {
|
||||
for j := i; j < len(blob); j++ {
|
||||
if blob[j] == '\n' {
|
||||
return j
|
||||
}
|
||||
}
|
||||
return len(blob) - 1
|
||||
}
|
||||
|
||||
func skipBlockComment(blob []byte, i int) int {
|
||||
for j := i + 2; j < len(blob); j++ {
|
||||
if blob[j] == '*' && j+1 < len(blob) && blob[j+1] == '/' {
|
||||
return j + 1
|
||||
}
|
||||
}
|
||||
return len(blob) - 1
|
||||
}
|
||||
|
||||
// https://clickhouse.com/docs/en/sql-reference/syntax#comments
|
||||
func (p *Parser) CommentSyntax() source.CommentSyntax {
|
||||
return source.CommentSyntax{
|
||||
Dash: true, // -- comment
|
||||
SlashStar: true, // /* comment */
|
||||
Hash: true, // # comment (ClickHouse supports this)
|
||||
}
|
||||
}
|
||||
150
internal/engine/clickhouse/reserved.go
Normal file
150
internal/engine/clickhouse/reserved.go
Normal file
@@ -0,0 +1,150 @@
|
||||
package clickhouse
|
||||
|
||||
import "strings"
|
||||
|
||||
// https://clickhouse.com/docs/en/sql-reference/syntax#keywords
|
||||
func (p *Parser) IsReservedKeyword(s string) bool {
|
||||
switch strings.ToLower(s) {
|
||||
case "add":
|
||||
case "after":
|
||||
case "alias":
|
||||
case "all":
|
||||
case "alter":
|
||||
case "and":
|
||||
case "anti":
|
||||
case "any":
|
||||
case "array":
|
||||
case "as":
|
||||
case "asc":
|
||||
case "asof":
|
||||
case "between":
|
||||
case "both":
|
||||
case "by":
|
||||
case "case":
|
||||
case "cast":
|
||||
case "check":
|
||||
case "cluster":
|
||||
case "collate":
|
||||
case "column":
|
||||
case "comment":
|
||||
case "constraint":
|
||||
case "create":
|
||||
case "cross":
|
||||
case "cube":
|
||||
case "database":
|
||||
case "databases":
|
||||
case "default":
|
||||
case "delete":
|
||||
case "desc":
|
||||
case "describe":
|
||||
case "detach":
|
||||
case "distinct":
|
||||
case "distributed":
|
||||
case "drop":
|
||||
case "else":
|
||||
case "end":
|
||||
case "engine":
|
||||
case "exists":
|
||||
case "explain":
|
||||
case "expression":
|
||||
case "extract":
|
||||
case "false":
|
||||
case "fetch":
|
||||
case "final":
|
||||
case "first":
|
||||
case "for":
|
||||
case "format":
|
||||
case "from":
|
||||
case "full":
|
||||
case "function":
|
||||
case "global":
|
||||
case "grant":
|
||||
case "group":
|
||||
case "having":
|
||||
case "if":
|
||||
case "ilike":
|
||||
case "in":
|
||||
case "index":
|
||||
case "inner":
|
||||
case "insert":
|
||||
case "interpolate":
|
||||
case "interval":
|
||||
case "into":
|
||||
case "is":
|
||||
case "join":
|
||||
case "key":
|
||||
case "kill":
|
||||
case "last":
|
||||
case "leading":
|
||||
case "left":
|
||||
case "like":
|
||||
case "limit":
|
||||
case "live":
|
||||
case "local":
|
||||
case "logs":
|
||||
case "materialized":
|
||||
case "modify":
|
||||
case "natural":
|
||||
case "not":
|
||||
case "null":
|
||||
case "nulls":
|
||||
case "offset":
|
||||
case "on":
|
||||
case "optimize":
|
||||
case "or":
|
||||
case "order":
|
||||
case "outer":
|
||||
case "outfile":
|
||||
case "over":
|
||||
case "partition":
|
||||
case "paste":
|
||||
case "populate":
|
||||
case "prewhere":
|
||||
case "primary":
|
||||
case "projection":
|
||||
case "rename":
|
||||
case "replace":
|
||||
case "right":
|
||||
case "rollup":
|
||||
case "sample":
|
||||
case "select":
|
||||
case "semi":
|
||||
case "set":
|
||||
case "settings":
|
||||
case "show":
|
||||
case "storage":
|
||||
case "substring":
|
||||
case "sync":
|
||||
case "system":
|
||||
case "table":
|
||||
case "tables":
|
||||
case "temporary":
|
||||
case "test":
|
||||
case "then":
|
||||
case "ties":
|
||||
case "to":
|
||||
case "top":
|
||||
case "totals":
|
||||
case "trailing":
|
||||
case "trim":
|
||||
case "true":
|
||||
case "truncate":
|
||||
case "ttl":
|
||||
case "type":
|
||||
case "union":
|
||||
case "update":
|
||||
case "use":
|
||||
case "using":
|
||||
case "uuid":
|
||||
case "values":
|
||||
case "view":
|
||||
case "watch":
|
||||
case "when":
|
||||
case "where":
|
||||
case "window":
|
||||
case "with":
|
||||
default:
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
25
internal/engine/clickhouse/seed.go
Normal file
25
internal/engine/clickhouse/seed.go
Normal file
@@ -0,0 +1,25 @@
|
||||
package clickhouse
|
||||
|
||||
import (
|
||||
"embed"
|
||||
|
||||
"github.com/sqlc-dev/sqlc/internal/core"
|
||||
"github.com/sqlc-dev/sqlc/internal/core/seed"
|
||||
)
|
||||
|
||||
// The dialect directory describes ClickHouse's type system. types.jsonl is
|
||||
// generated from system.data_type_families of the pinned ClickHouse release
|
||||
// by goldeneye (internal/goldeneye), which also checks it against one;
|
||||
// dialect.json and functions.jsonl are authored by hand, since ClickHouse
|
||||
// publishes no function signatures. Regenerate from internal/goldeneye with:
|
||||
//
|
||||
// go run ./cmd/goldeneye install clickhouse
|
||||
// go run ./cmd/goldeneye generate clickhouse
|
||||
//
|
||||
//go:embed dialect
|
||||
var dialectFS embed.FS
|
||||
|
||||
// Dialect returns the catalog option that seeds ClickHouse's type system.
|
||||
func Dialect() core.Option {
|
||||
return seed.Dialect(dialectFS, "dialect")
|
||||
}
|
||||
9
internal/engine/clickhouse/stdlib.go
Normal file
9
internal/engine/clickhouse/stdlib.go
Normal file
@@ -0,0 +1,9 @@
|
||||
package clickhouse
|
||||
|
||||
import (
|
||||
"github.com/sqlc-dev/sqlc/internal/sql/catalog"
|
||||
)
|
||||
|
||||
func defaultSchema(name string) *catalog.Schema {
|
||||
return &catalog.Schema{Name: name}
|
||||
}
|
||||
59
internal/engine/clickhouse/utils.go
Normal file
59
internal/engine/clickhouse/utils.go
Normal file
@@ -0,0 +1,59 @@
|
||||
package clickhouse
|
||||
|
||||
import (
|
||||
"log"
|
||||
"strings"
|
||||
|
||||
chast "github.com/sqlc-dev/doubleclick/ast"
|
||||
|
||||
"github.com/sqlc-dev/sqlc/internal/debug"
|
||||
"github.com/sqlc-dev/sqlc/internal/sql/ast"
|
||||
)
|
||||
|
||||
func todo(n chast.Node) *ast.TODO {
|
||||
if debug.Active {
|
||||
log.Printf("clickhouse.convert: Unknown node type %T\n", n)
|
||||
}
|
||||
return &ast.TODO{}
|
||||
}
|
||||
|
||||
func identifier(id string) string {
|
||||
return strings.ToLower(id)
|
||||
}
|
||||
|
||||
func NewIdentifier(t string) *ast.String {
|
||||
return &ast.String{Str: identifier(t)}
|
||||
}
|
||||
|
||||
func parseTableName(n *chast.TableIdentifier) *ast.TableName {
|
||||
return &ast.TableName{
|
||||
Schema: identifier(n.Database),
|
||||
Name: identifier(n.Table),
|
||||
}
|
||||
}
|
||||
|
||||
func parseTableIdentifierToRangeVar(n *chast.TableIdentifier) *ast.RangeVar {
|
||||
schemaname := identifier(n.Database)
|
||||
relname := identifier(n.Table)
|
||||
return &ast.RangeVar{
|
||||
Schemaname: &schemaname,
|
||||
Relname: &relname,
|
||||
}
|
||||
}
|
||||
|
||||
func isNotNull(n *chast.ColumnDeclaration) bool {
|
||||
if n.Type == nil {
|
||||
return false
|
||||
}
|
||||
// Check if type is wrapped in Nullable()
|
||||
// If it's Nullable, it can be null, so return false
|
||||
// If it's not Nullable, it's NOT NULL by default in ClickHouse
|
||||
if n.Type.Name != "" && strings.ToLower(n.Type.Name) == "nullable" {
|
||||
return false
|
||||
}
|
||||
// Also check if Nullable field is explicitly set
|
||||
if n.Nullable != nil && *n.Nullable {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
225
internal/engine/dolphin/CLAUDE.md
Normal file
225
internal/engine/dolphin/CLAUDE.md
Normal file
@@ -0,0 +1,225 @@
|
||||
# Dolphin Engine (MySQL) - Claude Code Guide
|
||||
|
||||
The dolphin engine handles MySQL parsing and AST conversion using the Marino parser
|
||||
(a sqlc-maintained fork of the TiDB / pingcap parser).
|
||||
|
||||
## Architecture
|
||||
|
||||
### Parser Flow
|
||||
```
|
||||
SQL String → Marino Parser → Marino AST → sqlc AST → Analysis/Codegen
|
||||
```
|
||||
|
||||
### Key Files
|
||||
- `convert.go` - Converts Marino AST nodes to sqlc AST nodes
|
||||
- `format.go` - MySQL-specific formatting (identifiers, types, parameters)
|
||||
- `parse.go` - Entry point for parsing MySQL SQL
|
||||
|
||||
## Marino Parser
|
||||
|
||||
The Marino parser (`github.com/sqlc-dev/marino`) is used for MySQL parsing. It is a
|
||||
hard fork of `github.com/pingcap/tidb/pkg/parser` with a flatter package layout
|
||||
(no `pkg/parser/...` prefix) and the former `test_driver` types merged into the
|
||||
`ast` package as `ValueExprBase` / `ParamMarkerExprBase`.
|
||||
|
||||
```go
|
||||
import (
|
||||
pcast "github.com/sqlc-dev/marino/ast"
|
||||
"github.com/sqlc-dev/marino/mysql"
|
||||
"github.com/sqlc-dev/marino/types"
|
||||
)
|
||||
```
|
||||
|
||||
### Common Marino Types
|
||||
- `pcast.SelectStmt`, `pcast.InsertStmt`, etc. - Statement types
|
||||
- `pcast.ColumnNameExpr` - Column reference
|
||||
- `pcast.FuncCallExpr` - Function call
|
||||
- `pcast.BinaryOperationExpr` - Binary expression
|
||||
- `pcast.VariableExpr` - MySQL user variable (@var)
|
||||
- `pcast.Join` - JOIN clause with Left, Right, On, Using
|
||||
|
||||
## Conversion Pattern
|
||||
|
||||
Each TiDB node type has a corresponding converter method:
|
||||
|
||||
```go
|
||||
func (c *cc) convertSelectStmt(n *pcast.SelectStmt) *ast.SelectStmt {
|
||||
return &ast.SelectStmt{
|
||||
FromClause: c.convertTableRefsClause(n.From),
|
||||
WhereClause: c.convert(n.Where),
|
||||
// ...
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
The main `convert()` method dispatches to specific converters:
|
||||
```go
|
||||
func (c *cc) convert(node pcast.Node) ast.Node {
|
||||
switch n := node.(type) {
|
||||
case *pcast.SelectStmt:
|
||||
return c.convertSelectStmt(n)
|
||||
case *pcast.InsertStmt:
|
||||
return c.convertInsertStmt(n)
|
||||
// ...
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Key Conversions
|
||||
|
||||
### Column References
|
||||
```go
|
||||
func (c *cc) convertColumnNameExpr(n *pcast.ColumnNameExpr) *ast.ColumnRef {
|
||||
var items []ast.Node
|
||||
if schema := n.Name.Schema.String(); schema != "" {
|
||||
items = append(items, NewIdentifier(schema))
|
||||
}
|
||||
if table := n.Name.Table.String(); table != "" {
|
||||
items = append(items, NewIdentifier(table))
|
||||
}
|
||||
items = append(items, NewIdentifier(n.Name.Name.String()))
|
||||
return &ast.ColumnRef{Fields: &ast.List{Items: items}}
|
||||
}
|
||||
```
|
||||
|
||||
### JOINs
|
||||
```go
|
||||
func (c *cc) convertJoin(n *pcast.Join) *ast.List {
|
||||
if n.Right != nil && n.Left != nil {
|
||||
return &ast.List{
|
||||
Items: []ast.Node{&ast.JoinExpr{
|
||||
Jointype: ast.JoinType(n.Tp),
|
||||
Larg: c.convert(n.Left),
|
||||
Rarg: c.convert(n.Right),
|
||||
Quals: c.convert(n.On),
|
||||
UsingClause: convertUsing(n.Using),
|
||||
}},
|
||||
}
|
||||
}
|
||||
// No join - just return tables
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
### MySQL User Variables
|
||||
MySQL user variables (`@var`) are different from sqlc's `@param` syntax:
|
||||
```go
|
||||
func (c *cc) convertVariableExpr(n *pcast.VariableExpr) ast.Node {
|
||||
// Use VariableExpr to preserve as-is (NOT A_Expr which would be treated as sqlc param)
|
||||
return &ast.VariableExpr{
|
||||
Name: n.Name,
|
||||
Location: n.OriginTextPosition(),
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Type Casts (CAST AS)
|
||||
```go
|
||||
func (c *cc) convertFuncCastExpr(n *pcast.FuncCastExpr) ast.Node {
|
||||
typeName := types.TypeStr(n.Tp.GetType())
|
||||
// Handle UNSIGNED/SIGNED specially
|
||||
if typeName == "bigint" {
|
||||
if mysql.HasUnsignedFlag(n.Tp.GetFlag()) {
|
||||
typeName = "bigint unsigned"
|
||||
} else {
|
||||
typeName = "bigint signed"
|
||||
}
|
||||
}
|
||||
return &ast.TypeCast{
|
||||
Arg: c.convert(n.Expr),
|
||||
TypeName: &ast.TypeName{Name: typeName},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Column Definitions
|
||||
```go
|
||||
func convertColumnDef(def *pcast.ColumnDef) *ast.ColumnDef {
|
||||
typeName := &ast.TypeName{Name: types.TypeToStr(def.Tp.GetType(), def.Tp.GetCharset())}
|
||||
|
||||
// Only add Typmods for types where length is meaningful
|
||||
tp := def.Tp.GetType()
|
||||
flen := def.Tp.GetFlen()
|
||||
switch tp {
|
||||
case mysql.TypeVarchar, mysql.TypeString, mysql.TypeVarString:
|
||||
if flen >= 0 {
|
||||
typeName.Typmods = &ast.List{
|
||||
Items: []ast.Node{&ast.Integer{Ival: int64(flen)}},
|
||||
}
|
||||
}
|
||||
// Don't add for DATETIME, TIMESTAMP - internal flen is not user-specified
|
||||
}
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
### Multi-Table DELETE
|
||||
MySQL supports `DELETE t1, t2 FROM t1 JOIN t2 ...`:
|
||||
```go
|
||||
func (c *cc) convertDeleteStmt(n *pcast.DeleteStmt) *ast.DeleteStmt {
|
||||
if n.IsMultiTable && n.Tables != nil {
|
||||
// Convert targets (t1.*, t2.*)
|
||||
targets := &ast.List{}
|
||||
for _, table := range n.Tables.Tables {
|
||||
// Build ColumnRef for each target
|
||||
}
|
||||
stmt.Targets = targets
|
||||
|
||||
// Preserve JOINs in FromClause
|
||||
stmt.FromClause = c.convertTableRefsClause(n.TableRefs).Items[0]
|
||||
} else {
|
||||
// Single-table DELETE
|
||||
stmt.Relations = c.convertTableRefsClause(n.TableRefs)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## MySQL-Specific Formatting
|
||||
|
||||
### format.go
|
||||
```go
|
||||
func (p *Parser) TypeName(ns, name string) string {
|
||||
switch name {
|
||||
case "bigint unsigned":
|
||||
return "UNSIGNED"
|
||||
case "bigint signed":
|
||||
return "SIGNED"
|
||||
}
|
||||
return name
|
||||
}
|
||||
|
||||
func (p *Parser) Param(n int) string {
|
||||
return "?" // MySQL uses ? for all parameters
|
||||
}
|
||||
```
|
||||
|
||||
## Common Issues and Solutions
|
||||
|
||||
### Issue: Panic in Walk/Apply
|
||||
**Cause**: New AST node type not handled in `astutils/walk.go` or `astutils/rewrite.go`
|
||||
**Solution**: Add case for the node type in both files
|
||||
|
||||
### Issue: MySQL @variable being treated as parameter
|
||||
**Cause**: The preprocessor's dialect said `@name` is sqlc syntax
|
||||
**Solution**: MySQL sets `AtSign: false` in `internal/sql/preprocess/dialect.go`, so
|
||||
`@user_id` is left alone before the parser ever sees it
|
||||
|
||||
### Issue: Type length appearing incorrectly (e.g., datetime(39))
|
||||
**Cause**: Using internal `flen` for all types
|
||||
**Solution**: Only populate `Typmods` for types where length is user-specified (varchar, char, etc.)
|
||||
|
||||
## Testing
|
||||
|
||||
### TestFormat
|
||||
Tests that SQL can be:
|
||||
1. Parsed
|
||||
2. Formatted back to SQL
|
||||
3. Re-parsed
|
||||
4. Re-formatted to match
|
||||
|
||||
### TestReplay
|
||||
Tests the full sqlc pipeline:
|
||||
1. Parse schema and queries
|
||||
2. Analyze
|
||||
3. Generate code
|
||||
4. Compare with expected output
|
||||
16
internal/engine/dolphin/catalog.go
Normal file
16
internal/engine/dolphin/catalog.go
Normal file
@@ -0,0 +1,16 @@
|
||||
package dolphin
|
||||
|
||||
import (
|
||||
"github.com/sqlc-dev/sqlc/internal/sql/catalog"
|
||||
)
|
||||
|
||||
func NewCatalog() *catalog.Catalog {
|
||||
def := "public" // TODO: What is the default database for MySQL?
|
||||
return &catalog.Catalog{
|
||||
DefaultSchema: def,
|
||||
Schemas: []*catalog.Schema{
|
||||
defaultSchema(def),
|
||||
},
|
||||
Extensions: map[string]struct{}{},
|
||||
}
|
||||
}
|
||||
2266
internal/engine/dolphin/convert.go
Normal file
2266
internal/engine/dolphin/convert.go
Normal file
File diff suppressed because it is too large
Load Diff
50
internal/engine/dolphin/dialect/dialect.json
Normal file
50
internal/engine/dolphin/dialect/dialect.json
Normal file
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"dialect": "mysql",
|
||||
"const": {
|
||||
"integer": "int",
|
||||
"float": "decimal",
|
||||
"string": "text",
|
||||
"bool": "bool"
|
||||
},
|
||||
"bool": "bool",
|
||||
"comparison": ["=", "<>", "!=", "<", "<=", ">", ">=", "<=>"],
|
||||
"comparison_categories": "BNSDU",
|
||||
"arithmetic": ["+", "-", "*", "/", "%", "DIV"],
|
||||
"arithmetic_categories": "N",
|
||||
"cast_categories": "NSD",
|
||||
"rewrites": [
|
||||
{
|
||||
"from": "boolean",
|
||||
"to": "tinyint(1)"
|
||||
},
|
||||
{
|
||||
"from": "bool",
|
||||
"to": "tinyint(1)"
|
||||
},
|
||||
{
|
||||
"from": "decimal",
|
||||
"to": "decimal(10, 0)"
|
||||
},
|
||||
{
|
||||
"from": "decimal($1)",
|
||||
"to": "decimal($1, 0)"
|
||||
},
|
||||
{
|
||||
"from": "decimal unsigned",
|
||||
"to": "decimal unsigned(10, 0)"
|
||||
},
|
||||
{
|
||||
"from": "decimal unsigned($1)",
|
||||
"to": "decimal unsigned($1, 0)"
|
||||
},
|
||||
{
|
||||
"from": "float($1)",
|
||||
"to": "float",
|
||||
"where": "$1 <= 24"
|
||||
},
|
||||
{
|
||||
"from": "float($1)",
|
||||
"to": "double"
|
||||
}
|
||||
]
|
||||
}
|
||||
520
internal/engine/dolphin/dialect/functions.jsonl
Normal file
520
internal/engine/dolphin/dialect/functions.jsonl
Normal file
@@ -0,0 +1,520 @@
|
||||
{"name":"ABS","args":[{"type":"tinyint"}],"returns":"tinyint"}
|
||||
{"name":"ABS","args":[{"type":"smallint"}],"returns":"smallint"}
|
||||
{"name":"ABS","args":[{"type":"mediumint"}],"returns":"mediumint"}
|
||||
{"name":"ABS","args":[{"type":"int"}],"returns":"int"}
|
||||
{"name":"ABS","args":[{"type":"bigint"}],"returns":"bigint"}
|
||||
{"name":"ABS","args":[{"type":"double"}],"returns":"double"}
|
||||
{"name":"ABS","args":[{"type":"double precision"}],"returns":"double precision"}
|
||||
{"name":"ACOS","args":[{"type":"double precision"}],"returns":"double precision"}
|
||||
{"name":"ADDDATE","args":[{"type":"date"},{"type":"int"}],"returns":"date"}
|
||||
{"name":"ADDTIME","args":[{"type":"time"},{"type":"time"}],"returns":"time"}
|
||||
{"name":"AES_DECRYPT","args":[{"type":"binary"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"AES_DECRYPT","args":[{"type":"binary"},{"type":"text"},{"type":"binary"}],"returns":"text"}
|
||||
{"name":"AES_ENCRYPT","args":[{"type":"text"},{"type":"text"}],"returns":"binary"}
|
||||
{"name":"AES_ENCRYPT","args":[{"type":"text"},{"type":"text"},{"type":"binary"}],"returns":"binary"}
|
||||
{"name":"ANY_VALUE","args":[{"type":"any"}],"returns":"any"}
|
||||
{"name":"ASCII","args":[{"type":"text"}],"returns":"int"}
|
||||
{"name":"ASIN","args":[{"type":"double precision"}],"returns":"double precision"}
|
||||
{"name":"ATAN","args":[{"type":"double precision"}],"returns":"double precision"}
|
||||
{"name":"ATAN2","args":[{"type":"double precision"}],"returns":"double precision"}
|
||||
{"name":"AVG","args":[{"type":"any"}],"returns":"any","nullable":true}
|
||||
{"name":"BENCHMARK","args":[{"type":"int"},{"type":"any"}],"returns":"int"}
|
||||
{"name":"BIN","args":[{"type":"int"}],"returns":"text"}
|
||||
{"name":"BIN_TO_UUID","args":[{"type":"binary"}],"returns":"text"}
|
||||
{"name":"BIN_TO_UUID","args":[{"type":"binary"},{"type":"tinyint"}],"returns":"text"}
|
||||
{"name":"BIT_AND","args":[{"type":"any"}],"returns":"any"}
|
||||
{"name":"BIT_COUNT","args":[{"type":"bigint"}],"returns":"bigint"}
|
||||
{"name":"BIT_LENGTH","args":[{"type":"text"}],"returns":"int"}
|
||||
{"name":"BIT_OR","args":[{"type":"any"}],"returns":"any"}
|
||||
{"name":"BIT_XOR","args":[{"type":"any"}],"returns":"any"}
|
||||
{"name":"CAST","args":[{"type":"any"}],"returns":"any"}
|
||||
{"name":"CEIL","args":[{"type":"int"}],"returns":"int"}
|
||||
{"name":"CEIL","args":[{"type":"double precision"}],"returns":"double precision"}
|
||||
{"name":"CEILING","args":[{"type":"int"}],"returns":"int"}
|
||||
{"name":"CEILING","args":[{"type":"double precision"}],"returns":"double precision"}
|
||||
{"name":"CHAR","args":[{"type":"int"},{"type":"int","mode":"v"}],"returns":"text"}
|
||||
{"name":"CHARACTER_LENGTH","args":[{"type":"text"}],"returns":"int"}
|
||||
{"name":"CHARSET","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"CHAR_LENGTH","args":[{"type":"text"}],"returns":"int"}
|
||||
{"name":"COERCIBILITY","args":[{"type":"text"}],"returns":"int"}
|
||||
{"name":"COLLATION","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"COMPRESS","args":[{"type":"text"}],"returns":"binary"}
|
||||
{"name":"CONCAT","args":[{"type":"any"},{"type":"any","mode":"v"}],"returns":"text"}
|
||||
{"name":"CONCAT_WS","args":[{"type":"text"},{"type":"any"},{"type":"any","mode":"v"}],"returns":"text"}
|
||||
{"name":"CONNECTION_ID","returns":"int"}
|
||||
{"name":"CONV","args":[{"type":"int"},{"type":"int"},{"type":"int"}],"returns":"text"}
|
||||
{"name":"CONVERT","args":[{"type":"any"},{"type":"any"}],"returns":"any"}
|
||||
{"name":"CONVERT_TZ","args":[{"type":"datetime"},{"type":"text"},{"type":"text"}],"returns":"datetime"}
|
||||
{"name":"COS","args":[{"type":"double precision"}],"returns":"double precision"}
|
||||
{"name":"COT","args":[{"type":"double precision"}],"returns":"double precision"}
|
||||
{"name":"COUNT","returns":"bigint"}
|
||||
{"name":"COUNT","args":[{"type":"any"}],"returns":"bigint"}
|
||||
{"name":"CRC32","args":[{"type":"text"}],"returns":"int"}
|
||||
{"name":"CUME_DIST","returns":"double precision"}
|
||||
{"name":"CURDATE","returns":"date"}
|
||||
{"name":"CURRENT_DATE","returns":"date"}
|
||||
{"name":"CURRENT_ROLE","returns":"text"}
|
||||
{"name":"CURRENT_TIME","returns":"time"}
|
||||
{"name":"CURRENT_TIME","args":[{"type":"int"}],"returns":"time"}
|
||||
{"name":"CURRENT_TIMESTAMP","returns":"datetime"}
|
||||
{"name":"CURRENT_TIMESTAMP","args":[{"type":"int"}],"returns":"datetime"}
|
||||
{"name":"CURRENT_USER","returns":"text"}
|
||||
{"name":"CURTIME","returns":"time"}
|
||||
{"name":"CURTIME","args":[{"type":"int"}],"returns":"time"}
|
||||
{"name":"DATABASE","returns":"text"}
|
||||
{"name":"DATE","args":[{"type":"datetime"}],"returns":"date"}
|
||||
{"name":"DATEDIFF","args":[{"type":"datetime"},{"type":"datetime"}],"returns":"int"}
|
||||
{"name":"DATE_ADD","args":[{"type":"date"},{"type":"any"},{"type":"any"}],"returns":"date"}
|
||||
{"name":"DATE_ADD","args":[{"type":"date"},{"type":"interval"}],"returns":"date"}
|
||||
{"name":"DATE_ADD_INTERVAL","args":[{"type":"date"},{"type":"any"}],"returns":"date"}
|
||||
{"name":"DATE_FORMAT","args":[{"type":"date"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"DATE_SUB","args":[{"type":"date"},{"type":"any"},{"type":"any"}],"returns":"date"}
|
||||
{"name":"DATE_SUB","args":[{"type":"date"},{"type":"interval"}],"returns":"date"}
|
||||
{"name":"DATE_SUB_INTERVAL","args":[{"type":"date"},{"type":"any"}],"returns":"date"}
|
||||
{"name":"DAY","args":[{"type":"date"}],"returns":"int"}
|
||||
{"name":"DAYNAME","args":[{"type":"date"}],"returns":"text"}
|
||||
{"name":"DAYOFMONTH","args":[{"type":"date"}],"returns":"int"}
|
||||
{"name":"DAYOFWEEK","args":[{"type":"date"}],"returns":"int"}
|
||||
{"name":"DAYOFYEAR","args":[{"type":"date"}],"returns":"int"}
|
||||
{"name":"DEFAULT","args":[{"type":"any"}],"returns":"any"}
|
||||
{"name":"DEGREES","args":[{"type":"double precision"}],"returns":"int"}
|
||||
{"name":"DENSE_RANK","returns":"int"}
|
||||
{"name":"DISTINCT","args":[{"type":"any"}],"returns":"any"}
|
||||
{"name":"ELT","args":[{"type":"int"},{"type":"text","mode":"v"}],"returns":"text"}
|
||||
{"name":"EXP","args":[{"type":"int"}],"returns":"double precision"}
|
||||
{"name":"EXPORT_SET","args":[{"type":"int"},{"type":"text"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"EXPORT_SET","args":[{"type":"int"},{"type":"text"},{"type":"text"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"EXPORT_SET","args":[{"type":"int"},{"type":"text"},{"type":"text"},{"type":"text"},{"type":"int"}],"returns":"text"}
|
||||
{"name":"EXTRACT","args":[{"type":"date"},{"type":"any"}],"returns":"int"}
|
||||
{"name":"EXTRACTVALUE","args":[{"type":"text"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"FIELD","args":[{"type":"text"},{"type":"text"},{"type":"text","mode":"v"}],"returns":"text"}
|
||||
{"name":"FIND_IN_SET","args":[{"type":"text"},{"type":"text"}],"returns":"int"}
|
||||
{"name":"FIRST_VALUE","args":[{"type":"any"}],"returns":"any"}
|
||||
{"name":"FLOOR","args":[{"type":"double precision"}],"returns":"int"}
|
||||
{"name":"FORMAT","args":[{"type":"int"},{"type":"int"}],"returns":"text"}
|
||||
{"name":"FORMAT_BYTES","args":[{"type":"int"}],"returns":"text"}
|
||||
{"name":"FORMAT_PICO_TIME","args":[{"type":"time"}],"returns":"text"}
|
||||
{"name":"FOUND_ROWS","returns":"int"}
|
||||
{"name":"FROM_BASE64","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"FROM_DAYS","args":[{"type":"int"}],"returns":"date"}
|
||||
{"name":"FROM_UNIXTIME","args":[{"type":"bigint"}],"returns":"text"}
|
||||
{"name":"FROM_UNIXTIME","args":[{"type":"bigint"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"GEOMCOLLECTION","args":[{"type":"any"},{"type":"any","mode":"v"}],"returns":"any"}
|
||||
{"name":"GEOMETRYCOLLECTION","args":[{"type":"any"},{"type":"any","mode":"v"}],"returns":"any"}
|
||||
{"name":"GET_FORMAT","args":[{"type":"any"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"GET_LOCK","args":[{"type":"text"},{"type":"int"}],"returns":"bool"}
|
||||
{"name":"GREATEST","args":[{"type":"any"},{"type":"any"},{"type":"any","mode":"v"}],"returns":"any"}
|
||||
{"name":"GROUPING","args":[{"type":"any"},{"type":"any","mode":"v"}],"returns":"any"}
|
||||
{"name":"GROUP_CONCAT","args":[{"type":"any"},{"type":"any","mode":"v"}],"returns":"text","nullable":true}
|
||||
{"name":"GTID_SUBSET","args":[{"type":"text"},{"type":"text"}],"returns":"bool"}
|
||||
{"name":"GTID_SUBTRACT","args":[{"type":"text"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"HEX","args":[{"type":"int"}],"returns":"text"}
|
||||
{"name":"HEX","args":[{"type":"text"}],"returns":"int"}
|
||||
{"name":"HOUR","args":[{"type":"time"}],"returns":"int"}
|
||||
{"name":"ICU_VERSION","returns":"text"}
|
||||
{"name":"IF","args":[{"type":"any"},{"type":"any"},{"type":"any"}],"returns":"any"}
|
||||
{"name":"IFNULL","args":[{"type":"any"},{"type":"any"}],"returns":"any"}
|
||||
{"name":"INET6_ATON","args":[{"type":"text"}],"returns":"binary"}
|
||||
{"name":"INET6_NTOA","args":[{"type":"binary"}],"returns":"text"}
|
||||
{"name":"INET_ATON","args":[{"type":"text"}],"returns":"int"}
|
||||
{"name":"INET_NTOA","args":[{"type":"int"}],"returns":"text"}
|
||||
{"name":"INSERT","args":[{"type":"text"},{"type":"int"},{"type":"int"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"INSTR","args":[{"type":"text"},{"type":"text"}],"returns":"int"}
|
||||
{"name":"INTERVAL","args":[{"type":"any"},{"type":"any"},{"type":"any","mode":"v"}],"returns":"any"}
|
||||
{"name":"ISNULL","args":[{"type":"any"}],"returns":"bool"}
|
||||
{"name":"IS_FREE_LOCK","args":[{"type":"text"}],"returns":"bool"}
|
||||
{"name":"IS_IPV4","args":[{"type":"text"}],"returns":"bool"}
|
||||
{"name":"IS_IPV4_COMPAT","args":[{"type":"binary"}],"returns":"bool"}
|
||||
{"name":"IS_IPV4_MAPPED","args":[{"type":"binary"}],"returns":"bool"}
|
||||
{"name":"IS_IPV6","args":[{"type":"text"}],"returns":"bool"}
|
||||
{"name":"IS_USED_LOCK","args":[{"type":"text"}],"returns":"bool"}
|
||||
{"name":"IS_UUID","args":[{"type":"text"}],"returns":"bool"}
|
||||
{"name":"JSON_ARRAY","args":[{"type":"any","mode":"v"}],"returns":"json"}
|
||||
{"name":"JSON_ARRAYAGG","args":[{"type":"any"}],"returns":"json","nullable":true}
|
||||
{"name":"JSON_ARRAY_APPEND","args":[{"type":"text"},{"type":"text"},{"type":"any"},{"type":"any","mode":"v"}],"returns":"json"}
|
||||
{"name":"JSON_ARRAY_INSERT","args":[{"type":"text"},{"type":"text"},{"type":"any"},{"type":"any","mode":"v"}],"returns":"json"}
|
||||
{"name":"JSON_CONTAINS","args":[{"type":"text"},{"type":"text"}],"returns":"bool"}
|
||||
{"name":"JSON_CONTAINS","args":[{"type":"text"},{"type":"text"},{"type":"text"}],"returns":"bool"}
|
||||
{"name":"JSON_CONTAINS_PATH","args":[{"type":"text"},{"type":"text"},{"type":"text"},{"type":"text","mode":"v"}],"returns":"bool"}
|
||||
{"name":"JSON_DEPTH","args":[{"type":"text"}],"returns":"int"}
|
||||
{"name":"JSON_EXTRACT","args":[{"type":"text"},{"type":"text"},{"type":"text","mode":"v"}],"returns":"any"}
|
||||
{"name":"JSON_INSERT","args":[{"type":"text"},{"type":"text"},{"type":"any"},{"type":"any","mode":"v"}],"returns":"json"}
|
||||
{"name":"JSON_KEYS","args":[{"type":"text"}],"returns":"json"}
|
||||
{"name":"JSON_KEYS","args":[{"type":"text"},{"type":"text"}],"returns":"json"}
|
||||
{"name":"JSON_LENGTH","args":[{"type":"text"}],"returns":"int"}
|
||||
{"name":"JSON_LENGTH","args":[{"type":"text"},{"type":"text"}],"returns":"int"}
|
||||
{"name":"JSON_MERGE","args":[{"type":"text"},{"type":"text"},{"type":"text","mode":"v"}],"returns":"json"}
|
||||
{"name":"JSON_MERGE_PATCH","args":[{"type":"text"},{"type":"text"},{"type":"text","mode":"v"}],"returns":"json"}
|
||||
{"name":"JSON_MERGE_PRESERVE","args":[{"type":"text"},{"type":"text"},{"type":"text","mode":"v"}],"returns":"json"}
|
||||
{"name":"JSON_OBJECT","args":[{"type":"any","mode":"v"}],"returns":"json"}
|
||||
{"name":"JSON_OBJECTAGG","args":[{"type":"any"},{"type":"any"}],"returns":"json","nullable":true}
|
||||
{"name":"JSON_OVERLAPS","args":[{"type":"text"},{"type":"text"}],"returns":"bool"}
|
||||
{"name":"JSON_PRETTY","args":[{"type":"text"}],"returns":"any"}
|
||||
{"name":"JSON_QUOTE","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"JSON_REMOVE","args":[{"type":"text"},{"type":"text"},{"type":"text","mode":"v"}],"returns":"json"}
|
||||
{"name":"JSON_REPLACE","args":[{"type":"text"},{"type":"text"},{"type":"any"},{"type":"any","mode":"v"}],"returns":"json"}
|
||||
{"name":"JSON_SCHEMA_VALID","args":[{"type":"text"},{"type":"text"}],"returns":"bool"}
|
||||
{"name":"JSON_SCHEMA_VALIDATION_REPORT","args":[{"type":"text"},{"type":"text"}],"returns":"json"}
|
||||
{"name":"JSON_SEARCH","args":[{"type":"text"},{"type":"text"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"JSON_SEARCH","args":[{"type":"text"},{"type":"text"},{"type":"text"},{"type":"text"},{"type":"text","mode":"v"}],"returns":"any"}
|
||||
{"name":"JSON_SET","args":[{"type":"text"},{"type":"text"},{"type":"any"},{"type":"any","mode":"v"}],"returns":"json"}
|
||||
{"name":"JSON_STORAGE_FREE","args":[{"type":"text"}],"returns":"int"}
|
||||
{"name":"JSON_STORAGE_SIZE","args":[{"type":"text"}],"returns":"int"}
|
||||
{"name":"JSON_TYPE","args":[{"type":"text"}],"returns":"any"}
|
||||
{"name":"JSON_UNQUOTE","args":[{"type":"text"}],"returns":"json"}
|
||||
{"name":"JSON_VALID","args":[{"type":"text"}],"returns":"bool"}
|
||||
{"name":"JSON_VALUE","args":[{"type":"text"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"LAG","args":[{"type":"any"},{"type":"int","has_default":true},{"type":"any","has_default":true}],"returns":"any"}
|
||||
{"name":"LAST_DAY","args":[{"type":"date"}],"returns":"date"}
|
||||
{"name":"LAST_INSERT_ID","returns":"bigint"}
|
||||
{"name":"LAST_INSERT_ID","args":[{"type":"any"}],"returns":"bigint"}
|
||||
{"name":"LAST_VALUE","args":[{"type":"any"}],"returns":"any"}
|
||||
{"name":"LCASE","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"LEAD","args":[{"type":"any"},{"type":"int","has_default":true},{"type":"any","has_default":true}],"returns":"any"}
|
||||
{"name":"LEAST","args":[{"type":"any"},{"type":"any"},{"type":"any","mode":"v"}],"returns":"any"}
|
||||
{"name":"LEFT","args":[{"type":"text"},{"type":"int"}],"returns":"text"}
|
||||
{"name":"LENGTH","args":[{"type":"text"}],"returns":"int"}
|
||||
{"name":"LINESTRING","args":[{"type":"any"},{"type":"any","mode":"v"}],"returns":"any"}
|
||||
{"name":"LN","args":[{"type":"double precision"}],"returns":"double precision"}
|
||||
{"name":"LOAD_FILE","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"LOCALTIME","returns":"datetime"}
|
||||
{"name":"LOCALTIME","args":[{"type":"int"}],"returns":"datetime"}
|
||||
{"name":"LOCALTIMESTAMP","returns":"datetime"}
|
||||
{"name":"LOCALTIMESTAMP","args":[{"type":"int"}],"returns":"datetime"}
|
||||
{"name":"LOCATE","args":[{"type":"text"},{"type":"text"}],"returns":"int"}
|
||||
{"name":"LOCATE","args":[{"type":"text"},{"type":"text"},{"type":"int"}],"returns":"int"}
|
||||
{"name":"LOG","args":[{"type":"double precision"}],"returns":"double precision"}
|
||||
{"name":"LOG","args":[{"type":"double precision"},{"type":"int"}],"returns":"int"}
|
||||
{"name":"LOG10","args":[{"type":"double precision"}],"returns":"int"}
|
||||
{"name":"LOG2","args":[{"type":"double precision"}],"returns":"int"}
|
||||
{"name":"LOWER","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"LPAD","args":[{"type":"text"},{"type":"int"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"LTRIM","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"MAKEDATE","args":[{"type":"int"},{"type":"int"}],"returns":"date"}
|
||||
{"name":"MAKETIME","args":[{"type":"int"},{"type":"int"},{"type":"int"}],"returns":"time"}
|
||||
{"name":"MAKE_SET","args":[{"type":"int"},{"type":"text"},{"type":"text","mode":"v"}],"returns":"text"}
|
||||
{"name":"MASTER_POS_WAIT","args":[{"type":"text"},{"type":"int"}],"returns":"int"}
|
||||
{"name":"MASTER_POS_WAIT","args":[{"type":"text"},{"type":"int"},{"type":"int"}],"returns":"int"}
|
||||
{"name":"MASTER_POS_WAIT","args":[{"type":"text"},{"type":"int"},{"type":"int"},{"type":"text"}],"returns":"int"}
|
||||
{"name":"MAX","args":[{"type":"any"}],"returns":"any","nullable":true}
|
||||
{"name":"MBRCONTAINS","args":[{"type":"any"},{"type":"any"}],"returns":"bool"}
|
||||
{"name":"MBRCOVEREDBY","args":[{"type":"any"},{"type":"any"}],"returns":"bool"}
|
||||
{"name":"MBRCOVERS","args":[{"type":"any"},{"type":"any"}],"returns":"bool"}
|
||||
{"name":"MBRDISJOINT","args":[{"type":"any"},{"type":"any"}],"returns":"bool"}
|
||||
{"name":"MBREQUALS","args":[{"type":"any"},{"type":"any"}],"returns":"bool"}
|
||||
{"name":"MBRINTERSECTS","args":[{"type":"any"},{"type":"any"}],"returns":"bool"}
|
||||
{"name":"MBROVERLAPS","args":[{"type":"any"},{"type":"any"}],"returns":"bool"}
|
||||
{"name":"MBRTOUCHES","args":[{"type":"any"},{"type":"any"}],"returns":"bool"}
|
||||
{"name":"MBRWITHIN","args":[{"type":"any"},{"type":"any"}],"returns":"bool"}
|
||||
{"name":"MD5","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"MICROSECOND","args":[{"type":"time"}],"returns":"int"}
|
||||
{"name":"MID","args":[{"type":"text"},{"type":"int"},{"type":"int"}],"returns":"text"}
|
||||
{"name":"MIN","args":[{"type":"any"}],"returns":"any","nullable":true}
|
||||
{"name":"MINUTE","args":[{"type":"time"}],"returns":"int"}
|
||||
{"name":"MOD","args":[{"type":"int"},{"type":"int"}],"returns":"int"}
|
||||
{"name":"MONTH","args":[{"type":"date"}],"returns":"int"}
|
||||
{"name":"MONTHNAME","args":[{"type":"date"}],"returns":"text"}
|
||||
{"name":"MULTILINESTRING","args":[{"type":"any"},{"type":"any","mode":"v"}],"returns":"any"}
|
||||
{"name":"MULTIPOINT","args":[{"type":"any"},{"type":"any","mode":"v"}],"returns":"any"}
|
||||
{"name":"MULTIPOLYGON","args":[{"type":"any"},{"type":"any","mode":"v"}],"returns":"any"}
|
||||
{"name":"NAME_CONST","args":[{"type":"any"},{"type":"any"}],"returns":"any"}
|
||||
{"name":"NOW","returns":"datetime"}
|
||||
{"name":"NEXTVAL","args":[{"type":"any"}],"returns":"int"}
|
||||
{"name":"NOW","args":[{"type":"int"}],"returns":"datetime"}
|
||||
{"name":"NTH_VALUE","args":[{"type":"any"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"NTILE","args":[{"type":"int"}],"returns":"int"}
|
||||
{"name":"NULLIF","args":[{"type":"any"},{"type":"any"}],"returns":"any"}
|
||||
{"name":"OCT","args":[{"type":"bigint"}],"returns":"text"}
|
||||
{"name":"OCTET_LENGTH","args":[{"type":"text"}],"returns":"int"}
|
||||
{"name":"ORD","args":[{"type":"text"}],"returns":"int"}
|
||||
{"name":"PERCENT_RANK","returns":"double precision"}
|
||||
{"name":"PERIOD_ADD","args":[{"type":"int"},{"type":"int"}],"returns":"int"}
|
||||
{"name":"PERIOD_DIFF","args":[{"type":"int"},{"type":"int"}],"returns":"int"}
|
||||
{"name":"PI","returns":"double precision"}
|
||||
{"name":"POINT","args":[{"type":"double precision"},{"type":"double precision"}],"returns":"any"}
|
||||
{"name":"POLYGON","args":[{"type":"any"},{"type":"any","mode":"v"}],"returns":"any"}
|
||||
{"name":"POSITION","args":[{"type":"text"},{"type":"text"}],"returns":"int"}
|
||||
{"name":"POW","args":[{"type":"double precision"},{"type":"double precision"}],"returns":"double precision"}
|
||||
{"name":"POWER","args":[{"type":"double precision"},{"type":"double precision"}],"returns":"double precision"}
|
||||
{"name":"PS_CURRENT_THREAD_ID","returns":"int"}
|
||||
{"name":"PS_THREAD_ID","args":[{"type":"int"}],"returns":"int"}
|
||||
{"name":"QUARTER","args":[{"type":"date"}],"returns":"int"}
|
||||
{"name":"QUOTE","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"RADIANS","args":[{"type":"int"}],"returns":"double precision"}
|
||||
{"name":"RAND","returns":"double precision"}
|
||||
{"name":"RAND","args":[{"type":"int"}],"returns":"double precision"}
|
||||
{"name":"RANDOM_BYTES","args":[{"type":"int"}],"returns":"binary"}
|
||||
{"name":"RANK","returns":"int"}
|
||||
{"name":"REGEXP_INSTR","args":[{"type":"text"},{"type":"text"},{"type":"int","has_default":true},{"type":"int","has_default":true},{"type":"int","has_default":true},{"type":"text","has_default":true}],"returns":"int"}
|
||||
{"name":"REGEXP_LIKE","args":[{"type":"text"},{"type":"text"},{"type":"text","has_default":true}],"returns":"bool"}
|
||||
{"name":"REGEXP_REPLACE","args":[{"type":"text"},{"type":"text"},{"type":"text"},{"type":"int","has_default":true},{"type":"int","has_default":true},{"type":"text","has_default":true}],"returns":"text"}
|
||||
{"name":"REGEXP_SUBSTR","args":[{"type":"text"},{"type":"text"},{"type":"int","has_default":true},{"type":"int","has_default":true},{"type":"text","has_default":true}],"returns":"text"}
|
||||
{"name":"RELEASE_ALL_LOCKS","returns":"int"}
|
||||
{"name":"RELEASE_LOCK","args":[{"type":"text"}],"returns":"bool"}
|
||||
{"name":"REPEAT","args":[{"type":"text"},{"type":"int"}],"returns":"text"}
|
||||
{"name":"REPLACE","args":[{"type":"text"},{"type":"text"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"REVERSE","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"RIGHT","args":[{"type":"text"},{"type":"int"}],"returns":"text"}
|
||||
{"name":"ROLES_GRAPHML","returns":"text"}
|
||||
{"name":"ROUND","args":[{"type":"double precision"}],"returns":"double precision"}
|
||||
{"name":"ROUND","args":[{"type":"double precision"},{"type":"double precision"}],"returns":"double precision"}
|
||||
{"name":"ROW_COUNT","returns":"bigint"}
|
||||
{"name":"ROW_NUMBER","returns":"int"}
|
||||
{"name":"RPAD","args":[{"type":"text"},{"type":"int"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"RTRIM","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"SCHEMA","returns":"text"}
|
||||
{"name":"SECOND","args":[{"type":"time"}],"returns":"int"}
|
||||
{"name":"SEC_TO_TIME","args":[{"type":"int"}],"returns":"time"}
|
||||
{"name":"SESSION_USER","returns":"text"}
|
||||
{"name":"SHA","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"SHA1","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"SHA2","args":[{"type":"text"},{"type":"int"}],"returns":"text"}
|
||||
{"name":"SIGN","args":[{"type":"double precision"}],"returns":"int"}
|
||||
{"name":"SIN","args":[{"type":"double precision"}],"returns":"double precision"}
|
||||
{"name":"SLEEP","args":[{"type":"int"}],"returns":"int"}
|
||||
{"name":"SOUNDEX","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"SPACE","args":[{"type":"int"}],"returns":"text"}
|
||||
{"name":"SQRT","args":[{"type":"double precision"}],"returns":"double precision"}
|
||||
{"name":"STATEMENT_DIGEST","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"STATEMENT_DIGEST_TEXT","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"STD","args":[{"type":"any"}],"returns":"any","nullable":true}
|
||||
{"name":"STDDEV","args":[{"type":"any"}],"returns":"any","nullable":true}
|
||||
{"name":"STDDEV_POP","args":[{"type":"any"}],"returns":"any","nullable":true}
|
||||
{"name":"STDDEV_SAMP","args":[{"type":"any"}],"returns":"any","nullable":true}
|
||||
{"name":"STRCMP","args":[{"type":"text"},{"type":"text"}],"returns":"tinyint"}
|
||||
{"name":"STR_TO_DATE","args":[{"type":"text"},{"type":"text"}],"returns":"datetime"}
|
||||
{"name":"ST_AREA","args":[{"type":"any"}],"returns":"double precision"}
|
||||
{"name":"ST_ASBINARY","args":[{"type":"any"}],"returns":"binary"}
|
||||
{"name":"ST_ASBINARY","args":[{"type":"any"},{"type":"text"}],"returns":"binary"}
|
||||
{"name":"ST_ASGEOJSON","args":[{"type":"any"}],"returns":"json"}
|
||||
{"name":"ST_ASGEOJSON","args":[{"type":"any"},{"type":"int"}],"returns":"json"}
|
||||
{"name":"ST_ASGEOJSON","args":[{"type":"any"},{"type":"int"},{"type":"tinyint"}],"returns":"json"}
|
||||
{"name":"ST_ASTEXT","args":[{"type":"any"}],"returns":"text"}
|
||||
{"name":"ST_ASTEXT","args":[{"type":"any"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"ST_ASWKB","args":[{"type":"any"}],"returns":"binary"}
|
||||
{"name":"ST_ASWKB","args":[{"type":"any"},{"type":"text"}],"returns":"binary"}
|
||||
{"name":"ST_ASWKT","args":[{"type":"any"}],"returns":"text"}
|
||||
{"name":"ST_ASWKT","args":[{"type":"any"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"ST_BUFFER","args":[{"type":"any"},{"type":"double precision"}],"returns":"any"}
|
||||
{"name":"ST_BUFFER","args":[{"type":"any"},{"type":"double precision"},{"type":"binary"}],"returns":"any"}
|
||||
{"name":"ST_BUFFER","args":[{"type":"any"},{"type":"double precision"},{"type":"binary"},{"type":"binary"}],"returns":"any"}
|
||||
{"name":"ST_BUFFER","args":[{"type":"any"},{"type":"double precision"},{"type":"binary"},{"type":"binary"},{"type":"binary"}],"returns":"any"}
|
||||
{"name":"ST_BUFFER_STRATEGY","args":[{"type":"text"}],"returns":"binary"}
|
||||
{"name":"ST_BUFFER_STRATEGY","args":[{"type":"text"},{"type":"int"}],"returns":"binary"}
|
||||
{"name":"ST_CENTROID","args":[{"type":"any"}],"returns":"any"}
|
||||
{"name":"ST_CONTAINS","args":[{"type":"any"},{"type":"any"}],"returns":"bool"}
|
||||
{"name":"ST_CONVEXHULL","args":[{"type":"any"}],"returns":"any"}
|
||||
{"name":"ST_CROSSES","args":[{"type":"any"},{"type":"any"}],"returns":"bool"}
|
||||
{"name":"ST_DIFFERENCE","args":[{"type":"any"},{"type":"any"}],"returns":"any"}
|
||||
{"name":"ST_DIMENSION","args":[{"type":"any"}],"returns":"tinyint"}
|
||||
{"name":"ST_DISJOINT","args":[{"type":"any"},{"type":"any"}],"returns":"bool"}
|
||||
{"name":"ST_DISTANCE","args":[{"type":"any"},{"type":"any"}],"returns":"double precision"}
|
||||
{"name":"ST_DISTANCE","args":[{"type":"any"},{"type":"any"},{"type":"text"}],"returns":"double precision"}
|
||||
{"name":"ST_DISTANCE_SPHERE","args":[{"type":"any"},{"type":"any"}],"returns":"double precision"}
|
||||
{"name":"ST_DISTANCE_SPHERE","args":[{"type":"any"},{"type":"any"},{"type":"int"}],"returns":"double precision"}
|
||||
{"name":"ST_ENDPOINT","args":[{"type":"any"}],"returns":"any"}
|
||||
{"name":"ST_ENVELOPE","args":[{"type":"any"}],"returns":"any"}
|
||||
{"name":"ST_EQUALS","args":[{"type":"any"},{"type":"any"}],"returns":"bool"}
|
||||
{"name":"ST_EXTERIORRING","args":[{"type":"any"}],"returns":"any"}
|
||||
{"name":"ST_FRECHET_DISTANCE","args":[{"type":"any"},{"type":"any"}],"returns":"double precision"}
|
||||
{"name":"ST_FRECHET_DISTANCE","args":[{"type":"any"},{"type":"any"},{"type":"text"}],"returns":"double precision"}
|
||||
{"name":"ST_GEOHASH","args":[{"type":"double precision"},{"type":"double precision"},{"type":"int"}],"returns":"text"}
|
||||
{"name":"ST_GEOHASH","args":[{"type":"any"},{"type":"int"}],"returns":"text"}
|
||||
{"name":"ST_GEOMCOLLFROMTEXT","args":[{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_GEOMCOLLFROMTEXT","args":[{"type":"text"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_GEOMCOLLFROMTEXT","args":[{"type":"text"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_GEOMCOLLFROMTXT","args":[{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_GEOMCOLLFROMTXT","args":[{"type":"text"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_GEOMCOLLFROMTXT","args":[{"type":"text"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_GEOMCOLLFROMWKB","args":[{"type":"binary"}],"returns":"any"}
|
||||
{"name":"ST_GEOMCOLLFROMWKB","args":[{"type":"binary"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_GEOMCOLLFROMWKB","args":[{"type":"binary"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_GEOMETRYCOLLECTIONFROMTEXT","args":[{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_GEOMETRYCOLLECTIONFROMTEXT","args":[{"type":"text"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_GEOMETRYCOLLECTIONFROMTEXT","args":[{"type":"text"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_GEOMETRYCOLLECTIONFROMWKB","args":[{"type":"binary"}],"returns":"any"}
|
||||
{"name":"ST_GEOMETRYCOLLECTIONFROMWKB","args":[{"type":"binary"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_GEOMETRYCOLLECTIONFROMWKB","args":[{"type":"binary"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_GEOMETRYFROMTEXT","args":[{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_GEOMETRYFROMTEXT","args":[{"type":"text"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_GEOMETRYFROMTEXT","args":[{"type":"text"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_GEOMETRYFROMWKB","args":[{"type":"binary"}],"returns":"any"}
|
||||
{"name":"ST_GEOMETRYFROMWKB","args":[{"type":"binary"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_GEOMETRYFROMWKB","args":[{"type":"binary"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_GEOMETRYN","args":[{"type":"any"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_GEOMETRYTYPE","args":[{"type":"any"}],"returns":"text"}
|
||||
{"name":"ST_GEOMFROMGEOJSON","args":[{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_GEOMFROMGEOJSON","args":[{"type":"text"},{"type":"tinyint"}],"returns":"any"}
|
||||
{"name":"ST_GEOMFROMGEOJSON","args":[{"type":"text"},{"type":"tinyint"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_GEOMFROMTEXT","args":[{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_GEOMFROMTEXT","args":[{"type":"text"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_GEOMFROMTEXT","args":[{"type":"text"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_GEOMFROMWKB","args":[{"type":"binary"}],"returns":"any"}
|
||||
{"name":"ST_GEOMFROMWKB","args":[{"type":"binary"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_GEOMFROMWKB","args":[{"type":"binary"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_HAUSDORFF_DISTANCE","args":[{"type":"any"},{"type":"any"}],"returns":"double precision"}
|
||||
{"name":"ST_HAUSDORFF_DISTANCE","args":[{"type":"any"},{"type":"any"},{"type":"text"}],"returns":"double precision"}
|
||||
{"name":"ST_INTERIORRINGN","args":[{"type":"any"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_INTERSECTION","args":[{"type":"any"},{"type":"any"}],"returns":"any"}
|
||||
{"name":"ST_INTERSECTS","args":[{"type":"any"},{"type":"any"}],"returns":"bool"}
|
||||
{"name":"ST_ISCLOSED","args":[{"type":"any"}],"returns":"bool"}
|
||||
{"name":"ST_ISEMPTY","args":[{"type":"any"}],"returns":"bool"}
|
||||
{"name":"ST_ISSIMPLE","args":[{"type":"any"}],"returns":"bool"}
|
||||
{"name":"ST_ISVALID","args":[{"type":"any"}],"returns":"bool"}
|
||||
{"name":"ST_LATFROMGEOHASH","args":[{"type":"text"}],"returns":"double precision"}
|
||||
{"name":"ST_LATITUDE","args":[{"type":"any"}],"returns":"double precision"}
|
||||
{"name":"ST_LATITUDE","args":[{"type":"any"},{"type":"double precision"}],"returns":"any"}
|
||||
{"name":"ST_LENGTH","args":[{"type":"any"}],"returns":"double precision"}
|
||||
{"name":"ST_LENGTH","args":[{"type":"any"},{"type":"text"}],"returns":"double precision"}
|
||||
{"name":"ST_LINEFROMTEXT","args":[{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_LINEFROMTEXT","args":[{"type":"text"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_LINEFROMTEXT","args":[{"type":"text"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_LINEFROMWKB","args":[{"type":"binary"}],"returns":"any"}
|
||||
{"name":"ST_LINEFROMWKB","args":[{"type":"binary"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_LINEFROMWKB","args":[{"type":"binary"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_LINEINTERPOLATEPOINT","args":[{"type":"any"},{"type":"double precision"}],"returns":"any"}
|
||||
{"name":"ST_LINEINTERPOLATEPOINTS","args":[{"type":"any"},{"type":"double precision"}],"returns":"any"}
|
||||
{"name":"ST_LINESTRINGFROMTEXT","args":[{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_LINESTRINGFROMTEXT","args":[{"type":"text"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_LINESTRINGFROMTEXT","args":[{"type":"text"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_LINESTRINGFROMWKB","args":[{"type":"binary"}],"returns":"any"}
|
||||
{"name":"ST_LINESTRINGFROMWKB","args":[{"type":"binary"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_LINESTRINGFROMWKB","args":[{"type":"binary"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_LONGFROMGEOHASH","args":[{"type":"text"}],"returns":"double precision"}
|
||||
{"name":"ST_LONGITUDE","args":[{"type":"any"}],"returns":"double precision"}
|
||||
{"name":"ST_LONGITUDE","args":[{"type":"any"},{"type":"double precision"}],"returns":"any"}
|
||||
{"name":"ST_MAKEENVELOPE","args":[{"type":"any"},{"type":"any"}],"returns":"any"}
|
||||
{"name":"ST_MLINEFROMTEXT","args":[{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_MLINEFROMTEXT","args":[{"type":"text"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_MLINEFROMTEXT","args":[{"type":"text"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_MLINEFROMWKB","args":[{"type":"binary"}],"returns":"any"}
|
||||
{"name":"ST_MLINEFROMWKB","args":[{"type":"binary"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_MLINEFROMWKB","args":[{"type":"binary"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_MPOINTFROMTEXT","args":[{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_MPOINTFROMTEXT","args":[{"type":"text"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_MPOINTFROMTEXT","args":[{"type":"text"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_MPOINTFROMWKB","args":[{"type":"binary"}],"returns":"any"}
|
||||
{"name":"ST_MPOINTFROMWKB","args":[{"type":"binary"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_MPOINTFROMWKB","args":[{"type":"binary"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_MPOLYFROMTEXT","args":[{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_MPOLYFROMTEXT","args":[{"type":"text"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_MPOLYFROMTEXT","args":[{"type":"text"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_MPOLYFROMWKB","args":[{"type":"binary"}],"returns":"any"}
|
||||
{"name":"ST_MPOLYFROMWKB","args":[{"type":"binary"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_MPOLYFROMWKB","args":[{"type":"binary"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_MULTILINESTRINGFROMTEXT","args":[{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_MULTILINESTRINGFROMTEXT","args":[{"type":"text"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_MULTILINESTRINGFROMTEXT","args":[{"type":"text"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_MULTILINESTRINGFROMWKB","args":[{"type":"binary"}],"returns":"any"}
|
||||
{"name":"ST_MULTILINESTRINGFROMWKB","args":[{"type":"binary"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_MULTILINESTRINGFROMWKB","args":[{"type":"binary"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_MULTIPOINTFROMTEXT","args":[{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_MULTIPOINTFROMTEXT","args":[{"type":"text"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_MULTIPOINTFROMTEXT","args":[{"type":"text"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_MULTIPOINTFROMWKB","args":[{"type":"binary"}],"returns":"any"}
|
||||
{"name":"ST_MULTIPOINTFROMWKB","args":[{"type":"binary"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_MULTIPOINTFROMWKB","args":[{"type":"binary"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_MULTIPOLYGONFROMTEXT","args":[{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_MULTIPOLYGONFROMTEXT","args":[{"type":"text"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_MULTIPOLYGONFROMTEXT","args":[{"type":"text"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_MULTIPOLYGONFROMWKB","args":[{"type":"binary"}],"returns":"any"}
|
||||
{"name":"ST_MULTIPOLYGONFROMWKB","args":[{"type":"binary"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_MULTIPOLYGONFROMWKB","args":[{"type":"binary"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_NUMGEOMETRIES","args":[{"type":"any"}],"returns":"bigint"}
|
||||
{"name":"ST_NUMINTERIORRING","args":[{"type":"any"}],"returns":"int"}
|
||||
{"name":"ST_NUMINTERIORRINGS","args":[{"type":"any"}],"returns":"int"}
|
||||
{"name":"ST_NUMPOINTS","args":[{"type":"any"}],"returns":"bigint"}
|
||||
{"name":"ST_OVERLAPS","args":[{"type":"any"},{"type":"any"}],"returns":"bool"}
|
||||
{"name":"ST_POINTATDISTANCE","args":[{"type":"any"},{"type":"double precision"}],"returns":"any"}
|
||||
{"name":"ST_POINTFROMGEOHASH","args":[{"type":"text"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_POINTFROMTEXT","args":[{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_POINTFROMTEXT","args":[{"type":"text"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_POINTFROMTEXT","args":[{"type":"text"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_POINTFROMWKB","args":[{"type":"binary"}],"returns":"any"}
|
||||
{"name":"ST_POINTFROMWKB","args":[{"type":"binary"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_POINTFROMWKB","args":[{"type":"binary"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_POINTN","args":[{"type":"any"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_POLYFROMTEXT","args":[{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_POLYFROMTEXT","args":[{"type":"text"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_POLYFROMTEXT","args":[{"type":"text"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_POLYFROMWKB","args":[{"type":"binary"}],"returns":"any"}
|
||||
{"name":"ST_POLYFROMWKB","args":[{"type":"binary"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_POLYFROMWKB","args":[{"type":"binary"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_POLYGONFROMTEXT","args":[{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_POLYGONFROMTEXT","args":[{"type":"text"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_POLYGONFROMTEXT","args":[{"type":"text"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_POLYGONFROMWKB","args":[{"type":"binary"}],"returns":"any"}
|
||||
{"name":"ST_POLYGONFROMWKB","args":[{"type":"binary"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_POLYGONFROMWKB","args":[{"type":"binary"},{"type":"int"},{"type":"text"}],"returns":"any"}
|
||||
{"name":"ST_SIMPLIFY","args":[{"type":"any"},{"type":"double precision"}],"returns":"any"}
|
||||
{"name":"ST_SRID","args":[{"type":"any"}],"returns":"int"}
|
||||
{"name":"ST_SRID","args":[{"type":"any"},{"type":"int"}],"returns":"int"}
|
||||
{"name":"ST_STARTPOINT","args":[{"type":"any"}],"returns":"any"}
|
||||
{"name":"ST_SWAPXY","args":[{"type":"any"}],"returns":"any"}
|
||||
{"name":"ST_SYMDIFFERENCE","args":[{"type":"any"},{"type":"any"}],"returns":"any"}
|
||||
{"name":"ST_TOUCHES","args":[{"type":"any"},{"type":"any"}],"returns":"bool"}
|
||||
{"name":"ST_TRANSFORM","args":[{"type":"any"},{"type":"int"}],"returns":"any"}
|
||||
{"name":"ST_UNION","args":[{"type":"any"},{"type":"any"}],"returns":"any"}
|
||||
{"name":"ST_VALIDATE","args":[{"type":"any"}],"returns":"any"}
|
||||
{"name":"ST_WITHIN","args":[{"type":"any"},{"type":"any"}],"returns":"bool"}
|
||||
{"name":"ST_X","args":[{"type":"any"}],"returns":"double precision"}
|
||||
{"name":"ST_X","args":[{"type":"any"},{"type":"double precision"}],"returns":"any"}
|
||||
{"name":"ST_Y","args":[{"type":"any"}],"returns":"double precision"}
|
||||
{"name":"ST_Y","args":[{"type":"any"},{"type":"double precision"}],"returns":"any"}
|
||||
{"name":"SUBDATE","args":[{"type":"date"},{"type":"any"}],"returns":"date"}
|
||||
{"name":"SUBSTR","args":[{"type":"text"},{"type":"int"}],"returns":"text"}
|
||||
{"name":"SUBSTR","args":[{"type":"text"},{"type":"int"},{"type":"int"}],"returns":"text"}
|
||||
{"name":"SUBSTRING","args":[{"type":"text"},{"type":"int"}],"returns":"text"}
|
||||
{"name":"SUBSTRING","args":[{"type":"text"},{"type":"int"},{"type":"int"}],"returns":"text"}
|
||||
{"name":"SUBSTRING_INDEX","args":[{"type":"text"},{"type":"int"},{"type":"int"}],"returns":"text"}
|
||||
{"name":"SUBTIME","args":[{"type":"time"},{"type":"time"}],"returns":"time"}
|
||||
{"name":"SUM","args":[{"type":"any"}],"returns":"any","nullable":true}
|
||||
{"name":"SYSDATE","returns":"datetime"}
|
||||
{"name":"SYSDATE","args":[{"type":"int"}],"returns":"datetime"}
|
||||
{"name":"SYSTEM_USER","returns":"text"}
|
||||
{"name":"TAN","args":[{"type":"double precision"}],"returns":"double precision"}
|
||||
{"name":"TIME","args":[{"type":"datetime"}],"returns":"time"}
|
||||
{"name":"TIMEDIFF","args":[{"type":"time"},{"type":"time"}],"returns":"time"}
|
||||
{"name":"TIMESTAMP","args":[{"type":"datetime"}],"returns":"datetime"}
|
||||
{"name":"TIMESTAMP","args":[{"type":"datetime"},{"type":"datetime"}],"returns":"datetime"}
|
||||
{"name":"TIMESTAMPADD","args":[{"type":"any"},{"type":"int"},{"type":"datetime"}],"returns":"datetime"}
|
||||
{"name":"TIMESTAMPDIFF","args":[{"type":"any"},{"type":"datetime"},{"type":"datetime"}],"returns":"int"}
|
||||
{"name":"TIME_FORMAT","args":[{"type":"time"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"TIME_TO_SEC","args":[{"type":"time"}],"returns":"int"}
|
||||
{"name":"TO_BASE64","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"TO_DAYS","args":[{"type":"date"}],"returns":"int"}
|
||||
{"name":"TO_SECONDS","args":[{"type":"datetime"}],"returns":"bigint"}
|
||||
{"name":"TRIM","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"TRIM","args":[{"type":"text"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"TRUNCATE","args":[{"type":"double precision"},{"type":"int"}],"returns":"int"}
|
||||
{"name":"UCASE","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"UNCOMPRESS","args":[{"type":"binary"}],"returns":"text"}
|
||||
{"name":"UNCOMPRESSED_LENGTH","args":[{"type":"binary"}],"returns":"int"}
|
||||
{"name":"UNHEX","args":[{"type":"text"}],"returns":""}
|
||||
{"name":"UNIX_TIMESTAMP","returns":"bigint"}
|
||||
{"name":"UNIX_TIMESTAMP","args":[{"type":"datetime"}],"returns":"bigint"}
|
||||
{"name":"UPDATEXML","args":[{"type":"text"},{"type":"text"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"UPPER","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"USER","returns":"text"}
|
||||
{"name":"UTC_DATE","returns":"date"}
|
||||
{"name":"UTC_TIME","returns":"time"}
|
||||
{"name":"UTC_TIMESTAMP","returns":"datetime"}
|
||||
{"name":"UUID","returns":"text"}
|
||||
{"name":"UUID_SHORT","returns":"bigint"}
|
||||
{"name":"UUID_TO_BIN","args":[{"type":"text"}],"returns":"binary"}
|
||||
{"name":"UUID_TO_BIN","args":[{"type":"text"},{"type":"tinyint"}],"returns":"binary"}
|
||||
{"name":"VALIDATE_PASSWORD_STRENGTH","args":[{"type":"text"}],"returns":"int"}
|
||||
{"name":"VALUES","args":[{"type":"any"}],"returns":"any"}
|
||||
{"name":"VARIANCE","args":[{"type":"any"}],"returns":"any","nullable":true}
|
||||
{"name":"VAR_POP","args":[{"type":"any"}],"returns":"any","nullable":true}
|
||||
{"name":"VAR_SAMP","args":[{"type":"any"}],"returns":"any","nullable":true}
|
||||
{"name":"VERSION","returns":"text"}
|
||||
{"name":"WAIT_FOR_EXECUTED_GTID_SET","args":[{"type":"text"},{"type":"int","has_default":true}],"returns":"bool"}
|
||||
{"name":"WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS","args":[{"type":"text"},{"type":"int","has_default":true},{"type":"text","has_default":true}],"returns":"bool"}
|
||||
{"name":"WEEK","args":[{"type":"date"}],"returns":"int"}
|
||||
{"name":"WEEK","args":[{"type":"date"},{"type":"int"}],"returns":"int"}
|
||||
{"name":"WEEKDAY","args":[{"type":"date"}],"returns":"int"}
|
||||
{"name":"WEEKOFYEAR","args":[{"type":"date"}],"returns":"int"}
|
||||
{"name":"WEIGHT_STRING","args":[{"type":"text"}],"returns":"any"}
|
||||
{"name":"YEAR","args":[{"type":"date"}],"returns":"int"}
|
||||
{"name":"YEARWEEK","args":[{"type":"date"}],"returns":"int"}
|
||||
3
internal/engine/dolphin/dialect/operators.jsonl
Normal file
3
internal/engine/dolphin/dialect/operators.jsonl
Normal file
@@ -0,0 +1,3 @@
|
||||
{"name": "~~", "left": "text", "right": "text", "result": "bool"}
|
||||
{"name": "!~~", "left": "text", "right": "text", "result": "bool"}
|
||||
{"name": "REGEXP", "left": "text", "right": "text", "result": "bool"}
|
||||
84
internal/engine/dolphin/dialect/relations.jsonl
Normal file
84
internal/engine/dolphin/dialect/relations.jsonl
Normal file
@@ -0,0 +1,84 @@
|
||||
{"catalog":"def","schema":"information_schema","name":"administrable_role_authorizations","kind":"v","columns":[{"name":"user","type":"varchar(97)"},{"name":"host","type":"varchar(256)"},{"name":"grantee","type":"varchar(97)"},{"name":"grantee_host","type":"varchar(256)"},{"name":"role_name","type":"varchar(255)"},{"name":"role_host","type":"varchar(256)"},{"name":"is_grantable","type":"varchar(3)","not_null":true},{"name":"is_default","type":"varchar(3)"},{"name":"is_mandatory","type":"varchar(3)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"applicable_roles","kind":"v","columns":[{"name":"user","type":"varchar(97)"},{"name":"host","type":"varchar(256)"},{"name":"grantee","type":"varchar(97)"},{"name":"grantee_host","type":"varchar(256)"},{"name":"role_name","type":"varchar(255)"},{"name":"role_host","type":"varchar(256)"},{"name":"is_grantable","type":"varchar(3)","not_null":true},{"name":"is_default","type":"varchar(3)"},{"name":"is_mandatory","type":"varchar(3)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"character_sets","kind":"v","columns":[{"name":"character_set_name","type":"varchar(64)","not_null":true},{"name":"default_collate_name","type":"varchar(64)","not_null":true},{"name":"description","type":"varchar(2048)","not_null":true},{"name":"maxlen","type":"int unsigned","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"check_constraints","kind":"v","columns":[{"name":"constraint_catalog","type":"varchar(64)","not_null":true},{"name":"constraint_schema","type":"varchar(64)","not_null":true},{"name":"constraint_name","type":"varchar(64)","not_null":true},{"name":"check_clause","type":"longtext","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"collations","kind":"v","columns":[{"name":"collation_name","type":"varchar(64)","not_null":true},{"name":"character_set_name","type":"varchar(64)","not_null":true},{"name":"id","type":"bigint unsigned","not_null":true},{"name":"is_default","type":"varchar(3)","not_null":true},{"name":"is_compiled","type":"varchar(3)","not_null":true},{"name":"sortlen","type":"int unsigned","not_null":true},{"name":"pad_attribute","type":"enum('PAD SPACE','NO PAD')","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"collation_character_set_applicability","kind":"v","columns":[{"name":"collation_name","type":"varchar(64)","not_null":true},{"name":"character_set_name","type":"varchar(64)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"columns","kind":"v","columns":[{"name":"table_catalog","type":"varchar(64)","not_null":true},{"name":"table_schema","type":"varchar(64)","not_null":true},{"name":"table_name","type":"varchar(64)","not_null":true},{"name":"column_name","type":"varchar(64)"},{"name":"ordinal_position","type":"int unsigned","not_null":true},{"name":"column_default","type":"text"},{"name":"is_nullable","type":"varchar(3)","not_null":true},{"name":"data_type","type":"longtext"},{"name":"character_maximum_length","type":"bigint"},{"name":"character_octet_length","type":"bigint"},{"name":"numeric_precision","type":"bigint unsigned"},{"name":"numeric_scale","type":"bigint unsigned"},{"name":"datetime_precision","type":"int unsigned"},{"name":"character_set_name","type":"varchar(64)"},{"name":"collation_name","type":"varchar(64)"},{"name":"column_type","type":"mediumtext","not_null":true},{"name":"column_key","type":"enum('','PRI','UNI','MUL')","not_null":true},{"name":"extra","type":"varchar(256)"},{"name":"privileges","type":"varchar(154)"},{"name":"column_comment","type":"text","not_null":true},{"name":"generation_expression","type":"longtext","not_null":true},{"name":"srs_id","type":"int unsigned"}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"columns_extensions","kind":"v","columns":[{"name":"table_catalog","type":"varchar(64)","not_null":true},{"name":"table_schema","type":"varchar(64)","not_null":true},{"name":"table_name","type":"varchar(64)","not_null":true},{"name":"column_name","type":"varchar(64)"},{"name":"engine_attribute","type":"json"},{"name":"secondary_engine_attribute","type":"json"}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"column_privileges","kind":"v","columns":[{"name":"grantee","type":"varchar(292)","not_null":true},{"name":"table_catalog","type":"varchar(512)","not_null":true},{"name":"table_schema","type":"varchar(64)","not_null":true},{"name":"table_name","type":"varchar(64)","not_null":true},{"name":"column_name","type":"varchar(64)","not_null":true},{"name":"privilege_type","type":"varchar(64)","not_null":true},{"name":"is_grantable","type":"varchar(3)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"column_statistics","kind":"v","columns":[{"name":"schema_name","type":"varchar(64)","not_null":true},{"name":"table_name","type":"varchar(64)","not_null":true},{"name":"column_name","type":"varchar(64)","not_null":true},{"name":"histogram","type":"json","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"enabled_roles","kind":"v","columns":[{"name":"role_name","type":"varchar(255)"},{"name":"role_host","type":"varchar(255)"},{"name":"is_default","type":"varchar(3)"},{"name":"is_mandatory","type":"varchar(3)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"engines","kind":"v","columns":[{"name":"engine","type":"varchar(64)","not_null":true},{"name":"support","type":"varchar(8)","not_null":true},{"name":"comment","type":"varchar(80)","not_null":true},{"name":"transactions","type":"varchar(3)"},{"name":"xa","type":"varchar(3)"},{"name":"savepoints","type":"varchar(3)"}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"events","kind":"v","columns":[{"name":"event_catalog","type":"varchar(64)","not_null":true},{"name":"event_schema","type":"varchar(64)","not_null":true},{"name":"event_name","type":"varchar(64)","not_null":true},{"name":"definer","type":"varchar(288)","not_null":true},{"name":"time_zone","type":"varchar(64)","not_null":true},{"name":"event_body","type":"varchar(3)","not_null":true},{"name":"event_definition","type":"longtext","not_null":true},{"name":"event_type","type":"varchar(9)","not_null":true},{"name":"execute_at","type":"datetime"},{"name":"interval_value","type":"varchar(256)"},{"name":"interval_field","type":"enum('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND')"},{"name":"sql_mode","type":"set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','NOT_USED_9','NOT_USED_10','NOT_USED_11','NOT_USED_12','NOT_USED_13','NOT_USED_14','NOT_USED_15','NOT_USED_16','NOT_USED_17','NOT_USED_18','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','ALLOW_INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NOT_USED_29','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','TIME_TRUNCATE_FRACTIONAL','INTERPRET_UTF8_AS_UTF8MB4')","not_null":true},{"name":"starts","type":"datetime"},{"name":"ends","type":"datetime"},{"name":"status","type":"varchar(21)","not_null":true},{"name":"on_completion","type":"varchar(12)","not_null":true},{"name":"created","type":"timestamp","not_null":true},{"name":"last_altered","type":"timestamp","not_null":true},{"name":"last_executed","type":"datetime"},{"name":"event_comment","type":"varchar(2048)","not_null":true},{"name":"originator","type":"int unsigned","not_null":true},{"name":"character_set_client","type":"varchar(64)","not_null":true},{"name":"collation_connection","type":"varchar(64)","not_null":true},{"name":"database_collation","type":"varchar(64)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"files","kind":"v","columns":[{"name":"file_id","type":"bigint"},{"name":"file_name","type":"text"},{"name":"file_type","type":"varchar(256)"},{"name":"tablespace_name","type":"varchar(268)","not_null":true},{"name":"table_catalog","type":"varchar(0)","not_null":true},{"name":"table_schema","type":"varbinary(0)"},{"name":"table_name","type":"varbinary(0)"},{"name":"logfile_group_name","type":"varchar(256)"},{"name":"logfile_group_number","type":"bigint"},{"name":"engine","type":"varchar(64)","not_null":true},{"name":"fulltext_keys","type":"varbinary(0)"},{"name":"deleted_rows","type":"varbinary(0)"},{"name":"update_count","type":"varbinary(0)"},{"name":"free_extents","type":"bigint"},{"name":"total_extents","type":"bigint"},{"name":"extent_size","type":"bigint"},{"name":"initial_size","type":"bigint"},{"name":"maximum_size","type":"bigint"},{"name":"autoextend_size","type":"bigint"},{"name":"creation_time","type":"varbinary(0)"},{"name":"last_update_time","type":"varbinary(0)"},{"name":"last_access_time","type":"varbinary(0)"},{"name":"recover_time","type":"varbinary(0)"},{"name":"transaction_counter","type":"varbinary(0)"},{"name":"version","type":"bigint"},{"name":"row_format","type":"varchar(256)"},{"name":"table_rows","type":"varbinary(0)"},{"name":"avg_row_length","type":"varbinary(0)"},{"name":"data_length","type":"varbinary(0)"},{"name":"max_data_length","type":"varbinary(0)"},{"name":"index_length","type":"varbinary(0)"},{"name":"data_free","type":"bigint"},{"name":"create_time","type":"varbinary(0)"},{"name":"update_time","type":"varbinary(0)"},{"name":"check_time","type":"varbinary(0)"},{"name":"checksum","type":"varbinary(0)"},{"name":"status","type":"varchar(256)"},{"name":"extra","type":"varchar(256)"}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_buffer_page","kind":"v","columns":[{"name":"pool_id","type":"bigint unsigned","not_null":true},{"name":"block_id","type":"bigint unsigned","not_null":true},{"name":"space","type":"bigint unsigned","not_null":true},{"name":"page_number","type":"bigint unsigned","not_null":true},{"name":"page_type","type":"varchar(64)"},{"name":"flush_type","type":"bigint unsigned","not_null":true},{"name":"fix_count","type":"bigint unsigned","not_null":true},{"name":"is_hashed","type":"varchar(3)"},{"name":"newest_modification","type":"bigint unsigned","not_null":true},{"name":"oldest_modification","type":"bigint unsigned","not_null":true},{"name":"access_time","type":"bigint unsigned","not_null":true},{"name":"table_name","type":"varchar(1024)"},{"name":"index_name","type":"varchar(1024)"},{"name":"number_records","type":"bigint unsigned","not_null":true},{"name":"data_size","type":"bigint unsigned","not_null":true},{"name":"compressed_size","type":"bigint unsigned","not_null":true},{"name":"page_state","type":"varchar(64)"},{"name":"io_fix","type":"varchar(64)"},{"name":"is_old","type":"varchar(3)"},{"name":"free_page_clock","type":"bigint unsigned","not_null":true},{"name":"is_stale","type":"varchar(3)"}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_buffer_page_lru","kind":"v","columns":[{"name":"pool_id","type":"bigint unsigned","not_null":true},{"name":"lru_position","type":"bigint unsigned","not_null":true},{"name":"space","type":"bigint unsigned","not_null":true},{"name":"page_number","type":"bigint unsigned","not_null":true},{"name":"page_type","type":"varchar(64)"},{"name":"flush_type","type":"bigint unsigned","not_null":true},{"name":"fix_count","type":"bigint unsigned","not_null":true},{"name":"is_hashed","type":"varchar(3)"},{"name":"newest_modification","type":"bigint unsigned","not_null":true},{"name":"oldest_modification","type":"bigint unsigned","not_null":true},{"name":"access_time","type":"bigint unsigned","not_null":true},{"name":"table_name","type":"varchar(1024)"},{"name":"index_name","type":"varchar(1024)"},{"name":"number_records","type":"bigint unsigned","not_null":true},{"name":"data_size","type":"bigint unsigned","not_null":true},{"name":"compressed_size","type":"bigint unsigned","not_null":true},{"name":"compressed","type":"varchar(3)"},{"name":"io_fix","type":"varchar(64)"},{"name":"is_old","type":"varchar(3)"},{"name":"free_page_clock","type":"bigint unsigned","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_buffer_pool_stats","kind":"v","columns":[{"name":"pool_id","type":"bigint unsigned","not_null":true},{"name":"pool_size","type":"bigint unsigned","not_null":true},{"name":"free_buffers","type":"bigint unsigned","not_null":true},{"name":"database_pages","type":"bigint unsigned","not_null":true},{"name":"old_database_pages","type":"bigint unsigned","not_null":true},{"name":"modified_database_pages","type":"bigint unsigned","not_null":true},{"name":"pending_decompress","type":"bigint unsigned","not_null":true},{"name":"pending_reads","type":"bigint unsigned","not_null":true},{"name":"pending_flush_lru","type":"bigint unsigned","not_null":true},{"name":"pending_flush_list","type":"bigint unsigned","not_null":true},{"name":"pages_made_young","type":"bigint unsigned","not_null":true},{"name":"pages_not_made_young","type":"bigint unsigned","not_null":true},{"name":"pages_made_young_rate","type":"float(12,0)","not_null":true},{"name":"pages_made_not_young_rate","type":"float(12,0)","not_null":true},{"name":"number_pages_read","type":"bigint unsigned","not_null":true},{"name":"number_pages_created","type":"bigint unsigned","not_null":true},{"name":"number_pages_written","type":"bigint unsigned","not_null":true},{"name":"pages_read_rate","type":"float(12,0)","not_null":true},{"name":"pages_create_rate","type":"float(12,0)","not_null":true},{"name":"pages_written_rate","type":"float(12,0)","not_null":true},{"name":"number_pages_get","type":"bigint unsigned","not_null":true},{"name":"hit_rate","type":"bigint unsigned","not_null":true},{"name":"young_make_per_thousand_gets","type":"bigint unsigned","not_null":true},{"name":"not_young_make_per_thousand_gets","type":"bigint unsigned","not_null":true},{"name":"number_pages_read_ahead","type":"bigint unsigned","not_null":true},{"name":"number_read_ahead_evicted","type":"bigint unsigned","not_null":true},{"name":"read_ahead_rate","type":"float(12,0)","not_null":true},{"name":"read_ahead_evicted_rate","type":"float(12,0)","not_null":true},{"name":"lru_io_total","type":"bigint unsigned","not_null":true},{"name":"lru_io_current","type":"bigint unsigned","not_null":true},{"name":"uncompress_total","type":"bigint unsigned","not_null":true},{"name":"uncompress_current","type":"bigint unsigned","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_cached_indexes","kind":"v","columns":[{"name":"space_id","type":"int unsigned","not_null":true},{"name":"index_id","type":"bigint unsigned","not_null":true},{"name":"n_cached_pages","type":"bigint unsigned","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_cmp","kind":"v","columns":[{"name":"page_size","type":"int","not_null":true},{"name":"compress_ops","type":"int","not_null":true},{"name":"compress_ops_ok","type":"int","not_null":true},{"name":"compress_time","type":"int","not_null":true},{"name":"uncompress_ops","type":"int","not_null":true},{"name":"uncompress_time","type":"int","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_cmpmem","kind":"v","columns":[{"name":"page_size","type":"int","not_null":true},{"name":"buffer_pool_instance","type":"int","not_null":true},{"name":"pages_used","type":"int","not_null":true},{"name":"pages_free","type":"int","not_null":true},{"name":"relocation_ops","type":"bigint","not_null":true},{"name":"relocation_time","type":"int","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_cmpmem_reset","kind":"v","columns":[{"name":"page_size","type":"int","not_null":true},{"name":"buffer_pool_instance","type":"int","not_null":true},{"name":"pages_used","type":"int","not_null":true},{"name":"pages_free","type":"int","not_null":true},{"name":"relocation_ops","type":"bigint","not_null":true},{"name":"relocation_time","type":"int","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_cmp_per_index","kind":"v","columns":[{"name":"database_name","type":"varchar(192)","not_null":true},{"name":"table_name","type":"varchar(192)","not_null":true},{"name":"index_name","type":"varchar(192)","not_null":true},{"name":"compress_ops","type":"int","not_null":true},{"name":"compress_ops_ok","type":"int","not_null":true},{"name":"compress_time","type":"int","not_null":true},{"name":"uncompress_ops","type":"int","not_null":true},{"name":"uncompress_time","type":"int","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_cmp_per_index_reset","kind":"v","columns":[{"name":"database_name","type":"varchar(192)","not_null":true},{"name":"table_name","type":"varchar(192)","not_null":true},{"name":"index_name","type":"varchar(192)","not_null":true},{"name":"compress_ops","type":"int","not_null":true},{"name":"compress_ops_ok","type":"int","not_null":true},{"name":"compress_time","type":"int","not_null":true},{"name":"uncompress_ops","type":"int","not_null":true},{"name":"uncompress_time","type":"int","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_cmp_reset","kind":"v","columns":[{"name":"page_size","type":"int","not_null":true},{"name":"compress_ops","type":"int","not_null":true},{"name":"compress_ops_ok","type":"int","not_null":true},{"name":"compress_time","type":"int","not_null":true},{"name":"uncompress_ops","type":"int","not_null":true},{"name":"uncompress_time","type":"int","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_columns","kind":"v","columns":[{"name":"table_id","type":"bigint unsigned","not_null":true},{"name":"name","type":"varchar(193)","not_null":true},{"name":"pos","type":"bigint unsigned","not_null":true},{"name":"mtype","type":"int","not_null":true},{"name":"prtype","type":"int","not_null":true},{"name":"len","type":"int","not_null":true},{"name":"has_default","type":"int","not_null":true},{"name":"default_value","type":"text"}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_datafiles","kind":"v","columns":[{"name":"space","type":"varbinary(256)"},{"name":"path","type":"varchar(512)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_fields","kind":"v","columns":[{"name":"index_id","type":"varbinary(256)"},{"name":"name","type":"varchar(64)","not_null":true},{"name":"pos","type":"bigint unsigned","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_foreign","kind":"v","columns":[{"name":"id","type":"varchar(129)"},{"name":"for_name","type":"varchar(129)"},{"name":"ref_name","type":"varchar(129)"},{"name":"n_cols","type":"bigint","not_null":true},{"name":"type","type":"bigint unsigned","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_foreign_cols","kind":"v","columns":[{"name":"id","type":"varchar(129)"},{"name":"for_col_name","type":"varchar(64)","not_null":true},{"name":"ref_col_name","type":"varchar(64)","not_null":true},{"name":"pos","type":"int unsigned","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_ft_being_deleted","kind":"v","columns":[{"name":"doc_id","type":"bigint unsigned","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_ft_config","kind":"v","columns":[{"name":"key","type":"varchar(193)","not_null":true},{"name":"value","type":"varchar(193)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_ft_default_stopword","kind":"v","columns":[{"name":"value","type":"varchar(18)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_ft_deleted","kind":"v","columns":[{"name":"doc_id","type":"bigint unsigned","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_ft_index_cache","kind":"v","columns":[{"name":"word","type":"varchar(337)","not_null":true},{"name":"first_doc_id","type":"bigint unsigned","not_null":true},{"name":"last_doc_id","type":"bigint unsigned","not_null":true},{"name":"doc_count","type":"bigint unsigned","not_null":true},{"name":"doc_id","type":"bigint unsigned","not_null":true},{"name":"position","type":"bigint unsigned","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_ft_index_table","kind":"v","columns":[{"name":"word","type":"varchar(337)","not_null":true},{"name":"first_doc_id","type":"bigint unsigned","not_null":true},{"name":"last_doc_id","type":"bigint unsigned","not_null":true},{"name":"doc_count","type":"bigint unsigned","not_null":true},{"name":"doc_id","type":"bigint unsigned","not_null":true},{"name":"position","type":"bigint unsigned","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_indexes","kind":"v","columns":[{"name":"index_id","type":"bigint unsigned","not_null":true},{"name":"name","type":"varchar(193)","not_null":true},{"name":"table_id","type":"bigint unsigned","not_null":true},{"name":"type","type":"int","not_null":true},{"name":"n_fields","type":"int","not_null":true},{"name":"page_no","type":"int","not_null":true},{"name":"space","type":"int","not_null":true},{"name":"merge_threshold","type":"int","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_metrics","kind":"v","columns":[{"name":"name","type":"varchar(193)","not_null":true},{"name":"subsystem","type":"varchar(193)","not_null":true},{"name":"count","type":"bigint","not_null":true},{"name":"max_count","type":"bigint"},{"name":"min_count","type":"bigint"},{"name":"avg_count","type":"float(12,0)"},{"name":"count_reset","type":"bigint","not_null":true},{"name":"max_count_reset","type":"bigint"},{"name":"min_count_reset","type":"bigint"},{"name":"avg_count_reset","type":"float(12,0)"},{"name":"time_enabled","type":"datetime"},{"name":"time_disabled","type":"datetime"},{"name":"time_elapsed","type":"bigint"},{"name":"time_reset","type":"datetime"},{"name":"status","type":"varchar(193)","not_null":true},{"name":"type","type":"varchar(193)","not_null":true},{"name":"comment","type":"varchar(193)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_session_temp_tablespaces","kind":"v","columns":[{"name":"id","type":"int unsigned","not_null":true},{"name":"space","type":"int unsigned","not_null":true},{"name":"path","type":"varchar(4001)","not_null":true},{"name":"size","type":"bigint unsigned","not_null":true},{"name":"state","type":"varchar(192)","not_null":true},{"name":"purpose","type":"varchar(192)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_tables","kind":"v","columns":[{"name":"table_id","type":"bigint unsigned","not_null":true},{"name":"name","type":"varchar(655)","not_null":true},{"name":"flag","type":"int","not_null":true},{"name":"n_cols","type":"int","not_null":true},{"name":"space","type":"bigint","not_null":true},{"name":"row_format","type":"varchar(12)"},{"name":"zip_page_size","type":"int unsigned","not_null":true},{"name":"space_type","type":"varchar(10)"},{"name":"instant_cols","type":"int","not_null":true},{"name":"total_row_versions","type":"int","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_tablespaces","kind":"v","columns":[{"name":"space","type":"int unsigned","not_null":true},{"name":"name","type":"varchar(655)","not_null":true},{"name":"flag","type":"int unsigned","not_null":true},{"name":"row_format","type":"varchar(22)"},{"name":"page_size","type":"int unsigned","not_null":true},{"name":"zip_page_size","type":"int unsigned","not_null":true},{"name":"space_type","type":"varchar(10)"},{"name":"fs_block_size","type":"int unsigned","not_null":true},{"name":"file_size","type":"bigint unsigned","not_null":true},{"name":"allocated_size","type":"bigint unsigned","not_null":true},{"name":"autoextend_size","type":"bigint unsigned","not_null":true},{"name":"server_version","type":"varchar(10)"},{"name":"space_version","type":"int unsigned","not_null":true},{"name":"encryption","type":"varchar(1)"},{"name":"state","type":"varchar(10)"}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_tablespaces_brief","kind":"v","columns":[{"name":"space","type":"varbinary(256)"},{"name":"name","type":"varchar(268)","not_null":true},{"name":"path","type":"varchar(512)","not_null":true},{"name":"flag","type":"varbinary(256)"},{"name":"space_type","type":"varchar(7)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_tablestats","kind":"v","columns":[{"name":"table_id","type":"bigint unsigned","not_null":true},{"name":"name","type":"varchar(193)","not_null":true},{"name":"stats_initialized","type":"varchar(193)","not_null":true},{"name":"num_rows","type":"bigint unsigned","not_null":true},{"name":"clust_index_size","type":"bigint unsigned","not_null":true},{"name":"other_index_size","type":"bigint unsigned","not_null":true},{"name":"modified_counter","type":"bigint unsigned","not_null":true},{"name":"autoinc","type":"bigint unsigned","not_null":true},{"name":"ref_count","type":"int","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_temp_table_info","kind":"v","columns":[{"name":"table_id","type":"bigint unsigned","not_null":true},{"name":"name","type":"varchar(64)"},{"name":"n_cols","type":"int unsigned","not_null":true},{"name":"space","type":"int unsigned","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_trx","kind":"v","columns":[{"name":"trx_id","type":"bigint unsigned","not_null":true},{"name":"trx_state","type":"varchar(13)","not_null":true},{"name":"trx_started","type":"datetime","not_null":true},{"name":"trx_requested_lock_id","type":"varchar(126)"},{"name":"trx_wait_started","type":"datetime"},{"name":"trx_weight","type":"bigint unsigned","not_null":true},{"name":"trx_mysql_thread_id","type":"bigint unsigned","not_null":true},{"name":"trx_query","type":"varchar(1024)"},{"name":"trx_operation_state","type":"varchar(64)"},{"name":"trx_tables_in_use","type":"bigint unsigned","not_null":true},{"name":"trx_tables_locked","type":"bigint unsigned","not_null":true},{"name":"trx_lock_structs","type":"bigint unsigned","not_null":true},{"name":"trx_lock_memory_bytes","type":"bigint unsigned","not_null":true},{"name":"trx_rows_locked","type":"bigint unsigned","not_null":true},{"name":"trx_rows_modified","type":"bigint unsigned","not_null":true},{"name":"trx_concurrency_tickets","type":"bigint unsigned","not_null":true},{"name":"trx_isolation_level","type":"varchar(16)","not_null":true},{"name":"trx_unique_checks","type":"int","not_null":true},{"name":"trx_foreign_key_checks","type":"int","not_null":true},{"name":"trx_last_foreign_key_error","type":"varchar(256)"},{"name":"trx_adaptive_hash_latched","type":"int","not_null":true},{"name":"trx_adaptive_hash_timeout","type":"bigint unsigned","not_null":true},{"name":"trx_is_read_only","type":"int","not_null":true},{"name":"trx_autocommit_non_locking","type":"int","not_null":true},{"name":"trx_schedule_weight","type":"bigint unsigned"}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"innodb_virtual","kind":"v","columns":[{"name":"table_id","type":"bigint unsigned","not_null":true},{"name":"pos","type":"int unsigned","not_null":true},{"name":"base_pos","type":"int unsigned","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"json_duality_views","kind":"v","columns":[{"name":"table_catalog","type":"varchar(64)","not_null":true},{"name":"table_schema","type":"varchar(64)","not_null":true},{"name":"table_name","type":"varchar(64)","not_null":true},{"name":"definer","type":"varchar(288)"},{"name":"security_type","type":"varchar(7)"},{"name":"json_column_name","type":"varchar(64)","not_null":true},{"name":"root_table_catalog","type":"varchar(64)"},{"name":"root_table_schema","type":"varchar(64)"},{"name":"root_table_name","type":"varchar(64)"},{"name":"allow_insert","type":"varchar(4)"},{"name":"allow_update","type":"varchar(4)"},{"name":"allow_delete","type":"varchar(4)"},{"name":"read_only","type":"varchar(4)"},{"name":"status","type":"varchar(7)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"json_duality_view_columns","kind":"v","columns":[{"name":"table_catalog","type":"varchar(64)","not_null":true},{"name":"table_schema","type":"varchar(64)","not_null":true},{"name":"table_name","type":"varchar(64)","not_null":true},{"name":"referenced_table_catalog","type":"varchar(64)"},{"name":"referenced_table_schema","type":"varchar(64)"},{"name":"referenced_table_name","type":"varchar(64)"},{"name":"is_root_table","type":"tinyint"},{"name":"referenced_table_id","type":"int"},{"name":"referenced_column_name","type":"varchar(64)"},{"name":"json_key_name","type":"varchar(64)"},{"name":"allow_insert","type":"tinyint"},{"name":"allow_update","type":"tinyint"},{"name":"allow_delete","type":"tinyint"},{"name":"read_only","type":"tinyint"}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"json_duality_view_links","kind":"v","columns":[{"name":"table_catalog","type":"varchar(64)","not_null":true},{"name":"table_schema","type":"varchar(64)","not_null":true},{"name":"table_name","type":"varchar(64)","not_null":true},{"name":"parent_table_catalog","type":"varchar(64)"},{"name":"parent_table_schema","type":"varchar(64)"},{"name":"parent_table_name","type":"varchar(64)"},{"name":"child_table_catalog","type":"varchar(64)"},{"name":"child_table_schema","type":"varchar(64)"},{"name":"child_table_name","type":"varchar(64)"},{"name":"parent_column_name","type":"varchar(64)"},{"name":"child_column_name","type":"varchar(64)"},{"name":"join_type","type":"varchar(64)"},{"name":"json_key_name","type":"varchar(64)"}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"json_duality_view_tables","kind":"v","columns":[{"name":"table_catalog","type":"varchar(64)","not_null":true},{"name":"table_schema","type":"varchar(64)","not_null":true},{"name":"table_name","type":"varchar(64)","not_null":true},{"name":"referenced_table_catalog","type":"varchar(64)"},{"name":"referenced_table_schema","type":"varchar(64)"},{"name":"referenced_table_name","type":"varchar(64)"},{"name":"where_clause","type":"varchar(64)"},{"name":"allow_insert","type":"tinyint"},{"name":"allow_update","type":"tinyint"},{"name":"allow_delete","type":"tinyint"},{"name":"read_only","type":"tinyint"},{"name":"is_root_table","type":"tinyint"},{"name":"referenced_table_id","type":"int"},{"name":"referenced_table_parent_id","type":"int"},{"name":"referenced_table_parent_relationship","type":"varchar(64)"}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"keywords","kind":"v","columns":[{"name":"word","type":"varchar(128)"},{"name":"reserved","type":"int"}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"key_column_usage","kind":"v","columns":[{"name":"constraint_catalog","type":"varchar(64)","not_null":true},{"name":"constraint_schema","type":"varchar(64)","not_null":true},{"name":"constraint_name","type":"varchar(64)"},{"name":"table_catalog","type":"varchar(64)","not_null":true},{"name":"table_schema","type":"varchar(64)","not_null":true},{"name":"table_name","type":"varchar(64)","not_null":true},{"name":"column_name","type":"varchar(64)"},{"name":"ordinal_position","type":"int unsigned","not_null":true},{"name":"position_in_unique_constraint","type":"int unsigned"},{"name":"referenced_table_schema","type":"varchar(64)"},{"name":"referenced_table_name","type":"varchar(64)"},{"name":"referenced_column_name","type":"varchar(64)"}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"libraries","kind":"v","columns":[{"name":"library_catalog","type":"varchar(64)","not_null":true},{"name":"library_schema","type":"varchar(64)","not_null":true},{"name":"library_name","type":"varchar(64)","not_null":true},{"name":"library_definition","type":"longtext"},{"name":"language","type":"varchar(64)","not_null":true},{"name":"created","type":"timestamp","not_null":true},{"name":"last_altered","type":"timestamp","not_null":true},{"name":"sql_mode","type":"set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','NOT_USED_9','NOT_USED_10','NOT_USED_11','NOT_USED_12','NOT_USED_13','NOT_USED_14','NOT_USED_15','NOT_USED_16','NOT_USED_17','NOT_USED_18','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','ALLOW_INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NOT_USED_29','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','TIME_TRUNCATE_FRACTIONAL','INTERPRET_UTF8_AS_UTF8MB4')","not_null":true},{"name":"library_comment","type":"text","not_null":true},{"name":"creator","type":"varchar(288)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"optimizer_trace","kind":"v","columns":[{"name":"query","type":"varchar(65535)","not_null":true},{"name":"trace","type":"varchar(65535)","not_null":true},{"name":"missing_bytes_beyond_max_mem_size","type":"int","not_null":true},{"name":"insufficient_privileges","type":"tinyint(1)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"parameters","kind":"v","columns":[{"name":"specific_catalog","type":"varchar(64)","not_null":true},{"name":"specific_schema","type":"varchar(64)","not_null":true},{"name":"specific_name","type":"varchar(64)","not_null":true},{"name":"ordinal_position","type":"bigint unsigned","not_null":true},{"name":"parameter_mode","type":"varchar(5)"},{"name":"parameter_name","type":"varchar(64)"},{"name":"data_type","type":"longtext"},{"name":"character_maximum_length","type":"bigint"},{"name":"character_octet_length","type":"bigint"},{"name":"numeric_precision","type":"int unsigned"},{"name":"numeric_scale","type":"bigint"},{"name":"datetime_precision","type":"int unsigned"},{"name":"character_set_name","type":"varchar(64)"},{"name":"collation_name","type":"varchar(64)"},{"name":"dtd_identifier","type":"mediumtext","not_null":true},{"name":"routine_type","type":"enum('FUNCTION','PROCEDURE','LIBRARY')","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"partitions","kind":"v","columns":[{"name":"table_catalog","type":"varchar(64)","not_null":true},{"name":"table_schema","type":"varchar(64)","not_null":true},{"name":"table_name","type":"varchar(64)","not_null":true},{"name":"partition_name","type":"varchar(64)"},{"name":"subpartition_name","type":"varchar(64)"},{"name":"partition_ordinal_position","type":"int unsigned"},{"name":"subpartition_ordinal_position","type":"int unsigned"},{"name":"secondary_load","type":"varchar(1)"},{"name":"partition_method","type":"varchar(13)"},{"name":"subpartition_method","type":"varchar(13)"},{"name":"partition_expression","type":"varchar(2048)"},{"name":"subpartition_expression","type":"varchar(2048)"},{"name":"partition_description","type":"text"},{"name":"table_rows","type":"bigint unsigned"},{"name":"avg_row_length","type":"bigint unsigned"},{"name":"data_length","type":"bigint unsigned"},{"name":"max_data_length","type":"bigint unsigned"},{"name":"index_length","type":"bigint unsigned"},{"name":"data_free","type":"bigint unsigned"},{"name":"create_time","type":"timestamp","not_null":true},{"name":"update_time","type":"datetime"},{"name":"check_time","type":"datetime"},{"name":"checksum","type":"bigint"},{"name":"partition_comment","type":"text","not_null":true},{"name":"nodegroup","type":"varchar(256)"},{"name":"tablespace_name","type":"varchar(268)"}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"plugins","kind":"v","columns":[{"name":"plugin_name","type":"varchar(64)","not_null":true},{"name":"plugin_version","type":"varchar(20)","not_null":true},{"name":"plugin_status","type":"varchar(10)","not_null":true},{"name":"plugin_type","type":"varchar(80)","not_null":true},{"name":"plugin_type_version","type":"varchar(20)","not_null":true},{"name":"plugin_library","type":"varchar(64)"},{"name":"plugin_library_version","type":"varchar(20)"},{"name":"plugin_author","type":"varchar(64)"},{"name":"plugin_description","type":"varchar(65535)"},{"name":"plugin_license","type":"varchar(80)"},{"name":"load_option","type":"varchar(64)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"processlist","kind":"v","columns":[{"name":"id","type":"bigint unsigned","not_null":true},{"name":"user","type":"varchar(32)","not_null":true},{"name":"host","type":"varchar(261)","not_null":true},{"name":"db","type":"varchar(64)"},{"name":"command","type":"varchar(16)","not_null":true},{"name":"time","type":"int","not_null":true},{"name":"state","type":"varchar(64)"},{"name":"info","type":"varchar(65535)"}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"profiling","kind":"v","columns":[{"name":"query_id","type":"int","not_null":true},{"name":"seq","type":"int","not_null":true},{"name":"state","type":"varchar(30)","not_null":true},{"name":"duration","type":"decimal(905,0)","not_null":true},{"name":"cpu_user","type":"decimal(905,0)"},{"name":"cpu_system","type":"decimal(905,0)"},{"name":"context_voluntary","type":"int"},{"name":"context_involuntary","type":"int"},{"name":"block_ops_in","type":"int"},{"name":"block_ops_out","type":"int"},{"name":"messages_sent","type":"int"},{"name":"messages_received","type":"int"},{"name":"page_faults_major","type":"int"},{"name":"page_faults_minor","type":"int"},{"name":"swaps","type":"int"},{"name":"source_function","type":"varchar(30)"},{"name":"source_file","type":"varchar(20)"},{"name":"source_line","type":"int"}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"referential_constraints","kind":"v","columns":[{"name":"constraint_catalog","type":"varchar(64)","not_null":true},{"name":"constraint_schema","type":"varchar(64)","not_null":true},{"name":"constraint_name","type":"varchar(64)"},{"name":"unique_constraint_catalog","type":"varchar(64)","not_null":true},{"name":"unique_constraint_schema","type":"varchar(64)","not_null":true},{"name":"unique_constraint_name","type":"varchar(64)"},{"name":"match_option","type":"enum('NONE','PARTIAL','FULL')","not_null":true},{"name":"update_rule","type":"enum('NO ACTION','RESTRICT','CASCADE','SET NULL','SET DEFAULT')","not_null":true},{"name":"delete_rule","type":"enum('NO ACTION','RESTRICT','CASCADE','SET NULL','SET DEFAULT')","not_null":true},{"name":"table_name","type":"varchar(64)","not_null":true},{"name":"referenced_table_name","type":"varchar(64)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"resource_groups","kind":"v","columns":[{"name":"resource_group_name","type":"varchar(64)","not_null":true},{"name":"resource_group_type","type":"enum('SYSTEM','USER')","not_null":true},{"name":"resource_group_enabled","type":"tinyint(1)","not_null":true},{"name":"vcpu_ids","type":"blob"},{"name":"thread_priority","type":"int","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"role_column_grants","kind":"v","columns":[{"name":"grantor","type":"varchar(97)"},{"name":"grantor_host","type":"varchar(256)"},{"name":"grantee","type":"char(32)","not_null":true},{"name":"grantee_host","type":"char(255)","not_null":true},{"name":"table_catalog","type":"varchar(3)","not_null":true},{"name":"table_schema","type":"char(64)","not_null":true},{"name":"table_name","type":"char(64)","not_null":true},{"name":"column_name","type":"char(64)","not_null":true},{"name":"privilege_type","type":"set('Select','Insert','Update','References')","not_null":true},{"name":"is_grantable","type":"varchar(3)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"role_routine_grants","kind":"v","columns":[{"name":"grantor","type":"varchar(97)"},{"name":"grantor_host","type":"varchar(256)"},{"name":"grantee","type":"char(32)","not_null":true},{"name":"grantee_host","type":"char(255)","not_null":true},{"name":"specific_catalog","type":"varchar(3)","not_null":true},{"name":"specific_schema","type":"char(64)","not_null":true},{"name":"specific_name","type":"char(64)","not_null":true},{"name":"routine_catalog","type":"varchar(3)","not_null":true},{"name":"routine_schema","type":"char(64)","not_null":true},{"name":"routine_name","type":"char(64)","not_null":true},{"name":"privilege_type","type":"set('Execute','Alter Routine','Grant')","not_null":true},{"name":"is_grantable","type":"varchar(3)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"role_table_grants","kind":"v","columns":[{"name":"grantor","type":"varchar(97)"},{"name":"grantor_host","type":"varchar(256)"},{"name":"grantee","type":"char(32)","not_null":true},{"name":"grantee_host","type":"char(255)","not_null":true},{"name":"table_catalog","type":"varchar(3)","not_null":true},{"name":"table_schema","type":"char(64)","not_null":true},{"name":"table_name","type":"char(64)","not_null":true},{"name":"privilege_type","type":"set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger')","not_null":true},{"name":"is_grantable","type":"varchar(3)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"routines","kind":"v","columns":[{"name":"specific_name","type":"varchar(64)","not_null":true},{"name":"routine_catalog","type":"varchar(64)","not_null":true},{"name":"routine_schema","type":"varchar(64)","not_null":true},{"name":"routine_name","type":"varchar(64)","not_null":true},{"name":"routine_type","type":"enum('FUNCTION','PROCEDURE','LIBRARY')","not_null":true},{"name":"data_type","type":"longtext"},{"name":"character_maximum_length","type":"bigint"},{"name":"character_octet_length","type":"bigint"},{"name":"numeric_precision","type":"int unsigned"},{"name":"numeric_scale","type":"int unsigned"},{"name":"datetime_precision","type":"int unsigned"},{"name":"character_set_name","type":"varchar(64)"},{"name":"collation_name","type":"varchar(64)"},{"name":"dtd_identifier","type":"longtext"},{"name":"routine_body","type":"varchar(8)","not_null":true},{"name":"routine_definition","type":"longtext"},{"name":"external_name","type":"varbinary(0)"},{"name":"external_language","type":"varchar(64)","not_null":true},{"name":"parameter_style","type":"varchar(3)","not_null":true},{"name":"is_deterministic","type":"varchar(3)","not_null":true},{"name":"sql_data_access","type":"enum('CONTAINS SQL','NO SQL','READS SQL DATA','MODIFIES SQL DATA')","not_null":true},{"name":"sql_path","type":"varbinary(0)"},{"name":"security_type","type":"enum('DEFAULT','INVOKER','DEFINER')","not_null":true},{"name":"created","type":"timestamp","not_null":true},{"name":"last_altered","type":"timestamp","not_null":true},{"name":"sql_mode","type":"set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','NOT_USED_9','NOT_USED_10','NOT_USED_11','NOT_USED_12','NOT_USED_13','NOT_USED_14','NOT_USED_15','NOT_USED_16','NOT_USED_17','NOT_USED_18','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','ALLOW_INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NOT_USED_29','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','TIME_TRUNCATE_FRACTIONAL','INTERPRET_UTF8_AS_UTF8MB4')","not_null":true},{"name":"routine_comment","type":"text","not_null":true},{"name":"definer","type":"varchar(288)","not_null":true},{"name":"character_set_client","type":"varchar(64)","not_null":true},{"name":"collation_connection","type":"varchar(64)","not_null":true},{"name":"database_collation","type":"varchar(64)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"routine_libraries","kind":"v","columns":[{"name":"routine_catalog","type":"varchar(64)","not_null":true},{"name":"routine_schema","type":"varchar(64)","not_null":true},{"name":"routine_name","type":"varchar(64)","not_null":true},{"name":"routine_type","type":"enum('FUNCTION','PROCEDURE','LIBRARY')","not_null":true},{"name":"library_catalog","type":"varchar(64)"},{"name":"library_schema","type":"varchar(100)"},{"name":"library_name","type":"varchar(100)"},{"name":"library_version","type":"varchar(100)"}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"schemata","kind":"v","columns":[{"name":"catalog_name","type":"varchar(64)","not_null":true},{"name":"schema_name","type":"varchar(64)","not_null":true},{"name":"default_character_set_name","type":"varchar(64)","not_null":true},{"name":"default_collation_name","type":"varchar(64)","not_null":true},{"name":"sql_path","type":"varbinary(0)"},{"name":"default_encryption","type":"enum('NO','YES')","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"schemata_extensions","kind":"v","columns":[{"name":"catalog_name","type":"varchar(64)","not_null":true},{"name":"schema_name","type":"varchar(64)","not_null":true},{"name":"options","type":"varchar(256)"}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"schema_privileges","kind":"v","columns":[{"name":"grantee","type":"varchar(292)","not_null":true},{"name":"table_catalog","type":"varchar(512)","not_null":true},{"name":"table_schema","type":"varchar(64)","not_null":true},{"name":"privilege_type","type":"varchar(64)","not_null":true},{"name":"is_grantable","type":"varchar(3)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"statistics","kind":"v","columns":[{"name":"table_catalog","type":"varchar(64)","not_null":true},{"name":"table_schema","type":"varchar(64)","not_null":true},{"name":"table_name","type":"varchar(64)","not_null":true},{"name":"non_unique","type":"int","not_null":true},{"name":"index_schema","type":"varchar(64)","not_null":true},{"name":"index_name","type":"varchar(64)"},{"name":"seq_in_index","type":"int unsigned","not_null":true},{"name":"column_name","type":"varchar(64)"},{"name":"collation","type":"varchar(1)"},{"name":"cardinality","type":"bigint"},{"name":"sub_part","type":"bigint"},{"name":"packed","type":"varbinary(0)"},{"name":"nullable","type":"varchar(3)","not_null":true},{"name":"index_type","type":"varchar(11)","not_null":true},{"name":"comment","type":"varchar(8)","not_null":true},{"name":"index_comment","type":"varchar(2048)","not_null":true},{"name":"is_visible","type":"varchar(3)","not_null":true},{"name":"expression","type":"longtext"}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"st_geometry_columns","kind":"v","columns":[{"name":"table_catalog","type":"varchar(64)","not_null":true},{"name":"table_schema","type":"varchar(64)","not_null":true},{"name":"table_name","type":"varchar(64)","not_null":true},{"name":"column_name","type":"varchar(64)"},{"name":"srs_name","type":"varchar(80)"},{"name":"srs_id","type":"int unsigned"},{"name":"geometry_type_name","type":"longtext"}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"st_spatial_reference_systems","kind":"v","columns":[{"name":"srs_name","type":"varchar(80)","not_null":true},{"name":"srs_id","type":"int unsigned","not_null":true},{"name":"organization","type":"varchar(256)"},{"name":"organization_coordsys_id","type":"int unsigned"},{"name":"definition","type":"varchar(4096)","not_null":true},{"name":"description","type":"varchar(2048)"}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"st_units_of_measure","kind":"v","columns":[{"name":"unit_name","type":"varchar(255)"},{"name":"unit_type","type":"varchar(7)"},{"name":"conversion_factor","type":"double"},{"name":"description","type":"varchar(255)"}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"tables","kind":"v","columns":[{"name":"table_catalog","type":"varchar(64)","not_null":true},{"name":"table_schema","type":"varchar(64)","not_null":true},{"name":"table_name","type":"varchar(64)","not_null":true},{"name":"table_type","type":"enum('BASE TABLE','VIEW','SYSTEM VIEW')","not_null":true},{"name":"engine","type":"varchar(64)"},{"name":"version","type":"int"},{"name":"row_format","type":"enum('Fixed','Dynamic','Compressed','Redundant','Compact','Paged')"},{"name":"table_rows","type":"bigint unsigned"},{"name":"avg_row_length","type":"bigint unsigned"},{"name":"data_length","type":"bigint unsigned"},{"name":"max_data_length","type":"bigint unsigned"},{"name":"index_length","type":"bigint unsigned"},{"name":"data_free","type":"bigint unsigned"},{"name":"auto_increment","type":"bigint unsigned"},{"name":"create_time","type":"timestamp","not_null":true},{"name":"update_time","type":"datetime"},{"name":"check_time","type":"datetime"},{"name":"table_collation","type":"varchar(64)"},{"name":"checksum","type":"bigint"},{"name":"create_options","type":"varchar(256)"},{"name":"table_comment","type":"text"}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"tablespaces_extensions","kind":"v","columns":[{"name":"tablespace_name","type":"varchar(268)","not_null":true},{"name":"engine_attribute","type":"json"}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"tables_extensions","kind":"v","columns":[{"name":"table_catalog","type":"varchar(64)","not_null":true},{"name":"table_schema","type":"varchar(64)","not_null":true},{"name":"table_name","type":"varchar(64)","not_null":true},{"name":"engine_attribute","type":"json"},{"name":"secondary_engine_attribute","type":"json"}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"table_constraints","kind":"v","columns":[{"name":"constraint_catalog","type":"varchar(64)","not_null":true},{"name":"constraint_schema","type":"varchar(64)","not_null":true},{"name":"constraint_name","type":"varchar(64)"},{"name":"table_schema","type":"varchar(64)","not_null":true},{"name":"table_name","type":"varchar(64)","not_null":true},{"name":"constraint_type","type":"varchar(11)","not_null":true},{"name":"enforced","type":"varchar(3)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"table_constraints_extensions","kind":"v","columns":[{"name":"constraint_catalog","type":"varchar(64)","not_null":true},{"name":"constraint_schema","type":"varchar(64)","not_null":true},{"name":"constraint_name","type":"varchar(64)","not_null":true},{"name":"table_name","type":"varchar(64)","not_null":true},{"name":"engine_attribute","type":"json"},{"name":"secondary_engine_attribute","type":"json"}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"table_privileges","kind":"v","columns":[{"name":"grantee","type":"varchar(292)","not_null":true},{"name":"table_catalog","type":"varchar(512)","not_null":true},{"name":"table_schema","type":"varchar(64)","not_null":true},{"name":"table_name","type":"varchar(64)","not_null":true},{"name":"privilege_type","type":"varchar(64)","not_null":true},{"name":"is_grantable","type":"varchar(3)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"triggers","kind":"v","columns":[{"name":"trigger_catalog","type":"varchar(64)","not_null":true},{"name":"trigger_schema","type":"varchar(64)","not_null":true},{"name":"trigger_name","type":"varchar(64)","not_null":true},{"name":"event_manipulation","type":"enum('INSERT','UPDATE','DELETE')","not_null":true},{"name":"event_object_catalog","type":"varchar(64)","not_null":true},{"name":"event_object_schema","type":"varchar(64)","not_null":true},{"name":"event_object_table","type":"varchar(64)","not_null":true},{"name":"action_order","type":"int unsigned","not_null":true},{"name":"action_condition","type":"varbinary(0)"},{"name":"action_statement","type":"longtext","not_null":true},{"name":"action_orientation","type":"varchar(3)","not_null":true},{"name":"action_timing","type":"enum('BEFORE','AFTER')","not_null":true},{"name":"action_reference_old_table","type":"varbinary(0)"},{"name":"action_reference_new_table","type":"varbinary(0)"},{"name":"action_reference_old_row","type":"varchar(3)","not_null":true},{"name":"action_reference_new_row","type":"varchar(3)","not_null":true},{"name":"created","type":"timestamp(2)","not_null":true},{"name":"sql_mode","type":"set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','NOT_USED_9','NOT_USED_10','NOT_USED_11','NOT_USED_12','NOT_USED_13','NOT_USED_14','NOT_USED_15','NOT_USED_16','NOT_USED_17','NOT_USED_18','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','ALLOW_INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NOT_USED_29','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','TIME_TRUNCATE_FRACTIONAL','INTERPRET_UTF8_AS_UTF8MB4')","not_null":true},{"name":"definer","type":"varchar(288)","not_null":true},{"name":"character_set_client","type":"varchar(64)","not_null":true},{"name":"collation_connection","type":"varchar(64)","not_null":true},{"name":"database_collation","type":"varchar(64)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"user_attributes","kind":"v","columns":[{"name":"user","type":"char(32)","not_null":true},{"name":"host","type":"char(255)","not_null":true},{"name":"attribute","type":"longtext"}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"user_privileges","kind":"v","columns":[{"name":"grantee","type":"varchar(292)","not_null":true},{"name":"table_catalog","type":"varchar(512)","not_null":true},{"name":"privilege_type","type":"varchar(64)","not_null":true},{"name":"is_grantable","type":"varchar(3)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"views","kind":"v","columns":[{"name":"table_catalog","type":"varchar(64)","not_null":true},{"name":"table_schema","type":"varchar(64)","not_null":true},{"name":"table_name","type":"varchar(64)","not_null":true},{"name":"view_definition","type":"longtext"},{"name":"check_option","type":"enum('NONE','LOCAL','CASCADED')"},{"name":"is_updatable","type":"enum('NO','YES')"},{"name":"definer","type":"varchar(288)"},{"name":"security_type","type":"varchar(7)"},{"name":"character_set_client","type":"varchar(64)","not_null":true},{"name":"collation_connection","type":"varchar(64)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"view_routine_usage","kind":"v","columns":[{"name":"table_catalog","type":"varchar(64)","not_null":true},{"name":"table_schema","type":"varchar(64)","not_null":true},{"name":"table_name","type":"varchar(64)","not_null":true},{"name":"specific_catalog","type":"varchar(64)","not_null":true},{"name":"specific_schema","type":"varchar(64)","not_null":true},{"name":"specific_name","type":"varchar(64)","not_null":true}]}
|
||||
{"catalog":"def","schema":"information_schema","name":"view_table_usage","kind":"v","columns":[{"name":"view_catalog","type":"varchar(64)","not_null":true},{"name":"view_schema","type":"varchar(64)","not_null":true},{"name":"view_name","type":"varchar(64)","not_null":true},{"name":"table_catalog","type":"varchar(64)","not_null":true},{"name":"table_schema","type":"varchar(64)","not_null":true},{"name":"table_name","type":"varchar(64)","not_null":true}]}
|
||||
39
internal/engine/dolphin/dialect/types.jsonl
Normal file
39
internal/engine/dolphin/dialect/types.jsonl
Normal file
@@ -0,0 +1,39 @@
|
||||
{"name": "bool", "category": "B", "aliases": ["boolean"]}
|
||||
{"name": "tinyint", "category": "N"}
|
||||
{"name": "tinyint unsigned", "category": "N", "base": "tinyint"}
|
||||
{"name": "smallint", "category": "N"}
|
||||
{"name": "smallint unsigned", "category": "N", "base": "smallint"}
|
||||
{"name": "mediumint", "category": "N"}
|
||||
{"name": "mediumint unsigned", "category": "N", "base": "mediumint"}
|
||||
{"name": "int", "category": "N", "aliases": ["integer"]}
|
||||
{"name": "int unsigned", "category": "N", "base": "int", "aliases": ["integer unsigned"]}
|
||||
{"name": "bigint", "category": "N", "aliases": ["signed", "bigint signed"]}
|
||||
{"name": "bigint unsigned", "category": "N", "base": "bigint", "aliases": ["unsigned"]}
|
||||
{"name": "float", "category": "N"}
|
||||
{"name": "float unsigned", "category": "N", "base": "float"}
|
||||
{"name": "double", "category": "N", "aliases": ["double precision", "real"]}
|
||||
{"name": "double unsigned", "category": "N", "base": "double", "aliases": ["double precision unsigned", "real unsigned"]}
|
||||
{"name": "decimal", "category": "N", "aliases": ["numeric", "dec", "fixed"]}
|
||||
{"name": "decimal unsigned", "category": "N", "base": "decimal", "aliases": ["numeric unsigned", "dec unsigned", "fixed unsigned"]}
|
||||
{"name": "bit", "category": "N"}
|
||||
{"name": "char", "category": "S"}
|
||||
{"name": "varchar", "category": "S"}
|
||||
{"name": "tinytext", "category": "S"}
|
||||
{"name": "text", "category": "S"}
|
||||
{"name": "mediumtext", "category": "S"}
|
||||
{"name": "longtext", "category": "S"}
|
||||
{"name": "enum", "category": "S"}
|
||||
{"name": "set", "category": "S"}
|
||||
{"name": "binary", "category": "U"}
|
||||
{"name": "varbinary", "category": "U"}
|
||||
{"name": "tinyblob", "category": "U"}
|
||||
{"name": "blob", "category": "U"}
|
||||
{"name": "mediumblob", "category": "U"}
|
||||
{"name": "longblob", "category": "U"}
|
||||
{"name": "json", "category": "U"}
|
||||
{"name": "geometry", "category": "U"}
|
||||
{"name": "date", "category": "D"}
|
||||
{"name": "datetime", "category": "D"}
|
||||
{"name": "timestamp", "category": "D"}
|
||||
{"name": "time", "category": "D"}
|
||||
{"name": "year", "category": "D"}
|
||||
55
internal/engine/dolphin/fingerprint.go
Normal file
55
internal/engine/dolphin/fingerprint.go
Normal file
@@ -0,0 +1,55 @@
|
||||
package dolphin
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
pcast "github.com/sqlc-dev/marino/ast"
|
||||
"github.com/sqlc-dev/marino/format"
|
||||
"github.com/sqlc-dev/marino/parser"
|
||||
)
|
||||
|
||||
// deparen unwraps parenthesized expressions so a redundant pair of
|
||||
// parentheses added or dropped by formatting does not change the
|
||||
// fingerprint. Everything else about the tree survives untouched.
|
||||
type deparen struct{}
|
||||
|
||||
func (v deparen) Enter(n pcast.Node) (pcast.Node, bool) { return n, false }
|
||||
func (v deparen) Leave(n pcast.Node) (pcast.Node, bool) {
|
||||
if p, ok := n.(*pcast.ParenthesesExpr); ok {
|
||||
return p.Expr, true
|
||||
}
|
||||
return n, true
|
||||
}
|
||||
|
||||
// Fingerprint reduces a statement to a canonical form that survives changes
|
||||
// in whitespace, keyword case, quoting style and redundant parentheses —
|
||||
// and nothing else. Identifier case is preserved: MySQL table names are
|
||||
// case-sensitive on most servers, so a formatting pass that changes one is
|
||||
// a semantic change and must not fingerprint equal. fmt uses this as its
|
||||
// proof that a formatted statement still means what the author wrote; a
|
||||
// statement whose fingerprint it cannot match is left exactly as written.
|
||||
func (p *Parser) Fingerprint(sql string) (string, error) {
|
||||
// A fresh parser: p.pingcap carries per-parse comment state that
|
||||
// ParseFile is still using.
|
||||
stmts, _, err := parser.New().Parse(sql, "", "")
|
||||
if err != nil {
|
||||
return "", normalizeErr(err)
|
||||
}
|
||||
flags := format.RestoreStringSingleQuotes |
|
||||
format.RestoreKeyWordUppercase |
|
||||
format.RestoreNameBackQuotes
|
||||
parts := make([]string, 0, len(stmts))
|
||||
for _, s := range stmts {
|
||||
n, ok := s.Accept(deparen{})
|
||||
if !ok {
|
||||
return "", fmt.Errorf("fingerprint: rewrite failed")
|
||||
}
|
||||
var sb strings.Builder
|
||||
if err := n.Restore(format.NewRestoreCtx(flags, &sb)); err != nil {
|
||||
return "", fmt.Errorf("fingerprint: %w", err)
|
||||
}
|
||||
parts = append(parts, sb.String())
|
||||
}
|
||||
return strings.Join(parts, "; "), nil
|
||||
}
|
||||
36
internal/engine/dolphin/format.go
Normal file
36
internal/engine/dolphin/format.go
Normal file
@@ -0,0 +1,36 @@
|
||||
package dolphin
|
||||
|
||||
// QuoteIdent returns a quoted identifier if it needs quoting.
|
||||
// MySQL uses backticks for quoting identifiers.
|
||||
func (p *Parser) QuoteIdent(s string) string {
|
||||
// For now, don't quote - MySQL is less strict about quoting
|
||||
return s
|
||||
}
|
||||
|
||||
// TypeName returns the SQL type name for the given namespace and name.
|
||||
// Handles MySQL-specific type name mappings for formatting.
|
||||
func (p *Parser) TypeName(ns, name string) string {
|
||||
if ns != "" {
|
||||
return ns + "." + name
|
||||
}
|
||||
// Map internal type names to MySQL CAST-compatible names for formatting
|
||||
switch name {
|
||||
case "bigint unsigned":
|
||||
return "UNSIGNED"
|
||||
case "bigint signed":
|
||||
return "SIGNED"
|
||||
}
|
||||
return name
|
||||
}
|
||||
|
||||
// Param returns the parameter placeholder for the given number.
|
||||
// MySQL uses ? for all parameters (positional).
|
||||
func (p *Parser) Param(n int, numbered bool) string {
|
||||
return "?"
|
||||
}
|
||||
|
||||
// Cast returns a type cast expression.
|
||||
// MySQL uses CAST(expr AS type) syntax.
|
||||
func (p *Parser) Cast(arg, typeName string) string {
|
||||
return "CAST(" + arg + " AS " + typeName + ")"
|
||||
}
|
||||
162
internal/engine/dolphin/parse.go
Normal file
162
internal/engine/dolphin/parse.go
Normal file
@@ -0,0 +1,162 @@
|
||||
package dolphin
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/sqlc-dev/marino/parser"
|
||||
|
||||
"github.com/sqlc-dev/sqlc/internal/source"
|
||||
"github.com/sqlc-dev/sqlc/internal/sql/ast"
|
||||
"github.com/sqlc-dev/sqlc/internal/sql/sqlerr"
|
||||
)
|
||||
|
||||
func NewParser() *Parser {
|
||||
return &Parser{pingcap: parser.New()}
|
||||
}
|
||||
|
||||
// NewFormatParser returns the parser sqlc fmt uses. It differs from the
|
||||
// compiler's parser in one way: identifiers keep the case the author wrote.
|
||||
// The compiler lowercases them so catalog lookups are case-insensitive, but
|
||||
// a formatter that prints `Event` as `event` renames a table on the many
|
||||
// servers where table names are case-sensitive.
|
||||
func NewFormatParser() *Parser {
|
||||
return &Parser{pingcap: parser.New(), preserveCase: true}
|
||||
}
|
||||
|
||||
type Parser struct {
|
||||
pingcap *parser.Parser
|
||||
preserveCase bool
|
||||
}
|
||||
|
||||
var lineColumn = regexp.MustCompile(`^line (\d+) column (\d+) (.*)`)
|
||||
|
||||
func normalizeErr(err error) error {
|
||||
if err == nil {
|
||||
return err
|
||||
}
|
||||
parts := strings.Split(err.Error(), "\n")
|
||||
msg := strings.TrimSpace(parts[0] + "\"")
|
||||
out := lineColumn.FindStringSubmatch(msg)
|
||||
if len(out) == 4 {
|
||||
line, lineErr := strconv.Atoi(out[1])
|
||||
col, colErr := strconv.Atoi(out[2])
|
||||
if lineErr != nil || colErr != nil {
|
||||
return errors.New(msg)
|
||||
}
|
||||
return &sqlerr.Error{
|
||||
Message: "syntax error",
|
||||
Err: errors.New(out[3]),
|
||||
Line: line,
|
||||
Column: col,
|
||||
}
|
||||
}
|
||||
return errors.New(msg)
|
||||
}
|
||||
|
||||
func (p *Parser) Parse(r io.Reader) ([]ast.Statement, error) {
|
||||
f, err := p.ParseFile(r)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// The compiler skips statements sqlc has no node for; the formatter
|
||||
// must see them, so the filter lives here, not in ParseFile.
|
||||
var stmts []ast.Statement
|
||||
for _, stmt := range f.Stmts {
|
||||
if _, ok := stmt.Raw.Stmt.(*ast.TODO); ok {
|
||||
continue
|
||||
}
|
||||
stmts = append(stmts, stmt)
|
||||
}
|
||||
return stmts, nil
|
||||
}
|
||||
|
||||
// ParseFile parses like Parse and also carries the file's comments, which
|
||||
// marino's lexer records as it scans.
|
||||
func (p *Parser) ParseFile(r io.Reader) (*ast.File, error) {
|
||||
blob, err := io.ReadAll(r)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
src := string(blob)
|
||||
stmtNodes, _, err := p.pingcap.Parse(src, "", "")
|
||||
if err != nil {
|
||||
return nil, normalizeErr(err)
|
||||
}
|
||||
var stmts []ast.Statement
|
||||
// A statement's text spans from the end of the previous statement
|
||||
// through its terminator, so it carries the comments written above it
|
||||
// (that's where the "-- name:" annotation lives). Each text is a
|
||||
// contiguous slice of src laid down after the one before it, so
|
||||
// searching from the previous statement's end pins every text to its
|
||||
// own occurrence even when two statements read the same.
|
||||
searchFrom := 0
|
||||
for i := range stmtNodes {
|
||||
converter := &cc{preserveCase: p.preserveCase}
|
||||
// A statement sqlc has no node for converts to a TODO and stays in
|
||||
// the list: the formatter needs its extent to keep it as written,
|
||||
// and Parse filters it out for the compiler.
|
||||
out := converter.convert(stmtNodes[i])
|
||||
|
||||
text := stmtNodes[i].Text()
|
||||
idx := strings.Index(src[searchFrom:], text)
|
||||
if idx < 0 {
|
||||
return nil, fmt.Errorf("could not locate statement %d in source", i)
|
||||
}
|
||||
loc := searchFrom + idx
|
||||
searchFrom = loc + len(text)
|
||||
|
||||
stmtLen := len(text)
|
||||
if stmtLen > 0 && text[stmtLen-1] == ';' {
|
||||
stmtLen -= 1 // Subtract one to remove semicolon
|
||||
}
|
||||
|
||||
stmts = append(stmts, ast.Statement{
|
||||
Raw: &ast.RawStmt{
|
||||
Stmt: out,
|
||||
StmtLocation: loc,
|
||||
StmtLen: stmtLen,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
var comments []ast.Comment
|
||||
for _, c := range p.pingcap.Comments() {
|
||||
comments = append(comments, ast.Comment{
|
||||
Text: strings.TrimRight(src[c.Begin:c.End], " \t\r\n"),
|
||||
Start: c.Begin,
|
||||
End: c.End,
|
||||
OwnLine: ownLine(src, c.Begin),
|
||||
})
|
||||
}
|
||||
return &ast.File{Stmts: stmts, Comments: comments}, nil
|
||||
}
|
||||
|
||||
// ownLine reports that only blank space sits between the preceding line
|
||||
// break and pos.
|
||||
func ownLine(src string, pos int) bool {
|
||||
for j := pos - 1; j >= 0; j-- {
|
||||
switch src[j] {
|
||||
case '\n':
|
||||
return true
|
||||
case ' ', '\t', '\r':
|
||||
continue
|
||||
default:
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
// https://dev.mysql.com/doc/refman/8.0/en/comments.html
|
||||
func (p *Parser) CommentSyntax() source.CommentSyntax {
|
||||
return source.CommentSyntax{
|
||||
Dash: true,
|
||||
SlashStar: true,
|
||||
Hash: true,
|
||||
}
|
||||
}
|
||||
273
internal/engine/dolphin/reserved.go
Normal file
273
internal/engine/dolphin/reserved.go
Normal file
@@ -0,0 +1,273 @@
|
||||
package dolphin
|
||||
|
||||
import "strings"
|
||||
|
||||
// https://dev.mysql.com/doc/refman/8.0/en/keywords.html
|
||||
func (p *Parser) IsReservedKeyword(s string) bool {
|
||||
switch strings.ToLower(s) {
|
||||
case "accessible":
|
||||
case "add":
|
||||
case "all":
|
||||
case "alter":
|
||||
case "analyze":
|
||||
case "and":
|
||||
case "as":
|
||||
case "asc":
|
||||
case "asensitive":
|
||||
case "before":
|
||||
case "between":
|
||||
case "bigint":
|
||||
case "binary":
|
||||
case "blob":
|
||||
case "both":
|
||||
case "by":
|
||||
case "call":
|
||||
case "cascade":
|
||||
case "case":
|
||||
case "change":
|
||||
case "char":
|
||||
case "character":
|
||||
case "check":
|
||||
case "collate":
|
||||
case "column":
|
||||
case "condition":
|
||||
case "constraint":
|
||||
case "continue":
|
||||
case "convert":
|
||||
case "create":
|
||||
case "cross":
|
||||
case "cube":
|
||||
case "cume_dist":
|
||||
case "current_date":
|
||||
case "current_time":
|
||||
case "current_timestamp":
|
||||
case "current_user":
|
||||
case "cursor":
|
||||
case "database":
|
||||
case "databases":
|
||||
case "day_hour":
|
||||
case "day_microsecond":
|
||||
case "day_minute":
|
||||
case "day_second":
|
||||
case "dec":
|
||||
case "decimal":
|
||||
case "declare":
|
||||
case "default":
|
||||
case "delayed":
|
||||
case "delete":
|
||||
case "dense_rank":
|
||||
case "desc":
|
||||
case "describe":
|
||||
case "deterministic":
|
||||
case "distinct":
|
||||
case "distinctrow":
|
||||
case "div":
|
||||
case "double":
|
||||
case "drop":
|
||||
case "dual":
|
||||
case "each":
|
||||
case "else":
|
||||
case "elseif":
|
||||
case "empty":
|
||||
case "enclosed":
|
||||
case "escaped":
|
||||
case "except":
|
||||
case "exists":
|
||||
case "exit":
|
||||
case "explain":
|
||||
case "false":
|
||||
case "fetch":
|
||||
case "first_value":
|
||||
case "float":
|
||||
case "float4":
|
||||
case "float8":
|
||||
case "for":
|
||||
case "force":
|
||||
case "foreign":
|
||||
case "from":
|
||||
case "fulltext":
|
||||
case "function":
|
||||
case "generated":
|
||||
case "get":
|
||||
case "grant":
|
||||
case "group":
|
||||
case "grouping":
|
||||
case "groups":
|
||||
case "having":
|
||||
case "high_priority":
|
||||
case "hour_microsecond":
|
||||
case "hour_minute":
|
||||
case "hour_second":
|
||||
case "if":
|
||||
case "ignore":
|
||||
case "in":
|
||||
case "index":
|
||||
case "infile":
|
||||
case "inner":
|
||||
case "inout":
|
||||
case "insensitive":
|
||||
case "insert":
|
||||
case "int":
|
||||
case "int1":
|
||||
case "int2":
|
||||
case "int3":
|
||||
case "int4":
|
||||
case "int8":
|
||||
case "integer":
|
||||
case "interval":
|
||||
case "into":
|
||||
case "io_after_gtids":
|
||||
case "io_before_gtids":
|
||||
case "is":
|
||||
case "iterate":
|
||||
case "join":
|
||||
case "json_table":
|
||||
case "key":
|
||||
case "keys":
|
||||
case "kill":
|
||||
case "lag":
|
||||
case "last_value":
|
||||
case "lateral":
|
||||
case "lead":
|
||||
case "leading":
|
||||
case "leave":
|
||||
case "left":
|
||||
case "like":
|
||||
case "limit":
|
||||
case "linear":
|
||||
case "lines":
|
||||
case "load":
|
||||
case "localtime":
|
||||
case "localtimestamp":
|
||||
case "lock":
|
||||
case "long":
|
||||
case "longblob":
|
||||
case "longtext":
|
||||
case "loop":
|
||||
case "low_priority":
|
||||
case "master_bind":
|
||||
case "master_ssl_verify_server_cert":
|
||||
case "match":
|
||||
case "maxvalue":
|
||||
case "mediumblob":
|
||||
case "mediumint":
|
||||
case "mediumtext":
|
||||
case "middleint":
|
||||
case "minute_microsecond":
|
||||
case "minute_second":
|
||||
case "mod":
|
||||
case "modifies":
|
||||
case "natural":
|
||||
case "not":
|
||||
case "no_write_to_binlog":
|
||||
case "nth_value":
|
||||
case "ntile":
|
||||
case "null":
|
||||
case "numeric":
|
||||
case "of":
|
||||
case "on":
|
||||
case "optimize":
|
||||
case "optimizer_costs":
|
||||
case "option":
|
||||
case "optionally":
|
||||
case "or":
|
||||
case "order":
|
||||
case "out":
|
||||
case "outer":
|
||||
case "outfile":
|
||||
case "over":
|
||||
case "partition":
|
||||
case "percent_rank":
|
||||
case "precision":
|
||||
case "primary":
|
||||
case "procedure":
|
||||
case "purge":
|
||||
case "range":
|
||||
case "rank":
|
||||
case "read":
|
||||
case "reads":
|
||||
case "read_write":
|
||||
case "real":
|
||||
case "recursive":
|
||||
case "references":
|
||||
case "regexp":
|
||||
case "release":
|
||||
case "rename":
|
||||
case "repeat":
|
||||
case "replace":
|
||||
case "require":
|
||||
case "resignal":
|
||||
case "restrict":
|
||||
case "return":
|
||||
case "revoke":
|
||||
case "right":
|
||||
case "rlike":
|
||||
case "row":
|
||||
case "rows":
|
||||
case "row_number":
|
||||
case "schema":
|
||||
case "schemas":
|
||||
case "second_microsecond":
|
||||
case "select":
|
||||
case "sensitive":
|
||||
case "separator":
|
||||
case "set":
|
||||
case "show":
|
||||
case "signal":
|
||||
case "smallint":
|
||||
case "spatial":
|
||||
case "specific":
|
||||
case "sql":
|
||||
case "sqlexception":
|
||||
case "sqlstate":
|
||||
case "sqlwarning":
|
||||
case "sql_big_result":
|
||||
case "sql_calc_found_rows":
|
||||
case "sql_small_result":
|
||||
case "ssl":
|
||||
case "starting":
|
||||
case "stored":
|
||||
case "straight_join":
|
||||
case "system":
|
||||
case "table":
|
||||
case "terminated":
|
||||
case "then":
|
||||
case "tinyblob":
|
||||
case "tinyint":
|
||||
case "tinytext":
|
||||
case "to":
|
||||
case "trailing":
|
||||
case "trigger":
|
||||
case "true":
|
||||
case "undo":
|
||||
case "union":
|
||||
case "unique":
|
||||
case "unlock":
|
||||
case "unsigned":
|
||||
case "update":
|
||||
case "usage":
|
||||
case "use":
|
||||
case "using":
|
||||
case "utc_date":
|
||||
case "utc_time":
|
||||
case "utc_timestamp":
|
||||
case "values":
|
||||
case "varbinary":
|
||||
case "varchar":
|
||||
case "varcharacter":
|
||||
case "varying":
|
||||
case "virtual":
|
||||
case "when":
|
||||
case "where":
|
||||
case "while":
|
||||
case "window":
|
||||
case "with":
|
||||
case "write":
|
||||
case "xor":
|
||||
case "year_month":
|
||||
case "zerofill":
|
||||
default:
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
34
internal/engine/dolphin/seed.go
Normal file
34
internal/engine/dolphin/seed.go
Normal file
@@ -0,0 +1,34 @@
|
||||
package dolphin
|
||||
|
||||
import (
|
||||
"embed"
|
||||
"sync"
|
||||
|
||||
"github.com/sqlc-dev/sqlc/internal/core"
|
||||
"github.com/sqlc-dev/sqlc/internal/core/seed"
|
||||
"github.com/sqlc-dev/sqlc/internal/sql/catalog"
|
||||
)
|
||||
|
||||
// The dialect directory describes MySQL's type system, and functions.jsonl is
|
||||
// its standard library. Both the analysis core and the catalog the legacy
|
||||
// compiler builds read them.
|
||||
//
|
||||
//go:embed dialect
|
||||
var dialectFS embed.FS
|
||||
|
||||
// Dialect returns the catalog option that seeds MySQL's type system.
|
||||
func Dialect() core.Option {
|
||||
return seed.Dialect(dialectFS, "dialect")
|
||||
}
|
||||
|
||||
// stdlib is MySQL's functions in the form the catalog uses. They are embedded
|
||||
// in the binary and never change within a run, so they are read once.
|
||||
var stdlib = sync.OnceValue(func() []*catalog.Function {
|
||||
funcs, err := seed.Functions(dialectFS, "dialect")
|
||||
if err != nil {
|
||||
// A failure here means sqlc was built from a broken tree, which no
|
||||
// caller can do anything about.
|
||||
panic(err)
|
||||
}
|
||||
return funcs
|
||||
})
|
||||
11
internal/engine/dolphin/stdlib.go
Normal file
11
internal/engine/dolphin/stdlib.go
Normal file
@@ -0,0 +1,11 @@
|
||||
package dolphin
|
||||
|
||||
import (
|
||||
"github.com/sqlc-dev/sqlc/internal/sql/catalog"
|
||||
)
|
||||
|
||||
// defaultSchema is MySQL's standard library, read from the dialect directory's
|
||||
// functions.jsonl.
|
||||
func defaultSchema(name string) *catalog.Schema {
|
||||
return &catalog.Schema{Name: name, Funcs: stdlib()}
|
||||
}
|
||||
94
internal/engine/dolphin/utils.go
Normal file
94
internal/engine/dolphin/utils.go
Normal file
@@ -0,0 +1,94 @@
|
||||
package dolphin
|
||||
|
||||
import (
|
||||
pcast "github.com/sqlc-dev/marino/ast"
|
||||
"github.com/sqlc-dev/marino/mysql"
|
||||
|
||||
"github.com/sqlc-dev/sqlc/internal/sql/ast"
|
||||
)
|
||||
|
||||
func (c *cc) parseTableName(n *pcast.TableName) *ast.TableName {
|
||||
return &ast.TableName{
|
||||
Schema: c.identifier(n.Schema.String()),
|
||||
Name: c.identifier(n.Name.String()),
|
||||
}
|
||||
}
|
||||
|
||||
func (c *cc) toList(node pcast.Node) *ast.List {
|
||||
var items []ast.Node
|
||||
switch n := node.(type) {
|
||||
case *pcast.TableName:
|
||||
if schema := n.Schema.String(); schema != "" {
|
||||
items = append(items, c.NewIdentifier(schema))
|
||||
}
|
||||
items = append(items, c.NewIdentifier(n.Name.String()))
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
return &ast.List{Items: items}
|
||||
}
|
||||
|
||||
func isNotNull(n *pcast.ColumnDef) bool {
|
||||
for i := range n.Options {
|
||||
if n.Options[i].Tp == pcast.ColumnOptionNotNull {
|
||||
return true
|
||||
}
|
||||
if n.Options[i].Tp == pcast.ColumnOptionPrimaryKey {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func convertToRangeVarList(list *ast.List, result *ast.List) {
|
||||
if len(list.Items) == 0 {
|
||||
return
|
||||
}
|
||||
switch rel := list.Items[0].(type) {
|
||||
|
||||
// Special case for joins in updates
|
||||
case *ast.JoinExpr:
|
||||
left, ok := rel.Larg.(*ast.RangeVar)
|
||||
if !ok {
|
||||
if list, check := rel.Larg.(*ast.List); check {
|
||||
convertToRangeVarList(list, result)
|
||||
} else if subselect, check := rel.Larg.(*ast.RangeSubselect); check {
|
||||
// Handle subqueries in JOIN clauses
|
||||
result.Items = append(result.Items, subselect)
|
||||
} else {
|
||||
panic("expected range var")
|
||||
}
|
||||
}
|
||||
if left != nil {
|
||||
result.Items = append(result.Items, left)
|
||||
}
|
||||
|
||||
right, ok := rel.Rarg.(*ast.RangeVar)
|
||||
if !ok {
|
||||
if list, check := rel.Rarg.(*ast.List); check {
|
||||
convertToRangeVarList(list, result)
|
||||
} else if subselect, check := rel.Rarg.(*ast.RangeSubselect); check {
|
||||
// Handle subqueries in JOIN clauses
|
||||
result.Items = append(result.Items, subselect)
|
||||
} else {
|
||||
panic("expected range var")
|
||||
}
|
||||
}
|
||||
if right != nil {
|
||||
result.Items = append(result.Items, right)
|
||||
}
|
||||
|
||||
case *ast.RangeVar:
|
||||
result.Items = append(result.Items, rel)
|
||||
|
||||
case *ast.RangeSubselect:
|
||||
result.Items = append(result.Items, rel)
|
||||
|
||||
default:
|
||||
panic("expected range var")
|
||||
}
|
||||
}
|
||||
|
||||
func isUnsigned(n *pcast.ColumnDef) bool {
|
||||
return mysql.HasUnsignedFlag(n.Tp.GetFlag())
|
||||
}
|
||||
1244
internal/engine/duckdb/convert.go
Normal file
1244
internal/engine/duckdb/convert.go
Normal file
File diff suppressed because it is too large
Load Diff
26
internal/engine/duckdb/dialect/dialect.json
Normal file
26
internal/engine/duckdb/dialect/dialect.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"dialect": "duckdb",
|
||||
"default_schema": "main",
|
||||
"const": {
|
||||
"integer": "integer",
|
||||
"float": "double",
|
||||
"string": "varchar",
|
||||
"bool": "boolean"
|
||||
},
|
||||
"bool": "boolean",
|
||||
"comparison": ["=", "==", "<>", "!=", "<", "<=", ">", ">=", "IS DISTINCT FROM", "IS NOT DISTINCT FROM"],
|
||||
"comparison_categories": "BNSDU",
|
||||
"arithmetic": ["+", "-", "*", "/", "//", "%", "**", "^"],
|
||||
"arithmetic_categories": "N",
|
||||
"cast_categories": "NSD",
|
||||
"rewrites": [
|
||||
{
|
||||
"from": "varchar($1)",
|
||||
"to": "varchar"
|
||||
},
|
||||
{
|
||||
"from": "decimal",
|
||||
"to": "decimal(18, 3)"
|
||||
}
|
||||
]
|
||||
}
|
||||
157
internal/engine/duckdb/dialect/operators.jsonl
Normal file
157
internal/engine/duckdb/dialect/operators.jsonl
Normal file
@@ -0,0 +1,157 @@
|
||||
{"name":"!~~","left":"varchar","right":"varchar","result":"boolean"}
|
||||
{"name":"!~~*","left":"varchar","right":"varchar","result":"boolean"}
|
||||
{"name":"%","left":"bigint","right":"bigint","result":"bigint"}
|
||||
{"name":"%","left":"decimal","right":"decimal","result":"decimal"}
|
||||
{"name":"%","left":"double","right":"double","result":"double"}
|
||||
{"name":"%","left":"float","right":"float","result":"float"}
|
||||
{"name":"%","left":"hugeint","right":"hugeint","result":"hugeint"}
|
||||
{"name":"%","left":"integer","right":"integer","result":"integer"}
|
||||
{"name":"%","left":"smallint","right":"smallint","result":"smallint"}
|
||||
{"name":"%","left":"tinyint","right":"tinyint","result":"tinyint"}
|
||||
{"name":"%","left":"ubigint","right":"ubigint","result":"ubigint"}
|
||||
{"name":"%","left":"uhugeint","right":"uhugeint","result":"uhugeint"}
|
||||
{"name":"%","left":"uinteger","right":"uinteger","result":"uinteger"}
|
||||
{"name":"%","left":"usmallint","right":"usmallint","result":"usmallint"}
|
||||
{"name":"%","left":"utinyint","right":"utinyint","result":"utinyint"}
|
||||
{"name":"\u0026","left":"bigint","right":"bigint","result":"bigint"}
|
||||
{"name":"\u0026","left":"bit","right":"bit","result":"bit"}
|
||||
{"name":"\u0026","left":"hugeint","right":"hugeint","result":"hugeint"}
|
||||
{"name":"\u0026","left":"integer","right":"integer","result":"integer"}
|
||||
{"name":"\u0026","left":"smallint","right":"smallint","result":"smallint"}
|
||||
{"name":"\u0026","left":"tinyint","right":"tinyint","result":"tinyint"}
|
||||
{"name":"\u0026","left":"ubigint","right":"ubigint","result":"ubigint"}
|
||||
{"name":"\u0026","left":"uhugeint","right":"uhugeint","result":"uhugeint"}
|
||||
{"name":"\u0026","left":"uinteger","right":"uinteger","result":"uinteger"}
|
||||
{"name":"\u0026","left":"usmallint","right":"usmallint","result":"usmallint"}
|
||||
{"name":"\u0026","left":"utinyint","right":"utinyint","result":"utinyint"}
|
||||
{"name":"\u0026\u0026","left":"geometry","right":"geometry","result":"boolean"}
|
||||
{"name":"*","left":"bigint","right":"bigint","result":"bigint"}
|
||||
{"name":"*","left":"bigint","right":"interval","result":"interval"}
|
||||
{"name":"*","left":"decimal","right":"decimal","result":"decimal"}
|
||||
{"name":"*","left":"double","right":"double","result":"double"}
|
||||
{"name":"*","left":"double","right":"interval","result":"interval"}
|
||||
{"name":"*","left":"float","right":"float","result":"float"}
|
||||
{"name":"*","left":"hugeint","right":"hugeint","result":"hugeint"}
|
||||
{"name":"*","left":"integer","right":"integer","result":"integer"}
|
||||
{"name":"*","left":"interval","right":"bigint","result":"interval"}
|
||||
{"name":"*","left":"interval","right":"double","result":"interval"}
|
||||
{"name":"*","left":"smallint","right":"smallint","result":"smallint"}
|
||||
{"name":"*","left":"tinyint","right":"tinyint","result":"tinyint"}
|
||||
{"name":"*","left":"ubigint","right":"ubigint","result":"ubigint"}
|
||||
{"name":"*","left":"uhugeint","right":"uhugeint","result":"uhugeint"}
|
||||
{"name":"*","left":"uinteger","right":"uinteger","result":"uinteger"}
|
||||
{"name":"*","left":"usmallint","right":"usmallint","result":"usmallint"}
|
||||
{"name":"*","left":"utinyint","right":"utinyint","result":"utinyint"}
|
||||
{"name":"**","left":"double","right":"double","result":"double"}
|
||||
{"name":"+","left":"bigint","right":"bigint","result":"bigint"}
|
||||
{"name":"+","left":"bignum","right":"bignum","result":"bignum"}
|
||||
{"name":"+","left":"date","right":"integer","result":"date"}
|
||||
{"name":"+","left":"date","right":"interval","result":"timestamp"}
|
||||
{"name":"+","left":"date","right":"time with time zone","result":"timestamp with time zone"}
|
||||
{"name":"+","left":"date","right":"time","result":"timestamp"}
|
||||
{"name":"+","left":"decimal","right":"decimal","result":"decimal"}
|
||||
{"name":"+","left":"double","right":"double","result":"double"}
|
||||
{"name":"+","left":"float","right":"float","result":"float"}
|
||||
{"name":"+","left":"hugeint","right":"hugeint","result":"hugeint"}
|
||||
{"name":"+","left":"integer","right":"date","result":"date"}
|
||||
{"name":"+","left":"integer","right":"integer","result":"integer"}
|
||||
{"name":"+","left":"interval","right":"date","result":"timestamp"}
|
||||
{"name":"+","left":"interval","right":"interval","result":"interval"}
|
||||
{"name":"+","left":"interval","right":"time with time zone","result":"time with time zone"}
|
||||
{"name":"+","left":"interval","right":"timestamp with time zone","result":"timestamp with time zone"}
|
||||
{"name":"+","left":"interval","right":"timestamp","result":"timestamp"}
|
||||
{"name":"+","left":"interval","right":"time","result":"time"}
|
||||
{"name":"+","left":"smallint","right":"smallint","result":"smallint"}
|
||||
{"name":"+","left":"time with time zone","right":"date","result":"timestamp with time zone"}
|
||||
{"name":"+","left":"time with time zone","right":"interval","result":"time with time zone"}
|
||||
{"name":"+","left":"time","right":"date","result":"timestamp"}
|
||||
{"name":"+","left":"time","right":"interval","result":"time"}
|
||||
{"name":"+","left":"timestamp with time zone","right":"interval","result":"timestamp with time zone"}
|
||||
{"name":"+","left":"timestamp","right":"interval","result":"timestamp"}
|
||||
{"name":"+","left":"tinyint","right":"tinyint","result":"tinyint"}
|
||||
{"name":"+","left":"ubigint","right":"ubigint","result":"ubigint"}
|
||||
{"name":"+","left":"uhugeint","right":"uhugeint","result":"uhugeint"}
|
||||
{"name":"+","left":"uinteger","right":"uinteger","result":"uinteger"}
|
||||
{"name":"+","left":"usmallint","right":"usmallint","result":"usmallint"}
|
||||
{"name":"+","left":"utinyint","right":"utinyint","result":"utinyint"}
|
||||
{"name":"-","left":"bigint","right":"bigint","result":"bigint"}
|
||||
{"name":"-","left":"bignum","right":"bignum","result":"bignum"}
|
||||
{"name":"-","left":"date","right":"date","result":"bigint"}
|
||||
{"name":"-","left":"date","right":"integer","result":"date"}
|
||||
{"name":"-","left":"date","right":"interval","result":"timestamp"}
|
||||
{"name":"-","left":"decimal","right":"decimal","result":"decimal"}
|
||||
{"name":"-","left":"double","right":"double","result":"double"}
|
||||
{"name":"-","left":"float","right":"float","result":"float"}
|
||||
{"name":"-","left":"hugeint","right":"hugeint","result":"hugeint"}
|
||||
{"name":"-","left":"integer","right":"integer","result":"integer"}
|
||||
{"name":"-","left":"interval","right":"interval","result":"interval"}
|
||||
{"name":"-","left":"smallint","right":"smallint","result":"smallint"}
|
||||
{"name":"-","left":"time with time zone","right":"interval","result":"time with time zone"}
|
||||
{"name":"-","left":"time","right":"interval","result":"time"}
|
||||
{"name":"-","left":"timestamp with time zone","right":"interval","result":"timestamp with time zone"}
|
||||
{"name":"-","left":"timestamp with time zone","right":"timestamp with time zone","result":"interval"}
|
||||
{"name":"-","left":"timestamp","right":"interval","result":"timestamp"}
|
||||
{"name":"-","left":"timestamp","right":"timestamp","result":"interval"}
|
||||
{"name":"-","left":"tinyint","right":"tinyint","result":"tinyint"}
|
||||
{"name":"-","left":"ubigint","right":"ubigint","result":"ubigint"}
|
||||
{"name":"-","left":"uhugeint","right":"uhugeint","result":"uhugeint"}
|
||||
{"name":"-","left":"uinteger","right":"uinteger","result":"uinteger"}
|
||||
{"name":"-","left":"usmallint","right":"usmallint","result":"usmallint"}
|
||||
{"name":"-","left":"utinyint","right":"utinyint","result":"utinyint"}
|
||||
{"name":"-\u003e\u003e","left":"json","right":"bigint","result":"varchar"}
|
||||
{"name":"-\u003e\u003e","left":"json","right":"varchar","result":"varchar"}
|
||||
{"name":"-\u003e\u003e","left":"varchar","right":"bigint","result":"varchar"}
|
||||
{"name":"-\u003e\u003e","left":"varchar","right":"varchar","result":"varchar"}
|
||||
{"name":"/","left":"double","right":"double","result":"double"}
|
||||
{"name":"/","left":"float","right":"float","result":"float"}
|
||||
{"name":"/","left":"interval","right":"double","result":"interval"}
|
||||
{"name":"//","left":"bigint","right":"bigint","result":"bigint"}
|
||||
{"name":"//","left":"double","right":"double","result":"double"}
|
||||
{"name":"//","left":"float","right":"float","result":"float"}
|
||||
{"name":"//","left":"hugeint","right":"hugeint","result":"hugeint"}
|
||||
{"name":"//","left":"integer","right":"integer","result":"integer"}
|
||||
{"name":"//","left":"smallint","right":"smallint","result":"smallint"}
|
||||
{"name":"//","left":"tinyint","right":"tinyint","result":"tinyint"}
|
||||
{"name":"//","left":"ubigint","right":"ubigint","result":"ubigint"}
|
||||
{"name":"//","left":"uhugeint","right":"uhugeint","result":"uhugeint"}
|
||||
{"name":"//","left":"uinteger","right":"uinteger","result":"uinteger"}
|
||||
{"name":"//","left":"usmallint","right":"usmallint","result":"usmallint"}
|
||||
{"name":"//","left":"utinyint","right":"utinyint","result":"utinyint"}
|
||||
{"name":"\u003c\u003c","left":"bigint","right":"bigint","result":"bigint"}
|
||||
{"name":"\u003c\u003c","left":"bit","right":"integer","result":"bit"}
|
||||
{"name":"\u003c\u003c","left":"hugeint","right":"hugeint","result":"hugeint"}
|
||||
{"name":"\u003c\u003c","left":"integer","right":"integer","result":"integer"}
|
||||
{"name":"\u003c\u003c","left":"smallint","right":"smallint","result":"smallint"}
|
||||
{"name":"\u003c\u003c","left":"tinyint","right":"tinyint","result":"tinyint"}
|
||||
{"name":"\u003c\u003c","left":"ubigint","right":"ubigint","result":"ubigint"}
|
||||
{"name":"\u003c\u003c","left":"uhugeint","right":"uhugeint","result":"uhugeint"}
|
||||
{"name":"\u003c\u003c","left":"uinteger","right":"uinteger","result":"uinteger"}
|
||||
{"name":"\u003c\u003c","left":"usmallint","right":"usmallint","result":"usmallint"}
|
||||
{"name":"\u003c\u003c","left":"utinyint","right":"utinyint","result":"utinyint"}
|
||||
{"name":"\u003e\u003e","left":"bigint","right":"bigint","result":"bigint"}
|
||||
{"name":"\u003e\u003e","left":"bit","right":"integer","result":"bit"}
|
||||
{"name":"\u003e\u003e","left":"hugeint","right":"hugeint","result":"hugeint"}
|
||||
{"name":"\u003e\u003e","left":"integer","right":"integer","result":"integer"}
|
||||
{"name":"\u003e\u003e","left":"smallint","right":"smallint","result":"smallint"}
|
||||
{"name":"\u003e\u003e","left":"tinyint","right":"tinyint","result":"tinyint"}
|
||||
{"name":"\u003e\u003e","left":"ubigint","right":"ubigint","result":"ubigint"}
|
||||
{"name":"\u003e\u003e","left":"uhugeint","right":"uhugeint","result":"uhugeint"}
|
||||
{"name":"\u003e\u003e","left":"uinteger","right":"uinteger","result":"uinteger"}
|
||||
{"name":"\u003e\u003e","left":"usmallint","right":"usmallint","result":"usmallint"}
|
||||
{"name":"\u003e\u003e","left":"utinyint","right":"utinyint","result":"utinyint"}
|
||||
{"name":"^","left":"double","right":"double","result":"double"}
|
||||
{"name":"^@","left":"varchar","right":"varchar","result":"boolean"}
|
||||
{"name":"|","left":"bigint","right":"bigint","result":"bigint"}
|
||||
{"name":"|","left":"bit","right":"bit","result":"bit"}
|
||||
{"name":"|","left":"hugeint","right":"hugeint","result":"hugeint"}
|
||||
{"name":"|","left":"integer","right":"integer","result":"integer"}
|
||||
{"name":"|","left":"smallint","right":"smallint","result":"smallint"}
|
||||
{"name":"|","left":"tinyint","right":"tinyint","result":"tinyint"}
|
||||
{"name":"|","left":"ubigint","right":"ubigint","result":"ubigint"}
|
||||
{"name":"|","left":"uhugeint","right":"uhugeint","result":"uhugeint"}
|
||||
{"name":"|","left":"uinteger","right":"uinteger","result":"uinteger"}
|
||||
{"name":"|","left":"usmallint","right":"usmallint","result":"usmallint"}
|
||||
{"name":"|","left":"utinyint","right":"utinyint","result":"utinyint"}
|
||||
{"name":"~~","left":"varchar","right":"varchar","result":"boolean"}
|
||||
{"name":"~~*","left":"varchar","right":"varchar","result":"boolean"}
|
||||
{"name":"~~~","left":"varchar","right":"varchar","result":"boolean"}
|
||||
40
internal/engine/duckdb/dialect/types.jsonl
Normal file
40
internal/engine/duckdb/dialect/types.jsonl
Normal file
@@ -0,0 +1,40 @@
|
||||
{"name":"any","category":"U"}
|
||||
{"name":"array","category":"C"}
|
||||
{"name":"bigint","category":"N","aliases":["int64","int8","long","oid"]}
|
||||
{"name":"bignum","category":"U","aliases":["varint"]}
|
||||
{"name":"bit","category":"U","aliases":["bitstring"]}
|
||||
{"name":"blob","category":"U","aliases":["binary","bytea","varbinary"]}
|
||||
{"name":"boolean","category":"B","aliases":["bool","logical"]}
|
||||
{"name":"date","category":"D"}
|
||||
{"name":"decimal","category":"N","aliases":["dec","numeric"]}
|
||||
{"name":"double","category":"N","aliases":["float8"]}
|
||||
{"name":"enum","category":"U"}
|
||||
{"name":"float","category":"N","aliases":["float4","real"]}
|
||||
{"name":"geometry","category":"U"}
|
||||
{"name":"hugeint","category":"N","aliases":["int128"]}
|
||||
{"name":"integer","category":"N","aliases":["int","int32","int4","integral","signed"]}
|
||||
{"name":"interval","category":"D"}
|
||||
{"name":"list","category":"C"}
|
||||
{"name":"map","category":"C"}
|
||||
{"name":"smallint","category":"N","aliases":["int16","int2","short"]}
|
||||
{"name":"struct","category":"C","aliases":["row"]}
|
||||
{"name":"time","category":"D"}
|
||||
{"name":"time with time zone","category":"D","aliases":["timetz"]}
|
||||
{"name":"time_ns","category":"D"}
|
||||
{"name":"timestamp","category":"D","aliases":["datetime","timestamp_us"]}
|
||||
{"name":"timestamp with time zone","category":"D","aliases":["timestamptz"]}
|
||||
{"name":"timestamp_ms","category":"D"}
|
||||
{"name":"timestamp_ns","category":"D"}
|
||||
{"name":"timestamp_s","category":"D"}
|
||||
{"name":"timestamptz_ns","category":"D"}
|
||||
{"name":"tinyint","category":"N","aliases":["int1"]}
|
||||
{"name":"tuple","category":"U"}
|
||||
{"name":"ubigint","category":"N","aliases":["uint64"]}
|
||||
{"name":"uhugeint","category":"N","aliases":["uint128"]}
|
||||
{"name":"uinteger","category":"N","aliases":["uint32"]}
|
||||
{"name":"union","category":"C"}
|
||||
{"name":"usmallint","category":"N","aliases":["uint16"]}
|
||||
{"name":"utinyint","category":"N","aliases":["uint8"]}
|
||||
{"name":"uuid","category":"U","aliases":["guid"]}
|
||||
{"name":"varchar","category":"S","aliases":["json","bpchar","char","nvarchar","string","text"]}
|
||||
{"name":"variant","category":"U"}
|
||||
67
internal/engine/duckdb/parse.go
Normal file
67
internal/engine/duckdb/parse.go
Normal file
@@ -0,0 +1,67 @@
|
||||
package duckdb
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"io"
|
||||
|
||||
"github.com/sqlc-dev/darkwing/parser"
|
||||
|
||||
"github.com/sqlc-dev/sqlc/internal/source"
|
||||
"github.com/sqlc-dev/sqlc/internal/sql/ast"
|
||||
"github.com/sqlc-dev/sqlc/internal/sql/sqlerr"
|
||||
)
|
||||
|
||||
func NewParser() *Parser {
|
||||
return &Parser{}
|
||||
}
|
||||
|
||||
type Parser struct{}
|
||||
|
||||
// Parse converts DuckDB SQL into sqlc's AST. darkwing assigns every
|
||||
// statement a byte span and the spans tile the input — each statement
|
||||
// starts where the previous one ended — so a statement's span covers the
|
||||
// comments before it, which is where the sqlc query annotation lives.
|
||||
func (p *Parser) Parse(r io.Reader) ([]ast.Statement, error) {
|
||||
stmts, err := parser.Parse(context.Background(), r)
|
||||
if err != nil {
|
||||
var perr *parser.Error
|
||||
if errors.As(err, &perr) {
|
||||
serr := &sqlerr.Error{
|
||||
Message: err.Error(),
|
||||
Line: perr.Line,
|
||||
Column: perr.Column,
|
||||
}
|
||||
if perr.Offset >= 0 {
|
||||
serr.Location = perr.Offset
|
||||
}
|
||||
return nil, serr
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var out []ast.Statement
|
||||
for _, stmt := range stmts {
|
||||
converter := &cc{}
|
||||
node := converter.convert(stmt)
|
||||
if _, ok := node.(*ast.TODO); ok {
|
||||
continue
|
||||
}
|
||||
out = append(out, ast.Statement{
|
||||
Raw: &ast.RawStmt{
|
||||
Stmt: node,
|
||||
StmtLocation: stmt.Pos(),
|
||||
StmtLen: stmt.End() - stmt.Pos(),
|
||||
},
|
||||
})
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// https://duckdb.org/docs/stable/sql/introduction#comments
|
||||
func (p *Parser) CommentSyntax() source.CommentSyntax {
|
||||
return source.CommentSyntax{
|
||||
Dash: true, // -- comment
|
||||
SlashStar: true, // /* comment */
|
||||
}
|
||||
}
|
||||
9
internal/engine/duckdb/reserved.go
Normal file
9
internal/engine/duckdb/reserved.go
Normal file
@@ -0,0 +1,9 @@
|
||||
package duckdb
|
||||
|
||||
import "github.com/sqlc-dev/darkwing/token"
|
||||
|
||||
// IsReservedKeyword reports whether s is a reserved keyword in DuckDB's
|
||||
// grammar, per the keyword lists darkwing vendors from DuckDB.
|
||||
func (p *Parser) IsReservedKeyword(s string) bool {
|
||||
return token.Categories(s).Has(token.KeywordReserved)
|
||||
}
|
||||
23
internal/engine/duckdb/seed.go
Normal file
23
internal/engine/duckdb/seed.go
Normal file
@@ -0,0 +1,23 @@
|
||||
package duckdb
|
||||
|
||||
import (
|
||||
"embed"
|
||||
|
||||
"github.com/sqlc-dev/sqlc/internal/core"
|
||||
"github.com/sqlc-dev/sqlc/internal/core/seed"
|
||||
)
|
||||
|
||||
// The dialect directory describes DuckDB's type system. types.jsonl,
|
||||
// functions.jsonl and operators.jsonl are generated from a live DuckDB 2.0
|
||||
// CLI by goldeneye (internal/goldeneye), which also checks them against one;
|
||||
// dialect.json is authored by hand. Regenerate from internal/goldeneye with:
|
||||
//
|
||||
// DUCKDB=/path/to/duckdb go run ./cmd/goldeneye generate duckdb
|
||||
//
|
||||
//go:embed dialect
|
||||
var dialectFS embed.FS
|
||||
|
||||
// Dialect returns the catalog option that seeds DuckDB's type system.
|
||||
func Dialect() core.Option {
|
||||
return seed.Dialect(dialectFS, "dialect")
|
||||
}
|
||||
47
internal/engine/duckdb/utils.go
Normal file
47
internal/engine/duckdb/utils.go
Normal file
@@ -0,0 +1,47 @@
|
||||
package duckdb
|
||||
|
||||
import (
|
||||
"log"
|
||||
"strings"
|
||||
|
||||
dw "github.com/sqlc-dev/darkwing/ast"
|
||||
|
||||
"github.com/sqlc-dev/sqlc/internal/debug"
|
||||
"github.com/sqlc-dev/sqlc/internal/sql/ast"
|
||||
)
|
||||
|
||||
func todo(n dw.Node) *ast.TODO {
|
||||
if debug.Active {
|
||||
log.Printf("duckdb.convert: Unknown node type %T\n", n)
|
||||
}
|
||||
return &ast.TODO{}
|
||||
}
|
||||
|
||||
// identifier normalizes an identifier. DuckDB identifiers are
|
||||
// case-insensitive (though case-preserving); the catalog matches them
|
||||
// lowercased.
|
||||
func identifier(id string) string {
|
||||
return strings.ToLower(id)
|
||||
}
|
||||
|
||||
func NewIdentifier(t string) *ast.String {
|
||||
return &ast.String{Str: identifier(t)}
|
||||
}
|
||||
|
||||
// schemaName normalizes a schema qualifier. DuckDB's default "main" schema
|
||||
// maps to the catalog's default namespace, so it is treated as unqualified.
|
||||
func schemaName(s string) string {
|
||||
s = identifier(s)
|
||||
if s == "main" {
|
||||
return ""
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
func parseTableName(catalog, schema, name string) *ast.TableName {
|
||||
return &ast.TableName{
|
||||
Catalog: identifier(catalog),
|
||||
Schema: schemaName(schema),
|
||||
Name: identifier(name),
|
||||
}
|
||||
}
|
||||
16
internal/engine/googlesql/catalog.go
Normal file
16
internal/engine/googlesql/catalog.go
Normal file
@@ -0,0 +1,16 @@
|
||||
package googlesql
|
||||
|
||||
import (
|
||||
"github.com/sqlc-dev/sqlc/internal/sql/catalog"
|
||||
)
|
||||
|
||||
func NewCatalog() *catalog.Catalog {
|
||||
def := "main" // GoogleSQL has no implicit schema; use "main" as the default
|
||||
return &catalog.Catalog{
|
||||
DefaultSchema: def,
|
||||
Schemas: []*catalog.Schema{
|
||||
defaultSchema(def),
|
||||
},
|
||||
Extensions: map[string]struct{}{},
|
||||
}
|
||||
}
|
||||
977
internal/engine/googlesql/convert.go
Normal file
977
internal/engine/googlesql/convert.go
Normal file
@@ -0,0 +1,977 @@
|
||||
package googlesql
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
zjast "github.com/sqlc-dev/zetajones/ast"
|
||||
|
||||
"github.com/sqlc-dev/sqlc/internal/sql/ast"
|
||||
)
|
||||
|
||||
type cc struct {
|
||||
paramCount int
|
||||
// namedParams tracks the number assigned to each "@name" so repeated uses
|
||||
// share a single parameter.
|
||||
namedParams map[string]int
|
||||
}
|
||||
|
||||
func (c *cc) convert(node zjast.Node) ast.Node {
|
||||
switch n := node.(type) {
|
||||
case *zjast.QueryStatement:
|
||||
return c.convertQuery(n.Query)
|
||||
case *zjast.InsertStatement:
|
||||
return c.convertInsertStatement(n)
|
||||
case *zjast.UpdateStatement:
|
||||
return c.convertUpdateStatement(n)
|
||||
case *zjast.DeleteStatement:
|
||||
return c.convertDeleteStatement(n)
|
||||
case *zjast.CreateTableStatement:
|
||||
return c.convertCreateTableStatement(n)
|
||||
case *zjast.DropStatement:
|
||||
return c.convertDropStatement(n)
|
||||
case *zjast.TruncateStatement:
|
||||
return c.convertTruncateStatement(n)
|
||||
case *zjast.HintedStatement:
|
||||
if n.Statement == nil {
|
||||
return todo(n)
|
||||
}
|
||||
return c.convert(n.Statement)
|
||||
default:
|
||||
return todo(n)
|
||||
}
|
||||
}
|
||||
|
||||
func (c *cc) convertQuery(n *zjast.Query) ast.Node {
|
||||
if n == nil {
|
||||
return todo(n)
|
||||
}
|
||||
// Pipe operators (|>) have no sqlc AST equivalent.
|
||||
if len(n.PipeOperators) > 0 {
|
||||
return todo(n)
|
||||
}
|
||||
node := c.convertQueryExpr(n.QueryExpr)
|
||||
stmt, ok := node.(*ast.SelectStmt)
|
||||
if !ok {
|
||||
return node
|
||||
}
|
||||
if n.WithClause != nil {
|
||||
stmt.WithClause = c.convertWithClause(n.WithClause)
|
||||
}
|
||||
if n.OrderBy != nil {
|
||||
stmt.SortClause = c.convertOrderBy(n.OrderBy)
|
||||
}
|
||||
if n.Limit != nil {
|
||||
if n.Limit.Limit != nil {
|
||||
if _, all := n.Limit.Limit.Expr.(*zjast.LimitAll); !all {
|
||||
stmt.LimitCount = c.convertExpr(n.Limit.Limit.Expr)
|
||||
}
|
||||
}
|
||||
if n.Limit.Offset != nil {
|
||||
stmt.LimitOffset = c.convertExpr(n.Limit.Offset)
|
||||
}
|
||||
}
|
||||
return stmt
|
||||
}
|
||||
|
||||
func (c *cc) convertQueryExpr(node zjast.Node) ast.Node {
|
||||
switch n := node.(type) {
|
||||
case *zjast.Select:
|
||||
return c.convertSelect(n)
|
||||
case *zjast.SetOperation:
|
||||
return c.convertSetOperation(n)
|
||||
case *zjast.Query:
|
||||
// Parenthesized query.
|
||||
return c.convertQuery(n)
|
||||
case *zjast.AliasedQueryExpression:
|
||||
return c.convertQuery(n.Query)
|
||||
default:
|
||||
return todo(n)
|
||||
}
|
||||
}
|
||||
|
||||
func (c *cc) convertSetOperation(n *zjast.SetOperation) ast.Node {
|
||||
if len(n.Inputs) == 0 {
|
||||
return todo(n)
|
||||
}
|
||||
var entries []*zjast.SetOperationMetadata
|
||||
if n.Metadata != nil {
|
||||
entries = n.Metadata.Entries
|
||||
}
|
||||
result, ok := c.convertQueryExpr(n.Inputs[0]).(*ast.SelectStmt)
|
||||
if !ok {
|
||||
return todo(n)
|
||||
}
|
||||
for i, input := range n.Inputs[1:] {
|
||||
rarg, ok := c.convertQueryExpr(input).(*ast.SelectStmt)
|
||||
if !ok {
|
||||
return todo(n)
|
||||
}
|
||||
op := ast.Union
|
||||
all := false
|
||||
if i < len(entries) && entries[i] != nil {
|
||||
meta := entries[i]
|
||||
if meta.OpType != nil {
|
||||
switch strings.ToUpper(meta.OpType.Op) {
|
||||
case "UNION":
|
||||
op = ast.Union
|
||||
case "INTERSECT":
|
||||
op = ast.Intersect
|
||||
case "EXCEPT":
|
||||
op = ast.Except
|
||||
}
|
||||
}
|
||||
if meta.AllOrDistinct != nil {
|
||||
all = strings.ToUpper(meta.AllOrDistinct.Value) == "ALL"
|
||||
}
|
||||
}
|
||||
result = &ast.SelectStmt{
|
||||
Op: op,
|
||||
All: all,
|
||||
Larg: result,
|
||||
Rarg: rarg,
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func (c *cc) convertSelect(n *zjast.Select) *ast.SelectStmt {
|
||||
stmt := &ast.SelectStmt{}
|
||||
|
||||
if n.SelectList != nil {
|
||||
stmt.TargetList = &ast.List{}
|
||||
for _, col := range n.SelectList.Columns {
|
||||
if col == nil {
|
||||
continue
|
||||
}
|
||||
stmt.TargetList.Items = append(stmt.TargetList.Items, c.convertSelectColumn(col))
|
||||
}
|
||||
}
|
||||
|
||||
if n.From != nil {
|
||||
stmt.FromClause = &ast.List{
|
||||
Items: []ast.Node{c.convertTableExpr(n.From.TableExpression)},
|
||||
}
|
||||
}
|
||||
|
||||
if n.Where != nil {
|
||||
stmt.WhereClause = c.convertExpr(n.Where.Expr)
|
||||
}
|
||||
|
||||
if n.GroupBy != nil {
|
||||
stmt.GroupClause = &ast.List{}
|
||||
for _, item := range n.GroupBy.Items {
|
||||
if item == nil {
|
||||
continue
|
||||
}
|
||||
if item.Expr != nil {
|
||||
stmt.GroupClause.Items = append(stmt.GroupClause.Items, c.convertExpr(item.Expr))
|
||||
} else {
|
||||
// ROLLUP, CUBE, GROUPING SETS, or the empty grouping item.
|
||||
stmt.GroupClause.Items = append(stmt.GroupClause.Items, todo(item))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if n.Having != nil {
|
||||
stmt.HavingClause = c.convertExpr(n.Having.Expr)
|
||||
}
|
||||
|
||||
if n.Distinct {
|
||||
stmt.DistinctClause = &ast.List{}
|
||||
}
|
||||
|
||||
return stmt
|
||||
}
|
||||
|
||||
func (c *cc) convertSelectColumn(n *zjast.SelectColumn) *ast.ResTarget {
|
||||
res := &ast.ResTarget{
|
||||
Location: n.Pos(),
|
||||
}
|
||||
if n.Alias != nil && n.Alias.Identifier != nil {
|
||||
name := identifier(n.Alias.Identifier.Name)
|
||||
res.Name = &name
|
||||
}
|
||||
res.Val = c.convertExpr(n.Expr)
|
||||
return res
|
||||
}
|
||||
|
||||
func (c *cc) convertTableExpr(node zjast.Node) ast.Node {
|
||||
switch n := node.(type) {
|
||||
case *zjast.TablePathExpression:
|
||||
return c.convertTablePathExpression(n)
|
||||
case *zjast.TableSubquery:
|
||||
if len(n.PostfixOperators) > 0 {
|
||||
return todo(n)
|
||||
}
|
||||
return &ast.RangeSubselect{
|
||||
Lateral: n.IsLateral,
|
||||
Subquery: c.convertQuery(n.Query),
|
||||
Alias: convertAlias(n.Alias),
|
||||
}
|
||||
case *zjast.Join:
|
||||
return c.convertJoin(n)
|
||||
case *zjast.ParenthesizedJoin:
|
||||
if len(n.PostfixOperators) > 0 {
|
||||
return todo(n)
|
||||
}
|
||||
return c.convertTableExpr(n.Join)
|
||||
case *zjast.TVF:
|
||||
return c.convertTVF(n)
|
||||
default:
|
||||
return todo(n)
|
||||
}
|
||||
}
|
||||
|
||||
func (c *cc) convertTablePathExpression(n *zjast.TablePathExpression) ast.Node {
|
||||
if len(n.PostfixOperators) > 0 {
|
||||
return todo(n)
|
||||
}
|
||||
if n.UnnestExpr != nil {
|
||||
return &ast.RangeFunction{
|
||||
Functions: &ast.List{
|
||||
Items: []ast.Node{c.convertUnnestExpression(n.UnnestExpr)},
|
||||
},
|
||||
Alias: convertAlias(n.Alias),
|
||||
}
|
||||
}
|
||||
rv := parseRangeVar(n.Path)
|
||||
rv.Alias = convertAlias(n.Alias)
|
||||
return rv
|
||||
}
|
||||
|
||||
func (c *cc) convertUnnestExpression(n *zjast.UnnestExpression) *ast.FuncCall {
|
||||
fc := &ast.FuncCall{
|
||||
Func: &ast.FuncName{Name: "unnest"},
|
||||
Funcname: &ast.List{Items: []ast.Node{&ast.String{Str: "unnest"}}},
|
||||
Args: &ast.List{},
|
||||
Location: n.Pos(),
|
||||
}
|
||||
for _, e := range n.Expressions {
|
||||
if e == nil {
|
||||
continue
|
||||
}
|
||||
fc.Args.Items = append(fc.Args.Items, c.convertExpr(e.Expr))
|
||||
}
|
||||
return fc
|
||||
}
|
||||
|
||||
func (c *cc) convertTVF(n *zjast.TVF) ast.Node {
|
||||
if len(n.PostfixOperators) > 0 {
|
||||
return todo(n)
|
||||
}
|
||||
parts := pathParts(n.Name)
|
||||
if len(parts) == 0 {
|
||||
return todo(n)
|
||||
}
|
||||
fc := c.newFuncCall(parts, n.Pos())
|
||||
for _, arg := range n.Args {
|
||||
if arg == nil || arg.Expr == nil {
|
||||
continue
|
||||
}
|
||||
fc.Args.Items = append(fc.Args.Items, c.convertExpr(arg.Expr))
|
||||
}
|
||||
return &ast.RangeFunction{
|
||||
Functions: &ast.List{Items: []ast.Node{fc}},
|
||||
Alias: convertAlias(n.Alias),
|
||||
}
|
||||
}
|
||||
|
||||
func (c *cc) convertJoin(n *zjast.Join) ast.Node {
|
||||
join := &ast.JoinExpr{
|
||||
Larg: c.convertTableExpr(n.Lhs),
|
||||
Rarg: c.convertTableExpr(n.Rhs),
|
||||
IsNatural: n.Natural,
|
||||
}
|
||||
|
||||
switch strings.ToUpper(n.JoinType) {
|
||||
case "", "INNER", "CROSS", "COMMA":
|
||||
join.Jointype = ast.JoinTypeInner
|
||||
case "LEFT":
|
||||
join.Jointype = ast.JoinTypeLeft
|
||||
case "RIGHT":
|
||||
join.Jointype = ast.JoinTypeRight
|
||||
case "FULL":
|
||||
join.Jointype = ast.JoinTypeFull
|
||||
default:
|
||||
join.Jointype = ast.JoinTypeInner
|
||||
}
|
||||
|
||||
switch clause := n.OnOrUsingClause.(type) {
|
||||
case *zjast.OnClause:
|
||||
join.Quals = c.convertExpr(clause.Expr)
|
||||
case *zjast.UsingClause:
|
||||
join.UsingClause = &ast.List{}
|
||||
for _, key := range clause.Keys {
|
||||
if key == nil {
|
||||
continue
|
||||
}
|
||||
join.UsingClause.Items = append(join.UsingClause.Items, NewIdentifier(key.Name))
|
||||
}
|
||||
}
|
||||
|
||||
return join
|
||||
}
|
||||
|
||||
func (c *cc) convertWithClause(n *zjast.WithClause) *ast.WithClause {
|
||||
wc := &ast.WithClause{
|
||||
Recursive: n.Recursive,
|
||||
Ctes: &ast.List{},
|
||||
Location: n.Pos(),
|
||||
}
|
||||
for _, entry := range n.Entries {
|
||||
if entry == nil || entry.AliasedQuery == nil {
|
||||
// "name() AS GROUP ROWS" entries are not supported.
|
||||
continue
|
||||
}
|
||||
aq := entry.AliasedQuery
|
||||
cte := &ast.CommonTableExpr{
|
||||
Location: aq.Pos(),
|
||||
Ctequery: c.convertQuery(aq.Query),
|
||||
}
|
||||
if aq.Identifier != nil {
|
||||
name := identifier(aq.Identifier.Name)
|
||||
cte.Ctename = &name
|
||||
}
|
||||
wc.Ctes.Items = append(wc.Ctes.Items, cte)
|
||||
}
|
||||
return wc
|
||||
}
|
||||
|
||||
func (c *cc) convertOrderBy(n *zjast.OrderBy) *ast.List {
|
||||
list := &ast.List{}
|
||||
for _, item := range n.Items {
|
||||
if item == nil {
|
||||
continue
|
||||
}
|
||||
sortBy := &ast.SortBy{
|
||||
Node: c.convertExpr(item.Expr),
|
||||
Location: item.Pos(),
|
||||
}
|
||||
switch {
|
||||
case item.Descending:
|
||||
sortBy.SortbyDir = ast.SortByDirDesc
|
||||
case item.HasAsc:
|
||||
sortBy.SortbyDir = ast.SortByDirAsc
|
||||
default:
|
||||
sortBy.SortbyDir = ast.SortByDirDefault
|
||||
}
|
||||
if item.NullOrder != nil {
|
||||
if item.NullOrder.NullsFirst {
|
||||
sortBy.SortbyNulls = ast.SortByNullsFirst
|
||||
} else {
|
||||
sortBy.SortbyNulls = ast.SortByNullsLast
|
||||
}
|
||||
}
|
||||
list.Items = append(list.Items, sortBy)
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
func (c *cc) convertExpr(node zjast.Node) ast.Node {
|
||||
if node == nil {
|
||||
return nil
|
||||
}
|
||||
switch n := node.(type) {
|
||||
case *zjast.Identifier:
|
||||
return &ast.ColumnRef{
|
||||
Fields: &ast.List{Items: []ast.Node{NewIdentifier(n.Name)}},
|
||||
Location: n.Pos(),
|
||||
}
|
||||
case *zjast.PathExpression:
|
||||
return c.convertPathExpression(n)
|
||||
case *zjast.DotIdentifier:
|
||||
if fields, ok := columnRefFields(n); ok {
|
||||
return &ast.ColumnRef{
|
||||
Fields: &ast.List{Items: fields},
|
||||
Location: n.Pos(),
|
||||
}
|
||||
}
|
||||
return todo(n)
|
||||
case *zjast.IntLiteral:
|
||||
return c.convertIntLiteral(n)
|
||||
case *zjast.FloatLiteral:
|
||||
return &ast.A_Const{
|
||||
Val: &ast.Float{Str: n.Image},
|
||||
Location: n.Pos(),
|
||||
}
|
||||
case *zjast.StringLiteral:
|
||||
return &ast.A_Const{
|
||||
Val: &ast.String{Str: stringLiteralValue(n)},
|
||||
Location: n.Pos(),
|
||||
}
|
||||
case *zjast.BooleanLiteral:
|
||||
return &ast.A_Const{
|
||||
Val: &ast.Boolean{Boolval: n.Value},
|
||||
Location: n.Pos(),
|
||||
}
|
||||
case *zjast.NullLiteral:
|
||||
return &ast.A_Const{
|
||||
Val: &ast.Null{},
|
||||
Location: n.Pos(),
|
||||
}
|
||||
case *zjast.ParameterExpr:
|
||||
return c.convertParameterExpr(n)
|
||||
case *zjast.UnaryExpression:
|
||||
return c.convertUnaryExpression(n)
|
||||
case *zjast.BinaryExpression:
|
||||
return c.convertBinaryExpression(n)
|
||||
case *zjast.BitwiseShiftExpression:
|
||||
op := ">>"
|
||||
if n.IsLeftShift {
|
||||
op = "<<"
|
||||
}
|
||||
return &ast.A_Expr{
|
||||
Kind: ast.A_Expr_Kind_OP,
|
||||
Name: &ast.List{Items: []ast.Node{&ast.String{Str: op}}},
|
||||
Lexpr: c.convertExpr(n.Lhs),
|
||||
Rexpr: c.convertExpr(n.Rhs),
|
||||
Location: n.Pos(),
|
||||
}
|
||||
case *zjast.AndExpr:
|
||||
return c.convertBoolExpr(ast.BoolExprTypeAnd, n.Conjuncts, n.Pos())
|
||||
case *zjast.OrExpr:
|
||||
return c.convertBoolExpr(ast.BoolExprTypeOr, n.Disjuncts, n.Pos())
|
||||
case *zjast.BetweenExpression:
|
||||
return &ast.BetweenExpr{
|
||||
Expr: c.convertExpr(n.Lhs),
|
||||
Left: c.convertExpr(n.Low),
|
||||
Right: c.convertExpr(n.High),
|
||||
Not: n.IsNot,
|
||||
Location: n.Pos(),
|
||||
}
|
||||
case *zjast.InExpression:
|
||||
return c.convertInExpression(n)
|
||||
case *zjast.CaseValueExpression:
|
||||
if len(n.Arguments) == 0 {
|
||||
return todo(n)
|
||||
}
|
||||
return c.buildCaseExpr(c.convertExpr(n.Arguments[0]), n.Arguments[1:], n.Pos())
|
||||
case *zjast.CaseNoValueExpression:
|
||||
return c.buildCaseExpr(nil, n.Arguments, n.Pos())
|
||||
case *zjast.CastExpression:
|
||||
return &ast.TypeCast{
|
||||
Arg: c.convertExpr(n.Expr),
|
||||
TypeName: spelledTypeName(typeName(n.Type)),
|
||||
Location: n.Pos(),
|
||||
}
|
||||
case *zjast.ExpressionSubquery:
|
||||
return c.convertExpressionSubquery(n)
|
||||
case *zjast.FunctionCall:
|
||||
return c.convertFunctionCall(n)
|
||||
case *zjast.AnalyticFunctionCall:
|
||||
return c.convertAnalyticFunctionCall(n)
|
||||
case *zjast.Star:
|
||||
return &ast.ColumnRef{
|
||||
Fields: &ast.List{Items: []ast.Node{&ast.A_Star{}}},
|
||||
Location: n.Pos(),
|
||||
}
|
||||
case *zjast.DotStar:
|
||||
return c.convertDotStar(n)
|
||||
case *zjast.ArrayElement:
|
||||
return &ast.A_Indirection{
|
||||
Arg: c.convertExpr(n.Array),
|
||||
Indirection: &ast.List{
|
||||
Items: []ast.Node{
|
||||
&ast.A_Indices{Uidx: c.convertExpr(n.Position)},
|
||||
},
|
||||
},
|
||||
}
|
||||
case *zjast.NamedArgument:
|
||||
return c.convertExpr(n.Value)
|
||||
case *zjast.ExpressionWithAlias:
|
||||
return c.convertExpr(n.Expression)
|
||||
default:
|
||||
return todo(n)
|
||||
}
|
||||
}
|
||||
|
||||
func (c *cc) convertPathExpression(n *zjast.PathExpression) ast.Node {
|
||||
fields, ok := columnRefFields(n)
|
||||
if !ok {
|
||||
return todo(n)
|
||||
}
|
||||
return &ast.ColumnRef{
|
||||
Fields: &ast.List{Items: fields},
|
||||
Location: n.Pos(),
|
||||
}
|
||||
}
|
||||
|
||||
func (c *cc) convertIntLiteral(n *zjast.IntLiteral) ast.Node {
|
||||
// Base 0 also accepts hexadecimal literals (0x1a).
|
||||
ival, err := strconv.ParseInt(n.Image, 0, 64)
|
||||
if err != nil {
|
||||
return &ast.A_Const{
|
||||
Val: &ast.Float{Str: n.Image},
|
||||
Location: n.Pos(),
|
||||
}
|
||||
}
|
||||
return &ast.A_Const{
|
||||
Val: &ast.Integer{Ival: ival},
|
||||
Location: n.Pos(),
|
||||
}
|
||||
}
|
||||
|
||||
// convertParameterExpr converts "@name" and "?" query parameters.
|
||||
//
|
||||
// Both become ParamRef nodes. "@name" is native GoogleSQL syntax rather than
|
||||
// sqlc syntax, so nothing rewrites it before the parser runs and the numbering
|
||||
// here is what the rest of the pipeline sees: repeated uses of a name share a
|
||||
// number, and positional parameters are numbered by their 1-based position in
|
||||
// the statement.
|
||||
func (c *cc) convertParameterExpr(n *zjast.ParameterExpr) ast.Node {
|
||||
if n.Name != nil {
|
||||
number, ok := c.namedParams[n.Name.Name]
|
||||
if !ok {
|
||||
c.paramCount++
|
||||
number = c.paramCount
|
||||
if c.namedParams == nil {
|
||||
c.namedParams = map[string]int{}
|
||||
}
|
||||
c.namedParams[n.Name.Name] = number
|
||||
}
|
||||
return &ast.ParamRef{
|
||||
Number: number,
|
||||
Location: n.Pos(),
|
||||
}
|
||||
}
|
||||
c.paramCount++
|
||||
number := n.Position
|
||||
if number == 0 {
|
||||
number = c.paramCount
|
||||
}
|
||||
return &ast.ParamRef{
|
||||
Number: number,
|
||||
Location: n.Pos(),
|
||||
}
|
||||
}
|
||||
|
||||
func (c *cc) convertUnaryExpression(n *zjast.UnaryExpression) ast.Node {
|
||||
if strings.ToUpper(n.Op) == "NOT" {
|
||||
return &ast.BoolExpr{
|
||||
Boolop: ast.BoolExprTypeNot,
|
||||
Args: &ast.List{
|
||||
Items: []ast.Node{c.convertExpr(n.Operand)},
|
||||
},
|
||||
Location: n.Pos(),
|
||||
}
|
||||
}
|
||||
return &ast.A_Expr{
|
||||
Kind: ast.A_Expr_Kind_OP,
|
||||
Name: &ast.List{Items: []ast.Node{&ast.String{Str: n.Op}}},
|
||||
Rexpr: c.convertExpr(n.Operand),
|
||||
Location: n.Pos(),
|
||||
}
|
||||
}
|
||||
|
||||
func (c *cc) convertBinaryExpression(n *zjast.BinaryExpression) ast.Node {
|
||||
// "x IS NULL" and "x IS NOT NULL" become NullTest nodes.
|
||||
if strings.ToUpper(n.Op) == "IS" {
|
||||
if _, isNull := n.Right.(*zjast.NullLiteral); isNull {
|
||||
nullTest := &ast.NullTest{
|
||||
Arg: c.convertExpr(n.Left),
|
||||
Location: n.Pos(),
|
||||
}
|
||||
if n.IsNot {
|
||||
nullTest.Nulltesttype = ast.NullTestTypeIsNotNull
|
||||
} else {
|
||||
nullTest.Nulltesttype = ast.NullTestTypeIsNull
|
||||
}
|
||||
return nullTest
|
||||
}
|
||||
}
|
||||
|
||||
var expr ast.Node = &ast.A_Expr{
|
||||
Kind: ast.A_Expr_Kind_OP,
|
||||
Name: &ast.List{Items: []ast.Node{&ast.String{Str: n.Op}}},
|
||||
Lexpr: c.convertExpr(n.Left),
|
||||
Rexpr: c.convertExpr(n.Right),
|
||||
Location: n.Pos(),
|
||||
}
|
||||
if n.IsNot {
|
||||
// "a NOT LIKE b", "a IS NOT b", etc: wrap the comparison in a NOT.
|
||||
expr = &ast.BoolExpr{
|
||||
Boolop: ast.BoolExprTypeNot,
|
||||
Args: &ast.List{Items: []ast.Node{expr}},
|
||||
Location: n.Pos(),
|
||||
}
|
||||
}
|
||||
return expr
|
||||
}
|
||||
|
||||
func (c *cc) convertBoolExpr(op ast.BoolExprType, operands []zjast.Node, loc int) *ast.BoolExpr {
|
||||
expr := &ast.BoolExpr{
|
||||
Boolop: op,
|
||||
Args: &ast.List{},
|
||||
Location: loc,
|
||||
}
|
||||
for _, operand := range operands {
|
||||
expr.Args.Items = append(expr.Args.Items, c.convertExpr(operand))
|
||||
}
|
||||
return expr
|
||||
}
|
||||
|
||||
func (c *cc) convertInExpression(n *zjast.InExpression) ast.Node {
|
||||
in := &ast.In{
|
||||
Expr: c.convertExpr(n.Lhs),
|
||||
Not: n.IsNot,
|
||||
Location: n.Pos(),
|
||||
}
|
||||
if n.List != nil {
|
||||
for _, expr := range n.List.Exprs {
|
||||
in.List = append(in.List, c.convertExpr(expr))
|
||||
}
|
||||
}
|
||||
if n.UnnestExpr != nil {
|
||||
in.List = append(in.List, c.convertUnnestExpression(n.UnnestExpr))
|
||||
}
|
||||
if n.Query != nil {
|
||||
in.Sel = c.convertQuery(n.Query)
|
||||
}
|
||||
return in
|
||||
}
|
||||
|
||||
// buildCaseExpr builds a CaseExpr from the alternating WHEN/THEN expression
|
||||
// pairs (and optional trailing ELSE expression) of a zetajones CASE node.
|
||||
func (c *cc) buildCaseExpr(arg ast.Node, rest []zjast.Node, loc int) *ast.CaseExpr {
|
||||
caseExpr := &ast.CaseExpr{
|
||||
Arg: arg,
|
||||
Args: &ast.List{},
|
||||
Location: loc,
|
||||
}
|
||||
i := 0
|
||||
for ; i+1 < len(rest); i += 2 {
|
||||
caseExpr.Args.Items = append(caseExpr.Args.Items, &ast.CaseWhen{
|
||||
Expr: c.convertExpr(rest[i]),
|
||||
Result: c.convertExpr(rest[i+1]),
|
||||
})
|
||||
}
|
||||
if i < len(rest) {
|
||||
caseExpr.Defresult = c.convertExpr(rest[i])
|
||||
}
|
||||
return caseExpr
|
||||
}
|
||||
|
||||
func (c *cc) convertExpressionSubquery(n *zjast.ExpressionSubquery) *ast.SubLink {
|
||||
subLink := &ast.SubLink{
|
||||
Subselect: c.convertQuery(n.Query),
|
||||
Location: n.Pos(),
|
||||
}
|
||||
switch strings.ToUpper(n.Modifier) {
|
||||
case "EXISTS":
|
||||
subLink.SubLinkType = ast.EXISTS_SUBLINK
|
||||
case "ARRAY":
|
||||
subLink.SubLinkType = ast.ARRAY_SUBLINK
|
||||
default:
|
||||
subLink.SubLinkType = ast.EXPR_SUBLINK
|
||||
}
|
||||
return subLink
|
||||
}
|
||||
|
||||
// newFuncCall builds a FuncCall from a dotted function path. GoogleSQL
|
||||
// function names are case-insensitive, so they are lowercased.
|
||||
func (c *cc) newFuncCall(parts []string, loc int) *ast.FuncCall {
|
||||
name := strings.ToLower(parts[len(parts)-1])
|
||||
var schema string
|
||||
if len(parts) > 1 {
|
||||
schema = strings.ToLower(strings.Join(parts[:len(parts)-1], "."))
|
||||
}
|
||||
items := []ast.Node{}
|
||||
if schema != "" {
|
||||
items = append(items, &ast.String{Str: schema})
|
||||
}
|
||||
items = append(items, &ast.String{Str: name})
|
||||
return &ast.FuncCall{
|
||||
Func: &ast.FuncName{Schema: schema, Name: name},
|
||||
Funcname: &ast.List{Items: items},
|
||||
Args: &ast.List{},
|
||||
Location: loc,
|
||||
}
|
||||
}
|
||||
|
||||
func (c *cc) convertFunctionCall(n *zjast.FunctionCall) ast.Node {
|
||||
// Chained calls ("expr.method(...)") have no sqlc AST equivalent.
|
||||
if n.IsChained {
|
||||
return todo(n)
|
||||
}
|
||||
parts := pathParts(n.Function)
|
||||
if len(parts) == 0 {
|
||||
return todo(n)
|
||||
}
|
||||
fc := c.newFuncCall(parts, n.Pos())
|
||||
fc.AggDistinct = n.Distinct
|
||||
for _, arg := range n.Args {
|
||||
if _, ok := arg.(*zjast.Star); ok {
|
||||
fc.AggStar = true
|
||||
continue
|
||||
}
|
||||
fc.Args.Items = append(fc.Args.Items, c.convertExpr(arg))
|
||||
}
|
||||
if n.OrderBy != nil {
|
||||
fc.AggOrder = c.convertOrderBy(n.OrderBy)
|
||||
}
|
||||
return fc
|
||||
}
|
||||
|
||||
func (c *cc) convertAnalyticFunctionCall(n *zjast.AnalyticFunctionCall) ast.Node {
|
||||
base := c.convertExpr(n.Expr)
|
||||
fc, ok := base.(*ast.FuncCall)
|
||||
if !ok {
|
||||
return base
|
||||
}
|
||||
over := &ast.WindowDef{Location: n.Pos()}
|
||||
if spec := n.WindowSpec; spec != nil {
|
||||
if spec.Name != nil {
|
||||
name := identifier(spec.Name.Name)
|
||||
over.Name = &name
|
||||
}
|
||||
if spec.PartitionBy != nil {
|
||||
over.PartitionClause = &ast.List{}
|
||||
for _, expr := range spec.PartitionBy.Expressions {
|
||||
over.PartitionClause.Items = append(over.PartitionClause.Items, c.convertExpr(expr))
|
||||
}
|
||||
}
|
||||
if spec.OrderBy != nil {
|
||||
over.OrderClause = c.convertOrderBy(spec.OrderBy)
|
||||
}
|
||||
}
|
||||
fc.Over = over
|
||||
return fc
|
||||
}
|
||||
|
||||
func (c *cc) convertDotStar(n *zjast.DotStar) ast.Node {
|
||||
fields, ok := columnRefFields(n.Expr)
|
||||
if !ok {
|
||||
return todo(n)
|
||||
}
|
||||
fields = append(fields, &ast.A_Star{})
|
||||
return &ast.ColumnRef{
|
||||
Fields: &ast.List{Items: fields},
|
||||
Location: n.Pos(),
|
||||
}
|
||||
}
|
||||
|
||||
// targetPath extracts the table path of an INSERT/UPDATE/DELETE target.
|
||||
func targetPath(node zjast.Node) (*zjast.PathExpression, bool) {
|
||||
path, ok := node.(*zjast.PathExpression)
|
||||
return path, ok && path != nil
|
||||
}
|
||||
|
||||
func (c *cc) convertInsertStatement(n *zjast.InsertStatement) ast.Node {
|
||||
path, ok := targetPath(n.Target)
|
||||
if !ok {
|
||||
return todo(n)
|
||||
}
|
||||
stmt := &ast.InsertStmt{
|
||||
Relation: parseRangeVar(path),
|
||||
}
|
||||
|
||||
if n.Columns != nil {
|
||||
stmt.Cols = &ast.List{}
|
||||
for _, col := range n.Columns.Identifiers {
|
||||
if col == nil {
|
||||
continue
|
||||
}
|
||||
name := identifier(col.Name)
|
||||
stmt.Cols.Items = append(stmt.Cols.Items, &ast.ResTarget{
|
||||
Name: &name,
|
||||
Location: col.Pos(),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
switch {
|
||||
case n.Rows != nil:
|
||||
selectStmt := &ast.SelectStmt{
|
||||
ValuesLists: &ast.List{},
|
||||
}
|
||||
for _, row := range n.Rows.Rows {
|
||||
if row == nil {
|
||||
continue
|
||||
}
|
||||
rowList := &ast.List{}
|
||||
for _, val := range row.Values {
|
||||
rowList.Items = append(rowList.Items, c.convertExpr(val))
|
||||
}
|
||||
selectStmt.ValuesLists.Items = append(selectStmt.ValuesLists.Items, rowList)
|
||||
}
|
||||
stmt.SelectStmt = selectStmt
|
||||
case n.Query != nil:
|
||||
stmt.SelectStmt = c.convertQuery(n.Query)
|
||||
}
|
||||
|
||||
if n.Returning != nil {
|
||||
stmt.ReturningList = c.convertReturningClause(n.Returning)
|
||||
}
|
||||
|
||||
return stmt
|
||||
}
|
||||
|
||||
// convertReturningClause converts a "THEN RETURN" clause to a returning list.
|
||||
func (c *cc) convertReturningClause(n *zjast.ReturningClause) *ast.List {
|
||||
list := &ast.List{}
|
||||
if n.SelectList != nil {
|
||||
for _, col := range n.SelectList.Columns {
|
||||
if col == nil {
|
||||
continue
|
||||
}
|
||||
list.Items = append(list.Items, c.convertSelectColumn(col))
|
||||
}
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
func (c *cc) convertUpdateStatement(n *zjast.UpdateStatement) ast.Node {
|
||||
path, ok := targetPath(n.Target)
|
||||
if !ok {
|
||||
return todo(n)
|
||||
}
|
||||
rv := parseRangeVar(path)
|
||||
rv.Alias = convertAlias(n.Alias)
|
||||
stmt := &ast.UpdateStmt{
|
||||
Relations: &ast.List{Items: []ast.Node{rv}},
|
||||
TargetList: &ast.List{},
|
||||
}
|
||||
|
||||
if n.UpdateItemList != nil {
|
||||
for _, item := range n.UpdateItemList.Items {
|
||||
if item == nil || item.SetValue == nil {
|
||||
// Nested INSERT/UPDATE/DELETE update items are unsupported.
|
||||
continue
|
||||
}
|
||||
stmt.TargetList.Items = append(stmt.TargetList.Items, c.convertUpdateSetValue(item.SetValue))
|
||||
}
|
||||
}
|
||||
|
||||
if n.From != nil {
|
||||
stmt.FromClause = &ast.List{
|
||||
Items: []ast.Node{c.convertTableExpr(n.From.TableExpression)},
|
||||
}
|
||||
}
|
||||
|
||||
if n.Where != nil {
|
||||
stmt.WhereClause = c.convertExpr(whereExpr(n.Where))
|
||||
}
|
||||
|
||||
if n.Returning != nil {
|
||||
stmt.ReturningList = c.convertReturningClause(n.Returning)
|
||||
}
|
||||
|
||||
return stmt
|
||||
}
|
||||
|
||||
func (c *cc) convertUpdateSetValue(n *zjast.UpdateSetValue) *ast.ResTarget {
|
||||
res := &ast.ResTarget{
|
||||
Val: c.convertExpr(n.Value),
|
||||
Location: n.Pos(),
|
||||
}
|
||||
if path, ok := n.Path.(*zjast.PathExpression); ok {
|
||||
if parts := pathParts(path); len(parts) > 0 {
|
||||
name := identifier(parts[len(parts)-1])
|
||||
res.Name = &name
|
||||
}
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
func (c *cc) convertDeleteStatement(n *zjast.DeleteStatement) ast.Node {
|
||||
path, ok := targetPath(n.Target)
|
||||
if !ok {
|
||||
return todo(n)
|
||||
}
|
||||
rv := parseRangeVar(path)
|
||||
rv.Alias = convertAlias(n.Alias)
|
||||
stmt := &ast.DeleteStmt{
|
||||
Relations: &ast.List{Items: []ast.Node{rv}},
|
||||
}
|
||||
|
||||
if n.Where != nil {
|
||||
stmt.WhereClause = c.convertExpr(whereExpr(n.Where))
|
||||
}
|
||||
|
||||
if n.Returning != nil {
|
||||
stmt.ReturningList = c.convertReturningClause(n.Returning)
|
||||
}
|
||||
|
||||
return stmt
|
||||
}
|
||||
|
||||
func (c *cc) convertCreateTableStatement(n *zjast.CreateTableStatement) ast.Node {
|
||||
stmt := &ast.CreateTableStmt{
|
||||
Name: parseTableName(n.Name),
|
||||
IfNotExists: n.IsIfNotExists,
|
||||
}
|
||||
if n.TableElementList != nil {
|
||||
for _, elem := range n.TableElementList.Elements {
|
||||
col, ok := elem.(*zjast.ColumnDefinition)
|
||||
if !ok {
|
||||
// Table-level PRIMARY KEY, FOREIGN KEY, and CHECK
|
||||
// constraints are skipped.
|
||||
continue
|
||||
}
|
||||
stmt.Cols = append(stmt.Cols, c.convertColumnDefinition(col))
|
||||
}
|
||||
}
|
||||
return stmt
|
||||
}
|
||||
|
||||
func (c *cc) convertColumnDefinition(n *zjast.ColumnDefinition) *ast.ColumnDef {
|
||||
col := &ast.ColumnDef{
|
||||
Location: n.Pos(),
|
||||
TypeName: spelledTypeName(columnSchemaTypeName(n.Schema)),
|
||||
}
|
||||
if n.Name != nil {
|
||||
col.Colname = identifier(n.Name.Name)
|
||||
}
|
||||
|
||||
if attrs := columnAttributes(n.Schema); attrs != nil {
|
||||
for _, attr := range attrs.Attributes {
|
||||
switch attr.(type) {
|
||||
case *zjast.NotNullColumnAttribute:
|
||||
col.IsNotNull = true
|
||||
case *zjast.PrimaryKeyColumnAttribute:
|
||||
col.PrimaryKey = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if simple, ok := n.Schema.(*zjast.SimpleColumnSchema); ok {
|
||||
if simple.DefaultExpression != nil {
|
||||
col.RawDefault = c.convertExpr(simple.DefaultExpression)
|
||||
}
|
||||
}
|
||||
|
||||
return col
|
||||
}
|
||||
|
||||
func (c *cc) convertDropStatement(n *zjast.DropStatement) ast.Node {
|
||||
// Only DROP TABLE maps onto the sqlc AST; other object kinds (views,
|
||||
// functions, schemas, ...) fall through to TODO.
|
||||
if strings.EqualFold(n.ObjectKind, "TABLE") && n.Path != nil {
|
||||
return &ast.DropTableStmt{
|
||||
IfExists: n.IsIfExists,
|
||||
Tables: []*ast.TableName{parseTableName(n.Path)},
|
||||
}
|
||||
}
|
||||
return todo(n)
|
||||
}
|
||||
|
||||
func (c *cc) convertTruncateStatement(n *zjast.TruncateStatement) ast.Node {
|
||||
if n.Target == nil {
|
||||
return todo(n)
|
||||
}
|
||||
return &ast.TruncateStmt{
|
||||
Relations: &ast.List{Items: []ast.Node{parseRangeVar(n.Target)}},
|
||||
}
|
||||
}
|
||||
|
||||
// spelledTypeName is a type name the core reads from its spelling, whose
|
||||
// name is the family the spelling applies: string for string(10), array
|
||||
// for array(int64).
|
||||
func spelledTypeName(spelling string) *ast.TypeName {
|
||||
name := spelling
|
||||
if i := strings.IndexByte(name, '('); i >= 0 {
|
||||
name = name[:i]
|
||||
}
|
||||
return &ast.TypeName{Name: name, Canonical: spelling}
|
||||
}
|
||||
15
internal/engine/googlesql/dialect/dialect.json
Normal file
15
internal/engine/googlesql/dialect/dialect.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"dialect": "googlesql",
|
||||
"const": {
|
||||
"integer": "int64",
|
||||
"float": "float64",
|
||||
"string": "string",
|
||||
"bool": "bool"
|
||||
},
|
||||
"bool": "bool",
|
||||
"comparison": ["=", "<>", "!=", "<", "<=", ">", ">="],
|
||||
"comparison_categories": "BNSDTU",
|
||||
"arithmetic": ["+", "-", "*", "/"],
|
||||
"arithmetic_categories": "N",
|
||||
"idents": ["max"]
|
||||
}
|
||||
1
internal/engine/googlesql/dialect/functions.jsonl
Normal file
1
internal/engine/googlesql/dialect/functions.jsonl
Normal file
@@ -0,0 +1 @@
|
||||
{"name": "count", "kind": "a", "returns": "int64"}
|
||||
1
internal/engine/googlesql/dialect/operators.jsonl
Normal file
1
internal/engine/googlesql/dialect/operators.jsonl
Normal file
@@ -0,0 +1 @@
|
||||
{"name": "||", "left": "string", "right": "string", "result": "string"}
|
||||
98
internal/engine/googlesql/dialect/relations.jsonl
Normal file
98
internal/engine/googlesql/dialect/relations.jsonl
Normal file
@@ -0,0 +1,98 @@
|
||||
{"schema":"INFORMATION_SCHEMA","name":"CHANGE_STREAMS","kind":"v","columns":[{"name":"CHANGE_STREAM_CATALOG","type":"string(max)","not_null":true},{"name":"CHANGE_STREAM_SCHEMA","type":"string(max)","not_null":true},{"name":"CHANGE_STREAM_NAME","type":"string(max)","not_null":true},{"name":"ALL","type":"bool","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"CHANGE_STREAM_COLUMNS","kind":"v","columns":[{"name":"CHANGE_STREAM_CATALOG","type":"string(max)","not_null":true},{"name":"CHANGE_STREAM_SCHEMA","type":"string(max)","not_null":true},{"name":"CHANGE_STREAM_NAME","type":"string(max)","not_null":true},{"name":"TABLE_CATALOG","type":"string(max)","not_null":true},{"name":"TABLE_SCHEMA","type":"string(max)","not_null":true},{"name":"TABLE_NAME","type":"string(max)","not_null":true},{"name":"COLUMN_NAME","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"CHANGE_STREAM_OPTIONS","kind":"v","columns":[{"name":"CHANGE_STREAM_CATALOG","type":"string(max)","not_null":true},{"name":"CHANGE_STREAM_SCHEMA","type":"string(max)","not_null":true},{"name":"CHANGE_STREAM_NAME","type":"string(max)","not_null":true},{"name":"OPTION_NAME","type":"string(max)","not_null":true},{"name":"OPTION_TYPE","type":"string(max)","not_null":true},{"name":"OPTION_VALUE","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"CHANGE_STREAM_PRIVILEGES","kind":"v","columns":[{"name":"CHANGE_STREAM_CATALOG","type":"string(max)","not_null":true},{"name":"CHANGE_STREAM_SCHEMA","type":"string(max)","not_null":true},{"name":"CHANGE_STREAM_NAME","type":"string(max)","not_null":true},{"name":"PRIVILEGE_TYPE","type":"string(max)","not_null":true},{"name":"GRANTEE","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"CHANGE_STREAM_TABLES","kind":"v","columns":[{"name":"CHANGE_STREAM_CATALOG","type":"string(max)","not_null":true},{"name":"CHANGE_STREAM_SCHEMA","type":"string(max)","not_null":true},{"name":"CHANGE_STREAM_NAME","type":"string(max)","not_null":true},{"name":"TABLE_CATALOG","type":"string(max)","not_null":true},{"name":"TABLE_SCHEMA","type":"string(max)","not_null":true},{"name":"TABLE_NAME","type":"string(max)","not_null":true},{"name":"ALL_COLUMNS","type":"bool","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"CHECK_CONSTRAINTS","kind":"v","columns":[{"name":"CONSTRAINT_CATALOG","type":"string(max)","not_null":true},{"name":"CONSTRAINT_SCHEMA","type":"string(max)","not_null":true},{"name":"CONSTRAINT_NAME","type":"string(max)","not_null":true},{"name":"CHECK_CLAUSE","type":"string(max)","not_null":true},{"name":"SPANNER_STATE","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"COLUMNS","kind":"v","columns":[{"name":"TABLE_CATALOG","type":"string(max)","not_null":true},{"name":"TABLE_SCHEMA","type":"string(max)","not_null":true},{"name":"TABLE_NAME","type":"string(max)","not_null":true},{"name":"COLUMN_NAME","type":"string(max)","not_null":true},{"name":"ORDINAL_POSITION","type":"int64","not_null":true},{"name":"COLUMN_DEFAULT","type":"string(max)"},{"name":"DATA_TYPE","type":"string(max)"},{"name":"IS_NULLABLE","type":"string(max)"},{"name":"SPANNER_TYPE","type":"string(max)"},{"name":"IS_GENERATED","type":"string(max)","not_null":true},{"name":"GENERATION_EXPRESSION","type":"string(max)"},{"name":"IS_STORED","type":"string(max)"},{"name":"IS_HIDDEN","type":"bool","not_null":true},{"name":"SPANNER_STATE","type":"string(max)"},{"name":"IS_IDENTITY","type":"string(max)"},{"name":"IDENTITY_GENERATION","type":"string(max)"},{"name":"IDENTITY_KIND","type":"string(max)"},{"name":"IDENTITY_START_WITH_COUNTER","type":"string(max)"},{"name":"IDENTITY_SKIP_RANGE_MIN","type":"string(max)"},{"name":"IDENTITY_SKIP_RANGE_MAX","type":"string(max)"},{"name":"ON_UPDATE_EXPRESSION","type":"string(max)"}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"COLUMN_COLUMN_USAGE","kind":"v","columns":[{"name":"TABLE_CATALOG","type":"string(max)","not_null":true},{"name":"TABLE_SCHEMA","type":"string(max)","not_null":true},{"name":"TABLE_NAME","type":"string(max)","not_null":true},{"name":"COLUMN_NAME","type":"string(max)","not_null":true},{"name":"DEPENDENT_COLUMN","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"COLUMN_OPTIONS","kind":"v","columns":[{"name":"TABLE_CATALOG","type":"string(max)","not_null":true},{"name":"TABLE_SCHEMA","type":"string(max)","not_null":true},{"name":"TABLE_NAME","type":"string(max)","not_null":true},{"name":"COLUMN_NAME","type":"string(max)","not_null":true},{"name":"OPTION_NAME","type":"string(max)","not_null":true},{"name":"OPTION_TYPE","type":"string(max)","not_null":true},{"name":"OPTION_VALUE","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"COLUMN_PRIVILEGES","kind":"v","columns":[{"name":"TABLE_CATALOG","type":"string(max)","not_null":true},{"name":"TABLE_SCHEMA","type":"string(max)","not_null":true},{"name":"TABLE_NAME","type":"string(max)","not_null":true},{"name":"COLUMN_NAME","type":"string(max)","not_null":true},{"name":"PRIVILEGE_TYPE","type":"string(max)","not_null":true},{"name":"GRANTEE","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"CONSTRAINT_COLUMN_USAGE","kind":"v","columns":[{"name":"TABLE_CATALOG","type":"string(max)","not_null":true},{"name":"TABLE_SCHEMA","type":"string(max)","not_null":true},{"name":"TABLE_NAME","type":"string(max)","not_null":true},{"name":"COLUMN_NAME","type":"string(max)","not_null":true},{"name":"CONSTRAINT_CATALOG","type":"string(max)","not_null":true},{"name":"CONSTRAINT_SCHEMA","type":"string(max)","not_null":true},{"name":"CONSTRAINT_NAME","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"CONSTRAINT_TABLE_USAGE","kind":"v","columns":[{"name":"TABLE_CATALOG","type":"string(max)","not_null":true},{"name":"TABLE_SCHEMA","type":"string(max)","not_null":true},{"name":"TABLE_NAME","type":"string(max)","not_null":true},{"name":"CONSTRAINT_CATALOG","type":"string(max)","not_null":true},{"name":"CONSTRAINT_SCHEMA","type":"string(max)","not_null":true},{"name":"CONSTRAINT_NAME","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"DATABASE_OPTIONS","kind":"v","columns":[{"name":"CATALOG_NAME","type":"string(max)","not_null":true},{"name":"SCHEMA_NAME","type":"string(max)","not_null":true},{"name":"OPTION_NAME","type":"string(max)","not_null":true},{"name":"OPTION_TYPE","type":"string(max)","not_null":true},{"name":"OPTION_VALUE","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"INDEXES","kind":"v","columns":[{"name":"TABLE_CATALOG","type":"string(max)","not_null":true},{"name":"TABLE_SCHEMA","type":"string(max)","not_null":true},{"name":"TABLE_NAME","type":"string(max)","not_null":true},{"name":"INDEX_NAME","type":"string(max)","not_null":true},{"name":"INDEX_TYPE","type":"string(max)","not_null":true},{"name":"PARENT_TABLE_NAME","type":"string(max)","not_null":true},{"name":"IS_UNIQUE","type":"bool","not_null":true},{"name":"IS_NULL_FILTERED","type":"bool","not_null":true},{"name":"INDEX_STATE","type":"string(100)","not_null":true},{"name":"FILTER","type":"string(max)"},{"name":"SPANNER_IS_MANAGED","type":"bool","not_null":true},{"name":"SEARCH_PARTITION_BY","type":"string(max)","array":true},{"name":"SEARCH_ORDER_BY","type":"string(max)","array":true},{"name":"SEARCH_UNNEST","type":"string(max)","array":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"INDEX_COLUMNS","kind":"v","columns":[{"name":"TABLE_CATALOG","type":"string(max)","not_null":true},{"name":"TABLE_SCHEMA","type":"string(max)","not_null":true},{"name":"TABLE_NAME","type":"string(max)","not_null":true},{"name":"INDEX_NAME","type":"string(max)","not_null":true},{"name":"INDEX_TYPE","type":"string(max)","not_null":true},{"name":"COLUMN_NAME","type":"string(max)","not_null":true},{"name":"ORDINAL_POSITION","type":"int64"},{"name":"COLUMN_ORDERING","type":"string(max)"},{"name":"IS_NULLABLE","type":"string(max)"},{"name":"SPANNER_TYPE","type":"string(max)"},{"name":"EXPRESSION","type":"string(max)"}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"INDEX_OPTIONS","kind":"v","columns":[{"name":"TABLE_CATALOG","type":"string(max)","not_null":true},{"name":"TABLE_SCHEMA","type":"string(max)","not_null":true},{"name":"TABLE_NAME","type":"string(max)","not_null":true},{"name":"INDEX_NAME","type":"string(max)","not_null":true},{"name":"INDEX_TYPE","type":"string(max)","not_null":true},{"name":"OPTION_NAME","type":"string(max)","not_null":true},{"name":"OPTION_TYPE","type":"string(max)","not_null":true},{"name":"OPTION_VALUE","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"KEY_COLUMN_USAGE","kind":"v","columns":[{"name":"CONSTRAINT_CATALOG","type":"string(max)","not_null":true},{"name":"CONSTRAINT_SCHEMA","type":"string(max)","not_null":true},{"name":"CONSTRAINT_NAME","type":"string(max)","not_null":true},{"name":"TABLE_CATALOG","type":"string(max)","not_null":true},{"name":"TABLE_SCHEMA","type":"string(max)","not_null":true},{"name":"TABLE_NAME","type":"string(max)","not_null":true},{"name":"COLUMN_NAME","type":"string(max)","not_null":true},{"name":"ORDINAL_POSITION","type":"int64","not_null":true},{"name":"POSITION_IN_UNIQUE_CONSTRAINT","type":"int64"}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"LOCALITY_GROUP_OPTIONS","kind":"v","columns":[{"name":"LOCALITY_GROUP_NAME","type":"string(max)","not_null":true},{"name":"OPTION_NAME","type":"string(max)","not_null":true},{"name":"OPTION_VALUE","type":"string(max)"}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"MODELS","kind":"v","columns":[{"name":"MODEL_CATALOG","type":"string(max)","not_null":true},{"name":"MODEL_SCHEMA","type":"string(max)","not_null":true},{"name":"MODEL_NAME","type":"string(max)","not_null":true},{"name":"IS_REMOTE","type":"bool","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"MODEL_COLUMNS","kind":"v","columns":[{"name":"MODEL_CATALOG","type":"string(max)","not_null":true},{"name":"MODEL_SCHEMA","type":"string(max)","not_null":true},{"name":"MODEL_NAME","type":"string(max)","not_null":true},{"name":"COLUMN_KIND","type":"string(max)","not_null":true},{"name":"COLUMN_NAME","type":"string(max)","not_null":true},{"name":"ORDINAL_POSITION","type":"int64","not_null":true},{"name":"DATA_TYPE","type":"string(max)","not_null":true},{"name":"IS_EXPLICIT","type":"bool","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"MODEL_COLUMN_OPTIONS","kind":"v","columns":[{"name":"MODEL_CATALOG","type":"string(max)","not_null":true},{"name":"MODEL_SCHEMA","type":"string(max)","not_null":true},{"name":"MODEL_NAME","type":"string(max)","not_null":true},{"name":"COLUMN_KIND","type":"string(max)","not_null":true},{"name":"COLUMN_NAME","type":"string(max)","not_null":true},{"name":"OPTION_NAME","type":"string(max)","not_null":true},{"name":"OPTION_TYPE","type":"string(max)","not_null":true},{"name":"OPTION_VALUE","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"MODEL_OPTIONS","kind":"v","columns":[{"name":"MODEL_CATALOG","type":"string(max)","not_null":true},{"name":"MODEL_SCHEMA","type":"string(max)","not_null":true},{"name":"MODEL_NAME","type":"string(max)","not_null":true},{"name":"OPTION_NAME","type":"string(max)","not_null":true},{"name":"OPTION_TYPE","type":"string(max)","not_null":true},{"name":"OPTION_VALUE","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"MODEL_PRIVILEGES","kind":"v","columns":[{"name":"MODEL_CATALOG","type":"string(max)","not_null":true},{"name":"MODEL_SCHEMA","type":"string(max)","not_null":true},{"name":"MODEL_NAME","type":"string(max)","not_null":true},{"name":"PRIVILEGE_TYPE","type":"string(max)","not_null":true},{"name":"GRANTEE","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"PARAMETERS","kind":"v","columns":[{"name":"SPECIFIC_CATALOG","type":"string(max)","not_null":true},{"name":"SPECIFIC_SCHEMA","type":"string(max)","not_null":true},{"name":"SPECIFIC_NAME","type":"string(max)","not_null":true},{"name":"ORDINAL_POSITION","type":"int64","not_null":true},{"name":"PARAMETER_NAME","type":"string(max)","not_null":true},{"name":"DATA_TYPE","type":"string(max)","not_null":true},{"name":"PARAMETER_DEFAULT","type":"string(max)"},{"name":"SPANNER_TYPE","type":"string(max)"}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"PLACEMENTS","kind":"v","columns":[{"name":"PLACEMENT_NAME","type":"string(max)","not_null":true},{"name":"IS_DEFAULT","type":"bool","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"PLACEMENT_OPTIONS","kind":"v","columns":[{"name":"PLACEMENT_NAME","type":"string(max)","not_null":true},{"name":"OPTION_NAME","type":"string(max)","not_null":true},{"name":"OPTION_TYPE","type":"string(max)","not_null":true},{"name":"OPTION_VALUE","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"PROPERTY_GRAPHS","kind":"v","columns":[{"name":"PROPERTY_GRAPH_CATALOG","type":"string(max)","not_null":true},{"name":"PROPERTY_GRAPH_SCHEMA","type":"string(max)","not_null":true},{"name":"PROPERTY_GRAPH_NAME","type":"string(max)","not_null":true},{"name":"PROPERTY_GRAPH_METADATA_JSON","type":"json"}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"REFERENTIAL_CONSTRAINTS","kind":"v","columns":[{"name":"CONSTRAINT_CATALOG","type":"string(max)","not_null":true},{"name":"CONSTRAINT_SCHEMA","type":"string(max)","not_null":true},{"name":"CONSTRAINT_NAME","type":"string(max)","not_null":true},{"name":"UNIQUE_CONSTRAINT_CATALOG","type":"string(max)"},{"name":"UNIQUE_CONSTRAINT_SCHEMA","type":"string(max)"},{"name":"UNIQUE_CONSTRAINT_NAME","type":"string(max)"},{"name":"MATCH_OPTION","type":"string(max)","not_null":true},{"name":"UPDATE_RULE","type":"string(max)","not_null":true},{"name":"DELETE_RULE","type":"string(max)","not_null":true},{"name":"SPANNER_STATE","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"ROLES","kind":"v","columns":[{"name":"ROLE_NAME","type":"string(max)","not_null":true},{"name":"IS_SYSTEM","type":"bool","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"ROLE_CHANGE_STREAM_GRANTS","kind":"v","columns":[{"name":"CHANGE_STREAM_CATALOG","type":"string(max)","not_null":true},{"name":"CHANGE_STREAM_SCHEMA","type":"string(max)","not_null":true},{"name":"CHANGE_STREAM_NAME","type":"string(max)","not_null":true},{"name":"PRIVILEGE_TYPE","type":"string(max)","not_null":true},{"name":"GRANTEE","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"ROLE_COLUMN_GRANTS","kind":"v","columns":[{"name":"TABLE_CATALOG","type":"string(max)","not_null":true},{"name":"TABLE_SCHEMA","type":"string(max)","not_null":true},{"name":"TABLE_NAME","type":"string(max)","not_null":true},{"name":"COLUMN_NAME","type":"string(max)","not_null":true},{"name":"PRIVILEGE_TYPE","type":"string(max)","not_null":true},{"name":"GRANTEE","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"ROLE_GRANTEES","kind":"v","columns":[{"name":"ROLE_NAME","type":"string(max)","not_null":true},{"name":"GRANTEE","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"ROLE_MODEL_GRANTS","kind":"v","columns":[{"name":"MODEL_CATALOG","type":"string(max)","not_null":true},{"name":"MODEL_SCHEMA","type":"string(max)","not_null":true},{"name":"MODEL_NAME","type":"string(max)","not_null":true},{"name":"PRIVILEGE_TYPE","type":"string(max)","not_null":true},{"name":"GRANTEE","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"ROLE_ROUTINE_GRANTS","kind":"v","columns":[{"name":"SPECIFIC_CATALOG","type":"string(max)","not_null":true},{"name":"SPECIFIC_SCHEMA","type":"string(max)","not_null":true},{"name":"SPECIFIC_NAME","type":"string(max)","not_null":true},{"name":"PRIVILEGE_TYPE","type":"string(max)","not_null":true},{"name":"GRANTEE","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"ROLE_TABLE_GRANTS","kind":"v","columns":[{"name":"TABLE_CATALOG","type":"string(max)","not_null":true},{"name":"TABLE_SCHEMA","type":"string(max)","not_null":true},{"name":"TABLE_NAME","type":"string(max)","not_null":true},{"name":"PRIVILEGE_TYPE","type":"string(max)","not_null":true},{"name":"GRANTEE","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"ROUTINES","kind":"v","columns":[{"name":"SPECIFIC_CATALOG","type":"string(max)","not_null":true},{"name":"SPECIFIC_SCHEMA","type":"string(max)","not_null":true},{"name":"SPECIFIC_NAME","type":"string(max)","not_null":true},{"name":"ROUTINE_CATALOG","type":"string(max)","not_null":true},{"name":"ROUTINE_SCHEMA","type":"string(max)","not_null":true},{"name":"ROUTINE_NAME","type":"string(max)","not_null":true},{"name":"ROUTINE_TYPE","type":"string(max)","not_null":true},{"name":"DATA_TYPE","type":"string(max)","not_null":true},{"name":"ROUTINE_BODY","type":"string(max)","not_null":true},{"name":"ROUTINE_DEFINITION","type":"string(max)","not_null":true},{"name":"SECURITY_TYPE","type":"string(max)","not_null":true},{"name":"SPANNER_TYPE","type":"string(max)"}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"ROUTINE_OPTIONS","kind":"v","columns":[{"name":"SPECIFIC_CATALOG","type":"string(max)","not_null":true},{"name":"SPECIFIC_SCHEMA","type":"string(max)","not_null":true},{"name":"SPECIFIC_NAME","type":"string(max)","not_null":true},{"name":"OPTION_NAME","type":"string(max)","not_null":true},{"name":"OPTION_TYPE","type":"string(max)","not_null":true},{"name":"OPTION_VALUE","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"ROUTINE_PRIVILEGES","kind":"v","columns":[{"name":"SPECIFIC_CATALOG","type":"string(max)","not_null":true},{"name":"SPECIFIC_SCHEMA","type":"string(max)","not_null":true},{"name":"SPECIFIC_NAME","type":"string(max)","not_null":true},{"name":"PRIVILEGE_TYPE","type":"string(max)","not_null":true},{"name":"GRANTEE","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"SCHEMATA","kind":"v","columns":[{"name":"CATALOG_NAME","type":"string(max)","not_null":true},{"name":"SCHEMA_NAME","type":"string(max)","not_null":true},{"name":"EFFECTIVE_TIMESTAMP","type":"int64"},{"name":"PROTO_BUNDLE","type":"proto('proto2.FileDescriptorSet')"},{"name":"SCHEMA_OWNER","type":"string(max)"}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"SEQUENCES","kind":"v","columns":[{"name":"CATALOG","type":"string(max)","not_null":true},{"name":"SCHEMA","type":"string(max)","not_null":true},{"name":"NAME","type":"string(max)","not_null":true},{"name":"DATA_TYPE","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"SEQUENCE_OPTIONS","kind":"v","columns":[{"name":"CATALOG","type":"string(max)","not_null":true},{"name":"SCHEMA","type":"string(max)","not_null":true},{"name":"NAME","type":"string(max)","not_null":true},{"name":"OPTION_NAME","type":"string(max)","not_null":true},{"name":"OPTION_TYPE","type":"string(max)","not_null":true},{"name":"OPTION_VALUE","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"SPANNER_STATISTICS","kind":"v","columns":[{"name":"CATALOG_NAME","type":"string(max)","not_null":true},{"name":"SCHEMA_NAME","type":"string(max)","not_null":true},{"name":"PACKAGE_NAME","type":"string(max)","not_null":true},{"name":"ALLOW_GC","type":"bool","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"TABLES","kind":"v","columns":[{"name":"TABLE_CATALOG","type":"string(max)","not_null":true},{"name":"TABLE_SCHEMA","type":"string(max)","not_null":true},{"name":"TABLE_NAME","type":"string(max)","not_null":true},{"name":"PARENT_TABLE_NAME","type":"string(max)"},{"name":"ON_DELETE_ACTION","type":"string(max)"},{"name":"TABLE_TYPE","type":"string(32)","not_null":true},{"name":"SPANNER_STATE","type":"string(max)"},{"name":"INTERLEAVE_TYPE","type":"string(max)"},{"name":"ROW_DELETION_POLICY_EXPRESSION","type":"string(max)"}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"TABLE_CONSTRAINTS","kind":"v","columns":[{"name":"CONSTRAINT_CATALOG","type":"string(max)","not_null":true},{"name":"CONSTRAINT_SCHEMA","type":"string(max)","not_null":true},{"name":"CONSTRAINT_NAME","type":"string(max)","not_null":true},{"name":"TABLE_CATALOG","type":"string(max)","not_null":true},{"name":"TABLE_SCHEMA","type":"string(max)","not_null":true},{"name":"TABLE_NAME","type":"string(max)","not_null":true},{"name":"CONSTRAINT_TYPE","type":"string(max)","not_null":true},{"name":"IS_DEFERRABLE","type":"string(max)","not_null":true},{"name":"INITIALLY_DEFERRED","type":"string(max)","not_null":true},{"name":"ENFORCED","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"TABLE_OPTIONS","kind":"v","columns":[{"name":"TABLE_CATALOG","type":"string(max)","not_null":true},{"name":"TABLE_SCHEMA","type":"string(max)","not_null":true},{"name":"TABLE_NAME","type":"string(max)","not_null":true},{"name":"OPTION_NAME","type":"string(max)","not_null":true},{"name":"OPTION_TYPE","type":"string(max)","not_null":true},{"name":"OPTION_VALUE","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"TABLE_PRIVILEGES","kind":"v","columns":[{"name":"TABLE_CATALOG","type":"string(max)","not_null":true},{"name":"TABLE_SCHEMA","type":"string(max)","not_null":true},{"name":"TABLE_NAME","type":"string(max)","not_null":true},{"name":"PRIVILEGE_TYPE","type":"string(max)","not_null":true},{"name":"GRANTEE","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"TABLE_SYNONYMS","kind":"v","columns":[{"name":"SYNONYM_CATALOG","type":"string(max)","not_null":true},{"name":"SYNONYM_SCHEMA","type":"string(max)","not_null":true},{"name":"SYNONYM_NAME","type":"string(max)","not_null":true},{"name":"TABLE_CATALOG","type":"string(max)","not_null":true},{"name":"TABLE_SCHEMA","type":"string(max)","not_null":true},{"name":"TABLE_NAME","type":"string(max)","not_null":true}]}
|
||||
{"schema":"INFORMATION_SCHEMA","name":"VIEWS","kind":"v","columns":[{"name":"TABLE_CATALOG","type":"string(max)","not_null":true},{"name":"TABLE_SCHEMA","type":"string(max)","not_null":true},{"name":"TABLE_NAME","type":"string(max)","not_null":true},{"name":"VIEW_DEFINITION","type":"string(max)"},{"name":"SECURITY_TYPE","type":"string(max)","not_null":true}]}
|
||||
{"schema":"SPANNER_SYS","name":"ACTIVE_PARTITIONED_DMLS","kind":"v","columns":[{"name":"TEXT","type":"string(max)"},{"name":"TEXT_FINGERPRINT","type":"string(max)"},{"name":"SESSION_ID","type":"string(max)"},{"name":"NUM_PARTITIONS_TOTAL","type":"int64"},{"name":"NUM_PARTITIONS_COMPLETE","type":"int64"},{"name":"NUM_TRIVIAL_PARTITIONS_COMPLETE","type":"int64"},{"name":"PROGRESS","type":"string(max)"},{"name":"ROWS_PROCESSED","type":"int64"},{"name":"START_TIMESTAMP","type":"timestamp"},{"name":"LAST_UPDATE_TIMESTAMP","type":"timestamp"}]}
|
||||
{"schema":"SPANNER_SYS","name":"ACTIVE_QUERIES_SUMMARY","kind":"v","columns":[{"name":"ACTIVE_COUNT","type":"int64"},{"name":"OLDEST_START_TIME","type":"timestamp"},{"name":"COUNT_OLDER_THAN_1S","type":"int64"},{"name":"COUNT_OLDER_THAN_10S","type":"int64"},{"name":"COUNT_OLDER_THAN_100S","type":"int64"}]}
|
||||
{"schema":"SPANNER_SYS","name":"COLUMN_OPERATIONS_STATS_10MINUTE","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"TABLE_NAME","type":"string(max)"},{"name":"COLUMN_NAME","type":"string(max)"},{"name":"QUERY_COUNT","type":"int64"},{"name":"READ_COUNT","type":"int64"},{"name":"WRITE_COUNT","type":"int64"},{"name":"IS_QUERY_CACHE_MEMORY_CAPPED","type":"bool"}]}
|
||||
{"schema":"SPANNER_SYS","name":"COLUMN_OPERATIONS_STATS_HOUR","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"TABLE_NAME","type":"string(max)"},{"name":"COLUMN_NAME","type":"string(max)"},{"name":"QUERY_COUNT","type":"int64"},{"name":"READ_COUNT","type":"int64"},{"name":"WRITE_COUNT","type":"int64"},{"name":"IS_QUERY_CACHE_MEMORY_CAPPED","type":"bool"}]}
|
||||
{"schema":"SPANNER_SYS","name":"COLUMN_OPERATIONS_STATS_MINUTE","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"TABLE_NAME","type":"string(max)"},{"name":"COLUMN_NAME","type":"string(max)"},{"name":"QUERY_COUNT","type":"int64"},{"name":"READ_COUNT","type":"int64"},{"name":"WRITE_COUNT","type":"int64"},{"name":"IS_QUERY_CACHE_MEMORY_CAPPED","type":"bool"}]}
|
||||
{"schema":"SPANNER_SYS","name":"GRAPH_OPERATION_EXECUTION_STATUS","kind":"v","columns":[{"name":"QUERY_ID","type":"string(max)"},{"name":"QUERY_TEXT","type":"string(max)"},{"name":"START_TIMESTAMP","type":"timestamp"},{"name":"LAST_UPDATE_TIMESTAMP","type":"timestamp"},{"name":"PROGRESS","type":"float64"},{"name":"STATUS","type":"string(max)"},{"name":"ERROR_MESSAGE","type":"string(max)"}]}
|
||||
{"schema":"SPANNER_SYS","name":"LOCK_STATS_TOP_10MINUTE","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"ROW_RANGE_START_KEY","type":"bytes(max)"},{"name":"LOCK_WAIT_SECONDS","type":"float64"},{"name":"SAMPLE_LOCK_REQUESTS","type":"struct(COLUMN: string(max), LOCK_MODE: string(max), TRANSACTION_TAG: string(max))","array":true},{"name":"SAMPLE_LOCK_REQUESTS_JSON_STRING","type":"string(max)"}]}
|
||||
{"schema":"SPANNER_SYS","name":"LOCK_STATS_TOP_HOUR","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"ROW_RANGE_START_KEY","type":"bytes(max)"},{"name":"LOCK_WAIT_SECONDS","type":"float64"},{"name":"SAMPLE_LOCK_REQUESTS","type":"struct(COLUMN: string(max), LOCK_MODE: string(max), TRANSACTION_TAG: string(max))","array":true},{"name":"SAMPLE_LOCK_REQUESTS_JSON_STRING","type":"string(max)"}]}
|
||||
{"schema":"SPANNER_SYS","name":"LOCK_STATS_TOP_MINUTE","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"ROW_RANGE_START_KEY","type":"bytes(max)"},{"name":"LOCK_WAIT_SECONDS","type":"float64"},{"name":"SAMPLE_LOCK_REQUESTS","type":"struct(COLUMN: string(max), LOCK_MODE: string(max), TRANSACTION_TAG: string(max))","array":true},{"name":"SAMPLE_LOCK_REQUESTS_JSON_STRING","type":"string(max)"}]}
|
||||
{"schema":"SPANNER_SYS","name":"LOCK_STATS_TOTAL_10MINUTE","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"TOTAL_LOCK_WAIT_SECONDS","type":"float64"}]}
|
||||
{"schema":"SPANNER_SYS","name":"LOCK_STATS_TOTAL_HOUR","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"TOTAL_LOCK_WAIT_SECONDS","type":"float64"}]}
|
||||
{"schema":"SPANNER_SYS","name":"LOCK_STATS_TOTAL_MINUTE","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"TOTAL_LOCK_WAIT_SECONDS","type":"float64"}]}
|
||||
{"schema":"SPANNER_SYS","name":"OLDEST_ACTIVE_QUERIES","kind":"v","columns":[{"name":"START_TIME","type":"timestamp"},{"name":"TEXT_FINGERPRINT","type":"int64"},{"name":"TEXT","type":"string(max)"},{"name":"TEXT_TRUNCATED","type":"bool"},{"name":"SESSION_ID","type":"string(max)"},{"name":"QUERY_ID","type":"string(max)"},{"name":"CLIENT_IP_ADDRESS","type":"string(max)"},{"name":"API_CLIENT_HEADER","type":"string(max)"},{"name":"USER_AGENT_HEADER","type":"string(max)"},{"name":"SERVER_REGION","type":"string(max)"},{"name":"PRIORITY","type":"string(max)"},{"name":"TRANSACTION_TYPE","type":"string(max)"}]}
|
||||
{"schema":"SPANNER_SYS","name":"QUERY_PROFILES_TOP_10MINUTE","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"TEXT_FINGERPRINT","type":"int64"},{"name":"LATENCY_SECONDS","type":"float64"},{"name":"QUERY_PROFILE","type":"string(max)"}]}
|
||||
{"schema":"SPANNER_SYS","name":"QUERY_PROFILES_TOP_HOUR","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"TEXT_FINGERPRINT","type":"int64"},{"name":"LATENCY_SECONDS","type":"float64"},{"name":"QUERY_PROFILE","type":"string(max)"}]}
|
||||
{"schema":"SPANNER_SYS","name":"QUERY_PROFILES_TOP_MINUTE","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"TEXT_FINGERPRINT","type":"int64"},{"name":"LATENCY_SECONDS","type":"float64"},{"name":"QUERY_PROFILE","type":"string(max)"}]}
|
||||
{"schema":"SPANNER_SYS","name":"QUERY_RECOMMENDATIONS","kind":"v","columns":[{"name":"GENERATION_TIME","type":"timestamp"},{"name":"TEXT_FINGERPRINT","type":"int64"},{"name":"QUERY_RECOMMENDATIONS","type":"string(max)"}]}
|
||||
{"schema":"SPANNER_SYS","name":"QUERY_STATS_TOP_10MINUTE","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"TEXT","type":"string(max)"},{"name":"TEXT_TRUNCATED","type":"bool"},{"name":"TEXT_FINGERPRINT","type":"int64"},{"name":"EXECUTION_COUNT","type":"int64"},{"name":"AVG_LATENCY_SECONDS","type":"float64"},{"name":"AVG_ROWS","type":"float64"},{"name":"AVG_BYTES","type":"float64"},{"name":"AVG_ROWS_SCANNED","type":"float64"},{"name":"AVG_CPU_SECONDS","type":"float64"},{"name":"CANCELLED_OR_DISCONNECTED_EXECUTION_COUNT","type":"int64"},{"name":"TIMED_OUT_EXECUTION_COUNT","type":"int64"},{"name":"ALL_FAILED_EXECUTION_COUNT","type":"int64"},{"name":"ALL_FAILED_AVG_LATENCY_SECONDS","type":"float64"},{"name":"REQUEST_TAG","type":"string(max)"},{"name":"AVG_BYTES_WRITTEN","type":"float64"},{"name":"AVG_ROWS_WRITTEN","type":"float64"},{"name":"STATEMENT_COUNT","type":"int64"},{"name":"LATENCY_DISTRIBUTION","type":"struct(COUNT: int64, MEAN: float64, SUM_OF_SQUARED_DEVIATION: float64, NUM_FINITE_BUCKETS: int64, GROWTH_FACTOR: float64, SCALE: float64, BUCKET_COUNTS: int64[])","array":true},{"name":"RUN_IN_RW_TRANSACTION_EXECUTION_COUNT","type":"int64"},{"name":"QUERY_TYPE","type":"string(max)"},{"name":"AVG_MEMORY_PEAK_USAGE_BYTES","type":"float64"},{"name":"AVG_MEMORY_USAGE_PERCENTAGE","type":"float64"},{"name":"AVG_QUERY_PLAN_CREATION_TIME_SECS","type":"float64"},{"name":"AVG_FILESYSTEM_DELAY_SECS","type":"float64"},{"name":"AVG_REMOTE_SERVER_CALLS","type":"float64"},{"name":"AVG_ROWS_SPOOLED","type":"float64"},{"name":"AVG_DISK_IO_COST","type":"float64"},{"name":"LATENCY_DISTRIBUTION_JSON_STRING","type":"string(max)"},{"name":"AVG_COLUMNAR_READ_SHARE","type":"float64"},{"name":"QUERY_OPTIMIZER_VERSIONS","type":"int64","array":true},{"name":"STATISTICS_PACKAGE_NAMES","type":"string(max)","array":true}]}
|
||||
{"schema":"SPANNER_SYS","name":"QUERY_STATS_TOP_HOUR","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"TEXT","type":"string(max)"},{"name":"TEXT_TRUNCATED","type":"bool"},{"name":"TEXT_FINGERPRINT","type":"int64"},{"name":"EXECUTION_COUNT","type":"int64"},{"name":"AVG_LATENCY_SECONDS","type":"float64"},{"name":"AVG_ROWS","type":"float64"},{"name":"AVG_BYTES","type":"float64"},{"name":"AVG_ROWS_SCANNED","type":"float64"},{"name":"AVG_CPU_SECONDS","type":"float64"},{"name":"CANCELLED_OR_DISCONNECTED_EXECUTION_COUNT","type":"int64"},{"name":"TIMED_OUT_EXECUTION_COUNT","type":"int64"},{"name":"ALL_FAILED_EXECUTION_COUNT","type":"int64"},{"name":"ALL_FAILED_AVG_LATENCY_SECONDS","type":"float64"},{"name":"REQUEST_TAG","type":"string(max)"},{"name":"AVG_BYTES_WRITTEN","type":"float64"},{"name":"AVG_ROWS_WRITTEN","type":"float64"},{"name":"STATEMENT_COUNT","type":"int64"},{"name":"LATENCY_DISTRIBUTION","type":"struct(COUNT: int64, MEAN: float64, SUM_OF_SQUARED_DEVIATION: float64, NUM_FINITE_BUCKETS: int64, GROWTH_FACTOR: float64, SCALE: float64, BUCKET_COUNTS: int64[])","array":true},{"name":"RUN_IN_RW_TRANSACTION_EXECUTION_COUNT","type":"int64"},{"name":"QUERY_TYPE","type":"string(max)"},{"name":"AVG_MEMORY_PEAK_USAGE_BYTES","type":"float64"},{"name":"AVG_MEMORY_USAGE_PERCENTAGE","type":"float64"},{"name":"AVG_QUERY_PLAN_CREATION_TIME_SECS","type":"float64"},{"name":"AVG_FILESYSTEM_DELAY_SECS","type":"float64"},{"name":"AVG_REMOTE_SERVER_CALLS","type":"float64"},{"name":"AVG_ROWS_SPOOLED","type":"float64"},{"name":"AVG_DISK_IO_COST","type":"float64"},{"name":"LATENCY_DISTRIBUTION_JSON_STRING","type":"string(max)"},{"name":"AVG_COLUMNAR_READ_SHARE","type":"float64"},{"name":"QUERY_OPTIMIZER_VERSIONS","type":"int64","array":true},{"name":"STATISTICS_PACKAGE_NAMES","type":"string(max)","array":true}]}
|
||||
{"schema":"SPANNER_SYS","name":"QUERY_STATS_TOP_MINUTE","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"TEXT","type":"string(max)"},{"name":"TEXT_TRUNCATED","type":"bool"},{"name":"TEXT_FINGERPRINT","type":"int64"},{"name":"EXECUTION_COUNT","type":"int64"},{"name":"AVG_LATENCY_SECONDS","type":"float64"},{"name":"AVG_ROWS","type":"float64"},{"name":"AVG_BYTES","type":"float64"},{"name":"AVG_ROWS_SCANNED","type":"float64"},{"name":"AVG_CPU_SECONDS","type":"float64"},{"name":"CANCELLED_OR_DISCONNECTED_EXECUTION_COUNT","type":"int64"},{"name":"TIMED_OUT_EXECUTION_COUNT","type":"int64"},{"name":"ALL_FAILED_EXECUTION_COUNT","type":"int64"},{"name":"ALL_FAILED_AVG_LATENCY_SECONDS","type":"float64"},{"name":"REQUEST_TAG","type":"string(max)"},{"name":"AVG_BYTES_WRITTEN","type":"float64"},{"name":"AVG_ROWS_WRITTEN","type":"float64"},{"name":"STATEMENT_COUNT","type":"int64"},{"name":"LATENCY_DISTRIBUTION","type":"struct(COUNT: int64, MEAN: float64, SUM_OF_SQUARED_DEVIATION: float64, NUM_FINITE_BUCKETS: int64, GROWTH_FACTOR: float64, SCALE: float64, BUCKET_COUNTS: int64[])","array":true},{"name":"RUN_IN_RW_TRANSACTION_EXECUTION_COUNT","type":"int64"},{"name":"QUERY_TYPE","type":"string(max)"},{"name":"AVG_MEMORY_PEAK_USAGE_BYTES","type":"float64"},{"name":"AVG_MEMORY_USAGE_PERCENTAGE","type":"float64"},{"name":"AVG_QUERY_PLAN_CREATION_TIME_SECS","type":"float64"},{"name":"AVG_FILESYSTEM_DELAY_SECS","type":"float64"},{"name":"AVG_REMOTE_SERVER_CALLS","type":"float64"},{"name":"AVG_ROWS_SPOOLED","type":"float64"},{"name":"AVG_DISK_IO_COST","type":"float64"},{"name":"LATENCY_DISTRIBUTION_JSON_STRING","type":"string(max)"},{"name":"AVG_COLUMNAR_READ_SHARE","type":"float64"},{"name":"QUERY_OPTIMIZER_VERSIONS","type":"int64","array":true},{"name":"STATISTICS_PACKAGE_NAMES","type":"string(max)","array":true}]}
|
||||
{"schema":"SPANNER_SYS","name":"QUERY_STATS_TOTAL_10MINUTE","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"EXECUTION_COUNT","type":"int64"},{"name":"AVG_LATENCY_SECONDS","type":"float64"},{"name":"AVG_ROWS","type":"float64"},{"name":"AVG_BYTES","type":"float64"},{"name":"AVG_ROWS_SCANNED","type":"float64"},{"name":"AVG_CPU_SECONDS","type":"float64"},{"name":"CANCELLED_OR_DISCONNECTED_EXECUTION_COUNT","type":"int64"},{"name":"TIMED_OUT_EXECUTION_COUNT","type":"int64"},{"name":"ALL_FAILED_EXECUTION_COUNT","type":"int64"},{"name":"ALL_FAILED_AVG_LATENCY_SECONDS","type":"float64"},{"name":"AVG_BYTES_WRITTEN","type":"float64"},{"name":"AVG_ROWS_WRITTEN","type":"float64"},{"name":"LATENCY_DISTRIBUTION","type":"struct(COUNT: int64, MEAN: float64, SUM_OF_SQUARED_DEVIATION: float64, NUM_FINITE_BUCKETS: int64, GROWTH_FACTOR: float64, SCALE: float64, BUCKET_COUNTS: int64[])","array":true},{"name":"RUN_IN_RW_TRANSACTION_EXECUTION_COUNT","type":"int64"},{"name":"AVG_MEMORY_PEAK_USAGE_BYTES","type":"float64"},{"name":"AVG_MEMORY_USAGE_PERCENTAGE","type":"float64"},{"name":"AVG_QUERY_PLAN_CREATION_TIME_SECS","type":"float64"},{"name":"AVG_FILESYSTEM_DELAY_SECS","type":"float64"},{"name":"AVG_REMOTE_SERVER_CALLS","type":"float64"},{"name":"AVG_ROWS_SPOOLED","type":"float64"},{"name":"AVG_DISK_IO_COST","type":"float64"},{"name":"LATENCY_DISTRIBUTION_JSON_STRING","type":"string(max)"},{"name":"AVG_COLUMNAR_READ_SHARE","type":"float64"}]}
|
||||
{"schema":"SPANNER_SYS","name":"QUERY_STATS_TOTAL_HOUR","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"EXECUTION_COUNT","type":"int64"},{"name":"AVG_LATENCY_SECONDS","type":"float64"},{"name":"AVG_ROWS","type":"float64"},{"name":"AVG_BYTES","type":"float64"},{"name":"AVG_ROWS_SCANNED","type":"float64"},{"name":"AVG_CPU_SECONDS","type":"float64"},{"name":"CANCELLED_OR_DISCONNECTED_EXECUTION_COUNT","type":"int64"},{"name":"TIMED_OUT_EXECUTION_COUNT","type":"int64"},{"name":"ALL_FAILED_EXECUTION_COUNT","type":"int64"},{"name":"ALL_FAILED_AVG_LATENCY_SECONDS","type":"float64"},{"name":"AVG_BYTES_WRITTEN","type":"float64"},{"name":"AVG_ROWS_WRITTEN","type":"float64"},{"name":"LATENCY_DISTRIBUTION","type":"struct(COUNT: int64, MEAN: float64, SUM_OF_SQUARED_DEVIATION: float64, NUM_FINITE_BUCKETS: int64, GROWTH_FACTOR: float64, SCALE: float64, BUCKET_COUNTS: int64[])","array":true},{"name":"RUN_IN_RW_TRANSACTION_EXECUTION_COUNT","type":"int64"},{"name":"AVG_MEMORY_PEAK_USAGE_BYTES","type":"float64"},{"name":"AVG_MEMORY_USAGE_PERCENTAGE","type":"float64"},{"name":"AVG_QUERY_PLAN_CREATION_TIME_SECS","type":"float64"},{"name":"AVG_FILESYSTEM_DELAY_SECS","type":"float64"},{"name":"AVG_REMOTE_SERVER_CALLS","type":"float64"},{"name":"AVG_ROWS_SPOOLED","type":"float64"},{"name":"AVG_DISK_IO_COST","type":"float64"},{"name":"LATENCY_DISTRIBUTION_JSON_STRING","type":"string(max)"},{"name":"AVG_COLUMNAR_READ_SHARE","type":"float64"}]}
|
||||
{"schema":"SPANNER_SYS","name":"QUERY_STATS_TOTAL_MINUTE","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"EXECUTION_COUNT","type":"int64"},{"name":"AVG_LATENCY_SECONDS","type":"float64"},{"name":"AVG_ROWS","type":"float64"},{"name":"AVG_BYTES","type":"float64"},{"name":"AVG_ROWS_SCANNED","type":"float64"},{"name":"AVG_CPU_SECONDS","type":"float64"},{"name":"CANCELLED_OR_DISCONNECTED_EXECUTION_COUNT","type":"int64"},{"name":"TIMED_OUT_EXECUTION_COUNT","type":"int64"},{"name":"ALL_FAILED_EXECUTION_COUNT","type":"int64"},{"name":"ALL_FAILED_AVG_LATENCY_SECONDS","type":"float64"},{"name":"AVG_BYTES_WRITTEN","type":"float64"},{"name":"AVG_ROWS_WRITTEN","type":"float64"},{"name":"LATENCY_DISTRIBUTION","type":"struct(COUNT: int64, MEAN: float64, SUM_OF_SQUARED_DEVIATION: float64, NUM_FINITE_BUCKETS: int64, GROWTH_FACTOR: float64, SCALE: float64, BUCKET_COUNTS: int64[])","array":true},{"name":"RUN_IN_RW_TRANSACTION_EXECUTION_COUNT","type":"int64"},{"name":"AVG_MEMORY_PEAK_USAGE_BYTES","type":"float64"},{"name":"AVG_MEMORY_USAGE_PERCENTAGE","type":"float64"},{"name":"AVG_QUERY_PLAN_CREATION_TIME_SECS","type":"float64"},{"name":"AVG_FILESYSTEM_DELAY_SECS","type":"float64"},{"name":"AVG_REMOTE_SERVER_CALLS","type":"float64"},{"name":"AVG_ROWS_SPOOLED","type":"float64"},{"name":"AVG_DISK_IO_COST","type":"float64"},{"name":"LATENCY_DISTRIBUTION_JSON_STRING","type":"string(max)"},{"name":"AVG_COLUMNAR_READ_SHARE","type":"float64"}]}
|
||||
{"schema":"SPANNER_SYS","name":"READ_STATS_TOP_10MINUTE","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"READ_COLUMNS","type":"string(max)","array":true},{"name":"FPRINT","type":"int64"},{"name":"EXECUTION_COUNT","type":"int64"},{"name":"AVG_ROWS","type":"float64"},{"name":"AVG_BYTES","type":"float64"},{"name":"AVG_CPU_SECONDS","type":"float64"},{"name":"AVG_LOCKING_DELAY_SECONDS","type":"float64"},{"name":"AVG_CLIENT_WAIT_SECONDS","type":"float64"},{"name":"AVG_LEADER_REFRESH_DELAY_SECONDS","type":"float64"},{"name":"REQUEST_TAG","type":"string(max)"},{"name":"RUN_IN_RW_TRANSACTION_EXECUTION_COUNT","type":"int64"},{"name":"READ_TYPE","type":"string(max)"},{"name":"AVG_DISK_IO_COST","type":"float64"}]}
|
||||
{"schema":"SPANNER_SYS","name":"READ_STATS_TOP_HOUR","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"READ_COLUMNS","type":"string(max)","array":true},{"name":"FPRINT","type":"int64"},{"name":"EXECUTION_COUNT","type":"int64"},{"name":"AVG_ROWS","type":"float64"},{"name":"AVG_BYTES","type":"float64"},{"name":"AVG_CPU_SECONDS","type":"float64"},{"name":"AVG_LOCKING_DELAY_SECONDS","type":"float64"},{"name":"AVG_CLIENT_WAIT_SECONDS","type":"float64"},{"name":"AVG_LEADER_REFRESH_DELAY_SECONDS","type":"float64"},{"name":"REQUEST_TAG","type":"string(max)"},{"name":"RUN_IN_RW_TRANSACTION_EXECUTION_COUNT","type":"int64"},{"name":"READ_TYPE","type":"string(max)"},{"name":"AVG_DISK_IO_COST","type":"float64"}]}
|
||||
{"schema":"SPANNER_SYS","name":"READ_STATS_TOP_MINUTE","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"READ_COLUMNS","type":"string(max)","array":true},{"name":"FPRINT","type":"int64"},{"name":"EXECUTION_COUNT","type":"int64"},{"name":"AVG_ROWS","type":"float64"},{"name":"AVG_BYTES","type":"float64"},{"name":"AVG_CPU_SECONDS","type":"float64"},{"name":"AVG_LOCKING_DELAY_SECONDS","type":"float64"},{"name":"AVG_CLIENT_WAIT_SECONDS","type":"float64"},{"name":"AVG_LEADER_REFRESH_DELAY_SECONDS","type":"float64"},{"name":"REQUEST_TAG","type":"string(max)"},{"name":"RUN_IN_RW_TRANSACTION_EXECUTION_COUNT","type":"int64"},{"name":"READ_TYPE","type":"string(max)"},{"name":"AVG_DISK_IO_COST","type":"float64"}]}
|
||||
{"schema":"SPANNER_SYS","name":"READ_STATS_TOTAL_10MINUTE","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"EXECUTION_COUNT","type":"int64"},{"name":"AVG_ROWS","type":"float64"},{"name":"AVG_BYTES","type":"float64"},{"name":"AVG_CPU_SECONDS","type":"float64"},{"name":"AVG_LOCKING_DELAY_SECONDS","type":"float64"},{"name":"AVG_CLIENT_WAIT_SECONDS","type":"float64"},{"name":"AVG_LEADER_REFRESH_DELAY_SECONDS","type":"float64"},{"name":"RUN_IN_RW_TRANSACTION_EXECUTION_COUNT","type":"int64"},{"name":"AVG_DISK_IO_COST","type":"float64"}]}
|
||||
{"schema":"SPANNER_SYS","name":"READ_STATS_TOTAL_HOUR","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"EXECUTION_COUNT","type":"int64"},{"name":"AVG_ROWS","type":"float64"},{"name":"AVG_BYTES","type":"float64"},{"name":"AVG_CPU_SECONDS","type":"float64"},{"name":"AVG_LOCKING_DELAY_SECONDS","type":"float64"},{"name":"AVG_CLIENT_WAIT_SECONDS","type":"float64"},{"name":"AVG_LEADER_REFRESH_DELAY_SECONDS","type":"float64"},{"name":"RUN_IN_RW_TRANSACTION_EXECUTION_COUNT","type":"int64"},{"name":"AVG_DISK_IO_COST","type":"float64"}]}
|
||||
{"schema":"SPANNER_SYS","name":"READ_STATS_TOTAL_MINUTE","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"EXECUTION_COUNT","type":"int64"},{"name":"AVG_ROWS","type":"float64"},{"name":"AVG_BYTES","type":"float64"},{"name":"AVG_CPU_SECONDS","type":"float64"},{"name":"AVG_LOCKING_DELAY_SECONDS","type":"float64"},{"name":"AVG_CLIENT_WAIT_SECONDS","type":"float64"},{"name":"AVG_LEADER_REFRESH_DELAY_SECONDS","type":"float64"},{"name":"RUN_IN_RW_TRANSACTION_EXECUTION_COUNT","type":"int64"},{"name":"AVG_DISK_IO_COST","type":"float64"}]}
|
||||
{"schema":"SPANNER_SYS","name":"ROW_DELETION_POLICIES","kind":"v","columns":[{"name":"TABLE_NAME","type":"string(max)","not_null":true},{"name":"PROCESSED_WATERMARK","type":"timestamp"},{"name":"UNDELETABLE_ROWS","type":"int64","not_null":true},{"name":"MIN_UNDELETABLE_TIMESTAMP","type":"timestamp"}]}
|
||||
{"schema":"SPANNER_SYS","name":"SCHEMA_RECOMMENDATIONS","kind":"v","columns":[{"name":"GENERATION_TIME","type":"timestamp"},{"name":"FINGERPRINT","type":"string(max)"},{"name":"SCHEMA_RECOMMENDATIONS","type":"string(max)"}]}
|
||||
{"schema":"SPANNER_SYS","name":"SPLIT_HOTNESS_STATS_TOP_MINUTE","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"SPLIT_START","type":"string(max)"},{"name":"SPLIT_LIMIT","type":"string(max)"},{"name":"AFFECTED_TABLES","type":"string(max)","array":true},{"name":"HOTNESS","type":"int64"}]}
|
||||
{"schema":"SPANNER_SYS","name":"SPLIT_STATS_TOP_10MINUTE","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"SPLIT_START","type":"string(max)"},{"name":"SPLIT_LIMIT","type":"string(max)"},{"name":"AFFECTED_TABLES","type":"string(max)","array":true},{"name":"CPU_USAGE_SCORE","type":"int64"},{"name":"UNSPLITTABLE_REASONS","type":"string(max)","array":true}]}
|
||||
{"schema":"SPANNER_SYS","name":"SPLIT_STATS_TOP_HOUR","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"SPLIT_START","type":"string(max)"},{"name":"SPLIT_LIMIT","type":"string(max)"},{"name":"AFFECTED_TABLES","type":"string(max)","array":true},{"name":"CPU_USAGE_SCORE","type":"int64"},{"name":"UNSPLITTABLE_REASONS","type":"string(max)","array":true}]}
|
||||
{"schema":"SPANNER_SYS","name":"SPLIT_STATS_TOP_MINUTE","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"SPLIT_START","type":"string(max)"},{"name":"SPLIT_LIMIT","type":"string(max)"},{"name":"AFFECTED_TABLES","type":"string(max)","array":true},{"name":"CPU_USAGE_SCORE","type":"int64"},{"name":"UNSPLITTABLE_REASONS","type":"string(max)","array":true}]}
|
||||
{"schema":"SPANNER_SYS","name":"SUPPORTED_OPTIMIZER_VERSIONS","kind":"v","columns":[{"name":"VERSION","type":"int64","not_null":true},{"name":"RELEASE_DATE","type":"date","not_null":true},{"name":"IS_DEFAULT","type":"bool","not_null":true}]}
|
||||
{"schema":"SPANNER_SYS","name":"TABLE_OPERATIONS_STATS_10MINUTE","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"TABLE_NAME","type":"string(max)"},{"name":"READ_QUERY_COUNT","type":"int64"},{"name":"WRITE_COUNT","type":"int64"},{"name":"DELETE_COUNT","type":"int64"}]}
|
||||
{"schema":"SPANNER_SYS","name":"TABLE_OPERATIONS_STATS_HOUR","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"TABLE_NAME","type":"string(max)"},{"name":"READ_QUERY_COUNT","type":"int64"},{"name":"WRITE_COUNT","type":"int64"},{"name":"DELETE_COUNT","type":"int64"}]}
|
||||
{"schema":"SPANNER_SYS","name":"TABLE_OPERATIONS_STATS_MINUTE","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"TABLE_NAME","type":"string(max)"},{"name":"READ_QUERY_COUNT","type":"int64"},{"name":"WRITE_COUNT","type":"int64"},{"name":"DELETE_COUNT","type":"int64"}]}
|
||||
{"schema":"SPANNER_SYS","name":"TABLE_SIZES_STATS_1HOUR","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"TABLE_NAME","type":"string(max)"},{"name":"USED_BYTES","type":"float64"},{"name":"USED_SSD_BYTES","type":"float64"},{"name":"USED_HDD_BYTES","type":"float64"},{"name":"COLUMNAR_USED_BYTES","type":"float64"},{"name":"COLUMNAR_USED_SSD_BYTES","type":"float64"},{"name":"COLUMNAR_USED_HDD_BYTES","type":"float64"},{"name":"COLUMNAR_COVERAGE_RATIO","type":"float64"},{"name":"COLUMNAR_SSD_COVERAGE_RATIO","type":"float64"},{"name":"COLUMNAR_HDD_COVERAGE_RATIO","type":"float64"}]}
|
||||
{"schema":"SPANNER_SYS","name":"TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"TABLE_NAME","type":"string(max)"},{"name":"LOCALITY_GROUP","type":"string(max)"},{"name":"USED_SSD_BYTES","type":"float64"},{"name":"USED_HDD_BYTES","type":"float64"}]}
|
||||
{"schema":"SPANNER_SYS","name":"TASKS","kind":"v","columns":[{"name":"TASK_NAME","type":"string(max)","not_null":true},{"name":"PROCESSED_WATERMARK","type":"timestamp"},{"name":"LAST_RUN_STATUS","type":"string(max)"},{"name":"UNDELETABLE_ROWS","type":"int64","not_null":true}]}
|
||||
{"schema":"SPANNER_SYS","name":"TXN_STATS_TOP_10MINUTE","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"FPRINT","type":"int64"},{"name":"READ_COLUMNS","type":"string(max)","array":true},{"name":"WRITE_CONSTRUCTIVE_COLUMNS","type":"string(max)","array":true},{"name":"WRITE_DELETE_TABLES","type":"string(max)","array":true},{"name":"COMMIT_ATTEMPT_COUNT","type":"int64"},{"name":"COMMIT_FAILED_PRECONDITION_COUNT","type":"int64"},{"name":"COMMIT_ABORT_COUNT","type":"int64"},{"name":"AVG_PARTICIPANTS","type":"float64"},{"name":"AVG_TOTAL_LATENCY_SECONDS","type":"float64"},{"name":"AVG_COMMIT_LATENCY_SECONDS","type":"float64"},{"name":"AVG_BYTES","type":"float64"},{"name":"COMMIT_RETRY_COUNT","type":"int64"},{"name":"TRANSACTION_TAG","type":"string(max)"},{"name":"OPERATIONS_BY_TABLE","type":"struct(TABLE_NAME: string(max), INSERT_OR_UPDATE_COUNT: int64, INSERT_OR_UPDATE_BYTES: int64)","array":true},{"name":"TOTAL_LATENCY_DISTRIBUTION","type":"struct(COUNT: int64, MEAN: float64, SUM_OF_SQUARED_DEVIATION: float64, NUM_FINITE_BUCKETS: int64, GROWTH_FACTOR: float64, SCALE: float64, BUCKET_COUNTS: int64[])","array":true},{"name":"ATTEMPT_COUNT","type":"int64"},{"name":"SERIALIZABLE_PESSIMISTIC_TXN_COUNT","type":"int64"},{"name":"REPEATABLE_READ_OPTIMISTIC_TXN_COUNT","type":"int64"},{"name":"OPERATIONS_BY_TABLE_JSON_STRING","type":"string(max)"},{"name":"TOTAL_LATENCY_DISTRIBUTION_JSON_STRING","type":"string(max)"},{"name":"SERIALIZABLE_OPTIMISTIC_TXN_COUNT","type":"int64"},{"name":"REPEATABLE_READ_PESSIMISTIC_TXN_COUNT","type":"int64"}]}
|
||||
{"schema":"SPANNER_SYS","name":"TXN_STATS_TOP_HOUR","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"FPRINT","type":"int64"},{"name":"READ_COLUMNS","type":"string(max)","array":true},{"name":"WRITE_CONSTRUCTIVE_COLUMNS","type":"string(max)","array":true},{"name":"WRITE_DELETE_TABLES","type":"string(max)","array":true},{"name":"COMMIT_ATTEMPT_COUNT","type":"int64"},{"name":"COMMIT_FAILED_PRECONDITION_COUNT","type":"int64"},{"name":"COMMIT_ABORT_COUNT","type":"int64"},{"name":"AVG_PARTICIPANTS","type":"float64"},{"name":"AVG_TOTAL_LATENCY_SECONDS","type":"float64"},{"name":"AVG_COMMIT_LATENCY_SECONDS","type":"float64"},{"name":"AVG_BYTES","type":"float64"},{"name":"COMMIT_RETRY_COUNT","type":"int64"},{"name":"TRANSACTION_TAG","type":"string(max)"},{"name":"OPERATIONS_BY_TABLE","type":"struct(TABLE_NAME: string(max), INSERT_OR_UPDATE_COUNT: int64, INSERT_OR_UPDATE_BYTES: int64)","array":true},{"name":"TOTAL_LATENCY_DISTRIBUTION","type":"struct(COUNT: int64, MEAN: float64, SUM_OF_SQUARED_DEVIATION: float64, NUM_FINITE_BUCKETS: int64, GROWTH_FACTOR: float64, SCALE: float64, BUCKET_COUNTS: int64[])","array":true},{"name":"ATTEMPT_COUNT","type":"int64"},{"name":"SERIALIZABLE_PESSIMISTIC_TXN_COUNT","type":"int64"},{"name":"REPEATABLE_READ_OPTIMISTIC_TXN_COUNT","type":"int64"},{"name":"OPERATIONS_BY_TABLE_JSON_STRING","type":"string(max)"},{"name":"TOTAL_LATENCY_DISTRIBUTION_JSON_STRING","type":"string(max)"},{"name":"SERIALIZABLE_OPTIMISTIC_TXN_COUNT","type":"int64"},{"name":"REPEATABLE_READ_PESSIMISTIC_TXN_COUNT","type":"int64"}]}
|
||||
{"schema":"SPANNER_SYS","name":"TXN_STATS_TOP_MINUTE","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"FPRINT","type":"int64"},{"name":"READ_COLUMNS","type":"string(max)","array":true},{"name":"WRITE_CONSTRUCTIVE_COLUMNS","type":"string(max)","array":true},{"name":"WRITE_DELETE_TABLES","type":"string(max)","array":true},{"name":"COMMIT_ATTEMPT_COUNT","type":"int64"},{"name":"COMMIT_FAILED_PRECONDITION_COUNT","type":"int64"},{"name":"COMMIT_ABORT_COUNT","type":"int64"},{"name":"AVG_PARTICIPANTS","type":"float64"},{"name":"AVG_TOTAL_LATENCY_SECONDS","type":"float64"},{"name":"AVG_COMMIT_LATENCY_SECONDS","type":"float64"},{"name":"AVG_BYTES","type":"float64"},{"name":"COMMIT_RETRY_COUNT","type":"int64"},{"name":"TRANSACTION_TAG","type":"string(max)"},{"name":"OPERATIONS_BY_TABLE","type":"struct(TABLE_NAME: string(max), INSERT_OR_UPDATE_COUNT: int64, INSERT_OR_UPDATE_BYTES: int64)","array":true},{"name":"TOTAL_LATENCY_DISTRIBUTION","type":"struct(COUNT: int64, MEAN: float64, SUM_OF_SQUARED_DEVIATION: float64, NUM_FINITE_BUCKETS: int64, GROWTH_FACTOR: float64, SCALE: float64, BUCKET_COUNTS: int64[])","array":true},{"name":"ATTEMPT_COUNT","type":"int64"},{"name":"SERIALIZABLE_PESSIMISTIC_TXN_COUNT","type":"int64"},{"name":"REPEATABLE_READ_OPTIMISTIC_TXN_COUNT","type":"int64"},{"name":"OPERATIONS_BY_TABLE_JSON_STRING","type":"string(max)"},{"name":"TOTAL_LATENCY_DISTRIBUTION_JSON_STRING","type":"string(max)"},{"name":"SERIALIZABLE_OPTIMISTIC_TXN_COUNT","type":"int64"},{"name":"REPEATABLE_READ_PESSIMISTIC_TXN_COUNT","type":"int64"}]}
|
||||
{"schema":"SPANNER_SYS","name":"TXN_STATS_TOTAL_10MINUTE","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"COMMIT_ATTEMPT_COUNT","type":"int64"},{"name":"COMMIT_FAILED_PRECONDITION_COUNT","type":"int64"},{"name":"COMMIT_ABORT_COUNT","type":"int64"},{"name":"AVG_PARTICIPANTS","type":"float64"},{"name":"AVG_TOTAL_LATENCY_SECONDS","type":"float64"},{"name":"AVG_COMMIT_LATENCY_SECONDS","type":"float64"},{"name":"AVG_BYTES","type":"float64"},{"name":"COMMIT_RETRY_COUNT","type":"int64"},{"name":"OPERATIONS_BY_TABLE","type":"struct(TABLE_NAME: string(max), INSERT_OR_UPDATE_COUNT: int64, INSERT_OR_UPDATE_BYTES: int64)","array":true},{"name":"TOTAL_LATENCY_DISTRIBUTION","type":"struct(COUNT: int64, MEAN: float64, SUM_OF_SQUARED_DEVIATION: float64, NUM_FINITE_BUCKETS: int64, GROWTH_FACTOR: float64, SCALE: float64, BUCKET_COUNTS: int64[])","array":true},{"name":"ATTEMPT_COUNT","type":"int64"},{"name":"SERIALIZABLE_PESSIMISTIC_TXN_COUNT","type":"int64"},{"name":"REPEATABLE_READ_OPTIMISTIC_TXN_COUNT","type":"int64"},{"name":"OPERATIONS_BY_TABLE_JSON_STRING","type":"string(max)"},{"name":"TOTAL_LATENCY_DISTRIBUTION_JSON_STRING","type":"string(max)"},{"name":"SERIALIZABLE_OPTIMISTIC_TXN_COUNT","type":"int64"},{"name":"REPEATABLE_READ_PESSIMISTIC_TXN_COUNT","type":"int64"}]}
|
||||
{"schema":"SPANNER_SYS","name":"TXN_STATS_TOTAL_HOUR","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"COMMIT_ATTEMPT_COUNT","type":"int64"},{"name":"COMMIT_FAILED_PRECONDITION_COUNT","type":"int64"},{"name":"COMMIT_ABORT_COUNT","type":"int64"},{"name":"AVG_PARTICIPANTS","type":"float64"},{"name":"AVG_TOTAL_LATENCY_SECONDS","type":"float64"},{"name":"AVG_COMMIT_LATENCY_SECONDS","type":"float64"},{"name":"AVG_BYTES","type":"float64"},{"name":"COMMIT_RETRY_COUNT","type":"int64"},{"name":"OPERATIONS_BY_TABLE","type":"struct(TABLE_NAME: string(max), INSERT_OR_UPDATE_COUNT: int64, INSERT_OR_UPDATE_BYTES: int64)","array":true},{"name":"TOTAL_LATENCY_DISTRIBUTION","type":"struct(COUNT: int64, MEAN: float64, SUM_OF_SQUARED_DEVIATION: float64, NUM_FINITE_BUCKETS: int64, GROWTH_FACTOR: float64, SCALE: float64, BUCKET_COUNTS: int64[])","array":true},{"name":"ATTEMPT_COUNT","type":"int64"},{"name":"SERIALIZABLE_PESSIMISTIC_TXN_COUNT","type":"int64"},{"name":"REPEATABLE_READ_OPTIMISTIC_TXN_COUNT","type":"int64"},{"name":"OPERATIONS_BY_TABLE_JSON_STRING","type":"string(max)"},{"name":"TOTAL_LATENCY_DISTRIBUTION_JSON_STRING","type":"string(max)"},{"name":"SERIALIZABLE_OPTIMISTIC_TXN_COUNT","type":"int64"},{"name":"REPEATABLE_READ_PESSIMISTIC_TXN_COUNT","type":"int64"}]}
|
||||
{"schema":"SPANNER_SYS","name":"TXN_STATS_TOTAL_MINUTE","kind":"v","columns":[{"name":"INTERVAL_END","type":"timestamp"},{"name":"COMMIT_ATTEMPT_COUNT","type":"int64"},{"name":"COMMIT_FAILED_PRECONDITION_COUNT","type":"int64"},{"name":"COMMIT_ABORT_COUNT","type":"int64"},{"name":"AVG_PARTICIPANTS","type":"float64"},{"name":"AVG_TOTAL_LATENCY_SECONDS","type":"float64"},{"name":"AVG_COMMIT_LATENCY_SECONDS","type":"float64"},{"name":"AVG_BYTES","type":"float64"},{"name":"COMMIT_RETRY_COUNT","type":"int64"},{"name":"OPERATIONS_BY_TABLE","type":"struct(TABLE_NAME: string(max), INSERT_OR_UPDATE_COUNT: int64, INSERT_OR_UPDATE_BYTES: int64)","array":true},{"name":"TOTAL_LATENCY_DISTRIBUTION","type":"struct(COUNT: int64, MEAN: float64, SUM_OF_SQUARED_DEVIATION: float64, NUM_FINITE_BUCKETS: int64, GROWTH_FACTOR: float64, SCALE: float64, BUCKET_COUNTS: int64[])","array":true},{"name":"ATTEMPT_COUNT","type":"int64"},{"name":"SERIALIZABLE_PESSIMISTIC_TXN_COUNT","type":"int64"},{"name":"REPEATABLE_READ_OPTIMISTIC_TXN_COUNT","type":"int64"},{"name":"OPERATIONS_BY_TABLE_JSON_STRING","type":"string(max)"},{"name":"TOTAL_LATENCY_DISTRIBUTION_JSON_STRING","type":"string(max)"},{"name":"SERIALIZABLE_OPTIMISTIC_TXN_COUNT","type":"int64"},{"name":"REPEATABLE_READ_PESSIMISTIC_TXN_COUNT","type":"int64"}]}
|
||||
{"schema":"SPANNER_SYS","name":"USER_SPLIT_POINTS","kind":"v","columns":[{"name":"TABLE_NAME","type":"string(max)"},{"name":"INDEX_NAME","type":"string(max)"},{"name":"INITIATOR","type":"string(max)"},{"name":"SPLIT_KEY","type":"string(max)"},{"name":"EXPIRE_TIME","type":"timestamp"}]}
|
||||
{"schema":"SPANNER_SYS","name":"VECTOR_INDEX_METRICS_HISTORY","kind":"v","columns":[{"name":"VECTOR_INDEX_NAME","type":"string(max)"},{"name":"START_TIME","type":"timestamp"},{"name":"COMPLETION_TIME","type":"timestamp"},{"name":"ROWS_SCANNED","type":"int64"},{"name":"CLUSTERS_SAMPLED","type":"int64"},{"name":"ZERO_SIZE_CLUSTERS_SAMPLED","type":"int64"},{"name":"MIN_CLUSTER_SIZE","type":"int64"},{"name":"MAX_CLUSTER_SIZE","type":"int64"},{"name":"CLUSTER_SIZE_PERCENTILES","type":"struct(percentile: int64, value_at_percentile: int64)","array":true},{"name":"CLUSTER_AVERAGE_DISTANCE_TO_CENTROID_PERCENTILES","type":"struct(percentile: int64, value_at_percentile: float64)","array":true},{"name":"NUM_LEAVES","type":"int64"},{"name":"NUM_BRANCHES","type":"int64"}]}
|
||||
23
internal/engine/googlesql/dialect/types.jsonl
Normal file
23
internal/engine/googlesql/dialect/types.jsonl
Normal file
@@ -0,0 +1,23 @@
|
||||
{"name": "bool", "category": "B"}
|
||||
{"name": "int64", "category": "N"}
|
||||
{"name": "float32", "category": "N"}
|
||||
{"name": "float64", "category": "N"}
|
||||
{"name": "numeric", "category": "N"}
|
||||
{"name": "bignumeric", "category": "N"}
|
||||
{"name": "string", "category": "S"}
|
||||
{"name": "bytes", "category": "S"}
|
||||
{"name": "uuid", "category": "S"}
|
||||
{"name": "date", "category": "D"}
|
||||
{"name": "datetime", "category": "D"}
|
||||
{"name": "time", "category": "D"}
|
||||
{"name": "timestamp", "category": "D"}
|
||||
{"name": "interval", "category": "T"}
|
||||
{"name": "json", "category": "U"}
|
||||
{"name": "geography", "category": "U"}
|
||||
{"name": "struct", "category": "U"}
|
||||
{"name": "enum", "category": "U"}
|
||||
{"name": "proto", "category": "U"}
|
||||
{"name": "tokenlist", "category": "U"}
|
||||
{"name": "array", "category": "A"}
|
||||
{"name": "range", "category": "U"}
|
||||
{"name": "map", "category": "U"}
|
||||
70
internal/engine/googlesql/parse.go
Normal file
70
internal/engine/googlesql/parse.go
Normal file
@@ -0,0 +1,70 @@
|
||||
package googlesql
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"io"
|
||||
|
||||
"github.com/sqlc-dev/zetajones/parser"
|
||||
|
||||
"github.com/sqlc-dev/sqlc/internal/source"
|
||||
"github.com/sqlc-dev/sqlc/internal/sql/ast"
|
||||
)
|
||||
|
||||
func NewParser() *Parser {
|
||||
return &Parser{}
|
||||
}
|
||||
|
||||
type Parser struct{}
|
||||
|
||||
func (p *Parser) Parse(r io.Reader) ([]ast.Statement, error) {
|
||||
blob, err := io.ReadAll(r)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
stmtNodes, err := parser.Parse(ctx, bytes.NewReader(blob))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// zetajones node locations are byte offsets into the input. Following the
|
||||
// convention used by the other engines, a statement's location starts at the
|
||||
// end of the previous statement (or the start of the input) so that any
|
||||
// leading comment — in particular the "-- name:" annotation sqlc relies on —
|
||||
// is captured as part of the statement.
|
||||
var stmts []ast.Statement
|
||||
loc := 0
|
||||
for _, stmt := range stmtNodes {
|
||||
converter := &cc{}
|
||||
out := converter.convert(stmt)
|
||||
if _, ok := out.(*ast.TODO); ok {
|
||||
// Skip over the unsupported statement (and its trailing semicolon)
|
||||
// so the next statement's leading comment is measured from here.
|
||||
loc = stmt.End() + 1
|
||||
continue
|
||||
}
|
||||
|
||||
end := stmt.End()
|
||||
stmts = append(stmts, ast.Statement{
|
||||
Raw: &ast.RawStmt{
|
||||
Stmt: out,
|
||||
StmtLocation: loc,
|
||||
StmtLen: end - loc,
|
||||
},
|
||||
})
|
||||
loc = end + 1
|
||||
}
|
||||
|
||||
return stmts, nil
|
||||
}
|
||||
|
||||
// https://cloud.google.com/bigquery/docs/reference/standard-sql/lexical#comments
|
||||
func (p *Parser) CommentSyntax() source.CommentSyntax {
|
||||
return source.CommentSyntax{
|
||||
Dash: true, // -- comment
|
||||
SlashStar: true, // /* comment */
|
||||
Hash: true, // # comment
|
||||
}
|
||||
}
|
||||
11
internal/engine/googlesql/reserved.go
Normal file
11
internal/engine/googlesql/reserved.go
Normal file
@@ -0,0 +1,11 @@
|
||||
package googlesql
|
||||
|
||||
import (
|
||||
"github.com/sqlc-dev/zetajones/token"
|
||||
)
|
||||
|
||||
// IsReservedKeyword reports whether s is a reserved keyword in GoogleSQL; see
|
||||
// https://cloud.google.com/bigquery/docs/reference/standard-sql/lexical#reserved_keywords
|
||||
func (p *Parser) IsReservedKeyword(s string) bool {
|
||||
return token.IsReservedKeyword(s)
|
||||
}
|
||||
16
internal/engine/googlesql/seed.go
Normal file
16
internal/engine/googlesql/seed.go
Normal file
@@ -0,0 +1,16 @@
|
||||
package googlesql
|
||||
|
||||
import (
|
||||
"embed"
|
||||
|
||||
"github.com/sqlc-dev/sqlc/internal/core"
|
||||
"github.com/sqlc-dev/sqlc/internal/core/seed"
|
||||
)
|
||||
|
||||
//go:embed dialect
|
||||
var dialectFS embed.FS
|
||||
|
||||
// Dialect returns the catalog option that seeds GoogleSQL's type system.
|
||||
func Dialect() core.Option {
|
||||
return seed.Dialect(dialectFS, "dialect")
|
||||
}
|
||||
9
internal/engine/googlesql/stdlib.go
Normal file
9
internal/engine/googlesql/stdlib.go
Normal file
@@ -0,0 +1,9 @@
|
||||
package googlesql
|
||||
|
||||
import (
|
||||
"github.com/sqlc-dev/sqlc/internal/sql/catalog"
|
||||
)
|
||||
|
||||
func defaultSchema(name string) *catalog.Schema {
|
||||
return &catalog.Schema{Name: name}
|
||||
}
|
||||
298
internal/engine/googlesql/utils.go
Normal file
298
internal/engine/googlesql/utils.go
Normal file
@@ -0,0 +1,298 @@
|
||||
package googlesql
|
||||
|
||||
import (
|
||||
"log"
|
||||
"strings"
|
||||
|
||||
zjast "github.com/sqlc-dev/zetajones/ast"
|
||||
|
||||
"github.com/sqlc-dev/sqlc/internal/debug"
|
||||
"github.com/sqlc-dev/sqlc/internal/sql/ast"
|
||||
)
|
||||
|
||||
func todo(n zjast.Node) *ast.TODO {
|
||||
if debug.Active {
|
||||
log.Printf("googlesql.convert: Unknown node type %T\n", n)
|
||||
}
|
||||
return &ast.TODO{}
|
||||
}
|
||||
|
||||
// identifier passes table and column identifiers through unchanged. GoogleSQL
|
||||
// keywords are case-insensitive, but table names (on BigQuery) are
|
||||
// case-sensitive, so unlike the MySQL and ClickHouse engines we do not
|
||||
// lowercase identifiers here. Function and type names, which are
|
||||
// case-insensitive, are lowercased at their call sites instead.
|
||||
func identifier(id string) string {
|
||||
return id
|
||||
}
|
||||
|
||||
func NewIdentifier(t string) *ast.String {
|
||||
return &ast.String{Str: identifier(t)}
|
||||
}
|
||||
|
||||
// pathParts returns the identifier names of a dotted path expression.
|
||||
func pathParts(n *zjast.PathExpression) []string {
|
||||
if n == nil {
|
||||
return nil
|
||||
}
|
||||
parts := make([]string, 0, len(n.Names))
|
||||
for _, id := range n.Names {
|
||||
if id == nil {
|
||||
continue
|
||||
}
|
||||
parts = append(parts, id.Name)
|
||||
}
|
||||
return parts
|
||||
}
|
||||
|
||||
func parseTableName(n *zjast.PathExpression) *ast.TableName {
|
||||
name := &ast.TableName{}
|
||||
parts := pathParts(n)
|
||||
switch len(parts) {
|
||||
case 0:
|
||||
case 1:
|
||||
name.Name = identifier(parts[0])
|
||||
case 2:
|
||||
name.Schema = identifier(parts[0])
|
||||
name.Name = identifier(parts[1])
|
||||
default:
|
||||
name.Catalog = identifier(parts[0])
|
||||
name.Schema = identifier(parts[len(parts)-2])
|
||||
name.Name = identifier(parts[len(parts)-1])
|
||||
}
|
||||
return name
|
||||
}
|
||||
|
||||
func parseRangeVar(n *zjast.PathExpression) *ast.RangeVar {
|
||||
tn := parseTableName(n)
|
||||
rv := &ast.RangeVar{}
|
||||
if n != nil {
|
||||
rv.Location = n.Pos()
|
||||
}
|
||||
if tn.Catalog != "" {
|
||||
catalog := tn.Catalog
|
||||
rv.Catalogname = &catalog
|
||||
}
|
||||
if tn.Schema != "" {
|
||||
schema := tn.Schema
|
||||
rv.Schemaname = &schema
|
||||
}
|
||||
if tn.Name != "" {
|
||||
relname := tn.Name
|
||||
rv.Relname = &relname
|
||||
}
|
||||
return rv
|
||||
}
|
||||
|
||||
func convertAlias(a *zjast.Alias) *ast.Alias {
|
||||
if a == nil || a.Identifier == nil {
|
||||
return nil
|
||||
}
|
||||
name := identifier(a.Identifier.Name)
|
||||
return &ast.Alias{Aliasname: &name}
|
||||
}
|
||||
|
||||
// whereExpr unwraps a WHERE clause node to its expression. The DELETE and
|
||||
// UPDATE statement nodes hold either a *WhereClause or a bare expression.
|
||||
func whereExpr(node zjast.Node) zjast.Node {
|
||||
if wc, ok := node.(*zjast.WhereClause); ok {
|
||||
return wc.Expr
|
||||
}
|
||||
return node
|
||||
}
|
||||
|
||||
// stringLiteralValue concatenates and unquotes the components of a string
|
||||
// literal.
|
||||
func stringLiteralValue(n *zjast.StringLiteral) string {
|
||||
var sb strings.Builder
|
||||
for _, comp := range n.Components {
|
||||
if comp == nil {
|
||||
continue
|
||||
}
|
||||
sb.WriteString(unquote(comp.Image))
|
||||
}
|
||||
return sb.String()
|
||||
}
|
||||
|
||||
// unquote strips the optional r/b prefix and the surrounding quotes from a
|
||||
// string literal component and decodes escape sequences for non-raw strings.
|
||||
// It is best-effort: malformed input is returned unchanged.
|
||||
func unquote(image string) string {
|
||||
raw := false
|
||||
i := 0
|
||||
prefix:
|
||||
for i < len(image) {
|
||||
switch image[i] {
|
||||
case 'r', 'R':
|
||||
raw = true
|
||||
i++
|
||||
case 'b', 'B':
|
||||
i++
|
||||
default:
|
||||
break prefix
|
||||
}
|
||||
}
|
||||
s := image[i:]
|
||||
for _, q := range []string{`'''`, `"""`, `'`, `"`} {
|
||||
if len(s) >= 2*len(q) && strings.HasPrefix(s, q) && strings.HasSuffix(s, q) {
|
||||
s = s[len(q) : len(s)-len(q)]
|
||||
if raw || !strings.ContainsRune(s, '\\') {
|
||||
return s
|
||||
}
|
||||
return decodeEscapes(s)
|
||||
}
|
||||
}
|
||||
return image
|
||||
}
|
||||
|
||||
func decodeEscapes(s string) string {
|
||||
var sb strings.Builder
|
||||
for i := 0; i < len(s); i++ {
|
||||
ch := s[i]
|
||||
if ch != '\\' || i+1 >= len(s) {
|
||||
sb.WriteByte(ch)
|
||||
continue
|
||||
}
|
||||
i++
|
||||
switch s[i] {
|
||||
case 'n':
|
||||
sb.WriteByte('\n')
|
||||
case 't':
|
||||
sb.WriteByte('\t')
|
||||
case 'r':
|
||||
sb.WriteByte('\r')
|
||||
case 'a':
|
||||
sb.WriteByte('\a')
|
||||
case 'b':
|
||||
sb.WriteByte('\b')
|
||||
case 'f':
|
||||
sb.WriteByte('\f')
|
||||
case 'v':
|
||||
sb.WriteByte('\v')
|
||||
case '\\', '\'', '"', '?', '`':
|
||||
sb.WriteByte(s[i])
|
||||
default:
|
||||
// Unknown escape (\x, \u, ...): keep it verbatim.
|
||||
sb.WriteByte('\\')
|
||||
sb.WriteByte(s[i])
|
||||
}
|
||||
}
|
||||
return sb.String()
|
||||
}
|
||||
|
||||
// typeName renders a zetajones type node (used by CAST) as a lowercased type
|
||||
// name. Nested types degrade to a readable representation.
|
||||
// typeName spells a type the way the analysis core reads one: a family
|
||||
// applied to its arguments, with an array's element, a struct's labelled
|
||||
// fields, a range's subtype and a map's key and value nested, and a
|
||||
// parameter list's integers and MAX written as they were.
|
||||
func typeName(node zjast.Node) string {
|
||||
switch t := node.(type) {
|
||||
case *zjast.SimpleType:
|
||||
return strings.ToLower(strings.Join(pathParts(t.Name), ".")) + typeParameters(t.TypeParameters)
|
||||
case *zjast.ArrayType:
|
||||
return "array(" + typeName(t.ElementType) + ")"
|
||||
case *zjast.StructType:
|
||||
fields := make([]string, 0, len(t.Fields))
|
||||
for _, f := range t.Fields {
|
||||
field := typeName(f.Type)
|
||||
if f.Name != nil {
|
||||
field = identifier(f.Name.Name) + ": " + field
|
||||
}
|
||||
fields = append(fields, field)
|
||||
}
|
||||
return "struct(" + strings.Join(fields, ", ") + ")"
|
||||
case *zjast.RangeType:
|
||||
return "range(" + typeName(t.ElementType) + ")"
|
||||
case *zjast.MapType:
|
||||
return "map(" + typeName(t.KeyType) + ", " + typeName(t.ValueType) + ")"
|
||||
default:
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
// typeParameters spells a parameter list, STRING(10) or BYTES(MAX), as the
|
||||
// arguments of a call.
|
||||
func typeParameters(params *zjast.TypeParameterList) string {
|
||||
if params == nil || len(params.Parameters) == 0 {
|
||||
return ""
|
||||
}
|
||||
parts := make([]string, 0, len(params.Parameters))
|
||||
for _, p := range params.Parameters {
|
||||
switch v := p.(type) {
|
||||
case *zjast.IntLiteral:
|
||||
parts = append(parts, v.Image)
|
||||
case *zjast.MaxLiteral:
|
||||
parts = append(parts, "max")
|
||||
default:
|
||||
continue
|
||||
}
|
||||
}
|
||||
if len(parts) == 0 {
|
||||
return ""
|
||||
}
|
||||
return "(" + strings.Join(parts, ", ") + ")"
|
||||
}
|
||||
|
||||
// columnSchemaTypeName renders a CREATE TABLE column schema as a lowercased
|
||||
// type name. Nested types degrade to a readable representation.
|
||||
// columnSchemaTypeName spells a column's type the way typeName spells a
|
||||
// type.
|
||||
func columnSchemaTypeName(node zjast.Node) string {
|
||||
switch t := node.(type) {
|
||||
case *zjast.SimpleColumnSchema:
|
||||
return strings.ToLower(strings.Join(pathParts(t.Type), ".")) + typeParameters(t.TypeParameters)
|
||||
case *zjast.ArrayColumnSchema:
|
||||
return "array(" + columnSchemaTypeName(t.ElementSchema) + ")"
|
||||
case *zjast.StructColumnSchema:
|
||||
fields := make([]string, 0, len(t.Fields))
|
||||
for _, f := range t.Fields {
|
||||
field := columnSchemaTypeName(f.Schema)
|
||||
if f.Name != nil {
|
||||
field = identifier(f.Name.Name) + ": " + field
|
||||
}
|
||||
fields = append(fields, field)
|
||||
}
|
||||
return "struct(" + strings.Join(fields, ", ") + ")"
|
||||
default:
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
// columnAttributes returns the attribute list (NOT NULL, PRIMARY KEY, ...) of
|
||||
// a column schema, if any.
|
||||
func columnAttributes(node zjast.Node) *zjast.ColumnAttributeList {
|
||||
switch t := node.(type) {
|
||||
case *zjast.SimpleColumnSchema:
|
||||
return t.Attributes
|
||||
case *zjast.ArrayColumnSchema:
|
||||
return t.Attributes
|
||||
case *zjast.StructColumnSchema:
|
||||
return t.Attributes
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// columnRefFields flattens an identifier, path expression, or dotted
|
||||
// identifier chain into ColumnRef fields.
|
||||
func columnRefFields(node zjast.Node) ([]ast.Node, bool) {
|
||||
switch n := node.(type) {
|
||||
case *zjast.Identifier:
|
||||
return []ast.Node{NewIdentifier(n.Name)}, true
|
||||
case *zjast.PathExpression:
|
||||
var fields []ast.Node
|
||||
for _, part := range pathParts(n) {
|
||||
fields = append(fields, NewIdentifier(part))
|
||||
}
|
||||
return fields, len(fields) > 0
|
||||
case *zjast.DotIdentifier:
|
||||
base, ok := columnRefFields(n.Expr)
|
||||
if !ok || n.Name == nil {
|
||||
return nil, false
|
||||
}
|
||||
return append(base, NewIdentifier(n.Name.Name)), true
|
||||
default:
|
||||
return nil, false
|
||||
}
|
||||
}
|
||||
1199
internal/engine/mssql/convert.go
Normal file
1199
internal/engine/mssql/convert.go
Normal file
File diff suppressed because it is too large
Load Diff
84
internal/engine/mssql/dialect/dialect.json
Normal file
84
internal/engine/mssql/dialect/dialect.json
Normal file
@@ -0,0 +1,84 @@
|
||||
{
|
||||
"dialect": "mssql",
|
||||
"default_schema": "dbo",
|
||||
"const": {
|
||||
"integer": "int",
|
||||
"float": "float",
|
||||
"string": "varchar",
|
||||
"bool": "bit"
|
||||
},
|
||||
"bool": "bit",
|
||||
"comparison": ["=", "<>", "!=", "<", "<=", ">", ">="],
|
||||
"comparison_categories": "NBSD",
|
||||
"arithmetic": ["+", "-", "*", "/", "%"],
|
||||
"arithmetic_categories": "N",
|
||||
"cast_categories": "NSD",
|
||||
"idents": ["max"],
|
||||
"rewrites": [
|
||||
{
|
||||
"from": "sysname",
|
||||
"to": "nvarchar(128)"
|
||||
},
|
||||
{
|
||||
"from": "float($1)",
|
||||
"to": "real",
|
||||
"where": "$1 <= 24"
|
||||
},
|
||||
{
|
||||
"from": "float($1)",
|
||||
"to": "float"
|
||||
},
|
||||
{
|
||||
"from": "char",
|
||||
"to": "char(1)"
|
||||
},
|
||||
{
|
||||
"from": "varchar",
|
||||
"to": "varchar(1)"
|
||||
},
|
||||
{
|
||||
"from": "nchar",
|
||||
"to": "nchar(1)"
|
||||
},
|
||||
{
|
||||
"from": "nvarchar",
|
||||
"to": "nvarchar(1)"
|
||||
},
|
||||
{
|
||||
"from": "binary",
|
||||
"to": "binary(1)"
|
||||
},
|
||||
{
|
||||
"from": "varbinary",
|
||||
"to": "varbinary(1)"
|
||||
},
|
||||
{
|
||||
"from": "decimal",
|
||||
"to": "decimal(18, 0)"
|
||||
},
|
||||
{
|
||||
"from": "decimal($1)",
|
||||
"to": "decimal($1, 0)"
|
||||
},
|
||||
{
|
||||
"from": "numeric",
|
||||
"to": "numeric(18, 0)"
|
||||
},
|
||||
{
|
||||
"from": "numeric($1)",
|
||||
"to": "numeric($1, 0)"
|
||||
},
|
||||
{
|
||||
"from": "datetime2",
|
||||
"to": "datetime2(7)"
|
||||
},
|
||||
{
|
||||
"from": "time",
|
||||
"to": "time(7)"
|
||||
},
|
||||
{
|
||||
"from": "datetimeoffset",
|
||||
"to": "datetimeoffset(7)"
|
||||
}
|
||||
]
|
||||
}
|
||||
76
internal/engine/mssql/dialect/functions.jsonl
Normal file
76
internal/engine/mssql/dialect/functions.jsonl
Normal file
@@ -0,0 +1,76 @@
|
||||
{"name": "count", "kind": "a", "returns": "int"}
|
||||
{"name": "count_big", "kind": "a", "returns": "bigint"}
|
||||
{"name": "sum", "kind": "a", "args": [{"type": "bigint"}], "returns": "bigint", "nullable": true}
|
||||
{"name": "sum", "kind": "a", "args": [{"type": "int"}], "returns": "int", "nullable": true}
|
||||
{"name": "sum", "kind": "a", "args": [{"type": "smallint"}], "returns": "int", "nullable": true}
|
||||
{"name": "sum", "kind": "a", "args": [{"type": "tinyint"}], "returns": "int", "nullable": true}
|
||||
{"name": "sum", "kind": "a", "args": [{"type": "decimal"}], "returns": "decimal", "nullable": true}
|
||||
{"name": "sum", "kind": "a", "args": [{"type": "money"}], "returns": "money", "nullable": true}
|
||||
{"name": "sum", "kind": "a", "args": [{"type": "float"}], "returns": "float", "nullable": true}
|
||||
{"name": "sum", "kind": "a", "args": [{"type": "real"}], "returns": "float", "nullable": true}
|
||||
{"name": "avg", "kind": "a", "args": [{"type": "bigint"}], "returns": "bigint", "nullable": true}
|
||||
{"name": "avg", "kind": "a", "args": [{"type": "int"}], "returns": "int", "nullable": true}
|
||||
{"name": "avg", "kind": "a", "args": [{"type": "smallint"}], "returns": "int", "nullable": true}
|
||||
{"name": "avg", "kind": "a", "args": [{"type": "tinyint"}], "returns": "int", "nullable": true}
|
||||
{"name": "avg", "kind": "a", "args": [{"type": "decimal"}], "returns": "decimal", "nullable": true}
|
||||
{"name": "avg", "kind": "a", "args": [{"type": "money"}], "returns": "money", "nullable": true}
|
||||
{"name": "avg", "kind": "a", "args": [{"type": "float"}], "returns": "float", "nullable": true}
|
||||
{"name": "avg", "kind": "a", "args": [{"type": "real"}], "returns": "float", "nullable": true}
|
||||
{"name": "min", "kind": "a", "args": [{"type": "bigint"}], "returns": "bigint", "nullable": true}
|
||||
{"name": "min", "kind": "a", "args": [{"type": "int"}], "returns": "int", "nullable": true}
|
||||
{"name": "min", "kind": "a", "args": [{"type": "smallint"}], "returns": "smallint", "nullable": true}
|
||||
{"name": "min", "kind": "a", "args": [{"type": "tinyint"}], "returns": "tinyint", "nullable": true}
|
||||
{"name": "min", "kind": "a", "args": [{"type": "decimal"}], "returns": "decimal", "nullable": true}
|
||||
{"name": "min", "kind": "a", "args": [{"type": "money"}], "returns": "money", "nullable": true}
|
||||
{"name": "min", "kind": "a", "args": [{"type": "float"}], "returns": "float", "nullable": true}
|
||||
{"name": "min", "kind": "a", "args": [{"type": "real"}], "returns": "real", "nullable": true}
|
||||
{"name": "min", "kind": "a", "args": [{"type": "date"}], "returns": "date", "nullable": true}
|
||||
{"name": "min", "kind": "a", "args": [{"type": "datetime"}], "returns": "datetime", "nullable": true}
|
||||
{"name": "min", "kind": "a", "args": [{"type": "datetime2"}], "returns": "datetime2", "nullable": true}
|
||||
{"name": "min", "kind": "a", "args": [{"type": "datetimeoffset"}], "returns": "datetimeoffset", "nullable": true}
|
||||
{"name": "min", "kind": "a", "args": [{"type": "time"}], "returns": "time", "nullable": true}
|
||||
{"name": "min", "kind": "a", "args": [{"type": "varchar"}], "returns": "varchar", "nullable": true}
|
||||
{"name": "min", "kind": "a", "args": [{"type": "nvarchar"}], "returns": "nvarchar", "nullable": true}
|
||||
{"name": "min", "kind": "a", "args": [{"type": "char"}], "returns": "char", "nullable": true}
|
||||
{"name": "min", "kind": "a", "args": [{"type": "nchar"}], "returns": "nchar", "nullable": true}
|
||||
{"name": "max", "kind": "a", "args": [{"type": "bigint"}], "returns": "bigint", "nullable": true}
|
||||
{"name": "max", "kind": "a", "args": [{"type": "int"}], "returns": "int", "nullable": true}
|
||||
{"name": "max", "kind": "a", "args": [{"type": "smallint"}], "returns": "smallint", "nullable": true}
|
||||
{"name": "max", "kind": "a", "args": [{"type": "tinyint"}], "returns": "tinyint", "nullable": true}
|
||||
{"name": "max", "kind": "a", "args": [{"type": "decimal"}], "returns": "decimal", "nullable": true}
|
||||
{"name": "max", "kind": "a", "args": [{"type": "money"}], "returns": "money", "nullable": true}
|
||||
{"name": "max", "kind": "a", "args": [{"type": "float"}], "returns": "float", "nullable": true}
|
||||
{"name": "max", "kind": "a", "args": [{"type": "real"}], "returns": "real", "nullable": true}
|
||||
{"name": "max", "kind": "a", "args": [{"type": "date"}], "returns": "date", "nullable": true}
|
||||
{"name": "max", "kind": "a", "args": [{"type": "datetime"}], "returns": "datetime", "nullable": true}
|
||||
{"name": "max", "kind": "a", "args": [{"type": "datetime2"}], "returns": "datetime2", "nullable": true}
|
||||
{"name": "max", "kind": "a", "args": [{"type": "datetimeoffset"}], "returns": "datetimeoffset", "nullable": true}
|
||||
{"name": "max", "kind": "a", "args": [{"type": "time"}], "returns": "time", "nullable": true}
|
||||
{"name": "max", "kind": "a", "args": [{"type": "varchar"}], "returns": "varchar", "nullable": true}
|
||||
{"name": "max", "kind": "a", "args": [{"type": "nvarchar"}], "returns": "nvarchar", "nullable": true}
|
||||
{"name": "max", "kind": "a", "args": [{"type": "char"}], "returns": "char", "nullable": true}
|
||||
{"name": "max", "kind": "a", "args": [{"type": "nchar"}], "returns": "nchar", "nullable": true}
|
||||
{"name": "getdate", "returns": "datetime"}
|
||||
{"name": "getutcdate", "returns": "datetime"}
|
||||
{"name": "sysdatetime", "returns": "datetime2"}
|
||||
{"name": "sysutcdatetime", "returns": "datetime2"}
|
||||
{"name": "sysdatetimeoffset", "returns": "datetimeoffset"}
|
||||
{"name": "current_timestamp", "returns": "datetime"}
|
||||
{"name": "newid", "returns": "uniqueidentifier"}
|
||||
{"name": "newsequentialid", "returns": "uniqueidentifier"}
|
||||
{"name": "scope_identity", "returns": "decimal"}
|
||||
{"name": "len", "args": [{"type": "varchar"}], "returns": "int"}
|
||||
{"name": "len", "args": [{"type": "nvarchar"}], "returns": "int"}
|
||||
{"name": "datalength", "args": [{"type": "varchar"}], "returns": "int"}
|
||||
{"name": "datalength", "args": [{"type": "nvarchar"}], "returns": "int"}
|
||||
{"name": "datalength", "args": [{"type": "varbinary"}], "returns": "int"}
|
||||
{"name": "lower", "args": [{"type": "varchar"}], "returns": "varchar"}
|
||||
{"name": "lower", "args": [{"type": "nvarchar"}], "returns": "nvarchar"}
|
||||
{"name": "upper", "args": [{"type": "varchar"}], "returns": "varchar"}
|
||||
{"name": "upper", "args": [{"type": "nvarchar"}], "returns": "nvarchar"}
|
||||
{"name": "ltrim", "args": [{"type": "varchar"}], "returns": "varchar"}
|
||||
{"name": "ltrim", "args": [{"type": "nvarchar"}], "returns": "nvarchar"}
|
||||
{"name": "rtrim", "args": [{"type": "varchar"}], "returns": "varchar"}
|
||||
{"name": "rtrim", "args": [{"type": "nvarchar"}], "returns": "nvarchar"}
|
||||
{"name": "trim", "args": [{"type": "varchar"}], "returns": "varchar"}
|
||||
{"name": "trim", "args": [{"type": "nvarchar"}], "returns": "nvarchar"}
|
||||
34
internal/engine/mssql/dialect/types.jsonl
Normal file
34
internal/engine/mssql/dialect/types.jsonl
Normal file
@@ -0,0 +1,34 @@
|
||||
{"name": "bigint", "category": "N"}
|
||||
{"name": "int", "category": "N", "aliases": ["integer"]}
|
||||
{"name": "smallint", "category": "N"}
|
||||
{"name": "tinyint", "category": "N"}
|
||||
{"name": "bit", "category": "B"}
|
||||
{"name": "decimal", "category": "N", "aliases": ["dec", "numeric"]}
|
||||
{"name": "money", "category": "N"}
|
||||
{"name": "smallmoney", "category": "N"}
|
||||
{"name": "float", "category": "N", "aliases": ["double precision"]}
|
||||
{"name": "real", "category": "N"}
|
||||
{"name": "date", "category": "D"}
|
||||
{"name": "datetime", "category": "D"}
|
||||
{"name": "datetime2", "category": "D"}
|
||||
{"name": "smalldatetime", "category": "D"}
|
||||
{"name": "datetimeoffset", "category": "D"}
|
||||
{"name": "time", "category": "D"}
|
||||
{"name": "char", "category": "S", "aliases": ["character"]}
|
||||
{"name": "varchar", "category": "S"}
|
||||
{"name": "text", "category": "S"}
|
||||
{"name": "nchar", "category": "S"}
|
||||
{"name": "nvarchar", "category": "S"}
|
||||
{"name": "ntext", "category": "S"}
|
||||
{"name": "binary", "category": "S"}
|
||||
{"name": "varbinary", "category": "S"}
|
||||
{"name": "image", "category": "S"}
|
||||
{"name": "uniqueidentifier", "category": "S"}
|
||||
{"name": "xml", "category": "U"}
|
||||
{"name": "json", "category": "U"}
|
||||
{"name": "sql_variant", "category": "U"}
|
||||
{"name": "rowversion", "category": "U", "aliases": ["timestamp"]}
|
||||
{"name": "hierarchyid", "category": "U"}
|
||||
{"name": "geography", "category": "U"}
|
||||
{"name": "geometry", "category": "U"}
|
||||
{"name": "vector", "category": "U"}
|
||||
187
internal/engine/mssql/parse.go
Normal file
187
internal/engine/mssql/parse.go
Normal file
@@ -0,0 +1,187 @@
|
||||
package mssql
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"io"
|
||||
"unicode/utf8"
|
||||
|
||||
"github.com/sqlc-dev/teesql/parser"
|
||||
|
||||
"github.com/sqlc-dev/sqlc/internal/source"
|
||||
"github.com/sqlc-dev/sqlc/internal/sql/ast"
|
||||
)
|
||||
|
||||
func NewParser() *Parser {
|
||||
return &Parser{}
|
||||
}
|
||||
|
||||
type Parser struct{}
|
||||
|
||||
func (p *Parser) Parse(r io.Reader) ([]ast.Statement, error) {
|
||||
blob, err := io.ReadAll(r)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
script, err := parser.Parse(ctx, bytes.NewReader(blob))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
toByte := byteOffsets(blob)
|
||||
|
||||
var stmts []ast.Statement
|
||||
loc := 0
|
||||
for _, batch := range script.Batches {
|
||||
for _, stmt := range batch.Statements {
|
||||
start := loc
|
||||
if frag, ok := stmt.(fragmented); ok && frag.Frag().HasSpan() {
|
||||
if s := toByte(frag.Frag().StartOffset); s > start {
|
||||
start = s
|
||||
}
|
||||
}
|
||||
end := statementEnd(blob, start)
|
||||
|
||||
converter := &cc{toByte: toByte}
|
||||
out := converter.convert(stmt)
|
||||
if _, ok := out.(*ast.TODO); ok {
|
||||
loc = end
|
||||
continue
|
||||
}
|
||||
|
||||
stmts = append(stmts, ast.Statement{
|
||||
Raw: &ast.RawStmt{
|
||||
Stmt: out,
|
||||
StmtLocation: loc,
|
||||
StmtLen: end - loc,
|
||||
},
|
||||
})
|
||||
loc = end
|
||||
}
|
||||
}
|
||||
|
||||
return stmts, nil
|
||||
}
|
||||
|
||||
// byteOffsets returns a function mapping a UTF-16 code-unit offset — how
|
||||
// teesql records source spans, mirroring ScriptDom — to a byte offset in
|
||||
// blob. For ASCII input the two are identical and the identity is returned.
|
||||
func byteOffsets(blob []byte) func(int) int {
|
||||
ascii := true
|
||||
for _, b := range blob {
|
||||
if b >= utf8.RuneSelf {
|
||||
ascii = false
|
||||
break
|
||||
}
|
||||
}
|
||||
if ascii {
|
||||
return func(off int) int { return off }
|
||||
}
|
||||
// Walk the blob once, recording the byte index at which each UTF-16
|
||||
// offset begins.
|
||||
byteAt := make([]int, 0, len(blob)+1)
|
||||
for i := 0; i < len(blob); {
|
||||
r, size := utf8.DecodeRune(blob[i:])
|
||||
units := 1
|
||||
if r > 0xFFFF {
|
||||
units = 2
|
||||
}
|
||||
for u := 0; u < units; u++ {
|
||||
byteAt = append(byteAt, i)
|
||||
}
|
||||
i += size
|
||||
}
|
||||
byteAt = append(byteAt, len(blob))
|
||||
return func(off int) int {
|
||||
if off < 0 {
|
||||
return 0
|
||||
}
|
||||
if off >= len(byteAt) {
|
||||
return len(blob)
|
||||
}
|
||||
return byteAt[off]
|
||||
}
|
||||
}
|
||||
|
||||
// statementEnd scans from start for the semicolon ending the statement,
|
||||
// skipping string literals, quoted and bracketed identifiers, and comments.
|
||||
func statementEnd(blob []byte, start int) int {
|
||||
for i := start; i < len(blob); i++ {
|
||||
switch blob[i] {
|
||||
case '\'', '"':
|
||||
i = skipQuoted(blob, i)
|
||||
case '[':
|
||||
i = skipBracketed(blob, i)
|
||||
case '-':
|
||||
if i+1 < len(blob) && blob[i+1] == '-' {
|
||||
i = skipLineComment(blob, i)
|
||||
}
|
||||
case '/':
|
||||
if i+1 < len(blob) && blob[i+1] == '*' {
|
||||
i = skipBlockComment(blob, i)
|
||||
}
|
||||
case ';':
|
||||
return i + 1
|
||||
}
|
||||
}
|
||||
return len(blob)
|
||||
}
|
||||
|
||||
// skipQuoted skips a string literal or quoted identifier; T-SQL escapes the
|
||||
// quote character by doubling it.
|
||||
func skipQuoted(blob []byte, i int) int {
|
||||
q := blob[i]
|
||||
for j := i + 1; j < len(blob); j++ {
|
||||
if blob[j] == q {
|
||||
if j+1 < len(blob) && blob[j+1] == q {
|
||||
j++
|
||||
continue
|
||||
}
|
||||
return j
|
||||
}
|
||||
}
|
||||
return len(blob) - 1
|
||||
}
|
||||
|
||||
// skipBracketed skips a [bracketed identifier]; a closing bracket is escaped
|
||||
// by doubling it.
|
||||
func skipBracketed(blob []byte, i int) int {
|
||||
for j := i + 1; j < len(blob); j++ {
|
||||
if blob[j] == ']' {
|
||||
if j+1 < len(blob) && blob[j+1] == ']' {
|
||||
j++
|
||||
continue
|
||||
}
|
||||
return j
|
||||
}
|
||||
}
|
||||
return len(blob) - 1
|
||||
}
|
||||
|
||||
func skipLineComment(blob []byte, i int) int {
|
||||
for j := i; j < len(blob); j++ {
|
||||
if blob[j] == '\n' {
|
||||
return j
|
||||
}
|
||||
}
|
||||
return len(blob) - 1
|
||||
}
|
||||
|
||||
func skipBlockComment(blob []byte, i int) int {
|
||||
for j := i + 2; j < len(blob); j++ {
|
||||
if blob[j] == '*' && j+1 < len(blob) && blob[j+1] == '/' {
|
||||
return j + 1
|
||||
}
|
||||
}
|
||||
return len(blob) - 1
|
||||
}
|
||||
|
||||
// https://learn.microsoft.com/en-us/sql/t-sql/language-elements/comment-transact-sql
|
||||
func (p *Parser) CommentSyntax() source.CommentSyntax {
|
||||
return source.CommentSyntax{
|
||||
Dash: true, // -- comment
|
||||
SlashStar: true, // /* comment */
|
||||
}
|
||||
}
|
||||
196
internal/engine/mssql/reserved.go
Normal file
196
internal/engine/mssql/reserved.go
Normal file
@@ -0,0 +1,196 @@
|
||||
package mssql
|
||||
|
||||
import "strings"
|
||||
|
||||
// https://learn.microsoft.com/en-us/sql/t-sql/language-elements/reserved-keywords-transact-sql
|
||||
func (p *Parser) IsReservedKeyword(s string) bool {
|
||||
switch strings.ToLower(s) {
|
||||
case "add":
|
||||
case "all":
|
||||
case "alter":
|
||||
case "and":
|
||||
case "any":
|
||||
case "as":
|
||||
case "asc":
|
||||
case "authorization":
|
||||
case "backup":
|
||||
case "begin":
|
||||
case "between":
|
||||
case "break":
|
||||
case "browse":
|
||||
case "bulk":
|
||||
case "by":
|
||||
case "cascade":
|
||||
case "case":
|
||||
case "check":
|
||||
case "checkpoint":
|
||||
case "close":
|
||||
case "clustered":
|
||||
case "coalesce":
|
||||
case "collate":
|
||||
case "column":
|
||||
case "commit":
|
||||
case "compute":
|
||||
case "constraint":
|
||||
case "contains":
|
||||
case "containstable":
|
||||
case "continue":
|
||||
case "convert":
|
||||
case "create":
|
||||
case "cross":
|
||||
case "current":
|
||||
case "current_date":
|
||||
case "current_time":
|
||||
case "current_timestamp":
|
||||
case "current_user":
|
||||
case "cursor":
|
||||
case "database":
|
||||
case "dbcc":
|
||||
case "deallocate":
|
||||
case "declare":
|
||||
case "default":
|
||||
case "delete":
|
||||
case "deny":
|
||||
case "desc":
|
||||
case "disk":
|
||||
case "distinct":
|
||||
case "distributed":
|
||||
case "double":
|
||||
case "drop":
|
||||
case "dump":
|
||||
case "else":
|
||||
case "end":
|
||||
case "errlvl":
|
||||
case "escape":
|
||||
case "except":
|
||||
case "exec":
|
||||
case "execute":
|
||||
case "exists":
|
||||
case "exit":
|
||||
case "external":
|
||||
case "fetch":
|
||||
case "file":
|
||||
case "fillfactor":
|
||||
case "for":
|
||||
case "foreign":
|
||||
case "freetext":
|
||||
case "freetexttable":
|
||||
case "from":
|
||||
case "full":
|
||||
case "function":
|
||||
case "goto":
|
||||
case "grant":
|
||||
case "group":
|
||||
case "having":
|
||||
case "holdlock":
|
||||
case "identity":
|
||||
case "identity_insert":
|
||||
case "identitycol":
|
||||
case "if":
|
||||
case "in":
|
||||
case "index":
|
||||
case "inner":
|
||||
case "insert":
|
||||
case "intersect":
|
||||
case "into":
|
||||
case "is":
|
||||
case "join":
|
||||
case "key":
|
||||
case "kill":
|
||||
case "left":
|
||||
case "like":
|
||||
case "lineno":
|
||||
case "load":
|
||||
case "merge":
|
||||
case "national":
|
||||
case "nocheck":
|
||||
case "nonclustered":
|
||||
case "not":
|
||||
case "null":
|
||||
case "nullif":
|
||||
case "of":
|
||||
case "off":
|
||||
case "offsets":
|
||||
case "on":
|
||||
case "open":
|
||||
case "opendatasource":
|
||||
case "openquery":
|
||||
case "openrowset":
|
||||
case "openxml":
|
||||
case "option":
|
||||
case "or":
|
||||
case "order":
|
||||
case "outer":
|
||||
case "over":
|
||||
case "percent":
|
||||
case "pivot":
|
||||
case "plan":
|
||||
case "precision":
|
||||
case "primary":
|
||||
case "print":
|
||||
case "proc":
|
||||
case "procedure":
|
||||
case "public":
|
||||
case "raiserror":
|
||||
case "read":
|
||||
case "readtext":
|
||||
case "reconfigure":
|
||||
case "references":
|
||||
case "replication":
|
||||
case "restore":
|
||||
case "restrict":
|
||||
case "return":
|
||||
case "revert":
|
||||
case "revoke":
|
||||
case "right":
|
||||
case "rollback":
|
||||
case "rowcount":
|
||||
case "rowguidcol":
|
||||
case "rule":
|
||||
case "save":
|
||||
case "schema":
|
||||
case "securityaudit":
|
||||
case "select":
|
||||
case "semantickeyphrasetable":
|
||||
case "semanticsimilaritydetailstable":
|
||||
case "semanticsimilaritytable":
|
||||
case "session_user":
|
||||
case "set":
|
||||
case "setuser":
|
||||
case "shutdown":
|
||||
case "some":
|
||||
case "statistics":
|
||||
case "system_user":
|
||||
case "table":
|
||||
case "tablesample":
|
||||
case "textsize":
|
||||
case "then":
|
||||
case "to":
|
||||
case "top":
|
||||
case "tran":
|
||||
case "transaction":
|
||||
case "trigger":
|
||||
case "truncate":
|
||||
case "try_convert":
|
||||
case "tsequal":
|
||||
case "union":
|
||||
case "unique":
|
||||
case "unpivot":
|
||||
case "update":
|
||||
case "updatetext":
|
||||
case "use":
|
||||
case "user":
|
||||
case "values":
|
||||
case "varying":
|
||||
case "view":
|
||||
case "waitfor":
|
||||
case "when":
|
||||
case "where":
|
||||
case "while":
|
||||
case "with":
|
||||
case "writetext":
|
||||
default:
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
16
internal/engine/mssql/seed.go
Normal file
16
internal/engine/mssql/seed.go
Normal file
@@ -0,0 +1,16 @@
|
||||
package mssql
|
||||
|
||||
import (
|
||||
"embed"
|
||||
|
||||
"github.com/sqlc-dev/sqlc/internal/core"
|
||||
"github.com/sqlc-dev/sqlc/internal/core/seed"
|
||||
)
|
||||
|
||||
//go:embed dialect
|
||||
var dialectFS embed.FS
|
||||
|
||||
// Dialect returns the catalog option that seeds SQL Server's type system.
|
||||
func Dialect() core.Option {
|
||||
return seed.Dialect(dialectFS, "dialect")
|
||||
}
|
||||
65
internal/engine/mssql/utils.go
Normal file
65
internal/engine/mssql/utils.go
Normal file
@@ -0,0 +1,65 @@
|
||||
package mssql
|
||||
|
||||
import (
|
||||
"log"
|
||||
"strings"
|
||||
|
||||
tsql "github.com/sqlc-dev/teesql/ast"
|
||||
|
||||
"github.com/sqlc-dev/sqlc/internal/debug"
|
||||
"github.com/sqlc-dev/sqlc/internal/sql/ast"
|
||||
)
|
||||
|
||||
// fragmented is satisfied by every teesql node via its embedded Fragment.
|
||||
type fragmented interface {
|
||||
Frag() *tsql.Fragment
|
||||
}
|
||||
|
||||
func todo(n tsql.Node) *ast.TODO {
|
||||
if debug.Active {
|
||||
log.Printf("mssql.convert: Unknown node type %T\n", n)
|
||||
}
|
||||
return &ast.TODO{}
|
||||
}
|
||||
|
||||
// identifier normalizes an identifier. T-SQL identifiers are
|
||||
// case-insensitive under the default collations.
|
||||
func identifier(id string) string {
|
||||
return strings.ToLower(id)
|
||||
}
|
||||
|
||||
func NewIdentifier(t string) *ast.String {
|
||||
return &ast.String{Str: identifier(t)}
|
||||
}
|
||||
|
||||
func identifierValue(id *tsql.Identifier) string {
|
||||
if id == nil {
|
||||
return ""
|
||||
}
|
||||
return identifier(id.Value)
|
||||
}
|
||||
|
||||
// schemaName returns the schema an object name qualifies it with. The "dbo"
|
||||
// default schema maps to the catalog's default namespace, so it is treated
|
||||
// as unqualified.
|
||||
func schemaName(n *tsql.SchemaObjectName) string {
|
||||
if n == nil || n.SchemaIdentifier == nil {
|
||||
return ""
|
||||
}
|
||||
s := identifier(n.SchemaIdentifier.Value)
|
||||
if s == "dbo" {
|
||||
return ""
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
func parseTableName(n *tsql.SchemaObjectName) *ast.TableName {
|
||||
if n == nil {
|
||||
return &ast.TableName{}
|
||||
}
|
||||
return &ast.TableName{
|
||||
Schema: schemaName(n),
|
||||
Name: identifierValue(n.BaseIdentifier),
|
||||
}
|
||||
}
|
||||
|
||||
322
internal/engine/postgresql/analyzer/analyze.go
Normal file
322
internal/engine/postgresql/analyzer/analyze.go
Normal file
@@ -0,0 +1,322 @@
|
||||
package analyzer
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/jackc/pgx/v5"
|
||||
"github.com/jackc/pgx/v5/pgconn"
|
||||
"github.com/jackc/pgx/v5/pgxpool"
|
||||
|
||||
core "github.com/sqlc-dev/sqlc/internal/analysis"
|
||||
"github.com/sqlc-dev/sqlc/internal/config"
|
||||
"github.com/sqlc-dev/sqlc/internal/dbmanager"
|
||||
"github.com/sqlc-dev/sqlc/internal/shfmt"
|
||||
"github.com/sqlc-dev/sqlc/internal/sql/ast"
|
||||
"github.com/sqlc-dev/sqlc/internal/sql/named"
|
||||
"github.com/sqlc-dev/sqlc/internal/sql/sqlerr"
|
||||
"github.com/sqlc-dev/sqlc/internal/sqlcdebug"
|
||||
)
|
||||
|
||||
var debugDatabases = sqlcdebug.New("databases")
|
||||
|
||||
type Analyzer struct {
|
||||
db config.Database
|
||||
client dbmanager.Client
|
||||
pool *pgxpool.Pool
|
||||
replacer *shfmt.Replacer
|
||||
formats sync.Map
|
||||
columns sync.Map
|
||||
tables sync.Map
|
||||
}
|
||||
|
||||
func New(client dbmanager.Client, db config.Database) *Analyzer {
|
||||
return &Analyzer{
|
||||
db: db,
|
||||
client: client,
|
||||
replacer: shfmt.NewReplacer(nil),
|
||||
}
|
||||
}
|
||||
|
||||
const columnQuery = `
|
||||
SELECT
|
||||
pg_catalog.format_type(pg_attribute.atttypid, pg_attribute.atttypmod) AS data_type,
|
||||
pg_attribute.attnotnull as not_null,
|
||||
pg_attribute.attndims as array_dims
|
||||
FROM
|
||||
pg_catalog.pg_attribute
|
||||
WHERE
|
||||
attrelid = $1
|
||||
AND attnum = $2;
|
||||
`
|
||||
|
||||
const tableQuery = `
|
||||
SELECT
|
||||
pg_class.relname as table_name,
|
||||
pg_namespace.nspname as schema_name
|
||||
FROM
|
||||
pg_catalog.pg_class
|
||||
JOIN
|
||||
pg_catalog.pg_namespace ON pg_namespace.oid = pg_class.relnamespace
|
||||
WHERE
|
||||
pg_class.oid = $1;
|
||||
`
|
||||
|
||||
type pgTable struct {
|
||||
TableName string `db:"table_name"`
|
||||
SchemaName string `db:"schema_name"`
|
||||
}
|
||||
|
||||
// Cache these types in memory
|
||||
func (a *Analyzer) tableInfo(ctx context.Context, oid uint32) (*pgTable, error) {
|
||||
ctbl, ok := a.tables.Load(oid)
|
||||
if ok {
|
||||
return ctbl.(*pgTable), nil
|
||||
}
|
||||
rows, err := a.pool.Query(ctx, tableQuery, oid)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
tbl, err := pgx.CollectOneRow(rows, pgx.RowToStructByName[pgTable])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
a.tables.Store(oid, &tbl)
|
||||
return &tbl, nil
|
||||
}
|
||||
|
||||
type pgColumn struct {
|
||||
DataType string `db:"data_type"`
|
||||
NotNull bool `db:"not_null"`
|
||||
ArrayDims int `db:"array_dims"`
|
||||
}
|
||||
|
||||
type columnKey struct {
|
||||
OID uint32
|
||||
Attr uint16
|
||||
}
|
||||
|
||||
// Cache these types in memory
|
||||
func (a *Analyzer) columnInfo(ctx context.Context, field pgconn.FieldDescription) (*pgColumn, error) {
|
||||
key := columnKey{field.TableOID, field.TableAttributeNumber}
|
||||
cinfo, ok := a.columns.Load(key)
|
||||
if ok {
|
||||
return cinfo.(*pgColumn), nil
|
||||
}
|
||||
rows, err := a.pool.Query(ctx, columnQuery, field.TableOID, int16(field.TableAttributeNumber))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
col, err := pgx.CollectOneRow(rows, pgx.RowToStructByName[pgColumn])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
a.columns.Store(key, &col)
|
||||
return &col, nil
|
||||
}
|
||||
|
||||
type formatKey struct {
|
||||
OID uint32
|
||||
Modified int32
|
||||
}
|
||||
|
||||
// TODO: Use PGX to do the lookup for basic OID types
|
||||
func (a *Analyzer) formatType(ctx context.Context, oid uint32, modifier int32) (string, error) {
|
||||
key := formatKey{oid, modifier}
|
||||
ftyp, ok := a.formats.Load(key)
|
||||
if ok {
|
||||
return ftyp.(string), nil
|
||||
}
|
||||
rows, err := a.pool.Query(ctx, `SELECT format_type($1, $2)`, oid, modifier)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
dt, err := pgx.CollectOneRow(rows, pgx.RowTo[string])
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
a.formats.Store(key, dt)
|
||||
return dt, err
|
||||
}
|
||||
|
||||
// TODO: This is bad
|
||||
func rewriteType(dt string) string {
|
||||
switch {
|
||||
case strings.HasPrefix(dt, "character("):
|
||||
return "pg_catalog.bpchar"
|
||||
case strings.HasPrefix(dt, "character varying"):
|
||||
return "pg_catalog.varchar"
|
||||
case strings.HasPrefix(dt, "bit varying"):
|
||||
return "pg_catalog.varbit"
|
||||
case strings.HasPrefix(dt, "bit("):
|
||||
return "pg_catalog.bit"
|
||||
}
|
||||
switch dt {
|
||||
case "bpchar":
|
||||
return "pg_catalog.bpchar"
|
||||
case "timestamp without time zone":
|
||||
return "pg_catalog.timestamp"
|
||||
case "timestamp with time zone":
|
||||
return "pg_catalog.timestamptz"
|
||||
case "time without time zone":
|
||||
return "pg_catalog.time"
|
||||
case "time with time zone":
|
||||
return "pg_catalog.timetz"
|
||||
}
|
||||
return dt
|
||||
}
|
||||
|
||||
func parseType(dt string) (string, bool, int) {
|
||||
size := 0
|
||||
for {
|
||||
trimmed := strings.TrimSuffix(dt, "[]")
|
||||
if trimmed == dt {
|
||||
return rewriteType(dt), size > 0, size
|
||||
}
|
||||
size += 1
|
||||
dt = trimmed
|
||||
}
|
||||
}
|
||||
|
||||
// Don't create a database per query
|
||||
func (a *Analyzer) Analyze(ctx context.Context, n ast.Node, query string, migrations []string, ps *named.ParamSet) (*core.Analysis, error) {
|
||||
extractSqlErr := func(e error) error {
|
||||
var pgErr *pgconn.PgError
|
||||
if errors.As(e, &pgErr) {
|
||||
return &sqlerr.Error{
|
||||
Code: pgErr.Code,
|
||||
Message: pgErr.Message,
|
||||
Location: max(n.Pos()+int(pgErr.Position)-1, 0),
|
||||
}
|
||||
}
|
||||
return e
|
||||
}
|
||||
|
||||
if a.pool == nil {
|
||||
var uri string
|
||||
if a.db.Managed {
|
||||
if a.client == nil {
|
||||
return nil, fmt.Errorf("client is nil")
|
||||
}
|
||||
edb, err := a.client.CreateDatabase(ctx, &dbmanager.CreateDatabaseRequest{
|
||||
Engine: "postgresql",
|
||||
Migrations: migrations,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
uri = edb.Uri
|
||||
} else if debugDatabases.Value() == "managed" {
|
||||
return nil, fmt.Errorf("database: connections disabled via SQLCDEBUG=databases=managed")
|
||||
} else {
|
||||
uri = a.replacer.Replace(a.db.URI)
|
||||
}
|
||||
conf, err := pgxpool.ParseConfig(uri)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
pool, err := pgxpool.NewWithConfig(ctx, conf)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
a.pool = pool
|
||||
}
|
||||
|
||||
c, err := a.pool.Acquire(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer c.Release()
|
||||
|
||||
// TODO: Pick a random name
|
||||
desc, err := c.Conn().Prepare(ctx, "foo", query)
|
||||
if err != nil {
|
||||
return nil, extractSqlErr(err)
|
||||
}
|
||||
|
||||
if err := c.Conn().Deallocate(ctx, "foo"); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var result core.Analysis
|
||||
for _, field := range desc.Fields {
|
||||
if field.TableOID > 0 {
|
||||
col, err := a.columnInfo(ctx, field)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// debug.Dump(i, field, col)
|
||||
tbl, err := a.tableInfo(ctx, field.TableOID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
dt, isArray, dims := parseType(col.DataType)
|
||||
notNull := col.NotNull
|
||||
name := field.Name
|
||||
result.Columns = append(result.Columns, &core.Column{
|
||||
Name: name,
|
||||
OriginalName: field.Name,
|
||||
DataType: dt,
|
||||
NotNull: notNull,
|
||||
IsArray: isArray,
|
||||
ArrayDims: int32(max(col.ArrayDims, dims)),
|
||||
Table: &core.Identifier{
|
||||
Schema: tbl.SchemaName,
|
||||
Name: tbl.TableName,
|
||||
},
|
||||
})
|
||||
} else {
|
||||
dataType, err := a.formatType(ctx, field.DataTypeOID, field.TypeModifier)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// debug.Dump(i, field, dataType)
|
||||
notNull := false
|
||||
name := field.Name
|
||||
dt, isArray, dims := parseType(dataType)
|
||||
result.Columns = append(result.Columns, &core.Column{
|
||||
Name: name,
|
||||
OriginalName: field.Name,
|
||||
DataType: dt,
|
||||
NotNull: notNull,
|
||||
IsArray: isArray,
|
||||
ArrayDims: int32(dims),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
for i, oid := range desc.ParamOIDs {
|
||||
dataType, err := a.formatType(ctx, oid, -1)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
notNull := false
|
||||
dt, isArray, dims := parseType(dataType)
|
||||
name := ""
|
||||
if ps != nil {
|
||||
name, _ = ps.NameFor(i + 1)
|
||||
}
|
||||
result.Params = append(result.Params, &core.Parameter{
|
||||
Number: int32(i + 1),
|
||||
Column: &core.Column{
|
||||
Name: name,
|
||||
DataType: dt,
|
||||
IsArray: isArray,
|
||||
ArrayDims: int32(dims),
|
||||
NotNull: notNull,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
return &result, nil
|
||||
}
|
||||
|
||||
func (a *Analyzer) Close(_ context.Context) error {
|
||||
if a.pool != nil {
|
||||
a.pool.Close()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
40
internal/engine/postgresql/catalog.go
Normal file
40
internal/engine/postgresql/catalog.go
Normal file
@@ -0,0 +1,40 @@
|
||||
package postgresql
|
||||
|
||||
import (
|
||||
"github.com/sqlc-dev/sqlc/internal/core/seed"
|
||||
"github.com/sqlc-dev/sqlc/internal/sql/catalog"
|
||||
)
|
||||
|
||||
func NewCatalog() *catalog.Catalog {
|
||||
c := catalog.New("public")
|
||||
c.Schemas = append(c.Schemas, pgTemp())
|
||||
c.Schemas = append(c.Schemas, genPGCatalog())
|
||||
c.Schemas = append(c.Schemas, genInformationSchema())
|
||||
c.SearchPath = []string{"pg_catalog"}
|
||||
c.LoadExtension = loadExtension
|
||||
return c
|
||||
}
|
||||
|
||||
// genPGCatalog and genInformationSchema build the schemas sqlc knows
|
||||
// PostgreSQL by. Both read the dialect directory, which goldeneye writes,
|
||||
// and which the analysis core seeds its catalog from as well.
|
||||
func genPGCatalog() *catalog.Schema {
|
||||
return systemSchema("pg_catalog", pgCatalogFuncs())
|
||||
}
|
||||
|
||||
func genInformationSchema() *catalog.Schema {
|
||||
return systemSchema("information_schema", nil)
|
||||
}
|
||||
|
||||
// systemSchema builds a schema from the relations recorded for it. The tables
|
||||
// are read fresh each time, because a catalog is free to change the schemas it
|
||||
// was built with.
|
||||
func systemSchema(name string, funcs []*catalog.Function) *catalog.Schema {
|
||||
tables, err := seed.Relations(dialectFS, "dialect", name)
|
||||
if err != nil {
|
||||
// The relations are embedded in the binary: a failure here means sqlc
|
||||
// was built from a broken tree, which no caller can do anything about.
|
||||
panic(err)
|
||||
}
|
||||
return &catalog.Schema{Name: name, Funcs: funcs, Tables: tables}
|
||||
}
|
||||
170
internal/engine/postgresql/catalog_test.go
Normal file
170
internal/engine/postgresql/catalog_test.go
Normal file
@@ -0,0 +1,170 @@
|
||||
package postgresql
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/sqlc-dev/sqlc/internal/sql/sqlerr"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
)
|
||||
|
||||
func TestUpdateErrors(t *testing.T) {
|
||||
p := NewParser()
|
||||
for i, tc := range []struct {
|
||||
stmt string
|
||||
err *sqlerr.Error
|
||||
}{
|
||||
{
|
||||
`
|
||||
CREATE TABLE foo ();
|
||||
CREATE TABLE foo ();
|
||||
`,
|
||||
sqlerr.RelationExists("foo"),
|
||||
},
|
||||
{
|
||||
`
|
||||
CREATE TYPE foo AS ENUM ('bar');
|
||||
CREATE TYPE foo AS ENUM ('bar');
|
||||
`,
|
||||
sqlerr.TypeExists("foo"),
|
||||
},
|
||||
{
|
||||
`
|
||||
DROP TABLE foo;
|
||||
`,
|
||||
sqlerr.RelationNotFound("foo"),
|
||||
},
|
||||
{
|
||||
`
|
||||
DROP TYPE foo;
|
||||
`,
|
||||
sqlerr.TypeNotFound("foo"),
|
||||
},
|
||||
{
|
||||
`
|
||||
CREATE TABLE foo ();
|
||||
CREATE TABLE bar ();
|
||||
ALTER TABLE foo RENAME TO bar;
|
||||
`,
|
||||
sqlerr.RelationExists("bar"),
|
||||
},
|
||||
{
|
||||
`
|
||||
ALTER TABLE foo RENAME TO bar;
|
||||
`,
|
||||
sqlerr.RelationNotFound("foo"),
|
||||
},
|
||||
{
|
||||
`
|
||||
CREATE TABLE foo ();
|
||||
ALTER TABLE foo ADD COLUMN bar text;
|
||||
ALTER TABLE foo ADD COLUMN bar text;
|
||||
`,
|
||||
sqlerr.ColumnExists("foo", "bar"),
|
||||
},
|
||||
{
|
||||
`
|
||||
CREATE TABLE foo ();
|
||||
ALTER TABLE foo DROP COLUMN bar;
|
||||
`,
|
||||
sqlerr.ColumnNotFound("foo", "bar"),
|
||||
},
|
||||
{
|
||||
`
|
||||
CREATE TABLE foo ();
|
||||
ALTER TABLE foo ALTER COLUMN bar SET NOT NULL;
|
||||
`,
|
||||
sqlerr.ColumnNotFound("foo", "bar"),
|
||||
},
|
||||
{
|
||||
`
|
||||
CREATE TABLE foo ();
|
||||
ALTER TABLE foo ALTER COLUMN bar DROP NOT NULL;
|
||||
`,
|
||||
sqlerr.ColumnNotFound("foo", "bar"),
|
||||
},
|
||||
{
|
||||
`
|
||||
CREATE SCHEMA foo;
|
||||
CREATE SCHEMA foo;
|
||||
`,
|
||||
sqlerr.SchemaExists("foo"),
|
||||
},
|
||||
{
|
||||
`
|
||||
ALTER TABLE foo.baz SET SCHEMA bar;
|
||||
`,
|
||||
sqlerr.SchemaNotFound("foo"),
|
||||
},
|
||||
{
|
||||
`
|
||||
CREATE SCHEMA foo;
|
||||
ALTER TABLE foo.baz SET SCHEMA bar;
|
||||
`,
|
||||
sqlerr.RelationNotFound("baz"),
|
||||
},
|
||||
{
|
||||
`
|
||||
CREATE SCHEMA foo;
|
||||
CREATE TABLE foo.baz ();
|
||||
ALTER TABLE foo.baz SET SCHEMA bar;
|
||||
`,
|
||||
sqlerr.SchemaNotFound("bar"),
|
||||
},
|
||||
{
|
||||
`
|
||||
DROP SCHEMA bar;
|
||||
`,
|
||||
sqlerr.SchemaNotFound("bar"),
|
||||
},
|
||||
{
|
||||
`
|
||||
ALTER TABLE foo RENAME bar TO baz;
|
||||
`,
|
||||
sqlerr.RelationNotFound("foo"),
|
||||
},
|
||||
{
|
||||
`
|
||||
CREATE TABLE foo ();
|
||||
ALTER TABLE foo RENAME bar TO baz;
|
||||
`,
|
||||
sqlerr.ColumnNotFound("foo", "bar"),
|
||||
},
|
||||
{
|
||||
`
|
||||
CREATE TABLE foo (bar text, baz text);
|
||||
ALTER TABLE foo RENAME bar TO baz;
|
||||
`,
|
||||
sqlerr.ColumnExists("foo", "baz"),
|
||||
},
|
||||
} {
|
||||
test := tc
|
||||
t.Run(strconv.Itoa(i), func(t *testing.T) {
|
||||
stmts, err := p.Parse(strings.NewReader(test.stmt))
|
||||
if err != nil {
|
||||
t.Log(test.stmt)
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
c := NewCatalog()
|
||||
err = c.Build(stmts)
|
||||
if err == nil {
|
||||
t.Log(test.stmt)
|
||||
t.Fatal("err was nil")
|
||||
}
|
||||
|
||||
var actual *sqlerr.Error
|
||||
if !errors.As(err, &actual) {
|
||||
t.Fatalf("err is not *sqlerr.Error: %#v", err)
|
||||
}
|
||||
|
||||
if diff := cmp.Diff(test.err.Error(), actual.Error()); diff != "" {
|
||||
t.Log(test.stmt)
|
||||
t.Errorf("error mismatch: \n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
3728
internal/engine/postgresql/convert.go
Normal file
3728
internal/engine/postgresql/convert.go
Normal file
File diff suppressed because it is too large
Load Diff
15
internal/engine/postgresql/dialect/dialect.json
Normal file
15
internal/engine/postgresql/dialect/dialect.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"dialect": "postgresql",
|
||||
"const": {
|
||||
"integer": "integer",
|
||||
"float": "numeric",
|
||||
"string": "text",
|
||||
"bool": "boolean"
|
||||
},
|
||||
"bool": "boolean",
|
||||
"comparison": ["=", "<>", "!=", "<", "<=", ">", ">=", "IS DISTINCT FROM", "IS NOT DISTINCT FROM"],
|
||||
"comparison_categories": "BNSDTU",
|
||||
"arithmetic": ["+", "-", "*", "/", "%"],
|
||||
"arithmetic_categories": "N",
|
||||
"cast_categories": "NSD"
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{"name":"pg_file_rename","args":[{"type":"text"},{"type":"text"}],"returns":"boolean"}
|
||||
{"name":"pg_file_rename","args":[{"type":"text"},{"type":"text"},{"type":"text"}],"returns":"boolean"}
|
||||
{"name":"pg_file_sync","args":[{"type":"text"}],"returns":"void"}
|
||||
{"name":"pg_file_unlink","args":[{"type":"text"}],"returns":"boolean"}
|
||||
{"name":"pg_file_write","args":[{"type":"text"},{"type":"text"},{"type":"boolean"}],"returns":"bigint"}
|
||||
{"name":"pg_logdir_ls","returns":"record"}
|
||||
@@ -0,0 +1,6 @@
|
||||
{"name":"bt_index_check","args":[{"name":"index","type":"regclass"}],"returns":"void"}
|
||||
{"name":"bt_index_check","args":[{"name":"index","type":"regclass"},{"name":"heapallindexed","type":"boolean"}],"returns":"void"}
|
||||
{"name":"bt_index_parent_check","args":[{"name":"index","type":"regclass"}],"returns":"void"}
|
||||
{"name":"bt_index_parent_check","args":[{"name":"index","type":"regclass"},{"name":"heapallindexed","type":"boolean"}],"returns":"void"}
|
||||
{"name":"bt_index_parent_check","args":[{"name":"index","type":"regclass"},{"name":"heapallindexed","type":"boolean"},{"name":"rootdescend","type":"boolean"}],"returns":"void"}
|
||||
{"name":"verify_heapam","args":[{"name":"relation","type":"regclass"},{"name":"on_error_stop","type":"boolean","has_default":true},{"name":"check_toast","type":"boolean","has_default":true},{"name":"skip","type":"text","has_default":true},{"name":"startblock","type":"bigint","has_default":true},{"name":"endblock","type":"bigint","has_default":true}],"returns":"record"}
|
||||
@@ -0,0 +1,2 @@
|
||||
{"name":"gin_enum_cmp","args":[{"type":"anyenum"},{"type":"anyenum"}],"returns":"integer"}
|
||||
{"name":"gin_numeric_cmp","args":[{"type":"numeric"},{"type":"numeric"}],"returns":"integer"}
|
||||
@@ -0,0 +1,24 @@
|
||||
{"name":"cash_dist","args":[{"type":"money"},{"type":"money"}],"returns":"money"}
|
||||
{"name":"date_dist","args":[{"type":"date"},{"type":"date"}],"returns":"integer"}
|
||||
{"name":"float4_dist","args":[{"type":"real"},{"type":"real"}],"returns":"real"}
|
||||
{"name":"float8_dist","args":[{"type":"double precision"},{"type":"double precision"}],"returns":"double precision"}
|
||||
{"name":"gbtreekey16_in","args":[{"type":"cstring"}],"returns":"gbtreekey16"}
|
||||
{"name":"gbtreekey16_out","args":[{"type":"gbtreekey16"}],"returns":"cstring"}
|
||||
{"name":"gbtreekey2_in","args":[{"type":"cstring"}],"returns":"gbtreekey2"}
|
||||
{"name":"gbtreekey2_out","args":[{"type":"gbtreekey2"}],"returns":"cstring"}
|
||||
{"name":"gbtreekey32_in","args":[{"type":"cstring"}],"returns":"gbtreekey32"}
|
||||
{"name":"gbtreekey32_out","args":[{"type":"gbtreekey32"}],"returns":"cstring"}
|
||||
{"name":"gbtreekey4_in","args":[{"type":"cstring"}],"returns":"gbtreekey4"}
|
||||
{"name":"gbtreekey4_out","args":[{"type":"gbtreekey4"}],"returns":"cstring"}
|
||||
{"name":"gbtreekey8_in","args":[{"type":"cstring"}],"returns":"gbtreekey8"}
|
||||
{"name":"gbtreekey8_out","args":[{"type":"gbtreekey8"}],"returns":"cstring"}
|
||||
{"name":"gbtreekey_var_in","args":[{"type":"cstring"}],"returns":"gbtreekey_var"}
|
||||
{"name":"gbtreekey_var_out","args":[{"type":"gbtreekey_var"}],"returns":"cstring"}
|
||||
{"name":"int2_dist","args":[{"type":"smallint"},{"type":"smallint"}],"returns":"smallint"}
|
||||
{"name":"int4_dist","args":[{"type":"integer"},{"type":"integer"}],"returns":"integer"}
|
||||
{"name":"int8_dist","args":[{"type":"bigint"},{"type":"bigint"}],"returns":"bigint"}
|
||||
{"name":"interval_dist","args":[{"type":"interval"},{"type":"interval"}],"returns":"interval"}
|
||||
{"name":"oid_dist","args":[{"type":"oid"},{"type":"oid"}],"returns":"oid"}
|
||||
{"name":"time_dist","args":[{"type":"time without time zone"},{"type":"time without time zone"}],"returns":"interval"}
|
||||
{"name":"ts_dist","args":[{"type":"timestamp without time zone"},{"type":"timestamp without time zone"}],"returns":"interval"}
|
||||
{"name":"tstz_dist","args":[{"type":"timestamp with time zone"},{"type":"timestamp with time zone"}],"returns":"interval"}
|
||||
@@ -0,0 +1,6 @@
|
||||
{"name":"gbtreekey4","category":"U"}
|
||||
{"name":"gbtreekey8","category":"U"}
|
||||
{"name":"gbtreekey16","category":"U"}
|
||||
{"name":"gbtreekey32","category":"U"}
|
||||
{"name":"gbtreekey_var","category":"U"}
|
||||
{"name":"gbtreekey2","category":"U"}
|
||||
@@ -0,0 +1,46 @@
|
||||
{"name":"citext","args":[{"type":"boolean"}],"returns":"citext"}
|
||||
{"name":"citext","args":[{"type":"character"}],"returns":"citext"}
|
||||
{"name":"citext","args":[{"type":"inet"}],"returns":"citext"}
|
||||
{"name":"citext_cmp","args":[{"type":"citext"},{"type":"citext"}],"returns":"integer"}
|
||||
{"name":"citext_eq","args":[{"type":"citext"},{"type":"citext"}],"returns":"boolean"}
|
||||
{"name":"citext_ge","args":[{"type":"citext"},{"type":"citext"}],"returns":"boolean"}
|
||||
{"name":"citext_gt","args":[{"type":"citext"},{"type":"citext"}],"returns":"boolean"}
|
||||
{"name":"citext_hash","args":[{"type":"citext"}],"returns":"integer"}
|
||||
{"name":"citext_hash_extended","args":[{"type":"citext"},{"type":"bigint"}],"returns":"bigint"}
|
||||
{"name":"citext_larger","args":[{"type":"citext"},{"type":"citext"}],"returns":"citext"}
|
||||
{"name":"citext_le","args":[{"type":"citext"},{"type":"citext"}],"returns":"boolean"}
|
||||
{"name":"citext_lt","args":[{"type":"citext"},{"type":"citext"}],"returns":"boolean"}
|
||||
{"name":"citext_ne","args":[{"type":"citext"},{"type":"citext"}],"returns":"boolean"}
|
||||
{"name":"citext_pattern_cmp","args":[{"type":"citext"},{"type":"citext"}],"returns":"integer"}
|
||||
{"name":"citext_pattern_ge","args":[{"type":"citext"},{"type":"citext"}],"returns":"boolean"}
|
||||
{"name":"citext_pattern_gt","args":[{"type":"citext"},{"type":"citext"}],"returns":"boolean"}
|
||||
{"name":"citext_pattern_le","args":[{"type":"citext"},{"type":"citext"}],"returns":"boolean"}
|
||||
{"name":"citext_pattern_lt","args":[{"type":"citext"},{"type":"citext"}],"returns":"boolean"}
|
||||
{"name":"citext_smaller","args":[{"type":"citext"},{"type":"citext"}],"returns":"citext"}
|
||||
{"name":"citextin","args":[{"type":"cstring"}],"returns":"citext"}
|
||||
{"name":"citextout","args":[{"type":"citext"}],"returns":"cstring"}
|
||||
{"name":"citextsend","args":[{"type":"citext"}],"returns":"bytea"}
|
||||
{"name":"max","args":[{"type":"citext"}],"returns":"citext"}
|
||||
{"name":"min","args":[{"type":"citext"}],"returns":"citext"}
|
||||
{"name":"regexp_match","args":[{"type":"citext"},{"type":"citext"}],"returns":"text[]"}
|
||||
{"name":"regexp_match","args":[{"type":"citext"},{"type":"citext"},{"type":"text"}],"returns":"text[]"}
|
||||
{"name":"regexp_matches","args":[{"type":"citext"},{"type":"citext"}],"returns":"text[]"}
|
||||
{"name":"regexp_matches","args":[{"type":"citext"},{"type":"citext"},{"type":"text"}],"returns":"text[]"}
|
||||
{"name":"regexp_replace","args":[{"type":"citext"},{"type":"citext"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"regexp_replace","args":[{"type":"citext"},{"type":"citext"},{"type":"text"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"regexp_split_to_array","args":[{"type":"citext"},{"type":"citext"}],"returns":"text[]"}
|
||||
{"name":"regexp_split_to_array","args":[{"type":"citext"},{"type":"citext"},{"type":"text"}],"returns":"text[]"}
|
||||
{"name":"regexp_split_to_table","args":[{"type":"citext"},{"type":"citext"}],"returns":"text"}
|
||||
{"name":"regexp_split_to_table","args":[{"type":"citext"},{"type":"citext"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"replace","args":[{"type":"citext"},{"type":"citext"},{"type":"citext"}],"returns":"text"}
|
||||
{"name":"split_part","args":[{"type":"citext"},{"type":"citext"},{"type":"integer"}],"returns":"text"}
|
||||
{"name":"strpos","args":[{"type":"citext"},{"type":"citext"}],"returns":"integer"}
|
||||
{"name":"texticlike","args":[{"type":"citext"},{"type":"citext"}],"returns":"boolean"}
|
||||
{"name":"texticlike","args":[{"type":"citext"},{"type":"text"}],"returns":"boolean"}
|
||||
{"name":"texticnlike","args":[{"type":"citext"},{"type":"citext"}],"returns":"boolean"}
|
||||
{"name":"texticnlike","args":[{"type":"citext"},{"type":"text"}],"returns":"boolean"}
|
||||
{"name":"texticregexeq","args":[{"type":"citext"},{"type":"citext"}],"returns":"boolean"}
|
||||
{"name":"texticregexeq","args":[{"type":"citext"},{"type":"text"}],"returns":"boolean"}
|
||||
{"name":"texticregexne","args":[{"type":"citext"},{"type":"citext"}],"returns":"boolean"}
|
||||
{"name":"texticregexne","args":[{"type":"citext"},{"type":"text"}],"returns":"boolean"}
|
||||
{"name":"translate","args":[{"type":"citext"},{"type":"citext"},{"type":"text"}],"returns":"text"}
|
||||
@@ -0,0 +1 @@
|
||||
{"name":"citext","category":"S"}
|
||||
@@ -0,0 +1,33 @@
|
||||
{"name":"cube","args":[{"type":"cube"},{"type":"double precision"}],"returns":"cube"}
|
||||
{"name":"cube","args":[{"type":"cube"},{"type":"double precision"},{"type":"double precision"}],"returns":"cube"}
|
||||
{"name":"cube","args":[{"type":"double precision"}],"returns":"cube"}
|
||||
{"name":"cube","args":[{"type":"double precision"},{"type":"double precision"}],"returns":"cube"}
|
||||
{"name":"cube","args":[{"type":"double precision[]"}],"returns":"cube"}
|
||||
{"name":"cube","args":[{"type":"double precision[]"},{"type":"double precision[]"}],"returns":"cube"}
|
||||
{"name":"cube_cmp","args":[{"type":"cube"},{"type":"cube"}],"returns":"integer"}
|
||||
{"name":"cube_contained","args":[{"type":"cube"},{"type":"cube"}],"returns":"boolean"}
|
||||
{"name":"cube_contains","args":[{"type":"cube"},{"type":"cube"}],"returns":"boolean"}
|
||||
{"name":"cube_coord","args":[{"type":"cube"},{"type":"integer"}],"returns":"double precision"}
|
||||
{"name":"cube_coord_llur","args":[{"type":"cube"},{"type":"integer"}],"returns":"double precision"}
|
||||
{"name":"cube_dim","args":[{"type":"cube"}],"returns":"integer"}
|
||||
{"name":"cube_distance","args":[{"type":"cube"},{"type":"cube"}],"returns":"double precision"}
|
||||
{"name":"cube_enlarge","args":[{"type":"cube"},{"type":"double precision"},{"type":"integer"}],"returns":"cube"}
|
||||
{"name":"cube_eq","args":[{"type":"cube"},{"type":"cube"}],"returns":"boolean"}
|
||||
{"name":"cube_ge","args":[{"type":"cube"},{"type":"cube"}],"returns":"boolean"}
|
||||
{"name":"cube_gt","args":[{"type":"cube"},{"type":"cube"}],"returns":"boolean"}
|
||||
{"name":"cube_in","args":[{"type":"cstring"}],"returns":"cube"}
|
||||
{"name":"cube_inter","args":[{"type":"cube"},{"type":"cube"}],"returns":"cube"}
|
||||
{"name":"cube_is_point","args":[{"type":"cube"}],"returns":"boolean"}
|
||||
{"name":"cube_le","args":[{"type":"cube"},{"type":"cube"}],"returns":"boolean"}
|
||||
{"name":"cube_ll_coord","args":[{"type":"cube"},{"type":"integer"}],"returns":"double precision"}
|
||||
{"name":"cube_lt","args":[{"type":"cube"},{"type":"cube"}],"returns":"boolean"}
|
||||
{"name":"cube_ne","args":[{"type":"cube"},{"type":"cube"}],"returns":"boolean"}
|
||||
{"name":"cube_out","args":[{"type":"cube"}],"returns":"cstring"}
|
||||
{"name":"cube_overlap","args":[{"type":"cube"},{"type":"cube"}],"returns":"boolean"}
|
||||
{"name":"cube_send","args":[{"type":"cube"}],"returns":"bytea"}
|
||||
{"name":"cube_size","args":[{"type":"cube"}],"returns":"double precision"}
|
||||
{"name":"cube_subset","args":[{"type":"cube"},{"type":"integer[]"}],"returns":"cube"}
|
||||
{"name":"cube_union","args":[{"type":"cube"},{"type":"cube"}],"returns":"cube"}
|
||||
{"name":"cube_ur_coord","args":[{"type":"cube"},{"type":"integer"}],"returns":"double precision"}
|
||||
{"name":"distance_chebyshev","args":[{"type":"cube"},{"type":"cube"}],"returns":"double precision"}
|
||||
{"name":"distance_taxicab","args":[{"type":"cube"},{"type":"cube"}],"returns":"double precision"}
|
||||
@@ -0,0 +1 @@
|
||||
{"name":"cube","category":"U"}
|
||||
@@ -0,0 +1,41 @@
|
||||
{"name":"dblink","args":[{"type":"text"}],"returns":"record"}
|
||||
{"name":"dblink","args":[{"type":"text"},{"type":"boolean"}],"returns":"record"}
|
||||
{"name":"dblink","args":[{"type":"text"},{"type":"text"}],"returns":"record"}
|
||||
{"name":"dblink","args":[{"type":"text"},{"type":"text"},{"type":"boolean"}],"returns":"record"}
|
||||
{"name":"dblink_build_sql_delete","args":[{"type":"text"},{"type":"int2vector"},{"type":"integer"},{"type":"text[]"}],"returns":"text"}
|
||||
{"name":"dblink_build_sql_insert","args":[{"type":"text"},{"type":"int2vector"},{"type":"integer"},{"type":"text[]"},{"type":"text[]"}],"returns":"text"}
|
||||
{"name":"dblink_build_sql_update","args":[{"type":"text"},{"type":"int2vector"},{"type":"integer"},{"type":"text[]"},{"type":"text[]"}],"returns":"text"}
|
||||
{"name":"dblink_cancel_query","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"dblink_close","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"dblink_close","args":[{"type":"text"},{"type":"boolean"}],"returns":"text"}
|
||||
{"name":"dblink_close","args":[{"type":"text"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"dblink_close","args":[{"type":"text"},{"type":"text"},{"type":"boolean"}],"returns":"text"}
|
||||
{"name":"dblink_connect","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"dblink_connect","args":[{"type":"text"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"dblink_connect_u","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"dblink_connect_u","args":[{"type":"text"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"dblink_current_query","returns":"text"}
|
||||
{"name":"dblink_disconnect","returns":"text"}
|
||||
{"name":"dblink_disconnect","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"dblink_error_message","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"dblink_exec","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"dblink_exec","args":[{"type":"text"},{"type":"boolean"}],"returns":"text"}
|
||||
{"name":"dblink_exec","args":[{"type":"text"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"dblink_exec","args":[{"type":"text"},{"type":"text"},{"type":"boolean"}],"returns":"text"}
|
||||
{"name":"dblink_fdw_validator","args":[{"name":"options","type":"text[]"},{"name":"catalog","type":"oid"}],"returns":"void"}
|
||||
{"name":"dblink_fetch","args":[{"type":"text"},{"type":"integer"}],"returns":"record"}
|
||||
{"name":"dblink_fetch","args":[{"type":"text"},{"type":"integer"},{"type":"boolean"}],"returns":"record"}
|
||||
{"name":"dblink_fetch","args":[{"type":"text"},{"type":"text"},{"type":"integer"}],"returns":"record"}
|
||||
{"name":"dblink_fetch","args":[{"type":"text"},{"type":"text"},{"type":"integer"},{"type":"boolean"}],"returns":"record"}
|
||||
{"name":"dblink_get_connections","returns":"text[]"}
|
||||
{"name":"dblink_get_notify","returns":"record"}
|
||||
{"name":"dblink_get_notify","args":[{"name":"conname","type":"text"}],"returns":"record"}
|
||||
{"name":"dblink_get_pkey","args":[{"type":"text"}],"returns":"dblink_pkey_results"}
|
||||
{"name":"dblink_get_result","args":[{"type":"text"}],"returns":"record"}
|
||||
{"name":"dblink_get_result","args":[{"type":"text"},{"type":"boolean"}],"returns":"record"}
|
||||
{"name":"dblink_is_busy","args":[{"type":"text"}],"returns":"integer"}
|
||||
{"name":"dblink_open","args":[{"type":"text"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"dblink_open","args":[{"type":"text"},{"type":"text"},{"type":"boolean"}],"returns":"text"}
|
||||
{"name":"dblink_open","args":[{"type":"text"},{"type":"text"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"dblink_open","args":[{"type":"text"},{"type":"text"},{"type":"text"},{"type":"boolean"}],"returns":"text"}
|
||||
{"name":"dblink_send_query","args":[{"type":"text"},{"type":"text"}],"returns":"integer"}
|
||||
@@ -0,0 +1 @@
|
||||
{"name":"dblink_pkey_results","category":"C"}
|
||||
@@ -0,0 +1,9 @@
|
||||
{"name":"earth","returns":"double precision"}
|
||||
{"name":"earth_box","args":[{"type":"earth"},{"type":"double precision"}],"returns":"cube"}
|
||||
{"name":"earth_distance","args":[{"type":"earth"},{"type":"earth"}],"returns":"double precision"}
|
||||
{"name":"gc_to_sec","args":[{"type":"double precision"}],"returns":"double precision"}
|
||||
{"name":"geo_distance","args":[{"type":"point"},{"type":"point"}],"returns":"double precision"}
|
||||
{"name":"latitude","args":[{"type":"earth"}],"returns":"double precision"}
|
||||
{"name":"ll_to_earth","args":[{"type":"double precision"},{"type":"double precision"}],"returns":"earth"}
|
||||
{"name":"longitude","args":[{"type":"earth"}],"returns":"double precision"}
|
||||
{"name":"sec_to_gc","args":[{"type":"double precision"}],"returns":"double precision"}
|
||||
@@ -0,0 +1 @@
|
||||
{"name":"earth","category":"U"}
|
||||
@@ -0,0 +1,2 @@
|
||||
{"name":"file_fdw_handler","returns":"fdw_handler"}
|
||||
{"name":"file_fdw_validator","args":[{"type":"text[]"},{"type":"oid"}],"returns":"void"}
|
||||
@@ -0,0 +1,11 @@
|
||||
{"name":"daitch_mokotoff","args":[{"type":"text"}],"returns":"text[]"}
|
||||
{"name":"difference","args":[{"type":"text"},{"type":"text"}],"returns":"integer"}
|
||||
{"name":"dmetaphone","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"dmetaphone_alt","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"levenshtein","args":[{"type":"text"},{"type":"text"}],"returns":"integer"}
|
||||
{"name":"levenshtein","args":[{"type":"text"},{"type":"text"},{"type":"integer"},{"type":"integer"},{"type":"integer"}],"returns":"integer"}
|
||||
{"name":"levenshtein_less_equal","args":[{"type":"text"},{"type":"text"},{"type":"integer"}],"returns":"integer"}
|
||||
{"name":"levenshtein_less_equal","args":[{"type":"text"},{"type":"text"},{"type":"integer"},{"type":"integer"},{"type":"integer"},{"type":"integer"}],"returns":"integer"}
|
||||
{"name":"metaphone","args":[{"type":"text"},{"type":"integer"}],"returns":"text"}
|
||||
{"name":"soundex","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"text_soundex","args":[{"type":"text"}],"returns":"text"}
|
||||
@@ -0,0 +1,47 @@
|
||||
{"name":"akeys","args":[{"type":"hstore"}],"returns":"text[]"}
|
||||
{"name":"avals","args":[{"type":"hstore"}],"returns":"text[]"}
|
||||
{"name":"defined","args":[{"type":"hstore"},{"type":"text"}],"returns":"boolean"}
|
||||
{"name":"delete","args":[{"type":"hstore"},{"type":"hstore"}],"returns":"hstore"}
|
||||
{"name":"delete","args":[{"type":"hstore"},{"type":"text"}],"returns":"hstore"}
|
||||
{"name":"delete","args":[{"type":"hstore"},{"type":"text[]"}],"returns":"hstore"}
|
||||
{"name":"each","args":[{"name":"hs","type":"hstore"}],"returns":"record"}
|
||||
{"name":"exist","args":[{"type":"hstore"},{"type":"text"}],"returns":"boolean"}
|
||||
{"name":"exists_all","args":[{"type":"hstore"},{"type":"text[]"}],"returns":"boolean"}
|
||||
{"name":"exists_any","args":[{"type":"hstore"},{"type":"text[]"}],"returns":"boolean"}
|
||||
{"name":"fetchval","args":[{"type":"hstore"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"ghstore_in","args":[{"type":"cstring"}],"returns":"ghstore"}
|
||||
{"name":"ghstore_out","args":[{"type":"ghstore"}],"returns":"cstring"}
|
||||
{"name":"hs_concat","args":[{"type":"hstore"},{"type":"hstore"}],"returns":"hstore"}
|
||||
{"name":"hs_contained","args":[{"type":"hstore"},{"type":"hstore"}],"returns":"boolean"}
|
||||
{"name":"hs_contains","args":[{"type":"hstore"},{"type":"hstore"}],"returns":"boolean"}
|
||||
{"name":"hstore","args":[{"type":"record"}],"returns":"hstore"}
|
||||
{"name":"hstore","args":[{"type":"text"},{"type":"text"}],"returns":"hstore"}
|
||||
{"name":"hstore","args":[{"type":"text[]"}],"returns":"hstore"}
|
||||
{"name":"hstore","args":[{"type":"text[]"},{"type":"text[]"}],"returns":"hstore"}
|
||||
{"name":"hstore_cmp","args":[{"type":"hstore"},{"type":"hstore"}],"returns":"integer"}
|
||||
{"name":"hstore_eq","args":[{"type":"hstore"},{"type":"hstore"}],"returns":"boolean"}
|
||||
{"name":"hstore_ge","args":[{"type":"hstore"},{"type":"hstore"}],"returns":"boolean"}
|
||||
{"name":"hstore_gt","args":[{"type":"hstore"},{"type":"hstore"}],"returns":"boolean"}
|
||||
{"name":"hstore_hash","args":[{"type":"hstore"}],"returns":"integer"}
|
||||
{"name":"hstore_hash_extended","args":[{"type":"hstore"},{"type":"bigint"}],"returns":"bigint"}
|
||||
{"name":"hstore_in","args":[{"type":"cstring"}],"returns":"hstore"}
|
||||
{"name":"hstore_le","args":[{"type":"hstore"},{"type":"hstore"}],"returns":"boolean"}
|
||||
{"name":"hstore_lt","args":[{"type":"hstore"},{"type":"hstore"}],"returns":"boolean"}
|
||||
{"name":"hstore_ne","args":[{"type":"hstore"},{"type":"hstore"}],"returns":"boolean"}
|
||||
{"name":"hstore_out","args":[{"type":"hstore"}],"returns":"cstring"}
|
||||
{"name":"hstore_send","args":[{"type":"hstore"}],"returns":"bytea"}
|
||||
{"name":"hstore_to_array","args":[{"type":"hstore"}],"returns":"text[]"}
|
||||
{"name":"hstore_to_json","args":[{"type":"hstore"}],"returns":"json"}
|
||||
{"name":"hstore_to_json_loose","args":[{"type":"hstore"}],"returns":"json"}
|
||||
{"name":"hstore_to_jsonb","args":[{"type":"hstore"}],"returns":"jsonb"}
|
||||
{"name":"hstore_to_jsonb_loose","args":[{"type":"hstore"}],"returns":"jsonb"}
|
||||
{"name":"hstore_to_matrix","args":[{"type":"hstore"}],"returns":"text[]"}
|
||||
{"name":"hstore_version_diag","args":[{"type":"hstore"}],"returns":"integer"}
|
||||
{"name":"isdefined","args":[{"type":"hstore"},{"type":"text"}],"returns":"boolean"}
|
||||
{"name":"isexists","args":[{"type":"hstore"},{"type":"text"}],"returns":"boolean"}
|
||||
{"name":"populate_record","args":[{"type":"anyelement"},{"type":"hstore"}],"returns":"anyelement"}
|
||||
{"name":"skeys","args":[{"type":"hstore"}],"returns":"text"}
|
||||
{"name":"slice","args":[{"type":"hstore"},{"type":"text[]"}],"returns":"hstore"}
|
||||
{"name":"slice_array","args":[{"type":"hstore"},{"type":"text[]"}],"returns":"text[]"}
|
||||
{"name":"svals","args":[{"type":"hstore"}],"returns":"text"}
|
||||
{"name":"tconvert","args":[{"type":"text"},{"type":"text"}],"returns":"hstore"}
|
||||
@@ -0,0 +1,2 @@
|
||||
{"name":"hstore","category":"U"}
|
||||
{"name":"ghstore","category":"U"}
|
||||
@@ -0,0 +1,2 @@
|
||||
{"name":"int_array_aggregate","args":[{"type":"integer"}],"returns":"integer[]"}
|
||||
{"name":"int_array_enum","args":[{"type":"integer[]"}],"returns":"integer"}
|
||||
@@ -0,0 +1,29 @@
|
||||
{"name":"_int_contained","args":[{"type":"integer[]"},{"type":"integer[]"}],"returns":"boolean"}
|
||||
{"name":"_int_contains","args":[{"type":"integer[]"},{"type":"integer[]"}],"returns":"boolean"}
|
||||
{"name":"_int_different","args":[{"type":"integer[]"},{"type":"integer[]"}],"returns":"boolean"}
|
||||
{"name":"_int_inter","args":[{"type":"integer[]"},{"type":"integer[]"}],"returns":"integer[]"}
|
||||
{"name":"_int_overlap","args":[{"type":"integer[]"},{"type":"integer[]"}],"returns":"boolean"}
|
||||
{"name":"_int_same","args":[{"type":"integer[]"},{"type":"integer[]"}],"returns":"boolean"}
|
||||
{"name":"_int_union","args":[{"type":"integer[]"},{"type":"integer[]"}],"returns":"integer[]"}
|
||||
{"name":"_intbig_in","args":[{"type":"cstring"}],"returns":"intbig_gkey"}
|
||||
{"name":"_intbig_out","args":[{"type":"intbig_gkey"}],"returns":"cstring"}
|
||||
{"name":"boolop","args":[{"type":"integer[]"},{"type":"query_int"}],"returns":"boolean"}
|
||||
{"name":"bqarr_in","args":[{"type":"cstring"}],"returns":"query_int"}
|
||||
{"name":"bqarr_out","args":[{"type":"query_int"}],"returns":"cstring"}
|
||||
{"name":"icount","args":[{"type":"integer[]"}],"returns":"integer"}
|
||||
{"name":"idx","args":[{"type":"integer[]"},{"type":"integer"}],"returns":"integer"}
|
||||
{"name":"intarray_del_elem","args":[{"type":"integer[]"},{"type":"integer"}],"returns":"integer[]"}
|
||||
{"name":"intarray_push_array","args":[{"type":"integer[]"},{"type":"integer[]"}],"returns":"integer[]"}
|
||||
{"name":"intarray_push_elem","args":[{"type":"integer[]"},{"type":"integer"}],"returns":"integer[]"}
|
||||
{"name":"intset","args":[{"type":"integer"}],"returns":"integer[]"}
|
||||
{"name":"intset_subtract","args":[{"type":"integer[]"},{"type":"integer[]"}],"returns":"integer[]"}
|
||||
{"name":"intset_union_elem","args":[{"type":"integer[]"},{"type":"integer"}],"returns":"integer[]"}
|
||||
{"name":"querytree","args":[{"type":"query_int"}],"returns":"text"}
|
||||
{"name":"rboolop","args":[{"type":"query_int"},{"type":"integer[]"}],"returns":"boolean"}
|
||||
{"name":"sort","args":[{"type":"integer[]"}],"returns":"integer[]"}
|
||||
{"name":"sort","args":[{"type":"integer[]"},{"type":"text"}],"returns":"integer[]"}
|
||||
{"name":"sort_asc","args":[{"type":"integer[]"}],"returns":"integer[]"}
|
||||
{"name":"sort_desc","args":[{"type":"integer[]"}],"returns":"integer[]"}
|
||||
{"name":"subarray","args":[{"type":"integer[]"},{"type":"integer"}],"returns":"integer[]"}
|
||||
{"name":"subarray","args":[{"type":"integer[]"},{"type":"integer"},{"type":"integer"}],"returns":"integer[]"}
|
||||
{"name":"uniq","args":[{"type":"integer[]"}],"returns":"integer[]"}
|
||||
@@ -0,0 +1,2 @@
|
||||
{"name":"query_int","category":"U"}
|
||||
{"name":"intbig_gkey","category":"U"}
|
||||
@@ -0,0 +1,245 @@
|
||||
{"name":"btean13cmp","args":[{"type":"ean13"},{"type":"ean13"}],"returns":"integer"}
|
||||
{"name":"btean13cmp","args":[{"type":"ean13"},{"type":"isbn"}],"returns":"integer"}
|
||||
{"name":"btean13cmp","args":[{"type":"ean13"},{"type":"isbn13"}],"returns":"integer"}
|
||||
{"name":"btean13cmp","args":[{"type":"ean13"},{"type":"ismn"}],"returns":"integer"}
|
||||
{"name":"btean13cmp","args":[{"type":"ean13"},{"type":"ismn13"}],"returns":"integer"}
|
||||
{"name":"btean13cmp","args":[{"type":"ean13"},{"type":"issn"}],"returns":"integer"}
|
||||
{"name":"btean13cmp","args":[{"type":"ean13"},{"type":"issn13"}],"returns":"integer"}
|
||||
{"name":"btean13cmp","args":[{"type":"ean13"},{"type":"upc"}],"returns":"integer"}
|
||||
{"name":"btisbn13cmp","args":[{"type":"isbn13"},{"type":"ean13"}],"returns":"integer"}
|
||||
{"name":"btisbn13cmp","args":[{"type":"isbn13"},{"type":"isbn"}],"returns":"integer"}
|
||||
{"name":"btisbn13cmp","args":[{"type":"isbn13"},{"type":"isbn13"}],"returns":"integer"}
|
||||
{"name":"btisbncmp","args":[{"type":"isbn"},{"type":"ean13"}],"returns":"integer"}
|
||||
{"name":"btisbncmp","args":[{"type":"isbn"},{"type":"isbn"}],"returns":"integer"}
|
||||
{"name":"btisbncmp","args":[{"type":"isbn"},{"type":"isbn13"}],"returns":"integer"}
|
||||
{"name":"btismn13cmp","args":[{"type":"ismn13"},{"type":"ean13"}],"returns":"integer"}
|
||||
{"name":"btismn13cmp","args":[{"type":"ismn13"},{"type":"ismn"}],"returns":"integer"}
|
||||
{"name":"btismn13cmp","args":[{"type":"ismn13"},{"type":"ismn13"}],"returns":"integer"}
|
||||
{"name":"btismncmp","args":[{"type":"ismn"},{"type":"ean13"}],"returns":"integer"}
|
||||
{"name":"btismncmp","args":[{"type":"ismn"},{"type":"ismn"}],"returns":"integer"}
|
||||
{"name":"btismncmp","args":[{"type":"ismn"},{"type":"ismn13"}],"returns":"integer"}
|
||||
{"name":"btissn13cmp","args":[{"type":"issn13"},{"type":"ean13"}],"returns":"integer"}
|
||||
{"name":"btissn13cmp","args":[{"type":"issn13"},{"type":"issn"}],"returns":"integer"}
|
||||
{"name":"btissn13cmp","args":[{"type":"issn13"},{"type":"issn13"}],"returns":"integer"}
|
||||
{"name":"btissncmp","args":[{"type":"issn"},{"type":"ean13"}],"returns":"integer"}
|
||||
{"name":"btissncmp","args":[{"type":"issn"},{"type":"issn"}],"returns":"integer"}
|
||||
{"name":"btissncmp","args":[{"type":"issn"},{"type":"issn13"}],"returns":"integer"}
|
||||
{"name":"btupccmp","args":[{"type":"upc"},{"type":"ean13"}],"returns":"integer"}
|
||||
{"name":"btupccmp","args":[{"type":"upc"},{"type":"upc"}],"returns":"integer"}
|
||||
{"name":"ean13_in","args":[{"type":"cstring"}],"returns":"ean13"}
|
||||
{"name":"ean13_out","args":[{"type":"ean13"}],"returns":"cstring"}
|
||||
{"name":"ean13_out","args":[{"type":"isbn13"}],"returns":"cstring"}
|
||||
{"name":"ean13_out","args":[{"type":"ismn13"}],"returns":"cstring"}
|
||||
{"name":"ean13_out","args":[{"type":"issn13"}],"returns":"cstring"}
|
||||
{"name":"hashean13","args":[{"type":"ean13"}],"returns":"integer"}
|
||||
{"name":"hashisbn","args":[{"type":"isbn"}],"returns":"integer"}
|
||||
{"name":"hashisbn13","args":[{"type":"isbn13"}],"returns":"integer"}
|
||||
{"name":"hashismn","args":[{"type":"ismn"}],"returns":"integer"}
|
||||
{"name":"hashismn13","args":[{"type":"ismn13"}],"returns":"integer"}
|
||||
{"name":"hashissn","args":[{"type":"issn"}],"returns":"integer"}
|
||||
{"name":"hashissn13","args":[{"type":"issn13"}],"returns":"integer"}
|
||||
{"name":"hashupc","args":[{"type":"upc"}],"returns":"integer"}
|
||||
{"name":"is_valid","args":[{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"is_valid","args":[{"type":"isbn"}],"returns":"boolean"}
|
||||
{"name":"is_valid","args":[{"type":"isbn13"}],"returns":"boolean"}
|
||||
{"name":"is_valid","args":[{"type":"ismn"}],"returns":"boolean"}
|
||||
{"name":"is_valid","args":[{"type":"ismn13"}],"returns":"boolean"}
|
||||
{"name":"is_valid","args":[{"type":"issn"}],"returns":"boolean"}
|
||||
{"name":"is_valid","args":[{"type":"issn13"}],"returns":"boolean"}
|
||||
{"name":"is_valid","args":[{"type":"upc"}],"returns":"boolean"}
|
||||
{"name":"isbn","args":[{"type":"ean13"}],"returns":"isbn"}
|
||||
{"name":"isbn13","args":[{"type":"ean13"}],"returns":"isbn13"}
|
||||
{"name":"isbn13_in","args":[{"type":"cstring"}],"returns":"isbn13"}
|
||||
{"name":"isbn_in","args":[{"type":"cstring"}],"returns":"isbn"}
|
||||
{"name":"ismn","args":[{"type":"ean13"}],"returns":"ismn"}
|
||||
{"name":"ismn13","args":[{"type":"ean13"}],"returns":"ismn13"}
|
||||
{"name":"ismn13_in","args":[{"type":"cstring"}],"returns":"ismn13"}
|
||||
{"name":"ismn_in","args":[{"type":"cstring"}],"returns":"ismn"}
|
||||
{"name":"isn_out","args":[{"type":"isbn"}],"returns":"cstring"}
|
||||
{"name":"isn_out","args":[{"type":"ismn"}],"returns":"cstring"}
|
||||
{"name":"isn_out","args":[{"type":"issn"}],"returns":"cstring"}
|
||||
{"name":"isn_out","args":[{"type":"upc"}],"returns":"cstring"}
|
||||
{"name":"isn_weak","returns":"boolean"}
|
||||
{"name":"isn_weak","args":[{"type":"boolean"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"ean13"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"ean13"},{"type":"isbn"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"ean13"},{"type":"isbn13"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"ean13"},{"type":"ismn"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"ean13"},{"type":"ismn13"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"ean13"},{"type":"issn"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"ean13"},{"type":"issn13"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"ean13"},{"type":"upc"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"isbn"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"isbn"},{"type":"isbn"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"isbn"},{"type":"isbn13"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"isbn13"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"isbn13"},{"type":"isbn"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"isbn13"},{"type":"isbn13"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"ismn"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"ismn"},{"type":"ismn"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"ismn"},{"type":"ismn13"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"ismn13"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"ismn13"},{"type":"ismn"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"ismn13"},{"type":"ismn13"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"issn"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"issn"},{"type":"issn"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"issn"},{"type":"issn13"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"issn13"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"issn13"},{"type":"issn"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"issn13"},{"type":"issn13"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"upc"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isneq","args":[{"type":"upc"},{"type":"upc"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"ean13"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"ean13"},{"type":"isbn"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"ean13"},{"type":"isbn13"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"ean13"},{"type":"ismn"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"ean13"},{"type":"ismn13"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"ean13"},{"type":"issn"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"ean13"},{"type":"issn13"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"ean13"},{"type":"upc"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"isbn"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"isbn"},{"type":"isbn"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"isbn"},{"type":"isbn13"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"isbn13"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"isbn13"},{"type":"isbn"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"isbn13"},{"type":"isbn13"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"ismn"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"ismn"},{"type":"ismn"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"ismn"},{"type":"ismn13"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"ismn13"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"ismn13"},{"type":"ismn"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"ismn13"},{"type":"ismn13"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"issn"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"issn"},{"type":"issn"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"issn"},{"type":"issn13"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"issn13"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"issn13"},{"type":"issn"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"issn13"},{"type":"issn13"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"upc"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnge","args":[{"type":"upc"},{"type":"upc"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"ean13"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"ean13"},{"type":"isbn"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"ean13"},{"type":"isbn13"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"ean13"},{"type":"ismn"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"ean13"},{"type":"ismn13"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"ean13"},{"type":"issn"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"ean13"},{"type":"issn13"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"ean13"},{"type":"upc"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"isbn"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"isbn"},{"type":"isbn"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"isbn"},{"type":"isbn13"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"isbn13"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"isbn13"},{"type":"isbn"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"isbn13"},{"type":"isbn13"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"ismn"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"ismn"},{"type":"ismn"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"ismn"},{"type":"ismn13"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"ismn13"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"ismn13"},{"type":"ismn"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"ismn13"},{"type":"ismn13"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"issn"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"issn"},{"type":"issn"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"issn"},{"type":"issn13"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"issn13"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"issn13"},{"type":"issn"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"issn13"},{"type":"issn13"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"upc"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isngt","args":[{"type":"upc"},{"type":"upc"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"ean13"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"ean13"},{"type":"isbn"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"ean13"},{"type":"isbn13"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"ean13"},{"type":"ismn"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"ean13"},{"type":"ismn13"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"ean13"},{"type":"issn"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"ean13"},{"type":"issn13"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"ean13"},{"type":"upc"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"isbn"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"isbn"},{"type":"isbn"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"isbn"},{"type":"isbn13"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"isbn13"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"isbn13"},{"type":"isbn"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"isbn13"},{"type":"isbn13"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"ismn"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"ismn"},{"type":"ismn"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"ismn"},{"type":"ismn13"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"ismn13"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"ismn13"},{"type":"ismn"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"ismn13"},{"type":"ismn13"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"issn"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"issn"},{"type":"issn"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"issn"},{"type":"issn13"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"issn13"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"issn13"},{"type":"issn"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"issn13"},{"type":"issn13"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"upc"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnle","args":[{"type":"upc"},{"type":"upc"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"ean13"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"ean13"},{"type":"isbn"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"ean13"},{"type":"isbn13"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"ean13"},{"type":"ismn"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"ean13"},{"type":"ismn13"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"ean13"},{"type":"issn"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"ean13"},{"type":"issn13"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"ean13"},{"type":"upc"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"isbn"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"isbn"},{"type":"isbn"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"isbn"},{"type":"isbn13"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"isbn13"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"isbn13"},{"type":"isbn"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"isbn13"},{"type":"isbn13"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"ismn"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"ismn"},{"type":"ismn"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"ismn"},{"type":"ismn13"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"ismn13"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"ismn13"},{"type":"ismn"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"ismn13"},{"type":"ismn13"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"issn"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"issn"},{"type":"issn"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"issn"},{"type":"issn13"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"issn13"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"issn13"},{"type":"issn"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"issn13"},{"type":"issn13"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"upc"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnlt","args":[{"type":"upc"},{"type":"upc"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"ean13"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"ean13"},{"type":"isbn"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"ean13"},{"type":"isbn13"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"ean13"},{"type":"ismn"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"ean13"},{"type":"ismn13"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"ean13"},{"type":"issn"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"ean13"},{"type":"issn13"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"ean13"},{"type":"upc"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"isbn"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"isbn"},{"type":"isbn"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"isbn"},{"type":"isbn13"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"isbn13"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"isbn13"},{"type":"isbn"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"isbn13"},{"type":"isbn13"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"ismn"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"ismn"},{"type":"ismn"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"ismn"},{"type":"ismn13"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"ismn13"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"ismn13"},{"type":"ismn"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"ismn13"},{"type":"ismn13"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"issn"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"issn"},{"type":"issn"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"issn"},{"type":"issn13"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"issn13"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"issn13"},{"type":"issn"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"issn13"},{"type":"issn13"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"upc"},{"type":"ean13"}],"returns":"boolean"}
|
||||
{"name":"isnne","args":[{"type":"upc"},{"type":"upc"}],"returns":"boolean"}
|
||||
{"name":"issn","args":[{"type":"ean13"}],"returns":"issn"}
|
||||
{"name":"issn13","args":[{"type":"ean13"}],"returns":"issn13"}
|
||||
{"name":"issn13_in","args":[{"type":"cstring"}],"returns":"issn13"}
|
||||
{"name":"issn_in","args":[{"type":"cstring"}],"returns":"issn"}
|
||||
{"name":"make_valid","args":[{"type":"ean13"}],"returns":"ean13"}
|
||||
{"name":"make_valid","args":[{"type":"isbn"}],"returns":"isbn"}
|
||||
{"name":"make_valid","args":[{"type":"isbn13"}],"returns":"isbn13"}
|
||||
{"name":"make_valid","args":[{"type":"ismn"}],"returns":"ismn"}
|
||||
{"name":"make_valid","args":[{"type":"ismn13"}],"returns":"ismn13"}
|
||||
{"name":"make_valid","args":[{"type":"issn"}],"returns":"issn"}
|
||||
{"name":"make_valid","args":[{"type":"issn13"}],"returns":"issn13"}
|
||||
{"name":"make_valid","args":[{"type":"upc"}],"returns":"upc"}
|
||||
{"name":"upc","args":[{"type":"ean13"}],"returns":"upc"}
|
||||
{"name":"upc_in","args":[{"type":"cstring"}],"returns":"upc"}
|
||||
@@ -0,0 +1,8 @@
|
||||
{"name":"ean13","category":"U"}
|
||||
{"name":"isbn13","category":"U"}
|
||||
{"name":"ismn13","category":"U"}
|
||||
{"name":"issn13","category":"U"}
|
||||
{"name":"isbn","category":"U"}
|
||||
{"name":"ismn","category":"U"}
|
||||
{"name":"issn","category":"U"}
|
||||
{"name":"upc","category":"U"}
|
||||
@@ -0,0 +1,2 @@
|
||||
{"name":"lo_manage","returns":"trigger"}
|
||||
{"name":"lo_oid","args":[{"type":"lo"}],"returns":"oid"}
|
||||
@@ -0,0 +1 @@
|
||||
{"name":"lo","category":"N"}
|
||||
@@ -0,0 +1,59 @@
|
||||
{"name":"_lt_q_regex","args":[{"type":"ltree[]"},{"type":"lquery[]"}],"returns":"boolean"}
|
||||
{"name":"_lt_q_rregex","args":[{"type":"lquery[]"},{"type":"ltree[]"}],"returns":"boolean"}
|
||||
{"name":"_ltq_extract_regex","args":[{"type":"ltree[]"},{"type":"lquery"}],"returns":"ltree"}
|
||||
{"name":"_ltq_regex","args":[{"type":"ltree[]"},{"type":"lquery"}],"returns":"boolean"}
|
||||
{"name":"_ltq_rregex","args":[{"type":"lquery"},{"type":"ltree[]"}],"returns":"boolean"}
|
||||
{"name":"_ltree_extract_isparent","args":[{"type":"ltree[]"},{"type":"ltree"}],"returns":"ltree"}
|
||||
{"name":"_ltree_extract_risparent","args":[{"type":"ltree[]"},{"type":"ltree"}],"returns":"ltree"}
|
||||
{"name":"_ltree_isparent","args":[{"type":"ltree[]"},{"type":"ltree"}],"returns":"boolean"}
|
||||
{"name":"_ltree_r_isparent","args":[{"type":"ltree"},{"type":"ltree[]"}],"returns":"boolean"}
|
||||
{"name":"_ltree_r_risparent","args":[{"type":"ltree"},{"type":"ltree[]"}],"returns":"boolean"}
|
||||
{"name":"_ltree_risparent","args":[{"type":"ltree[]"},{"type":"ltree"}],"returns":"boolean"}
|
||||
{"name":"_ltxtq_exec","args":[{"type":"ltree[]"},{"type":"ltxtquery"}],"returns":"boolean"}
|
||||
{"name":"_ltxtq_extract_exec","args":[{"type":"ltree[]"},{"type":"ltxtquery"}],"returns":"ltree"}
|
||||
{"name":"_ltxtq_rexec","args":[{"type":"ltxtquery"},{"type":"ltree[]"}],"returns":"boolean"}
|
||||
{"name":"index","args":[{"type":"ltree"},{"type":"ltree"}],"returns":"integer"}
|
||||
{"name":"index","args":[{"type":"ltree"},{"type":"ltree"},{"type":"integer"}],"returns":"integer"}
|
||||
{"name":"lca","args":[{"type":"ltree"},{"type":"ltree"}],"returns":"ltree"}
|
||||
{"name":"lca","args":[{"type":"ltree"},{"type":"ltree"},{"type":"ltree"}],"returns":"ltree"}
|
||||
{"name":"lca","args":[{"type":"ltree"},{"type":"ltree"},{"type":"ltree"},{"type":"ltree"}],"returns":"ltree"}
|
||||
{"name":"lca","args":[{"type":"ltree"},{"type":"ltree"},{"type":"ltree"},{"type":"ltree"},{"type":"ltree"}],"returns":"ltree"}
|
||||
{"name":"lca","args":[{"type":"ltree"},{"type":"ltree"},{"type":"ltree"},{"type":"ltree"},{"type":"ltree"},{"type":"ltree"}],"returns":"ltree"}
|
||||
{"name":"lca","args":[{"type":"ltree"},{"type":"ltree"},{"type":"ltree"},{"type":"ltree"},{"type":"ltree"},{"type":"ltree"},{"type":"ltree"}],"returns":"ltree"}
|
||||
{"name":"lca","args":[{"type":"ltree"},{"type":"ltree"},{"type":"ltree"},{"type":"ltree"},{"type":"ltree"},{"type":"ltree"},{"type":"ltree"},{"type":"ltree"}],"returns":"ltree"}
|
||||
{"name":"lca","args":[{"type":"ltree[]"}],"returns":"ltree"}
|
||||
{"name":"lquery_in","args":[{"type":"cstring"}],"returns":"lquery"}
|
||||
{"name":"lquery_out","args":[{"type":"lquery"}],"returns":"cstring"}
|
||||
{"name":"lquery_send","args":[{"type":"lquery"}],"returns":"bytea"}
|
||||
{"name":"lt_q_regex","args":[{"type":"ltree"},{"type":"lquery[]"}],"returns":"boolean"}
|
||||
{"name":"lt_q_rregex","args":[{"type":"lquery[]"},{"type":"ltree"}],"returns":"boolean"}
|
||||
{"name":"ltq_regex","args":[{"type":"ltree"},{"type":"lquery"}],"returns":"boolean"}
|
||||
{"name":"ltq_rregex","args":[{"type":"lquery"},{"type":"ltree"}],"returns":"boolean"}
|
||||
{"name":"ltree2text","args":[{"type":"ltree"}],"returns":"text"}
|
||||
{"name":"ltree_addltree","args":[{"type":"ltree"},{"type":"ltree"}],"returns":"ltree"}
|
||||
{"name":"ltree_addtext","args":[{"type":"ltree"},{"type":"text"}],"returns":"ltree"}
|
||||
{"name":"ltree_cmp","args":[{"type":"ltree"},{"type":"ltree"}],"returns":"integer"}
|
||||
{"name":"ltree_eq","args":[{"type":"ltree"},{"type":"ltree"}],"returns":"boolean"}
|
||||
{"name":"ltree_ge","args":[{"type":"ltree"},{"type":"ltree"}],"returns":"boolean"}
|
||||
{"name":"ltree_gist_in","args":[{"type":"cstring"}],"returns":"ltree_gist"}
|
||||
{"name":"ltree_gist_out","args":[{"type":"ltree_gist"}],"returns":"cstring"}
|
||||
{"name":"ltree_gt","args":[{"type":"ltree"},{"type":"ltree"}],"returns":"boolean"}
|
||||
{"name":"ltree_in","args":[{"type":"cstring"}],"returns":"ltree"}
|
||||
{"name":"ltree_isparent","args":[{"type":"ltree"},{"type":"ltree"}],"returns":"boolean"}
|
||||
{"name":"ltree_le","args":[{"type":"ltree"},{"type":"ltree"}],"returns":"boolean"}
|
||||
{"name":"ltree_lt","args":[{"type":"ltree"},{"type":"ltree"}],"returns":"boolean"}
|
||||
{"name":"ltree_ne","args":[{"type":"ltree"},{"type":"ltree"}],"returns":"boolean"}
|
||||
{"name":"ltree_out","args":[{"type":"ltree"}],"returns":"cstring"}
|
||||
{"name":"ltree_risparent","args":[{"type":"ltree"},{"type":"ltree"}],"returns":"boolean"}
|
||||
{"name":"ltree_send","args":[{"type":"ltree"}],"returns":"bytea"}
|
||||
{"name":"ltree_textadd","args":[{"type":"text"},{"type":"ltree"}],"returns":"ltree"}
|
||||
{"name":"ltxtq_exec","args":[{"type":"ltree"},{"type":"ltxtquery"}],"returns":"boolean"}
|
||||
{"name":"ltxtq_in","args":[{"type":"cstring"}],"returns":"ltxtquery"}
|
||||
{"name":"ltxtq_out","args":[{"type":"ltxtquery"}],"returns":"cstring"}
|
||||
{"name":"ltxtq_rexec","args":[{"type":"ltxtquery"},{"type":"ltree"}],"returns":"boolean"}
|
||||
{"name":"ltxtq_send","args":[{"type":"ltxtquery"}],"returns":"bytea"}
|
||||
{"name":"nlevel","args":[{"type":"ltree"}],"returns":"integer"}
|
||||
{"name":"subltree","args":[{"type":"ltree"},{"type":"integer"},{"type":"integer"}],"returns":"ltree"}
|
||||
{"name":"subpath","args":[{"type":"ltree"},{"type":"integer"}],"returns":"ltree"}
|
||||
{"name":"subpath","args":[{"type":"ltree"},{"type":"integer"},{"type":"integer"}],"returns":"ltree"}
|
||||
{"name":"text2ltree","args":[{"type":"text"}],"returns":"ltree"}
|
||||
@@ -0,0 +1,4 @@
|
||||
{"name":"ltree","category":"U"}
|
||||
{"name":"lquery","category":"U"}
|
||||
{"name":"ltxtquery","category":"U"}
|
||||
{"name":"ltree_gist","category":"U"}
|
||||
@@ -0,0 +1,31 @@
|
||||
{"name":"brin_metapage_info","args":[{"name":"page","type":"bytea"}],"returns":"record"}
|
||||
{"name":"brin_page_items","args":[{"name":"page","type":"bytea"},{"name":"index_oid","type":"regclass"}],"returns":"record"}
|
||||
{"name":"brin_page_type","args":[{"name":"page","type":"bytea"}],"returns":"text"}
|
||||
{"name":"brin_revmap_data","args":[{"name":"page","type":"bytea"}],"returns":"tid"}
|
||||
{"name":"bt_metap","args":[{"name":"relname","type":"text"}],"returns":"record"}
|
||||
{"name":"bt_multi_page_stats","args":[{"name":"relname","type":"text"},{"name":"blkno","type":"bigint"},{"name":"blk_count","type":"bigint"}],"returns":"record"}
|
||||
{"name":"bt_page_items","args":[{"name":"page","type":"bytea"}],"returns":"record"}
|
||||
{"name":"bt_page_items","args":[{"name":"relname","type":"text"},{"name":"blkno","type":"bigint"}],"returns":"record"}
|
||||
{"name":"bt_page_stats","args":[{"name":"relname","type":"text"},{"name":"blkno","type":"bigint"}],"returns":"record"}
|
||||
{"name":"fsm_page_contents","args":[{"name":"page","type":"bytea"}],"returns":"text"}
|
||||
{"name":"get_raw_page","args":[{"type":"text"},{"type":"bigint"}],"returns":"bytea"}
|
||||
{"name":"get_raw_page","args":[{"type":"text"},{"type":"text"},{"type":"bigint"}],"returns":"bytea"}
|
||||
{"name":"gin_leafpage_items","args":[{"name":"page","type":"bytea"}],"returns":"record"}
|
||||
{"name":"gin_metapage_info","args":[{"name":"page","type":"bytea"}],"returns":"record"}
|
||||
{"name":"gin_page_opaque_info","args":[{"name":"page","type":"bytea"}],"returns":"record"}
|
||||
{"name":"gist_page_items","args":[{"name":"page","type":"bytea"},{"name":"index_oid","type":"regclass"}],"returns":"record"}
|
||||
{"name":"gist_page_items_bytea","args":[{"name":"page","type":"bytea"}],"returns":"record"}
|
||||
{"name":"gist_page_opaque_info","args":[{"name":"page","type":"bytea"}],"returns":"record"}
|
||||
{"name":"hash_bitmap_info","args":[{"name":"index_oid","type":"regclass"},{"name":"blkno","type":"bigint"}],"returns":"record"}
|
||||
{"name":"hash_metapage_info","args":[{"name":"page","type":"bytea"}],"returns":"record"}
|
||||
{"name":"hash_page_items","args":[{"name":"page","type":"bytea"}],"returns":"record"}
|
||||
{"name":"hash_page_stats","args":[{"name":"page","type":"bytea"}],"returns":"record"}
|
||||
{"name":"hash_page_type","args":[{"name":"page","type":"bytea"}],"returns":"text"}
|
||||
{"name":"heap_page_item_attrs","args":[{"name":"page","type":"bytea"},{"name":"rel_oid","type":"regclass"}],"returns":"record"}
|
||||
{"name":"heap_page_item_attrs","args":[{"name":"page","type":"bytea"},{"name":"rel_oid","type":"regclass"},{"name":"do_detoast","type":"boolean"}],"returns":"record"}
|
||||
{"name":"heap_page_items","args":[{"name":"page","type":"bytea"}],"returns":"record"}
|
||||
{"name":"heap_tuple_infomask_flags","args":[{"name":"t_infomask","type":"integer"},{"name":"t_infomask2","type":"integer"}],"returns":"record"}
|
||||
{"name":"page_checksum","args":[{"name":"page","type":"bytea"},{"name":"blkno","type":"bigint"}],"returns":"smallint"}
|
||||
{"name":"page_header","args":[{"name":"page","type":"bytea"}],"returns":"record"}
|
||||
{"name":"tuple_data_split","args":[{"name":"rel_oid","type":"oid"},{"name":"t_data","type":"bytea"},{"name":"t_infomask","type":"integer"},{"name":"t_infomask2","type":"integer"},{"name":"t_bits","type":"text"}],"returns":"bytea[]"}
|
||||
{"name":"tuple_data_split","args":[{"name":"rel_oid","type":"oid"},{"name":"t_data","type":"bytea"},{"name":"t_infomask","type":"integer"},{"name":"t_infomask2","type":"integer"},{"name":"t_bits","type":"text"},{"name":"do_detoast","type":"boolean"}],"returns":"bytea[]"}
|
||||
@@ -0,0 +1,3 @@
|
||||
{"name":"pg_buffercache_pages","returns":"record"}
|
||||
{"name":"pg_buffercache_summary","returns":"record"}
|
||||
{"name":"pg_buffercache_usage_counts","returns":"record"}
|
||||
@@ -0,0 +1,2 @@
|
||||
{"name":"pg_freespace","args":[{"name":"rel","type":"regclass"}],"returns":"record"}
|
||||
{"name":"pg_freespace","args":[{"type":"regclass"},{"type":"bigint"}],"returns":"smallint"}
|
||||
@@ -0,0 +1,3 @@
|
||||
{"name":"autoprewarm_dump_now","returns":"bigint"}
|
||||
{"name":"autoprewarm_start_worker","returns":"void"}
|
||||
{"name":"pg_prewarm","args":[{"type":"regclass"},{"name":"mode","type":"text","has_default":true},{"name":"fork","type":"text","has_default":true},{"name":"first_block","type":"bigint","has_default":true},{"name":"last_block","type":"bigint","has_default":true}],"returns":"bigint"}
|
||||
@@ -0,0 +1,3 @@
|
||||
{"name":"pg_stat_statements","args":[{"name":"showtext","type":"boolean"}],"returns":"record"}
|
||||
{"name":"pg_stat_statements_info","returns":"record"}
|
||||
{"name":"pg_stat_statements_reset","args":[{"name":"userid","type":"oid","has_default":true},{"name":"dbid","type":"oid","has_default":true},{"name":"queryid","type":"bigint","has_default":true}],"returns":"void"}
|
||||
@@ -0,0 +1,18 @@
|
||||
{"name":"gtrgm_in","args":[{"type":"cstring"}],"returns":"gtrgm"}
|
||||
{"name":"gtrgm_out","args":[{"type":"gtrgm"}],"returns":"cstring"}
|
||||
{"name":"set_limit","args":[{"type":"real"}],"returns":"real"}
|
||||
{"name":"show_limit","returns":"real"}
|
||||
{"name":"show_trgm","args":[{"type":"text"}],"returns":"text[]"}
|
||||
{"name":"similarity","args":[{"type":"text"},{"type":"text"}],"returns":"real"}
|
||||
{"name":"similarity_dist","args":[{"type":"text"},{"type":"text"}],"returns":"real"}
|
||||
{"name":"similarity_op","args":[{"type":"text"},{"type":"text"}],"returns":"boolean"}
|
||||
{"name":"strict_word_similarity","args":[{"type":"text"},{"type":"text"}],"returns":"real"}
|
||||
{"name":"strict_word_similarity_commutator_op","args":[{"type":"text"},{"type":"text"}],"returns":"boolean"}
|
||||
{"name":"strict_word_similarity_dist_commutator_op","args":[{"type":"text"},{"type":"text"}],"returns":"real"}
|
||||
{"name":"strict_word_similarity_dist_op","args":[{"type":"text"},{"type":"text"}],"returns":"real"}
|
||||
{"name":"strict_word_similarity_op","args":[{"type":"text"},{"type":"text"}],"returns":"boolean"}
|
||||
{"name":"word_similarity","args":[{"type":"text"},{"type":"text"}],"returns":"real"}
|
||||
{"name":"word_similarity_commutator_op","args":[{"type":"text"},{"type":"text"}],"returns":"boolean"}
|
||||
{"name":"word_similarity_dist_commutator_op","args":[{"type":"text"},{"type":"text"}],"returns":"real"}
|
||||
{"name":"word_similarity_dist_op","args":[{"type":"text"},{"type":"text"}],"returns":"real"}
|
||||
{"name":"word_similarity_op","args":[{"type":"text"},{"type":"text"}],"returns":"boolean"}
|
||||
@@ -0,0 +1 @@
|
||||
{"name":"gtrgm","category":"U"}
|
||||
@@ -0,0 +1,8 @@
|
||||
{"name":"pg_check_frozen","args":[{"type":"regclass"}],"returns":"tid"}
|
||||
{"name":"pg_check_visible","args":[{"type":"regclass"}],"returns":"tid"}
|
||||
{"name":"pg_truncate_visibility_map","args":[{"type":"regclass"}],"returns":"void"}
|
||||
{"name":"pg_visibility","args":[{"type":"regclass"}],"returns":"record"}
|
||||
{"name":"pg_visibility","args":[{"type":"regclass"},{"name":"blkno","type":"bigint"}],"returns":"record"}
|
||||
{"name":"pg_visibility_map","args":[{"type":"regclass"}],"returns":"record"}
|
||||
{"name":"pg_visibility_map","args":[{"type":"regclass"},{"name":"blkno","type":"bigint"}],"returns":"record"}
|
||||
{"name":"pg_visibility_map_summary","args":[{"type":"regclass"}],"returns":"record"}
|
||||
@@ -0,0 +1,35 @@
|
||||
{"name":"armor","args":[{"type":"bytea"}],"returns":"text"}
|
||||
{"name":"armor","args":[{"type":"bytea"},{"type":"text[]"},{"type":"text[]"}],"returns":"text"}
|
||||
{"name":"crypt","args":[{"type":"text"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"dearmor","args":[{"type":"text"}],"returns":"bytea"}
|
||||
{"name":"decrypt","args":[{"type":"bytea"},{"type":"bytea"},{"type":"text"}],"returns":"bytea"}
|
||||
{"name":"decrypt_iv","args":[{"type":"bytea"},{"type":"bytea"},{"type":"bytea"},{"type":"text"}],"returns":"bytea"}
|
||||
{"name":"digest","args":[{"type":"text"},{"type":"text"}],"returns":"bytea"}
|
||||
{"name":"digest","args":[{"type":"bytea"},{"type":"text"}],"returns":"bytea"}
|
||||
{"name":"encrypt","args":[{"type":"bytea"},{"type":"bytea"},{"type":"text"}],"returns":"bytea"}
|
||||
{"name":"encrypt_iv","args":[{"type":"bytea"},{"type":"bytea"},{"type":"bytea"},{"type":"text"}],"returns":"bytea"}
|
||||
{"name":"gen_random_bytes","args":[{"type":"integer"}],"returns":"bytea"}
|
||||
{"name":"gen_salt","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"gen_salt","args":[{"type":"text"},{"type":"integer"}],"returns":"text"}
|
||||
{"name":"hmac","args":[{"type":"bytea"},{"type":"bytea"},{"type":"text"}],"returns":"bytea"}
|
||||
{"name":"hmac","args":[{"type":"text"},{"type":"text"},{"type":"text"}],"returns":"bytea"}
|
||||
{"name":"pgp_armor_headers","args":[{"type":"text"}],"returns":"record"}
|
||||
{"name":"pgp_key_id","args":[{"type":"bytea"}],"returns":"text"}
|
||||
{"name":"pgp_pub_decrypt","args":[{"type":"bytea"},{"type":"bytea"}],"returns":"text"}
|
||||
{"name":"pgp_pub_decrypt","args":[{"type":"bytea"},{"type":"bytea"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"pgp_pub_decrypt","args":[{"type":"bytea"},{"type":"bytea"},{"type":"text"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"pgp_pub_decrypt_bytea","args":[{"type":"bytea"},{"type":"bytea"}],"returns":"bytea"}
|
||||
{"name":"pgp_pub_decrypt_bytea","args":[{"type":"bytea"},{"type":"bytea"},{"type":"text"}],"returns":"bytea"}
|
||||
{"name":"pgp_pub_decrypt_bytea","args":[{"type":"bytea"},{"type":"bytea"},{"type":"text"},{"type":"text"}],"returns":"bytea"}
|
||||
{"name":"pgp_pub_encrypt","args":[{"type":"text"},{"type":"bytea"}],"returns":"bytea"}
|
||||
{"name":"pgp_pub_encrypt","args":[{"type":"text"},{"type":"bytea"},{"type":"text"}],"returns":"bytea"}
|
||||
{"name":"pgp_pub_encrypt_bytea","args":[{"type":"bytea"},{"type":"bytea"}],"returns":"bytea"}
|
||||
{"name":"pgp_pub_encrypt_bytea","args":[{"type":"bytea"},{"type":"bytea"},{"type":"text"}],"returns":"bytea"}
|
||||
{"name":"pgp_sym_decrypt","args":[{"type":"bytea"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"pgp_sym_decrypt","args":[{"type":"bytea"},{"type":"text"},{"type":"text"}],"returns":"text"}
|
||||
{"name":"pgp_sym_decrypt_bytea","args":[{"type":"bytea"},{"type":"text"}],"returns":"bytea"}
|
||||
{"name":"pgp_sym_decrypt_bytea","args":[{"type":"bytea"},{"type":"text"},{"type":"text"}],"returns":"bytea"}
|
||||
{"name":"pgp_sym_encrypt","args":[{"type":"text"},{"type":"text"}],"returns":"bytea"}
|
||||
{"name":"pgp_sym_encrypt","args":[{"type":"text"},{"type":"text"},{"type":"text"}],"returns":"bytea"}
|
||||
{"name":"pgp_sym_encrypt_bytea","args":[{"type":"bytea"},{"type":"text"}],"returns":"bytea"}
|
||||
{"name":"pgp_sym_encrypt_bytea","args":[{"type":"bytea"},{"type":"text"},{"type":"text"}],"returns":"bytea"}
|
||||
@@ -0,0 +1 @@
|
||||
{"name":"pgrowlocks","args":[{"name":"relname","type":"text"}],"returns":"record"}
|
||||
@@ -0,0 +1,9 @@
|
||||
{"name":"pg_relpages","args":[{"name":"relname","type":"regclass"}],"returns":"bigint"}
|
||||
{"name":"pg_relpages","args":[{"name":"relname","type":"text"}],"returns":"bigint"}
|
||||
{"name":"pgstatginindex","args":[{"name":"relname","type":"regclass"}],"returns":"record"}
|
||||
{"name":"pgstathashindex","args":[{"name":"relname","type":"regclass"}],"returns":"record"}
|
||||
{"name":"pgstatindex","args":[{"name":"relname","type":"regclass"}],"returns":"record"}
|
||||
{"name":"pgstatindex","args":[{"name":"relname","type":"text"}],"returns":"record"}
|
||||
{"name":"pgstattuple","args":[{"name":"reloid","type":"regclass"}],"returns":"record"}
|
||||
{"name":"pgstattuple","args":[{"name":"relname","type":"text"}],"returns":"record"}
|
||||
{"name":"pgstattuple_approx","args":[{"name":"reloid","type":"regclass"}],"returns":"record"}
|
||||
@@ -0,0 +1,5 @@
|
||||
{"name":"postgres_fdw_disconnect","args":[{"type":"text"}],"returns":"boolean"}
|
||||
{"name":"postgres_fdw_disconnect_all","returns":"boolean"}
|
||||
{"name":"postgres_fdw_get_connections","returns":"record"}
|
||||
{"name":"postgres_fdw_handler","returns":"fdw_handler"}
|
||||
{"name":"postgres_fdw_validator","args":[{"type":"text[]"},{"type":"oid"}],"returns":"void"}
|
||||
@@ -0,0 +1,22 @@
|
||||
{"name":"seg_center","args":[{"type":"seg"}],"returns":"real"}
|
||||
{"name":"seg_cmp","args":[{"type":"seg"},{"type":"seg"}],"returns":"integer"}
|
||||
{"name":"seg_contained","args":[{"type":"seg"},{"type":"seg"}],"returns":"boolean"}
|
||||
{"name":"seg_contains","args":[{"type":"seg"},{"type":"seg"}],"returns":"boolean"}
|
||||
{"name":"seg_different","args":[{"type":"seg"},{"type":"seg"}],"returns":"boolean"}
|
||||
{"name":"seg_ge","args":[{"type":"seg"},{"type":"seg"}],"returns":"boolean"}
|
||||
{"name":"seg_gt","args":[{"type":"seg"},{"type":"seg"}],"returns":"boolean"}
|
||||
{"name":"seg_in","args":[{"type":"cstring"}],"returns":"seg"}
|
||||
{"name":"seg_inter","args":[{"type":"seg"},{"type":"seg"}],"returns":"seg"}
|
||||
{"name":"seg_le","args":[{"type":"seg"},{"type":"seg"}],"returns":"boolean"}
|
||||
{"name":"seg_left","args":[{"type":"seg"},{"type":"seg"}],"returns":"boolean"}
|
||||
{"name":"seg_lower","args":[{"type":"seg"}],"returns":"real"}
|
||||
{"name":"seg_lt","args":[{"type":"seg"},{"type":"seg"}],"returns":"boolean"}
|
||||
{"name":"seg_out","args":[{"type":"seg"}],"returns":"cstring"}
|
||||
{"name":"seg_over_left","args":[{"type":"seg"},{"type":"seg"}],"returns":"boolean"}
|
||||
{"name":"seg_over_right","args":[{"type":"seg"},{"type":"seg"}],"returns":"boolean"}
|
||||
{"name":"seg_overlap","args":[{"type":"seg"},{"type":"seg"}],"returns":"boolean"}
|
||||
{"name":"seg_right","args":[{"type":"seg"},{"type":"seg"}],"returns":"boolean"}
|
||||
{"name":"seg_same","args":[{"type":"seg"},{"type":"seg"}],"returns":"boolean"}
|
||||
{"name":"seg_size","args":[{"type":"seg"}],"returns":"real"}
|
||||
{"name":"seg_union","args":[{"type":"seg"},{"type":"seg"}],"returns":"seg"}
|
||||
{"name":"seg_upper","args":[{"type":"seg"}],"returns":"real"}
|
||||
@@ -0,0 +1 @@
|
||||
{"name":"seg","category":"U"}
|
||||
@@ -0,0 +1,10 @@
|
||||
{"name":"ssl_cipher","returns":"text"}
|
||||
{"name":"ssl_client_cert_present","returns":"boolean"}
|
||||
{"name":"ssl_client_dn","returns":"text"}
|
||||
{"name":"ssl_client_dn_field","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"ssl_client_serial","returns":"numeric"}
|
||||
{"name":"ssl_extension_info","returns":"record"}
|
||||
{"name":"ssl_is_used","returns":"boolean"}
|
||||
{"name":"ssl_issuer_dn","returns":"text"}
|
||||
{"name":"ssl_issuer_field","args":[{"type":"text"}],"returns":"text"}
|
||||
{"name":"ssl_version","returns":"text"}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user