anchor.diff:      ok = efirebirdsql:execute(C2, [<<"c">>]),
       {ok, ResultAll5} = efirebirdsql:fetchall(C2),
       ?assertEqual(length(ResultAll5),  1),
  -
       ok = efirebirdsql:prepare(C2, <<"select * from foo">>),
       ok = efirebirdsql:execute(C2),
       {ok, ResultAll6} = efirebirdsql:fetchall(C2),
       ?assertEqual(length(ResultAll6),  2),
   
  +    %% insert .. returning
       ok = efirebirdsql:execute(C2, <<"insert into foo(a, b) values (3, 'c') returning a, b">>),
       {ok, ResultReturning} = efirebirdsql:fetchone(C2),
       ?assertEqual(ResultReturning,  [{<<"A">>,3}, {<<"B">>,<<"c">>}]),
  
positive.code:     {ok, ResultAll3} = efirebirdsql:fetchall(C2),
      ?assertEqual(length(ResultAll3),  1),
  
      ok = efirebirdsql:prepare(C2, <<"select * from foo where c=?">>),
      ok = efirebirdsql:execute(C2, [<<"C">>]),
      {ok, ResultAll4} = efirebirdsql:fetchall(C2),
  
negative.code:     {error, ErrMsg2} = efirebirdsql:prepare(C, <<"bad query statement">>),
      {error, ErrMsg2} = efirebirdsql:execute(C, <<"bad query statement">>),
  
      %% field name
      ok = efirebirdsql:execute(C, <<"select a alias_name from foo">>),
      ?assertEqual(efirebirdsql:description(C), alias_description()),
  
      %% fetchall
      ok = efirebirdsql:execute(C, <<"select * from foo order by a">>),
      ?assertEqual(efirebirdsql:description(C), description()),
      {ok, ResultAll} = efirebirdsql:fetchall(C),
      ?assertEqual(ResultAll,  [result1(), result2()]),
  
      %% fetch one by one
      ok = efirebirdsql:execute(C, <<"select * from foo order by a">>),
      {ok, ResultOne} = efirebirdsql:fetchone(C),
      ?assertEqual(ResultOne, result1()),
      {ok, ResultTwo} = efirebirdsql:fetchone(C),
      ?assertEqual(ResultTwo, result2()),
  
      %% query with parameter
      ok = efirebirdsql:execute(C, <<"select * from foo where a=?">>, [1]),
      {ok, ResultA1} = efirebirdsql:fetchall(C),
      ?assertEqual(ResultA1, [result1()]),
      ok = efirebirdsql:execute(C, <<"select * from foo where b=?">>, [<<"B">>]),
      {ok, ResultB2} = efirebirdsql:fetchall(C),
      ?assertEqual(ResultB2, [result2()]),
  
      ok = efirebirdsql:close(C),
  
      %% commit and rollback
      {ok, C2} = efirebirdsql:connect(
          "localhost", "sysdba", "masterkey", "/tmp/erlang_test.fdb",
          [{auto_commit, false}]),
  