[Firebird-devel] ExprNode::FLAG_VALUE

2022-01-05 Thread Adriano dos Santos Fernandes
Hi!

There is ExprNode::FLAG_VALUE ("Full value area required in impure
space"), inherited from old (2.5) code base nod_value.

It's set by sort subsystem and used only for parameters and variables.

It makes then allocate impure space for impure_value_ex instead of
traditional dsc.

Most nodes allocate space for impure_value. But not all of them.

Literals directly return the descriptor set in compile time.

I see no usage of the expressions impure_value in sort. And if they were
using, we'd certainly have a problem with literals.

I see no need to have this flag.

Do anyone see something I'm not seeing?


Adriano


Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel


Re: [Firebird-devel] Commit (un)certainity

2022-01-05 Thread Jiří Činčura
>Yes. You probably have the same problem in your provider, no?

The problem exists there. Same as with fbclient. But I don't explicitly solve 
it, application developer is responsible for handling such scenario (if ever).

-- 
Mgr. Jiří Činčura
https://www.tabsoverspaces.com/



Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel


Re: [Firebird-devel] Commit (un)certainity

2022-01-05 Thread Adriano dos Santos Fernandes
Em qua., 5 de jan. de 2022 17:14, Dimitry Sibiryakov 
escreveu:

> Jiří Činčura wrote 05.01.2022 19:44:
> > You're probably thinking about something in client library?
>
>Yes. You probably have the same problem in your provider, no?


If no response or network error is returned, application will be stuck,
will receive the error or will receive a timeout error.

It looks like an application thing, not a driver thing.


Adriano
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel


Re: [Firebird-devel] Commit (un)certainity

2022-01-05 Thread Dimitry Sibiryakov

Jiří Činčura wrote 05.01.2022 19:44:

You're probably thinking about something in client library?


  Yes. You probably have the same problem in your provider, no?

--
  WBR, SD.


Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel


Re: [Firebird-devel] Commit (un)certainity

2022-01-05 Thread Vlad Khorsun

05.01.2022 15:03, Dimitry Sibiryakov wrote:

   Hello All.

   It is documented that successful return from function send() for TCP doesn't mean successful delivery of data to the target host, 
mere put them into socket buffer.

   If op_commit is sent but network error appear during waiting for response 
there can be two cases:
   1) op_commit packet is lost on its way to server;
   2) op_response is lost on its way to client.

   In the first case the transaction on server is rolled back in the latter - 
committed successfully.

   Is there a way to handle such situation? 


  2PC protocol was developed for this kind of problems.


   Using of two round-trips cannot solve the problem, only shift point of 
uncertainty.


  2PC allows to know trasaction state and fix half-done commit.

Regards,
Vlad


Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel


Re: [Firebird-devel] Commit (un)certainity

2022-01-05 Thread Jiří Činčura
One way to handle this is via manual inserts (and deletes) in a dedicated 
table. Something like:

1. Insert a row into the table at the beginning of each transaction.
2. If the connection fails during the commit, check for the presence of the 
corresponding row in the database.
- If the row is present, continue normally, as the transaction was committed 
successfully
- If the row is absent, use an execution strategy to retry the current 
operation.
3. If the commit is successful, delete the corresponding row to avoid the 
growth of the table.

But this needs support on application level. You're probably thinking about 
something in client library?

-- 
Mgr. Jiří Činčura
https://www.tabsoverspaces.com/


Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel


[Firebird-devel] Commit (un)certainity

2022-01-05 Thread Dimitry Sibiryakov

  Hello All.

  It is documented that successful return from function send() for TCP doesn't 
mean successful delivery of data to the target host, mere put them into socket 
buffer.
  If op_commit is sent but network error appear during waiting for response 
there can be two cases:

  1) op_commit packet is lost on its way to server;
  2) op_response is lost on its way to client.

  In the first case the transaction on server is rolled back in the latter - 
committed successfully.


  Is there a way to handle such situation? Using of two round-trips cannot 
solve the problem, only shift point of uncertainty.


--
  WBR, SD.


Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel


[Firebird-devel] Commit (un)certainity

2022-01-05 Thread Dimitry Sibiryakov

  Hello All.

  It is documented that successful return from function send() for TCP doesn't 
mean successful delivery of data to the target host, mere put them into socket 
buffer.
  If op_commit is sent but network error appear during waiting for response 
there can be two cases:

  1) op_commit packet is lost on its way to server;
  2) op_response is lost on its way to client.

  In the first case the transaction on server is rolled back in the latter - 
committed successfully.


  Is there a way to handle such situation? Using of two round-trips cannot 
solve the problem, only shift point of uncertainty.


--
  WBR, SD.


Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel


[Firebird-devel] Timeout on batch

2022-01-05 Thread Jiří Činčura
Hi *,

Is there a way to send timeout value for batch, same way it's now possible for 
single statements (op_execute/op_execute2)?

-- 
Mgr. Jiří Činčura
https://www.tabsoverspaces.com/


Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel