24.03.2017 02:29, Mark Rotteveel wrote:

> To me the behavior described under "actual" intuitively sounds like the
> correct behavior. Why do you expect that the column value would change
> to 'ABC'?

This is really a tricky case. The "replace non-existing value with the 
default one" hack is a native Firebird feature that's not covered by the 
standard, it allows adding fields without updating the whole table. The 
question is what default value must be used, if there are/were many.

Firebird is known to upgrade the record format while reading. "Upgrade" 
here means using the latest (aka current) format. The current format is 
the one that can be seen in RDB$RELATION_FIELDS. So one may expect that 
the default value to be used is also the latest one, that's stored in 
RDB$ tables. IIRC, this is how FB 2.5 works.

 From another side, storing the default value inside the format is a 
smart hack that allows to avoid updating the table. It was designed to 
act like an implicit update but without the overhead. And considering 
the update semantics, the new behaviour may look correct.

The big question is what expectations are better suitable to our users.


Dmitry


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to