summaryrefslogtreecommitdiff
path: root/src/clojure_sql/util.clj
diff options
context:
space:
mode:
authorCarlo Zancanaro <carlo@clearboxsystems.com.au>2013-05-15 16:57:39 +1000
committerCarlo Zancanaro <carlo@clearboxsystems.com.au>2013-05-15 16:57:39 +1000
commit318dcc01c54893aa58a4960638f2aa74fe36921e (patch)
tree00f0f3082ecf74ae91f2c68f172f7d96228cec61 /src/clojure_sql/util.clj
parent47ffb78fccb44d62db29971dcb6e6d750869e1a7 (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/util.clj')
0 files changed, 0 insertions, 0 deletions