Skip to content

Commit 15fd7dc

Browse files
committed
Apply timestamp pass in ?SQL_INSERT queries
1 parent 3758128 commit 15fd7dc

File tree

1 file changed

+22
-7
lines changed

1 file changed

+22
-7
lines changed

src/ejabberd_sql_pt.erl

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -234,13 +234,28 @@ transform_insert(Form, TableArg, FieldsArg) ->
234234
end,
235235
ParseResOld =
236236
filter_upsert_sh(Table, ParseRes),
237-
set_pos(
238-
make_schema_check(
239-
make_sql_insert(Table, ParseRes),
240-
make_sql_insert(Table, ParseResOld)
241-
),
242-
Pos).
243-
237+
NeedTimestampPass = lists:any(
238+
fun({_, _, State}) -> State#state.need_timestamp_pass
239+
end, ParseRes),
240+
case NeedTimestampPass of
241+
true ->
242+
PR = make_sql_upsert_insert(Table, ParseRes),
243+
PRO = make_sql_upsert_insert(Table, ParseResOld),
244+
set_pos(
245+
make_schema_check(
246+
erl_syntax:list([erl_syntax:tuple([erl_syntax:atom(pgsql), make_sql_query(PR, pgsql)]),
247+
erl_syntax:tuple([erl_syntax:atom(any), make_sql_query(PR)])]),
248+
erl_syntax:list([erl_syntax:tuple([erl_syntax:atom(pgsql), make_sql_query(PRO, pgsql)]),
249+
erl_syntax:tuple([erl_syntax:atom(any), make_sql_query(PRO)])])),
250+
Pos);
251+
_ ->
252+
set_pos(
253+
make_schema_check(
254+
make_sql_insert(Table, ParseRes),
255+
make_sql_insert(Table, ParseResOld)
256+
),
257+
Pos)
258+
end.
244259

245260
parse(S, Loc, UseNewSchema) ->
246261
parse1(S, [],

0 commit comments

Comments
 (0)