Prql Versions Save

PRQL is a modern language for transforming data — a simple, powerful, pipelined SQL replacement

0.11.4

2 months ago

0.11.4 is a hotfix release, fixing a CI issue that caused the CLI binaries to be built without the cli feature.

0.11.3

3 months ago

0.11.3 is a very small release, mostly a rename of the python bindings.

The release has 13 commits from 4 contributors.

0.11.2

3 months ago

0.11.2 — 2023-02-07

0.11.2 contains lots of internal changes, lots of syntax highlighting, and the beginning of lutra, a query runner.

This release has 122 commits from 9 contributors. Selected changes include:

Features:

  • Initial implementation of lutra, a query runner. (@aljazerzen, #4182, #4174, #4134)
  • prqlc fmt works on projects with multiple files. (@max-sixty, #4028)

Fixes:

  • Reduce stack memory usage (@aljazerzen, #4103)

Integrations:

  • Add syntax highlight file for GtkSourceView. (@vanillajonathan, #4062)
  • Add syntax highlight file for CotEditor. (@vanillajonathan)
  • Add syntax highlight file for Sublime Text. (@vanillajonathan, #4127)
  • sloc, a source lines of code counter now has support for .prql files. (@vanillajonathan)

Internal changes:

  • prql-compiler has been renamed to prqlc, and we've established a more consistent naming scheme. The existing crate will still be published, re-exporting prqlc, so no dependencies will break. A future version will add a deprecation warning.
  • The prqlc-clib crate was renamed to prqlc-c, and associated artifacts were renamed. We're trying to make names consistent (ideally for the final time!), and have a plan to rename some other bindings. (@max-sixty, #4077)
  • Add lots of whitespace items to the lexer, in preparation for the completion of prqlc fmt (@max-sixty, #4109, #4105)
  • Table declarations (@aljazerzen, #4126)

New Contributors:

  • @kaspermarstal, with #4124

0.11.1

4 months ago

0.11.1 fixes a couple of small bugs; it comes a few days after 0.11.

This release has 16 commits from 6 contributors. Selected changes:

Features:

  • Infer the type of array literals to be the union of types of its items. (@aljazerzen, #3989)
  • prql module is added and the prql_version function is renamed to the prql.version function. The old prql_version function is deprecated and will be removed in the future release. (@eitsupi, #4006)

Fixes:

  • Do not compile to DISTINCT ON when take n is used with group for the targets clickhouse, duckdb and postgres. (@PrettyWood, #3988)
  • Fix take n rows for mssql dialect by switching from TOP to FETCH (@PrettyWood, #3994)

0.11.0

4 months ago

0.11.0 introduces new date, text & math modules with lots of standard functions, including a new date.to_text function. It contains a few bugs fixes, and lots of internal improvements to the compiler.

This release has 119 commits from 9 contributors. Selected changes:

Language:

  • Breaking: group's by columns are now excluded from the partition. (#3490)
  • Breaking: round is now in the math module and needs to be called via math.round. (#3928)
  • Breaking: lower and upper are now in the text module and need to be called via text.lower and text.upper. (#3913, #3973)

Features:

  • The std.in function now supports a list of values (@PrettyWood, #3883)
  • Most standard mathematical functions are now supported: abs, floor, ceil, pi, exp, ln, log10, log, sqrt, degrees, radians, cos, acos, sin, asin, tan, atan, pow and round. Those functions are in the math module (@PrettyWood, #3909, #3916 & 3928)
  • Most standard string functions are now supported: ltrim, rtrim, trim, length, extract, replace. Utility functions starts_with, contains and ends_with are also available. Those functions are in the text module (@PrettyWood, #3913, #3973)
  • Formatting a date to a text is now available for Clickhouse, DuckDB, MySQL, MSSQL and Postgres. A new date module has been added with the to_text function (@PrettyWood, #3951, #3954 & #3955)

Fixes:

  • Fix an issue with arithmetic precedence (@max-sixty, #3846)
  • + and - can be used after a cast (@PrettyWood, #3923)
  • The Lezer grammar had plenty of improvements and fixes. (@vanillajonathan)

Web:

  • The Playground now uses Vite. (@vanillajonathan)

Internal changes:

  • Bump prql-compiler's MSRV to 1.70.0 (@eitsupi, #3876)

New Contributors:

  • @PrettyWood, with #3883

0.10.1

6 months ago

0.10.1 is a small release containing some internal fixes of the compiler.

This release has 36 commits from 7 contributors. Selected changes:

Features:

  • The std.sql.read_csv function and the std.sql.read_parquet function supports the sql.glaredb target. (@eitsupi, #3749)

Fixes:

  • Fix the bug of compiling to DISTINCT ON when take 1 is used with group by for the targets sql.clickhouse, sql.duckdb and sql.postgres. (@aljazerzen, #3792)

Integrations:

  • Enable integration tests for GlareDB. (@eitsupi, #3749)
  • trapd00r/LS_COLORS, a collection of LS_COLORS definitions colorizes .prql files. (@vanillajonathan)
  • vivid, a themeable LS_COLORS generator colorizes .prql files. (@vanillajonathan)
  • colorls, displays .prql files with a database icon. (@vanillajonathan)
  • Emoji File Icons, a VS Code extension displays .prql files with a database emoji icon. (@vanillajonathan)
  • eza, a modern ls replacement colorizes .prql files. (@vanillajonathan)
  • lsd, next gen ls command displays .prql files with a database icon. (@vanillajonathan)

0.10.0

6 months ago

0.10.0 contains lots of small improvements, including support for new types of literal notation, support for read_* functions in more dialects, playground improvements, and a better Lezer grammar (which we're planning on using for a Jupyter extension).

This release has 155 commits from 9 contributors. Selected changes:

Language:

  • Breaking: Case syntax now uses brackets [] rather than braces {}. To convert previous PRQL queries to this new syntax simply change case { ... } to case [ ... ]. (@AaronMoat, #3517)

Features:

  • Breaking: The std.sql.read_csv function is now compiled to read_csv by default. Please set the target sql.duckdb to use the DuckDB's read_csv_auto function as previously. (@eitsupi, #3599)
  • The std.sql.read_csv function and the std.sql.read_parquet function supports the sql.clickhouse target. (@eitsupi, #1533)
  • Add std.prql_version function to return PRQL version (@hulxv, #3533)
  • Add support for hex escape sequences in strings. Example "Hello \x51". (@vanillajonathan, #3568)
  • Add support for long Unicode escape sequences. Example "Hello \u{01F422}". (@vanillajonathan, #3569)
  • Add support for binary numerical notation. Example filter status == 0b1111000011110000. (@vanillajonathan, #3661)
  • Add support for hexadecimal numerical notation. Example filter status == 0xff. (@vanillajonathan, #3654)
  • Add support for octal numerical notation. Example filter status == 0o777. (@vanillajonathan, #3672)
  • New compile target sql.glaredb for GlareDB and integration tests for it (However, there is a bug in the test and it is currently not running). (@universalmind303, @scsmithr, @eitsupi, #3669)

Web:

  • Allow cmd-/ (Mac) or ctrl-/ (Windows) to toggle comments in the playground editor (@AaronMoat, #3522)

  • Limit maximum height of the playground editor's error panel to avoid taking over whole screen (@AaronMoat, #3524)

  • The playground now uses Vite (@vanillajonathan).

Integrations:

  • Add a CLI command prqlc collect to collect a project's modules into a single file (@aljazerzen, #3739)
  • Add a CLI command prqlc debug expand-pl to parse & and expand into PL without resolving (@aljazerzen, #3739)
  • Bump prqlc's MSRV to 1.70.0 (@eitsupi, #3521)
  • Pygments, a syntax highlighting library now has syntax highlighting for PRQL. (@vanillajonathan, #3564)
  • chroma, a syntax highlighting library written in Go and used by the static website generator Hugo. (@vanillajonathan, #3597)
  • scc, a source lines of code counter now has support for .prql files. (@vanillajonathan)
  • gcloc a source lines of code counter now has support for .prql files. (@vanillajonathan)
  • cloc a source lines of code counter now has support for .prql files. (@AlDanial)
  • gocloc a source lines of code counter now has support for .prql files. (@vanillajonathan)
  • The Quarto VS Code extension supports editing PRQL code blocks (prqlr is required to render Quarto Markdown with PRQL code blocks). (@jjallaire)

New Contributors:

  • @hulxv, with #3533
  • @AaronMoat, with #3522
  • @jangorecki, with #3634

0.9.5

7 months ago

0.9.5 adds a line-wrapping character, fixes a few bugs, and improves our CI. The release has 77 commits from 8 contributors. Selected changes are below.

Look out for some conference talks coming up over the next few weeks, including QCon SF on Oct 2 and date2day on Oct 12.

Language:

  • A new line-wrapping character, for lines that are long and we want to break up into multiple physical lines. This is slightly different from from many languages — it's on the subsequent line:

    from artists
    select is_europe =
    \ country == "DE"
    \ || country == "FR"
    \ || country == "ES"
    

    This allows for easily commenting out physical lines while maintaining a correct logical line; for example:

    from artists
    select is_europe =
    \ country == "DE"
    \ || country == "FR"
    \ || country == "FR"
    -\ || country == "ES"
    +#\ || country == "ES"
    

    (@max-sixty, #3408)

Fixes:

  • Fix stack overflow on very long queries in Windows debug builds (@max-sixty, #2908)

  • Fix panic when unresolved lineage appears in group or window (@davidot, #3266)

  • Fix a corner-case in handling precedence, and remove unneeded parentheses in some outputs (@max-sixty, #3472)

Web:

  • Compiler panics are now printed to the console (@max-sixty, #3446)

Integrations:

  • Ace, the JavaScript code editor now has syntax highlighting for PRQL. (@vanillajonathan, #3493)

Internal changes:

  • Simplify & speed up lexer (@max-sixty, #3426, #3418)

New Contributors:

  • @davidot, with #3450

0.9.4

8 months ago

0.9.4 — 2023-08-24

0.9.4 is a small release with some improvements and bug fixes in the compiler and prqlc. And, the documentation and CI are continually being improved.

This release has 110 commits from 9 contributors. Selected changes:

Features:

  • Strings can be delimited with any odd number of quote characters. The logic for lexing quotes is now simpler and slightly faster. Escapes in single-quote-delimited strings escape single-quotes rather than double-quotes. (@max-sixty, #3274)

Fixes:

  • S-strings within double braces now parse correctly (@max-sixty, #3265)

Documentation:

  • New docs for strings (@max-sixty, #3281)

Web:

  • Improve syntax highlighting for numbers in the book & website (@max-sixty, #3261)
  • Add ClickHouse integration to docs (@max-sixty, #3251)

Integrations:

  • prqlc no longer displays a prompt when piping a query into its stdin (@max-sixty, #3248).
  • Add a minimal example for use prql-lib with Zig (@vanillajonathan, #3372)

Internal changes:

  • Overhaul our CI to run a cohesive set of tests depending on the specific changes in the PR, and elide all others. This cuts CI latency to less than three minutes for most changes, and enables GitHub's auto-merge to wait for all relevant tests. It also reduces the CI time on merging to main, by moving some tests to only run on specific path changes or on our nightly run. We now have one label we can add to PRs to run more tests — pr-nightly. (@max-sixty, #3317 & others).
  • Auto-merge PRs for backports or pre-commit updates (@max-sixty, #3246)
  • Add a workflow to create an issue when the scheduled nightly workflow fails (@max-sixty, #3304)

New Contributors:

  • @FinnRG, with #3292
  • @sitiom, with #3353

0.9.3

9 months ago

0.9.3 is a small release, with mostly documentation, internal, and CI changes.

This release has 85 commits from 10 contributors.

We'd like to welcome @not-my-profile as someone who has helped with lots of internal refactoring in the past couple of weeks.

New Contributors:

  • @vthriller, with #3171
  • @postmeback, with #3216