Query.jl v0.8.x released

21 November 2017

I just released Query.jl v0.8.0. The new version has some breaking renames in the experimental parts of the package (that is why they are experimental!), extends the set of experimental standalone query commands, adds a slight twist to the experimental anonymous function syntax and ships with a whole bunch of package refactoring under the hood.

Renamed experimental standalone query commands

The @select standalone command was renamed to @map, and the @where command to @filter. Those names are more in line with julia conventions.

This change only applies to the experimental standalone versions of the query commands that you would use with the pipe operator. Nothing has changed about the LINQ syntax, i.e. that part will retain the SQL-like terms from LINQ. I have no plans to change those terms going forward, i.e. this does not indicate that there are any breaking changes planned for the stable part of LINQ.

New experimental standalone query commands

This release adds support for the @groupjoin, @join and @mapmany standalone query commands, i.e. you can now use those with the pipe syntax. This part of the documentation describes the arguments to those commands.

Support for two arguments in the experimental anonymous function syntax

Some of new standalone query commands require an anonymous function that takes two arguments. The existing experimental shortcut syntax for creating anonymous functions has been extended to support that scenario. To create a two argument anonymous function, you simply have to use both _ and __ (double underscore) in the expression that should be turned into an anonymous function. For example {a=_, b=__} will be translated into (i1,i2)->{a=i1, b=i2}.

Package refactoring

This release continues the breakup of the very large package Query.jl into smaller packages that do specific things. The current situation now is this:

This refactoring significantly simplifies the dependency situation with these packages. The dependency graph now looks roughly like this:


                                             IterableTables
                                            /
                                           /- TableTraitUtils
                                          /
                              TableTraits         
                            /
IteratorInterfaceExtensions
                            \
                              QueryOperators
                                            \
                                             Query

Thanks

Thanks as always to all the folks that contributed to this effort with bug reports, suggestions and PRs. This release also got some new benchmarks that were contributed by floswald that will hopefully trigger some performance improvements going forward.

Please do report any bugs and suggestions back! And help with this whole effort is of course also always most welcome.

This post is being discussed here.