Adding support for JOINs (#105)
vsql supports three types of JOIN operations:
1. `INNER JOIN` (or, more simply: `JOIN`).
2. `LEFT OUTER JOIN` (or, more simply: `LEFT JOIN`).
3. `RIGHT OUTER JOIN` (or, more simply: `RIGHT JOIN`).
For an `INNER JOIN`, only records that satisfy the ``<condition>`` in
*both* tables will be included.
Whereas `LEFT OUTER JOIN` and `RIGHT OUTER JOIN` will always include all
records from the *left* or *right* table respectively. Any record that
does not match the other side will be given all `NULL` values. The
*left* table is that defined by the `FROM` expressions and the *right*
table is that used in the `JOIN` clause.
This covers almost all of the mandatory SQL features to be "F041 Basic
joined table" compliant. The only feature that's missing is F041-07,
which is the ability to have more than JOIN clause.
There are also some other small improvements:
1. The syntax now supports a "qualified asterisk". This is the ability
to include all columns for a specific relation, such as "SELECT foo.*".
2. Since up until now we were only really dealing with one table there
was little reason for the syntax to allow identifier chains (even though
the planner supports it). An example of an identifier chain is "foo.bar"
and is now supported in expressions.