<feed xmlns='http://www.w3.org/2005/Atom'>
<title>clojure-sql/src, branch master</title>
<subtitle>A DSL to create SQL queries in Clojure with an emphasis on composability and abstraction.
</subtitle>
<id>http://onix.zancanaro.id.au/Archive/clojure-sql/atom?h=master</id>
<link rel='self' href='http://onix.zancanaro.id.au/Archive/clojure-sql/atom?h=master'/>
<link rel='alternate' type='text/html' href='http://onix.zancanaro.id.au/Archive/clojure-sql/'/>
<updated>2013-11-24T14:41:33Z</updated>
<entry>
<title>Fix the jdbc query executor for insert/update/delete operations</title>
<updated>2013-11-24T14:41:33Z</updated>
<author>
<name>Carlo Zancanaro</name>
<email>carlo@clearboxsystems.com.au</email>
</author>
<published>2013-11-24T14:41:33Z</published>
<link rel='alternate' type='text/html' href='http://onix.zancanaro.id.au/Archive/clojure-sql/commit/?id=13eecd8c0772906318e9fa3b0cf752fc960319c3'/>
<id>urn:sha1:13eecd8c0772906318e9fa3b0cf752fc960319c3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Remove a stupid testing thing, update the README a touch</title>
<updated>2013-11-24T14:18:19Z</updated>
<author>
<name>Carlo Zancanaro</name>
<email>carlo@clearboxsystems.com.au</email>
</author>
<published>2013-11-24T14:18:19Z</published>
<link rel='alternate' type='text/html' href='http://onix.zancanaro.id.au/Archive/clojure-sql/commit/?id=fe1a2f5ef652cb943be14982f31b3ad236d00629'/>
<id>urn:sha1:fe1a2f5ef652cb943be14982f31b3ad236d00629</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add a 'distinct' operator - still a bug to fix on renaming</title>
<updated>2013-11-24T14:13:11Z</updated>
<author>
<name>Carlo Zancanaro</name>
<email>carlo@clearboxsystems.com.au</email>
</author>
<published>2013-11-24T14:13:11Z</published>
<link rel='alternate' type='text/html' href='http://onix.zancanaro.id.au/Archive/clojure-sql/commit/?id=2746c6b08b878190ee7c54a7414bf444c660ff1e'/>
<id>urn:sha1:2746c6b08b878190ee7c54a7414bf444c660ff1e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix the database type detection in the jdbc executor</title>
<updated>2013-11-12T06:18:00Z</updated>
<author>
<name>Carlo Zancanaro</name>
<email>carlo@clearboxsystems.com.au</email>
</author>
<published>2013-11-12T06:18:00Z</published>
<link rel='alternate' type='text/html' href='http://onix.zancanaro.id.au/Archive/clojure-sql/commit/?id=a2aabf7b89da6313c3b47e603a2668d55ad946b7'/>
<id>urn:sha1:a2aabf7b89da6313c3b47e603a2668d55ad946b7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Change the query executor model: now it's query local and the interface is managed by a protocol.</title>
<updated>2013-11-12T05:58:44Z</updated>
<author>
<name>Carlo Zancanaro</name>
<email>carlo@clearboxsystems.com.au</email>
</author>
<published>2013-11-12T05:58:44Z</published>
<link rel='alternate' type='text/html' href='http://onix.zancanaro.id.au/Archive/clojure-sql/commit/?id=fe513564989d9151a79d5494f2958ae190c20d02'/>
<id>urn:sha1:fe513564989d9151a79d5494f2958ae190c20d02</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix grouping - it used to allow for groupings leaving a non-grouped field</title>
<updated>2013-11-11T23:21:53Z</updated>
<author>
<name>Carlo Zancanaro</name>
<email>carlo@clearboxsystems.com.au</email>
</author>
<published>2013-11-11T23:21:53Z</published>
<link rel='alternate' type='text/html' href='http://onix.zancanaro.id.au/Archive/clojure-sql/commit/?id=3ea93238b71eb1af0bdfcbab4559c9a6734944e7'/>
<id>urn:sha1:3ea93238b71eb1af0bdfcbab4559c9a6734944e7</id>
<content type='text'>
Now it takes a third "projection" argument in which one can perform aggregate
function over the existing fields. The fields of the resulting query are the
union of the grouping fields and the projected fields (with the projected
fields taking precedence).

If you try to project a field without applying some sort of function to it then
you'll get an exception, but at the moment no function calls are actually
validated as aggregate functions (in order to do so we'd need a knowledge of
all the aggregate functions, which isn't possible in general).
</content>
</entry>
<entry>
<title>Fix up union/intersection operations</title>
<updated>2013-09-30T00:21:00Z</updated>
<author>
<name>Carlo Zancanaro</name>
<email>carlo@clearboxsystems.com.au</email>
</author>
<published>2013-09-30T00:21:00Z</published>
<link rel='alternate' type='text/html' href='http://onix.zancanaro.id.au/Archive/clojure-sql/commit/?id=22784e9846a645f62b2a31b320c802a8140a2ad0'/>
<id>urn:sha1:22784e9846a645f62b2a31b320c802a8140a2ad0</id>
<content type='text'>
Previously the union/intersection operations didn't work when you tried to
select/project/sort/drop/whatever on them. Now they just automatically
introduce a subquery, which means that they can be used in other operations
automatically. (There is a potential for a minor decrease in query speed, but I
think it's worthwhile to maintain the abstraction.)
</content>
</entry>
<entry>
<title>Fix a bug relating to table renaming</title>
<updated>2013-09-29T15:26:16Z</updated>
<author>
<name>Carlo Zancanaro</name>
<email>carlo@clearboxsystems.com.au</email>
</author>
<published>2013-09-29T15:26:16Z</published>
<link rel='alternate' type='text/html' href='http://onix.zancanaro.id.au/Archive/clojure-sql/commit/?id=e77814f7d117f9f5315d65a48a854e0128111bfc'/>
<id>urn:sha1:e77814f7d117f9f5315d65a48a854e0128111bfc</id>
<content type='text'>
When queries were being created their internal aliases were defaulting to the
same as their external table names. This would normally have been fine, but in
the case of a rename the simplistic implementation of table renames was leading
to the external name being changed too.

The solution: generate a (unique) random internal name for the table. That way
the rename operation will only rename the unique internal name, not the
constant external name (it would also, in theory, reduce the need for renames,
but that optimisation probably isn't really worth doing for expected work
loads).
</content>
</entry>
<entry>
<title>Remove `having` from the lsit of vars to pull into core (should have been on earlier commit).</title>
<updated>2013-09-29T06:06:56Z</updated>
<author>
<name>Carlo Zancanaro</name>
<email>carlo@clearboxsystems.com.au</email>
</author>
<published>2013-09-29T06:06:56Z</published>
<link rel='alternate' type='text/html' href='http://onix.zancanaro.id.au/Archive/clojure-sql/commit/?id=cef9bf89fd4bc46fff0ac8b423cfa8dc8a146b4c'/>
<id>urn:sha1:cef9bf89fd4bc46fff0ac8b423cfa8dc8a146b4c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Clear up the ambiguous field error message</title>
<updated>2013-09-29T05:36:10Z</updated>
<author>
<name>Carlo Zancanaro</name>
<email>carlo@clearboxsystems.com.au</email>
</author>
<published>2013-09-29T05:36:10Z</published>
<link rel='alternate' type='text/html' href='http://onix.zancanaro.id.au/Archive/clojure-sql/commit/?id=9230395b82b59edd9053d062a4f2f9481432e64f'/>
<id>urn:sha1:9230395b82b59edd9053d062a4f2f9481432e64f</id>
<content type='text'>
The ambiguous field error message used to specify that it was a case where
multiple tables were present, but that's not always true. If you're trying to
work on a query that has been "subqueried" then you'll also get the error
(arguably that should have a different error message, but I'll come back to
that later).
</content>
</entry>
</feed>
