I guess so, number of columns do have overhead on selection & copy/paste operation because of arbitrary copy paste feature, now we have to scan start cell (first selected cell) & end cell (last selected cell) for each row, In old code we were selecting complete row which was fast but now user can select different columns as well, so we have to iterate over each selected columns.
With this patch grid/column select all time is reduce to ~1 second from 8-10 seconds.
This benchmarking is performed with 100k rows and 2 columns (int, text).
I see very little improvement (~15s to 14s). My test case has 108786 rows in it, and is generated from the query:
select * from pg_class c, pg_attribute a where c.oid = a.attrelid
union all
select * from pg_class c, pg_attribute a where c.oid = a.attrelid
union all
select * from pg_class c, pg_attribute a where c.oid = a.attrelid
union all
select * from pg_class c, pg_attribute a where c.oid = a.attrelid
Maybe the number of columns has something to do with it?
AND... I'm still left with nothing being copied to the clipboard (the main issue by the way, which no patch for this so far seems to have tackled).
Thanks.
The solution was to use simple array concatenation instead of underscore union while getting index of all selected complete rows.
Underscore union function is only useful when user selects different ranges from grid and those ranges overlaps. In this case union function removes duplicate (overlapped) rows.
However result grid in sqleditor do not support overlapped row selection so we can simply cancat rows from different ranges without worrying about overlapped row selection.