diff --git a/c_src/esqlite3_nif.c b/c_src/esqlite3_nif.c index 50cc3f7..361c425 100644 --- a/c_src/esqlite3_nif.c +++ b/c_src/esqlite3_nif.c @@ -943,7 +943,7 @@ esqlite_backup_step(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]) int rc = sqlite3_backup_step(backup->backup, n_page); if(rc == SQLITE_DONE) { - return make_atom(env, "done"); + return make_atom(env, "$done"); } if(rc != SQLITE_OK) { diff --git a/src/esqlite3.erl b/src/esqlite3.erl index ea462fa..8a4cdf0 100644 --- a/src/esqlite3.erl +++ b/src/esqlite3.erl @@ -430,22 +430,28 @@ backup_init(#esqlite3{db=Dest}, DestName, #esqlite3{db=Src}, SrcName) -> end. %% @doc Release the resources held by the backup. --spec backup_finish(esqlite3_backup()) -> ok | {error, _}. +-spec backup_finish(Backup) -> Result when + Backup :: esqlite3_backup(), + Result :: ok | error(). backup_finish(#esqlite3_backup{backup=Backup}) -> esqlite3_nif:backup_finish(Backup). %% @doc Do a backup step. --spec backup_step(esqlite3_backup(), integer()) -> ok | {error, _}. +-spec backup_step(esqlite3_backup(), integer()) -> ok | '$done' | error(). backup_step(#esqlite3_backup{backup=Backup}, NPage) -> esqlite3_nif:backup_step(Backup, NPage). %% @doc Get the remaining number of pages which need to be backed up. --spec backup_remaining(esqlite3_backup()) -> pos_integer(). +-spec backup_remaining(Backup) -> Remaining when + Backup :: esqlite3_backup(), + Remaining :: integer(). backup_remaining(#esqlite3_backup{backup=Backup}) -> esqlite3_nif:backup_remaining(Backup). %% @doc Get the remaining number of pages which need to be backed up. --spec backup_pagecount(esqlite3_backup()) -> pos_integer(). +-spec backup_pagecount(Backup) -> Pagecount when + Backup :: esqlite3_backup(), + Pagecount :: integer(). backup_pagecount(#esqlite3_backup{backup=Backup}) -> esqlite3_nif:backup_pagecount(Backup). diff --git a/src/esqlite3_nif.erl b/src/esqlite3_nif.erl index e6a1511..e341f82 100644 --- a/src/esqlite3_nif.erl +++ b/src/esqlite3_nif.erl @@ -224,25 +224,37 @@ column_decltypes(_Stmt) -> %% @doc Initialize a backup procedure of a database. -% erlang:nif_error(nif_library_not_loaded). -spec backup_init(Destination, DestinationName, Source, SourceName) -> InitResult when Destination :: esqlite3_ref(), DestinationName :: iodata(), Source :: esqlite3_ref(), SourceName :: iodata(), - InitResult :: {ok, esqlite3_backup_ref()} | {error, _}. + InitResult :: {ok, esqlite3_backup_ref()} | error(). backup_init(_Dest, _DestName, _Src, _SrcName) -> erlang:nif_error(nif_library_not_loaded). +-spec backup_remaining(Backup) -> Remaining when + Backup :: esqlite3_backup_ref(), + Remaining :: integer(). backup_remaining(_Backup) -> erlang:nif_error(nif_library_not_loaded). +-spec backup_pagecount(Backup) -> Pagecount when + Backup :: esqlite3_backup_ref(), + Pagecount :: integer(). backup_pagecount(_Backup) -> erlang:nif_error(nif_library_not_loaded). +-spec backup_step(Backup, NPage) -> Result when + Backup :: esqlite3_backup_ref(), + NPage :: integer(), + Result :: ok | '$done' | error(). backup_step(_Backup, _PageCount) -> erlang:nif_error(nif_library_not_loaded). +-spec backup_finish(Backup) -> Result when + Backup :: esqlite3_backup_ref(), + Result :: ok | error(). backup_finish(_Backup) -> erlang:nif_error(nif_library_not_loaded). diff --git a/test/esqlite_test.erl b/test/esqlite_test.erl index 5238204..6cf8de7 100644 --- a/test/esqlite_test.erl +++ b/test/esqlite_test.erl @@ -430,7 +430,7 @@ backup_test() -> 0 = esqlite3:backup_remaining(Backup), 0 = esqlite3:backup_pagecount(Backup), - done = esqlite3:backup_step(Backup, 1), + '$done' = esqlite3:backup_step(Backup, 1), cleanup(), @@ -467,7 +467,7 @@ backup1_test() -> 27 = esqlite3:backup_pagecount(Backup), %% Do all the remaining pages. - done = esqlite3:backup_step(Backup, -1), + '$done' = esqlite3:backup_step(Backup, -1), 0 = esqlite3:backup_remaining(Backup), 27 = esqlite3:backup_pagecount(Backup),