aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_sql.erl
diff options
context:
space:
mode:
authorPaweł Chmielowski <pchmielowski@process-one.net>2019-04-23 17:46:14 +0200
committerPaweł Chmielowski <pchmielowski@process-one.net>2019-04-23 17:46:42 +0200
commitd2ea9059262e4119004d4f70cdaed6c530e385fc (patch)
tree8e5c2aab3af19b4a9ff1294878319284974279b1 /src/ejabberd_sql.erl
parentSupport other socket modules for MQTT (diff)
Fix handling of list arguments on pgsql
Diffstat (limited to 'src/ejabberd_sql.erl')
-rw-r--r--src/ejabberd_sql.erl28
1 files changed, 18 insertions, 10 deletions
diff --git a/src/ejabberd_sql.erl b/src/ejabberd_sql.erl
index a02aece4d..f807b0bca 100644
--- a/src/ejabberd_sql.erl
+++ b/src/ejabberd_sql.erl
@@ -56,7 +56,8 @@
odbcinst_config/0,
init_mssql/1,
keep_alive/2,
- to_list/2]).
+ to_list/2,
+ to_array/2]).
%% gen_fsm callbacks
-export([init/1, handle_event/3, handle_sync_event/4,
@@ -264,6 +265,10 @@ to_list(EscapeFun, Val) ->
Escaped = lists:join(<<",">>, lists:map(EscapeFun, Val)),
[<<"(">>, Escaped, <<")">>].
+to_array(EscapeFun, Val) ->
+ Escaped = lists:join(<<",">>, lists:map(EscapeFun, Val)),
+ [<<"{">>, Escaped, <<"}">>].
+
encode_term(Term) ->
escape(list_to_binary(
erl_prettypr:format(erl_syntax:abstract(Term),
@@ -676,10 +681,11 @@ generic_sql_query_format(SQLQuery) ->
generic_escape() ->
#sql_escape{string = fun(X) -> <<"'", (escape(X))/binary, "'">> end,
- integer = fun(X) -> misc:i2l(X) end,
- boolean = fun(true) -> <<"1">>;
+ integer = fun(X) -> misc:i2l(X) end,
+ boolean = fun(true) -> <<"1">>;
(false) -> <<"0">>
- end
+ end,
+ in_array_string = fun(X) -> <<"'", (escape(X))/binary, "'">> end
}.
sqlite_sql_query(SQLQuery) ->
@@ -693,10 +699,11 @@ sqlite_sql_query_format(SQLQuery) ->
sqlite_escape() ->
#sql_escape{string = fun(X) -> <<"'", (standard_escape(X))/binary, "'">> end,
- integer = fun(X) -> misc:i2l(X) end,
- boolean = fun(true) -> <<"1">>;
+ integer = fun(X) -> misc:i2l(X) end,
+ boolean = fun(true) -> <<"1">>;
(false) -> <<"0">>
- end
+ end,
+ in_array_string = fun(X) -> <<"'", (standard_escape(X))/binary, "'">> end
}.
standard_escape(S) ->
@@ -717,10 +724,11 @@ pgsql_prepare(SQLQuery, State) ->
pgsql_execute_escape() ->
#sql_escape{string = fun(X) -> X end,
- integer = fun(X) -> [misc:i2l(X)] end,
- boolean = fun(true) -> "1";
+ integer = fun(X) -> [misc:i2l(X)] end,
+ boolean = fun(true) -> "1";
(false) -> "0"
- end
+ end,
+ in_array_string = fun(X) -> <<"\"", (escape(X))/binary, "\"">> end
}.
pgsql_execute_sql_query(SQLQuery, State) ->