Today we’ve added a new build that adds support for INTERSECT and EXCEPT set operations.
These take two SELECT statements before and after. The INTERSECT set operation will return the common rows between the two tables, and EXCEPT , will remove any rows contained in Query2 from query1.
An example query using INTERSECT would like:
SELECT * FROM table1
INTERSECT
SELECT * from table2
We implemented this by doing a natural sort on all the columns in both tables, then doing a merge between them to find the common rows.
We overhauled our sorting algorithm when sorting large tables with large numbers of columns. Previously we had been using BigIntegers for a lot of this sorting. However this was very slow when sorting on large numbers of columns. Our new improved algorithms uses structs of longs of various sizes, and dynamically generates code and compiles to do the sort setup.
We’ve also improved IRDB_Query, adding an edit menu, improving the color scheme and a variety of other tweeks and improvements.