* Conversion of statements, procedures and functions parameters (CHAR and VARCHAR) to UTF8 in trace log
* cloop interface version check is added for getTextUTF8 function
- Fixed bug in delete_version_chain: chain of one element was not deleted leaving orphan record versions.
- list_staying changes input record (rpb), if record was changed concurrently while backversion chain was walked.
It not allows VIO_intermediate_gc to detect change of primary record version and allow it to delete old backversions
while list_staying_fast walks the chain. To avoid it, forbid list_staying to re-read primary record version if
such change is detected. Also, list_staying_fast now checks just read backversion and exits in case of check
failure (instead of BUGCHECK's later in VIO_data).
Instead of just assuming /tmp, check TMPDIR, and fall back to /tmp
on systems that aren't POSIX-compliant.
(Building Firebird failed for me on a machine that overrides TMPDIR.)
It allows to use list_staying_fast() instead of slow list_staying().
Make user attachment to not call VIO_intermediate_gc() at VIO_chase_record_version() as it is almost
useless and could add significant perfomance penalty.
Make intermediate gc to honour ATT_no_cleanup flag and LCK_rel_gc lock (i.e. disable intermediate gc while
online validation running)
Make page precedence work correctly when new versions chain is created and attached to the primary
record version.
Update snapshots list used in gc\sweep threads.
Experimental\questionable:
- disable garbage_collect() call from list_staying_fast() as it probably could lead to
broken versions chains (no proof so far)
- limit number of "restarts" when list_staying walk record which is actively changed
- RECORD_IMGC - number of successful calls of VIO_intermediate_gc, and
- RECORD_IMGC_FAIL - number of failed calls of VIO_intermediate_gc
Corresponding columns in MON$RECORD_STATS:
- MON$RECORD_IMGC
- MON$RECORD_IMGC_FAIL
RECORD_IMGC_FAIL sooner of all shouldn't be included into final code,
but it is useful when developing