Em 16/01/2017 16:42, Dmitry Yemanov escreveu: > 15.01.2017 21:49, Dimitry Sibiryakov wrote: >> >>> When a DDL command is issued, it will not change metadata directly. It >>> will change metadata in a memory structure tied to the current transaction. >> >> I would prefer other approach: DDL command change metadata in database >> directly and >> immediately. Every other transaction use ordinary versioning mechanics to >> see database >> (including metadata) in consistent state according to TIL. Metadata cache is >> either >> reduced or expanded to follow metadata versions in database. DFW is reduced >> to simple >> check for object valid state which is performed on base of ordinary undo log. > > Both ideas could work for views, procedures/functions, triggers -- > they're just objects in memory. But I fail to see how these ideas are > going to work for table format changes. How would records be stored > accordingly to the "virtual" formats? How are formats going to be > uniquely (but without gaps!) numbered across uncommitted transactions? > How concurrent readers should access/skip physically stored records if > their format is unknown/invisible for them? >
DML changes in the same transaction uses real metadata, i.e., DDL being changed does not affect DML or metadata cache. Virtual metadata is specific to DDL. Record format will be generated when applying the changes in commit. Adriano ------------------------------------------------------------------------------ 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