Releases: bodo-ai/PyDough
Releases · bodo-ai/PyDough
v1.00.06
What's Changed
- Add GETPART function to PyDough by @john-sanchez31 in #381
- Create pydough from_string API by @juankx-bodo in #383
- Add projection pull-up optimization by @knassre-bodo in #390
- Add PageRank testing suite by @knassre-bodo in #395
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #352
- Fixing bug with cross of two partition nodes with correlates by @knassre-bodo in #398
- Add relational expression simplification with predicate inference by @knassre-bodo in #396
- Add smoke tests to the TPC-H testing fixtures by @knassre-bodo in #399
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #402
- Improve inference of predicates on top of joins by @knassre-bodo in #397
- Update Reference class by @hadia206 in #394
- Extract correlated filters from the bottom of a hybrid tree into a join condition by @knassre-bodo in #404
- Add PyDough metadata for masked table columns by @knassre-bodo in #401
- Fixing bug with complex combinations of PARTITION and CROSS by @knassre-bodo in #406
- Add support for MySQL databases & dialect in PyDough by @john-sanchez31 in #385
Full Changelog: v1.00.05...v1.00.06
v1.00.05
What's Changed
- Add REPLACE string function by @hadia206 in #349
- Using new
always matches
metadata feature to optimize plans by @knassre-bodo in #343 - Overhauling tests, hybrid trees, and adding hybrid syncretization by @knassre-bodo in #353
- Add STRCOUNT string function by @john-sanchez31 in #360
- Support CROSS by @hadia206 in #351
- Fixing bug with behavior of BEST when the ancestor references further up by @knassre-bodo in #368
- Replace COUNT() with COUNT(*) by @hadia206 in #372
- Add workflow_dispatch by @hadia206 in #374
- Attempt to increase effectiveness of aggregation splitting by @knassre-bodo in #359
- Speeding up several PyDough tests by @knassre-bodo in #376
- Enable de-correlation of pure SEMI/ANTI joins by @knassre-bodo in #371
- Improve error messages for accessing terms that do not exist by @john-sanchez31 in #364
- Add column bubbling, merging, and name cleanup to relation plans by @knassre-bodo in #370
- Add FLOOR & CEIL to PyDough by @juankx-bodo in #379
- Add QUANTILE function to PyDough by @john-sanchez31 in #378
- Fixing bug with test broker_gen2 by @knassre-bodo in #392
- Extend Github Action Workflow and DB connection for multiple dialects by @hadia206 in #387
- Adding support for user defined functions in PyDough by @knassre-bodo in #380
New Contributors
- @john-sanchez31 made their first contribution in #360
- @juankx-bodo made their first contribution in #379
Full Changelog: v1.00.04...v1.00.05
v1.00.04
v1.00.03
What's Changed
- Automatically update defog.db whenever tests are run by @knassre-bodo in #329
- Dummy column added if no columns present by @vineetg3 in #320
- Add projection merging to PyDough by @knassre-bodo in #314
- Add partial aggregation splitting by @knassre-bodo in #323
- Remove redundant aggregations by @knassre-bodo in #326
- Add SMALLEST and LARGEST functions to PyDough by @vineetg3 in #324
- Fixing NDISTINCT so its output is 0 instead of NULL by @knassre-bodo in #334
- Fix circular dependency in relational visitors by @vineetg3 in #332
- Add INTEGER,FLOAT,STRING cast functions by @vineetg3 in #328
- Support the BEST operator by @knassre-bodo in #188
- Add support for general join conditions by @knassre-bodo in #331
- Add Quarter based date time support to PyDough by @vineetg3 in #333
- Add prefix frame cumulative window functions for sum/count/size/avg by @knassre-bodo in #338
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #342
- Add a visualizer for the meta data by @vineetg3 in #340
- Implemented Var and Std aggregation functions by @vineetg3 in #335
- Add support for sliding window function frames by @knassre-bodo in #346
Full Changelog: v1.00.02...v1.00.03
v1.00.02
What's Changed
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #282
- Implemented default precision of 0 for ROUND by @vineetg3 in #286
- Added config for default and propagation of collations by @vineetg3 in #281
- Implemented SIGN, FIND, STRIP Function by @vineetg3 in #288
- Implement PREV/NEXT operators in PyDough to allow lead/lag-esque operations by @knassre-bodo in #273
- Optimize PyDough generated SQL to avoid extra joins from PARTITION when possible by @knassre-bodo in #289
- Fix bug with downstreaming shadowing over join keys by @knassre-bodo in #293
- Add Broker Gen queries to unit tests by @J-Solano-bodo-ai in #294
- Support for Singular collection operator added by @vineetg3 in #285
- Optimize de-correlation to eliminate redundant parent when keeping rows without matches is not needed by @knassre-bodo in #295
- Fixing child reference bug by removing caching during qualification by @knassre-bodo in #307
- Add filter pushdown optimizations by @knassre-bodo in #300
- Adjust how datetime arguments are handled for literals by @knassre-bodo in #304
- Add window functions for sum, avg, count, and count(*) as relative aggregations by @knassre-bodo in #303
- Add defog EWallet queries to unit tests by @J-Solano-bodo-ai in #301
- Add week-based calculations, start of week support, DAYOFWEEK, DAYNAME functions, and WEEK-based DATEDIFF functionality by @vineetg3 in #292
- Unskipping defog EWALLET test after added WEEK support by @knassre-bodo in #312
- Add support for MEDIAN function in PyDough by @knassre-bodo in #306
- Overhaul SQLGlot transform bindings to class-based structure by @knassre-bodo in #299
- Add verification for has/hasnot to ensure input is a collection by @knassre-bodo in #317
- Integrate SQLGlot's optimizer by @vineetg3 in #309
- Add Defog Car Dealership queries to unit tests by @J-Solano-bodo-ai in #310
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #325
- Overhaul how PyDough collection names, partitions, and window functions work to eliminate level-based logic by @knassre-bodo in #311
New Contributors
- @J-Solano-bodo-ai made their first contribution in #294
Full Changelog: v1.00.01...v1.00.02
v1.00.01
What's Changed
- Added a logger and implemented in execute_df (#163) by @vineetg3 in #233
- Adding more information to PyDough readmes by @knassre-bodo in #235
- Added support for HOUR, MINUTE, SECOND by @vineetg3 in #238
- Added implementation for ** operator, POWER and SQRT function by @vineetg3 in #246
- Update planner tests to store answers in a refsol file by @knassre-bodo in #243
- Update column name generation in relational conversion by @knassre-bodo in #244
- Add training folder to store PyDough question/code examples by @knassre-bodo in #245
- Add pre-commit CI to PyDough by @knassre-bodo in #252
- Changing SQL conversion to always use pretty=True by @knassre-bodo in #248
- Improve compatibility for python syntax in AST rewrite by @vineetg3 in #249
- Moving training folder to private repository by @strangeloopcanon in #258
- Implemented DATEDIFF function by @vineetg3 in #262
- Add support for uses of BACK that cause correlated references by @knassre-bodo in #269
- Support DATETIME function in PyDough by @knassre-bodo in #267
- Implemented remaining Python builtins by @vineetg3 in #268
- Overhaul BACK and CALC to use downstreaming of aliases and add CALCULATE method by @knassre-bodo in #256
- Improved Slicing to support negative indices by @vineetg3 in #277
- Implement LPAD, RPAD functions by @vineetg3 in #275
- Splitting up the structure of the PyDough pipeline tests by @knassre-bodo in #280
- Fixing hybrid conversion bug that caused naming errors by @knassre-bodo in #283
Full Changelog: v1.00.00...v1.00.01
v1.00.00
What's Changed
- Add initial setup for allow building PyDough + some directories by @njriasan in #1
- Adding initial type definitions by @knassre-bodo in #4
- Initialize PyDough metadata module by @knassre-bodo in #6
- Set up PyDough metadata error handling utilities by @knassre-bodo in #7
- Set up PyDough metadata classes by @knassre-bodo in #8
- Setup Github Actions by @njriasan in #9
- Fixing escape character warnings flagged by CI by @knassre-bodo in #12
- Updating how inherited properties work to contend with nested compound relationships by @knassre-bodo in #10
- Set up PyDough metadata parsing and testing by @knassre-bodo in #2
- Add the sqlite database with TPCH data for the demo by @njriasan in #11
- Reworking import heirarchy of metadata imports by @knassre-bodo in #18
- Set up PyDough AST module with basic abstract classes and simple type verifiers by @knassre-bodo in #13
- Set up type deducers in PyDough AST module by @knassre-bodo in #14
- Set up PyDough expression operators in AST module by @knassre-bodo in #16
- Adding initial AST expressions and collections by @knassre-bodo in #26
- Enable connecting to SqLite by @njriasan in #3
- Adding mypy to PyDough by @knassre-bodo in #27
- Add PyUpgrade and import cleaning to Ruff by @knassre-bodo in #28
- Define the abstract base classes for the relational step by @njriasan in #31
- Add remaining PyDough colleciton nodes by @knassre-bodo in #48
- Creating the unqualified PyDough module by @knassre-bodo in #43
- Setting up the unqualified transform step by @knassre-bodo in #45
- Add support for the Scan relational node by @njriasan in #36
- Add support for the Project relational node by @njriasan in #37
- Add support for the Limit relational node by @njriasan in #38
- Add support for the Aggregate relational node by @njriasan in #39
- Add support for the Filter relational node by @njriasan in #40
- Add support for the Root relational node by @njriasan in #41
- Add support for the Join relational node by @njriasan in #42
- Refactoring how operands are dealt with in the UnqualifiedNode stage by @knassre-bodo in #54
- Build a visitor pattern for handling Relational Trees by @njriasan in #52
- Builds the Relational Expression Visitors by @njriasan in #53
- Support Converting a Scan to SQLGlot by @njriasan in #55
- Support for converting a projection to SQLGlot by @njriasan in #56
- Adding ability to reference a child collection as a collection by @knassre-bodo in #62
- Support converting functions to SQLGlot by @njriasan in #57
- Support converting a filter to SQLGlot by @njriasan in #58
- Support converting a Limit to SQLGlot by @njriasan in #59
- Adding PyDough translations to remaining TPC-H queries by @knassre-bodo in #51
- Adding transform from UnqualifiedNodes to PyDough AST by @knassre-bodo in #49
- Support for converting an Aggregate to SQLGlot by @njriasan in #60
- Support for converting Join to SQLGlot by @njriasan in #61
- Support converting the Root to SQLGlot by @njriasan in #63
- Support for Anti + Semi Join in relational by @njriasan in #64
- Infrastructure for converting Relational to SQL by @njriasan in #65
- Add first batch of tests for Relational to SQL Conversion + Fix Bugs by @njriasan in #67
- Create relational to SQL tests for all node types but join by @njriasan in #68
- Support Join to SQL by @njriasan in #69
- Test TPCH Q1 conversion + fix operator precedence by @njriasan in #70
- Support TPCH Q6 to SQL + add support for AND by @njriasan in #71
- Move TPCH plans to a separate file by @njriasan in #72
- Implement PyDough singular/plural checking semantics by @knassre-bodo in #66
- Add TPCH Q3 to SQL by @njriasan in #73
- Enable function calls/complex expressions in ordering by @njriasan in #75
- Enable executing SQL on a database + test TPCH Q6 by @njriasan in #74
- Convert the Join represent to allow multiple joins by @njriasan in #79
- Add a RelationalExpressionShuttle and Remove aliases from unique columns in a join by @njriasan in #80
- Remove subquery aliases if the table has all unique columns by @njriasan in #81
- Enable fusing compatible limits and orderings by @njriasan in #82
- Enable column pruning Relational Nodes by @njriasan in #88
- Replace the execute query API return type with a Pandas DataFrame by @njriasan in #83
- Fix Python version in the test matrix by @njriasan in #84
- Add remaining sample TPC-H outputs by @njriasan in #86
- Adds proper support for Date Literals in SQLGlot conversion by @njriasan in #87
- Support Startswith, Endswith, and String Contains in SQL conversion by @njriasan in #89
- Support converting ISIN to SQLGlot by @njriasan in #90
- Support for IFF in SQLGlot by @njriasan in #91
- Support for LIKE function in SQLGlot by @njriasan in #92
- Support for Year in SQLGlot by @njriasan in #93
- Begin AST->Relational conversion by @knassre-bodo in #78
- Support basic scalar functions in PyDough by @knassre-bodo in #94
- Support basic singular child accesses as LEFT joins in AST->Relational conversion by @knassre-bodo in #95
- Support basic BACK reference expressions in AST->Relational conversion by @knassre-bodo in #96
- Support basic aggregations in AST->Relational conversion by @knassre-bodo in #98
- Support calling COUNT on a subcollection in AST->Relational by @knassre-bodo in #100
- Support for converting WHERE to Relational by @njriasan in #97
- Fix merge conflict with aggregate by @njriasan in #104
- Support global calcs and global aggregations in AST->Relational conversion by @knassre-bodo in #102
- Remove rust dependency by @gjdorman in #103
- Reformatting AST->Relational conversion tests to use fixtures by @knassre-bodo in #107
- Support for converting TopK + Order By by @njriasan in #99
- Add a single step to load SQLite dialect + connection by @njriasan in #105
- Support PARTITION in AST -> Relational conversion by @knassre-bodo in #106
- Test AST->Relational conversion for initial batch of TPCH queries by @knassre-bodo in #110
- Support stepping into a partition child in AST -> Relational conversion by @knassre-bodo in #111
- Support HAS and HASNOT in PyDough by @knassre-bodo in #112
- Adds support for defining a PyDough Session by @njriasan in #108
- Support a PyDough module level active_session by @njriasan in #109
- Various adjustments to codebase and tests to enable running TPCH queries by @knassre-bodo in #116
- Enable runtime correctness testing of TPCH queries by @knassre-bodo in http...