Provides a implementation of the relational algebra based on the Java ResultSet interface.

In erlier versions of xxl, the classes for processing data with and without metadata were completly separated. So, two kinds of algorithms (in xxl.core.cursors and in xxl.core.relational) had to be maintained. Now, the algorithms in cursors has been extended with the concept of MetaDataCursors, so that they can be used in relational.

Using the cursors package has had some effects on the constructors, because the cursor package uses Predicates and Functions. The new relational package uses the {@link xxl.core.cursors.MetaDataCursor} instead of ResultSet. But there are also constructors that use ResultSets as input parameters. These ResultSets are wrapped to MetaDataCursors using the class {@link xxl.core.relational.cursors.ResultSetMetaDataCursor}.

Be careful when you have null values inside your sources! Then, your Predicates and Comparators have to be able to handle this. The objects returned from methods in {@link xxl.core.relational.Tuples} support this handling. To convert a comparator to handle null-values see {@link xxl.core.comparators.Comparators}. For predicates: {@link xxl.core.predicates.Predicates}.

Some major changes compared to the old relational package