Releases: PRQL/prql
0.8.0
0.8.0 renames the and
& or
operators to &&
& ||
respectively, reorganizes the Syntax section in the book, and introduces read_parquet
& read_csv
functions for reading files with DuckDB.
This release has 38 commits from 8 contributors. Selected changes:
Features:
-
Rename
and
to&&
andor
to||
. Operators which are symbols are now consistently infix, while "words" are now consistently functions (@aljazerzen, #2422). -
New functions
read_parquet
andread_csv
, which mirror the DuckDB functions, instructing the database to read from files (@max-sixty, #2409).
0.7.1
0.7.0
0.7.0 is a fairly small release in terms of new features, with lots of internal improvements, such as integration tests with a whole range of DBs, a blog post on Pi day, RFCs for a type system, and more robust language bindings. Our April 2023 update is attached below.
There's a very small breaking change to the rust API, hence the minor version bump.
The release has 131 commits from 10 contributors. Particular credit goes to to @eitsupi & @Jelenkee, who have made significant contributions, and @vanillajonathan, whose prolific contribution include our growing language bindings.
A small selection of the changes:
Features:
prqlc compile
adds--color
&--include-signature-comment
options. (@max-sixty, #2267)
Web:
- Added the PRQL snippets from the book to the Playground (@Jelenkee, #2197)
Internal changes:
- Breaking: The
compile
function'sOptions
now includes acolor
member, which determines whether error messages use ANSI color codes. This is technically a breaking change to the API. (@max-sixty, #2251) - The
Error
struct now exposes theMessageKind
enum. (@vanillajonathan, #2307) - Integration tests run in CI with DuckDB, SQLite, PostgreSQL, MySQL and SQL Server (@Jelenkee, #2286)
New Contributors:
Here's our April 2023 Update, from our Readme:
April 2023 update
PRQL is being actively developed by a growing community. It's ready to use by the intrepid, either as part of one of our supported extensions, or within your own tools, using one of our supported language bindings.
PRQL still has some minor bugs and some missing features, and probably is only ready to be rolled out to non-technical teams for fairly simple queries.
Here's our current Roadmap and our Milestones.
Our immediate focus for the code is on:
- Building out the next few big features, including types and
modules.- Ensuring our supported features feel extremely robust; resolving any priority bugs.
We're also spending time thinking about:
- Making it really easy to start using PRQL. We're doing that by building integrations with tools that folks already use; for example our VS Code extension & Jupyter integration. If there are tools you're familiar with that you think would be open to integrating with PRQL, please let us know in an issue.
- Making it easier to contribute to the compiler. We have a wide group of contributors to the project, but contributions to the compiler itself are quite concentrated. We're keen to expand this; #1840 for feedback.
0.6.1
0.6.1 is a small release containing an internal refactoring and improved bindings for C, PHP & .NET.
This release has 54 commits from 6 contributors. Selected changes:
Fixes:
- No longer incorrectly compile to
DISTINCT
when atake 1
refers to a different set of columns than are in thegroup
. (@max-sixty, with thanks to @cottrell, #2109) - The version specification of the dependency Chumsky was bumped from
0.9.0
to0.9.2
.0.9.0
has a bug that causes an infinite loop. (@eitsupi, #2110)
Documentation:
- Add a policy for which bindings are supported / unsupported / nascent. See https://prql-lang.org/book/bindings/index.html for more details (@max-sixty, #2062)
Integrations:
- [prql-lib] Added C++ header file. (@vanillajonathan, #2126)
Internal changes:
- Many of the items that were in the root of the repo have been aggregated into
web
&bindings
, simplifying the repo's structure. There's alsogrammars
&packages
(@max-sixty, #2135, #2117, #2121).
0.6.0
0.6.0 introduces a rewritten parser, giving us the ability to dramatically improve error messages, renames switch
to case
and includes lots of minor improvements and fixes. It also introduces loop
, which compiles to WITH RECURSIVE
, as a highly experimental feature.
There are a few cases of breaking changes, including switching switch
to case
, in case that's confusing. There are also some minor parsing changes outlined below.
This release has 108 commits from 11 contributors. Selected changes:
Features:
- Add a (highly experimental)
loop
language feature, which translates toWITH RECURSIVE
. We expect changes and refinements in upcoming releases. (#1642, @aljazerzen) - Rename the experimental
switch
function tocase
given it more closely matches the traditional semantics ofcase
. (@max-sixty, #2036) - Change the
case
syntax to use=>
instead of->
to distinguish it from function syntax. - Convert parser from pest to Chumsky (@aljazerzen, #1818)
- Improved error messages, and the potential to make even better in the future. Many of these improvements come from error recovery.
- String escapes (
\n \t
). - Raw strings that don't escape backslashes.
- String interpolations can only contain identifiers and not any expression.
- Operator associativity has been changed from right-to-left to left-to-right to be more similar to other conventional languages.
and
now has a higher precedence thanor
(of same reason as the previous point).- Dates, times and timestamps have stricter parsing rules.
let
,func
,prql
,case
are now treated as keywords.- Float literals without fraction part are not allowed anymore (
1.
).
- Add a
--format
option toprqlc parse
which can return the AST in YAML (@max-sixty, #1962) - A new compile target
"sql.any"
. When"sql.any"
is used as the target of the compile function's option, the target contained in the query header will be used. (@aljazerzen, #1995) - Support for SQL parameters with similar syntax (#1957, @aljazerzen)
- Allow
:
to be elided in timezones, such as0800
in@2020-01-01T13:19:55-0800
(@max-sixty, #1991). - Add
std.upper
andstd.lower
functions for changing string cases (@Jelenkee, #2019).
Fixes:
prqlc compile
returns a non-zero exit code for invalid queries. (@max-sixty, #1924)- Identifiers can contain any alphabetic unicode characters (@max-sixty, #2003)
Documentation:
- Operator precedence (@aljazerzen, #1818)
- Error messages for invalid queries are displayed in the book (@max-sixty, #2015)
Integrations:
- [prql-php] Added PHP bindings. (@vanillajonathan, #1860)
- [prql-dotnet] Added .NET bindings. (@vanillajonathan, #1917)
- [prql-lib] Added C header file. (@vanillajonathan, #1879)
- Added a workflow building a
.deb
on each release. (Note that it's not yet published on each release). (@vanillajonathan, #1883) - Added a workflow building a Snap package on each release. (@vanillajonathan, #1881)
Internal changes:
- Test that the output of our nascent autoformatter can be successfully compiled into SQL. Failing examples are now clearly labeled. (@max-sixty, #2016)
- Definition files have been added to configure Dev Containers for Rust development environment. (@eitsupi, #1893, #2025, #2028)
New Contributors:
- @linux-china, with #1971
- @Jelenkee, with #2019
0.5.2
0.5.1
0.5.1 contains a few fixes, and another change to how bindings handle default target / dialects.
This release has 53 commits from 7 contributors. Selected changes:
Fixes:
- Delegate dividing literal integers to the DB. Previously integer division was executed during PRQL compilation, which could be confusing given that behavior is different across DBs. Other arithmetic operations are still executed during compilation. (@max-sixty, #1747)
Documentation:
- Add docs on the
from_text
transform (@max-sixty, #1756)
Integrations:
- [prql-js] Default compile target changed from
Sql(Generic)
toSql(None)
. (@eitsupi, #1856) - [prql-python] Compilation options can now be specified from Python. (@eitsupi, #1807)
- [prql-python] Default compile target changed from
Sql(Generic)
toSql(None)
. (@eitsupi, #1861)
New Contributors:
- @vanillajonathan, with #1766
0.5.0
0.5.0 contains a few fixes, some improvements to bindings, lots of docs improvements, and some work on forthcoming features. It contains one breaking change in the compiler's Options
interface.
This release has 74 commits from 12 contributors. Selected changes:
Features:
- Change public API to use target instead of dialect in preparation for future work (@aljazerzen, #1684)
prqlc watch
command which watches filesystem for changes and compiles .prql files to .sql (@aljazerzen, #1708)
Fixes:
- Support double brackets in s-strings which aren't symmetric (@max-sixty, #1650)
- Support Postgres's Interval syntax (@max-sixty, #1649)
- Fixed tests for
prql-elixir
with MacOS (@kasvith, #1707)
Documentation:
- Add a documentation test for prql-compiler, update prql-compiler README, and include the README in the prql book section for Rust bindings. The code examples in the README are included and tested as doctests in the prql-compiler (@nkicg6, #1679)
Internal changes:
- Add tests for all PRQL website examples to prql-python to ensure compiled results match expected SQL (@nkicg6, #1719)
New Contributors:
- @ruslandoga, with #1628
- @RalfNorthman, with #1632
- @nicot, with #1662
0.4.2
0.4.2 has 38 commits from 12 contributors.
Features:
-
New
from_text format-arg string-arg
function that supports JSON and CSV formats. format-arg can beformat:csv
or format:json`. string-arg can be a string in any format. (@aljazerzen & @snth, #1514)from_text format:csv """ a,b,c 1,2,3 4,5,6 """ from_text format:json ''' [{"a": 1, "b": "x", "c": false }, {"a": 4, "b": "y", "c": null }] ''' from_text format:json ''' { "columns": ["a", "b", "c"], "data": [ [1, "x", false], [4, "y", null] ] } '''
For now, the argument is limited to string constants.
Fixes
- Export constructor for SQLCompileOptions (@bcho, #1621)
- Remove backticks in count_distinct (@aljazerzen, #1611)
New Contributors
0.4.1
0.4.1 comes a few days after 0.4.0, with a couple of features and the release of prqlc
, the CLI crate.
0.4.1 has 35 commits from 6 contributors.
Features:
-
Inferred column names include the relation name (@aljazerzen, #1550):
from albums select title # name used to be inferred as title only select albums.title # so using albums was not possible here
-
Quoted identifiers such as
dir/*.parquet
are passed through to SQL. (@max-sixty, #1516). -
The CLI is installed with
cargo install prqlc
. The binary was renamed in 0.4.0 but required an additional--features
flag, which has been removed in favor of this new crate (@max-sixty & @aljazerzen, #1549).
New Contributors: