- aliases now accessible in WHERE and GROUP BY:
SELECT field AS alias WHERE alias = 123SELECT field AS alias GROUP BY alias
NOT INandNOT STRICT IN- Way to bind pluggable data transfors
- Multiline JSON objects are supported
REGEXPsupport:"string" REGEXP "/pattern/im"BETWEENsupportISsupport:IS [NOT] NULLIS [NOT] BOOLand aliasIS [NOT] BOOLEANIS [NOT] NUMBERIS [NOT] ARRAYIS [NOT] OBJECTIS [NOT] STRING
LIKEandILIKE(case-insensitiveLIKE) was added- Automatical type coercion in date comparisons like
ts > NOW() - INTERVAL 1 DAY
SELECT ... FROM dataSourcesupport- JSON objects can now be created as
{key: "value"}not only JSON-compliant form{"key": "value"}
- New aggregation function:
AVG()
- Arrays now supports multi-value bindings:
SELECT [1, 2, ::other, 3]
Breaking changes:
- Identifier binding syntax changed:
[:bind]->{:bind} INSERT row1[, row2...]syntax changed toINSERT VALUES row1[, row2...]
New features:
- Bindings and column values in JSON:
SELECT {"column": columnName, "binded": :bind} INSERTnow supports bindings
SELECT DISTINCT ...supportSELECT COUNT(DISTINCT ...)support
- Added support for constant JSON-values
- Support for
DELETE WHEREqueries - Support for
INSERT {object}[,{object}]queries. Rows just was aded to end of the input stream - Support for
UPDATEqueries - Added support for E-notation for floating numbers
- Support for
SELECT *, [fields...]
- Added the ability to manipulate dates using the INTERVAL operators
DATE()now return dates in local timezone instead of UTC
- Binding can now be used for data sources (
JOIN [:name] ON @name.field = field) - Sorting strings are now always done in byte-by-byte representation of the string in UTF-8.
Made to be compatible with the sorting of
sort
New features:
- Identifiers binding (#1)