diff options
author | Paweł Chmielowski <pchmielowski@process-one.net> | 2020-12-04 13:03:55 +0100 |
---|---|---|
committer | Paweł Chmielowski <pchmielowski@process-one.net> | 2020-12-04 13:03:55 +0100 |
commit | d34227cae1f67dd33fd97af57298df4646ccb36f (patch) | |
tree | bb3ee8a39e4f488c60dda566bd30566b4269d8e0 | |
parent | Fix more places that needed changes after scram.erl api modifications (diff) |
Use specialized upsert with mysql
-rw-r--r-- | src/ejabberd_sql_pt.erl | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/ejabberd_sql_pt.erl b/src/ejabberd_sql_pt.erl index d47eeac09..66b2e9c59 100644 --- a/src/ejabberd_sql_pt.erl +++ b/src/ejabberd_sql_pt.erl @@ -559,6 +559,11 @@ make_sql_upsert(Table, ParseRes, Pos) -> [make_sql_upsert_pgsql901(Table, ParseRes), erl_syntax:atom(ok)]), erl_syntax:clause( + [erl_syntax:atom(mysql), erl_syntax:underscore()], + [], + [make_sql_upsert_mysql(Table, ParseRes), + erl_syntax:atom(ok)]), + erl_syntax:clause( [erl_syntax:underscore(), erl_syntax:underscore()], none, [make_sql_upsert_generic(Table, ParseRes)]) @@ -628,6 +633,9 @@ make_sql_upsert_update(Table, ParseRes) -> State. make_sql_upsert_insert(Table, ParseRes) -> + make_sql_upsert_insert_replace(Table, ParseRes, "INSERT"). + +make_sql_upsert_insert_replace(Table, ParseRes, Keyword) -> Vals = lists:map( fun({_Field, _, ST}) -> @@ -640,7 +648,7 @@ make_sql_upsert_insert(Table, ParseRes) -> end, ParseRes), State = concat_states( - [#state{'query' = [{str, "INSERT INTO "}, {str, Table}, {str, "("}]}, + [#state{'query' = [{str, Keyword ++" INTO "}, {str, Table}, {str, "("}]}, join_states(Fields, ", "), #state{'query' = [{str, ") VALUES ("}]}, join_states(Vals, ", "), @@ -648,6 +656,16 @@ make_sql_upsert_insert(Table, ParseRes) -> ]), State. +make_sql_upsert_replace(Table, ParseRes) -> + make_sql_upsert_insert_replace(Table, ParseRes, "REPLACE"). + +make_sql_upsert_mysql(Table, ParseRes) -> + Replace = make_sql_query(make_sql_upsert_replace(Table, ParseRes)), + erl_syntax:application( + erl_syntax:atom(ejabberd_sql), + erl_syntax:atom(sql_query_t), + [Replace]). + make_sql_upsert_pgsql901(Table, ParseRes0) -> ParseRes = lists:map( fun({"family", A2, A3}) -> {"\"family\"", A2, A3}; |