diff options
author | Carlo Zancanaro <carlo@clearboxsystems.com.au> | 2013-05-15 16:57:39 +1000 |
---|---|---|
committer | Carlo Zancanaro <carlo@clearboxsystems.com.au> | 2013-05-15 16:57:39 +1000 |
commit | 318dcc01c54893aa58a4960638f2aa74fe36921e (patch) | |
tree | 00f0f3082ecf74ae91f2c68f172f7d96228cec61 /src/clojure_sql/compiler.clj | |
parent | 47ffb78fccb44d62db29971dcb6e6d750869e1a7 (diff) |
Fix query printing, operators, make joins better (also implicit on clause)
Queries now print out their `compile-query` output when they are printed,
rather than complaining about `print-method`. This is completely a better idea,
so whoo!
Operators now compile more nicely, and SQL functions can be used too. So stuff
like (substring :name 1 3) will work for getting the first three letters of the
:name field.
Joins now handle outer stuff more nicely, and compile to "INNER JOIN" rather
than just "JOIN" (they're the same in SQL, but this makes the intent more
clear). Additionally, joins now automatically add an equality constraint to
fields which are aliased the same. So if two relations have shared fields then
(join rel1 rel2) will give the natural join of the two relations (an on clause
can still be provided, but it will be put in a conjunction with the implicit
one). If the implicit on is generated for an OUTER join then the duplicate
field which cannot be NULL is the one which will be selected (for INNER joins,
or joins without an implicit on, there is no ambiguity).
Diffstat (limited to 'src/clojure_sql/compiler.clj')
0 files changed, 0 insertions, 0 deletions