Age | Commit message (Collapse) | Author | |
---|---|---|---|
2013-11-12 | Potentially misleading typo | Carlo Zancanaro | |
2013-11-12 | Change the query executor model: now it's query local and the interface is ↵ | Carlo Zancanaro | |
managed by a protocol. | |||
2013-11-12 | Fix a minor error in the README. | Carlo Zancanaro | |
2013-11-12 | Ah, screw it. Have super long lines in the README. | Carlo Zancanaro | |
2013-11-12 | Fix up the README which I formatted wrong. Whoops! | Carlo Zancanaro | |
2013-11-12 | Fix grouping - it used to allow for groupings leaving a non-grouped field | Carlo Zancanaro | |
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). | |||
2013-09-30 | One more whitespace char (same excuse as last time) | Carlo Zancanaro | |
2013-09-30 | Remove some whitespace (excuse to test jenkins trigger) | Carlo Zancanaro | |
2013-09-30 | Fix up union/intersection operations | Carlo Zancanaro | |
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.) | |||
2013-09-30 | Change the header level on the changelog | Carlo Zancanaro | |
2013-09-30 | Remove the generated SQL from the README which was added in the last commit ↵ | Carlo Zancanaro | |
- it looked ridiculous | |||
2013-09-30 | Fix an example in the README, and add some expected generated SQL | Carlo Zancanaro | |
2013-09-30 | Fix a bug relating to table renaming | Carlo Zancanaro | |
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). | |||
2013-09-29 | Due to breaking change, go to 0.2.0-SNAPSHOT instead of 0.1.1-SNAPSHOT | Carlo Zancanaro | |
2013-09-29 | README indentation | Carlo Zancanaro | |
2013-09-29 | Add a bit of a changelog to the README | Carlo Zancanaro | |
2013-09-29 | Add jdbc as a dependency (to make `lein check` useful) | Carlo Zancanaro | |
2013-09-29 | Remove `having` from the lsit of vars to pull into core (should have been on ↵ | Carlo Zancanaro | |
earlier commit). | |||
2013-09-29 | Clear up the ambiguous field error message | Carlo Zancanaro | |
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). | |||
2013-09-29 | Remove midje as a dependency. | Carlo Zancanaro | |
2013-09-29 | Remove the `having` function, incorporate into `select` | Carlo Zancanaro | |
The `having` function duplicated the intended functionality of `select`, but in a bad way. It only applied to a restricted case, and its existence meant that `select` provided an escape-hatch with which we could cause some unexpected behaviour. By consolidating the two functions into `select` we remove the escape hatch as well as simplify the model. Selection on grouped queries may now introduce a new subquery, but only in situations where the behaviour is unpredictable (ie. selecting on non-grouped attributes). | |||
2013-07-12 | A bunch of refactoring in the DSL | Carlo Zancanaro | |
2013-07-12 | One more. | Carlo Zancanaro | |
2013-07-12 | Bitbucket syntax highlighting in README | Carlo Zancanaro | |
2013-07-12 | Two more minor changes to the README. | Carlo Zancanaro | |
2013-07-12 | Update the README a bunch | Carlo Zancanaro | |
2013-07-12 | Remove some scrap code that got committed accidentally | Carlo Zancanaro | |
2013-07-12 | Handle parameter types in the compiler better | Carlo Zancanaro | |
The compiler handled them by converting most things to strings and embedding them in the query, but now I'm trying to put more of them in as query parameters. The advantage is that his handles types that might be database specific, or something. At the moment sequences are handled in the same way as before (with each element being a separate parameter), but this may be changed in future. | |||
2013-07-12 | Assert in jdbc interface to fail early rather than do the wrong thing | Carlo Zancanaro | |
When converting dotted fields to maps there's one possible case where it can do the wrong thing. This should now throw an AssertionError rather than silently doing the wrong thing. | |||
2013-07-12 | Expose a few more helper functions in clojure-sql.core | Carlo Zancanaro | |
2013-07-12 | Add a rename helper to turn queries into "subobjects" in the result. | Carlo Zancanaro | |
Essentially just prefixes a subobject name in front of all fields in a query, with a dot separating the new prefix and the original name. | |||
2013-07-06 | Make `sort` able to take expressions rather than just table names. | Carlo Zancanaro | |
2013-07-06 | Bump the version, put Midje back in as dev dependency | Carlo Zancanaro | |
2013-07-03 | Add fields to union/intersection result queries | Carlo Zancanaro | |
2013-07-03 | Remove midje dependency and now useless tests (will add tests later) | Carlo Zancanaro | |
2013-07-03 | Add SCM info to project.clj | Carlo Zancanaro | |
2013-07-03 | Added tag 0.1.0 release for changeset a04a90ac3937 | Carlo Zancanaro | |
2013-07-03 | Update the README to include a leiningen dependency vector | Carlo Zancanaro | |
2013-07-01 | Bump the version number: 0.1.0 | Carlo Zancanaro | |
2013-07-01 | Change the condition for union compatible (require projections first) | Carlo Zancanaro | |
2013-07-01 | Make fields compile in a deterministic order (necessary for union stuff) | Carlo Zancanaro | |
2013-07-01 | A bit more readme changing | Carlo Zancanaro | |
2013-07-01 | Add union/intersection to the dsl | Carlo Zancanaro | |
2013-07-01 | Update the readme some more | Carlo Zancanaro | |
2013-07-01 | Remove some extra code that was left sitting around | Carlo Zancanaro | |
2013-07-01 | Update the readme | Carlo Zancanaro | |
2013-07-01 | Move Midje into dev dependencies - no sense pulling it in transitively | Carlo Zancanaro | |
2013-07-01 | Make sure you never try to take a negative number of things! | Carlo Zancanaro | |
2013-06-24 | Remove a midje file that's no longer necessary | Carlo Zancanaro | |
Also: the fix I mentioned in my last commit message may be a little bit hard to do, but even without explicitly detecting it it will explode in an obvious way. | |||
2013-06-24 | Make dotted fields result in nested maps when querying | Carlo Zancanaro | |
So now something like this: (-> (table :users) (project {:id :user.id, :email :user.email, :person :person.id}) (join (-> (table :people) (project {:id :person.id, :first-name :person.first-name})))) will result in a map like this for each result: {:user {:id 1, :email "..."}, :person {:id 1, :first-name "..."}} Although I've just thought of an issue that will need to be detected where an error should be thrown. I'll deal with that now and commit it soon. |