Release Notes

Note

These release notes are for versions of ibis 1.0 and later. Release notes for pre-1.0 versions of ibis can be found at Release Notes (pre 1.0)

Next 1.x feature release

  • [Feature] #2095: Implementations of Log Log2 Log10 for OmniSciDB backend

  • [Feature] #2173: Create ExtractDayOfYear operation and add its support to Clickhouse, CSV, MySQL, OmniSciDB, Pandas, Parquet, PostgreSQL, PySpark, SQLite and Spark

  • [Feature] #2086: OmniSciDB - Refactor DDL and Client; Add temporary parameter to create_table and “force” parameter to drop_view

  • [Feature] #2125: [OmniSciDB] Add support for within, d_fully_within and point

  • [Feature] #1981: Add load_data to sqlalchemy’s backends and fix database parameter for load/create/drop when database parameter is the same than the current database

  • [Feature] #2083: fillna and nullif implementations for OmnisciDB

  • [Feature] #2117: Add non-nullable info to schema output

  • [Feature] #2165: [OmniSciDB] Add “method” parameter to load_data

  • [Feature] #2178: Added epoch_seconds extraction operation to Clickhouse, CSV, Impala, MySQL, OmniSciDB, Pandas, Parquet, PostgreSQL, PySpark, SQLite, Spark and BigQuery #2273

  • [Feature] #2060: Add initial support for ibis.random function

  • [Feature] #2177: Create ExtractWeekOfYear operation and add its support to Clickhouse, CSV, MySQL, Pandas, Parquet, PostgreSQL, PySpark and Spark

  • [Feature] #2097: Date, DateDiff and TimestampDiff implementations for OmniSciDB

  • [Feature] #2171: [OmniSciDB] Add support to week extraction

  • [Feature] #2062: Implement read_csv for omniscidb backend

  • [Feature] #2232: Add window operations support to SQLite

  • [Feature] #2126: Add translation rules for isnull() and notnull() for pyspark backend

  • [Feature] #2175: Create ExtractQuarter operation and add its support to Clickhouse, CSV, Impala, MySQL, OmniSciDB, Pandas, Parquet, PostgreSQL, PySpark, SQLite and Spark

  • [Feature] #2094: [OmnisciDB] Support add_columns and drop_columns for OmnisciDB table

  • [Feature] #2093: IsNan implementation for OmniSciDB

  • [Feature] #2186: ZeroIfNull and NullIfZero implementation for OmniSciDB

  • [Feature] #2198: Validate that the output type of a UDF is a single element

  • [Feature] #2233: Add ibis.pandas.trace module to log time and call stack information.

  • [Feature] #2246: Implement two level dispatcher for execute_node

  • [Feature] #2260: Add support for implementign custom window object for pandas backend

  • [Feature] #2270: Add support for Union in the PySpark backend

  • [Feature] #2285: Add support for casting category dtype in pandas backend

  • [Feature] #2303: Add application_name argument to ibis.bigquery.connect to allow attributing Google API requests to projects that use Ibis.

  • [Feature] #2230: Add intersection to general ibis api

  • [Feature] #2251: Add rowid expression, supported by SQLite and OmniSciDB

  • [Feature] #2347: Add set difference to general ibis api

  • [Feature] #2081: Add start_point and end_point to PostGIS backend.

  • [Feature] #2306: Add time context in scope in execution for pandas backend

  • [Feature] #2366: Add PySpark support for ReductionVectorizedUDF

  • [Feature] #2402: Use Scope class for scope in pyspark backend

  • [Feature] #2409: FEAT: Support Ibis interval for window in pyspark backend

  • [Feature] #2473: Support elementwise UDF to return multiple columns for Pandas and PySpark backend

  • [Feature] #2487: Support analytic and reduction UDF to return multiple columns for Pandas backend

  • [Feature] #2511: Support reduction UDF without groupby to return multiple columns for Pandas backend

  • [Feature] #2310: Add hash and hashbytes support for BigQuery backend

  • [Feature] #2514: Add Struct.from_dict

  • [Feature] #2603: Add support for np.array as literals for backends that already support lists as literals

  • [Feature] #2610: Added support for case/when in PySpark backend

  • [Feature] #2607: Implement Not operation in PySpark backend

  • [Feature] #2615: Add ibis.array for creating array expressions

  • [Feature] #2379: Backends are defined as entry points

  • [Feature] #2641: Add bit_and, bit_or, and bit_xor integer column aggregates (BigQuery and MySQL backends)

  • [Feature] #2655: Add auth_local_webserver, auth_external_data, and auth_cache parameters to BigQuery connect method. Set auth_local_webserver to use a local server instead of copy-pasting an authorization code. Set auth_external_data to true to request additional scopes required to query Google Drive and Sheets. Set auth_cache to reauth or none to force reauthentication.

  • [Feature] #2646: Support context adjustment for udfs for pandas backend

  • [Feature] #2687: Support Spark filter with window operation

  • [Feature] #2753: Use ndarray as array representation in Pandas backend

  • [Feature] #2779: Implement Clip in the Pyspark backend

  • [Feature] #2776: [Feature] #2797: Allow more flexible return type for UDFs

  • [Feature] #2790: Add startswith and endswith operations

  • [Feature] #2792: Infer categorical and decimal Series to more specific Ibis types in Pandas backend

  • [Feature] #2613: [Feature] #2778: Implement .insert() for SQLAlchemy backends

  • [Feature] #2805: Make op schema a cached property

  • [Feature] #2808: Support comparison of ColumnExpr to timestamp literal

  • [Feature] #2839:: Add group_concat operation for Clickhouse backend

  • [Feature] #2873: Support binary operation with Timedelta in Pyspark backend

  • [Feature] #2882: Unify implementation of fillna and isna in Pyspark backend

  • [Feature] #2908: Support summarization of empty data in Pandas backend

  • [Feature] #2916: Support joining on different columns in ClickHouse backend

  • [Feature] #2938: Serialization-deserialization of Node via pickle is now byte compatible between different processes

  • [Feature] #3097: Support TableExpr fillna and dropna in Pandas, Dask and Pyspark

  • [Support] #2113: Enabled cumulative ops support for OmniSciDB

  • [Support] #2096: Added round() support for OmniSciDB

  • [Support] #2107: Added fragment_size to table creation for OmniSciDB

  • [Support] #2244: Use an OmniSciDB image stable on CI

  • [Support] #2234: Remove “experimental” mentions for OmniSciDB and Pandas backends

  • [Support] #2304: Update google-cloud-bigquery dependency minimum version to 1.12.0

  • [Support] #2351: Simplifying tests directories structure

  • [Support] #2288: Drop support to Python 3.6

  • [Support] #2497: Move ibis.HDFS, ibis.WebHDFS and ibis.hdfs_connect to ibis.impala.*

  • [Support] #2505: Remove deprecated ibis.HDFS, ibis.WebHDFS and ibis.hdfs_connect

  • [Support] #2680: Namespace time_col config, fix type check for trim_with_timecontext for pandas window execution

  • [Support] #2689: Supporting SQLAlchemy 1.4, and requiring minimum 1.3

  • [Support] #2665: Move BigQuery backend to a separate repository. The backend will be released separately, use pip install ibis-bigquery or conda install ibis-bigquery to install it, and then use as before.

  • [Support] #2789: Simplification of data fetching. Backends don’t need to implement Query anymore

  • [Support] #2865: Deprecated ibis.<backend>.verify() in favor of capturing exception in ibis.<backend>.compile()

  • [Support] #2862: Deprecated list_schemas in SQLAlchemy backends in favor of list_databases

  • [Support] #2883: Output of Client.version returned as a string, instead of a setuptools Version

  • [Support] #2914: Removed log method of clients, in favor of verbose_log option

  • [Support] #2913: Method set_database has been deprecated, in favor of creating a new connection to a different database

  • [Support] #2962: Methods current_database and list_databases raise an exception for backends that do not support databases

  • [Support] #2977: Remove handwritten type parser; parsing errors that were previously IbisTypeError are now parsy.ParseError. parsy is now a hard requirement.

  • [Support] #2905: Deprecate exists_table(table) in favor of table in list_tables()

  • [Support] #2678: Improvement of the backend API. The former Client subclasses have been replaced by a Backend class that must subclass ibis.backends.base.BaseBackend. The BaseBackend class contains abstract methods for the minimum subset of methods that backends must implement, and their signatures have been standardized across backends. The Ibis compiler has been refactored, and backends don’t need to implement all compiler classes anymore if the default works for them. Only a subclass of ibis.backends.base.sql.compiler.Compiler is now required. Backends now need to register themselves as entry points.

  • [Support] #3088: Added atpublic dependency for adding APIs to modules’ __all__

  • [Support] #3112: Remove ir.ExprList, ops.ExpressionList and ibis.expr_list(). From now on column.summary() returns with a list of expression objects instead of a single expression.

Next 1.x bugfix release

  • [Bug] #2134: [OmniSciDB] Fix TopK when used as filter

  • [Bug] #2170: Fix millisecond issue for OmniSciDB #2167, MySQL #2169, PostgreSQL #2166, Pandas #2168, BigQuery #2273 backends

  • [Bug] #2127: Fix PySpark error when doing alias after selection

  • [Bug] #2157: Fix interactive mode returning a expression instead of the value when used in Jupyter

  • [Bug] #2223: Fix PySpark compiler error when elementwise UDF output_type is Decimal or Timestamp

  • [Bug] #2252: Allow group_by and order_by as window operation input in pandas backend

  • [Bug] #2237: Add missing float types to pandas backend

  • [Bug] #2256: Fix issue with sql_validate call to OmnisciDB.

  • [Bug] #1320: Added verbose logging to SQL backends

  • [Bug] #2342: Update impala kerberos dependencies

  • [Bug] #2367: Fix the covariance operator in the BigQuery backend.

  • [Bug] #2376: Fix analytic ops over ungrouped and unordered windows on Pandas backend

  • [Bug] #2387: Fix equality behavior for Literal ops

  • [Bug] #2386: Fix scope get to use hashmap lookup instead of list lookup

  • [Bug] #2386: FEAT: Support rolling window UDF with non numeric inputs for pandas backend.

  • [Bug] #2395: Fix reduction UDFs over ungrouped, bounded windows on Pandas backend

  • [Bug] #2229: Fix same column with multiple aliases not showing properly in repr

  • [Bug] #2414: Fix same window op with different window size on table lead to incorrect results for pyspark backend

  • [Bug] #2410: Fix aggcontext.Summarize not always producing scalar (Pandas backend)

  • [Bug] #2461: Table expressions do not recognize macaddr datatype (Postgres backend)

  • [Bug] #2462: Table expressions do not recognize inet datatype (Postgres backend)

  • [Bug] #2577: Make StructValue picklable

  • [Bug] #2354: Fixes binary data type translation into BigQuery bytes data type

  • [Bug] #2610: Fixes a NPE issue with substr in PySpark backend

  • [Bug] #2635: Fix fusion optimization bug that incorrectly changes operation order

  • [Bug] #2636: Fix overwrite logic to account for DestructColumn inside mutate API

  • [Bug] #2588: Fix BigQuery connect bug that ignored project ID parameter

  • [Bug] #2657: Add temporary struct col in pyspark backend to ensure that UDFs are executed only once

  • [Bug] #2693: Fix issues with context adjustment for filter with PySpark backend

  • [Bug] #2702: Fix aggregate exploding the output of Reduction ops that return a list/ndarray

  • [Bug] #2696: Fix wrong row indexing in the result for ‘window after filter’ for timecontext adjustment

  • [Bug] #2710: Fix error during compilation of range_window in base_sql backends (#2608)

  • [Bug] #2712: Fix time context trimming error for multi column udfs in pandas backend

  • [Bug] #2770: Fix error when using reduction UDF that returns np.array in a grouped aggregation

  • [Bug] #2820: Fix aggregation with mixed reduction datatypes (array + scalar) on Dask backend

  • [Bug] #2821: Fix .cast() to array outputting list instead of np.array in Pandas backend

  • [Bug] #2830: Disable aggregation optimization due to N squared performance

  • [Bug] #2827: Backends are loaded in a lazy way, so third-party backends can import Ibis without circular imports

  • [Bug] #2845: Fix projection on differences and intersections for SQL backends

  • [Bug] #2829: Fix .drop(fields). The argument can now be either a list of strings or a string.

  • [Bug] #2956: Replace equals operation for geospatial datatype to geo_equals

  • [Bug] #2984: Fix order of limit and offset parameters in the Clickhouse backend

  • [Bug] #2985: Fix null literal compilation in the Clickhouse backend

  • [Bug] #2991: Fix data races in impala connection pool accounting

  • [Bug] #3086: Error when trying to join tables with Pandas backend

1.3.0 2020-02-27

  • [Feature] #1868: Use pandas rolling apply to implement rows_with_max_lookback

  • [Feature] #1807: Spark client

  • [Feature] #1830: Spark tests

  • [Feature] #1871: Add support for Postgres UDFs

  • [Feature] #1885: Spark UDFs

  • [Feature] #1858: Add geopandas as output for omniscidb

  • [Feature] #1860: Add shapely geometries as input for literals

  • [Feature] #1923: Support timezone aware arrow timestamps

  • [Feature] #1908: DDL support for Spark backend

  • [Feature] #1913: PySpark backend

  • [Feature] #1942: PySpark backend string and column ops

  • [Feature] #1951: Implement IntervalSub for pandas backend

  • [Feature] #1945: window operations for pyspark backend

  • [Feature] #1943: filter for PySpark backend

  • [Feature] #1952: Validate AsOfJoin tolerance and attempt interval unit conversion

  • [Feature] #1967: Implement join for PySpark backend

  • [Feature] #1973: Add support for params, query_schema, and sql in PySpark backend

  • [Feature] #1974: Add support for date/time operations in PySpark backend

  • [Feature] #1978: Implement sort, if_null, null_if and notin for PySpark backend

  • [Feature] #1983: Add support for array operations in PySpark backend

  • [Feature] #1969: SQLAlchemy Default precision and scale to decimal types for PostgreSQL and MySQL

  • [Feature] #1987: Add more POSTGIS operations

  • [Feature] #2001: Pyspark backend bounded windows

  • [Feature] #1996: Add docstring check to CI for an initial subset files

  • [Feature] #2004: Clean up window translation logic in pyspark backend

  • [Feature] #2035: Add support for multi arguments window UDAF for the pandas backend

  • [Feature] #2047: Introduce a top level vectorized UDF module (experimental). Implement element-wise UDF for pandas and PySpark backend.

  • [Feature] #1976: Add DenseRank, RowNumber, MinRank, Count, PercentRank/CumeDist window operations to OmniSciDB

  • [Feature] #2071: Improve many arguments UDF performance in pandas backend.

  • [Bug] #1867: Fix return type of Struct.from_tuples

  • [Bug] #1869: Remove -x from pytest call in linux CI

  • [Bug] #1872: Fixed issues with geo data

  • [Bug] #1876: Fix the case where we do not have an index when using preceding with intervals

  • [Bug] #1883: Fix small formatting buglet in PR merge tool

  • [Bug] #1893: Fix according to bug in pd.to_datetime when passing the unit flag

  • [Bug] #1891: Make Nodes enforce the proper signature

  • [Bug] #1888: Fix various Spark backend issues

  • [Bug] #1899: Pass scope to grouping execution in the pandas backend

  • [Bug] #1901: OmniSci/MapD - Fix reduction for bool

  • [Bug] #1912: Fix failing com imports on master

  • [Bug] #1910: Fix union implementation

  • [Bug] #1903: sql method doesn’t work when the query uses LIMIT clause

  • [Bug] #1938: Upgrade to JDK11

  • [Bug] #1937: Fix incorrect assumptions about attached SQLite databases

  • [Bug] #1933: Fixes explain operation

  • [Bug] #1984: Fix CI log for database

  • [Bug] #2006: Pinning clickhouse-driver<0.1.2

  • [Bug] #2010: Fix pydocstyle config

  • [Bug] #2015: Fix handling of Array types in Postgres UDF

  • [Bug] #2009: Fix pandas backend to treat trailing_window preceding arg as window bound rather than window size (e.g. preceding=0 now indicates current row rather than window size 0)

  • [Bug] #2041: Change pymapd connection parameter from “session_id” to “sessionid”

  • [Bug] #2057: Fix datamgr.py fail if IBIS_TEST_OMNISCIDB_DATABASE=omnisci

  • [Bug] #2069: Fix load data stage for Linux CI

  • [Bug] #2089: Pin “clickhouse-driver” to “>=0.1.3”

  • [Support] #1856: Move CI pipelines to Azure

  • [Support] #1859: Remove pandas exception for rows_with_max_lookback

  • [Support] #1882: Added CoC section

  • [Support] #1884: Fix link to NUMFOCUS CoC

  • [Support] #1896: Removing linting from windows

  • [Support] #1895: Update link to Presto website

  • [Support] #1917: Added missing null literal op

  • [Support] #1926: Fix failing BigQuery tests

  • [Support] #1866: Rename mapd to omniscidb backend

  • [Support] #1925: PostGIS enhancements

  • [Support] #1928: Improve geospatial literals and smoke tests

  • [Support] #1949: More informative IntegrityError on duplicate columns

  • [Support] #1948: Add developer docs to get docker setup

  • [Support] #1950: Remove pandas deprecation warnings

  • [Support] #1958: Missing geospatial ops for OmniSciDB

  • [Support] #1960: Developer doc enhancements

  • [Support] #1961: Disable codecov report upload during CI builds

  • [Support] #1963: Re-formatting all files using pre-commit hook

  • [Support] #1971: Disable BigQuery explicitly in all/test_join.py

  • [Support] #1972: Fix BigQuery backend fixture so batting and awards_players fixture re…

  • [Support] #1982: Add log for database services

  • [Support] #1962: Json UUID any

  • [Support] #1988: Add black step to CI

  • [Support] #1999: cache all ops in translate()

  • [Support] #2012: Fixed impala start up issues

  • [Support] #2030: Pin “semantic_version” to “<2.7” in the docs build CI, fix “builddoc” and “doc” section inside “Makefile” and skip mysql tzinfo on CI to allow to run MySQL using docker container on a hard disk drive.

  • [Support] #2031: Change omniscidb image tag from v4.7.0 to v5.0.0 on docker-compose recipe

  • [Support] #1991: Add geospatial tutorial notebook

  • [Support] #2023: HTML escape column names and types in png repr.

  • [Support] #2037: Drop support for Python 3.5

  • [Support] #2043: Ping dependency of rtree to fix CI failure

  • [Support] #2046: Add Spark to supported backends list

  • [Support] #2044: Implement covariance for bigquery backend

  • [Support] #2034: Add initial documentation for OmniSciDB, MySQL, PySpark and SparkSQL backends, add initial documentation for geospatial methods and add links to Ibis wiki page

  • [Support] #2050: CI: Drop table only if it exists (OmniSciDB)

  • [Support] #2055: Fix “cudf” import on OmniSciDB backend

  • [Support] #2052: Add possibility to run tests for separate backend via make test BACKENDS=[YOUR BACKEND]

  • [Support] #2056: Fix data map for int8 on OmniSciDB backend

  • [Support] #2061: CI: Fix CI builds related to new pandas 1.0 compatibility

  • [Support] #2068: use conda for installation black and isort tools

  • [Support] #2075: Disable Postgres tests on Windows CI.

  • [Support] #2074: Link pandas issues with xfail tests in pandas/tests/test_udf.py

  • [Support] #2078: Unpin rtree version

  • [Support] #2051: [Omnisci] The same SRIDs for test_geo_spatial_binops

  • [Support] #2077: Change omniscidb image tag from v5.0.0 to v5.1.0 on docker-compose recipe

  • [Support] #2082: Use user-defined port variables for Omnisci and PostgreSQL tests

  • [Support] #2079: Pin back version of isort

  • [Support] #2066: Add support to Python 3.8

1.2.0 2019-06-24

  • [Feature] #1787: PostGIS support

  • [Feature] #1825: Accept rows-with-max-lookback as preceding parameter

  • [Feature] #1838: allow pandas timedelta in rows_with_max_lookback

  • [Feature] #1836: Add new geospatial functions to OmniSciDB backend

  • [Bug] #1837: Partially revert #1758

  • [Bug] #1843: Add max_lookback to window replace and combine functions

  • [Bug] #1850: Fix repr of empty schema

  • [Bug] #1851: Fix nested array literal repr

  • [Bug] #1855: Fix call to psql causing failing CI

  • [Support]: No space after :release:

  • [Support]: Bugs go into feature releases

  • [Support] #1826: Allow passing a branch to ci/feedstock.py

  • [Support] #1840: Tighter version spec for pytest

  • [Support] #1844: Raise exception on backends where rows_with_max_lookback can’t be implemented

  • [Support] #1845: Generate release notes from commits

  • [Support] #1848: Validate order_by when using rows_with_max_lookback window

  • [Support] #1847: Skip SQLAlchemy backend tests in connect method in backends.py

1.1.0 2019-06-09

  • [Feature] #1753: Added float32 and geospatial types for create table from schema

  • [Feature] #1743: is_computable_arg dispatcher

  • [Feature] #1777: Enable window function tests where possible

  • [Feature] #1778: Add marker for xfailing specific backends

  • [Feature] #1758: Reimplement the pandas backend using topological sort

  • [Feature] #1771: Add window operations to the OmniSci backend

  • [Feature] #1790: Add missing date operations and struct field operation for the pandas backend

  • [Feature] #1785: Allow strings for types in pandas UDFs

  • [Feature] #1792: Add min periods parameter to Window

  • [Feature] #1796: Add session feature to mapd client API

  • [Feature] #1766: Call to_interval when casting integers to intervals

  • [Feature] #1809: Conslidate trailing window functions

  • [Bug] #1661: PostgreSQL interval type not recognized

  • [Bug] #1765: Fix preceding and following with None

  • [Bug] #1775: Fix conda create command in documentation

  • [Bug] #1782: NullIf should enforce that its arguments are castable to a common type

  • [Bug] #1772: Fix outer_join generating LEFT join instead of FULL OUTER

  • [Bug] #1789: Fix compatibility and bugs associated with pandas toposort reimplementation

  • [Bug] #1798: Fix Python 3.5 dependency versions

  • [Bug] #1783: Allow projections from joins to attempt fusion

  • [Bug] #1799: Chained mutate operations are buggy

  • [Bug] #1757: Remove unnecessary (and erroneous in some cases) frame clauses

  • [Bug] #1818: Fix failing strftime tests on Python 3.7

  • [Bug] #1819: Fix group_concat test and implementations

  • [Support] #1749: Update README reference to MapD to say OmniSci

  • [Support] #1700: Re-enable CI for building step

  • [Support] #1750: Add Python 3.5 testing back to CI

  • [Support] #1759: Add isort pre-commit hooks

  • [Support] #1638: Add StringToTimestamp as unsupported

  • [Support] #1763: Remove warnings and clean up some docstrings

  • [Support] #1776: Constrain PyMapD version to get passing builds

  • [Support] #1781: Update omnisci container version

  • [Support] #1779: Clean up most xpassing tests

  • [Support] #1821: Fix typo in UDF signature specification

  • [Support] #1793: Add pep8speaks integration

  • [Support] #1810: Pin sphinx version to 2.0.1

  • [Support] #1805: Fix design and developer docs

  • [Support] #1814: Add development deps to setup.py

  • [Support] #1820: Remove decorator hacks and add custom markers

1.0.0 2019-03-26

  • [Feature] #1608: Add range_window and trailing_range_window to docs

  • [Feature] #1611: Make ibis node instances hashable

  • [Feature] #1604: Implement approx_median in BigQuery

  • [Feature] #1618: Publish the ibis roadmap

  • [Feature] #1627: Support string slicing with other expressions

  • [Feature] #1637: Fix UDF bugs and add support for non-aggregate analytic functions

  • [Feature] #1655: Add cross join operator to MapD

  • [Feature] #1636: Remove implicit ordering requirements in the PostgreSQL backend

  • [Feature] #1669: Allow operations to hide arguments from display

  • [Feature] #1675: Support column names with special characters in mapd

  • [Feature] #1686: Getting started with mapd, mysql and pandas

  • [Feature] #1685: Add pre commit hook

  • [Feature] #1666: Implement geospatial types for MapD

  • [Feature] #1678: Implement geospatial functions for MapD

  • [Feature] #1716: Implement table distinct for the pandas backend

  • [Feature] #1714: Remove a bunch of deprecated APIs and clean up warnings

  • [Feature] #1704: Add find_nodes to lineage

  • [Feature] #1725: Remove support for passing integers to ibis.timestamp

  • [Feature] #1712: Timestamp literal accepts a timezone parameter

  • [Feature] #1728: Implement BigQuery auth using pydata_google_auth

  • [Feature] #1727: Implement default handler for multiple client pre_execute

  • [Feature] #1723: Add cross join to the pandas backend

  • [Feature] #1744: Clean up merge PR script and use the actual merge feature of GitHub

  • [Feature] #1731: Add SQL method for the MapD backend

  • [Feature] #1680: Add support for the arbitrary aggregate in the mapd backend

  • [Feature] #1735: Add black as a pre-commit hook

  • [Bug] #1600: Fix equality

  • [Bug] #1651: Make sure we cast when NULL is else in CASE expressions

  • [Bug] #1648: Remove parameters from mapd

  • [Bug] #1653: Fixed where operator for MapD

  • [Bug] #1643: Fix map get with compatible types

  • [Bug] #1647: Resolves joining with different column names

  • [Bug] #1701: Use == to compare strings

  • [Bug] #1659: Fix MapD exception for toDateTime

  • [Bug] #1705: Fix visualizing an ibis expression when showing a selection after a table join

  • [Bug] #1639: Add Union as an unsuppoted operation for MapD

  • [Bug] #1706: Fix BigQuery credentials link

  • [Bug] #1729: Filter the raw warning from newer pandas to support older pandas

  • [Bug] #1732: Fix bug in TableExpr.drop

  • [Bug] #1738: Fix skipping for new BigQuery auth flow

  • [Bug] #1741: Fix testing for BigQuery after auth flow update

  • [Bug] #1737: Fix casting to float in the MapD backend

  • [Bug] #1742: Fix NULLIF implementation for the pandas backend

  • [Bug] #1745: Make dev/merge-pr.py script handle PR branches

  • [Support] #1609: Fix conda builds

  • [Support] #1640: Set up CI with Azure Pipelines

  • [Support]: Update README.md

  • [Support] #1642: Fix Azure deployment step

  • [Support] #1645: Add TableExpr.drop to API documentation

  • [Support] #1641: Updated MapD server-CI

  • [Support] #1646: Fix Azure VM image name

  • [Support] #1650: Add test for reduction returning lists

  • [Support] #1657: Unpin clickhouse-driver version

  • [Support] #1658: Fixes a very typo in the pandas/core.py docstring

  • [Support] #1660: Remove defaults as a channel from azure pipelines

  • [Support] #1664: Update README.md for impala and kudu

  • [Support] #1667: Fix flake8 and many other warnings

  • [Support] #1670: Remove support for Python 2

  • [Support]: Update docs to reflect Apache Impala and Kudu as ASF TLPs

  • [Support] #1672: Enabled mysql CI on azure pipelines

  • [Support] #1681: Update mapd ci to v4.4.1

  • [Support] #1696: Fix multiple CI issues

  • [Support] #1694: Use cudf instead of pygdf

  • [Support] #1746: Use releases to manage documentation

  • [Support] #1747: Remove tag prefix from versioneer

  • [Support] #1748: Do not build universal wheels