What's Changed
* More efficient window implementation by nils-braun in https://github.com/dask-contrib/dask-sql/pull/217
* Support creating tables from cudf dataframes by ayushdg in https://github.com/dask-contrib/dask-sql/pull/220
* Re-enable the hive tests by nils-braun in https://github.com/dask-contrib/dask-sql/pull/221
* Reading tables with a dask-cudf DataFrame by sarahyurick in https://github.com/dask-contrib/dask-sql/pull/224
* Introduces parallel tests to speed up the processing by nils-braun in https://github.com/dask-contrib/dask-sql/pull/230
* Explicitly install `sasl` in CI by charlesbluca in https://github.com/dask-contrib/dask-sql/pull/244
* Add gpuCI support by charlesbluca in https://github.com/dask-contrib/dask-sql/pull/240
* Add issue templates by charlesbluca in https://github.com/dask-contrib/dask-sql/pull/247
* Fix `test_deprecation_warning` in gpuCI by charlesbluca in https://github.com/dask-contrib/dask-sql/pull/248
* [Review] Add fast path for multi-column sorting by quasiben in https://github.com/dask-contrib/dask-sql/pull/229
* Add conda dev environments for Python 3.7/3.8, JDK 8/11 by charlesbluca in https://github.com/dask-contrib/dask-sql/pull/238
* Add support for `CONCAT` by charlesbluca in https://github.com/dask-contrib/dask-sql/pull/253
* [REVIEW] Fast path when possible for non numeric aggregation by VibhuJawa in https://github.com/dask-contrib/dask-sql/pull/236
* Restrict docker/deploy jobs to upstream repo, cancel concurrent test runs by charlesbluca in https://github.com/dask-contrib/dask-sql/pull/254
* Do not persist data to memory by default when creating tables by jdye64 in https://github.com/dask-contrib/dask-sql/pull/245
* Add flake8 pre-commit hook by charlesbluca in https://github.com/dask-contrib/dask-sql/pull/235
* Automatically label bugs / feature requests for triage by charlesbluca in https://github.com/dask-contrib/dask-sql/pull/261
* Support pandas style row udfs by brandon-b-miller in https://github.com/dask-contrib/dask-sql/pull/246
* Publish nightly builds to `dask` conda channel by charlesbluca in https://github.com/dask-contrib/dask-sql/pull/263
* Revert conda build tweaks by charlesbluca in https://github.com/dask-contrib/dask-sql/pull/266
* Try `anaconda upload` again for conda package upload by charlesbluca in https://github.com/dask-contrib/dask-sql/pull/267
* Feature/improve cli by rajagurunath in https://github.com/dask-contrib/dask-sql/pull/231
* Simplify `DataContainer.assign` operation by charlesbluca in https://github.com/dask-contrib/dask-sql/pull/271
* Added bug fix for window func by rajagurunath in https://github.com/dask-contrib/dask-sql/pull/277
* Pass `return_type` through to `meta` in apply by brandon-b-miller in https://github.com/dask-contrib/dask-sql/pull/275
* [Review] Add gpu tests for string functions by ayushdg in https://github.com/dask-contrib/dask-sql/pull/256
* Simplify single-partition sorting logic by charlesbluca in https://github.com/dask-contrib/dask-sql/pull/262
* Require UDF return type and update docs by brandon-b-miller in https://github.com/dask-contrib/dask-sql/pull/283
New Contributors
* ayushdg made their first contribution in https://github.com/dask-contrib/dask-sql/pull/220
* charlesbluca made their first contribution in https://github.com/dask-contrib/dask-sql/pull/244
* quasiben made their first contribution in https://github.com/dask-contrib/dask-sql/pull/229
* VibhuJawa made their first contribution in https://github.com/dask-contrib/dask-sql/pull/236
* jdye64 made their first contribution in https://github.com/dask-contrib/dask-sql/pull/245
* brandon-b-miller made their first contribution in https://github.com/dask-contrib/dask-sql/pull/246
**Full Changelog**: https://github.com/dask-contrib/dask-sql/compare/0.3.9...0.4.0