# Query Language extension to Julia

**URL:** <https://discourse.julialang.org/t/query-language-extension-to-julia/9429>\
**Category:** Internals & Design\
**Tags:** proposal\
**Created:** [March 1, 2018, 9:51pm UTC](https://discourse.julialang.org/t/query-language-extension-to-julia/9429 "2018-03-01T21:51:51Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![PythonQL](https://avatars.discourse-cdn.com/v4/letter/p/5fc32e/32.png) [@PythonQL](https://discourse.julialang.org/u/PythonQL)\
**Post date:** [March 1, 2018, 9:51pm UTC](https://discourse.julialang.org/t/query-language-extension-to-julia/9429/1 "2018-03-01T21:51:51Z")

</div>

Hello Julia people!

I want to ask you if you would like to develop a query language extension to Julia?  
We have done PythonQL ([www.pythonql.org](http://www.pythonql.org)), however the Python community is not too keen  
on pushing it through. Also, I’m really the only committer right now, and to make PythonQL work  
really fast, I need to code a bunch of stuff in C++, which disturbs me and brings back bad bad memory leak memories. I think developing such a thing in Julia will be more appropriate, and maybe we won’t have to code in C++ after all?

Best regards,  
Pavel Velikhov  
[pavel.velikhov@gmail.com](mailto:pavel.velikhov@gmail.com)

---

<div class="post-metadata">

**Author:** ![jeff.bezanson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jeff.bezanson/32/48_2.png) [@jeff.bezanson](https://discourse.julialang.org/u/jeff.bezanson)\
**Post date:** [March 1, 2018, 10:14pm UTC](https://discourse.julialang.org/t/query-language-extension-to-julia/9429/2 "2018-03-01T22:14:24Z")

</div>

Hi Pavel,

Cool — yes I do think you’d enjoy developing this in julia, since you would not need C++ to get performance. A couple features listed in your readme (named tuple syntax `(a=1, b=2)` and `try` anywhere) are already in julia 0.7. Julia’s macros also let you add extensions like this in a standard way.

I recommend taking a look at Query.jl and comparing notes.

---

<div class="post-metadata">

**Author:** ![JeffreySarnoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jeffreysarnoff/32/1980_2.png) [@JeffreySarnoff](https://discourse.julialang.org/u/JeffreySarnoff)\
**Post date:** [March 2, 2018, 1:15am UTC](https://discourse.julialang.org/t/query-language-extension-to-julia/9429/3 "2018-03-02T01:15:52Z")

</div>

Hi Pavel,

I took a look at your docs – Julia has many parts of what you want to do supported well. Julia does not do what you want to create, out of the box. Nonetheless, you should find the work to get from your design to a first workable set of features is as much about getting comfortable with some best practices as it is about writing code to work with other code you write.

We are a helpful community. Feel at ease posting questions as they arise.

---

<div class="post-metadata">

**Author:** ![davidanthoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidanthoff/32/223493_2.png) [@davidanthoff](https://discourse.julialang.org/u/davidanthoff)\
**Post date:** [March 2, 2018, 1:56am UTC](https://discourse.julialang.org/t/query-language-extension-to-julia/9429/4 "2018-03-02T01:56:11Z")

</div>

Hi Pavel,

that looks very cool! [Query.jl](https://github.com/davidanthoff/Query.jl) probably has very similar (if not identical) goals to that, so we should definitely coordinate. I should also add that I would love nothing better than collaborators on that project. It has been pretty much a one person exercise so far, whereas it is not a one person project in terms of scope 😉 Happy to answer any questions etc. you might have.

Cheers,  
David

---

<div class="post-metadata">

**Author:** ![ExpandingMan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/expandingman/32/866_2.png) [@ExpandingMan](https://discourse.julialang.org/u/ExpandingMan)\
**Post date:** [March 2, 2018, 2:51am UTC](https://discourse.julialang.org/t/query-language-extension-to-julia/9429/5 "2018-03-02T02:51:03Z")

</div>

Also be aware of [DataFramesMeta.jl](https://github.com/JuliaStats/DataFramesMeta.jl).

Originally in this post I wrote how DataFramesMeta.jl is more limited but has a simpler code base than Query.jl. As I look back at the code for them I realize that none of that is quite true, both are quite capable, both are quite simple, but each has a somewhat different approach. DataFramesMeta.jl seems to be a little bit more geared toward providing functions for interfacing with DataFrames and a thin metaprogramming layer for convenient access macros, whereas Query.jl seems more focused on developing a standard query language which translates directly into code for manipulating a wide variety of tabular formats with a very minimal interface in between. Also DataFramesMeta.jl is focused entirely on DataFrames where as Query.jl is for more general objects. (I’m sure @davidanthoff will correct me if my impressions are wrong.)

Both seem remarkably simple compared to what this would take in most other languages, so both are significant Julia success stories in my mind.

---

<div class="post-metadata">

**Author:** ![PythonQL](https://avatars.discourse-cdn.com/v4/letter/p/5fc32e/32.png) [@PythonQL](https://discourse.julialang.org/u/PythonQL)\
**Post date:** [March 6, 2018, 10:45am UTC](https://discourse.julialang.org/t/query-language-extension-to-julia/9429/6 "2018-03-06T10:45:35Z")

</div>

Wow, thanks! Well, I am quite limited on my time myself. An alternative that I actually might prefer is if PythonQL becomes a reference implementation, which I can continue developing. And Julia could pick out features that she likes.

---

<div class="post-metadata">

**Author:** ![PythonQL](https://avatars.discourse-cdn.com/v4/letter/p/5fc32e/32.png) [@PythonQL](https://discourse.julialang.org/u/PythonQL)\
**Post date:** [March 6, 2018, 10:45am UTC](https://discourse.julialang.org/t/query-language-extension-to-julia/9429/7 "2018-03-06T10:45:40Z")

</div>

On another note, would appreciate some docs that describe how to set-up an environment, alternative to JPython

---

<div class="post-metadata">

**Author:** ![PythonQL](https://avatars.discourse-cdn.com/v4/letter/p/5fc32e/32.png) [@PythonQL](https://discourse.julialang.org/u/PythonQL)\
**Post date:** [March 6, 2018, 10:45am UTC](https://discourse.julialang.org/t/query-language-extension-to-julia/9429/8 "2018-03-06T10:45:52Z")

</div>

From my part, I am willing to write the documentation for the language.
