Version History =============== Stay up to date with the latest releases by following us on `Telegram `_ or `X `_. ------------------------------------------------------------ Version 2.0.16 — 2026-07-10 ---------------------------- - **DuckDB Connector** — added support for DuckDB as a data source. DuckDB is embedded: the whole database is a single file next to XLTable — no database server to install, which makes it the fastest way to try XLTable or to serve small and medium datasets. Cubes can also be built directly on top of Parquet/CSV files via ``read_parquet()`` / ``read_csv()`` in the cube definition. See :doc:`duckdb_sample`. Version 2.0.15 — 2026-07-04 ---------------------------- - **Parallel worker processes on Linux (concurrency)** — the Ubuntu installer now starts several server processes behind nginx load balancing (one per CPU core, up to 4 by default; configurable with ``XLTABLE_INSTANCES``). Heavy reports from many concurrent users are built in parallel instead of queueing on a single CPU core; all processes share one cache and one ``settings.json``. Existing installations pick this up by re-running ``install_xltable.sh``. - **Worker threads and port settings (SERVER_THREADS, SERVER_PORT)** — the number of worker threads of one server process is now configurable (default raised from 8 to 16, so more database queries stay in flight simultaneously), as is the listening port (``SERVER_PORT``, or the ``OLAP_PORT`` environment variable used by the multi-process setup). - **Result cache size cap (RESULT_CACHE_MAX_MB)** — query results larger than the configured size (16 MB by default) are no longer stored in the shared result cache: under concurrent load, writing huge cached responses made all worker processes queue on the cache database; such results are cheaper to rebuild. Also sped up the assembly of very large XMLA responses. - **Collapse / Expand Entire Field** — the Pivot Table context-menu commands **Expand/Collapse → Collapse Entire Field** and **Expand Entire Field** are now supported in all combinations, verified against SSAS traces, both for separate nested fields and for levels of a multi-level hierarchy: collapsing a whole nested field, expanding an entire field or hierarchy level (all items at once), expanding a single item of a collapsed field back (only that item shows the nested field) and collapsing single items of an expanded field. A collapsed field is not queried at all — its table is not scanned or joined until the field is expanded again. - **Keep Only / Hide Selected Items** — the Pivot Table context-menu commands **Filter → Keep Only Selected Items** and **Hide Selected Items** are now supported, including items of multi-level hierarchies. Excel's service query for the hierarchy position of the selected items (``__XlItemPath`` / ``__XlSiblingCount`` / ``__XlChildCount``) is answered the same way as by SSAS. - **Large dimension filters** — Keep Only / Hide Selected Items works on dimensions with tens of thousands of members, verified against an SSAS trace with 20,000 items: the full member list is returned to Excel (capped by the new ``MAX_FILTER_MEMBERS`` setting, 100,000 by default), member filters are generated as compact SQL ``IN (...)`` lists instead of ``OR`` chains, and the ClickHouse connector automatically raises ``max_query_size`` for oversized queries (the default 256 KB parser limit rejected large filter lists). - **Result limit in cells (MAX_CELLS)** — the result size limit is now measured in cells of the pivoted table (row combinations × column combinations × measures) instead of rows, with a default of 1,000,000 — the same way SSAS limits oversized results. The legacy ``MAX_ROWS`` setting is still accepted. A separate, clear message is returned when the columns area exceeds the Excel sheet limit of 16,384 columns. - **XMLA diagnostics (DUMP_XMLA)** — new setting that dumps every raw XMLA request and response to the ``log`` folder, for diagnosing Excel/XMLA protocol issues. - **Automatic log cleanup (LOG_RETENTION_DAYS)** — log files older than the configured number of days (14 by default) are now removed automatically. - **Overload protection (OVERLOAD_GUARD)** — when the server host runs out of memory, CPU or disk space (configurable thresholds), data queries are rejected with a clear "Server is overloaded" message in Excel instead of being forwarded to the database. Metadata requests still pass, so cube connections stay alive. - **Metadata cache TTL (METADATA_CACHE_TTL)** — cached cube definitions, schema lists and query results now expire after a configurable period (600 seconds by default), so an edited cube is picked up automatically without clearing the cache. - **Hot reload of settings.json** — configuration changes are picked up automatically within a few seconds of saving the file, without a service restart. A file with a JSON syntax error is ignored (the previous configuration keeps working) and logged. - **Cache follows settings.json** — database credentials are no longer stored in the cache (they are read from the live configuration on every request), and the cache is cleared automatically whenever the configuration content changes — on hot reload or on service start. A service started with an incorrect configuration no longer requires a manual cache clear after the fix. - **Authorization cache timeout (AUTH_CACHE_TIMEOUT)** — cached authorizations of local users now expire the same way as Active Directory ones; the new setting applies to both (``LDAP_CACHE_TIMEOUT`` is kept as a legacy fallback). - **Admin panel: cache management** — new per-user cache overview with last-activity times, a **Sign out** button for a single user, and a **Clear Metadata Cache** action that applies cube changes without signing users out. Version 2.0.14 — 2026-07-01 ---------------------------- - **Drillthrough** — double-clicking a Pivot Table cell now returns the underlying detail rows. Detail columns are configured per measure group with the new ``olap_drillthrough`` tag in the cube definition. - **New Jinja context** — expanded the Jinja rendering context available in cube definitions with additional variables for building dynamic query logic. - **Debug console** — new debug console for inspecting rendered SQL, Jinja context and query execution, making cube development and troubleshooting easier. Version 2.0.13 — 2026-06-18 ---------------------------- - **Extended Jinja context** — Jinja templates now receive additional context variables (``user``, ``now``, ``request`` and per-source SQL fragments) for row-level security and dynamic query logic. - **SQL and XML escaping** — hardened escaping of user names, member values and identifiers across all connectors to prevent SQL injection and malformed XMLA responses. - **Many-to-many fix** — corrected SQL generation for ``many-to-many`` relationships. - **Connector fixes** — multiple fixes across database connectors, including ``ILIKE`` support for BigQuery. - **MCP connector (in development)** — early support for an MCP connector, currently under active development. Version 2.0.12 — 2026-05-22 ---------------------------- - **Greenplum Connector** — added support for Greenplum as a data source. - **HTTP gzip compression** — server HTTP responses now support gzip compression, reducing the amount of data transferred. - **Faster XMLA response building** — significantly improved performance when generating XMLA responses with a large number of rows. Version 2.0.11 — 2026-04-01 ---------------------------- - **Databricks Connector** — added support for Databricks as a data source. - **OLAP cube syntax validation** — new function for validating cube definition syntax before loading. - **Windows 10 and 11 support** — added the ability to run on Windows 10 and 11 operating systems. Version 2.0.10 — 2026-03-19 ---------------------------- - **StarRocks Connector** — added support for StarRocks as a data source. - **Admin Panel** — new web-based interface for managing server configuration. - **Part-source parameter** — added ``part-source`` attribute for defining tag relationships in cube configuration. - **Jinja context variables** — cube definitions now support Jinja templating with context variables. - **Improved logging** — enhanced diagnostic output across all supported connectors for easier troubleshooting.