anchor.diff:  -spec rollback(connection())
       -> ok | {error, Reason :: binary()}.
   rollback(C) ->
  -    gen_server:call(C, rollback, infinity).
  +    case gen_server:call(C, rollback, infinity) of
  +    ok -> {ok, C};
  +    {error, _} ->
  +        {ok, Msg} = gen_server:call(C, get_last_error, infinity),
  +        {error, Msg}
  +    end.
   
   -spec close(efirebirdsql:connection())
       -> ok | {error, Reason :: binary()}.
  
positive.code: -spec connect(connection(), string(), string(), string(), string(), [connect_option()])
          -> ok | {error, Reason :: binary}.
  connect(C, Host, Username, Password, Database, Ops) ->
      gen_server:call(C, {connect, Host, Username, Password, Database, Ops}, infinity).
  
  -spec connect(string(), string(), string(), string(), [connect_option()])
          -> {ok, Connection :: connection()} | {error, Reason :: binary()}.
  connect(Host, Username, Password, Database, Ops) ->
      {ok, C} = start_link(),
      case connect(C, Host, Username, Password, Database, Ops) of
      ok -> {ok, C};
      Error = {error, _} -> Error
      end.
  
  -spec prepare(connection(), binary())
      -> ok | {error, Reason :: binary()}.
  prepare(C, QueryString) ->
      gen_server:call(C, {prepare, QueryString}, infinity).
  
  -spec execute(connection(), binary(), list())
          -> ok | {error, Reason :: binary()}.
  
negative.code: -spec fetchone(connection())
          -> {ok, list()} | {error, Reason :: binary()}.
  fetchone(C) ->
      case gen_server:call(C, fetchone, infinity) of
      ok -> {ok, C};
      {error, _} ->
          {ok, Msg} = gen_server:call(C, get_last_error, infinity),
          {error, Msg}
      end.
  
  -spec fetchall(connection())
          -> {ok, list()} | {error, Reason :: binary()}.
  fetchall(C) ->
      case gen_server:call(C, fetchall, infinity) of
      ok -> {ok, C};
      {error, _} ->
          {ok, Msg} = gen_server:call(C, get_last_error, infinity),
          {error, Msg}
      end.
  
  -spec commit(connection())
      -> ok | {error, Reason :: binary()}.
  