Subject | Re: [firebird-support] FB timestamp problems (a bit longer) |
---|---|
Author | Tomas Michalik |
Post date | 2004-01-15T13:08:45Z |
Hi Helen,
thanks for your answer.
Helen Borrie wrote:
tried now and it works on both platforms.
see changes in quantity that happened after it has started. Those
changes simply belong to next period.
The operation that logs the change in quantity (STOCK_ITEM_IN_OUT_LOG)
also changes the quantity registered on stock, so there can't be any
inconsistency. It all resides in one stored proc.
I know that using greater precision is not 100% efficient cure as there
still can be some change logged exactly at the same time as the
STOCK_CONTENTS_LOG logging process starts, but the probability is much
smaller. And we don't want to complicate it all just because of this
test.
And there was another question in my first message: Is it OK if FB
generates the same timestamps using cast('now' as timestamp) when it is
run under repeatable read transaction, while under read commited
transaction it would generate different timestamps ?
I mean, stored proc generates the first timestamp, then does something
else for a few seconds, and finally generates second timestamp.
Shouldn't timestamps generated this way be different no matter what the
transaction isolation is ?
Best regards,
Tom
P.S.
=================================
Tomas Michalik
ProCA, s. r. o.
V Luzich 818, Praha 4
Czech Republic
e-mail: michalik@...
tel: +420 234646446
thanks for your answer.
Helen Borrie wrote:
>Exactly.
> Unbelievable but true. As far as I understand it, it has to do with the
> granularity (or lack thereof) of low-level timer calls on some POSIX
> platforms with a consequent design decision to generalise on the lowest
> common denominator to preserve cross-platformness. I consider it as a bug
> until it a) becomes correctable and b) gets corrected.
> >But perhaps someone has a solution for this.Ahh, I've read that it is available only on win32 in the fbudf.sql. I
>
> In Firebird 1.5, you can use the UDF GetExactTimestamp(), in the library
> fbudf.so. It doesn't take any argument but returns the exact timestamp
> down to ten-thousandths of a second. The declaration is in fbudf.sql.
tried now and it works on both platforms.
> As for your timing and synchronicity problems...you appear to have someNo, I don't think so. The STOCK_CONTENTS_LOG logging process must not
> systemic flaws regarding transaction isolation and data visibility.
see changes in quantity that happened after it has started. Those
changes simply belong to next period.
The operation that logs the change in quantity (STOCK_ITEM_IN_OUT_LOG)
also changes the quantity registered on stock, so there can't be any
inconsistency. It all resides in one stored proc.
I know that using greater precision is not 100% efficient cure as there
still can be some change logged exactly at the same time as the
STOCK_CONTENTS_LOG logging process starts, but the probability is much
smaller. And we don't want to complicate it all just because of this
test.
And there was another question in my first message: Is it OK if FB
generates the same timestamps using cast('now' as timestamp) when it is
run under repeatable read transaction, while under read commited
transaction it would generate different timestamps ?
I mean, stored proc generates the first timestamp, then does something
else for a few seconds, and finally generates second timestamp.
Shouldn't timestamps generated this way be different no matter what the
transaction isolation is ?
Best regards,
Tom
P.S.
=================================
Tomas Michalik
ProCA, s. r. o.
V Luzich 818, Praha 4
Czech Republic
e-mail: michalik@...
tel: +420 234646446