On 6/1/26 15:02, 'Dimitry Sibiryakov' via firebird-devel wrote:
> 'Alex Peshkoff' via firebird-devel wrote 01.06.2026 13:52:
>> That's also possible in theory but required version of object may be
>> already gone.
>
> In this case comparison in guaranteed to fail anyway, right?
Not completely. Imagine table T1 has fields F1, F2. Some user statement
has among other
select f1, f2, from T1 ..................
It's prepared but runs rarely. Once upon a time field is added to T1. It
certainly does not affect format of message used by user request. Time
goes (interesting transaction numbers grow), statement has no active
requests, and old copy of T1 is removed from cache. Now user wants to
execute request based on that statement - and what? Yes, we can treat it
as definitely wrong, if that old copy of T1 is missing. That's possible
approach, I've chosen another one.
> If no, the version must be kept in the cache until is surely unneeded.
>
>> Logon without correct password is not critical? Are you kidding?
>
> Not "logon without correct password", but "more than one correct
> password with very low probability", i.e. the system is slightly more
> vulnerable to a brute force attack. Not critical.
Pay attention that with skipped old format you will in the worst case
return to pre-6 behavior - get strange error message about BLR, offset,
etc. Average user goes mad - but nothing critical.
>
>> SHA256, hash has obviously size of 256 bits, i.e. 4 pointers. IMO not
>> critical from RAM usage POV but collision hardly possible.
>
> Still right algorithms should perform full comparison after hash match.
> Rule of the thumb: different hashes - surely different data, same
> hashes - probably different data.
>
Yes, and that will be done by BLR execution code. But possibility is
very low...