From 031e841396231784f97a6b38a290a106e935fd53 Mon Sep 17 00:00:00 2001 From: Mikhail Uvarov Date: Mon, 14 Dec 2020 12:13:33 +0100 Subject: [PATCH] Store statement as binary in prepared_statements ETS table So, we can more easily print it Also, ets-lookup logic would run a bit faster for big iolists --- src/rdbms/mongoose_rdbms.erl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/rdbms/mongoose_rdbms.erl b/src/rdbms/mongoose_rdbms.erl index 911e28a75cf..d452997a2f7 100644 --- a/src/rdbms/mongoose_rdbms.erl +++ b/src/rdbms/mongoose_rdbms.erl @@ -178,7 +178,8 @@ prepare(Name, Table, [Field | _] = Fields, Statement) when is_atom(Field) -> prepare(Name, Table, [atom_to_binary(F, utf8) || F <- Fields], Statement); prepare(Name, Table, Fields, Statement) when is_atom(Name), is_binary(Table) -> true = lists:all(fun is_binary/1, Fields), - case ets:insert_new(prepared_statements, {Name, Table, Fields, Statement}) of + Tuple = {Name, Table, Fields, iolist_to_binary(Statement)}, + case ets:insert_new(prepared_statements, Tuple) of true -> {ok, Name}; false -> {error, already_exists} end.