Kexi/Releases/Kexi 2.9.8
Appearance
See https://calligra.org/news/calligra-2-9-8-released/
List of changes
- General:
- Avoid repeated opening of the same object, possible for large data
- Tables:
- Table view's combo box list: ensure that highlighted row is visible
- Table view: update the highlighted row while scrolling the viewport
- Queries:
- New feature: Add support for 22 typical scalar SQL functions (wish 352631): abs(X), ceiling(X), char(X1,X2,...,XN), coalesce(X,Y,...), floor(X), greatest(X,Y,...) and its alias max(X,Y,...), hex(X), ifnull(X,Y), instr(X,Y), least(X,Y,...) and its alias min(X,Y,...), length(X), lower(X), ltrim(X), ltrim(X,Y), nullif(X,Y), random(), random(X,Y), replace(X,Y,Z), round(X), round(X,Y), rtrim(X), rtrim(X,Y), soundex(X), trim(X), trim(X,Y), unicode(X), upper(X).
- With minor exceptions these functions now work with SQLite, MySQL, PostgreSQL
- This make Kexi unique environment supporting unified SQL
- In many cases substitute functions are used to make the result work in a portable way
- No extra i18n added; will be added in a KDb port
- Implementation of the function parser supports:
- checking number of arguments
- checking types of arguments, sometimes "any number" or "any text or BLOB"
- checking compatibility of arguments in function
- checking relation of value of arguments in function, e.g. value of the first argument smaller than second's
- checking NULL arguments in function; then most often the result is NULL
- argument overloading or optional arguments, e.g. round(X) and round(X,Y)
- displaying of human-readable error messages when the above constraints are not met, for example "Three arguments required" or "Function does not accept any arguments"
- easy extensibility using just a few lines of code.
- New feature: Add support for hex literals, useful for opearting on BLOBs in queries: X'ABCD' (SQL) and 0xABCD (ODBC) formats
- Optimize evaluating type of expressions (also for database migration)
- Fix broken floating-point constants in Kexi SQL queries, e.g. "1.002" was interpreted as "1.2" (bug 352363)
- After parsing numbers are now kept losslessly as byte arrays, what enables unlimited precision
- Improve parsing/sending BLOB literals
- Improve performance of the SQL scanner
- Make parsing of argument lists in scalar SQL functions more efficient by reversing direction
- New feature: Add support for 22 typical scalar SQL functions (wish 352631): abs(X), ceiling(X), char(X1,X2,...,XN), coalesce(X,Y,...), floor(X), greatest(X,Y,...) and its alias max(X,Y,...), hex(X), ifnull(X,Y), instr(X,Y), least(X,Y,...) and its alias min(X,Y,...), length(X), lower(X), ltrim(X), ltrim(X,Y), nullif(X,Y), random(), random(X,Y), replace(X,Y,Z), round(X), round(X,Y), rtrim(X), rtrim(X,Y), soundex(X), trim(X), trim(X,Y), unicode(X), upper(X).
- MySQL databases:
- Set client_library_version property for newer versions of MySQL
- PostgreSQL databases:
- Return NULL value for columns of NULL type
- Switch to "BYTEA HEX" escaping while generating native statements