03.03.2016 18:34, Slavomir Skopalik wrote:
>
> But value encoding cannot be implemented until we switch from fragment
> compression to true record level compression.
I was not speaking about any encoding, just about compacting the record.
Fragments are not compressed independently. The whole record is being
prepared for compression (control bytes are generated) and then splitted
into multiple chunks accordingly to the control bytes, so that a single
compressed sequence is not interrupted in the middle:
'aaaaoooiiiuee'
{-4, 'a'} ! {-3, 'o'} ! {-3, 'i'} ! {1, 'u'} ! {2, 'ee'}
This compressed sequence can be fragmented at any of the "!" points.
This is needed to decompress them separately, without copying all the
fragments into a single buffer before decompressing, i.e. fragment by
fragment.
But for the pack/unpack approach, we just copy data in chunks. Some
field may have first N bytes stored in fragment 1 and the remaining M
bytes stored in fragment 2. We know we need N+M bytes for the record. So
we copy N bytes from fragment 1, release the page, fetch fragment 2 and
continue copying N+1..M bytes into the record. Fragmenting is even
easier than now, it can happen at any place.
Am I missing something obvious?
Dmitry
------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel