SKOOR Webservice Changelog

8.1.0

  • Uses pagination when getting data from CashPilot
  • Provides endpoint to automatically translate using DeepL. To activate this feature a DeepL API key has to be provided in /etc/opt/eranger/eranger-webservice.cfg using the i18n.deeplApiKey property.

8.0.11

  • CashPilot Data Source
    • Supports page_size and error_message_path of REST FDW. This allows to get paged results and to handle error messages.
    • Supports certificate, basic_auth_username and basic_auth_password of REST FDW.

8.0.10

  • Fixes bug that causes /alarmrecipients to fail.

8.0.9

  • Data Queries
    • Fixes bug that causes not updating data query columns immediately after publishing it.
    • Fixes bug that sometimes causes data queries to fail if a data source or data query is referenced multiple times.
  • Data Source
    • Allows to filter data using a single wildcard %
    • Fixes bug that causes scopes not to work properly.

8.0.8

  • Data Queries
    • Fixes bug that prevents deleting multiple data query groups in a row.
    • Allows to export data queries that reference data source scopes with deleted users.
    • Fixes bug that breaks selection of data source when creating data query.

8.0.7

  • Data Sources
    • Removes password when exporting list of data sources.

8.0.6

  • Data Sources
    • Better error handling when importing from XLSX files
  • Fixes bug that causes legacy config migration to fail if updated from 7.2.x instead of 7.3.x version.

8.0.5

  • Supports arabic text in PDF report footer.
  • Adds CashPilot data source.
  • Allows common table expressions (WITH queries) in data queries.

8.0.4

  • Fixes bug that causes legacy configurations not to be converted properly in case of multiple tenants.

8.0.3

  • Fixes broken config DB connections in case of multiple tenants.

8.0.2

  • Data Sources
    • Provides better error messages when importing data from XLS/XLSX files.

8.0.1

  • Data Sources
    • Uses RFC4180 compliant CSV parser when parsing import data.
  • Fixes bug that causes multi tenency configurations not to work properly in case of no default tenant.

8.0.0

  • Adds dataSources/{id}/tables/{table}/distinctValues and dataSources/{id}/tables/{table}/distinctValues which allow getting distinct values for column combinations.
  • Fixes bug that breaks sorting in data source preview if we sort by a columns containing duplicated values.
  • Moves the configuration from File System to Database. which includes (Files, Styles, Translations, DataSources, DataQueries)
  • Data Queries
    • Imporves renaming of Data Queries. Renaming a data query will change its name also in the dependent queries.
    • Improves Export/Import of DataQueries.
    • Optimizes caching of DataQueries.
  • Updates to Spring Boot 3.3.0.
  • Updates to Java 21.0.3.
  • Adds new aggregate function 'distinct_count'
  • GIS Controller: Geographic Information System
    • Adds /dataQuery/{id}/cluster which adds support to Geo Maps using data queries.
    • Adds gis/cluster which adds support for Geo Links in Geo Maps.
    • Filters empty addresses before geo coding.

7.3.21

  • Fixes bug that causes a "No mime type found for *.csv" error message on some systems when exporting a data source table.

7.3.20

  • Fixes import of data source table data.

7.3.19

  • Fixes bug that sometimes causes selects to fail if query contains an empty argument.

7.3.18

  • Does not throw away dynamic data query caches upon Web Service restart anymore.

7.3.17

  • Fixes bug that breaks table annotations.
  • Does more caching to speed up data queries even more.

7.3.16

  • Fixes bug that causes error when sub data query is referenced multiple times on different levels.

7.3.15

  • Even more fixes to improve data query performance.

7.3.14

  • Various fixes to improve data query performance.

7.3.13

  • Optimizes caching of static SKOOR Dashboard assets.
  • Fixes bug that prevents API calls to be cached.

7.3.12

  • Increases performance of distinct values endpoints.
  • Avoids materialized data queries with very large result sets blocking the whole webservice.

7.3.11

  • Uses the new stablenet_permission_hash table from StableNet FDW. This allows to highly optimize materialized data queries and caching in general.

7.3.10

  • Reuses Java HTTP client instances.
  • Does not invalidate StableNet Auth tokens anymore after selects, as this is now done automatically by SKOOR Auth. This saves one roundtrip to the SKOOR Auth Service.
  • Do not try to use unlogged tables for materialized data queries on MySQL backends.

7.3.9

  • Caches some database table metadata to reduce database access.

7.3.8

  • Reduce number of concurrently refreshed materialized data queries to 10.

7.3.7

  • The Data Query cache refresher no longer discards cached data if there's a temporary failure in refreshing StableNet authentication tokens.

7.3.6

  • Decreases data query dynamic cache limit from 100'000 to 10'000 rows. This should reduce writes to the disk for unmaterialized data queries.

7.3.5

  • Replaces deprecated server.tomcat.max-threads with server.tomcat.threads.max.

7.3.4

  • Increases number of concurrent connections to SKOOR Engine server.

7.3.3

  • Fixes a bug that prevents data query run to make use of materialized data.
  • Adjusts materialized data query refresh timeouts based on refresh interval.
    • none: 600s
    • daily: 600s
    • hourly: 60s
    • minutely: 10s
  • Limits materialized data query maximum row count based on refresh interval.
    • none: 10'000'000
    • daily: 10'000'000
    • hourly: 1'000'000
    • minutely: 100'000

7.3.2

  • Fixes bug that prevents data source tables from being exported.

7.3.1

  • Increases the Spring Boot max threads to 400.
  • Optimizes concurrency when refreshing materialized data queries.

7.3.0

  • Adds StableNet Data source type which uses the StableNet Foreign Data Wrapper.
  • Fixes bug that causes mismatch between Engine values and value definitions.
  • Fixes a bug that causes very bad database performance on big datasets when filtering for integer values.
  • Various other performance optimizations for big datasets.
  • New export / import endpoints for dashboards and data queries.

7.2.15

  • Fixes Data Source data import of XLS(X) files with missing trailing cells on some rows.

7.2.14

  • Fixes bug that causes the PUT /{parentType}/{parentId}/children to fail if parent is a SLC.

7.2.13

  • Increases inprocess database connection pool from 8 to 30 to allow more parallel requests.

7.2.12

  • Improves timeout behaviour on MySQL Data Sources.

7.2.11

  • More accurate result row estimate function for data sources and data queries.
  • Supports date trunc functions like month() and day() on MySQL as well.

7.2.10

  • Fixes time zone and daylight saving time issues on MySQL connections.
  • Provides ISO-8601 formatted times in the timezone of the web service instead of UTC (e.g. 2023-01-02T08:00:00+01:00 instead of 2023-01-02T07:00:00Z). This is much easier to read when working with the webservice and should not affect existing clients as those should always factor in the offset.

7.2.9

  • Also estimates row count on MySQL to improve query performance.

7.2.8

  • Correctly handles JSON operators ?, ?| and ?& in data queries.

7.2.7

  • Fixes handling of zoned date time params.

7.2.6

  • Fixes a bug that breaks PDF reports containing special characters in the footer fields.

7.2.5

  • Fixes broken position marker if data query contains errors.

7.2.4

  • Fixes deadlock when a slow data query is accessed multiple times in parallel.

7.2.3

  • Limit columns in data source /columns to current schema.
  • Fixes loading of data source scopes.

7.2.2

  • Fixes a bug that breaks requests to data sources and data queries that contain quotes in search query values.
  • Fixes data queries on databases that do not allow creating the cache schema.

7.2.1

  • Listens on all IPv4 and IPv6 addresses instead of only IPv4.

7.2.0

  • Allows to modify table schemas of data sources
  • Allows to change data of data sources
  • Implements annotations
  • Changes representation of revaluation active time that begin only contains the local time component instead of a full ISO-8601 string.
  • Refresh interval for materialized data queries.

7.1.3

  • Fixes a bug that causes /{type}/{id}/children requests to fail in case an object contains Alarmrecepients.

7.1.2

  • Data Sources
    • Fixes row number estimate in case of query contains IN() conditions.

7.1.1

  • Script data source
    • Fixes bug that causes error if offset is greater than number of returned rows.

7.1.0

  • Rejects values provided to /webcollector that are too far in the future
  • Estimates number of rows fetched from PostgreSQL databases instead of calculating it if the number of fetched rows is greater than 1'000'000. This massively increases query performance on big datasets.
  • Fixes bug that causes fetching job messages to fail if an object is not scheduled on a collector.

7.0.7

  • Data Queries
    • Fixes deadlock when refreshing nested data queries.
    • Fixes a bug that causes dependency resolution to find the same dependent multiple times.

7.0.6

  • Provides defaultParams in /dashboards/groups/nested request

7.0.5

  • Fixes bug that causes a select request on a script data source to crash if no offset and limit params are provided.
  • Fixes parsing of data queries containing with

7.0.4

  • Inventory Controller
    • Fixes handling of tree request with empty objects.

7.0.3

  • PDF Reports
    • Also fixes page wrap for tables

7.0.2

  • PDF Reports
    • Fixes page wrap
    • Fixes doubled table headers

7.0.1

  • Allows to export single data query
  • Fixes a bug that sometimes prevented detecting already materialized data queries upon service restart.

7.0.0

  • Improves data queries
    • Allows to materialize data queries similar to materialized views.
    • Remove Semver versions in favour of just dates.
    • Improves reference detection.
    • Enforces permissions from data source in dmvn testata query as well.
    • Caches data query results for better performance.
  • Pools PDF report rasterizers to improve performance.
  • Updates MySQL JDBC connector. Requires MySQL >= 8.
  • Adds InventoryController which provides optimized endpoints for the SKOOR Dashboard Inventory widget

6.4.3

  • Mainteneance release to incorperate changes from 6.3.4.

6.4.2

  • Supports PostgreSQL citext type and (more) other special types as well.

6.4.1

  • /files endpoint now defaults mime type of unknown files to application/octet-stream instead of returning null.

6.4.0

  • Allows to delete files using DELETE /files/filename.extension
  • Increases maximum upload file size from 1 MB to 10 MB

6.3.4

  • Ensures that PostgreSQL connections always use the external connection pooler.

6.3.3

  • Ensures that the current user has full permissions on a newly created dashboard group.

6.3.2

  • Speeds up Webservice startup by triggering migrations only once during update.

6.3.0

  • Allows operators like AND(), OR() when doing text search on data sources
  • Sorts reasons naturally when getting origin (drilldown)

6.2.5

  • Fixes creation of dashboard groups

6.2.4

  • Normalizes Dashboard permissions
    • Makes root "Dashboards" readable by any
    • Adds "Deny Any" to root "Dashboards" group for referenced objects
    • Removes "deny" rules fom all dashboard objects

6.2.3

  • Forces init permissions of dashboards to parent object

6.2.2

  • Fixes Dashboard fetching when user is moved into other groups or changes role.

6.2.1

  • Fixes Header Tile migration in case og only right header tile.

6.2.0

  • New Dashboard permission endpoints

6.1.4

  • Fixes Data Queries using aggregate functions without alias (e.g. count(*), sum(foo), ...)

6.1.3

  • Does dashboard migrations once per tenant instead of only once globally.

6.1.2

  • Data Queries
    • Fixes data queries that have deleted user as author.
    • Fixes Data Queries with null query strings

6.1.1

  • Data Queries
    • Does not use Commont Table Expressions on MySQL because old version of MySQL do not support those. Probably there will be a detection for this feature in a later Webservice version.

6.1.0

  • Data Queries
    • Usees Common Table Expressions (WITH queries) for sub queries instead of nested sub queries. No need to add an alias to a sub query anymore.
    • Strips comments before processing sub queries and params.
    • Measures query execution time and return duration
    • Allows default values for parameters and simplify parameter syntax (no more "params.")
  • Data Queries / Data Sources
    • Sub aggregates
  • Styles endpoint for storing custom CSS styles
  • Returns children in reason call

6.0.5

  • Fixes reading config from environment variables

6.0.4

  • Data Queries
    • Removes pinning logic
    • Always deletes groups recursively
    • Simplifies and fixes export/import

6.0.3

  • Returns a 404 instead of 500 HTTP status code in case of invalid dashboard

6.0.2

  • Allows to save invalid data queries. Return errors when getting data query instead
  • Does not add version markers anymore when publishing data queries
  • Fixes circular reference detection for sub data queries

6.0.1

  • Single request for dashboards including its children (/dashboards/{id}/nested)

6.0.0

  • Config from ENV
  • Allows to set darkmode on user
  • Many changes when getting dashboards
  • Removes some stuff now done by SKOOR Auth
  • Uses connection pool from PGPool-II if available