- aliases now accessible in WHERE and GROUP BY:
SELECT field AS alias WHERE alias = 123
SELECT field AS alias GROUP BY alias
NOT IN
andNOT STRICT IN
- Way to bind pluggable data transfors
- Multiline JSON objects are supported
REGEXP
support:"string" REGEXP "/pattern/im"
BETWEEN
supportIS
support:IS [NOT] NULL
IS [NOT] BOOL
and aliasIS [NOT] BOOLEAN
IS [NOT] NUMBER
IS [NOT] ARRAY
IS [NOT] OBJECT
IS [NOT] STRING
LIKE
andILIKE
(case-insensitiveLIKE
) was added- Automatical type coercion in date comparisons like
ts > NOW() - INTERVAL 1 DAY
SELECT ... FROM dataSource
support- 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}
INSERT
now supports bindings
SELECT DISTINCT ...
supportSELECT COUNT(DISTINCT ...)
support
- Added support for constant JSON-values
- Support for
DELETE WHERE
queries - Support for
INSERT {object}[,{object}]
queries. Rows just was aded to end of the input stream - Support for
UPDATE
queries - 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)