From cd7850cb289fc184994c1e974963c7281a60c55c Mon Sep 17 00:00:00 2001 From: Benjamin Schultzer Date: Mon, 28 Apr 2025 17:23:57 -0400 Subject: [PATCH] Optimize SQL generation # Conflicts: # lib/sql.ex --- CHANGELOG.md | 1 + bench.exs | 10 +- benchmarks/v0.2.0.md | 97 +++ lib/lexer.ex | 1328 +++++++++++++++---------------- lib/mix/tasks/sql.gen.parser.ex | 54 +- lib/parser.ex | 2 + lib/sql.ex | 81 +- 7 files changed, 856 insertions(+), 717 deletions(-) create mode 100644 benchmarks/v0.2.0.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b9a77b..6e58ef0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ - MySQL adapter [#5](https://github.com/elixir-dbvisor/sql/pull/5). - PostgreSQL adapter [#5](https://github.com/elixir-dbvisor/sql/pull/5). - TDS adapter [#5](https://github.com/elixir-dbvisor/sql/pull/5). + - Improve SQL generation with 4-600x compared to Ecto [#7](https://github.com/elixir-dbvisor/sql/pull/7). ### Deprecation - token_to_sql/2 is deprecated in favor of SQL.Token behaviour token_to_string/2 [#5](https://github.com/elixir-dbvisor/sql/pull/5). diff --git a/bench.exs b/bench.exs index 00b6442..bb2faf3 100644 --- a/bench.exs +++ b/bench.exs @@ -1,10 +1,18 @@ import SQL +import Ecto.Query +defmodule SQL.Repo do + use Ecto.Repo, otp_app: :sql, adapter: Ecto.Adapters.Postgres +end +Application.put_env(:sql, :ecto_repos, [SQL.Repo]) +Application.put_env(:sql, SQL.Repo, username: "postgres", password: "postgres", hostname: "localhost", database: "sql_test#{System.get_env("MIX_TEST_PARTITION")}", pool: Ecto.Adapters.SQL.Sandbox, pool_size: 10) +SQL.Repo.start_link() range = 1..10_000 Benchee.run( %{ "to_stirng" => fn -> for _ <- range, do: to_string(~SQL[with recursive temp (n, fact) as (select 0, 1 union all select n+1, (n+1)*fact from temp where n < 9)]) end, "to_sql" => fn -> for _ <- range, do: SQL.to_sql(~SQL[with recursive temp (n, fact) as (select 0, 1 union all select n+1, (n+1)*fact from temp where n < 9)]) end, - "inspect" => fn -> for _ <- range, do: inspect(~SQL[with recursive temp (n, fact) as (select 0, 1 union all select n+1, (n+1)*fact from temp where n < 9)]) end + "inspect" => fn -> for _ <- range, do: inspect(~SQL[with recursive temp (n, fact) as (select 0, 1 union all select n+1, (n+1)*fact from temp where n < 9)]) end, + "ecto" => fn -> for _ <- range, do: SQL.Repo.to_sql(:all, "temp" |> recursive_ctes(true) |> with_cte("temp", as: ^union_all(select("temp", [t], %{n: 0, fact: 1}), ^where(select("temp", [t], [t.n+1, t.n+1*t.fact]), [t], t.n < 9))) |> select([t], [t.n])) end }, time: 10, memory_time: 2 diff --git a/benchmarks/v0.2.0.md b/benchmarks/v0.2.0.md new file mode 100644 index 0000000..78db670 --- /dev/null +++ b/benchmarks/v0.2.0.md @@ -0,0 +1,97 @@ +➜ sql git:(optimize-sql-generation) ✗ mix sql.bench +Compiling 1 file (.ex) +Generated sql app +Operating System: macOS +CPU Information: Apple M1 Max +Number of Available Cores: 10 +Available memory: 64 GB +Elixir 1.18.0 +Erlang 27.2 +JIT enabled: true + +Benchmark suite executing with the following configuration: +warmup: 2 s +time: 10 s +memory time: 2 s +reduction time: 0 ns +parallel: 1 +inputs: none specified +Estimated total run time: 56 s + +Benchmarking Ecto.Repo.to_sql ... +Benchmarking inspect ... +Benchmarking to_sql ... +Benchmarking to_stirng ... +Calculating statistics... +Formatting results... + +Name ips average deviation median 99th % +to_sql 4.74 K 0.21 ms ±20.20% 0.20 ms 0.32 ms +to_stirng 4.51 K 0.22 ms ±3.60% 0.22 ms 0.26 ms +inspect 0.24 K 4.09 ms ±2.96% 4.09 ms 4.36 ms +Ecto.Repo.to_sql 0.00757 K 132.03 ms ±1.45% 131.80 ms 139.43 ms + +Comparison: +to_sql 4.74 K +to_stirng 4.51 K - 1.05x slower +0.0108 ms +inspect 0.24 K - 19.39x slower +3.88 ms +Ecto.Repo.to_sql 0.00757 K - 626.20x slower +131.82 ms + +Memory usage statistics: + +Name Memory usage +to_sql 0.38 MB +to_stirng 0.153 MB - 0.40x memory usage -0.22888 MB +inspect 4.88 MB - 12.80x memory usage +4.50 MB +Ecto.Repo.to_sql 179.35 MB - 470.13x memory usage +178.97 MB + +**All measurements for memory usage were the same** + +➜ sql git:(optimize-sql-generation) ✗ mix sql.bench +Compiling 1 file (.ex) +Generated sql app +Operating System: macOS +CPU Information: Apple M1 Max +Number of Available Cores: 10 +Available memory: 64 GB +Elixir 1.18.0 +Erlang 27.2 +JIT enabled: true + +Benchmark suite executing with the following configuration: +warmup: 2 s +time: 10 s +memory time: 2 s +reduction time: 0 ns +parallel: 1 +inputs: none specified +Estimated total run time: 56 s + +Benchmarking ecto ... +Benchmarking inspect ... +Benchmarking to_sql ... +Benchmarking to_stirng ... +Calculating statistics... +Formatting results... + +Name ips average deviation median 99th % +to_stirng 27.59 36.24 ms ±0.75% 36.22 ms 37.21 ms +to_sql 27.45 36.42 ms ±0.47% 36.39 ms 36.93 ms +inspect 24.53 40.76 ms ±1.07% 40.75 ms 41.60 ms +ecto 6.96 143.65 ms ±1.37% 143.36 ms 148.62 ms + +Comparison: +to_stirng 27.59 +to_sql 27.45 - 1.00x slower +0.181 ms +inspect 24.53 - 1.12x slower +4.52 ms +ecto 6.96 - 3.96x slower +107.41 ms + +Memory usage statistics: + +Name Memory usage +to_stirng 4.50 MB +to_sql 4.73 MB - 1.05x memory usage +0.23 MB +inspect 9.23 MB - 2.05x memory usage +4.73 MB +ecto 202.87 MB - 45.11x memory usage +198.37 MB + +**All measurements for memory usage were the same** diff --git a/lib/lexer.ex b/lib/lexer.ex index 9b37800..b8e0370 100644 --- a/lib/lexer.ex +++ b/lib/lexer.ex @@ -3,6 +3,7 @@ defmodule SQL.Lexer do @moduledoc false + @compile {:inline, lex: 9, lex: 4, meta: 3, merge: 3, type: 2, node: 5} defguard is_data_type(node) when elem(node, 0) in ~w[integer float ident quote double_quote backtick bracket parens .]a defguard is_newline(b) when b in [10, 11, 12, 13, 133, 8232, 8233] @@ -23,9 +24,9 @@ defmodule SQL.Lexer do def expected_delimiter(:backtick), do: :"`" def expected_delimiter(type) when type in ~w[var code braces]a, do: :"}" - def lex(binary, binding, _meta, params \\ [], opts \\ [metadata: true]) do - case lex(binary, binary, [binding: binding, params: params] ++ opts, 0, 0, nil, [], [], 0) do - {"", _binary, opts, line, column, nil = type, [] = data, acc, _n} -> + def lex(binary, meta, params \\ 0, opts \\ [metadata: true]) do + case lex(binary, binary, [{:binding, []}, {:params, params}, {:meta, meta} | opts], 0, 0, nil, [], [], 0) do + {"", _binary, opts, line, column, nil = type, data, acc, _n} -> {:ok, opts, line, column, type, data, acc} {"", binary, _opts, end_line, end_column, type, _data, [{_, [line: line, column: column, file: file], _}|_], _n} when type in ~w[parens bracket double_quote quote backtick var code]a -> @@ -48,37 +49,32 @@ defmodule SQL.Lexer do lex(rest, binary, opts, line, column+2, nil, [], insert_node(node(:comments, line, column, data, opts), acc), n) end def lex(<>, binary, opts, line, column, :comments, data, acc, n) do - lex(rest, binary, opts, line, column+1, :comments, data ++ [b], acc, n) + lex(rest, binary, opts, line, column+1, :comments, [data | [b]], acc, n) end def lex(<>, binary, opts, line, column, _type, data, acc, n) do lex(rest, binary, opts, line, column+2, :var, data, acc, n) end + def lex(<>, binary, [_, _, _, {:format, true}] = opts, line, column, _type, data, acc, 0 = n), do: lex(rest, binary, opts, line, column+2, nil, [], insert_node(node(:binding, line, column, data, opts), acc), n) def lex(<>, binary, opts, line, column, type, data, acc, 0 = n) when type in ~w[code var]a do - if opts[:binding] do - opts = if type == :var do - update_in(opts, [:params], &(&1 ++ [opts[:binding][List.to_atom(data)]])) - else - update_in(opts, [:params], &(&1 ++ [elem(Code.eval_string(to_string(data), opts[:binding]), 0)])) - end - lex(rest, binary, opts, line, column+2, nil, [], insert_node(node(:binding, line, column, length(opts[:params]), opts), acc), n) - else - lex(rest, binary, opts, line, column+2, nil, [], insert_node(node(:binding, line, column, data, opts), acc), n) - end + opts = opts + |> Keyword.update!(:binding, &(&1 ++ [{type, IO.iodata_to_binary(data)}])) + |> Keyword.update!(:params, &(&1+1)) + lex(rest, binary, opts, line, column+2, nil, [], insert_node(node(:binding, line, column, Keyword.get(opts, :params), opts), acc), n) end def lex(<>, binary, opts, line, column, :code = type, data, acc, n) do - lex(rest, binary, opts, line, column+1, type, data ++ [?}], acc, n-1) + lex(rest, binary, opts, line, column+1, type, [data | [?}]], acc, n-1) end def lex(<>, binary, opts, line, column, type, data, acc, n) when type in ~w[var code]a and b in [?{] do - lex(rest, binary, opts, line, column+1, :code, data ++ [b], acc, n+1) + lex(rest, binary, opts, line, column+1, :code, [data | [b]], acc, n+1) end def lex(<>, binary, opts, line, column, :var = type, data, acc, n) when b in ?0..?9 and data != [] do - lex(rest, binary, opts, line, column+1, type, data ++ [b], acc, n) + lex(rest, binary, opts, line, column+1, type, [data | [b]], acc, n) end def lex(<>, binary, opts, line, column, :var = type, data, acc, n) when b in ?a..?z or b in ?A..?Z or (b == ?_ and data != []) do - lex(rest, binary, opts, line, column+1, type, data ++ [b], acc, n) + lex(rest, binary, opts, line, column+1, type, [data | [b]], acc, n) end def lex(<>, binary, opts, line, column, type, data, acc, n) when type in ~w[var code]a do - lex(rest, binary, opts, line, column+1, :code, data ++ [b], acc, n) + lex(rest, binary, opts, line, column+1, :code, [data | [b]], acc, n) end def lex(<>, binary, opts, line, column, type, data, acc, n) when b in [?(, ?[] do acc = case ident(type, data) do @@ -108,7 +104,7 @@ defmodule SQL.Lexer do lex(rest, binary, opts, line, column+1, nil, [], insert_node(node(type, line, column, data, opts), acc), n) end def lex(<>, binary, opts, line, column, type, data, acc, n) when type in ~w[double_quote quote backtick]a do - lex(rest, binary, opts, line, column+1, type, data ++ [b], acc, n) + lex(rest, binary, opts, line, column+1, type, [data | [b]], acc, n) end def lex(<>, binary, opts, line, column, type, data, acc, n) when is_newline(b) do if data == [] do @@ -241,7 +237,7 @@ defmodule SQL.Lexer do end def merge([] = data, _b, type) when type in ~w[double_quote quote backtick]a, do: data - def merge(data, b, _type), do: data ++ [b] + def merge(data, b, _type), do: [data | [b]] def type(?;), do: :colon def type(?,), do: :comma @@ -269,18 +265,18 @@ defmodule SQL.Lexer do def type(?., :integer), do: :float def type(_b, _type), do: :ident - def meta(line, column, opts) do - if opts[:metadata], do: [line: line, column: column, file: opts[:file]], else: [] - end + def meta(_line, _column, [_,_,_,{_,false}|_]), do: [] + def meta(line, column, [_, _, {_, {_, _, file}} |_]), do: [line: line, column: column, file: file] - def node(:binding = tag, line, column, [idx], [{:binding, false}|_] = opts) do - {tag, meta(line, column, opts), Enum.at(opts[:params], idx)} + def node(:binding = tag, line, column, [idx], [{:binding, false}, {:params, params}|_] = opts) do + {tag, meta(line, column, opts), Enum.at(params, idx)} end + def node(:binding = tag, line, column, data, opts) when is_integer(data), do: {tag, meta(line, column, opts), [data]} def node(tag, line, column, data, opts) when tag in ~w[ident float integer double_quote quote backtick binding parens bracket . comment comments]a do data = case data do [] -> data [{_, _, _} | _] -> data - _ -> [data] + _ -> [IO.iodata_to_binary(data)] end {tag, meta(line, column, opts), data} end @@ -295,227 +291,227 @@ defmodule SQL.Lexer do def ident(_type, [?(]), do: :parens def ident(_type, [?[]), do: :bracket - def ident(:ident, [b1,b2,b3]) when b1 in ~c"aA" and b2 in ~c"bB" and b3 in ~c"sS", do: :abs + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"aA" and b2 in ~c"bB" and b3 in ~c"sS", do: :abs - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"aA" and b2 in ~c"bB" and b3 in ~c"sS" and b4 in ~c"eE" and b5 in ~c"nN" and b6 in ~c"tT", do: :absent + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"aA" and b2 in ~c"bB" and b3 in ~c"sS" and b4 in ~c"eE" and b5 in ~c"nN" and b6 in ~c"tT", do: :absent - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"aA" and b2 in ~c"cC" and b3 in ~c"oO" and b4 in ~c"sS", do: :acos + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"aA" and b2 in ~c"cC" and b3 in ~c"oO" and b4 in ~c"sS", do: :acos - def ident(:ident, [b1,b2,b3]) when b1 in ~c"aA" and b2 in ~c"lL" and b3 in ~c"lL", do: :all + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"aA" and b2 in ~c"lL" and b3 in ~c"lL", do: :all - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"aA" and b2 in ~c"lL" and b3 in ~c"lL" and b4 in ~c"oO" and b5 in ~c"cC" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"aA" and b2 in ~c"lL" and b3 in ~c"lL" and b4 in ~c"oO" and b5 in ~c"cC" and b6 in ~c"aA" and b7 in ~c"tT" and b8 in ~c"eE", do: :allocate - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"aA" and b2 in ~c"lL" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"rR", do: :alter + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"aA" and b2 in ~c"lL" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"rR", do: :alter - def ident(:ident, [b1,b2,b3]) when b1 in ~c"aA" and b2 in ~c"nN" and b3 in ~c"dD", do: :and + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"aA" and b2 in ~c"nN" and b3 in ~c"dD", do: :and - def ident(:ident, [b1,b2,b3]) when b1 in ~c"aA" and b2 in ~c"nN" and b3 in ~c"yY", do: :any + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"aA" and b2 in ~c"nN" and b3 in ~c"yY", do: :any - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"aA" and b2 in ~c"nN" and b3 in ~c"yY" and b4 in ~c"_" and b5 in ~c"vV" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"aA" and b2 in ~c"nN" and b3 in ~c"yY" and b4 in ~c"_" and b5 in ~c"vV" and b6 in ~c"aA" and b7 in ~c"lL" and b8 in ~c"uU" and b9 in ~c"eE", do: :any_value - def ident(:ident, [b1,b2,b3]) when b1 in ~c"aA" and b2 in ~c"rR" and b3 in ~c"eE", do: :are + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"aA" and b2 in ~c"rR" and b3 in ~c"eE", do: :are - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"aA" and b2 in ~c"rR" and b3 in ~c"rR" and b4 in ~c"aA" and b5 in ~c"yY", do: :array + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"aA" and b2 in ~c"rR" and b3 in ~c"rR" and b4 in ~c"aA" and b5 in ~c"yY", do: :array - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"aA" and b2 in ~c"rR" and b3 in ~c"rR" and b4 in ~c"aA" and b5 in ~c"yY" and b6 in ~c"_" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"aA" and b2 in ~c"rR" and b3 in ~c"rR" and b4 in ~c"aA" and b5 in ~c"yY" and b6 in ~c"_" and b7 in ~c"aA" and b8 in ~c"gG" and b9 in ~c"gG", do: :array_agg - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21]) when b1 in ~c"aA" and b2 in ~c"rR" and b3 in ~c"rR" and b4 in ~c"aA" and b5 in ~c"yY" and b6 in ~c"_" and + def ident(:ident, [[[[[[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17], b18], b19], b20], b21]) when b1 in ~c"aA" and b2 in ~c"rR" and b3 in ~c"rR" and b4 in ~c"aA" and b5 in ~c"yY" and b6 in ~c"_" and b7 in ~c"mM" and b8 in ~c"aA" and b9 in ~c"xX" and b10 in ~c"_" and b11 in ~c"cC" and b12 in ~c"aA" and b13 in ~c"rR" and b14 in ~c"dD" and b15 in ~c"iI" and b16 in ~c"nN" and b17 in ~c"aA" and b18 in ~c"lL" and b19 in ~c"iI" and b20 in ~c"tT" and b21 in ~c"yY", do: :array_max_cardinality - def ident(:ident, [b1,b2]) when b1 in ~c"aA" and b2 in ~c"sS", do: :as + def ident(:ident, [[[], b1], b2]) when b1 in ~c"aA" and b2 in ~c"sS", do: :as - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"aA" and b2 in ~c"sS" and b3 in ~c"eE" and b4 in ~c"nN" and b5 in ~c"sS" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"aA" and b2 in ~c"sS" and b3 in ~c"eE" and b4 in ~c"nN" and b5 in ~c"sS" and b6 in ~c"iI" and b7 in ~c"tT" and b8 in ~c"iI" and b9 in ~c"vV" and b10 in ~c"eE", do: :asensitive - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"aA" and b2 in ~c"sS" and b3 in ~c"iI" and b4 in ~c"nN", do: :asin + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"aA" and b2 in ~c"sS" and b3 in ~c"iI" and b4 in ~c"nN", do: :asin - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"aA" and b2 in ~c"sS" and b3 in ~c"yY" and b4 in ~c"mM" and b5 in ~c"mM" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"aA" and b2 in ~c"sS" and b3 in ~c"yY" and b4 in ~c"mM" and b5 in ~c"mM" and b6 in ~c"eE" and b7 in ~c"tT" and b8 in ~c"rR" and b9 in ~c"iI" and b10 in ~c"cC", do: :asymmetric - def ident(:ident, [b1,b2]) when b1 in ~c"aA" and b2 in ~c"tT", do: :at + def ident(:ident, [[[], b1], b2]) when b1 in ~c"aA" and b2 in ~c"tT", do: :at - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"aA" and b2 in ~c"tT" and b3 in ~c"aA" and b4 in ~c"nN", do: :atan + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"aA" and b2 in ~c"tT" and b3 in ~c"aA" and b4 in ~c"nN", do: :atan - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"aA" and b2 in ~c"tT" and b3 in ~c"oO" and b4 in ~c"mM" and b5 in ~c"iI" and b6 in ~c"cC", do: :atomic + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"aA" and b2 in ~c"tT" and b3 in ~c"oO" and b4 in ~c"mM" and b5 in ~c"iI" and b6 in ~c"cC", do: :atomic - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13]) when b1 in ~c"aA" and b2 in ~c"uU" and b3 in ~c"tT" and b4 in ~c"hH" and b5 in ~c"oO" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13]) when b1 in ~c"aA" and b2 in ~c"uU" and b3 in ~c"tT" and b4 in ~c"hH" and b5 in ~c"oO" and b6 in ~c"rR" and b7 in ~c"iI" and b8 in ~c"zZ" and b9 in ~c"aA" and b10 in ~c"tT" and b11 in ~c"iI" and b12 in ~c"oO" and b13 in ~c"nN", do: :authorization - def ident(:ident, [b1,b2,b3]) when b1 in ~c"aA" and b2 in ~c"vV" and b3 in ~c"gG", do: :avg + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"aA" and b2 in ~c"vV" and b3 in ~c"gG", do: :avg - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"bB" and b2 in ~c"eE" and b3 in ~c"gG" and b4 in ~c"iI" and b5 in ~c"nN", do: :begin + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"bB" and b2 in ~c"eE" and b3 in ~c"gG" and b4 in ~c"iI" and b5 in ~c"nN", do: :begin - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"bB" and b2 in ~c"eE" and b3 in ~c"gG" and b4 in ~c"iI" and b5 in ~c"nN" and b6 in ~c"_" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"bB" and b2 in ~c"eE" and b3 in ~c"gG" and b4 in ~c"iI" and b5 in ~c"nN" and b6 in ~c"_" and b7 in ~c"fF" and b8 in ~c"rR" and b9 in ~c"aA" and b10 in ~c"mM" and b11 in ~c"eE", do: :begin_frame - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15]) when b1 in ~c"bB" and b2 in ~c"eE" and b3 in ~c"gG" and b4 in ~c"iI" and b5 in ~c"nN" and b6 in ~c"_" and + def ident(:ident, [[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15]) when b1 in ~c"bB" and b2 in ~c"eE" and b3 in ~c"gG" and b4 in ~c"iI" and b5 in ~c"nN" and b6 in ~c"_" and b7 in ~c"pP" and b8 in ~c"aA" and b9 in ~c"rR" and b10 in ~c"tT" and b11 in ~c"iI" and b12 in ~c"tT" and b13 in ~c"iI" and b14 in ~c"oO" and b15 in ~c"nN", do: :begin_partition - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"bB" and b2 in ~c"eE" and b3 in ~c"tT" and b4 in ~c"wW" and b5 in ~c"eE" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"bB" and b2 in ~c"eE" and b3 in ~c"tT" and b4 in ~c"wW" and b5 in ~c"eE" and b6 in ~c"eE" and b7 in ~c"nN", do: :between - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"bB" and b2 in ~c"iI" and b3 in ~c"gG" and b4 in ~c"iI" and b5 in ~c"nN" and b6 in ~c"tT", do: :bigint + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"bB" and b2 in ~c"iI" and b3 in ~c"gG" and b4 in ~c"iI" and b5 in ~c"nN" and b6 in ~c"tT", do: :bigint - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"bB" and b2 in ~c"iI" and b3 in ~c"nN" and b4 in ~c"aA" and b5 in ~c"rR" and b6 in ~c"yY", do: :binary + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"bB" and b2 in ~c"iI" and b3 in ~c"nN" and b4 in ~c"aA" and b5 in ~c"rR" and b6 in ~c"yY", do: :binary - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"bB" and b2 in ~c"lL" and b3 in ~c"oO" and b4 in ~c"bB", do: :blob + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"bB" and b2 in ~c"lL" and b3 in ~c"oO" and b4 in ~c"bB", do: :blob - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"bB" and b2 in ~c"oO" and b3 in ~c"oO" and b4 in ~c"lL" and b5 in ~c"eE" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"bB" and b2 in ~c"oO" and b3 in ~c"oO" and b4 in ~c"lL" and b5 in ~c"eE" and b6 in ~c"aA" and b7 in ~c"nN", do: :boolean - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"bB" and b2 in ~c"oO" and b3 in ~c"tT" and b4 in ~c"hH", do: :both + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"bB" and b2 in ~c"oO" and b3 in ~c"tT" and b4 in ~c"hH", do: :both - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"bB" and b2 in ~c"tT" and b3 in ~c"rR" and b4 in ~c"iI" and b5 in ~c"mM", do: :btrim + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"bB" and b2 in ~c"tT" and b3 in ~c"rR" and b4 in ~c"iI" and b5 in ~c"mM", do: :btrim - def ident(:ident, [b1,b2]) when b1 in ~c"bB" and b2 in ~c"yY", do: :by + def ident(:ident, [[[], b1], b2]) when b1 in ~c"bB" and b2 in ~c"yY", do: :by - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"cC" and b2 in ~c"aA" and b3 in ~c"lL" and b4 in ~c"lL", do: :call + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"cC" and b2 in ~c"aA" and b3 in ~c"lL" and b4 in ~c"lL", do: :call - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"cC" and b2 in ~c"aA" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"eE" and b6 in ~c"dD", do: :called + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"cC" and b2 in ~c"aA" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"eE" and b6 in ~c"dD", do: :called - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"cC" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"dD" and b5 in ~c"iI" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"cC" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"dD" and b5 in ~c"iI" and b6 in ~c"nN" and b7 in ~c"aA" and b8 in ~c"lL" and b9 in ~c"iI" and b10 in ~c"tT" and b11 in ~c"yY", do: :cardinality - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"cC" and b2 in ~c"aA" and b3 in ~c"sS" and b4 in ~c"cC" and b5 in ~c"aA" and b6 in ~c"dD" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"cC" and b2 in ~c"aA" and b3 in ~c"sS" and b4 in ~c"cC" and b5 in ~c"aA" and b6 in ~c"dD" and b7 in ~c"eE" and b8 in ~c"dD", do: :cascaded - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"cC" and b2 in ~c"aA" and b3 in ~c"sS" and b4 in ~c"eE", do: :case + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"cC" and b2 in ~c"aA" and b3 in ~c"sS" and b4 in ~c"eE", do: :case - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"cC" and b2 in ~c"aA" and b3 in ~c"sS" and b4 in ~c"tT", do: :cast + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"cC" and b2 in ~c"aA" and b3 in ~c"sS" and b4 in ~c"tT", do: :cast - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"cC" and b2 in ~c"eE" and b3 in ~c"iI" and b4 in ~c"lL", do: :ceil + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"cC" and b2 in ~c"eE" and b3 in ~c"iI" and b4 in ~c"lL", do: :ceil - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"cC" and b2 in ~c"eE" and b3 in ~c"iI" and b4 in ~c"lL" and b5 in ~c"iI" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"cC" and b2 in ~c"eE" and b3 in ~c"iI" and b4 in ~c"lL" and b5 in ~c"iI" and b6 in ~c"nN" and b7 in ~c"gG", do: :ceiling - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"cC" and b2 in ~c"hH" and b3 in ~c"aA" and b4 in ~c"rR", do: :char + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"cC" and b2 in ~c"hH" and b3 in ~c"aA" and b4 in ~c"rR", do: :char - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"cC" and b2 in ~c"hH" and b3 in ~c"aA" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"lL" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"cC" and b2 in ~c"hH" and b3 in ~c"aA" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"lL" and b7 in ~c"eE" and b8 in ~c"nN" and b9 in ~c"gG" and b10 in ~c"tT" and b11 in ~c"hH", do: :char_length - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"cC" and b2 in ~c"hH" and b3 in ~c"aA" and b4 in ~c"rR" and b5 in ~c"aA" and b6 in ~c"cC" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"cC" and b2 in ~c"hH" and b3 in ~c"aA" and b4 in ~c"rR" and b5 in ~c"aA" and b6 in ~c"cC" and b7 in ~c"tT" and b8 in ~c"eE" and b9 in ~c"rR", do: :character - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16]) when b1 in ~c"cC" and b2 in ~c"hH" and b3 in ~c"aA" and b4 in ~c"rR" and b5 in ~c"aA" and b6 in ~c"cC" and + def ident(:ident, [[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16]) when b1 in ~c"cC" and b2 in ~c"hH" and b3 in ~c"aA" and b4 in ~c"rR" and b5 in ~c"aA" and b6 in ~c"cC" and b7 in ~c"tT" and b8 in ~c"eE" and b9 in ~c"rR" and b10 in ~c"_" and b11 in ~c"lL" and b12 in ~c"eE" and b13 in ~c"nN" and b14 in ~c"gG" and b15 in ~c"tT" and b16 in ~c"hH", do: :character_length - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"cC" and b2 in ~c"hH" and b3 in ~c"eE" and b4 in ~c"cC" and b5 in ~c"kK", do: :check + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"cC" and b2 in ~c"hH" and b3 in ~c"eE" and b4 in ~c"cC" and b5 in ~c"kK", do: :check - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"cC" and b2 in ~c"lL" and b3 in ~c"aA" and b4 in ~c"sS" and b5 in ~c"sS" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"cC" and b2 in ~c"lL" and b3 in ~c"aA" and b4 in ~c"sS" and b5 in ~c"sS" and b6 in ~c"iI" and b7 in ~c"fF" and b8 in ~c"iI" and b9 in ~c"eE" and b10 in ~c"rR", do: :classifier - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"cC" and b2 in ~c"lL" and b3 in ~c"oO" and b4 in ~c"bB", do: :clob + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"cC" and b2 in ~c"lL" and b3 in ~c"oO" and b4 in ~c"bB", do: :clob - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"cC" and b2 in ~c"lL" and b3 in ~c"oO" and b4 in ~c"sS" and b5 in ~c"eE", do: :close + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"cC" and b2 in ~c"lL" and b3 in ~c"oO" and b4 in ~c"sS" and b5 in ~c"eE", do: :close - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"aA" and b4 in ~c"lL" and b5 in ~c"eE" and b6 in ~c"sS" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"aA" and b4 in ~c"lL" and b5 in ~c"eE" and b6 in ~c"sS" and b7 in ~c"cC" and b8 in ~c"eE", do: :coalesce - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"aA" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"aA" and b6 in ~c"tT" and b7 in ~c"eE", do: :collate - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"eE" and b6 in ~c"cC" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"eE" and b6 in ~c"cC" and b7 in ~c"tT", do: :collect - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"uU" and b5 in ~c"mM" and b6 in ~c"nN", do: :column + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"uU" and b5 in ~c"mM" and b6 in ~c"nN", do: :column - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"mM" and b4 in ~c"mM" and b5 in ~c"iI" and b6 in ~c"tT", do: :commit + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"mM" and b4 in ~c"mM" and b5 in ~c"iI" and b6 in ~c"tT", do: :commit - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"dD" and b5 in ~c"iI" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"dD" and b5 in ~c"iI" and b6 in ~c"tT" and b7 in ~c"iI" and b8 in ~c"oO" and b9 in ~c"nN", do: :condition - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"nN" and b5 in ~c"eE" and b6 in ~c"cC" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"nN" and b5 in ~c"eE" and b6 in ~c"cC" and b7 in ~c"tT", do: :connect - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"sS" and b5 in ~c"tT" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"sS" and b5 in ~c"tT" and b6 in ~c"rR" and b7 in ~c"aA" and b8 in ~c"iI" and b9 in ~c"nN" and b10 in ~c"tT", do: :constraint - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"tT" and b5 in ~c"aA" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"tT" and b5 in ~c"aA" and b6 in ~c"iI" and b7 in ~c"nN" and b8 in ~c"sS", do: :contains - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"vV" and b5 in ~c"eE" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"vV" and b5 in ~c"eE" and b6 in ~c"rR" and b7 in ~c"tT", do: :convert - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"pP" and b4 in ~c"yY", do: :copy + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"pP" and b4 in ~c"yY", do: :copy - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"rR" and b4 in ~c"rR", do: :corr + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"rR" and b4 in ~c"rR", do: :corr - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"rR" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"sS" and + def ident(:ident, [[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"rR" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"sS" and b7 in ~c"pP" and b8 in ~c"oO" and b9 in ~c"nN" and b10 in ~c"dD" and b11 in ~c"iI" and b12 in ~c"nN" and b13 in ~c"gG", do: :corresponding - def ident(:ident, [b1,b2,b3]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"sS", do: :cos + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"sS", do: :cos - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"sS" and b4 in ~c"hH", do: :cosh + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"sS" and b4 in ~c"hH", do: :cosh - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"uU" and b4 in ~c"nN" and b5 in ~c"tT", do: :count + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"uU" and b4 in ~c"nN" and b5 in ~c"tT", do: :count - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"vV" and b4 in ~c"aA" and b5 in ~c"rR" and b6 in ~c"_" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"vV" and b4 in ~c"aA" and b5 in ~c"rR" and b6 in ~c"_" and b7 in ~c"pP" and b8 in ~c"oO" and b9 in ~c"pP", do: :covar_pop - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"vV" and b4 in ~c"aA" and b5 in ~c"rR" and b6 in ~c"_" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"vV" and b4 in ~c"aA" and b5 in ~c"rR" and b6 in ~c"_" and b7 in ~c"sS" and b8 in ~c"aA" and b9 in ~c"mM" and b10 in ~c"pP", do: :covar_samp - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"cC" and b2 in ~c"rR" and b3 in ~c"eE" and b4 in ~c"aA" and b5 in ~c"tT" and b6 in ~c"eE", do: :create + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"cC" and b2 in ~c"rR" and b3 in ~c"eE" and b4 in ~c"aA" and b5 in ~c"tT" and b6 in ~c"eE", do: :create - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"cC" and b2 in ~c"rR" and b3 in ~c"oO" and b4 in ~c"sS" and b5 in ~c"sS", do: :cross + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"cC" and b2 in ~c"rR" and b3 in ~c"oO" and b4 in ~c"sS" and b5 in ~c"sS", do: :cross - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"bB" and b4 in ~c"eE", do: :cube + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"bB" and b4 in ~c"eE", do: :cube - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"mM" and b4 in ~c"eE" and b5 in ~c"_" and b6 in ~c"dD" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"mM" and b4 in ~c"eE" and b5 in ~c"_" and b6 in ~c"dD" and b7 in ~c"iI" and b8 in ~c"sS" and b9 in ~c"tT", do: :cume_dist - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"nN" and b7 in ~c"tT", do: :current - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"nN" and b7 in ~c"tT" and b8 in ~c"_" and b9 in ~c"cC" and b10 in ~c"aA" and b11 in ~c"tT" and b12 in ~c"aA" and b13 in ~c"lL" and b14 in ~c"oO" and b15 in ~c"gG", do: :current_catalog - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"nN" and b7 in ~c"tT" and b8 in ~c"_" and b9 in ~c"dD" and b10 in ~c"aA" and b11 in ~c"tT" and b12 in ~c"eE", do: :current_date - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26,b27,b28,b29,b30,b31]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17], b18], b19], b20], b21], b22], b23], b24], b25], b26], b27], b28], b29], b30], b31]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"nN" and b7 in ~c"tT" and b8 in ~c"_" and b9 in ~c"dD" and b10 in ~c"eE" and b11 in ~c"fF" and b12 in ~c"aA" and b13 in ~c"uU" and b14 in ~c"lL" and b15 in ~c"tT" and b16 in ~c"_" and b17 in ~c"tT" and b18 in ~c"rR" and b19 in ~c"aA" and b20 in ~c"nN" and b21 in ~c"sS" and b22 in ~c"fF" and b23 in ~c"oO" and b24 in ~c"rR" and b25 in ~c"mM" and b26 in ~c"_" and b27 in ~c"gG" and b28 in ~c"rR" and b29 in ~c"oO" and b30 in ~c"uU" and b31 in ~c"pP", do: :current_default_transform_group - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"nN" and b7 in ~c"tT" and b8 in ~c"_" and b9 in ~c"pP" and b10 in ~c"aA" and b11 in ~c"tT" and b12 in ~c"hH", do: :current_path - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"nN" and b7 in ~c"tT" and b8 in ~c"_" and b9 in ~c"rR" and b10 in ~c"oO" and b11 in ~c"lL" and b12 in ~c"eE", do: :current_role - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"nN" and b7 in ~c"tT" and b8 in ~c"_" and b9 in ~c"rR" and b10 in ~c"oO" and b11 in ~c"wW", do: :current_row - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"nN" and b7 in ~c"tT" and b8 in ~c"_" and b9 in ~c"sS" and b10 in ~c"cC" and b11 in ~c"hH" and b12 in ~c"eE" and b13 in ~c"mM" and b14 in ~c"aA", do: :current_schema - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"nN" and b7 in ~c"tT" and b8 in ~c"_" and b9 in ~c"tT" and b10 in ~c"iI" and b11 in ~c"mM" and b12 in ~c"eE", do: :current_time - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"nN" and b7 in ~c"tT" and b8 in ~c"_" and b9 in ~c"tT" and b10 in ~c"iI" and b11 in ~c"mM" and b12 in ~c"eE" and b13 in ~c"sS" and b14 in ~c"tT" and b15 in ~c"aA" and b16 in ~c"mM" and b17 in ~c"pP", do: :current_timestamp - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26,b27,b28,b29,b30,b31,b32]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17], b18], b19], b20], b21], b22], b23], b24], b25], b26], b27], b28], b29], b30], b31], b32]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"nN" and b7 in ~c"tT" and b8 in ~c"_" and b9 in ~c"tT" and b10 in ~c"rR" and b11 in ~c"aA" and b12 in ~c"nN" and b13 in ~c"sS" and b14 in ~c"fF" and b15 in ~c"oO" and b16 in ~c"rR" and b17 in ~c"mM" and b18 in ~c"_" and b19 in ~c"gG" and b20 in ~c"rR" and b21 in ~c"oO" and @@ -523,1546 +519,1546 @@ defmodule SQL.Lexer do b27 in ~c"rR" and b28 in ~c"_" and b29 in ~c"tT" and b30 in ~c"yY" and b31 in ~c"pP" and b32 in ~c"eE", do: :current_transform_group_for_type - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"nN" and b7 in ~c"tT" and b8 in ~c"_" and b9 in ~c"uU" and b10 in ~c"sS" and b11 in ~c"eE" and b12 in ~c"rR", do: :current_user - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"sS" and b5 in ~c"oO" and b6 in ~c"rR", do: :cursor + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"sS" and b5 in ~c"oO" and b6 in ~c"rR", do: :cursor - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"cC" and b2 in ~c"yY" and b3 in ~c"cC" and b4 in ~c"lL" and b5 in ~c"eE", do: :cycle + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"cC" and b2 in ~c"yY" and b3 in ~c"cC" and b4 in ~c"lL" and b5 in ~c"eE", do: :cycle - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"dD" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"eE", do: :date + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"dD" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"eE", do: :date - def ident(:ident, [b1,b2,b3]) when b1 in ~c"dD" and b2 in ~c"aA" and b3 in ~c"yY", do: :day + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"dD" and b2 in ~c"aA" and b3 in ~c"yY", do: :day - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"aA" and b4 in ~c"lL" and b5 in ~c"lL" and b6 in ~c"oO" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"aA" and b4 in ~c"lL" and b5 in ~c"lL" and b6 in ~c"oO" and b7 in ~c"cC" and b8 in ~c"aA" and b9 in ~c"tT" and b10 in ~c"eE", do: :deallocate - def ident(:ident, [b1,b2,b3]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"cC", do: :dec + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"cC", do: :dec - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"cC" and b4 in ~c"fF" and b5 in ~c"lL" and b6 in ~c"oO" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"cC" and b4 in ~c"fF" and b5 in ~c"lL" and b6 in ~c"oO" and b7 in ~c"aA" and b8 in ~c"tT", do: :decfloat - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"cC" and b4 in ~c"iI" and b5 in ~c"mM" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"cC" and b4 in ~c"iI" and b5 in ~c"mM" and b6 in ~c"aA" and b7 in ~c"lL", do: :decimal - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"cC" and b4 in ~c"lL" and b5 in ~c"aA" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"cC" and b4 in ~c"lL" and b5 in ~c"aA" and b6 in ~c"rR" and b7 in ~c"eE", do: :declare - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"fF" and b4 in ~c"aA" and b5 in ~c"uU" and b6 in ~c"lL" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"fF" and b4 in ~c"aA" and b5 in ~c"uU" and b6 in ~c"lL" and b7 in ~c"tT", do: :default - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"fF" and b4 in ~c"iI" and b5 in ~c"nN" and b6 in ~c"eE", do: :define + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"fF" and b4 in ~c"iI" and b5 in ~c"nN" and b6 in ~c"eE", do: :define - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"lL" and b4 in ~c"eE" and b5 in ~c"tT" and b6 in ~c"eE", do: :delete + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"lL" and b4 in ~c"eE" and b5 in ~c"tT" and b6 in ~c"eE", do: :delete - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"nN" and b4 in ~c"sS" and b5 in ~c"eE" and b6 in ~c"_" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"nN" and b4 in ~c"sS" and b5 in ~c"eE" and b6 in ~c"_" and b7 in ~c"rR" and b8 in ~c"aA" and b9 in ~c"nN" and b10 in ~c"kK", do: :dense_rank - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"rR" and b4 in ~c"eE" and b5 in ~c"fF", do: :deref + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"rR" and b4 in ~c"eE" and b5 in ~c"fF", do: :deref - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"cC" and b5 in ~c"rR" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"cC" and b5 in ~c"rR" and b6 in ~c"iI" and b7 in ~c"bB" and b8 in ~c"eE", do: :describe - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"mM" and + def ident(:ident, [[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"mM" and b7 in ~c"iI" and b8 in ~c"nN" and b9 in ~c"iI" and b10 in ~c"sS" and b11 in ~c"tT" and b12 in ~c"iI" and b13 in ~c"cC", do: :deterministic - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"dD" and b2 in ~c"iI" and b3 in ~c"sS" and b4 in ~c"cC" and b5 in ~c"oO" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"dD" and b2 in ~c"iI" and b3 in ~c"sS" and b4 in ~c"cC" and b5 in ~c"oO" and b6 in ~c"nN" and b7 in ~c"nN" and b8 in ~c"eE" and b9 in ~c"cC" and b10 in ~c"tT", do: :disconnect - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"dD" and b2 in ~c"iI" and b3 in ~c"sS" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"dD" and b2 in ~c"iI" and b3 in ~c"sS" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"nN" and b7 in ~c"cC" and b8 in ~c"tT", do: :distinct - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"dD" and b2 in ~c"oO" and b3 in ~c"uU" and b4 in ~c"bB" and b5 in ~c"lL" and b6 in ~c"eE", do: :double + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"dD" and b2 in ~c"oO" and b3 in ~c"uU" and b4 in ~c"bB" and b5 in ~c"lL" and b6 in ~c"eE", do: :double - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"dD" and b2 in ~c"rR" and b3 in ~c"oO" and b4 in ~c"pP", do: :drop + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"dD" and b2 in ~c"rR" and b3 in ~c"oO" and b4 in ~c"pP", do: :drop - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"dD" and b2 in ~c"yY" and b3 in ~c"nN" and b4 in ~c"aA" and b5 in ~c"mM" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"dD" and b2 in ~c"yY" and b3 in ~c"nN" and b4 in ~c"aA" and b5 in ~c"mM" and b6 in ~c"iI" and b7 in ~c"cC", do: :dynamic - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"eE" and b2 in ~c"aA" and b3 in ~c"cC" and b4 in ~c"hH", do: :each + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"eE" and b2 in ~c"aA" and b3 in ~c"cC" and b4 in ~c"hH", do: :each - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"eE" and b2 in ~c"lL" and b3 in ~c"eE" and b4 in ~c"mM" and b5 in ~c"eE" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"eE" and b2 in ~c"lL" and b3 in ~c"eE" and b4 in ~c"mM" and b5 in ~c"eE" and b6 in ~c"nN" and b7 in ~c"tT", do: :element - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"eE" and b2 in ~c"lL" and b3 in ~c"sS" and b4 in ~c"eE", do: :else + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"eE" and b2 in ~c"lL" and b3 in ~c"sS" and b4 in ~c"eE", do: :else - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"eE" and b2 in ~c"mM" and b3 in ~c"pP" and b4 in ~c"tT" and b5 in ~c"yY", do: :empty + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"eE" and b2 in ~c"mM" and b3 in ~c"pP" and b4 in ~c"tT" and b5 in ~c"yY", do: :empty - def ident(:ident, [b1,b2,b3]) when b1 in ~c"eE" and b2 in ~c"nN" and b3 in ~c"dD", do: :end + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"eE" and b2 in ~c"nN" and b3 in ~c"dD", do: :end - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"eE" and b2 in ~c"nN" and b3 in ~c"dD" and b4 in ~c"_" and b5 in ~c"fF" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"eE" and b2 in ~c"nN" and b3 in ~c"dD" and b4 in ~c"_" and b5 in ~c"fF" and b6 in ~c"rR" and b7 in ~c"aA" and b8 in ~c"mM" and b9 in ~c"eE", do: :end_frame - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13]) when b1 in ~c"eE" and b2 in ~c"nN" and b3 in ~c"dD" and b4 in ~c"_" and b5 in ~c"pP" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13]) when b1 in ~c"eE" and b2 in ~c"nN" and b3 in ~c"dD" and b4 in ~c"_" and b5 in ~c"pP" and b6 in ~c"aA" and b7 in ~c"rR" and b8 in ~c"tT" and b9 in ~c"iI" and b10 in ~c"tT" and b11 in ~c"iI" and b12 in ~c"oO" and b13 in ~c"nN", do: :end_partition - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"eE" and b2 in ~c"nN" and b3 in ~c"dD" and b4 in ~c"-" and b5 in ~c"eE" and b6 in ~c"xX" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"eE" and b2 in ~c"nN" and b3 in ~c"dD" and b4 in ~c"-" and b5 in ~c"eE" and b6 in ~c"xX" and b7 in ~c"eE" and b8 in ~c"cC", do: :"end-exec" - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"eE" and b2 in ~c"qQ" and b3 in ~c"uU" and b4 in ~c"aA" and b5 in ~c"lL" and b6 in ~c"sS", do: :equals + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"eE" and b2 in ~c"qQ" and b3 in ~c"uU" and b4 in ~c"aA" and b5 in ~c"lL" and b6 in ~c"sS", do: :equals - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"eE" and b2 in ~c"sS" and b3 in ~c"cC" and b4 in ~c"aA" and b5 in ~c"pP" and b6 in ~c"eE", do: :escape + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"eE" and b2 in ~c"sS" and b3 in ~c"cC" and b4 in ~c"aA" and b5 in ~c"pP" and b6 in ~c"eE", do: :escape - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"eE" and b2 in ~c"vV" and b3 in ~c"eE" and b4 in ~c"rR" and b5 in ~c"yY", do: :every + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"eE" and b2 in ~c"vV" and b3 in ~c"eE" and b4 in ~c"rR" and b5 in ~c"yY", do: :every - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"eE" and b2 in ~c"xX" and b3 in ~c"cC" and b4 in ~c"eE" and b5 in ~c"pP" and b6 in ~c"tT", do: :except + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"eE" and b2 in ~c"xX" and b3 in ~c"cC" and b4 in ~c"eE" and b5 in ~c"pP" and b6 in ~c"tT", do: :except - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"eE" and b2 in ~c"xX" and b3 in ~c"eE" and b4 in ~c"cC", do: :exec + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"eE" and b2 in ~c"xX" and b3 in ~c"eE" and b4 in ~c"cC", do: :exec - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"eE" and b2 in ~c"xX" and b3 in ~c"eE" and b4 in ~c"cC" and b5 in ~c"uU" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"eE" and b2 in ~c"xX" and b3 in ~c"eE" and b4 in ~c"cC" and b5 in ~c"uU" and b6 in ~c"tT" and b7 in ~c"eE", do: :execute - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"eE" and b2 in ~c"xX" and b3 in ~c"iI" and b4 in ~c"sS" and b5 in ~c"tT" and b6 in ~c"sS", do: :exists + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"eE" and b2 in ~c"xX" and b3 in ~c"iI" and b4 in ~c"sS" and b5 in ~c"tT" and b6 in ~c"sS", do: :exists - def ident(:ident, [b1,b2,b3]) when b1 in ~c"eE" and b2 in ~c"xX" and b3 in ~c"pP", do: :exp + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"eE" and b2 in ~c"xX" and b3 in ~c"pP", do: :exp - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"eE" and b2 in ~c"xX" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"eE" and b2 in ~c"xX" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"nN" and b7 in ~c"aA" and b8 in ~c"lL", do: :external - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"eE" and b2 in ~c"xX" and b3 in ~c"tT" and b4 in ~c"rR" and b5 in ~c"aA" and b6 in ~c"cC" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"eE" and b2 in ~c"xX" and b3 in ~c"tT" and b4 in ~c"rR" and b5 in ~c"aA" and b6 in ~c"cC" and b7 in ~c"tT", do: :extract - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"fF" and b2 in ~c"aA" and b3 in ~c"lL" and b4 in ~c"sS" and b5 in ~c"eE", do: false + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"fF" and b2 in ~c"aA" and b3 in ~c"lL" and b4 in ~c"sS" and b5 in ~c"eE", do: false - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"fF" and b2 in ~c"eE" and b3 in ~c"tT" and b4 in ~c"cC" and b5 in ~c"hH", do: :fetch + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"fF" and b2 in ~c"eE" and b3 in ~c"tT" and b4 in ~c"cC" and b5 in ~c"hH", do: :fetch - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"fF" and b2 in ~c"iI" and b3 in ~c"lL" and b4 in ~c"tT" and b5 in ~c"eE" and b6 in ~c"rR", do: :filter + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"fF" and b2 in ~c"iI" and b3 in ~c"lL" and b4 in ~c"tT" and b5 in ~c"eE" and b6 in ~c"rR", do: :filter - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"fF" and b2 in ~c"iI" and b3 in ~c"rR" and b4 in ~c"sS" and b5 in ~c"tT" and b6 in ~c"_" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"fF" and b2 in ~c"iI" and b3 in ~c"rR" and b4 in ~c"sS" and b5 in ~c"tT" and b6 in ~c"_" and b7 in ~c"vV" and b8 in ~c"aA" and b9 in ~c"lL" and b10 in ~c"uU" and b11 in ~c"eE", do: :first_value - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"fF" and b2 in ~c"lL" and b3 in ~c"oO" and b4 in ~c"aA" and b5 in ~c"tT", do: :float + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"fF" and b2 in ~c"lL" and b3 in ~c"oO" and b4 in ~c"aA" and b5 in ~c"tT", do: :float - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"fF" and b2 in ~c"lL" and b3 in ~c"oO" and b4 in ~c"oO" and b5 in ~c"rR", do: :floor + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"fF" and b2 in ~c"lL" and b3 in ~c"oO" and b4 in ~c"oO" and b5 in ~c"rR", do: :floor - def ident(:ident, [b1,b2,b3]) when b1 in ~c"fF" and b2 in ~c"oO" and b3 in ~c"rR", do: :for + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"fF" and b2 in ~c"oO" and b3 in ~c"rR", do: :for - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"fF" and b2 in ~c"oO" and b3 in ~c"rR" and b4 in ~c"eE" and b5 in ~c"iI" and b6 in ~c"gG" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"fF" and b2 in ~c"oO" and b3 in ~c"rR" and b4 in ~c"eE" and b5 in ~c"iI" and b6 in ~c"gG" and b7 in ~c"nN", do: :foreign - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"fF" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"mM" and b5 in ~c"eE" and b6 in ~c"_" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"fF" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"mM" and b5 in ~c"eE" and b6 in ~c"_" and b7 in ~c"rR" and b8 in ~c"oO" and b9 in ~c"wW", do: :frame_row - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"fF" and b2 in ~c"rR" and b3 in ~c"eE" and b4 in ~c"eE", do: :free + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"fF" and b2 in ~c"rR" and b3 in ~c"eE" and b4 in ~c"eE", do: :free - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"fF" and b2 in ~c"rR" and b3 in ~c"oO" and b4 in ~c"mM", do: :from + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"fF" and b2 in ~c"rR" and b3 in ~c"oO" and b4 in ~c"mM", do: :from - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"fF" and b2 in ~c"uU" and b3 in ~c"lL" and b4 in ~c"lL", do: :full + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"fF" and b2 in ~c"uU" and b3 in ~c"lL" and b4 in ~c"lL", do: :full - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"fF" and b2 in ~c"uU" and b3 in ~c"nN" and b4 in ~c"cC" and b5 in ~c"tT" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"fF" and b2 in ~c"uU" and b3 in ~c"nN" and b4 in ~c"cC" and b5 in ~c"tT" and b6 in ~c"iI" and b7 in ~c"oO" and b8 in ~c"nN", do: :function - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"fF" and b2 in ~c"uU" and b3 in ~c"sS" and b4 in ~c"iI" and b5 in ~c"oO" and b6 in ~c"nN", do: :fusion + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"fF" and b2 in ~c"uU" and b3 in ~c"sS" and b4 in ~c"iI" and b5 in ~c"oO" and b6 in ~c"nN", do: :fusion - def ident(:ident, [b1,b2,b3]) when b1 in ~c"gG" and b2 in ~c"eE" and b3 in ~c"tT", do: :get + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"gG" and b2 in ~c"eE" and b3 in ~c"tT", do: :get - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"gG" and b2 in ~c"lL" and b3 in ~c"oO" and b4 in ~c"bB" and b5 in ~c"aA" and b6 in ~c"lL", do: :global + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"gG" and b2 in ~c"lL" and b3 in ~c"oO" and b4 in ~c"bB" and b5 in ~c"aA" and b6 in ~c"lL", do: :global - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"gG" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"nN" and b5 in ~c"tT", do: :grant + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"gG" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"nN" and b5 in ~c"tT", do: :grant - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"gG" and b2 in ~c"rR" and b3 in ~c"eE" and b4 in ~c"aA" and b5 in ~c"tT" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"gG" and b2 in ~c"rR" and b3 in ~c"eE" and b4 in ~c"aA" and b5 in ~c"tT" and b6 in ~c"eE" and b7 in ~c"sS" and b8 in ~c"tT", do: :greatest - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"gG" and b2 in ~c"rR" and b3 in ~c"oO" and b4 in ~c"uU" and b5 in ~c"pP", do: :group + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"gG" and b2 in ~c"rR" and b3 in ~c"oO" and b4 in ~c"uU" and b5 in ~c"pP", do: :group - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"gG" and b2 in ~c"rR" and b3 in ~c"oO" and b4 in ~c"uU" and b5 in ~c"pP" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"gG" and b2 in ~c"rR" and b3 in ~c"oO" and b4 in ~c"uU" and b5 in ~c"pP" and b6 in ~c"iI" and b7 in ~c"nN" and b8 in ~c"gG", do: :grouping - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"gG" and b2 in ~c"rR" and b3 in ~c"oO" and b4 in ~c"uU" and b5 in ~c"pP" and b6 in ~c"sS", do: :groups + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"gG" and b2 in ~c"rR" and b3 in ~c"oO" and b4 in ~c"uU" and b5 in ~c"pP" and b6 in ~c"sS", do: :groups - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"hH" and b2 in ~c"aA" and b3 in ~c"vV" and b4 in ~c"iI" and b5 in ~c"nN" and b6 in ~c"gG", do: :having + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"hH" and b2 in ~c"aA" and b3 in ~c"vV" and b4 in ~c"iI" and b5 in ~c"nN" and b6 in ~c"gG", do: :having - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"hH" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"dD", do: :hold + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"hH" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"dD", do: :hold - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"hH" and b2 in ~c"oO" and b3 in ~c"uU" and b4 in ~c"rR", do: :hour + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"hH" and b2 in ~c"oO" and b3 in ~c"uU" and b4 in ~c"rR", do: :hour - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"iI" and b2 in ~c"dD" and b3 in ~c"eE" and b4 in ~c"nN" and b5 in ~c"tT" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"iI" and b2 in ~c"dD" and b3 in ~c"eE" and b4 in ~c"nN" and b5 in ~c"tT" and b6 in ~c"iI" and b7 in ~c"tT" and b8 in ~c"yY", do: :identity - def ident(:ident, [b1,b2]) when b1 in ~c"iI" and b2 in ~c"nN", do: :in + def ident(:ident, [[[], b1], b2]) when b1 in ~c"iI" and b2 in ~c"nN", do: :in - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"dD" and b4 in ~c"iI" and b5 in ~c"cC" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"dD" and b4 in ~c"iI" and b5 in ~c"cC" and b6 in ~c"aA" and b7 in ~c"tT" and b8 in ~c"oO" and b9 in ~c"rR", do: :indicator - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"iI" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"iI" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"aA" and b7 in ~c"lL", do: :initial - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"nN" and b4 in ~c"eE" and b5 in ~c"rR", do: :inner + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"nN" and b4 in ~c"eE" and b5 in ~c"rR", do: :inner - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"oO" and b4 in ~c"uU" and b5 in ~c"tT", do: :inout + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"oO" and b4 in ~c"uU" and b5 in ~c"tT", do: :inout - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"sS" and b4 in ~c"eE" and b5 in ~c"nN" and b6 in ~c"sS" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"sS" and b4 in ~c"eE" and b5 in ~c"nN" and b6 in ~c"sS" and b7 in ~c"iI" and b8 in ~c"tT" and b9 in ~c"iI" and b10 in ~c"vV" and b11 in ~c"eE", do: :insensitive - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"sS" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"tT", do: :insert + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"sS" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"tT", do: :insert - def ident(:ident, [b1,b2,b3]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"tT", do: :int + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"tT", do: :int - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"gG" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"gG" and b6 in ~c"eE" and b7 in ~c"rR", do: :integer - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"sS" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"sS" and b7 in ~c"eE" and b8 in ~c"cC" and b9 in ~c"tT", do: :intersect - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"sS" and + def ident(:ident, [[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"sS" and b7 in ~c"eE" and b8 in ~c"cC" and b9 in ~c"tT" and b10 in ~c"iI" and b11 in ~c"oO" and b12 in ~c"nN", do: :intersection - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"vV" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"vV" and b7 in ~c"aA" and b8 in ~c"lL", do: :interval - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"tT" and b4 in ~c"oO", do: :into + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"tT" and b4 in ~c"oO", do: :into - def ident(:ident, [b1,b2]) when b1 in ~c"iI" and b2 in ~c"sS", do: :is + def ident(:ident, [[[], b1], b2]) when b1 in ~c"iI" and b2 in ~c"sS", do: :is - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"jJ" and b2 in ~c"oO" and b3 in ~c"iI" and b4 in ~c"nN", do: :join + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"jJ" and b2 in ~c"oO" and b3 in ~c"iI" and b4 in ~c"nN", do: :join - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"jJ" and b2 in ~c"sS" and b3 in ~c"oO" and b4 in ~c"nN", do: :json + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"jJ" and b2 in ~c"sS" and b3 in ~c"oO" and b4 in ~c"nN", do: :json - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"jJ" and b2 in ~c"sS" and b3 in ~c"oO" and b4 in ~c"nN" and b5 in ~c"_" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"jJ" and b2 in ~c"sS" and b3 in ~c"oO" and b4 in ~c"nN" and b5 in ~c"_" and b6 in ~c"aA" and b7 in ~c"rR" and b8 in ~c"rR" and b9 in ~c"aA" and b10 in ~c"yY", do: :json_array - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13]) when b1 in ~c"jJ" and b2 in ~c"sS" and b3 in ~c"oO" and b4 in ~c"nN" and b5 in ~c"_" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13]) when b1 in ~c"jJ" and b2 in ~c"sS" and b3 in ~c"oO" and b4 in ~c"nN" and b5 in ~c"_" and b6 in ~c"aA" and b7 in ~c"rR" and b8 in ~c"rR" and b9 in ~c"aA" and b10 in ~c"yY" and b11 in ~c"aA" and b12 in ~c"gG" and b13 in ~c"gG", do: :json_arrayagg - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"jJ" and b2 in ~c"sS" and b3 in ~c"oO" and b4 in ~c"nN" and b5 in ~c"_" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"jJ" and b2 in ~c"sS" and b3 in ~c"oO" and b4 in ~c"nN" and b5 in ~c"_" and b6 in ~c"eE" and b7 in ~c"xX" and b8 in ~c"iI" and b9 in ~c"sS" and b10 in ~c"tT" and b11 in ~c"sS", do: :json_exists - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"jJ" and b2 in ~c"sS" and b3 in ~c"oO" and b4 in ~c"nN" and b5 in ~c"_" and b6 in ~c"oO" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"jJ" and b2 in ~c"sS" and b3 in ~c"oO" and b4 in ~c"nN" and b5 in ~c"_" and b6 in ~c"oO" and b7 in ~c"bB" and b8 in ~c"jJ" and b9 in ~c"eE" and b10 in ~c"cC" and b11 in ~c"tT", do: :json_object - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14]) when b1 in ~c"jJ" and b2 in ~c"sS" and b3 in ~c"oO" and b4 in ~c"nN" and b5 in ~c"_" and b6 in ~c"oO" and + def ident(:ident, [[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14]) when b1 in ~c"jJ" and b2 in ~c"sS" and b3 in ~c"oO" and b4 in ~c"nN" and b5 in ~c"_" and b6 in ~c"oO" and b7 in ~c"bB" and b8 in ~c"jJ" and b9 in ~c"eE" and b10 in ~c"cC" and b11 in ~c"tT" and b12 in ~c"aA" and b13 in ~c"gG" and b14 in ~c"gG", do: :json_objectagg - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"jJ" and b2 in ~c"sS" and b3 in ~c"oO" and b4 in ~c"nN" and b5 in ~c"_" and b6 in ~c"qQ" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"jJ" and b2 in ~c"sS" and b3 in ~c"oO" and b4 in ~c"nN" and b5 in ~c"_" and b6 in ~c"qQ" and b7 in ~c"uU" and b8 in ~c"eE" and b9 in ~c"rR" and b10 in ~c"yY", do: :json_query - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"jJ" and b2 in ~c"sS" and b3 in ~c"oO" and b4 in ~c"nN" and b5 in ~c"_" and b6 in ~c"sS" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"jJ" and b2 in ~c"sS" and b3 in ~c"oO" and b4 in ~c"nN" and b5 in ~c"_" and b6 in ~c"sS" and b7 in ~c"cC" and b8 in ~c"aA" and b9 in ~c"lL" and b10 in ~c"aA" and b11 in ~c"rR", do: :json_scalar - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14]) when b1 in ~c"jJ" and b2 in ~c"sS" and b3 in ~c"oO" and b4 in ~c"nN" and b5 in ~c"_" and b6 in ~c"sS" and + def ident(:ident, [[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14]) when b1 in ~c"jJ" and b2 in ~c"sS" and b3 in ~c"oO" and b4 in ~c"nN" and b5 in ~c"_" and b6 in ~c"sS" and b7 in ~c"eE" and b8 in ~c"rR" and b9 in ~c"iI" and b10 in ~c"aA" and b11 in ~c"lL" and b12 in ~c"iI" and b13 in ~c"zZ" and b14 in ~c"eE", do: :json_serialize - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"jJ" and b2 in ~c"sS" and b3 in ~c"oO" and b4 in ~c"nN" and b5 in ~c"_" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"jJ" and b2 in ~c"sS" and b3 in ~c"oO" and b4 in ~c"nN" and b5 in ~c"_" and b6 in ~c"tT" and b7 in ~c"aA" and b8 in ~c"bB" and b9 in ~c"lL" and b10 in ~c"eE", do: :json_table - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20]) when b1 in ~c"jJ" and b2 in ~c"sS" and b3 in ~c"oO" and b4 in ~c"nN" and b5 in ~c"_" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17], b18], b19], b20]) when b1 in ~c"jJ" and b2 in ~c"sS" and b3 in ~c"oO" and b4 in ~c"nN" and b5 in ~c"_" and b6 in ~c"tT" and b7 in ~c"aA" and b8 in ~c"bB" and b9 in ~c"lL" and b10 in ~c"eE" and b11 in ~c"_" and b12 in ~c"pP" and b13 in ~c"rR" and b14 in ~c"iI" and b15 in ~c"mM" and b16 in ~c"iI" and b17 in ~c"tT" and b18 in ~c"iI" and b19 in ~c"vV" and b20 in ~c"eE", do: :json_table_primitive - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"jJ" and b2 in ~c"sS" and b3 in ~c"oO" and b4 in ~c"nN" and b5 in ~c"_" and b6 in ~c"vV" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"jJ" and b2 in ~c"sS" and b3 in ~c"oO" and b4 in ~c"nN" and b5 in ~c"_" and b6 in ~c"vV" and b7 in ~c"aA" and b8 in ~c"lL" and b9 in ~c"uU" and b10 in ~c"eE", do: :json_value - def ident(:ident, [b1,b2,b3]) when b1 in ~c"lL" and b2 in ~c"aA" and b3 in ~c"gG", do: :lag + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"lL" and b2 in ~c"aA" and b3 in ~c"gG", do: :lag - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"lL" and b2 in ~c"aA" and b3 in ~c"nN" and b4 in ~c"gG" and b5 in ~c"uU" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"lL" and b2 in ~c"aA" and b3 in ~c"nN" and b4 in ~c"gG" and b5 in ~c"uU" and b6 in ~c"aA" and b7 in ~c"gG" and b8 in ~c"eE", do: :language - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"lL" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"gG" and b5 in ~c"eE", do: :large + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"lL" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"gG" and b5 in ~c"eE", do: :large - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"lL" and b2 in ~c"aA" and b3 in ~c"sS" and b4 in ~c"tT" and b5 in ~c"_" and b6 in ~c"vV" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"lL" and b2 in ~c"aA" and b3 in ~c"sS" and b4 in ~c"tT" and b5 in ~c"_" and b6 in ~c"vV" and b7 in ~c"aA" and b8 in ~c"lL" and b9 in ~c"uU" and b10 in ~c"eE", do: :last_value - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"lL" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"lL" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"aA" and b7 in ~c"lL", do: :lateral - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"lL" and b2 in ~c"eE" and b3 in ~c"aA" and b4 in ~c"dD", do: :lead + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"lL" and b2 in ~c"eE" and b3 in ~c"aA" and b4 in ~c"dD", do: :lead - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"lL" and b2 in ~c"eE" and b3 in ~c"aA" and b4 in ~c"dD" and b5 in ~c"iI" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"lL" and b2 in ~c"eE" and b3 in ~c"aA" and b4 in ~c"dD" and b5 in ~c"iI" and b6 in ~c"nN" and b7 in ~c"gG", do: :leading - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"lL" and b2 in ~c"eE" and b3 in ~c"aA" and b4 in ~c"sS" and b5 in ~c"tT", do: :least + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"lL" and b2 in ~c"eE" and b3 in ~c"aA" and b4 in ~c"sS" and b5 in ~c"tT", do: :least - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"lL" and b2 in ~c"eE" and b3 in ~c"fF" and b4 in ~c"tT", do: :left + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"lL" and b2 in ~c"eE" and b3 in ~c"fF" and b4 in ~c"tT", do: :left - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"lL" and b2 in ~c"iI" and b3 in ~c"kK" and b4 in ~c"eE", do: :like + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"lL" and b2 in ~c"iI" and b3 in ~c"kK" and b4 in ~c"eE", do: :like - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"lL" and b2 in ~c"iI" and b3 in ~c"kK" and b4 in ~c"eE" and b5 in ~c"_" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"lL" and b2 in ~c"iI" and b3 in ~c"kK" and b4 in ~c"eE" and b5 in ~c"_" and b6 in ~c"rR" and b7 in ~c"eE" and b8 in ~c"gG" and b9 in ~c"eE" and b10 in ~c"xX", do: :like_regex - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"lL" and b2 in ~c"iI" and b3 in ~c"sS" and b4 in ~c"tT" and b5 in ~c"aA" and b6 in ~c"gG" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"lL" and b2 in ~c"iI" and b3 in ~c"sS" and b4 in ~c"tT" and b5 in ~c"aA" and b6 in ~c"gG" and b7 in ~c"gG", do: :listagg - def ident(:ident, [b1,b2]) when b1 in ~c"lL" and b2 in ~c"nN", do: :ln + def ident(:ident, [[[], b1], b2]) when b1 in ~c"lL" and b2 in ~c"nN", do: :ln - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"lL" and b2 in ~c"oO" and b3 in ~c"cC" and b4 in ~c"aA" and b5 in ~c"lL", do: :local + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"lL" and b2 in ~c"oO" and b3 in ~c"cC" and b4 in ~c"aA" and b5 in ~c"lL", do: :local - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"lL" and b2 in ~c"oO" and b3 in ~c"cC" and b4 in ~c"aA" and b5 in ~c"lL" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"lL" and b2 in ~c"oO" and b3 in ~c"cC" and b4 in ~c"aA" and b5 in ~c"lL" and b6 in ~c"tT" and b7 in ~c"iI" and b8 in ~c"mM" and b9 in ~c"eE", do: :localtime - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14]) when b1 in ~c"lL" and b2 in ~c"oO" and b3 in ~c"cC" and b4 in ~c"aA" and b5 in ~c"lL" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14]) when b1 in ~c"lL" and b2 in ~c"oO" and b3 in ~c"cC" and b4 in ~c"aA" and b5 in ~c"lL" and b6 in ~c"tT" and b7 in ~c"iI" and b8 in ~c"mM" and b9 in ~c"eE" and b10 in ~c"sS" and b11 in ~c"tT" and b12 in ~c"aA" and b13 in ~c"mM" and b14 in ~c"pP", do: :localtimestamp - def ident(:ident, [b1,b2,b3]) when b1 in ~c"lL" and b2 in ~c"oO" and b3 in ~c"gG", do: :log + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"lL" and b2 in ~c"oO" and b3 in ~c"gG", do: :log - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"lL" and b2 in ~c"oO" and b3 in ~c"gG" and b4 in ~c"1" and b5 in ~c"0", do: :log10 + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"lL" and b2 in ~c"oO" and b3 in ~c"gG" and b4 in ~c"1" and b5 in ~c"0", do: :log10 - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"lL" and b2 in ~c"oO" and b3 in ~c"wW" and b4 in ~c"eE" and b5 in ~c"rR", do: :lower + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"lL" and b2 in ~c"oO" and b3 in ~c"wW" and b4 in ~c"eE" and b5 in ~c"rR", do: :lower - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"lL" and b2 in ~c"pP" and b3 in ~c"aA" and b4 in ~c"dD", do: :lpad + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"lL" and b2 in ~c"pP" and b3 in ~c"aA" and b4 in ~c"dD", do: :lpad - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"lL" and b2 in ~c"tT" and b3 in ~c"rR" and b4 in ~c"iI" and b5 in ~c"mM", do: :ltrim + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"lL" and b2 in ~c"tT" and b3 in ~c"rR" and b4 in ~c"iI" and b5 in ~c"mM", do: :ltrim - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"mM" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"cC" and b5 in ~c"hH", do: :match + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"mM" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"cC" and b5 in ~c"hH", do: :match - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12]) when b1 in ~c"mM" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"cC" and b5 in ~c"hH" and b6 in ~c"_" and + def ident(:ident, [[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12]) when b1 in ~c"mM" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"cC" and b5 in ~c"hH" and b6 in ~c"_" and b7 in ~c"nN" and b8 in ~c"uU" and b9 in ~c"mM" and b10 in ~c"bB" and b11 in ~c"eE" and b12 in ~c"rR", do: :match_number - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15]) when b1 in ~c"mM" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"cC" and b5 in ~c"hH" and b6 in ~c"_" and + def ident(:ident, [[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15]) when b1 in ~c"mM" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"cC" and b5 in ~c"hH" and b6 in ~c"_" and b7 in ~c"rR" and b8 in ~c"eE" and b9 in ~c"cC" and b10 in ~c"oO" and b11 in ~c"gG" and b12 in ~c"nN" and b13 in ~c"iI" and b14 in ~c"zZ" and b15 in ~c"eE", do: :match_recognize - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"mM" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"cC" and b5 in ~c"hH" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"mM" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"cC" and b5 in ~c"hH" and b6 in ~c"eE" and b7 in ~c"sS", do: :matches - def ident(:ident, [b1,b2,b3]) when b1 in ~c"mM" and b2 in ~c"aA" and b3 in ~c"xX", do: :max + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"mM" and b2 in ~c"aA" and b3 in ~c"xX", do: :max - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"mM" and b2 in ~c"eE" and b3 in ~c"mM" and b4 in ~c"bB" and b5 in ~c"eE" and b6 in ~c"rR", do: :member + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"mM" and b2 in ~c"eE" and b3 in ~c"mM" and b4 in ~c"bB" and b5 in ~c"eE" and b6 in ~c"rR", do: :member - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"mM" and b2 in ~c"eE" and b3 in ~c"rR" and b4 in ~c"gG" and b5 in ~c"eE", do: :merge + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"mM" and b2 in ~c"eE" and b3 in ~c"rR" and b4 in ~c"gG" and b5 in ~c"eE", do: :merge - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"mM" and b2 in ~c"eE" and b3 in ~c"tT" and b4 in ~c"hH" and b5 in ~c"oO" and b6 in ~c"dD", do: :method + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"mM" and b2 in ~c"eE" and b3 in ~c"tT" and b4 in ~c"hH" and b5 in ~c"oO" and b6 in ~c"dD", do: :method - def ident(:ident, [b1,b2,b3]) when b1 in ~c"mM" and b2 in ~c"iI" and b3 in ~c"nN", do: :min + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"mM" and b2 in ~c"iI" and b3 in ~c"nN", do: :min - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"mM" and b2 in ~c"iI" and b3 in ~c"nN" and b4 in ~c"uU" and b5 in ~c"tT" and b6 in ~c"eE", do: :minute + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"mM" and b2 in ~c"iI" and b3 in ~c"nN" and b4 in ~c"uU" and b5 in ~c"tT" and b6 in ~c"eE", do: :minute - def ident(:ident, [b1,b2,b3]) when b1 in ~c"mM" and b2 in ~c"oO" and b3 in ~c"dD", do: :mod + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"mM" and b2 in ~c"oO" and b3 in ~c"dD", do: :mod - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"mM" and b2 in ~c"oO" and b3 in ~c"dD" and b4 in ~c"iI" and b5 in ~c"fF" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"mM" and b2 in ~c"oO" and b3 in ~c"dD" and b4 in ~c"iI" and b5 in ~c"fF" and b6 in ~c"iI" and b7 in ~c"eE" and b8 in ~c"sS", do: :modifies - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"mM" and b2 in ~c"oO" and b3 in ~c"dD" and b4 in ~c"uU" and b5 in ~c"lL" and b6 in ~c"eE", do: :module + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"mM" and b2 in ~c"oO" and b3 in ~c"dD" and b4 in ~c"uU" and b5 in ~c"lL" and b6 in ~c"eE", do: :module - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"mM" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"tT" and b5 in ~c"hH", do: :month + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"mM" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"tT" and b5 in ~c"hH", do: :month - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"mM" and b2 in ~c"uU" and b3 in ~c"lL" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"sS" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"mM" and b2 in ~c"uU" and b3 in ~c"lL" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"sS" and b7 in ~c"eE" and b8 in ~c"tT", do: :multiset - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"nN" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"iI" and b5 in ~c"oO" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"nN" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"iI" and b5 in ~c"oO" and b6 in ~c"nN" and b7 in ~c"aA" and b8 in ~c"lL", do: :national - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"nN" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"uU" and b5 in ~c"rR" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"nN" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"uU" and b5 in ~c"rR" and b6 in ~c"aA" and b7 in ~c"lL", do: :natural - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"nN" and b2 in ~c"cC" and b3 in ~c"hH" and b4 in ~c"aA" and b5 in ~c"rR", do: :nchar + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"nN" and b2 in ~c"cC" and b3 in ~c"hH" and b4 in ~c"aA" and b5 in ~c"rR", do: :nchar - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"nN" and b2 in ~c"cC" and b3 in ~c"lL" and b4 in ~c"oO" and b5 in ~c"bB", do: :nclob + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"nN" and b2 in ~c"cC" and b3 in ~c"lL" and b4 in ~c"oO" and b5 in ~c"bB", do: :nclob - def ident(:ident, [b1,b2,b3]) when b1 in ~c"nN" and b2 in ~c"eE" and b3 in ~c"wW", do: :new + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"nN" and b2 in ~c"eE" and b3 in ~c"wW", do: :new - def ident(:ident, [b1,b2]) when b1 in ~c"nN" and b2 in ~c"oO", do: :no + def ident(:ident, [[[], b1], b2]) when b1 in ~c"nN" and b2 in ~c"oO", do: :no - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"nN" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"eE", do: :none + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"nN" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"eE", do: :none - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"nN" and b2 in ~c"oO" and b3 in ~c"rR" and b4 in ~c"mM" and b5 in ~c"aA" and b6 in ~c"lL" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"nN" and b2 in ~c"oO" and b3 in ~c"rR" and b4 in ~c"mM" and b5 in ~c"aA" and b6 in ~c"lL" and b7 in ~c"iI" and b8 in ~c"zZ" and b9 in ~c"eE", do: :normalize - def ident(:ident, [b1,b2,b3]) when b1 in ~c"nN" and b2 in ~c"oO" and b3 in ~c"tT", do: :not + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"nN" and b2 in ~c"oO" and b3 in ~c"tT", do: :not - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"nN" and b2 in ~c"tT" and b3 in ~c"hH" and b4 in ~c"_" and b5 in ~c"vV" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"nN" and b2 in ~c"tT" and b3 in ~c"hH" and b4 in ~c"_" and b5 in ~c"vV" and b6 in ~c"aA" and b7 in ~c"lL" and b8 in ~c"uU" and b9 in ~c"eE", do: :nth_value - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"nN" and b2 in ~c"tT" and b3 in ~c"iI" and b4 in ~c"lL" and b5 in ~c"eE", do: :ntile + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"nN" and b2 in ~c"tT" and b3 in ~c"iI" and b4 in ~c"lL" and b5 in ~c"eE", do: :ntile - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"nN" and b2 in ~c"uU" and b3 in ~c"lL" and b4 in ~c"lL", do: :null + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"nN" and b2 in ~c"uU" and b3 in ~c"lL" and b4 in ~c"lL", do: :null - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"nN" and b2 in ~c"uU" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"iI" and b6 in ~c"fF", do: :nullif + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"nN" and b2 in ~c"uU" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"iI" and b6 in ~c"fF", do: :nullif - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"nN" and b2 in ~c"uU" and b3 in ~c"mM" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"nN" and b2 in ~c"uU" and b3 in ~c"mM" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"iI" and b7 in ~c"cC", do: :numeric - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17]) when b1 in ~c"oO" and b2 in ~c"cC" and b3 in ~c"cC" and b4 in ~c"uU" and b5 in ~c"rR" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17]) when b1 in ~c"oO" and b2 in ~c"cC" and b3 in ~c"cC" and b4 in ~c"uU" and b5 in ~c"rR" and b6 in ~c"rR" and b7 in ~c"eE" and b8 in ~c"nN" and b9 in ~c"cC" and b10 in ~c"eE" and b11 in ~c"sS" and b12 in ~c"_" and b13 in ~c"rR" and b14 in ~c"eE" and b15 in ~c"gG" and b16 in ~c"eE" and b17 in ~c"xX", do: :occurrences_regex - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12]) when b1 in ~c"oO" and b2 in ~c"cC" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"tT" and b6 in ~c"_" and + def ident(:ident, [[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12]) when b1 in ~c"oO" and b2 in ~c"cC" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"tT" and b6 in ~c"_" and b7 in ~c"lL" and b8 in ~c"eE" and b9 in ~c"nN" and b10 in ~c"gG" and b11 in ~c"tT" and b12 in ~c"hH", do: :octet_length - def ident(:ident, [b1,b2]) when b1 in ~c"oO" and b2 in ~c"fF", do: :of + def ident(:ident, [[[], b1], b2]) when b1 in ~c"oO" and b2 in ~c"fF", do: :of - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"oO" and b2 in ~c"fF" and b3 in ~c"fF" and b4 in ~c"sS" and b5 in ~c"eE" and b6 in ~c"tT", do: :offset + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"oO" and b2 in ~c"fF" and b3 in ~c"fF" and b4 in ~c"sS" and b5 in ~c"eE" and b6 in ~c"tT", do: :offset - def ident(:ident, [b1,b2,b3]) when b1 in ~c"oO" and b2 in ~c"lL" and b3 in ~c"dD", do: :old + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"oO" and b2 in ~c"lL" and b3 in ~c"dD", do: :old - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"oO" and b2 in ~c"mM" and b3 in ~c"iI" and b4 in ~c"tT", do: :omit + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"oO" and b2 in ~c"mM" and b3 in ~c"iI" and b4 in ~c"tT", do: :omit - def ident(:ident, [b1,b2]) when b1 in ~c"oO" and b2 in ~c"nN", do: :on + def ident(:ident, [[[], b1], b2]) when b1 in ~c"oO" and b2 in ~c"nN", do: :on - def ident(:ident, [b1,b2,b3]) when b1 in ~c"oO" and b2 in ~c"nN" and b3 in ~c"eE", do: :one + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"oO" and b2 in ~c"nN" and b3 in ~c"eE", do: :one - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"oO" and b2 in ~c"nN" and b3 in ~c"lL" and b4 in ~c"yY", do: :only + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"oO" and b2 in ~c"nN" and b3 in ~c"lL" and b4 in ~c"yY", do: :only - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"oO" and b2 in ~c"pP" and b3 in ~c"eE" and b4 in ~c"nN", do: :open + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"oO" and b2 in ~c"pP" and b3 in ~c"eE" and b4 in ~c"nN", do: :open - def ident(:ident, [b1,b2]) when b1 in ~c"oO" and b2 in ~c"rR", do: :or + def ident(:ident, [[[], b1], b2]) when b1 in ~c"oO" and b2 in ~c"rR", do: :or - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"oO" and b2 in ~c"rR" and b3 in ~c"dD" and b4 in ~c"eE" and b5 in ~c"rR", do: :order + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"oO" and b2 in ~c"rR" and b3 in ~c"dD" and b4 in ~c"eE" and b5 in ~c"rR", do: :order - def ident(:ident, [b1,b2,b3]) when b1 in ~c"oO" and b2 in ~c"uU" and b3 in ~c"tT", do: :out + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"oO" and b2 in ~c"uU" and b3 in ~c"tT", do: :out - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"oO" and b2 in ~c"uU" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"rR", do: :outer + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"oO" and b2 in ~c"uU" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"rR", do: :outer - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"oO" and b2 in ~c"vV" and b3 in ~c"eE" and b4 in ~c"rR", do: :over + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"oO" and b2 in ~c"vV" and b3 in ~c"eE" and b4 in ~c"rR", do: :over - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"oO" and b2 in ~c"vV" and b3 in ~c"eE" and b4 in ~c"rR" and b5 in ~c"lL" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"oO" and b2 in ~c"vV" and b3 in ~c"eE" and b4 in ~c"rR" and b5 in ~c"lL" and b6 in ~c"aA" and b7 in ~c"pP" and b8 in ~c"sS", do: :overlaps - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"oO" and b2 in ~c"vV" and b3 in ~c"eE" and b4 in ~c"rR" and b5 in ~c"lL" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"oO" and b2 in ~c"vV" and b3 in ~c"eE" and b4 in ~c"rR" and b5 in ~c"lL" and b6 in ~c"aA" and b7 in ~c"yY", do: :overlay - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"aA" and b5 in ~c"mM" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"aA" and b5 in ~c"mM" and b6 in ~c"eE" and b7 in ~c"tT" and b8 in ~c"eE" and b9 in ~c"rR", do: :parameter - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"tT" and b7 in ~c"iI" and b8 in ~c"oO" and b9 in ~c"nN", do: :partition - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"tT" and b5 in ~c"eE" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"tT" and b5 in ~c"eE" and b6 in ~c"rR" and b7 in ~c"nN", do: :pattern - def ident(:ident, [b1,b2,b3]) when b1 in ~c"pP" and b2 in ~c"eE" and b3 in ~c"rR", do: :per + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"pP" and b2 in ~c"eE" and b3 in ~c"rR", do: :per - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"pP" and b2 in ~c"eE" and b3 in ~c"rR" and b4 in ~c"cC" and b5 in ~c"eE" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"pP" and b2 in ~c"eE" and b3 in ~c"rR" and b4 in ~c"cC" and b5 in ~c"eE" and b6 in ~c"nN" and b7 in ~c"tT", do: :percent - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12]) when b1 in ~c"pP" and b2 in ~c"eE" and b3 in ~c"rR" and b4 in ~c"cC" and b5 in ~c"eE" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12]) when b1 in ~c"pP" and b2 in ~c"eE" and b3 in ~c"rR" and b4 in ~c"cC" and b5 in ~c"eE" and b6 in ~c"nN" and b7 in ~c"tT" and b8 in ~c"_" and b9 in ~c"rR" and b10 in ~c"aA" and b11 in ~c"nN" and b12 in ~c"kK", do: :percent_rank - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15]) when b1 in ~c"pP" and b2 in ~c"eE" and b3 in ~c"rR" and b4 in ~c"cC" and b5 in ~c"eE" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15]) when b1 in ~c"pP" and b2 in ~c"eE" and b3 in ~c"rR" and b4 in ~c"cC" and b5 in ~c"eE" and b6 in ~c"nN" and b7 in ~c"tT" and b8 in ~c"iI" and b9 in ~c"lL" and b10 in ~c"eE" and b11 in ~c"_" and b12 in ~c"cC" and b13 in ~c"oO" and b14 in ~c"nN" and b15 in ~c"tT", do: :percentile_cont - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15]) when b1 in ~c"pP" and b2 in ~c"eE" and b3 in ~c"rR" and b4 in ~c"cC" and b5 in ~c"eE" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15]) when b1 in ~c"pP" and b2 in ~c"eE" and b3 in ~c"rR" and b4 in ~c"cC" and b5 in ~c"eE" and b6 in ~c"nN" and b7 in ~c"tT" and b8 in ~c"iI" and b9 in ~c"lL" and b10 in ~c"eE" and b11 in ~c"_" and b12 in ~c"dD" and b13 in ~c"iI" and b14 in ~c"sS" and b15 in ~c"cC", do: :percentile_disc - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"pP" and b2 in ~c"eE" and b3 in ~c"rR" and b4 in ~c"iI" and b5 in ~c"oO" and b6 in ~c"dD", do: :period + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"pP" and b2 in ~c"eE" and b3 in ~c"rR" and b4 in ~c"iI" and b5 in ~c"oO" and b6 in ~c"dD", do: :period - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"pP" and b2 in ~c"oO" and b3 in ~c"rR" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"oO" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"pP" and b2 in ~c"oO" and b3 in ~c"rR" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"oO" and b7 in ~c"nN", do: :portion - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"pP" and b2 in ~c"oO" and b3 in ~c"sS" and b4 in ~c"iI" and b5 in ~c"tT" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"pP" and b2 in ~c"oO" and b3 in ~c"sS" and b4 in ~c"iI" and b5 in ~c"tT" and b6 in ~c"iI" and b7 in ~c"oO" and b8 in ~c"nN", do: :position - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14]) when b1 in ~c"pP" and b2 in ~c"oO" and b3 in ~c"sS" and b4 in ~c"iI" and b5 in ~c"tT" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14]) when b1 in ~c"pP" and b2 in ~c"oO" and b3 in ~c"sS" and b4 in ~c"iI" and b5 in ~c"tT" and b6 in ~c"iI" and b7 in ~c"oO" and b8 in ~c"nN" and b9 in ~c"_" and b10 in ~c"rR" and b11 in ~c"eE" and b12 in ~c"gG" and b13 in ~c"eE" and b14 in ~c"xX", do: :position_regex - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"pP" and b2 in ~c"oO" and b3 in ~c"wW" and b4 in ~c"eE" and b5 in ~c"rR", do: :power + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"pP" and b2 in ~c"oO" and b3 in ~c"wW" and b4 in ~c"eE" and b5 in ~c"rR", do: :power - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"pP" and b2 in ~c"rR" and b3 in ~c"eE" and b4 in ~c"cC" and b5 in ~c"eE" and b6 in ~c"dD" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"pP" and b2 in ~c"rR" and b3 in ~c"eE" and b4 in ~c"cC" and b5 in ~c"eE" and b6 in ~c"dD" and b7 in ~c"eE" and b8 in ~c"sS", do: :precedes - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"pP" and b2 in ~c"rR" and b3 in ~c"eE" and b4 in ~c"cC" and b5 in ~c"iI" and b6 in ~c"sS" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"pP" and b2 in ~c"rR" and b3 in ~c"eE" and b4 in ~c"cC" and b5 in ~c"iI" and b6 in ~c"sS" and b7 in ~c"iI" and b8 in ~c"oO" and b9 in ~c"nN", do: :precision - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"pP" and b2 in ~c"rR" and b3 in ~c"eE" and b4 in ~c"pP" and b5 in ~c"aA" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"pP" and b2 in ~c"rR" and b3 in ~c"eE" and b4 in ~c"pP" and b5 in ~c"aA" and b6 in ~c"rR" and b7 in ~c"eE", do: :prepare - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"pP" and b2 in ~c"rR" and b3 in ~c"iI" and b4 in ~c"mM" and b5 in ~c"aA" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"pP" and b2 in ~c"rR" and b3 in ~c"iI" and b4 in ~c"mM" and b5 in ~c"aA" and b6 in ~c"rR" and b7 in ~c"yY", do: :primary - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"pP" and b2 in ~c"rR" and b3 in ~c"oO" and b4 in ~c"cC" and b5 in ~c"eE" and b6 in ~c"dD" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"pP" and b2 in ~c"rR" and b3 in ~c"oO" and b4 in ~c"cC" and b5 in ~c"eE" and b6 in ~c"dD" and b7 in ~c"uU" and b8 in ~c"rR" and b9 in ~c"eE", do: :procedure - def ident(:ident, [b1,b2,b3]) when b1 in ~c"pP" and b2 in ~c"tT" and b3 in ~c"fF", do: :ptf + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"pP" and b2 in ~c"tT" and b3 in ~c"fF", do: :ptf - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"rR" and b2 in ~c"aA" and b3 in ~c"nN" and b4 in ~c"gG" and b5 in ~c"eE", do: :range + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"rR" and b2 in ~c"aA" and b3 in ~c"nN" and b4 in ~c"gG" and b5 in ~c"eE", do: :range - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"rR" and b2 in ~c"aA" and b3 in ~c"nN" and b4 in ~c"kK", do: :rank + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"rR" and b2 in ~c"aA" and b3 in ~c"nN" and b4 in ~c"kK", do: :rank - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"aA" and b4 in ~c"dD" and b5 in ~c"sS", do: :reads + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"aA" and b4 in ~c"dD" and b5 in ~c"sS", do: :reads - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"aA" and b4 in ~c"lL", do: :real + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"aA" and b4 in ~c"lL", do: :real - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"cC" and b4 in ~c"uU" and b5 in ~c"rR" and b6 in ~c"sS" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"cC" and b4 in ~c"uU" and b5 in ~c"rR" and b6 in ~c"sS" and b7 in ~c"iI" and b8 in ~c"vV" and b9 in ~c"eE", do: :recursive - def ident(:ident, [b1,b2,b3]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"fF", do: :ref + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"fF", do: :ref - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"fF" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"fF" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"eE" and b7 in ~c"nN" and b8 in ~c"cC" and b9 in ~c"eE" and b10 in ~c"sS", do: :references - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"fF" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"fF" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"eE" and b7 in ~c"nN" and b8 in ~c"cC" and b9 in ~c"iI" and b10 in ~c"nN" and b11 in ~c"gG", do: :referencing - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"gG" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"gG" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"aA" and b7 in ~c"vV" and b8 in ~c"gG" and b9 in ~c"xX", do: :regr_avgx - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"gG" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"gG" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"aA" and b7 in ~c"vV" and b8 in ~c"gG" and b9 in ~c"yY", do: :regr_avgy - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"gG" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"cC" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"gG" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"cC" and b7 in ~c"oO" and b8 in ~c"uU" and b9 in ~c"nN" and b10 in ~c"tT", do: :regr_count - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"gG" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"gG" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"iI" and b7 in ~c"nN" and b8 in ~c"tT" and b9 in ~c"eE" and b10 in ~c"rR" and b11 in ~c"cC" and b12 in ~c"eE" and b13 in ~c"pP" and b14 in ~c"tT", do: :regr_intercept - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"gG" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"gG" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"rR" and b7 in ~c"2", do: :regr_r2 - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"gG" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"sS" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"gG" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"sS" and b7 in ~c"lL" and b8 in ~c"oO" and b9 in ~c"pP" and b10 in ~c"eE", do: :regr_slope - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"gG" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"sS" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"gG" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"sS" and b7 in ~c"xX" and b8 in ~c"xX", do: :regr_sxx - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"gG" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"sS" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"gG" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"sS" and b7 in ~c"xX" and b8 in ~c"yY", do: :regr_sxy - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"gG" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"sS" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"gG" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"sS" and b7 in ~c"yY" and b8 in ~c"yY", do: :regr_syy - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"lL" and b4 in ~c"eE" and b5 in ~c"aA" and b6 in ~c"sS" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"lL" and b4 in ~c"eE" and b5 in ~c"aA" and b6 in ~c"sS" and b7 in ~c"eE", do: :release - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"uU" and b5 in ~c"lL" and b6 in ~c"tT", do: :result + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"uU" and b5 in ~c"lL" and b6 in ~c"tT", do: :result - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"tT" and b4 in ~c"uU" and b5 in ~c"rR" and b6 in ~c"nN", do: :return + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"tT" and b4 in ~c"uU" and b5 in ~c"rR" and b6 in ~c"nN", do: :return - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"tT" and b4 in ~c"uU" and b5 in ~c"rR" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"tT" and b4 in ~c"uU" and b5 in ~c"rR" and b6 in ~c"nN" and b7 in ~c"sS", do: :returns - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"vV" and b4 in ~c"oO" and b5 in ~c"kK" and b6 in ~c"eE", do: :revoke + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"vV" and b4 in ~c"oO" and b5 in ~c"kK" and b6 in ~c"eE", do: :revoke - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"rR" and b2 in ~c"iI" and b3 in ~c"gG" and b4 in ~c"hH" and b5 in ~c"tT", do: :right + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"rR" and b2 in ~c"iI" and b3 in ~c"gG" and b4 in ~c"hH" and b5 in ~c"tT", do: :right - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"rR" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"bB" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"rR" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"bB" and b6 in ~c"aA" and b7 in ~c"cC" and b8 in ~c"kK", do: :rollback - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"rR" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"uU" and b6 in ~c"pP", do: :rollup + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"rR" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"uU" and b6 in ~c"pP", do: :rollup - def ident(:ident, [b1,b2,b3]) when b1 in ~c"rR" and b2 in ~c"oO" and b3 in ~c"wW", do: :row + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"rR" and b2 in ~c"oO" and b3 in ~c"wW", do: :row - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"rR" and b2 in ~c"oO" and b3 in ~c"wW" and b4 in ~c"_" and b5 in ~c"nN" and b6 in ~c"uU" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"rR" and b2 in ~c"oO" and b3 in ~c"wW" and b4 in ~c"_" and b5 in ~c"nN" and b6 in ~c"uU" and b7 in ~c"mM" and b8 in ~c"bB" and b9 in ~c"eE" and b10 in ~c"rR", do: :row_number - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"rR" and b2 in ~c"oO" and b3 in ~c"wW" and b4 in ~c"sS", do: :rows + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"rR" and b2 in ~c"oO" and b3 in ~c"wW" and b4 in ~c"sS", do: :rows - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"rR" and b2 in ~c"pP" and b3 in ~c"aA" and b4 in ~c"dD", do: :rpad + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"rR" and b2 in ~c"pP" and b3 in ~c"aA" and b4 in ~c"dD", do: :rpad - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"rR" and b2 in ~c"tT" and b3 in ~c"rR" and b4 in ~c"iI" and b5 in ~c"mM", do: :rtrim + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"rR" and b2 in ~c"tT" and b3 in ~c"rR" and b4 in ~c"iI" and b5 in ~c"mM", do: :rtrim - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"rR" and b2 in ~c"uU" and b3 in ~c"nN" and b4 in ~c"nN" and b5 in ~c"iI" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"rR" and b2 in ~c"uU" and b3 in ~c"nN" and b4 in ~c"nN" and b5 in ~c"iI" and b6 in ~c"nN" and b7 in ~c"gG", do: :running - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"sS" and b2 in ~c"aA" and b3 in ~c"vV" and b4 in ~c"eE" and b5 in ~c"pP" and b6 in ~c"oO" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"sS" and b2 in ~c"aA" and b3 in ~c"vV" and b4 in ~c"eE" and b5 in ~c"pP" and b6 in ~c"oO" and b7 in ~c"iI" and b8 in ~c"nN" and b9 in ~c"tT", do: :savepoint - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"sS" and b2 in ~c"cC" and b3 in ~c"oO" and b4 in ~c"pP" and b5 in ~c"eE", do: :scope + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"sS" and b2 in ~c"cC" and b3 in ~c"oO" and b4 in ~c"pP" and b5 in ~c"eE", do: :scope - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"sS" and b2 in ~c"cC" and b3 in ~c"rR" and b4 in ~c"oO" and b5 in ~c"lL" and b6 in ~c"lL", do: :scroll + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"sS" and b2 in ~c"cC" and b3 in ~c"rR" and b4 in ~c"oO" and b5 in ~c"lL" and b6 in ~c"lL", do: :scroll - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"aA" and b4 in ~c"rR" and b5 in ~c"cC" and b6 in ~c"hH", do: :search + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"aA" and b4 in ~c"rR" and b5 in ~c"cC" and b6 in ~c"hH", do: :search - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"cC" and b4 in ~c"oO" and b5 in ~c"nN" and b6 in ~c"dD", do: :second + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"cC" and b4 in ~c"oO" and b5 in ~c"nN" and b6 in ~c"dD", do: :second - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"eE" and b4 in ~c"kK", do: :seek + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"eE" and b4 in ~c"kK", do: :seek - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"lL" and b4 in ~c"eE" and b5 in ~c"cC" and b6 in ~c"tT", do: :select + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"lL" and b4 in ~c"eE" and b5 in ~c"cC" and b6 in ~c"tT", do: :select - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"nN" and b4 in ~c"sS" and b5 in ~c"iI" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"nN" and b4 in ~c"sS" and b5 in ~c"iI" and b6 in ~c"tT" and b7 in ~c"iI" and b8 in ~c"vV" and b9 in ~c"eE", do: :sensitive - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"sS" and b5 in ~c"iI" and b6 in ~c"oO" and + def ident(:ident, [[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"sS" and b5 in ~c"iI" and b6 in ~c"oO" and b7 in ~c"nN" and b8 in ~c"_" and b9 in ~c"uU" and b10 in ~c"sS" and b11 in ~c"eE" and b12 in ~c"rR", do: :session_user - def ident(:ident, [b1,b2,b3]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"tT", do: :set + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"tT", do: :set - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"sS" and b2 in ~c"hH" and b3 in ~c"oO" and b4 in ~c"wW", do: :show + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"sS" and b2 in ~c"hH" and b3 in ~c"oO" and b4 in ~c"wW", do: :show - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"sS" and b2 in ~c"iI" and b3 in ~c"mM" and b4 in ~c"iI" and b5 in ~c"lL" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"sS" and b2 in ~c"iI" and b3 in ~c"mM" and b4 in ~c"iI" and b5 in ~c"lL" and b6 in ~c"aA" and b7 in ~c"rR", do: :similar - def ident(:ident, [b1,b2,b3]) when b1 in ~c"sS" and b2 in ~c"iI" and b3 in ~c"nN", do: :sin + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"sS" and b2 in ~c"iI" and b3 in ~c"nN", do: :sin - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"sS" and b2 in ~c"iI" and b3 in ~c"nN" and b4 in ~c"hH", do: :sinh + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"sS" and b2 in ~c"iI" and b3 in ~c"nN" and b4 in ~c"hH", do: :sinh - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"sS" and b2 in ~c"kK" and b3 in ~c"iI" and b4 in ~c"pP", do: :skip + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"sS" and b2 in ~c"kK" and b3 in ~c"iI" and b4 in ~c"pP", do: :skip - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"sS" and b2 in ~c"mM" and b3 in ~c"aA" and b4 in ~c"lL" and b5 in ~c"lL" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"sS" and b2 in ~c"mM" and b3 in ~c"aA" and b4 in ~c"lL" and b5 in ~c"lL" and b6 in ~c"iI" and b7 in ~c"nN" and b8 in ~c"tT", do: :smallint - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"sS" and b2 in ~c"oO" and b3 in ~c"mM" and b4 in ~c"eE", do: :some + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"sS" and b2 in ~c"oO" and b3 in ~c"mM" and b4 in ~c"eE", do: :some - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"sS" and b2 in ~c"pP" and b3 in ~c"eE" and b4 in ~c"cC" and b5 in ~c"iI" and b6 in ~c"fF" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"sS" and b2 in ~c"pP" and b3 in ~c"eE" and b4 in ~c"cC" and b5 in ~c"iI" and b6 in ~c"fF" and b7 in ~c"iI" and b8 in ~c"cC", do: :specific - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12]) when b1 in ~c"sS" and b2 in ~c"pP" and b3 in ~c"eE" and b4 in ~c"cC" and b5 in ~c"iI" and b6 in ~c"fF" and + def ident(:ident, [[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12]) when b1 in ~c"sS" and b2 in ~c"pP" and b3 in ~c"eE" and b4 in ~c"cC" and b5 in ~c"iI" and b6 in ~c"fF" and b7 in ~c"iI" and b8 in ~c"cC" and b9 in ~c"tT" and b10 in ~c"yY" and b11 in ~c"pP" and b12 in ~c"eE", do: :specifictype - def ident(:ident, [b1,b2,b3]) when b1 in ~c"sS" and b2 in ~c"qQ" and b3 in ~c"lL", do: :sql + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"sS" and b2 in ~c"qQ" and b3 in ~c"lL", do: :sql - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12]) when b1 in ~c"sS" and b2 in ~c"qQ" and b3 in ~c"lL" and b4 in ~c"eE" and b5 in ~c"xX" and b6 in ~c"cC" and + def ident(:ident, [[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12]) when b1 in ~c"sS" and b2 in ~c"qQ" and b3 in ~c"lL" and b4 in ~c"eE" and b5 in ~c"xX" and b6 in ~c"cC" and b7 in ~c"eE" and b8 in ~c"pP" and b9 in ~c"tT" and b10 in ~c"iI" and b11 in ~c"oO" and b12 in ~c"nN", do: :sqlexception - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"sS" and b2 in ~c"qQ" and b3 in ~c"lL" and b4 in ~c"sS" and b5 in ~c"tT" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"sS" and b2 in ~c"qQ" and b3 in ~c"lL" and b4 in ~c"sS" and b5 in ~c"tT" and b6 in ~c"aA" and b7 in ~c"tT" and b8 in ~c"eE", do: :sqlstate - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"sS" and b2 in ~c"qQ" and b3 in ~c"lL" and b4 in ~c"wW" and b5 in ~c"aA" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"sS" and b2 in ~c"qQ" and b3 in ~c"lL" and b4 in ~c"wW" and b5 in ~c"aA" and b6 in ~c"rR" and b7 in ~c"nN" and b8 in ~c"iI" and b9 in ~c"nN" and b10 in ~c"gG", do: :sqlwarning - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"sS" and b2 in ~c"qQ" and b3 in ~c"rR" and b4 in ~c"tT", do: :sqrt + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"sS" and b2 in ~c"qQ" and b3 in ~c"rR" and b4 in ~c"tT", do: :sqrt - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"sS" and b2 in ~c"tT" and b3 in ~c"aA" and b4 in ~c"rR" and b5 in ~c"tT", do: :start + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"sS" and b2 in ~c"tT" and b3 in ~c"aA" and b4 in ~c"rR" and b5 in ~c"tT", do: :start - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"sS" and b2 in ~c"tT" and b3 in ~c"aA" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"cC", do: :static + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"sS" and b2 in ~c"tT" and b3 in ~c"aA" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"cC", do: :static - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"sS" and b2 in ~c"tT" and b3 in ~c"dD" and b4 in ~c"dD" and b5 in ~c"eE" and b6 in ~c"vV" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"sS" and b2 in ~c"tT" and b3 in ~c"dD" and b4 in ~c"dD" and b5 in ~c"eE" and b6 in ~c"vV" and b7 in ~c"_" and b8 in ~c"pP" and b9 in ~c"oO" and b10 in ~c"pP", do: :stddev_pop - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"sS" and b2 in ~c"tT" and b3 in ~c"dD" and b4 in ~c"dD" and b5 in ~c"eE" and b6 in ~c"vV" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"sS" and b2 in ~c"tT" and b3 in ~c"dD" and b4 in ~c"dD" and b5 in ~c"eE" and b6 in ~c"vV" and b7 in ~c"_" and b8 in ~c"sS" and b9 in ~c"aA" and b10 in ~c"mM" and b11 in ~c"pP", do: :stddev_samp - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"sS" and b2 in ~c"uU" and b3 in ~c"bB" and b4 in ~c"mM" and b5 in ~c"uU" and b6 in ~c"lL" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"sS" and b2 in ~c"uU" and b3 in ~c"bB" and b4 in ~c"mM" and b5 in ~c"uU" and b6 in ~c"lL" and b7 in ~c"tT" and b8 in ~c"iI" and b9 in ~c"sS" and b10 in ~c"eE" and b11 in ~c"tT", do: :submultiset - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"sS" and b2 in ~c"uU" and b3 in ~c"bB" and b4 in ~c"sS" and b5 in ~c"eE" and b6 in ~c"tT", do: :subset + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"sS" and b2 in ~c"uU" and b3 in ~c"bB" and b4 in ~c"sS" and b5 in ~c"eE" and b6 in ~c"tT", do: :subset - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"sS" and b2 in ~c"uU" and b3 in ~c"bB" and b4 in ~c"sS" and b5 in ~c"tT" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"sS" and b2 in ~c"uU" and b3 in ~c"bB" and b4 in ~c"sS" and b5 in ~c"tT" and b6 in ~c"rR" and b7 in ~c"iI" and b8 in ~c"nN" and b9 in ~c"gG", do: :substring - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15]) when b1 in ~c"sS" and b2 in ~c"uU" and b3 in ~c"bB" and b4 in ~c"sS" and b5 in ~c"tT" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15]) when b1 in ~c"sS" and b2 in ~c"uU" and b3 in ~c"bB" and b4 in ~c"sS" and b5 in ~c"tT" and b6 in ~c"rR" and b7 in ~c"iI" and b8 in ~c"nN" and b9 in ~c"gG" and b10 in ~c"_" and b11 in ~c"rR" and b12 in ~c"eE" and b13 in ~c"gG" and b14 in ~c"eE" and b15 in ~c"xX", do: :substring_regex - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"sS" and b2 in ~c"uU" and b3 in ~c"cC" and b4 in ~c"cC" and b5 in ~c"eE" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"sS" and b2 in ~c"uU" and b3 in ~c"cC" and b4 in ~c"cC" and b5 in ~c"eE" and b6 in ~c"eE" and b7 in ~c"dD" and b8 in ~c"sS", do: :succeeds - def ident(:ident, [b1,b2,b3]) when b1 in ~c"sS" and b2 in ~c"uU" and b3 in ~c"mM", do: :sum + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"sS" and b2 in ~c"uU" and b3 in ~c"mM", do: :sum - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"sS" and b2 in ~c"yY" and b3 in ~c"mM" and b4 in ~c"mM" and b5 in ~c"eE" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"sS" and b2 in ~c"yY" and b3 in ~c"mM" and b4 in ~c"mM" and b5 in ~c"eE" and b6 in ~c"tT" and b7 in ~c"rR" and b8 in ~c"iI" and b9 in ~c"cC", do: :symmetric - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"sS" and b2 in ~c"yY" and b3 in ~c"sS" and b4 in ~c"tT" and b5 in ~c"eE" and b6 in ~c"mM", do: :system + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"sS" and b2 in ~c"yY" and b3 in ~c"sS" and b4 in ~c"tT" and b5 in ~c"eE" and b6 in ~c"mM", do: :system - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"sS" and b2 in ~c"yY" and b3 in ~c"sS" and b4 in ~c"tT" and b5 in ~c"eE" and b6 in ~c"mM" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"sS" and b2 in ~c"yY" and b3 in ~c"sS" and b4 in ~c"tT" and b5 in ~c"eE" and b6 in ~c"mM" and b7 in ~c"_" and b8 in ~c"tT" and b9 in ~c"iI" and b10 in ~c"mM" and b11 in ~c"eE", do: :system_time - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"sS" and b2 in ~c"yY" and b3 in ~c"sS" and b4 in ~c"tT" and b5 in ~c"eE" and b6 in ~c"mM" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"sS" and b2 in ~c"yY" and b3 in ~c"sS" and b4 in ~c"tT" and b5 in ~c"eE" and b6 in ~c"mM" and b7 in ~c"_" and b8 in ~c"uU" and b9 in ~c"sS" and b10 in ~c"eE" and b11 in ~c"rR", do: :system_user - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"tT" and b2 in ~c"aA" and b3 in ~c"bB" and b4 in ~c"lL" and b5 in ~c"eE", do: :table + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"tT" and b2 in ~c"aA" and b3 in ~c"bB" and b4 in ~c"lL" and b5 in ~c"eE", do: :table - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"tT" and b2 in ~c"aA" and b3 in ~c"bB" and b4 in ~c"lL" and b5 in ~c"eE" and b6 in ~c"sS" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"tT" and b2 in ~c"aA" and b3 in ~c"bB" and b4 in ~c"lL" and b5 in ~c"eE" and b6 in ~c"sS" and b7 in ~c"aA" and b8 in ~c"mM" and b9 in ~c"pP" and b10 in ~c"lL" and b11 in ~c"eE", do: :tablesample - def ident(:ident, [b1,b2,b3]) when b1 in ~c"tT" and b2 in ~c"aA" and b3 in ~c"nN", do: :tan + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"tT" and b2 in ~c"aA" and b3 in ~c"nN", do: :tan - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"tT" and b2 in ~c"aA" and b3 in ~c"nN" and b4 in ~c"hH", do: :tanh + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"tT" and b2 in ~c"aA" and b3 in ~c"nN" and b4 in ~c"hH", do: :tanh - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"tT" and b2 in ~c"hH" and b3 in ~c"eE" and b4 in ~c"nN", do: :then + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"tT" and b2 in ~c"hH" and b3 in ~c"eE" and b4 in ~c"nN", do: :then - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"tT" and b2 in ~c"iI" and b3 in ~c"mM" and b4 in ~c"eE", do: :time + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"tT" and b2 in ~c"iI" and b3 in ~c"mM" and b4 in ~c"eE", do: :time - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"tT" and b2 in ~c"iI" and b3 in ~c"mM" and b4 in ~c"eE" and b5 in ~c"sS" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"tT" and b2 in ~c"iI" and b3 in ~c"mM" and b4 in ~c"eE" and b5 in ~c"sS" and b6 in ~c"tT" and b7 in ~c"aA" and b8 in ~c"mM" and b9 in ~c"pP", do: :timestamp - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13]) when b1 in ~c"tT" and b2 in ~c"iI" and b3 in ~c"mM" and b4 in ~c"eE" and b5 in ~c"zZ" and b6 in ~c"oO" and + def ident(:ident, [[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13]) when b1 in ~c"tT" and b2 in ~c"iI" and b3 in ~c"mM" and b4 in ~c"eE" and b5 in ~c"zZ" and b6 in ~c"oO" and b7 in ~c"nN" and b8 in ~c"eE" and b9 in ~c"_" and b10 in ~c"hH" and b11 in ~c"oO" and b12 in ~c"uU" and b13 in ~c"rR", do: :timezone_hour - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15]) when b1 in ~c"tT" and b2 in ~c"iI" and b3 in ~c"mM" and b4 in ~c"eE" and b5 in ~c"zZ" and b6 in ~c"oO" and + def ident(:ident, [[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15]) when b1 in ~c"tT" and b2 in ~c"iI" and b3 in ~c"mM" and b4 in ~c"eE" and b5 in ~c"zZ" and b6 in ~c"oO" and b7 in ~c"nN" and b8 in ~c"eE" and b9 in ~c"_" and b10 in ~c"mM" and b11 in ~c"iI" and b12 in ~c"nN" and b13 in ~c"uU" and b14 in ~c"tT" and b15 in ~c"eE", do: :timezone_minute - def ident(:ident, [b1,b2]) when b1 in ~c"tT" and b2 in ~c"oO", do: :to + def ident(:ident, [[[], b1], b2]) when b1 in ~c"tT" and b2 in ~c"oO", do: :to - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"iI" and b5 in ~c"lL" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"iI" and b5 in ~c"lL" and b6 in ~c"iI" and b7 in ~c"nN" and b8 in ~c"gG", do: :trailing - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"nN" and b5 in ~c"sS" and b6 in ~c"lL" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"nN" and b5 in ~c"sS" and b6 in ~c"lL" and b7 in ~c"aA" and b8 in ~c"tT" and b9 in ~c"eE", do: :translate - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"nN" and b5 in ~c"sS" and b6 in ~c"lL" and + def ident(:ident, [[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"nN" and b5 in ~c"sS" and b6 in ~c"lL" and b7 in ~c"aA" and b8 in ~c"tT" and b9 in ~c"eE" and b10 in ~c"_" and b11 in ~c"rR" and b12 in ~c"eE" and b13 in ~c"gG" and b14 in ~c"eE" and b15 in ~c"xX", do: :translate_regex - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"nN" and b5 in ~c"sS" and b6 in ~c"lL" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"nN" and b5 in ~c"sS" and b6 in ~c"lL" and b7 in ~c"aA" and b8 in ~c"tT" and b9 in ~c"iI" and b10 in ~c"oO" and b11 in ~c"nN", do: :translation - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"eE" and b4 in ~c"aA" and b5 in ~c"tT", do: :treat + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"eE" and b4 in ~c"aA" and b5 in ~c"tT", do: :treat - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"iI" and b4 in ~c"gG" and b5 in ~c"gG" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"iI" and b4 in ~c"gG" and b5 in ~c"gG" and b6 in ~c"eE" and b7 in ~c"rR", do: :trigger - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"iI" and b4 in ~c"mM", do: :trim + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"iI" and b4 in ~c"mM", do: :trim - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"iI" and b4 in ~c"mM" and b5 in ~c"_" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"iI" and b4 in ~c"mM" and b5 in ~c"_" and b6 in ~c"aA" and b7 in ~c"rR" and b8 in ~c"rR" and b9 in ~c"aA" and b10 in ~c"yY", do: :trim_array - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"uU" and b4 in ~c"eE", do: true + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"uU" and b4 in ~c"eE", do: true - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"uU" and b4 in ~c"nN" and b5 in ~c"cC" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"uU" and b4 in ~c"nN" and b5 in ~c"cC" and b6 in ~c"aA" and b7 in ~c"tT" and b8 in ~c"eE", do: :truncate - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"uU" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"cC" and b5 in ~c"aA" and b6 in ~c"pP" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"uU" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"cC" and b5 in ~c"aA" and b6 in ~c"pP" and b7 in ~c"eE", do: :uescape - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"uU" and b2 in ~c"nN" and b3 in ~c"iI" and b4 in ~c"oO" and b5 in ~c"nN", do: :union + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"uU" and b2 in ~c"nN" and b3 in ~c"iI" and b4 in ~c"oO" and b5 in ~c"nN", do: :union - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"uU" and b2 in ~c"nN" and b3 in ~c"iI" and b4 in ~c"qQ" and b5 in ~c"uU" and b6 in ~c"eE", do: :unique + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"uU" and b2 in ~c"nN" and b3 in ~c"iI" and b4 in ~c"qQ" and b5 in ~c"uU" and b6 in ~c"eE", do: :unique - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"uU" and b2 in ~c"nN" and b3 in ~c"kK" and b4 in ~c"nN" and b5 in ~c"oO" and b6 in ~c"wW" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"uU" and b2 in ~c"nN" and b3 in ~c"kK" and b4 in ~c"nN" and b5 in ~c"oO" and b6 in ~c"wW" and b7 in ~c"nN", do: :unknown - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"uU" and b2 in ~c"nN" and b3 in ~c"nN" and b4 in ~c"eE" and b5 in ~c"sS" and b6 in ~c"tT", do: :unnest + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"uU" and b2 in ~c"nN" and b3 in ~c"nN" and b4 in ~c"eE" and b5 in ~c"sS" and b6 in ~c"tT", do: :unnest - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"uU" and b2 in ~c"pP" and b3 in ~c"dD" and b4 in ~c"aA" and b5 in ~c"tT" and b6 in ~c"eE", do: :update + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"uU" and b2 in ~c"pP" and b3 in ~c"dD" and b4 in ~c"aA" and b5 in ~c"tT" and b6 in ~c"eE", do: :update - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"uU" and b2 in ~c"pP" and b3 in ~c"pP" and b4 in ~c"eE" and b5 in ~c"rR", do: :upper + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"uU" and b2 in ~c"pP" and b3 in ~c"pP" and b4 in ~c"eE" and b5 in ~c"rR", do: :upper - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"uU" and b2 in ~c"sS" and b3 in ~c"eE" and b4 in ~c"rR", do: :user + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"uU" and b2 in ~c"sS" and b3 in ~c"eE" and b4 in ~c"rR", do: :user - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"uU" and b2 in ~c"sS" and b3 in ~c"iI" and b4 in ~c"nN" and b5 in ~c"gG", do: :using + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"uU" and b2 in ~c"sS" and b3 in ~c"iI" and b4 in ~c"nN" and b5 in ~c"gG", do: :using - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"vV" and b2 in ~c"aA" and b3 in ~c"lL" and b4 in ~c"uU" and b5 in ~c"eE", do: :value + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"vV" and b2 in ~c"aA" and b3 in ~c"lL" and b4 in ~c"uU" and b5 in ~c"eE", do: :value - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"vV" and b2 in ~c"aA" and b3 in ~c"lL" and b4 in ~c"uU" and b5 in ~c"eE" and b6 in ~c"sS", do: :values + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"vV" and b2 in ~c"aA" and b3 in ~c"lL" and b4 in ~c"uU" and b5 in ~c"eE" and b6 in ~c"sS", do: :values - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"vV" and b2 in ~c"aA" and b3 in ~c"lL" and b4 in ~c"uU" and b5 in ~c"eE" and b6 in ~c"_" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"vV" and b2 in ~c"aA" and b3 in ~c"lL" and b4 in ~c"uU" and b5 in ~c"eE" and b6 in ~c"_" and b7 in ~c"oO" and b8 in ~c"fF", do: :value_of - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"vV" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"_" and b5 in ~c"pP" and b6 in ~c"oO" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"vV" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"_" and b5 in ~c"pP" and b6 in ~c"oO" and b7 in ~c"pP", do: :var_pop - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"vV" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"_" and b5 in ~c"sS" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"vV" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"_" and b5 in ~c"sS" and b6 in ~c"aA" and b7 in ~c"mM" and b8 in ~c"pP", do: :var_samp - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"vV" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"bB" and b5 in ~c"iI" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"vV" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"bB" and b5 in ~c"iI" and b6 in ~c"nN" and b7 in ~c"aA" and b8 in ~c"rR" and b9 in ~c"yY", do: :varbinary - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"vV" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"cC" and b5 in ~c"hH" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"vV" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"cC" and b5 in ~c"hH" and b6 in ~c"aA" and b7 in ~c"rR", do: :varchar - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"vV" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"yY" and b5 in ~c"iI" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"vV" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"yY" and b5 in ~c"iI" and b6 in ~c"nN" and b7 in ~c"gG", do: :varying - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"vV" and b2 in ~c"eE" and b3 in ~c"rR" and b4 in ~c"sS" and b5 in ~c"iI" and b6 in ~c"oO" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"vV" and b2 in ~c"eE" and b3 in ~c"rR" and b4 in ~c"sS" and b5 in ~c"iI" and b6 in ~c"oO" and b7 in ~c"nN" and b8 in ~c"iI" and b9 in ~c"nN" and b10 in ~c"gG", do: :versioning - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"wW" and b2 in ~c"hH" and b3 in ~c"eE" and b4 in ~c"nN", do: :when + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"wW" and b2 in ~c"hH" and b3 in ~c"eE" and b4 in ~c"nN", do: :when - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"wW" and b2 in ~c"hH" and b3 in ~c"eE" and b4 in ~c"nN" and b5 in ~c"eE" and b6 in ~c"vV" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"wW" and b2 in ~c"hH" and b3 in ~c"eE" and b4 in ~c"nN" and b5 in ~c"eE" and b6 in ~c"vV" and b7 in ~c"eE" and b8 in ~c"rR", do: :whenever - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"wW" and b2 in ~c"hH" and b3 in ~c"eE" and b4 in ~c"rR" and b5 in ~c"eE", do: :where + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"wW" and b2 in ~c"hH" and b3 in ~c"eE" and b4 in ~c"rR" and b5 in ~c"eE", do: :where - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12]) when b1 in ~c"wW" and b2 in ~c"iI" and b3 in ~c"dD" and b4 in ~c"tT" and b5 in ~c"hH" and b6 in ~c"_" and + def ident(:ident, [[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12]) when b1 in ~c"wW" and b2 in ~c"iI" and b3 in ~c"dD" and b4 in ~c"tT" and b5 in ~c"hH" and b6 in ~c"_" and b7 in ~c"bB" and b8 in ~c"uU" and b9 in ~c"cC" and b10 in ~c"kK" and b11 in ~c"eE" and b12 in ~c"tT", do: :width_bucket - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"wW" and b2 in ~c"iI" and b3 in ~c"nN" and b4 in ~c"dD" and b5 in ~c"oO" and b6 in ~c"wW", do: :window + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"wW" and b2 in ~c"iI" and b3 in ~c"nN" and b4 in ~c"dD" and b5 in ~c"oO" and b6 in ~c"wW", do: :window - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"wW" and b2 in ~c"iI" and b3 in ~c"tT" and b4 in ~c"hH", do: :with + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"wW" and b2 in ~c"iI" and b3 in ~c"tT" and b4 in ~c"hH", do: :with - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"wW" and b2 in ~c"iI" and b3 in ~c"tT" and b4 in ~c"hH" and b5 in ~c"iI" and b6 in ~c"nN", do: :within + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"wW" and b2 in ~c"iI" and b3 in ~c"tT" and b4 in ~c"hH" and b5 in ~c"iI" and b6 in ~c"nN", do: :within - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"wW" and b2 in ~c"iI" and b3 in ~c"tT" and b4 in ~c"hH" and b5 in ~c"oO" and b6 in ~c"uU" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"wW" and b2 in ~c"iI" and b3 in ~c"tT" and b4 in ~c"hH" and b5 in ~c"oO" and b6 in ~c"uU" and b7 in ~c"tT", do: :without - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"yY" and b2 in ~c"eE" and b3 in ~c"aA" and b4 in ~c"rR", do: :year + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"yY" and b2 in ~c"eE" and b3 in ~c"aA" and b4 in ~c"rR", do: :year - def ident(:ident, [b1]) when b1 in ~c"aA", do: :a + def ident(:ident, [[], b1]) when b1 in ~c"aA", do: :a - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"aA" and b2 in ~c"bB" and b3 in ~c"sS" and b4 in ~c"oO" and b5 in ~c"lL" and b6 in ~c"uU" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"aA" and b2 in ~c"bB" and b3 in ~c"sS" and b4 in ~c"oO" and b5 in ~c"lL" and b6 in ~c"uU" and b7 in ~c"tT" and b8 in ~c"eE", do: :absolute - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"aA" and b2 in ~c"cC" and b3 in ~c"tT" and b4 in ~c"iI" and b5 in ~c"oO" and b6 in ~c"nN", do: :action + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"aA" and b2 in ~c"cC" and b3 in ~c"tT" and b4 in ~c"iI" and b5 in ~c"oO" and b6 in ~c"nN", do: :action - def ident(:ident, [b1,b2,b3]) when b1 in ~c"aA" and b2 in ~c"dD" and b3 in ~c"aA", do: :ada + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"aA" and b2 in ~c"dD" and b3 in ~c"aA", do: :ada - def ident(:ident, [b1,b2,b3]) when b1 in ~c"aA" and b2 in ~c"dD" and b3 in ~c"dD", do: :add + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"aA" and b2 in ~c"dD" and b3 in ~c"dD", do: :add - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"aA" and b2 in ~c"dD" and b3 in ~c"mM" and b4 in ~c"iI" and b5 in ~c"nN", do: :admin + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"aA" and b2 in ~c"dD" and b3 in ~c"mM" and b4 in ~c"iI" and b5 in ~c"nN", do: :admin - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"aA" and b2 in ~c"fF" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"rR", do: :after + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"aA" and b2 in ~c"fF" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"rR", do: :after - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"aA" and b2 in ~c"lL" and b3 in ~c"wW" and b4 in ~c"aA" and b5 in ~c"yY" and b6 in ~c"sS", do: :always + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"aA" and b2 in ~c"lL" and b3 in ~c"wW" and b4 in ~c"aA" and b5 in ~c"yY" and b6 in ~c"sS", do: :always - def ident(:ident, [b1,b2,b3]) when b1 in ~c"aA" and b2 in ~c"sS" and b3 in ~c"cC", do: :asc + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"aA" and b2 in ~c"sS" and b3 in ~c"cC", do: :asc - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"aA" and b2 in ~c"sS" and b3 in ~c"sS" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"aA" and b2 in ~c"sS" and b3 in ~c"sS" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"tT" and b7 in ~c"iI" and b8 in ~c"oO" and b9 in ~c"nN", do: :assertion - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"aA" and b2 in ~c"sS" and b3 in ~c"sS" and b4 in ~c"iI" and b5 in ~c"gG" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"aA" and b2 in ~c"sS" and b3 in ~c"sS" and b4 in ~c"iI" and b5 in ~c"gG" and b6 in ~c"nN" and b7 in ~c"mM" and b8 in ~c"eE" and b9 in ~c"nN" and b10 in ~c"tT", do: :assignment - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"aA" and b2 in ~c"tT" and b3 in ~c"tT" and b4 in ~c"rR" and b5 in ~c"iI" and b6 in ~c"bB" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"aA" and b2 in ~c"tT" and b3 in ~c"tT" and b4 in ~c"rR" and b5 in ~c"iI" and b6 in ~c"bB" and b7 in ~c"uU" and b8 in ~c"tT" and b9 in ~c"eE", do: :attribute - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"aA" and b2 in ~c"tT" and b3 in ~c"tT" and b4 in ~c"rR" and b5 in ~c"iI" and b6 in ~c"bB" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"aA" and b2 in ~c"tT" and b3 in ~c"tT" and b4 in ~c"rR" and b5 in ~c"iI" and b6 in ~c"bB" and b7 in ~c"uU" and b8 in ~c"tT" and b9 in ~c"eE" and b10 in ~c"sS", do: :attributes - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"bB" and b2 in ~c"eE" and b3 in ~c"fF" and b4 in ~c"oO" and b5 in ~c"rR" and b6 in ~c"eE", do: :before + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"bB" and b2 in ~c"eE" and b3 in ~c"fF" and b4 in ~c"oO" and b5 in ~c"rR" and b6 in ~c"eE", do: :before - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"bB" and b2 in ~c"eE" and b3 in ~c"rR" and b4 in ~c"nN" and b5 in ~c"oO" and b6 in ~c"uU" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"bB" and b2 in ~c"eE" and b3 in ~c"rR" and b4 in ~c"nN" and b5 in ~c"oO" and b6 in ~c"uU" and b7 in ~c"lL" and b8 in ~c"lL" and b9 in ~c"iI", do: :bernoulli - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"bB" and b2 in ~c"rR" and b3 in ~c"eE" and b4 in ~c"aA" and b5 in ~c"dD" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"bB" and b2 in ~c"rR" and b3 in ~c"eE" and b4 in ~c"aA" and b5 in ~c"dD" and b6 in ~c"tT" and b7 in ~c"hH", do: :breadth - def ident(:ident, [b1]) when b1 in ~c"cC", do: :c + def ident(:ident, [[], b1]) when b1 in ~c"cC", do: :c - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"cC" and b2 in ~c"aA" and b3 in ~c"sS" and b4 in ~c"cC" and b5 in ~c"aA" and b6 in ~c"dD" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"cC" and b2 in ~c"aA" and b3 in ~c"sS" and b4 in ~c"cC" and b5 in ~c"aA" and b6 in ~c"dD" and b7 in ~c"eE", do: :cascade - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"cC" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"aA" and b5 in ~c"lL" and b6 in ~c"oO" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"cC" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"aA" and b5 in ~c"lL" and b6 in ~c"oO" and b7 in ~c"gG", do: :catalog - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12]) when b1 in ~c"cC" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"aA" and b5 in ~c"lL" and b6 in ~c"oO" and + def ident(:ident, [[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12]) when b1 in ~c"cC" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"aA" and b5 in ~c"lL" and b6 in ~c"oO" and b7 in ~c"gG" and b8 in ~c"_" and b9 in ~c"nN" and b10 in ~c"aA" and b11 in ~c"mM" and b12 in ~c"eE", do: :catalog_name - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"cC" and b2 in ~c"hH" and b3 in ~c"aA" and b4 in ~c"iI" and b5 in ~c"nN", do: :chain + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"cC" and b2 in ~c"hH" and b3 in ~c"aA" and b4 in ~c"iI" and b5 in ~c"nN", do: :chain - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"cC" and b2 in ~c"hH" and b3 in ~c"aA" and b4 in ~c"iI" and b5 in ~c"nN" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"cC" and b2 in ~c"hH" and b3 in ~c"aA" and b4 in ~c"iI" and b5 in ~c"nN" and b6 in ~c"iI" and b7 in ~c"nN" and b8 in ~c"gG", do: :chaining - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21]) when b1 in ~c"cC" and b2 in ~c"hH" and b3 in ~c"aA" and b4 in ~c"rR" and b5 in ~c"aA" and b6 in ~c"cC" and + def ident(:ident, [[[[[[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17], b18], b19], b20], b21]) when b1 in ~c"cC" and b2 in ~c"hH" and b3 in ~c"aA" and b4 in ~c"rR" and b5 in ~c"aA" and b6 in ~c"cC" and b7 in ~c"tT" and b8 in ~c"eE" and b9 in ~c"rR" and b10 in ~c"_" and b11 in ~c"sS" and b12 in ~c"eE" and b13 in ~c"tT" and b14 in ~c"_" and b15 in ~c"cC" and b16 in ~c"aA" and b17 in ~c"tT" and b18 in ~c"aA" and b19 in ~c"lL" and b20 in ~c"oO" and b21 in ~c"gG", do: :character_set_catalog - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18]) when b1 in ~c"cC" and b2 in ~c"hH" and b3 in ~c"aA" and b4 in ~c"rR" and b5 in ~c"aA" and b6 in ~c"cC" and + def ident(:ident, [[[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17], b18]) when b1 in ~c"cC" and b2 in ~c"hH" and b3 in ~c"aA" and b4 in ~c"rR" and b5 in ~c"aA" and b6 in ~c"cC" and b7 in ~c"tT" and b8 in ~c"eE" and b9 in ~c"rR" and b10 in ~c"_" and b11 in ~c"sS" and b12 in ~c"eE" and b13 in ~c"tT" and b14 in ~c"_" and b15 in ~c"nN" and b16 in ~c"aA" and b17 in ~c"mM" and b18 in ~c"eE", do: :character_set_name - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20]) when b1 in ~c"cC" and b2 in ~c"hH" and b3 in ~c"aA" and b4 in ~c"rR" and b5 in ~c"aA" and b6 in ~c"cC" and + def ident(:ident, [[[[[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17], b18], b19], b20]) when b1 in ~c"cC" and b2 in ~c"hH" and b3 in ~c"aA" and b4 in ~c"rR" and b5 in ~c"aA" and b6 in ~c"cC" and b7 in ~c"tT" and b8 in ~c"eE" and b9 in ~c"rR" and b10 in ~c"_" and b11 in ~c"sS" and b12 in ~c"eE" and b13 in ~c"tT" and b14 in ~c"_" and b15 in ~c"sS" and b16 in ~c"cC" and b17 in ~c"hH" and b18 in ~c"eE" and b19 in ~c"mM" and b20 in ~c"aA", do: :character_set_schema - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15]) when b1 in ~c"cC" and b2 in ~c"hH" and b3 in ~c"aA" and b4 in ~c"rR" and b5 in ~c"aA" and b6 in ~c"cC" and + def ident(:ident, [[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15]) when b1 in ~c"cC" and b2 in ~c"hH" and b3 in ~c"aA" and b4 in ~c"rR" and b5 in ~c"aA" and b6 in ~c"cC" and b7 in ~c"tT" and b8 in ~c"eE" and b9 in ~c"rR" and b10 in ~c"iI" and b11 in ~c"sS" and b12 in ~c"tT" and b13 in ~c"iI" and b14 in ~c"cC" and b15 in ~c"sS", do: :characteristics - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"cC" and b2 in ~c"hH" and b3 in ~c"aA" and b4 in ~c"rR" and b5 in ~c"aA" and b6 in ~c"cC" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"cC" and b2 in ~c"hH" and b3 in ~c"aA" and b4 in ~c"rR" and b5 in ~c"aA" and b6 in ~c"cC" and b7 in ~c"tT" and b8 in ~c"eE" and b9 in ~c"rR" and b10 in ~c"sS", do: :characters - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12]) when b1 in ~c"cC" and b2 in ~c"lL" and b3 in ~c"aA" and b4 in ~c"sS" and b5 in ~c"sS" and b6 in ~c"_" and + def ident(:ident, [[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12]) when b1 in ~c"cC" and b2 in ~c"lL" and b3 in ~c"aA" and b4 in ~c"sS" and b5 in ~c"sS" and b6 in ~c"_" and b7 in ~c"oO" and b8 in ~c"rR" and b9 in ~c"iI" and b10 in ~c"gG" and b11 in ~c"iI" and b12 in ~c"nN", do: :class_origin - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"bB" and b4 in ~c"oO" and b5 in ~c"lL", do: :cobol + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"bB" and b4 in ~c"oO" and b5 in ~c"lL", do: :cobol - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"aA" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"aA" and b6 in ~c"tT" and b7 in ~c"iI" and b8 in ~c"oO" and b9 in ~c"nN", do: :collation - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"aA" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"aA" and b6 in ~c"tT" and b7 in ~c"iI" and b8 in ~c"oO" and b9 in ~c"nN" and b10 in ~c"_" and b11 in ~c"cC" and b12 in ~c"aA" and b13 in ~c"tT" and b14 in ~c"aA" and b15 in ~c"lL" and b16 in ~c"oO" and b17 in ~c"gG", do: :collation_catalog - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"aA" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"aA" and b6 in ~c"tT" and b7 in ~c"iI" and b8 in ~c"oO" and b9 in ~c"nN" and b10 in ~c"_" and b11 in ~c"nN" and b12 in ~c"aA" and b13 in ~c"mM" and b14 in ~c"eE", do: :collation_name - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"aA" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"aA" and b6 in ~c"tT" and b7 in ~c"iI" and b8 in ~c"oO" and b9 in ~c"nN" and b10 in ~c"_" and b11 in ~c"sS" and b12 in ~c"cC" and b13 in ~c"hH" and b14 in ~c"eE" and b15 in ~c"mM" and b16 in ~c"aA", do: :collation_schema - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"uU" and b5 in ~c"mM" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"uU" and b5 in ~c"mM" and b6 in ~c"nN" and b7 in ~c"sS", do: :columns - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"uU" and b5 in ~c"mM" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"uU" and b5 in ~c"mM" and b6 in ~c"nN" and b7 in ~c"_" and b8 in ~c"nN" and b9 in ~c"aA" and b10 in ~c"mM" and b11 in ~c"eE", do: :column_name - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"mM" and b4 in ~c"mM" and b5 in ~c"aA" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"mM" and b4 in ~c"mM" and b5 in ~c"aA" and b6 in ~c"nN" and b7 in ~c"dD" and b8 in ~c"_" and b9 in ~c"fF" and b10 in ~c"uU" and b11 in ~c"nN" and b12 in ~c"cC" and b13 in ~c"tT" and b14 in ~c"iI" and b15 in ~c"oO" and b16 in ~c"nN", do: :command_function - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"mM" and b4 in ~c"mM" and b5 in ~c"aA" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17], b18], b19], b20], b21]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"mM" and b4 in ~c"mM" and b5 in ~c"aA" and b6 in ~c"nN" and b7 in ~c"dD" and b8 in ~c"_" and b9 in ~c"fF" and b10 in ~c"uU" and b11 in ~c"nN" and b12 in ~c"cC" and b13 in ~c"tT" and b14 in ~c"iI" and b15 in ~c"oO" and b16 in ~c"nN" and b17 in ~c"_" and b18 in ~c"cC" and b19 in ~c"oO" and b20 in ~c"dD" and b21 in ~c"eE", do: :command_function_code - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"mM" and b4 in ~c"mM" and b5 in ~c"iI" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"mM" and b4 in ~c"mM" and b5 in ~c"iI" and b6 in ~c"tT" and b7 in ~c"tT" and b8 in ~c"eE" and b9 in ~c"dD", do: :committed - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"dD" and b5 in ~c"iI" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"dD" and b5 in ~c"iI" and b6 in ~c"tT" and b7 in ~c"iI" and b8 in ~c"oO" and b9 in ~c"nN" and b10 in ~c"aA" and b11 in ~c"lL", do: :conditional - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"dD" and b5 in ~c"iI" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"dD" and b5 in ~c"iI" and b6 in ~c"tT" and b7 in ~c"iI" and b8 in ~c"oO" and b9 in ~c"nN" and b10 in ~c"_" and b11 in ~c"nN" and b12 in ~c"uU" and b13 in ~c"mM" and b14 in ~c"bB" and b15 in ~c"eE" and b16 in ~c"rR", do: :condition_number - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"nN" and b5 in ~c"eE" and b6 in ~c"cC" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"nN" and b5 in ~c"eE" and b6 in ~c"cC" and b7 in ~c"tT" and b8 in ~c"iI" and b9 in ~c"oO" and b10 in ~c"nN", do: :connection - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"nN" and b5 in ~c"eE" and b6 in ~c"cC" and + def ident(:ident, [[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"nN" and b5 in ~c"eE" and b6 in ~c"cC" and b7 in ~c"tT" and b8 in ~c"iI" and b9 in ~c"oO" and b10 in ~c"nN" and b11 in ~c"_" and b12 in ~c"nN" and b13 in ~c"aA" and b14 in ~c"mM" and b15 in ~c"eE", do: :connection_name - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"sS" and b5 in ~c"tT" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17], b18]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"sS" and b5 in ~c"tT" and b6 in ~c"rR" and b7 in ~c"aA" and b8 in ~c"iI" and b9 in ~c"nN" and b10 in ~c"tT" and b11 in ~c"_" and b12 in ~c"cC" and b13 in ~c"aA" and b14 in ~c"tT" and b15 in ~c"aA" and b16 in ~c"lL" and b17 in ~c"oO" and b18 in ~c"gG", do: :constraint_catalog - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"sS" and b5 in ~c"tT" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"sS" and b5 in ~c"tT" and b6 in ~c"rR" and b7 in ~c"aA" and b8 in ~c"iI" and b9 in ~c"nN" and b10 in ~c"tT" and b11 in ~c"_" and b12 in ~c"nN" and b13 in ~c"aA" and b14 in ~c"mM" and b15 in ~c"eE", do: :constraint_name - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"sS" and b5 in ~c"tT" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"sS" and b5 in ~c"tT" and b6 in ~c"rR" and b7 in ~c"aA" and b8 in ~c"iI" and b9 in ~c"nN" and b10 in ~c"tT" and b11 in ~c"_" and b12 in ~c"sS" and b13 in ~c"cC" and b14 in ~c"hH" and b15 in ~c"eE" and b16 in ~c"mM" and b17 in ~c"aA", do: :constraint_schema - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"sS" and b5 in ~c"tT" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"sS" and b5 in ~c"tT" and b6 in ~c"rR" and b7 in ~c"aA" and b8 in ~c"iI" and b9 in ~c"nN" and b10 in ~c"tT" and b11 in ~c"sS", do: :constraints - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"sS" and b5 in ~c"tT" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"sS" and b5 in ~c"tT" and b6 in ~c"rR" and b7 in ~c"uU" and b8 in ~c"cC" and b9 in ~c"tT" and b10 in ~c"oO" and b11 in ~c"rR", do: :constructor - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"nN" and b7 in ~c"uU" and b8 in ~c"eE", do: :continue - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"pP" and b4 in ~c"aA" and b5 in ~c"rR" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"cC" and b2 in ~c"oO" and b3 in ~c"pP" and b4 in ~c"aA" and b5 in ~c"rR" and b6 in ~c"tT" and b7 in ~c"iI" and b8 in ~c"tT" and b9 in ~c"iI" and b10 in ~c"oO" and b11 in ~c"nN", do: :copartition - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"sS" and b5 in ~c"oO" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"cC" and b2 in ~c"uU" and b3 in ~c"rR" and b4 in ~c"sS" and b5 in ~c"oO" and b6 in ~c"rR" and b7 in ~c"_" and b8 in ~c"nN" and b9 in ~c"aA" and b10 in ~c"mM" and b11 in ~c"eE", do: :cursor_name - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"dD" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"aA", do: :data + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"dD" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"aA", do: :data - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22]) when b1 in ~c"dD" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"tT" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17], b18], b19], b20], b21], b22]) when b1 in ~c"dD" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"tT" and b6 in ~c"iI" and b7 in ~c"mM" and b8 in ~c"eE" and b9 in ~c"_" and b10 in ~c"iI" and b11 in ~c"nN" and b12 in ~c"tT" and b13 in ~c"eE" and b14 in ~c"rR" and b15 in ~c"vV" and b16 in ~c"aA" and b17 in ~c"lL" and b18 in ~c"_" and b19 in ~c"cC" and b20 in ~c"oO" and b21 in ~c"dD" and b22 in ~c"eE", do: :datetime_interval_code - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26,b27]) when b1 in ~c"dD" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"tT" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[[[[[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17], b18], b19], b20], b21], b22], b23], b24], b25], b26], b27]) when b1 in ~c"dD" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"tT" and b6 in ~c"iI" and b7 in ~c"mM" and b8 in ~c"eE" and b9 in ~c"_" and b10 in ~c"iI" and b11 in ~c"nN" and b12 in ~c"tT" and b13 in ~c"eE" and b14 in ~c"rR" and b15 in ~c"vV" and b16 in ~c"aA" and b17 in ~c"lL" and b18 in ~c"_" and b19 in ~c"pP" and b20 in ~c"rR" and b21 in ~c"eE" and b22 in ~c"cC" and b23 in ~c"iI" and b24 in ~c"sS" and b25 in ~c"iI" and b26 in ~c"oO" and b27 in ~c"nN", do: :datetime_interval_precision - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"fF" and b4 in ~c"aA" and b5 in ~c"uU" and b6 in ~c"lL" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"fF" and b4 in ~c"aA" and b5 in ~c"uU" and b6 in ~c"lL" and b7 in ~c"tT" and b8 in ~c"sS", do: :defaults - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"fF" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"fF" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"rR" and b7 in ~c"aA" and b8 in ~c"bB" and b9 in ~c"lL" and b10 in ~c"eE", do: :deferrable - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"fF" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"fF" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"rR" and b7 in ~c"eE" and b8 in ~c"dD", do: :deferred - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"fF" and b4 in ~c"iI" and b5 in ~c"nN" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"fF" and b4 in ~c"iI" and b5 in ~c"nN" and b6 in ~c"eE" and b7 in ~c"dD", do: :defined - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"fF" and b4 in ~c"iI" and b5 in ~c"nN" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"fF" and b4 in ~c"iI" and b5 in ~c"nN" and b6 in ~c"eE" and b7 in ~c"rR", do: :definer - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"gG" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"eE", do: :degree + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"gG" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"eE", do: :degree - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"pP" and b4 in ~c"tT" and b5 in ~c"hH", do: :depth + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"pP" and b4 in ~c"tT" and b5 in ~c"hH", do: :depth - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"rR" and b4 in ~c"iI" and b5 in ~c"vV" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"rR" and b4 in ~c"iI" and b5 in ~c"vV" and b6 in ~c"eE" and b7 in ~c"dD", do: :derived - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"cC", do: :desc + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"cC", do: :desc - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"cC" and b5 in ~c"rR" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"dD" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"cC" and b5 in ~c"rR" and b6 in ~c"iI" and b7 in ~c"pP" and b8 in ~c"tT" and b9 in ~c"oO" and b10 in ~c"rR", do: :descriptor - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"dD" and b2 in ~c"iI" and b3 in ~c"aA" and b4 in ~c"gG" and b5 in ~c"nN" and b6 in ~c"oO" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"dD" and b2 in ~c"iI" and b3 in ~c"aA" and b4 in ~c"gG" and b5 in ~c"nN" and b6 in ~c"oO" and b7 in ~c"sS" and b8 in ~c"tT" and b9 in ~c"iI" and b10 in ~c"cC" and b11 in ~c"sS", do: :diagnostics - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"dD" and b2 in ~c"iI" and b3 in ~c"sS" and b4 in ~c"pP" and b5 in ~c"aA" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"dD" and b2 in ~c"iI" and b3 in ~c"sS" and b4 in ~c"pP" and b5 in ~c"aA" and b6 in ~c"tT" and b7 in ~c"cC" and b8 in ~c"hH", do: :dispatch - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"dD" and b2 in ~c"oO" and b3 in ~c"mM" and b4 in ~c"aA" and b5 in ~c"iI" and b6 in ~c"nN", do: :domain + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"dD" and b2 in ~c"oO" and b3 in ~c"mM" and b4 in ~c"aA" and b5 in ~c"iI" and b6 in ~c"nN", do: :domain - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16]) when b1 in ~c"dD" and b2 in ~c"yY" and b3 in ~c"nN" and b4 in ~c"aA" and b5 in ~c"mM" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16]) when b1 in ~c"dD" and b2 in ~c"yY" and b3 in ~c"nN" and b4 in ~c"aA" and b5 in ~c"mM" and b6 in ~c"iI" and b7 in ~c"cC" and b8 in ~c"_" and b9 in ~c"fF" and b10 in ~c"uU" and b11 in ~c"nN" and b12 in ~c"cC" and b13 in ~c"tT" and b14 in ~c"iI" and b15 in ~c"oO" and b16 in ~c"nN", do: :dynamic_function - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21]) when b1 in ~c"dD" and b2 in ~c"yY" and b3 in ~c"nN" and b4 in ~c"aA" and b5 in ~c"mM" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17], b18], b19], b20], b21]) when b1 in ~c"dD" and b2 in ~c"yY" and b3 in ~c"nN" and b4 in ~c"aA" and b5 in ~c"mM" and b6 in ~c"iI" and b7 in ~c"cC" and b8 in ~c"_" and b9 in ~c"fF" and b10 in ~c"uU" and b11 in ~c"nN" and b12 in ~c"cC" and b13 in ~c"tT" and b14 in ~c"iI" and b15 in ~c"oO" and b16 in ~c"nN" and b17 in ~c"_" and b18 in ~c"cC" and b19 in ~c"oO" and b20 in ~c"dD" and b21 in ~c"eE", do: :dynamic_function_code - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"eE" and b2 in ~c"nN" and b3 in ~c"cC" and b4 in ~c"oO" and b5 in ~c"dD" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"eE" and b2 in ~c"nN" and b3 in ~c"cC" and b4 in ~c"oO" and b5 in ~c"dD" and b6 in ~c"iI" and b7 in ~c"nN" and b8 in ~c"gG", do: :encoding - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"eE" and b2 in ~c"nN" and b3 in ~c"fF" and b4 in ~c"oO" and b5 in ~c"rR" and b6 in ~c"cC" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"eE" and b2 in ~c"nN" and b3 in ~c"fF" and b4 in ~c"oO" and b5 in ~c"rR" and b6 in ~c"cC" and b7 in ~c"eE" and b8 in ~c"dD", do: :enforced - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"eE" and b2 in ~c"rR" and b3 in ~c"rR" and b4 in ~c"oO" and b5 in ~c"rR", do: :error + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"eE" and b2 in ~c"rR" and b3 in ~c"rR" and b4 in ~c"oO" and b5 in ~c"rR", do: :error - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"eE" and b2 in ~c"xX" and b3 in ~c"cC" and b4 in ~c"lL" and b5 in ~c"uU" and b6 in ~c"dD" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"eE" and b2 in ~c"xX" and b3 in ~c"cC" and b4 in ~c"lL" and b5 in ~c"uU" and b6 in ~c"dD" and b7 in ~c"eE", do: :exclude - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"eE" and b2 in ~c"xX" and b3 in ~c"cC" and b4 in ~c"lL" and b5 in ~c"uU" and b6 in ~c"dD" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"eE" and b2 in ~c"xX" and b3 in ~c"cC" and b4 in ~c"lL" and b5 in ~c"uU" and b6 in ~c"dD" and b7 in ~c"iI" and b8 in ~c"nN" and b9 in ~c"gG", do: :excluding - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"eE" and b2 in ~c"xX" and b3 in ~c"pP" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"sS" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"eE" and b2 in ~c"xX" and b3 in ~c"pP" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"sS" and b7 in ~c"sS" and b8 in ~c"iI" and b9 in ~c"oO" and b10 in ~c"nN", do: :expression - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"fF" and b2 in ~c"iI" and b3 in ~c"nN" and b4 in ~c"aA" and b5 in ~c"lL", do: :final + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"fF" and b2 in ~c"iI" and b3 in ~c"nN" and b4 in ~c"aA" and b5 in ~c"lL", do: :final - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"fF" and b2 in ~c"iI" and b3 in ~c"nN" and b4 in ~c"iI" and b5 in ~c"sS" and b6 in ~c"hH", do: :finish + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"fF" and b2 in ~c"iI" and b3 in ~c"nN" and b4 in ~c"iI" and b5 in ~c"sS" and b6 in ~c"hH", do: :finish - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"fF" and b2 in ~c"iI" and b3 in ~c"rR" and b4 in ~c"sS" and b5 in ~c"tT", do: :first + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"fF" and b2 in ~c"iI" and b3 in ~c"rR" and b4 in ~c"sS" and b5 in ~c"tT", do: :first - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"fF" and b2 in ~c"lL" and b3 in ~c"aA" and b4 in ~c"gG", do: :flag + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"fF" and b2 in ~c"lL" and b3 in ~c"aA" and b4 in ~c"gG", do: :flag - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"fF" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"oO" and b6 in ~c"wW" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"fF" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"oO" and b6 in ~c"wW" and b7 in ~c"iI" and b8 in ~c"nN" and b9 in ~c"gG", do: :following - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"fF" and b2 in ~c"oO" and b3 in ~c"rR" and b4 in ~c"mM" and b5 in ~c"aA" and b6 in ~c"tT", do: :format + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"fF" and b2 in ~c"oO" and b3 in ~c"rR" and b4 in ~c"mM" and b5 in ~c"aA" and b6 in ~c"tT", do: :format - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"fF" and b2 in ~c"oO" and b3 in ~c"rR" and b4 in ~c"tT" and b5 in ~c"rR" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"fF" and b2 in ~c"oO" and b3 in ~c"rR" and b4 in ~c"tT" and b5 in ~c"rR" and b6 in ~c"aA" and b7 in ~c"nN", do: :fortran - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"fF" and b2 in ~c"oO" and b3 in ~c"uU" and b4 in ~c"nN" and b5 in ~c"dD", do: :found + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"fF" and b2 in ~c"oO" and b3 in ~c"uU" and b4 in ~c"nN" and b5 in ~c"dD", do: :found - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"fF" and b2 in ~c"uU" and b3 in ~c"lL" and b4 in ~c"fF" and b5 in ~c"iI" and b6 in ~c"lL" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"fF" and b2 in ~c"uU" and b3 in ~c"lL" and b4 in ~c"fF" and b5 in ~c"iI" and b6 in ~c"lL" and b7 in ~c"lL", do: :fulfill - def ident(:ident, [b1]) when b1 in ~c"gG", do: :g + def ident(:ident, [[], b1]) when b1 in ~c"gG", do: :g - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"gG" and b2 in ~c"eE" and b3 in ~c"nN" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"gG" and b2 in ~c"eE" and b3 in ~c"nN" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"aA" and b7 in ~c"lL", do: :general - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"gG" and b2 in ~c"eE" and b3 in ~c"nN" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"gG" and b2 in ~c"eE" and b3 in ~c"nN" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"aA" and b7 in ~c"tT" and b8 in ~c"eE" and b9 in ~c"dD", do: :generated - def ident(:ident, [b1,b2]) when b1 in ~c"gG" and b2 in ~c"oO", do: :go + def ident(:ident, [[[], b1], b2]) when b1 in ~c"gG" and b2 in ~c"oO", do: :go - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"gG" and b2 in ~c"oO" and b3 in ~c"tT" and b4 in ~c"oO", do: :goto + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"gG" and b2 in ~c"oO" and b3 in ~c"tT" and b4 in ~c"oO", do: :goto - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"gG" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"nN" and b5 in ~c"tT" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"gG" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"nN" and b5 in ~c"tT" and b6 in ~c"eE" and b7 in ~c"dD", do: :granted - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"hH" and b2 in ~c"iI" and b3 in ~c"eE" and b4 in ~c"rR" and b5 in ~c"aA" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"hH" and b2 in ~c"iI" and b3 in ~c"eE" and b4 in ~c"rR" and b5 in ~c"aA" and b6 in ~c"rR" and b7 in ~c"cC" and b8 in ~c"hH" and b9 in ~c"yY", do: :hierarchy - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"iI" and b2 in ~c"gG" and b3 in ~c"nN" and b4 in ~c"oO" and b5 in ~c"rR" and b6 in ~c"eE", do: :ignore + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"iI" and b2 in ~c"gG" and b3 in ~c"nN" and b4 in ~c"oO" and b5 in ~c"rR" and b6 in ~c"eE", do: :ignore - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"iI" and b2 in ~c"mM" and b3 in ~c"mM" and b4 in ~c"eE" and b5 in ~c"dD" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"iI" and b2 in ~c"mM" and b3 in ~c"mM" and b4 in ~c"eE" and b5 in ~c"dD" and b6 in ~c"iI" and b7 in ~c"aA" and b8 in ~c"tT" and b9 in ~c"eE", do: :immediate - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"iI" and b2 in ~c"mM" and b3 in ~c"mM" and b4 in ~c"eE" and b5 in ~c"dD" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"iI" and b2 in ~c"mM" and b3 in ~c"mM" and b4 in ~c"eE" and b5 in ~c"dD" and b6 in ~c"iI" and b7 in ~c"aA" and b8 in ~c"tT" and b9 in ~c"eE" and b10 in ~c"lL" and b11 in ~c"yY", do: :immediately - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14]) when b1 in ~c"iI" and b2 in ~c"mM" and b3 in ~c"pP" and b4 in ~c"lL" and b5 in ~c"eE" and b6 in ~c"mM" and + def ident(:ident, [[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14]) when b1 in ~c"iI" and b2 in ~c"mM" and b3 in ~c"pP" and b4 in ~c"lL" and b5 in ~c"eE" and b6 in ~c"mM" and b7 in ~c"eE" and b8 in ~c"nN" and b9 in ~c"tT" and b10 in ~c"aA" and b11 in ~c"tT" and b12 in ~c"iI" and b13 in ~c"oO" and b14 in ~c"nN", do: :implementation - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"cC" and b4 in ~c"lL" and b5 in ~c"uU" and b6 in ~c"dD" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"cC" and b4 in ~c"lL" and b5 in ~c"uU" and b6 in ~c"dD" and b7 in ~c"iI" and b8 in ~c"nN" and b9 in ~c"gG", do: :including - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"cC" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"mM" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"cC" and b4 in ~c"rR" and b5 in ~c"eE" and b6 in ~c"mM" and b7 in ~c"eE" and b8 in ~c"nN" and b9 in ~c"tT", do: :increment - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"iI" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"iI" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"aA" and b7 in ~c"lL" and b8 in ~c"lL" and b9 in ~c"yY", do: :initially - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"pP" and b4 in ~c"uU" and b5 in ~c"tT", do: :input + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"pP" and b4 in ~c"uU" and b5 in ~c"tT", do: :input - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"sS" and b4 in ~c"tT" and b5 in ~c"aA" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"sS" and b4 in ~c"tT" and b5 in ~c"aA" and b6 in ~c"nN" and b7 in ~c"cC" and b8 in ~c"eE", do: :instance - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"sS" and b4 in ~c"tT" and b5 in ~c"aA" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"sS" and b4 in ~c"tT" and b5 in ~c"aA" and b6 in ~c"nN" and b7 in ~c"tT" and b8 in ~c"iI" and b9 in ~c"aA" and b10 in ~c"bB" and b11 in ~c"lL" and b12 in ~c"eE", do: :instantiable - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"sS" and b4 in ~c"tT" and b5 in ~c"eE" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"sS" and b4 in ~c"tT" and b5 in ~c"eE" and b6 in ~c"aA" and b7 in ~c"dD", do: :instead - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"vV" and b4 in ~c"oO" and b5 in ~c"kK" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"iI" and b2 in ~c"nN" and b3 in ~c"vV" and b4 in ~c"oO" and b5 in ~c"kK" and b6 in ~c"eE" and b7 in ~c"rR", do: :invoker - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"iI" and b2 in ~c"sS" and b3 in ~c"oO" and b4 in ~c"lL" and b5 in ~c"aA" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"iI" and b2 in ~c"sS" and b3 in ~c"oO" and b4 in ~c"lL" and b5 in ~c"aA" and b6 in ~c"tT" and b7 in ~c"iI" and b8 in ~c"oO" and b9 in ~c"nN", do: :isolation - def ident(:ident, [b1]) when b1 in ~c"kK", do: :k + def ident(:ident, [[], b1]) when b1 in ~c"kK", do: :k - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"kK" and b2 in ~c"eE" and b3 in ~c"eE" and b4 in ~c"pP", do: :keep + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"kK" and b2 in ~c"eE" and b3 in ~c"eE" and b4 in ~c"pP", do: :keep - def ident(:ident, [b1,b2,b3]) when b1 in ~c"kK" and b2 in ~c"eE" and b3 in ~c"yY", do: :key + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"kK" and b2 in ~c"eE" and b3 in ~c"yY", do: :key - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"kK" and b2 in ~c"eE" and b3 in ~c"yY" and b4 in ~c"sS", do: :keys + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"kK" and b2 in ~c"eE" and b3 in ~c"yY" and b4 in ~c"sS", do: :keys - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"kK" and b2 in ~c"eE" and b3 in ~c"yY" and b4 in ~c"_" and b5 in ~c"mM" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"kK" and b2 in ~c"eE" and b3 in ~c"yY" and b4 in ~c"_" and b5 in ~c"mM" and b6 in ~c"eE" and b7 in ~c"mM" and b8 in ~c"bB" and b9 in ~c"eE" and b10 in ~c"rR", do: :key_member - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"kK" and b2 in ~c"eE" and b3 in ~c"yY" and b4 in ~c"_" and b5 in ~c"tT" and b6 in ~c"yY" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"kK" and b2 in ~c"eE" and b3 in ~c"yY" and b4 in ~c"_" and b5 in ~c"tT" and b6 in ~c"yY" and b7 in ~c"pP" and b8 in ~c"eE", do: :key_type - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"lL" and b2 in ~c"aA" and b3 in ~c"sS" and b4 in ~c"tT", do: :last + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"lL" and b2 in ~c"aA" and b3 in ~c"sS" and b4 in ~c"tT", do: :last - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"lL" and b2 in ~c"eE" and b3 in ~c"nN" and b4 in ~c"gG" and b5 in ~c"tT" and b6 in ~c"hH", do: :length + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"lL" and b2 in ~c"eE" and b3 in ~c"nN" and b4 in ~c"gG" and b5 in ~c"tT" and b6 in ~c"hH", do: :length - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"lL" and b2 in ~c"eE" and b3 in ~c"vV" and b4 in ~c"eE" and b5 in ~c"lL", do: :level + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"lL" and b2 in ~c"eE" and b3 in ~c"vV" and b4 in ~c"eE" and b5 in ~c"lL", do: :level - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"lL" and b2 in ~c"oO" and b3 in ~c"cC" and b4 in ~c"aA" and b5 in ~c"tT" and b6 in ~c"oO" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"lL" and b2 in ~c"oO" and b3 in ~c"cC" and b4 in ~c"aA" and b5 in ~c"tT" and b6 in ~c"oO" and b7 in ~c"rR", do: :locator - def ident(:ident, [b1]) when b1 in ~c"mM", do: :m + def ident(:ident, [[], b1]) when b1 in ~c"mM", do: :m - def ident(:ident, [b1,b2,b3]) when b1 in ~c"mM" and b2 in ~c"aA" and b3 in ~c"pP", do: :map + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"mM" and b2 in ~c"aA" and b3 in ~c"pP", do: :map - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"mM" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"cC" and b5 in ~c"hH" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"mM" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"cC" and b5 in ~c"hH" and b6 in ~c"eE" and b7 in ~c"dD", do: :matched - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"mM" and b2 in ~c"aA" and b3 in ~c"xX" and b4 in ~c"vV" and b5 in ~c"aA" and b6 in ~c"lL" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"mM" and b2 in ~c"aA" and b3 in ~c"xX" and b4 in ~c"vV" and b5 in ~c"aA" and b6 in ~c"lL" and b7 in ~c"uU" and b8 in ~c"eE", do: :maxvalue - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"mM" and b2 in ~c"eE" and b3 in ~c"aA" and b4 in ~c"sS" and b5 in ~c"uU" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"mM" and b2 in ~c"eE" and b3 in ~c"aA" and b4 in ~c"sS" and b5 in ~c"uU" and b6 in ~c"rR" and b7 in ~c"eE" and b8 in ~c"sS", do: :measures - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14]) when b1 in ~c"mM" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"sS" and b5 in ~c"aA" and b6 in ~c"gG" and + def ident(:ident, [[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14]) when b1 in ~c"mM" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"sS" and b5 in ~c"aA" and b6 in ~c"gG" and b7 in ~c"eE" and b8 in ~c"_" and b9 in ~c"lL" and b10 in ~c"eE" and b11 in ~c"nN" and b12 in ~c"gG" and b13 in ~c"tT" and b14 in ~c"hH", do: :message_length - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20]) when b1 in ~c"mM" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"sS" and b5 in ~c"aA" and b6 in ~c"gG" and + def ident(:ident, [[[[[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17], b18], b19], b20]) when b1 in ~c"mM" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"sS" and b5 in ~c"aA" and b6 in ~c"gG" and b7 in ~c"eE" and b8 in ~c"_" and b9 in ~c"oO" and b10 in ~c"cC" and b11 in ~c"tT" and b12 in ~c"eE" and b13 in ~c"tT" and b14 in ~c"_" and b15 in ~c"lL" and b16 in ~c"eE" and b17 in ~c"nN" and b18 in ~c"gG" and b19 in ~c"tT" and b20 in ~c"hH", do: :message_octet_length - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12]) when b1 in ~c"mM" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"sS" and b5 in ~c"aA" and b6 in ~c"gG" and + def ident(:ident, [[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12]) when b1 in ~c"mM" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"sS" and b5 in ~c"aA" and b6 in ~c"gG" and b7 in ~c"eE" and b8 in ~c"_" and b9 in ~c"tT" and b10 in ~c"eE" and b11 in ~c"xX" and b12 in ~c"tT", do: :message_text - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"mM" and b2 in ~c"iI" and b3 in ~c"nN" and b4 in ~c"vV" and b5 in ~c"aA" and b6 in ~c"lL" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"mM" and b2 in ~c"iI" and b3 in ~c"nN" and b4 in ~c"vV" and b5 in ~c"aA" and b6 in ~c"lL" and b7 in ~c"uU" and b8 in ~c"eE", do: :minvalue - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"mM" and b2 in ~c"oO" and b3 in ~c"rR" and b4 in ~c"eE", do: :more + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"mM" and b2 in ~c"oO" and b3 in ~c"rR" and b4 in ~c"eE", do: :more - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"mM" and b2 in ~c"uU" and b3 in ~c"mM" and b4 in ~c"pP" and b5 in ~c"sS", do: :mumps + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"mM" and b2 in ~c"uU" and b3 in ~c"mM" and b4 in ~c"pP" and b5 in ~c"sS", do: :mumps - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"nN" and b2 in ~c"aA" and b3 in ~c"mM" and b4 in ~c"eE", do: :name + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"nN" and b2 in ~c"aA" and b3 in ~c"mM" and b4 in ~c"eE", do: :name - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"nN" and b2 in ~c"aA" and b3 in ~c"mM" and b4 in ~c"eE" and b5 in ~c"sS", do: :names + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"nN" and b2 in ~c"aA" and b3 in ~c"mM" and b4 in ~c"eE" and b5 in ~c"sS", do: :names - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"nN" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"tT" and b5 in ~c"eE" and b6 in ~c"dD", do: :nested + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"nN" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"tT" and b5 in ~c"eE" and b6 in ~c"dD", do: :nested - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"nN" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"nN" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"nN" and b7 in ~c"gG", do: :nesting - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"nN" and b2 in ~c"eE" and b3 in ~c"xX" and b4 in ~c"tT", do: :next + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"nN" and b2 in ~c"eE" and b3 in ~c"xX" and b4 in ~c"tT", do: :next - def ident(:ident, [b1,b2,b3]) when b1 in ~c"nN" and b2 in ~c"fF" and b3 in ~c"cC", do: :nfc + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"nN" and b2 in ~c"fF" and b3 in ~c"cC", do: :nfc - def ident(:ident, [b1,b2,b3]) when b1 in ~c"nN" and b2 in ~c"fF" and b3 in ~c"dD", do: :nfd + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"nN" and b2 in ~c"fF" and b3 in ~c"dD", do: :nfd - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"nN" and b2 in ~c"fF" and b3 in ~c"kK" and b4 in ~c"cC", do: :nfkc + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"nN" and b2 in ~c"fF" and b3 in ~c"kK" and b4 in ~c"cC", do: :nfkc - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"nN" and b2 in ~c"fF" and b3 in ~c"kK" and b4 in ~c"dD", do: :nfkd + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"nN" and b2 in ~c"fF" and b3 in ~c"kK" and b4 in ~c"dD", do: :nfkd - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"nN" and b2 in ~c"oO" and b3 in ~c"rR" and b4 in ~c"mM" and b5 in ~c"aA" and b6 in ~c"lL" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"nN" and b2 in ~c"oO" and b3 in ~c"rR" and b4 in ~c"mM" and b5 in ~c"aA" and b6 in ~c"lL" and b7 in ~c"iI" and b8 in ~c"zZ" and b9 in ~c"eE" and b10 in ~c"dD", do: :normalized - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13]) when b1 in ~c"nN" and b2 in ~c"uU" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"_" and b6 in ~c"oO" and + def ident(:ident, [[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13]) when b1 in ~c"nN" and b2 in ~c"uU" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"_" and b6 in ~c"oO" and b7 in ~c"rR" and b8 in ~c"dD" and b9 in ~c"eE" and b10 in ~c"rR" and b11 in ~c"iI" and b12 in ~c"nN" and b13 in ~c"gG", do: :null_ordering - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"nN" and b2 in ~c"uU" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"aA" and b6 in ~c"bB" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"nN" and b2 in ~c"uU" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"aA" and b6 in ~c"bB" and b7 in ~c"lL" and b8 in ~c"eE", do: :nullable - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"nN" and b2 in ~c"uU" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"sS", do: :nulls + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"nN" and b2 in ~c"uU" and b3 in ~c"lL" and b4 in ~c"lL" and b5 in ~c"sS", do: :nulls - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"nN" and b2 in ~c"uU" and b3 in ~c"mM" and b4 in ~c"bB" and b5 in ~c"eE" and b6 in ~c"rR", do: :number + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"nN" and b2 in ~c"uU" and b3 in ~c"mM" and b4 in ~c"bB" and b5 in ~c"eE" and b6 in ~c"rR", do: :number - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"oO" and b2 in ~c"bB" and b3 in ~c"jJ" and b4 in ~c"eE" and b5 in ~c"cC" and b6 in ~c"tT", do: :object + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"oO" and b2 in ~c"bB" and b3 in ~c"jJ" and b4 in ~c"eE" and b5 in ~c"cC" and b6 in ~c"tT", do: :object - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"oO" and b2 in ~c"cC" and b3 in ~c"cC" and b4 in ~c"uU" and b5 in ~c"rR" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"oO" and b2 in ~c"cC" and b3 in ~c"cC" and b4 in ~c"uU" and b5 in ~c"rR" and b6 in ~c"rR" and b7 in ~c"eE" and b8 in ~c"nN" and b9 in ~c"cC" and b10 in ~c"eE", do: :occurrence - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"oO" and b2 in ~c"cC" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"tT" and b6 in ~c"sS", do: :octets + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"oO" and b2 in ~c"cC" and b3 in ~c"tT" and b4 in ~c"eE" and b5 in ~c"tT" and b6 in ~c"sS", do: :octets - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"oO" and b2 in ~c"pP" and b3 in ~c"tT" and b4 in ~c"iI" and b5 in ~c"oO" and b6 in ~c"nN", do: :option + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"oO" and b2 in ~c"pP" and b3 in ~c"tT" and b4 in ~c"iI" and b5 in ~c"oO" and b6 in ~c"nN", do: :option - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"oO" and b2 in ~c"pP" and b3 in ~c"tT" and b4 in ~c"iI" and b5 in ~c"oO" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"oO" and b2 in ~c"pP" and b3 in ~c"tT" and b4 in ~c"iI" and b5 in ~c"oO" and b6 in ~c"nN" and b7 in ~c"sS", do: :options - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"oO" and b2 in ~c"rR" and b3 in ~c"dD" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"oO" and b2 in ~c"rR" and b3 in ~c"dD" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"iI" and b7 in ~c"nN" and b8 in ~c"gG", do: :ordering - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"oO" and b2 in ~c"rR" and b3 in ~c"dD" and b4 in ~c"iI" and b5 in ~c"nN" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"oO" and b2 in ~c"rR" and b3 in ~c"dD" and b4 in ~c"iI" and b5 in ~c"nN" and b6 in ~c"aA" and b7 in ~c"lL" and b8 in ~c"iI" and b9 in ~c"tT" and b10 in ~c"yY", do: :ordinality - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"oO" and b2 in ~c"tT" and b3 in ~c"hH" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"sS", do: :others + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"oO" and b2 in ~c"tT" and b3 in ~c"hH" and b4 in ~c"eE" and b5 in ~c"rR" and b6 in ~c"sS", do: :others - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"oO" and b2 in ~c"uU" and b3 in ~c"tT" and b4 in ~c"pP" and b5 in ~c"uU" and b6 in ~c"tT", do: :output + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"oO" and b2 in ~c"uU" and b3 in ~c"tT" and b4 in ~c"pP" and b5 in ~c"uU" and b6 in ~c"tT", do: :output - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"oO" and b2 in ~c"vV" and b3 in ~c"eE" and b4 in ~c"rR" and b5 in ~c"fF" and b6 in ~c"lL" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"oO" and b2 in ~c"vV" and b3 in ~c"eE" and b4 in ~c"rR" and b5 in ~c"fF" and b6 in ~c"lL" and b7 in ~c"oO" and b8 in ~c"wW", do: :overflow - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"oO" and b2 in ~c"vV" and b3 in ~c"eE" and b4 in ~c"rR" and b5 in ~c"rR" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"oO" and b2 in ~c"vV" and b3 in ~c"eE" and b4 in ~c"rR" and b5 in ~c"rR" and b6 in ~c"iI" and b7 in ~c"dD" and b8 in ~c"iI" and b9 in ~c"nN" and b10 in ~c"gG", do: :overriding - def ident(:ident, [b1]) when b1 in ~c"pP", do: :p + def ident(:ident, [[], b1]) when b1 in ~c"pP", do: :p - def ident(:ident, [b1,b2,b3]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"dD", do: :pad + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"dD", do: :pad - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"aA" and b5 in ~c"mM" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"aA" and b5 in ~c"mM" and b6 in ~c"eE" and b7 in ~c"tT" and b8 in ~c"eE" and b9 in ~c"rR" and b10 in ~c"_" and b11 in ~c"mM" and b12 in ~c"oO" and b13 in ~c"dD" and b14 in ~c"eE", do: :parameter_mode - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"aA" and b5 in ~c"mM" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"aA" and b5 in ~c"mM" and b6 in ~c"eE" and b7 in ~c"tT" and b8 in ~c"eE" and b9 in ~c"rR" and b10 in ~c"_" and b11 in ~c"nN" and b12 in ~c"aA" and b13 in ~c"mM" and b14 in ~c"eE", do: :parameter_name - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"aA" and b5 in ~c"mM" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[[[[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17], b18], b19], b20], b21], b22], b23], b24], b25], b26]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"aA" and b5 in ~c"mM" and b6 in ~c"eE" and b7 in ~c"tT" and b8 in ~c"eE" and b9 in ~c"rR" and b10 in ~c"_" and b11 in ~c"oO" and b12 in ~c"rR" and b13 in ~c"dD" and b14 in ~c"iI" and b15 in ~c"nN" and b16 in ~c"aA" and b17 in ~c"lL" and b18 in ~c"_" and b19 in ~c"pP" and b20 in ~c"oO" and b21 in ~c"sS" and b22 in ~c"iI" and b23 in ~c"tT" and b24 in ~c"iI" and b25 in ~c"oO" and b26 in ~c"nN", do: :parameter_ordinal_position - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"aA" and b5 in ~c"mM" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[[[[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17], b18], b19], b20], b21], b22], b23], b24], b25], b26]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"aA" and b5 in ~c"mM" and b6 in ~c"eE" and b7 in ~c"tT" and b8 in ~c"eE" and b9 in ~c"rR" and b10 in ~c"_" and b11 in ~c"sS" and b12 in ~c"pP" and b13 in ~c"eE" and b14 in ~c"cC" and b15 in ~c"iI" and b16 in ~c"fF" and b17 in ~c"iI" and b18 in ~c"cC" and b19 in ~c"_" and b20 in ~c"cC" and b21 in ~c"aA" and b22 in ~c"tT" and b23 in ~c"aA" and b24 in ~c"lL" and b25 in ~c"oO" and b26 in ~c"gG", do: :parameter_specific_catalog - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"aA" and b5 in ~c"mM" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17], b18], b19], b20], b21], b22], b23]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"aA" and b5 in ~c"mM" and b6 in ~c"eE" and b7 in ~c"tT" and b8 in ~c"eE" and b9 in ~c"rR" and b10 in ~c"_" and b11 in ~c"sS" and b12 in ~c"pP" and b13 in ~c"eE" and b14 in ~c"cC" and b15 in ~c"iI" and b16 in ~c"fF" and b17 in ~c"iI" and b18 in ~c"cC" and b19 in ~c"_" and b20 in ~c"nN" and b21 in ~c"aA" and b22 in ~c"mM" and b23 in ~c"eE", do: :parameter_specific_name - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"aA" and b5 in ~c"mM" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[[[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17], b18], b19], b20], b21], b22], b23], b24], b25]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"aA" and b5 in ~c"mM" and b6 in ~c"eE" and b7 in ~c"tT" and b8 in ~c"eE" and b9 in ~c"rR" and b10 in ~c"_" and b11 in ~c"sS" and b12 in ~c"pP" and b13 in ~c"eE" and b14 in ~c"cC" and b15 in ~c"iI" and b16 in ~c"fF" and b17 in ~c"iI" and b18 in ~c"cC" and b19 in ~c"_" and b20 in ~c"sS" and b21 in ~c"cC" and b22 in ~c"hH" and b23 in ~c"eE" and b24 in ~c"mM" and b25 in ~c"aA", do: :parameter_specific_schema - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"rR" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"aA" and b7 in ~c"lL", do: :partial - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"sS" and b4 in ~c"cC" and b5 in ~c"aA" and b6 in ~c"lL", do: :pascal + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"sS" and b4 in ~c"cC" and b5 in ~c"aA" and b6 in ~c"lL", do: :pascal - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"sS" and b4 in ~c"sS", do: :pass + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"sS" and b4 in ~c"sS", do: :pass - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"sS" and b4 in ~c"sS" and b5 in ~c"iI" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"sS" and b4 in ~c"sS" and b5 in ~c"iI" and b6 in ~c"nN" and b7 in ~c"gG", do: :passing - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"sS" and b4 in ~c"tT", do: :past + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"sS" and b4 in ~c"tT", do: :past - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"hH", do: :path + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"pP" and b2 in ~c"aA" and b3 in ~c"tT" and b4 in ~c"hH", do: :path - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"pP" and b2 in ~c"eE" and b3 in ~c"rR" and b4 in ~c"mM" and b5 in ~c"uU" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"pP" and b2 in ~c"eE" and b3 in ~c"rR" and b4 in ~c"mM" and b5 in ~c"uU" and b6 in ~c"tT" and b7 in ~c"eE", do: :permute - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"pP" and b2 in ~c"iI" and b3 in ~c"pP" and b4 in ~c"eE", do: :pipe + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"pP" and b2 in ~c"iI" and b3 in ~c"pP" and b4 in ~c"eE", do: :pipe - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"pP" and b2 in ~c"lL" and b3 in ~c"aA" and b4 in ~c"cC" and b5 in ~c"iI" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"pP" and b2 in ~c"lL" and b3 in ~c"aA" and b4 in ~c"cC" and b5 in ~c"iI" and b6 in ~c"nN" and b7 in ~c"gG", do: :placing - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"pP" and b2 in ~c"lL" and b3 in ~c"aA" and b4 in ~c"nN", do: :plan + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"pP" and b2 in ~c"lL" and b3 in ~c"aA" and b4 in ~c"nN", do: :plan - def ident(:ident, [b1,b2,b3]) when b1 in ~c"pP" and b2 in ~c"lL" and b3 in ~c"iI", do: :pli + def ident(:ident, [[[[], b1], b2], b3]) when b1 in ~c"pP" and b2 in ~c"lL" and b3 in ~c"iI", do: :pli - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"pP" and b2 in ~c"rR" and b3 in ~c"eE" and b4 in ~c"cC" and b5 in ~c"eE" and b6 in ~c"dD" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"pP" and b2 in ~c"rR" and b3 in ~c"eE" and b4 in ~c"cC" and b5 in ~c"eE" and b6 in ~c"dD" and b7 in ~c"iI" and b8 in ~c"nN" and b9 in ~c"gG", do: :preceding - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"pP" and b2 in ~c"rR" and b3 in ~c"eE" and b4 in ~c"sS" and b5 in ~c"eE" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"pP" and b2 in ~c"rR" and b3 in ~c"eE" and b4 in ~c"sS" and b5 in ~c"eE" and b6 in ~c"rR" and b7 in ~c"vV" and b8 in ~c"eE", do: :preserve - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"pP" and b2 in ~c"rR" and b3 in ~c"eE" and b4 in ~c"vV", do: :prev + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"pP" and b2 in ~c"rR" and b3 in ~c"eE" and b4 in ~c"vV", do: :prev - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"pP" and b2 in ~c"rR" and b3 in ~c"iI" and b4 in ~c"oO" and b5 in ~c"rR", do: :prior + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"pP" and b2 in ~c"rR" and b3 in ~c"iI" and b4 in ~c"oO" and b5 in ~c"rR", do: :prior - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"pP" and b2 in ~c"rR" and b3 in ~c"iI" and b4 in ~c"vV" and b5 in ~c"aA" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"pP" and b2 in ~c"rR" and b3 in ~c"iI" and b4 in ~c"vV" and b5 in ~c"aA" and b6 in ~c"tT" and b7 in ~c"eE", do: :private - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"pP" and b2 in ~c"rR" and b3 in ~c"iI" and b4 in ~c"vV" and b5 in ~c"iI" and b6 in ~c"lL" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"pP" and b2 in ~c"rR" and b3 in ~c"iI" and b4 in ~c"vV" and b5 in ~c"iI" and b6 in ~c"lL" and b7 in ~c"eE" and b8 in ~c"gG" and b9 in ~c"eE" and b10 in ~c"sS", do: :privileges - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"pP" and b2 in ~c"rR" and b3 in ~c"uU" and b4 in ~c"nN" and b5 in ~c"eE", do: :prune + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"pP" and b2 in ~c"rR" and b3 in ~c"uU" and b4 in ~c"nN" and b5 in ~c"eE", do: :prune - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"pP" and b2 in ~c"uU" and b3 in ~c"bB" and b4 in ~c"lL" and b5 in ~c"iI" and b6 in ~c"cC", do: :public + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"pP" and b2 in ~c"uU" and b3 in ~c"bB" and b4 in ~c"lL" and b5 in ~c"iI" and b6 in ~c"cC", do: :public - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"qQ" and b2 in ~c"uU" and b3 in ~c"oO" and b4 in ~c"tT" and b5 in ~c"eE" and b6 in ~c"sS", do: :quotes + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"qQ" and b2 in ~c"uU" and b3 in ~c"oO" and b4 in ~c"tT" and b5 in ~c"eE" and b6 in ~c"sS", do: :quotes - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"aA" and b4 in ~c"dD", do: :read + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"aA" and b4 in ~c"dD", do: :read - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"lL" and b4 in ~c"aA" and b5 in ~c"tT" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"lL" and b4 in ~c"aA" and b5 in ~c"tT" and b6 in ~c"iI" and b7 in ~c"vV" and b8 in ~c"eE", do: :relative - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"pP" and b4 in ~c"eE" and b5 in ~c"aA" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"pP" and b4 in ~c"eE" and b5 in ~c"aA" and b6 in ~c"tT" and b7 in ~c"aA" and b8 in ~c"bB" and b9 in ~c"lL" and b10 in ~c"eE", do: :repeatable - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"pP" and b5 in ~c"eE" and b6 in ~c"cC" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"pP" and b5 in ~c"eE" and b6 in ~c"cC" and b7 in ~c"tT", do: :respect - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"tT" and b5 in ~c"aA" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"tT" and b5 in ~c"aA" and b6 in ~c"rR" and b7 in ~c"tT", do: :restart - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"tT" and b5 in ~c"rR" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"tT" and b5 in ~c"rR" and b6 in ~c"iI" and b7 in ~c"cC" and b8 in ~c"tT", do: :restrict - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"tT" and b4 in ~c"uU" and b5 in ~c"rR" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17], b18], b19], b20]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"tT" and b4 in ~c"uU" and b5 in ~c"rR" and b6 in ~c"nN" and b7 in ~c"eE" and b8 in ~c"dD" and b9 in ~c"_" and b10 in ~c"cC" and b11 in ~c"aA" and b12 in ~c"rR" and b13 in ~c"dD" and b14 in ~c"iI" and b15 in ~c"nN" and b16 in ~c"aA" and b17 in ~c"lL" and b18 in ~c"iI" and b19 in ~c"tT" and b20 in ~c"yY", do: :returned_cardinality - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"tT" and b4 in ~c"uU" and b5 in ~c"rR" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"tT" and b4 in ~c"uU" and b5 in ~c"rR" and b6 in ~c"nN" and b7 in ~c"eE" and b8 in ~c"dD" and b9 in ~c"_" and b10 in ~c"lL" and b11 in ~c"eE" and b12 in ~c"nN" and b13 in ~c"gG" and b14 in ~c"tT" and b15 in ~c"hH", do: :returned_length - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"tT" and b4 in ~c"uU" and b5 in ~c"rR" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17], b18], b19], b20], b21]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"tT" and b4 in ~c"uU" and b5 in ~c"rR" and b6 in ~c"nN" and b7 in ~c"eE" and b8 in ~c"dD" and b9 in ~c"_" and b10 in ~c"oO" and b11 in ~c"cC" and b12 in ~c"tT" and b13 in ~c"eE" and b14 in ~c"tT" and b15 in ~c"_" and b16 in ~c"lL" and b17 in ~c"eE" and b18 in ~c"nN" and b19 in ~c"gG" and b20 in ~c"tT" and b21 in ~c"hH", do: :returned_octet_length - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"tT" and b4 in ~c"uU" and b5 in ~c"rR" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"tT" and b4 in ~c"uU" and b5 in ~c"rR" and b6 in ~c"nN" and b7 in ~c"eE" and b8 in ~c"dD" and b9 in ~c"_" and b10 in ~c"sS" and b11 in ~c"qQ" and b12 in ~c"lL" and b13 in ~c"sS" and b14 in ~c"tT" and b15 in ~c"aA" and b16 in ~c"tT" and b17 in ~c"eE", do: :returned_sqlstate - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"tT" and b4 in ~c"uU" and b5 in ~c"rR" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"rR" and b2 in ~c"eE" and b3 in ~c"tT" and b4 in ~c"uU" and b5 in ~c"rR" and b6 in ~c"nN" and b7 in ~c"iI" and b8 in ~c"nN" and b9 in ~c"gG", do: :returning - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"rR" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"eE", do: :role + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"rR" and b2 in ~c"oO" and b3 in ~c"lL" and b4 in ~c"eE", do: :role - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"rR" and b2 in ~c"oO" and b3 in ~c"uU" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"rR" and b2 in ~c"oO" and b3 in ~c"uU" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"nN" and b7 in ~c"eE", do: :routine - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15]) when b1 in ~c"rR" and b2 in ~c"oO" and b3 in ~c"uU" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15]) when b1 in ~c"rR" and b2 in ~c"oO" and b3 in ~c"uU" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"nN" and b7 in ~c"eE" and b8 in ~c"_" and b9 in ~c"cC" and b10 in ~c"aA" and b11 in ~c"tT" and b12 in ~c"aA" and b13 in ~c"lL" and b14 in ~c"oO" and b15 in ~c"gG", do: :routine_catalog - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12]) when b1 in ~c"rR" and b2 in ~c"oO" and b3 in ~c"uU" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12]) when b1 in ~c"rR" and b2 in ~c"oO" and b3 in ~c"uU" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"nN" and b7 in ~c"eE" and b8 in ~c"_" and b9 in ~c"nN" and b10 in ~c"aA" and b11 in ~c"mM" and b12 in ~c"eE", do: :routine_name - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14]) when b1 in ~c"rR" and b2 in ~c"oO" and b3 in ~c"uU" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14]) when b1 in ~c"rR" and b2 in ~c"oO" and b3 in ~c"uU" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"nN" and b7 in ~c"eE" and b8 in ~c"_" and b9 in ~c"sS" and b10 in ~c"cC" and b11 in ~c"hH" and b12 in ~c"eE" and b13 in ~c"mM" and b14 in ~c"aA", do: :routine_schema - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"rR" and b2 in ~c"oO" and b3 in ~c"wW" and b4 in ~c"_" and b5 in ~c"cC" and b6 in ~c"oO" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"rR" and b2 in ~c"oO" and b3 in ~c"wW" and b4 in ~c"_" and b5 in ~c"cC" and b6 in ~c"oO" and b7 in ~c"uU" and b8 in ~c"nN" and b9 in ~c"tT", do: :row_count - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"sS" and b2 in ~c"cC" and b3 in ~c"aA" and b4 in ~c"lL" and b5 in ~c"aA" and b6 in ~c"rR", do: :scalar + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"sS" and b2 in ~c"cC" and b3 in ~c"aA" and b4 in ~c"lL" and b5 in ~c"aA" and b6 in ~c"rR", do: :scalar - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"sS" and b2 in ~c"cC" and b3 in ~c"aA" and b4 in ~c"lL" and b5 in ~c"eE", do: :scale + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"sS" and b2 in ~c"cC" and b3 in ~c"aA" and b4 in ~c"lL" and b5 in ~c"eE", do: :scale - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"sS" and b2 in ~c"cC" and b3 in ~c"hH" and b4 in ~c"eE" and b5 in ~c"mM" and b6 in ~c"aA", do: :schema + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"sS" and b2 in ~c"cC" and b3 in ~c"hH" and b4 in ~c"eE" and b5 in ~c"mM" and b6 in ~c"aA", do: :schema - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"sS" and b2 in ~c"cC" and b3 in ~c"hH" and b4 in ~c"eE" and b5 in ~c"mM" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"sS" and b2 in ~c"cC" and b3 in ~c"hH" and b4 in ~c"eE" and b5 in ~c"mM" and b6 in ~c"aA" and b7 in ~c"_" and b8 in ~c"nN" and b9 in ~c"aA" and b10 in ~c"mM" and b11 in ~c"eE", do: :schema_name - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13]) when b1 in ~c"sS" and b2 in ~c"cC" and b3 in ~c"oO" and b4 in ~c"pP" and b5 in ~c"eE" and b6 in ~c"_" and + def ident(:ident, [[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13]) when b1 in ~c"sS" and b2 in ~c"cC" and b3 in ~c"oO" and b4 in ~c"pP" and b5 in ~c"eE" and b6 in ~c"_" and b7 in ~c"cC" and b8 in ~c"aA" and b9 in ~c"tT" and b10 in ~c"aA" and b11 in ~c"lL" and b12 in ~c"oO" and b13 in ~c"gG", do: :scope_catalog - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"sS" and b2 in ~c"cC" and b3 in ~c"oO" and b4 in ~c"pP" and b5 in ~c"eE" and b6 in ~c"_" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"sS" and b2 in ~c"cC" and b3 in ~c"oO" and b4 in ~c"pP" and b5 in ~c"eE" and b6 in ~c"_" and b7 in ~c"nN" and b8 in ~c"aA" and b9 in ~c"mM" and b10 in ~c"eE", do: :scope_name - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12]) when b1 in ~c"sS" and b2 in ~c"cC" and b3 in ~c"oO" and b4 in ~c"pP" and b5 in ~c"eE" and b6 in ~c"_" and + def ident(:ident, [[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12]) when b1 in ~c"sS" and b2 in ~c"cC" and b3 in ~c"oO" and b4 in ~c"pP" and b5 in ~c"eE" and b6 in ~c"_" and b7 in ~c"sS" and b8 in ~c"cC" and b9 in ~c"hH" and b10 in ~c"eE" and b11 in ~c"mM" and b12 in ~c"aA", do: :scope_schema - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"cC" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"oO" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"cC" and b4 in ~c"tT" and b5 in ~c"iI" and b6 in ~c"oO" and b7 in ~c"nN", do: :section - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"cC" and b4 in ~c"uU" and b5 in ~c"rR" and b6 in ~c"iI" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"cC" and b4 in ~c"uU" and b5 in ~c"rR" and b6 in ~c"iI" and b7 in ~c"tT" and b8 in ~c"yY", do: :security - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"lL" and b4 in ~c"fF", do: :self + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"lL" and b4 in ~c"fF", do: :self - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"mM" and b4 in ~c"aA" and b5 in ~c"nN" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"mM" and b4 in ~c"aA" and b5 in ~c"nN" and b6 in ~c"tT" and b7 in ~c"iI" and b8 in ~c"cC" and b9 in ~c"sS", do: :semantics - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"qQ" and b4 in ~c"uU" and b5 in ~c"eE" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"qQ" and b4 in ~c"uU" and b5 in ~c"eE" and b6 in ~c"nN" and b7 in ~c"cC" and b8 in ~c"eE", do: :sequence - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"rR" and b4 in ~c"iI" and b5 in ~c"aA" and b6 in ~c"lL" and + def ident(:ident, [[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"rR" and b4 in ~c"iI" and b5 in ~c"aA" and b6 in ~c"lL" and b7 in ~c"iI" and b8 in ~c"zZ" and b9 in ~c"aA" and b10 in ~c"bB" and b11 in ~c"lL" and b12 in ~c"eE", do: :serializable - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"rR" and b4 in ~c"vV" and b5 in ~c"eE" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"rR" and b4 in ~c"vV" and b5 in ~c"eE" and b6 in ~c"rR" and b7 in ~c"_" and b8 in ~c"nN" and b9 in ~c"aA" and b10 in ~c"mM" and b11 in ~c"eE", do: :server_name - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"sS" and b5 in ~c"iI" and b6 in ~c"oO" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"sS" and b4 in ~c"sS" and b5 in ~c"iI" and b6 in ~c"oO" and b7 in ~c"nN", do: :session - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"tT" and b4 in ~c"sS", do: :sets + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"sS" and b2 in ~c"eE" and b3 in ~c"tT" and b4 in ~c"sS", do: :sets - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"sS" and b2 in ~c"iI" and b3 in ~c"mM" and b4 in ~c"pP" and b5 in ~c"lL" and b6 in ~c"eE", do: :simple + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"sS" and b2 in ~c"iI" and b3 in ~c"mM" and b4 in ~c"pP" and b5 in ~c"lL" and b6 in ~c"eE", do: :simple - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"sS" and b2 in ~c"iI" and b3 in ~c"zZ" and b4 in ~c"eE", do: :size + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"sS" and b2 in ~c"iI" and b3 in ~c"zZ" and b4 in ~c"eE", do: :size - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14]) when b1 in ~c"sS" and b2 in ~c"oO" and b3 in ~c"rR" and b4 in ~c"tT" and b5 in ~c"_" and b6 in ~c"dD" and + def ident(:ident, [[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14]) when b1 in ~c"sS" and b2 in ~c"oO" and b3 in ~c"rR" and b4 in ~c"tT" and b5 in ~c"_" and b6 in ~c"dD" and b7 in ~c"iI" and b8 in ~c"rR" and b9 in ~c"eE" and b10 in ~c"cC" and b11 in ~c"tT" and b12 in ~c"iI" and b13 in ~c"oO" and b14 in ~c"nN", do: :sort_direction - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"sS" and b2 in ~c"oO" and b3 in ~c"uU" and b4 in ~c"rR" and b5 in ~c"cC" and b6 in ~c"eE", do: :source + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"sS" and b2 in ~c"oO" and b3 in ~c"uU" and b4 in ~c"rR" and b5 in ~c"cC" and b6 in ~c"eE", do: :source - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"sS" and b2 in ~c"pP" and b3 in ~c"aA" and b4 in ~c"cC" and b5 in ~c"eE", do: :space + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"sS" and b2 in ~c"pP" and b3 in ~c"aA" and b4 in ~c"cC" and b5 in ~c"eE", do: :space - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13]) when b1 in ~c"sS" and b2 in ~c"pP" and b3 in ~c"eE" and b4 in ~c"cC" and b5 in ~c"iI" and b6 in ~c"fF" and + def ident(:ident, [[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13]) when b1 in ~c"sS" and b2 in ~c"pP" and b3 in ~c"eE" and b4 in ~c"cC" and b5 in ~c"iI" and b6 in ~c"fF" and b7 in ~c"iI" and b8 in ~c"cC" and b9 in ~c"_" and b10 in ~c"nN" and b11 in ~c"aA" and b12 in ~c"mM" and b13 in ~c"eE", do: :specific_name - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"sS" and b2 in ~c"tT" and b3 in ~c"aA" and b4 in ~c"tT" and b5 in ~c"eE", do: :state + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"sS" and b2 in ~c"tT" and b3 in ~c"aA" and b4 in ~c"tT" and b5 in ~c"eE", do: :state - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"sS" and b2 in ~c"tT" and b3 in ~c"aA" and b4 in ~c"tT" and b5 in ~c"eE" and b6 in ~c"mM" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"sS" and b2 in ~c"tT" and b3 in ~c"aA" and b4 in ~c"tT" and b5 in ~c"eE" and b6 in ~c"mM" and b7 in ~c"eE" and b8 in ~c"nN" and b9 in ~c"tT", do: :statement - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"sS" and b2 in ~c"tT" and b3 in ~c"rR" and b4 in ~c"iI" and b5 in ~c"nN" and b6 in ~c"gG", do: :string + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"sS" and b2 in ~c"tT" and b3 in ~c"rR" and b4 in ~c"iI" and b5 in ~c"nN" and b6 in ~c"gG", do: :string - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"sS" and b2 in ~c"tT" and b3 in ~c"rR" and b4 in ~c"uU" and b5 in ~c"cC" and b6 in ~c"tT" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"sS" and b2 in ~c"tT" and b3 in ~c"rR" and b4 in ~c"uU" and b5 in ~c"cC" and b6 in ~c"tT" and b7 in ~c"uU" and b8 in ~c"rR" and b9 in ~c"eE", do: :structure - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"sS" and b2 in ~c"tT" and b3 in ~c"yY" and b4 in ~c"lL" and b5 in ~c"eE", do: :style + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"sS" and b2 in ~c"tT" and b3 in ~c"yY" and b4 in ~c"lL" and b5 in ~c"eE", do: :style - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15]) when b1 in ~c"sS" and b2 in ~c"uU" and b3 in ~c"bB" and b4 in ~c"cC" and b5 in ~c"lL" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15]) when b1 in ~c"sS" and b2 in ~c"uU" and b3 in ~c"bB" and b4 in ~c"cC" and b5 in ~c"lL" and b6 in ~c"aA" and b7 in ~c"sS" and b8 in ~c"sS" and b9 in ~c"_" and b10 in ~c"oO" and b11 in ~c"rR" and b12 in ~c"iI" and b13 in ~c"gG" and b14 in ~c"iI" and b15 in ~c"nN", do: :subclass_origin - def ident(:ident, [b1]) when b1 in ~c"tT", do: :t + def ident(:ident, [[], b1]) when b1 in ~c"tT", do: :t - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"tT" and b2 in ~c"aA" and b3 in ~c"bB" and b4 in ~c"lL" and b5 in ~c"eE" and b6 in ~c"_" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"tT" and b2 in ~c"aA" and b3 in ~c"bB" and b4 in ~c"lL" and b5 in ~c"eE" and b6 in ~c"_" and b7 in ~c"nN" and b8 in ~c"aA" and b9 in ~c"mM" and b10 in ~c"eE", do: :table_name - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"tT" and b2 in ~c"eE" and b3 in ~c"mM" and b4 in ~c"pP" and b5 in ~c"oO" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"tT" and b2 in ~c"eE" and b3 in ~c"mM" and b4 in ~c"pP" and b5 in ~c"oO" and b6 in ~c"rR" and b7 in ~c"aA" and b8 in ~c"rR" and b9 in ~c"yY", do: :temporary - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"tT" and b2 in ~c"hH" and b3 in ~c"rR" and b4 in ~c"oO" and b5 in ~c"uU" and b6 in ~c"gG" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"tT" and b2 in ~c"hH" and b3 in ~c"rR" and b4 in ~c"oO" and b5 in ~c"uU" and b6 in ~c"gG" and b7 in ~c"hH", do: :through - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"tT" and b2 in ~c"iI" and b3 in ~c"eE" and b4 in ~c"sS", do: :ties + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"tT" and b2 in ~c"iI" and b3 in ~c"eE" and b4 in ~c"sS", do: :ties - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15]) when b1 in ~c"tT" and b2 in ~c"oO" and b3 in ~c"pP" and b4 in ~c"_" and b5 in ~c"lL" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15]) when b1 in ~c"tT" and b2 in ~c"oO" and b3 in ~c"pP" and b4 in ~c"_" and b5 in ~c"lL" and b6 in ~c"eE" and b7 in ~c"vV" and b8 in ~c"eE" and b9 in ~c"lL" and b10 in ~c"_" and b11 in ~c"cC" and b12 in ~c"oO" and b13 in ~c"uU" and b14 in ~c"nN" and b15 in ~c"tT", do: :top_level_count - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"nN" and b5 in ~c"sS" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"nN" and b5 in ~c"sS" and b6 in ~c"aA" and b7 in ~c"cC" and b8 in ~c"tT" and b9 in ~c"iI" and b10 in ~c"oO" and b11 in ~c"nN", do: :transaction - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"nN" and b5 in ~c"sS" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17], b18]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"nN" and b5 in ~c"sS" and b6 in ~c"aA" and b7 in ~c"cC" and b8 in ~c"tT" and b9 in ~c"iI" and b10 in ~c"oO" and b11 in ~c"nN" and b12 in ~c"_" and b13 in ~c"aA" and b14 in ~c"cC" and b15 in ~c"tT" and b16 in ~c"iI" and b17 in ~c"vV" and b18 in ~c"eE", do: :transaction_active - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"nN" and b5 in ~c"sS" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17], b18], b19], b20], b21], b22]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"nN" and b5 in ~c"sS" and b6 in ~c"aA" and b7 in ~c"cC" and b8 in ~c"tT" and b9 in ~c"iI" and b10 in ~c"oO" and b11 in ~c"nN" and b12 in ~c"sS" and b13 in ~c"_" and b14 in ~c"cC" and b15 in ~c"oO" and b16 in ~c"mM" and b17 in ~c"mM" and b18 in ~c"iI" and b19 in ~c"tT" and b20 in ~c"tT" and b21 in ~c"eE" and b22 in ~c"dD", do: :transactions_committed - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"nN" and b5 in ~c"sS" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17], b18], b19], b20], b21], b22], b23], b24]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"nN" and b5 in ~c"sS" and b6 in ~c"aA" and b7 in ~c"cC" and b8 in ~c"tT" and b9 in ~c"iI" and b10 in ~c"oO" and b11 in ~c"nN" and b12 in ~c"sS" and b13 in ~c"_" and b14 in ~c"rR" and b15 in ~c"oO" and b16 in ~c"lL" and b17 in ~c"lL" and b18 in ~c"eE" and b19 in ~c"dD" and b20 in ~c"_" and b21 in ~c"bB" and b22 in ~c"aA" and b23 in ~c"cC" and b24 in ~c"kK", do: :transactions_rolled_back - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"nN" and b5 in ~c"sS" and b6 in ~c"fF" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"nN" and b5 in ~c"sS" and b6 in ~c"fF" and b7 in ~c"oO" and b8 in ~c"rR" and b9 in ~c"mM", do: :transform - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"nN" and b5 in ~c"sS" and b6 in ~c"fF" and + def ident(:ident, [[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"nN" and b5 in ~c"sS" and b6 in ~c"fF" and b7 in ~c"oO" and b8 in ~c"rR" and b9 in ~c"mM" and b10 in ~c"sS", do: :transforms - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"iI" and b4 in ~c"gG" and b5 in ~c"gG" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"iI" and b4 in ~c"gG" and b5 in ~c"gG" and b6 in ~c"eE" and b7 in ~c"rR" and b8 in ~c"_" and b9 in ~c"cC" and b10 in ~c"aA" and b11 in ~c"tT" and b12 in ~c"aA" and b13 in ~c"lL" and b14 in ~c"oO" and b15 in ~c"gG", do: :trigger_catalog - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"iI" and b4 in ~c"gG" and b5 in ~c"gG" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"iI" and b4 in ~c"gG" and b5 in ~c"gG" and b6 in ~c"eE" and b7 in ~c"rR" and b8 in ~c"_" and b9 in ~c"nN" and b10 in ~c"aA" and b11 in ~c"mM" and b12 in ~c"eE", do: :trigger_name - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"iI" and b4 in ~c"gG" and b5 in ~c"gG" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14]) when b1 in ~c"tT" and b2 in ~c"rR" and b3 in ~c"iI" and b4 in ~c"gG" and b5 in ~c"gG" and b6 in ~c"eE" and b7 in ~c"rR" and b8 in ~c"_" and b9 in ~c"sS" and b10 in ~c"cC" and b11 in ~c"hH" and b12 in ~c"eE" and b13 in ~c"mM" and b14 in ~c"aA", do: :trigger_schema - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"tT" and b2 in ~c"yY" and b3 in ~c"pP" and b4 in ~c"eE", do: :type + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"tT" and b2 in ~c"yY" and b3 in ~c"pP" and b4 in ~c"eE", do: :type - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"uU" and b2 in ~c"nN" and b3 in ~c"bB" and b4 in ~c"oO" and b5 in ~c"uU" and b6 in ~c"nN" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"uU" and b2 in ~c"nN" and b3 in ~c"bB" and b4 in ~c"oO" and b5 in ~c"uU" and b6 in ~c"nN" and b7 in ~c"dD" and b8 in ~c"eE" and b9 in ~c"dD", do: :unbounded - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]) when b1 in ~c"uU" and b2 in ~c"nN" and b3 in ~c"cC" and b4 in ~c"oO" and b5 in ~c"mM" and b6 in ~c"mM" and + def ident(:ident, [[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11]) when b1 in ~c"uU" and b2 in ~c"nN" and b3 in ~c"cC" and b4 in ~c"oO" and b5 in ~c"mM" and b6 in ~c"mM" and b7 in ~c"iI" and b8 in ~c"tT" and b9 in ~c"tT" and b10 in ~c"eE" and b11 in ~c"dD", do: :uncommitted - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13]) when b1 in ~c"uU" and b2 in ~c"nN" and b3 in ~c"cC" and b4 in ~c"oO" and b5 in ~c"nN" and b6 in ~c"dD" and + def ident(:ident, [[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13]) when b1 in ~c"uU" and b2 in ~c"nN" and b3 in ~c"cC" and b4 in ~c"oO" and b5 in ~c"nN" and b6 in ~c"dD" and b7 in ~c"iI" and b8 in ~c"tT" and b9 in ~c"iI" and b10 in ~c"oO" and b11 in ~c"nN" and b12 in ~c"aA" and b13 in ~c"lL", do: :unconditional - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"uU" and b2 in ~c"nN" and b3 in ~c"dD" and b4 in ~c"eE" and b5 in ~c"rR", do: :under + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"uU" and b2 in ~c"nN" and b3 in ~c"dD" and b4 in ~c"eE" and b5 in ~c"rR", do: :under - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9]) when b1 in ~c"uU" and b2 in ~c"nN" and b3 in ~c"mM" and b4 in ~c"aA" and b5 in ~c"tT" and b6 in ~c"cC" and + def ident(:ident, [[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9]) when b1 in ~c"uU" and b2 in ~c"nN" and b3 in ~c"mM" and b4 in ~c"aA" and b5 in ~c"tT" and b6 in ~c"cC" and b7 in ~c"hH" and b8 in ~c"eE" and b9 in ~c"dD", do: :unmatched - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"uU" and b2 in ~c"nN" and b3 in ~c"nN" and b4 in ~c"aA" and b5 in ~c"mM" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"uU" and b2 in ~c"nN" and b3 in ~c"nN" and b4 in ~c"aA" and b5 in ~c"mM" and b6 in ~c"eE" and b7 in ~c"dD", do: :unnamed - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"uU" and b2 in ~c"sS" and b3 in ~c"aA" and b4 in ~c"gG" and b5 in ~c"eE", do: :usage + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"uU" and b2 in ~c"sS" and b3 in ~c"aA" and b4 in ~c"gG" and b5 in ~c"eE", do: :usage - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25]) when b1 in ~c"uU" and b2 in ~c"sS" and b3 in ~c"eE" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"dD" and + def ident(:ident, [[[[[[[[[[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17], b18], b19], b20], b21], b22], b23], b24], b25]) when b1 in ~c"uU" and b2 in ~c"sS" and b3 in ~c"eE" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"dD" and b7 in ~c"eE" and b8 in ~c"fF" and b9 in ~c"iI" and b10 in ~c"nN" and b11 in ~c"eE" and b12 in ~c"dD" and b13 in ~c"_" and b14 in ~c"tT" and b15 in ~c"yY" and b16 in ~c"pP" and b17 in ~c"eE" and b18 in ~c"_" and b19 in ~c"cC" and b20 in ~c"aA" and b21 in ~c"tT" and b22 in ~c"aA" and b23 in ~c"lL" and b24 in ~c"oO" and b25 in ~c"gG", do: :user_defined_type_catalog - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22]) when b1 in ~c"uU" and b2 in ~c"sS" and b3 in ~c"eE" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"dD" and + def ident(:ident, [[[[[[[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17], b18], b19], b20], b21], b22]) when b1 in ~c"uU" and b2 in ~c"sS" and b3 in ~c"eE" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"dD" and b7 in ~c"eE" and b8 in ~c"fF" and b9 in ~c"iI" and b10 in ~c"nN" and b11 in ~c"eE" and b12 in ~c"dD" and b13 in ~c"_" and b14 in ~c"tT" and b15 in ~c"yY" and b16 in ~c"pP" and b17 in ~c"eE" and b18 in ~c"_" and b19 in ~c"cC" and b20 in ~c"oO" and b21 in ~c"dD" and b22 in ~c"eE", do: :user_defined_type_code - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22]) when b1 in ~c"uU" and b2 in ~c"sS" and b3 in ~c"eE" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"dD" and + def ident(:ident, [[[[[[[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17], b18], b19], b20], b21], b22]) when b1 in ~c"uU" and b2 in ~c"sS" and b3 in ~c"eE" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"dD" and b7 in ~c"eE" and b8 in ~c"fF" and b9 in ~c"iI" and b10 in ~c"nN" and b11 in ~c"eE" and b12 in ~c"dD" and b13 in ~c"_" and b14 in ~c"tT" and b15 in ~c"yY" and b16 in ~c"pP" and b17 in ~c"eE" and b18 in ~c"_" and b19 in ~c"nN" and b20 in ~c"aA" and b21 in ~c"mM" and b22 in ~c"eE", do: :user_defined_type_name - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24]) when b1 in ~c"uU" and b2 in ~c"sS" and b3 in ~c"eE" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"dD" and + def ident(:ident, [[[[[[[[[[[[[[[[[[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8], b9], b10], b11], b12], b13], b14], b15], b16], b17], b18], b19], b20], b21], b22], b23], b24]) when b1 in ~c"uU" and b2 in ~c"sS" and b3 in ~c"eE" and b4 in ~c"rR" and b5 in ~c"_" and b6 in ~c"dD" and b7 in ~c"eE" and b8 in ~c"fF" and b9 in ~c"iI" and b10 in ~c"nN" and b11 in ~c"eE" and b12 in ~c"dD" and b13 in ~c"_" and b14 in ~c"tT" and b15 in ~c"yY" and b16 in ~c"pP" and b17 in ~c"eE" and b18 in ~c"_" and b19 in ~c"sS" and b20 in ~c"cC" and b21 in ~c"hH" and b22 in ~c"eE" and b23 in ~c"mM" and b24 in ~c"aA", do: :user_defined_type_schema - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"uU" and b2 in ~c"tT" and b3 in ~c"fF" and b4 in ~c"1" and b5 in ~c"6", do: :utf16 + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"uU" and b2 in ~c"tT" and b3 in ~c"fF" and b4 in ~c"1" and b5 in ~c"6", do: :utf16 - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"uU" and b2 in ~c"tT" and b3 in ~c"fF" and b4 in ~c"3" and b5 in ~c"2", do: :utf32 + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"uU" and b2 in ~c"tT" and b3 in ~c"fF" and b4 in ~c"3" and b5 in ~c"2", do: :utf32 - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"uU" and b2 in ~c"tT" and b3 in ~c"fF" and b4 in ~c"8", do: :utf8 + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"uU" and b2 in ~c"tT" and b3 in ~c"fF" and b4 in ~c"8", do: :utf8 - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"vV" and b2 in ~c"iI" and b3 in ~c"eE" and b4 in ~c"wW", do: :view + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"vV" and b2 in ~c"iI" and b3 in ~c"eE" and b4 in ~c"wW", do: :view - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"wW" and b2 in ~c"oO" and b3 in ~c"rR" and b4 in ~c"kK", do: :work + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"wW" and b2 in ~c"oO" and b3 in ~c"rR" and b4 in ~c"kK", do: :work - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"wW" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"pP" and b5 in ~c"pP" and b6 in ~c"eE" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"wW" and b2 in ~c"rR" and b3 in ~c"aA" and b4 in ~c"pP" and b5 in ~c"pP" and b6 in ~c"eE" and b7 in ~c"rR", do: :wrapper - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"wW" and b2 in ~c"rR" and b3 in ~c"iI" and b4 in ~c"tT" and b5 in ~c"eE", do: :write + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"wW" and b2 in ~c"rR" and b3 in ~c"iI" and b4 in ~c"tT" and b5 in ~c"eE", do: :write - def ident(:ident, [b1,b2,b3,b4]) when b1 in ~c"zZ" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"eE", do: :zone + def ident(:ident, [[[[[], b1], b2], b3], b4]) when b1 in ~c"zZ" and b2 in ~c"oO" and b3 in ~c"nN" and b4 in ~c"eE", do: :zone - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"lL" and b2 in ~c"iI" and b3 in ~c"mM" and b4 in ~c"iI" and b5 in ~c"tT", do: :limit + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"lL" and b2 in ~c"iI" and b3 in ~c"mM" and b4 in ~c"iI" and b5 in ~c"tT", do: :limit - def ident(:ident, [b1,b2,b3,b4,b5]) when b1 in ~c"iI" and b2 in ~c"lL" and b3 in ~c"iI" and b4 in ~c"kK" and b5 in ~c"eE", do: :ilike + def ident(:ident, [[[[[[], b1], b2], b3], b4], b5]) when b1 in ~c"iI" and b2 in ~c"lL" and b3 in ~c"iI" and b4 in ~c"kK" and b5 in ~c"eE", do: :ilike - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7,b8]) when b1 in ~c"bB" and b2 in ~c"aA" and b3 in ~c"cC" and b4 in ~c"kK" and b5 in ~c"wW" and b6 in ~c"aA" and + def ident(:ident, [[[[[[[[[], b1], b2], b3], b4], b5], b6], b7], b8]) when b1 in ~c"bB" and b2 in ~c"aA" and b3 in ~c"cC" and b4 in ~c"kK" and b5 in ~c"wW" and b6 in ~c"aA" and b7 in ~c"rR" and b8 in ~c"dD", do: :backward - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"fF" and b2 in ~c"oO" and b3 in ~c"rR" and b4 in ~c"wW" and b5 in ~c"aA" and b6 in ~c"rR" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"fF" and b2 in ~c"oO" and b3 in ~c"rR" and b4 in ~c"wW" and b5 in ~c"aA" and b6 in ~c"rR" and b7 in ~c"dD", do: :forward - def ident(:ident, [b1,b2,b3,b4,b5,b6]) when b1 in ~c"iI" and b2 in ~c"sS" and b3 in ~c"nN" and b4 in ~c"uU" and b5 in ~c"lL" and b6 in ~c"lL", do: :isnull + def ident(:ident, [[[[[[[], b1], b2], b3], b4], b5], b6]) when b1 in ~c"iI" and b2 in ~c"sS" and b3 in ~c"nN" and b4 in ~c"uU" and b5 in ~c"lL" and b6 in ~c"lL", do: :isnull - def ident(:ident, [b1,b2,b3,b4,b5,b6,b7]) when b1 in ~c"nN" and b2 in ~c"oO" and b3 in ~c"tT" and b4 in ~c"nN" and b5 in ~c"uU" and b6 in ~c"lL" and + def ident(:ident, [[[[[[[[], b1], b2], b3], b4], b5], b6], b7]) when b1 in ~c"nN" and b2 in ~c"oO" and b3 in ~c"tT" and b4 in ~c"nN" and b5 in ~c"uU" and b6 in ~c"lL" and b7 in ~c"lL", do: :notnull def ident(type, _), do: type diff --git a/lib/mix/tasks/sql.gen.parser.ex b/lib/mix/tasks/sql.gen.parser.ex index 90e69f4..1f3e709 100644 --- a/lib/mix/tasks/sql.gen.parser.ex +++ b/lib/mix/tasks/sql.gen.parser.ex @@ -34,6 +34,8 @@ defmodule Mix.Tasks.Sql.Gen.Parser do defmodule <%= inspect @mod %> do @moduledoc false + @compile {:inline, parse: 1, parse: 5, predicate: 1, insert_node: 5} + import Kernel, except: [is_boolean: 1] defguard is_and(node) when elem(node, 0) == :and @@ -279,6 +281,7 @@ defmodule Mix.Tasks.Sql.Gen.Parser do defmodule <%= inspect @mod %> do @moduledoc false + @compile {:inline, lex: 9, lex: 4, meta: 3, merge: 3, type: 2, node: 5} defguard is_data_type(node) when elem(node, 0) in ~w[integer float ident quote double_quote backtick bracket parens .]a defguard is_newline(b) when b in <%= inspect(@newline) %> @@ -299,9 +302,9 @@ defmodule Mix.Tasks.Sql.Gen.Parser do def expected_delimiter(:backtick), do: :"`" def expected_delimiter(type) when type in ~w[var code braces]a, do: :"}" - def lex(binary, binding, _meta, params \\\\ [], opts \\\\ [metadata: true]) do - case lex(binary, binary, [binding: binding, params: params] ++ opts, 0, 0, nil, [], [], 0) do - {"", _binary, opts, line, column, nil = type, [] = data, acc, _n} -> + def lex(binary, meta, params \\\\ 0, opts \\\\ [metadata: true]) do + case lex(binary, binary, [{:binding, []}, {:params, params}, {:meta, meta} | opts], 0, 0, nil, [], [], 0) do + {"", _binary, opts, line, column, nil = type, data, acc, _n} -> {:ok, opts, line, column, type, data, acc} {"", binary, _opts, end_line, end_column, type, _data, [{_, [line: line, column: column, file: file], _}|_], _n} when type in ~w[parens bracket double_quote quote backtick var code]a -> @@ -324,37 +327,32 @@ defmodule Mix.Tasks.Sql.Gen.Parser do lex(rest, binary, opts, line, column+2, nil, [], insert_node(node(:comments, line, column, data, opts), acc), n) end def lex(<>, binary, opts, line, column, :comments, data, acc, n) do - lex(rest, binary, opts, line, column+1, :comments, data ++ [b], acc, n) + lex(rest, binary, opts, line, column+1, :comments, [data | [b]], acc, n) end def lex(<>, binary, opts, line, column, _type, data, acc, n) do lex(rest, binary, opts, line, column+2, :var, data, acc, n) end + def lex(<>, binary, [_, _, _, {:format, true}] = opts, line, column, _type, data, acc, 0 = n), do: lex(rest, binary, opts, line, column+2, nil, [], insert_node(node(:binding, line, column, data, opts), acc), n) def lex(<>, binary, opts, line, column, type, data, acc, 0 = n) when type in ~w[code var]a do - if opts[:binding] do - opts = if type == :var do - update_in(opts, [:params], &(&1 ++ [opts[:binding][List.to_atom(data)]])) - else - update_in(opts, [:params], &(&1 ++ [elem(Code.eval_string(to_string(data), opts[:binding]), 0)])) - end - lex(rest, binary, opts, line, column+2, nil, [], insert_node(node(:binding, line, column, length(opts[:params]), opts), acc), n) - else - lex(rest, binary, opts, line, column+2, nil, [], insert_node(node(:binding, line, column, data, opts), acc), n) - end + opts = opts + |> Keyword.update!(:binding, &(&1 ++ [{type, IO.iodata_to_binary(data)}])) + |> Keyword.update!(:params, &(&1+1)) + lex(rest, binary, opts, line, column+2, nil, [], insert_node(node(:binding, line, column, Keyword.get(opts, :params), opts), acc), n) end def lex(<>, binary, opts, line, column, :code = type, data, acc, n) do - lex(rest, binary, opts, line, column+1, type, data ++ [?}], acc, n-1) + lex(rest, binary, opts, line, column+1, type, [data | [?}]], acc, n-1) end def lex(<>, binary, opts, line, column, type, data, acc, n) when type in ~w[var code]a and b in [?{] do - lex(rest, binary, opts, line, column+1, :code, data ++ [b], acc, n+1) + lex(rest, binary, opts, line, column+1, :code, [data | [b]], acc, n+1) end def lex(<>, binary, opts, line, column, :var = type, data, acc, n) when b in ?0..?9 and data != [] do - lex(rest, binary, opts, line, column+1, type, data ++ [b], acc, n) + lex(rest, binary, opts, line, column+1, type, [data | [b]], acc, n) end def lex(<>, binary, opts, line, column, :var = type, data, acc, n) when b in ?a..?z or b in ?A..?Z or (b == ?_ and data != []) do - lex(rest, binary, opts, line, column+1, type, data ++ [b], acc, n) + lex(rest, binary, opts, line, column+1, type, [data | [b]], acc, n) end def lex(<>, binary, opts, line, column, type, data, acc, n) when type in ~w[var code]a do - lex(rest, binary, opts, line, column+1, :code, data ++ [b], acc, n) + lex(rest, binary, opts, line, column+1, :code, [data | [b]], acc, n) end def lex(<>, binary, opts, line, column, type, data, acc, n) when b in [?(, ?[] do acc = case ident(type, data) do @@ -384,7 +382,7 @@ defmodule Mix.Tasks.Sql.Gen.Parser do lex(rest, binary, opts, line, column+1, nil, [], insert_node(node(type, line, column, data, opts), acc), n) end def lex(<>, binary, opts, line, column, type, data, acc, n) when type in ~w[double_quote quote backtick]a do - lex(rest, binary, opts, line, column+1, type, data ++ [b], acc, n) + lex(rest, binary, opts, line, column+1, type, [data | [b]], acc, n) end def lex(<>, binary, opts, line, column, type, data, acc, n) when is_newline(b) do if data == [] do @@ -517,7 +515,7 @@ defmodule Mix.Tasks.Sql.Gen.Parser do end def merge([] = data, _b, type) when type in ~w[double_quote quote backtick]a, do: data - def merge(data, b, _type), do: data ++ [b] + def merge(data, b, _type), do: [data | [b]] def type(?;), do: :colon def type(?,), do: :comma @@ -545,18 +543,18 @@ defmodule Mix.Tasks.Sql.Gen.Parser do def type(?., :integer), do: :float def type(_b, _type), do: :ident - def meta(line, column, opts) do - if opts[:metadata], do: [line: line, column: column, file: opts[:file]], else: [] - end + def meta(_line, _column, [_,_,_,{_,false}|_]), do: [] + def meta(line, column, [_, _, {_, {_, _, file}} |_]), do: [line: line, column: column, file: file] - def node(:binding = tag, line, column, [idx], [{:binding, false}|_] = opts) do - {tag, meta(line, column, opts), Enum.at(opts[:params], idx)} + def node(:binding = tag, line, column, [idx], [{:binding, false}, {:params, params}|_] = opts) do + {tag, meta(line, column, opts), Enum.at(params, idx)} end + def node(:binding = tag, line, column, data, opts) when is_integer(data), do: {tag, meta(line, column, opts), [data]} def node(tag, line, column, data, opts) when tag in ~w[ident float integer double_quote quote backtick binding parens bracket . comment comments]a do data = case data do [] -> data [{_, _, _} | _] -> data - _ -> [data] + _ -> [IO.iodata_to_binary(data)] end {tag, meta(line, column, opts), data} end @@ -571,7 +569,7 @@ defmodule Mix.Tasks.Sql.Gen.Parser do def ident(_type, [?(]), do: :parens def ident(_type, [?[]), do: :bracket <%= for keyword <- @keywords do %> - def ident(:ident, [<%= Enum.map_join(1..byte_size(keyword), ",", fn n -> "b\#{n}" end) %>]) when <%= guard(keyword) %>, do: <%= inspect(String.to_atom(String.downcase(keyword))) %> + def ident(:ident, <%= Enum.reduce(1..byte_size(keyword), "[]", fn n, acc -> "[\#{acc}, b\#{n}]" end) %>) when <%= guard(keyword) %>, do: <%= inspect(String.to_atom(String.downcase(keyword))) %> <% end %> def ident(type, _), do: type end diff --git a/lib/parser.ex b/lib/parser.ex index 4684162..7ae34f5 100644 --- a/lib/parser.ex +++ b/lib/parser.ex @@ -3,6 +3,8 @@ defmodule SQL.Parser do @moduledoc false + @compile {:inline, parse: 1, parse: 5, predicate: 1, insert_node: 5} + import Kernel, except: [is_boolean: 1] defguard is_and(node) when elem(node, 0) == :and diff --git a/lib/sql.ex b/lib/sql.ex index 55cce07..e295d6c 100644 --- a/lib/sql.ex +++ b/lib/sql.ex @@ -27,7 +27,7 @@ defmodule SQL do @doc deprecated: "Use SQL.Token.token_to_string/1 instead" @callback token_to_sql(token :: {atom, keyword, list}) :: String.t() - defstruct [:tokens, :query, :params, :module] + defstruct [:tokens, :params, :module, :id] @doc """ Returns a parameterized SQL. @@ -38,20 +38,46 @@ defmodule SQL do {"select id, email from users where email = $0", ["john@example.com"]} """ @doc since: "0.1.0" - def to_sql(sql), do: {"#{sql}", sql.params} + def to_sql(sql), do: {:persistent_term.get(sql.id), sql.params} @doc false def build(right, {:<<>>, meta, _} = left, _modifiers, env) do quote bind_quoted: [right: Macro.unpipe(right), left: left, meta: Macro.escape({meta[:line], meta[:column] || 0, env.file}), e: Macro.escape(env)] do {t, p} = Enum.reduce(right, {[], []}, fn {[], 0}, acc -> acc - {v, 0}, {:ok, opts, _, _, _, _, tokens} -> {tokens ++ v.tokens, opts[:params] ++ v.params} {v, 0}, {tokens, params} -> {tokens ++ v.tokens, params ++ v.params} end) - {:ok, opts, _, _, _, _, tokens} = SQL.Lexer.lex(left, binding(), meta, p) - t ++ SQL.Parser.parse(tokens) - |> SQL.to_query() - |> Map.merge(%{module: __MODULE__, params: opts[:params]}) + binding = binding() + id = {__MODULE__, :binary.decode_unsigned(left), meta} + {tokens, params} = tokens(left, meta, length(p), id) + tokens = t ++ tokens + params = Enum.reduce(params, p, fn + {:var, var}, acc -> acc ++ [binding[String.to_atom(var)]] + {:code, code}, acc -> acc ++ [elem(Code.eval_string(code, binding), 0)] + end) + struct(SQL, params: params, tokens: tokens, id: plan(id, tokens), module: __MODULE__) + end + end + + def tokens(left, meta, p, id) do + if result = :persistent_term.get(id, nil) do + result + else + {:ok, opts, _, _, _, _, tokens} = SQL.Lexer.lex(left, meta, p) + result = {tokens, opts[:binding]} + :persistent_term.put(id, result) + result + end + end + + def plan(id, tokens) do + if uid = :persistent_term.get(tokens, nil) do + uid + else + uid = System.unique_integer([:positive]) + :persistent_term.put(tokens, uid) + :persistent_term.put(uid, to_string(SQL.to_query(SQL.Parser.parse(tokens)), elem(id, 0))) + uid end end @@ -72,17 +98,18 @@ defmodule SQL do @doc false @doc since: "0.1.0" def parse(binary) do - {:ok, _opts, _, _, _, _, tokens} = SQL.Lexer.lex(binary, false, {1, 0, nil}, []) + {:ok, _opts, _, _, _, _, tokens} = SQL.Lexer.lex(binary, {1, 0, nil}, 0, [format: true]) tokens |> SQL.Parser.parse() |> to_query() + |> to_string(SQL.String) end @doc false @doc since: "0.1.0" @acc ~w[for create drop insert alter with update delete select set fetch from join where group having window except intersect union order limit offset lock colon in declare start grant revoke commit rollback open close comment comments into]a def to_query([value | _] = tokens) when is_tuple(value) and elem(value, 0) in @acc do - struct(SQL, tokens: tokens, query: Enum.reduce(@acc, [], fn key, acc -> acc ++ for {k, meta, v} <- Enum.filter(tokens, &(elem(&1, 0) == key)), do: {k, meta, Enum.map(v, &to_query/1)} end)) + Enum.reduce(@acc, [], fn key, acc -> acc ++ for {k, meta, v} <- Enum.filter(tokens, &(elem(&1, 0) == key)), do: {k, meta, Enum.map(v, &to_query/1)} end) end def to_query({:parens = tag, meta, values}) do {tag, meta, to_query(values)} @@ -97,28 +124,38 @@ defmodule SQL do token end + + def to_string(tokens, module) do + fun = cond do + Kernel.function_exported?(module, :sql_config, 0) -> &module.sql_config()[:adapter].token_to_string(&1) + Kernel.function_exported?(module, :token_to_string, 2) -> &module.token_to_string(&1) + true -> &SQL.String.token_to_sql(&1) + end + tokens + |> Enum.reduce([], fn + token, [] = acc -> [acc | fun.(token)] + token, acc -> + case fun.(token) do + <<";", _::binary>> = v -> [acc | v] + v -> [acc, " " | v] + end + end) + |> IO.iodata_to_binary() + end + + defimpl Inspect, for: SQL do def inspect(sql, _opts) do if Kernel.function_exported?(sql.module, :sql_config, 0) do Enum.reduce(0..length(sql.params), :persistent_term.get(sql.id), &String.replace(&2, sql.module.sql_config()[:adapter].token_to_string({:binding, [], [&1]}), sql.module.sql_config()[:adapter].token_to_string(Enum.at(sql.params, &1)), global: false)) else - Enum.reduce(0..length(sql.params), to_string(sql), &String.replace(&2, SQL.String.token_to_sql({:binding, [], [&1]}), SQL.String.token_to_sql(Enum.at(sql.params, &1)))) + Enum.reduce(0..length(sql.params), :persistent_term.get(sql.id), &String.replace(&2, SQL.String.token_to_sql({:binding, [], [&1]}), SQL.String.token_to_sql(Enum.at(sql.params, &1)))) end end end defimpl String.Chars, for: SQL do - def to_string(sql) do - cond do - Kernel.function_exported?(sql.module, :sql_config, 0) -> Enum.map(sql.query, &sql.module.sql_config()[:adapter].token_to_string(&1)) - Kernel.function_exported?(sql.module, :token_to_string, 2) -> Enum.map(sql.query, &sql.module.token_to_string(&1)) - true -> Enum.map(sql.query, &SQL.String.token_to_sql(&1)) - end - |> Enum.reduce("", fn - v, "" -> v - <<";", _::binary>> = v, acc -> acc <> v - v, acc -> acc <> " " <> v - end) - end + def to_string(%{id: id}), do: :persistent_term.get(id) + def to_string(%{tokens: tokens, module: module}), do: SQL.to_string(tokens, module) end end