Skip to content

v0.20.0

Compare
Choose a tag to compare
@elliotchance elliotchance released this 27 Jun 13:22
· 72 commits to main since this release
2f542b5
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.