diff --git a/doc/migrations/6.2.1_x.x.x.md b/doc/migrations/6.2.1_x.x.x.md index aa44fe3675..08e5e797d1 100644 --- a/doc/migrations/6.2.1_x.x.x.md +++ b/doc/migrations/6.2.1_x.x.x.md @@ -111,7 +111,7 @@ Restart the node or cluster. ## Support for the new RDBMS database - CockroachDB -We've introduced support for a new RDBMS database, CockroachDB. To ensure compatibility and proper functionality, we've also added a new test preset: `cockroachdb_cets`. +We've introduced support for a new RDBMS database, CockroachDB. To configure CockroachDB, update the connection settings in your configuration file as follows: ```toml diff --git a/src/rdbms/mongoose_rdbms.erl b/src/rdbms/mongoose_rdbms.erl index 8f7af7c93d..2a7abde452 100644 --- a/src/rdbms/mongoose_rdbms.erl +++ b/src/rdbms/mongoose_rdbms.erl @@ -915,7 +915,7 @@ abort_on_driver_error({error, "Failed sending data on socket" ++ _}) -> %% mysql abort_on_driver_error(_) -> continue. --spec db_engine(mongooseim:host_type_or_global()) -> odbc | mysql | pgsql | cockroachdb | undefined. +-spec db_engine(mongooseim:host_type_or_global()) -> backend() | undefined. db_engine(_HostType) -> try mongoose_backend:get_backend_name(global, ?MODULE) catch error:badarg -> undefined end. diff --git a/src/rdbms/mongoose_rdbms_cockroachdb.erl b/src/rdbms/mongoose_rdbms_cockroachdb.erl index b113e3b084..2d77a5c392 100644 --- a/src/rdbms/mongoose_rdbms_cockroachdb.erl +++ b/src/rdbms/mongoose_rdbms_cockroachdb.erl @@ -1,19 +1,3 @@ -%%============================================================================== -%% Copyright 2016 Erlang Solutions Ltd. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%%============================================================================== - -module(mongoose_rdbms_cockroachdb). -author('janusz.jakubiec@erlang-solutions.com'). -behaviour(mongoose_rdbms_backend). diff --git a/src/rdbms/rdbms_queries.erl b/src/rdbms/rdbms_queries.erl index 5f647f80fc..04089f262d 100644 --- a/src/rdbms/rdbms_queries.erl +++ b/src/rdbms/rdbms_queries.erl @@ -172,10 +172,10 @@ prepare_upsert(HostType, Name, Table, InsertFields, Updates, UniqueKeyFields) -> IncrementalField :: none | binary()) -> {ok, QueryName :: mongoose_rdbms:query_name()} | {error, already_exists}. prepare_upsert(HostType, Name, Table, InsertFields, Updates, UniqueKeyFields, IncrementalField) -> - InsertFieldsTransformed = transform_fields(HostType, InsertFields), - UpdatesTransformed = transform_fields(HostType, Updates), - UniqueKeyFieldsTransformed = transform_fields(HostType, UniqueKeyFields), - IncrementalFieldTransformed = transform_fields(HostType, IncrementalField), + InsertFieldsTransformed = format_fields_for_db(HostType, InsertFields), + UpdatesTransformed = format_fields_for_db(HostType, Updates), + UniqueKeyFieldsTransformed = format_fields_for_db(HostType, UniqueKeyFields), + IncrementalFieldTransformed = format_fields_for_db(HostType, IncrementalField), SQL = upsert_query(HostType, Table, InsertFieldsTransformed, UpdatesTransformed, UniqueKeyFieldsTransformed, IncrementalFieldTransformed), Query = iolist_to_binary(SQL), @@ -212,9 +212,9 @@ prepared_upsert_many_fields(RecordCount, InsertFields, Updates, _UniqueKeyFields UniqueKeyFields :: [binary()]) -> {ok, QueryName :: mongoose_rdbms:query_name()} | {error, already_exists}. prepare_upsert_many(HostType, RecordCount, Name, Table, InsertFields, Updates, UniqueKeyFields) -> - InsertFieldsTransformed = transform_fields(HostType, InsertFields), - UpdatesTransformed = transform_fields(HostType, Updates), - UniqueKeyFieldsTransformed = transform_fields(HostType, UniqueKeyFields), + InsertFieldsTransformed = format_fields_for_db(HostType, InsertFields), + UpdatesTransformed = format_fields_for_db(HostType, Updates), + UniqueKeyFieldsTransformed = format_fields_for_db(HostType, UniqueKeyFields), SQL = upsert_query_many(HostType, RecordCount, Table, InsertFieldsTransformed, UpdatesTransformed, UniqueKeyFieldsTransformed), Query = iolist_to_binary(SQL), @@ -469,16 +469,16 @@ limit_offset_args(Limit, Offset) -> limit_offset_args(mssql, Limit, Offset) -> [Offset, Limit]; limit_offset_args(_, Limit, Offset) -> [Limit, Offset]. -transform_fields(_, none) -> +format_fields_for_db(_, none) -> none; -transform_fields(HostType, Fields) when is_list(Fields) -> +format_fields_for_db(HostType, Fields) when is_list(Fields) -> case mongoose_rdbms:db_engine(HostType) of cockroachdb -> lists:map(fun(Element) -> transform_field(Element) end, Fields); _ -> Fields end; -transform_fields(HostType, Field) when is_binary(Field) -> +format_fields_for_db(HostType, Field) when is_binary(Field) -> case mongoose_rdbms:db_engine(HostType) of cockroachdb -> transform_field(Field); @@ -489,6 +489,4 @@ transform_fields(HostType, Field) when is_binary(Field) -> transform_field({_, Field, _} = Element) -> erlang:setelement(2, Element, transform_field(Field)); transform_field(Field) when is_binary(Field)-> - <<"\"", Field/binary, "\"">>; -transform_field(Element) -> - Element. + <<"\"", Field/binary, "\"">>.