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