Skip to content

Commit fdf6c8a

Browse files
committed
max query size
1 parent 83529c0 commit fdf6c8a

4 files changed

Lines changed: 15 additions & 3 deletions

File tree

c_src/libpg_query_ex.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,11 @@ ERL_NIF_TERM make_binary(ErlNifEnv *env, char *source) {
2525
return binary;
2626
}
2727

28-
static ERL_NIF_TERM parse_query(ErlNifEnv *env, int argc,
29-
const ERL_NIF_TERM argv[]) {
28+
static ERL_NIF_TERM max_query_size(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]) {
29+
return enif_make_int64(env, MAX_QUERY_SIZE);
30+
}
31+
32+
static ERL_NIF_TERM parse_query(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]) {
3033
ErlNifBinary query;
3134
ERL_NIF_TERM term;
3235

@@ -178,7 +181,8 @@ static ERL_NIF_TERM scan_query(ErlNifEnv *env, int argc,
178181
static ErlNifFunc funcs[] = {
179182
{"parse_query", 1, parse_query},
180183
{"deparse_query", 1, deparse_query},
181-
{"scan_query", 1, scan_query}
184+
{"scan_query", 1, scan_query},
185+
{"max_query_size", 0, max_query_size},
182186
};
183187

184188
ERL_NIF_INIT(Elixir.PgQuery.Parser, funcs, NULL, NULL, NULL, NULL)

lib/pg_query.ex

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
defmodule PgQuery do
22
@type error() :: %{message: String.t(), cursorpos: non_neg_integer()}
3+
4+
defdelegate max_query_size(), to: PgQuery.Parser
5+
36
@doc """
47
Parses the binary statement `stmt` into a Protobuf AST.
58

lib/pg_query/parser.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,4 +71,5 @@ defmodule PgQuery.Parser do
7171
def parse_query(_query), do: :erlang.nif_error(:nif_not_loaded)
7272
def deparse_query(_encoded_proto), do: :erlang.nif_error(:nif_not_loaded)
7373
def scan_query(_query), do: :erlang.nif_error(:nif_not_loaded)
74+
def max_query_size, do: :erlang.nif_error(:nif_not_loaded)
7475
end

test/pg_query_test.exs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,4 +75,8 @@ defmodule PgQueryTest do
7575
token.token == :FROM
7676
end)
7777
end
78+
79+
test "max_query_size/0" do
80+
assert 65536 = PgQuery.max_query_size()
81+
end
7882
end

0 commit comments

Comments
 (0)