19.01.2018 04:10, Adriano dos Santos Fernandes wrote:

Most of types generates reversible sort keys, so only key is written in
sort blocks and data is regenerated from it.

INTL strings (IS_INTL_DATA) does not generate reversible sort keys, so
original data is also written.

I think there is an unnecessary pass for them, there is no need to
regenerate data from the key in this case (when direction == 0).

Agreed.

See attached patch.

Is it correct?

I'd check just for IS_INTL_DATA(), without SKD* conditions. This macro already checks for strings inside. And AFAIU, DECFLOAT should also be handled this way:

if (IS_INTL_DATA(desc) || desc->isDecFloat())
{
  sort_key->skd_flags |= SKD_separate_data;
}



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