Skip to content

Commit

Permalink
Fix Dialyzer issues and add step to CI to check Dialyzer
Browse files Browse the repository at this point in the history
onno-vos-dev committed Jul 25, 2022
1 parent 7b66bcd commit be5bc63
Showing 7 changed files with 25 additions and 20 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -24,3 +24,5 @@ jobs:
run: make compile
- name: Xref
run: make xref
- name: Dialyzer
run: make dialyzer
3 changes: 3 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -6,6 +6,9 @@ compile:
xref:
@$(REBAR) xref

dialyzer:
@$(REBAR) dialyzer

clean:
@$(REBAR) clean

12 changes: 6 additions & 6 deletions include/epgl_int.hrl
Original file line number Diff line number Diff line change
@@ -27,16 +27,16 @@

-record(relation_column, {
flags :: integer(),
name :: binary(),
data_type_id :: integer(),
atttypmod :: integer()
name :: binary() | undefined,
data_type_id :: integer() | undefined,
atttypmod :: integer() | undefined
}).

-record(relation_msg, {
id :: integer(),
namespace :: binary(),
name :: binary(),
replica_identity :: integer(),
replica_identity :: integer() | undefined,
num_columns :: integer(),
columns :: [#relation_column{}]
}).
@@ -49,15 +49,15 @@

-record(column_value, {
kind :: column_value_kind(),
value :: binary()
value :: binary() | null | unchanged
}).

-record(row_msg, {
msg_type :: row_msg_type(),
relation_id :: integer(),
num_columns :: integer(),
columns :: [#column_value{}],
old_columns :: [#column_value{}],
old_columns :: [#column_value{}] | undefined,
tuple_type :: tuple_type()
}).

6 changes: 4 additions & 2 deletions src/epgl.erl
Original file line number Diff line number Diff line change
@@ -35,7 +35,9 @@
{username, Username :: string()} |
{password, Password :: string()}.

-export_type([connect_option/0]).
-type db_args() :: [connect_option()].

-export_type([connect_option/0, db_args/0]).

-spec start_subscriber(
SubscriberId :: atom(),
@@ -98,7 +100,7 @@ get_table_initial_state(Connection, TableName, SnapshotName) ->
Connection :: pid(),
ReplicationSets :: string(),
SnapshotName :: string(),
TablesOrder :: #{TableName :: binary() => Ord :: integer()}) ->
TablesOrder :: #{TableName :: binary() => Ord :: integer()} | undefined) ->
ok | {error, Reason :: term()}.
init_replication_set(Connection, ReplicationSets, SnapshotName, TablesOrder) ->
gen_server:call(Connection, {init_replication_set, ReplicationSets, SnapshotName, TablesOrder}, infinity).
6 changes: 3 additions & 3 deletions src/epgl_pglogical_decoder.erl
Original file line number Diff line number Diff line change
@@ -127,10 +127,10 @@ decode_tuple_fields(<<>>, _NumOfFields, Acc) ->
decode_tuple_fields(Rest, 0, Acc) ->
{lists:reverse(Acc), Rest};
decode_tuple_fields(<<?TUPLE_VALUE_KIND_NULL:8, Rest/binary>>, NumOfFields, Acc) ->
decode_tuple_fields(Rest, NumOfFields - 1,
decode_tuple_fields(Rest, NumOfFields - 1,
[#column_value{kind = decode_tuple_value_kind(?TUPLE_VALUE_KIND_NULL), value = null} | Acc]);
decode_tuple_fields(<<?TUPLE_VALUE_KIND_UNCHANGED:8, Rest/binary>>, NumOfFields, Acc) ->
decode_tuple_fields(Rest, NumOfFields - 1,
decode_tuple_fields(Rest, NumOfFields - 1,
[#column_value{kind = decode_tuple_value_kind(?TUPLE_VALUE_KIND_UNCHANGED), value = unchanged} | Acc]);
decode_tuple_fields(<<Kind:8, Length:32, Data:Length/bytes, Rest/binary>>, NumOfFields, Acc) ->
Value =
@@ -184,4 +184,4 @@ decode_tuple_value_kind(?TUPLE_VALUE_KIND_NULL) -> null;
decode_tuple_value_kind(?TUPLE_VALUE_KIND_UNCHANGED) -> unchanged;
decode_tuple_value_kind(?TUPLE_VALUE_KIND_TEXT) -> text;
decode_tuple_value_kind(?TUPLE_VALUE_KIND_BINARY) -> binary;
decode_tuple_value_kind(?TUPLE_VALUE_KIND_INTERNAL_BINARY) -> internal_binary.
decode_tuple_value_kind(?TUPLE_VALUE_KIND_INTERNAL_BINARY) -> internal_binary.
3 changes: 1 addition & 2 deletions src/epgl_pgoutput_decoder.erl
Original file line number Diff line number Diff line change
@@ -176,8 +176,7 @@ decode_tuple_type(?TUPLE_TYPE_OLD) -> old.

decode_msg_type(?MESSAGE_TYPE_INSERT) -> insert;
decode_msg_type(?MESSAGE_TYPE_UPDATE) -> update;
decode_msg_type(?MESSAGE_TYPE_DELETE) -> delete;
decode_msg_type(?MESSAGE_TYPE_TRUNCATE) -> truncate.
decode_msg_type(?MESSAGE_TYPE_DELETE) -> delete.

decode_tuple_value_kind(?TUPLE_VALUE_KIND_NULL) -> null;
decode_tuple_value_kind(?TUPLE_VALUE_KIND_UNCHANGED) -> unchanged;
13 changes: 6 additions & 7 deletions src/epgl_subscriber.erl
Original file line number Diff line number Diff line change
@@ -43,14 +43,14 @@
Rows :: [#row{}]) -> ok.

-record(state, {
db_connect_opts :: epgl:connect_option(),
conn :: pid(),
conn_normal :: pid(),
db_connect_opts :: epgl:db_args(),
conn :: pid() | undefined,
conn_normal :: pid() | undefined,
callbacks :: map(),
metadata = #{} :: map(),
rows = [] :: list(),
replication_slot :: string(),
replication_set :: string(),
replication_slot :: string() | undefined,
replication_set :: string() | undefined,
last_processed_lsn :: integer(),
check_lsn_mode :: skip | log | off,
max_reconnect_attempts :: integer() | infinite,
@@ -616,5 +616,4 @@ add_callback_data([Callback | Rest], CallbackData, RowData, TableName, ColumnsNa

get_option(auto_cast, Options) -> maps:get(auto_cast, Options, true);
get_option(binary_mode, Options) -> maps:get(binary_mode, Options, false);
get_option(reload_columns_on_metadata_msg, Options) -> maps:get(reload_columns_on_metadata_msg, Options, false);
get_option(Key, Options) -> maps:get(Key, Options, undefined).
get_option(reload_columns_on_metadata_msg, Options) -> maps:get(reload_columns_on_metadata_msg, Options, false).

0 comments on commit be5bc63

Please sign in to comment.