2023.09

Release Notes

2023.09.1

This release has some (regression) fixes and other minor improvements, some listed below

Note The updates of the Postgresql driver did bring forward a breaking change for the stored procedures support (databasources.sp.xx) that Servoy has Because since Postgresql 11 they have now native support for Stored Procedures, (CREATE OR REPLACE PROCEDURE) which was previously only Functions. We used DatabaseMetaData.getProcedures() to get all the SP, and until the 42.2.11 release of the driver that would return Functions, but they stopped doing that. This will mean that from this release on we also really only support SP through our datasources.sp.xxx calls for Postgresql

2023.09

Enhancements

The following are key enhancments in Servoy version 2023.09

ECMAScript Parser

Servoy is in the process of updating the JavaScript engine and tooling to be compatible with ECMA 2015+. In the 2023.9 release, we enhanced the parser we introduced in 2023.6 more by adding 'let' and 'for-of loops' suppport. Besides fixes other fixes and improvements

Try it Out

In Servoy Developer, go to the menu Window -> preferences -> JavaScript and select the option "Enabled the ECMAScript parser", after which your Script Editor will be able to parse newer ECMA syntax, such as Arrow Functions and Template Literals.

Example of Let and For-Of loop
let  materials = [
  'Hydrogen',
  'Helium',
  'Lithium',
  'Beryllium'
];

for (let material of materials) {
    application.output(material.toUpperCase();
}
// Expected output: Array [HYDROGEN, HELIUM, LITHIUM, BERYLLIUM]

Caller hierarchy to performance method file logging ("log only setting" on the admin page)

The log format is a bit changed because of this, because we now include id's and parentid's in the log:

functions: id|parentid|clientuuid|function/path|totaltime|totaltime|Function or Function_userinput|solutionName sql: id|parentid|clientuuid|sql|totaltime|intervalTime|TypeOfQuery|serverName

so people who did parse this log have to change the parsing because of the 2 things added at the front.

Also this change introduced a breaking java api change (for java plugins that use this) in the IServerAccess interface:

  • public void endPerformanceTiming(String context, Integer id, String clientId); >> Integer parameter == Long

  • public Integer addPerformanceTiming(String context, String action, long time_ms, String clientId); >> Integer return type is Long

Developer

Throughout the developer "Groups" (like in the security editor) are renamed to "Permissions". Also api (see below JSSecurity) deprecated the groups functions and added permission functions instead.

Behavior changes

InMem tables are now following the allow null flag when saving.

API Changes

The following are additions and changes to API

  • Added method getFoundSet(QBSelect) to JSDatasource: Also updated the docs for this in various places because there are changes in the different getFoundset(qbselect) calls, some are really loading just the query as the search query for that foundset others calls like this new one makes a view of it (so loadAllRecords() on that foundset will rever to that query)

  • Added method isCleared() to JSFoundSet to check if this foundset is in a cleared state.

  • Added method setFirstDayOfTheWeek(number) to JSI18N to override the default first day of the week of the timezone/locale the user is in.

  • JSSecurity methods with "groups" in the name are depricated and replaced with "permissions" equivalents.

TiNG updates

Angular updated to 16.2 (this is a breaking change for most core projects like bootstrap or nggrid those needs also new versions) Minor upgrades to other core npm packages

Dialogs plugin is rewritten to be more in line with the look and feel of bootstrap (NG1)

jar updates

Eclipse updated to 2023.06 (4.28) Shipped java updated to 17.08 A lot of jdbc drivers are updated to the latest releases (mssql, mysql, postgresql and hsqldb (inmem)) A lot of 3rd party jars (core and plugin jars) are updated like snake, jandex, jackons and jwt libs.

Case List

Below is a comprehensive list of cases associated with each release (candidate)

2023.09.1

2023.09

2023.09-RC2

2023.09-RC1

Last updated