ub-server #

Added #

5.9.2 2019-04-29 #
  • allow binding a server to all IPv6 server address: hist should be "::1" in this case
5.9.1 2019-04-16 #
  • parameter CurrentThreadCount added to stat endpoint result
  • BeginCurrentThread / EndCurrentThread events added to Debug log
  • global lock fot thread destroy during server shutdown (hope it fix random AV during shutdown on Windows)
5.8.1 2019-04-07 #
  • allow to MERGE an entity entityName.meta files if they exists in the different models. Before this patch file from last model OVERRIDE original.

    Localization will be loaded from ORIGINAL model (usually we need to override original entity for certain customer, so additional attributes can be localized directly in meta file).

    For example if we create the ubm_desktop.meta file inside the TST model it will be MERGED with the ubm_desktop.meta file from UBM model.

    Files are merged in order model is placed inside domain. For several overrides the last one win.

    Current implementation will call require for ALL entityName.js file form all models. So in case for example entity *.js is overrated twice it will be required 3 times with different file paths - from original model, from first override and from second.

    This feature requires @unitybase/ub to be >= 5.2.11 (if ub model is older - OVERRIDE strategy will be used)

5.7.20 2019-04-04 #
  • new application configuration property security.skipCheckingCallerAndSessionIpEquality
    In case some middleware intercepts Authorization requests and redirect it to UB Session IP (IP address from which session is created) may differ from CallerIP (IP address of middleware).
    To allow such a requests set this parameter to true.
    WARNING vulnerability to token interception attacks.

Changed #

5.9.2 2019-04-29 #
  • performance: SQL builder ExtractExpressionProps return Set of expression props instead of Record with props
5.9.1 2019-04-16 #
  • performance: Unity mixin optimized - store pointer to unityEntity instead of calculate it for evety call
  • performance: added lazy initialization of group/order list inside SQL builder
  • performance: cache 'lunchEndpoint' value and use CallFunctionValue instead of CallFunctionName to launch JS endpoints
  • performance: TubDataStore dataCollection will be created only in case several dataName is present (using DataStore.currentDataName); Simplify dataCollection internals (TRawUTF8List -> TFPObjectList); +10% to techempower performance test /dbRaw endpoint
  • performance: SQLBuilder.entityList lazy initialization (required only for cached entities)
  • performance: NamedCollection (TubList) use now use objectList as internal storage instead of StringList. Names are stored inside TubVal (this prevent duplicate names storing)
  • Models collection now case sensitive
  • memory: remove JSONBuffer variable form TubNamedCollection (not required since all str values are copied to strings during serialization)
  • performance: TubSQLBuilder.LoadFromList now O(n) instead O(n*2)
  • performance: TubVal integer/decimal/boolean values parse speed improved
  • performance: TubList.byNameTyped method - faster when byName because compare type (enum) first
  • performance: speed up TubDataStore.runSQL by remove unneeded stack variables allocation
  • performance: SQL parser will not allocate new SQL string in case statement not contains inline parameters
5.9.0 2019-04-14 #
  • more optimal TubVal(a value holder for TubList) internal layout (size decreased from 80 to 40 bytes). As a result UB served consumer less memory and overall performance is increased by several percent. WARNING not tested on real project yet
  • vectors growing algorithm optimization. UB now use 2-15% less memory (depending on load type)
5.8.3 2019-04-13 #
  • performance optimization: use TFPObjectList instead of TObjectList to remove Notify overhead
  • performance optimization: use TFPObjectList in TubCollection to remove IObjectListWrapper interface overhead
  • performance optimization: start/stop operation will memorise last UID for SQLite3 database in controller, so delay between restarts in autotest can be removed
  • performance optimization: SQL Builder now use userLang from query context instead of passing it to PrepareSQLWhereItemExpressionText*
5.7.21 2019-04-05 #
  • internal optimization of SQL builder. Small speed up on heavy concurrent
  • in case attribute request_id not found in entity uba_auditTrail then request_id will not be logged

Fixed #

5.9.2 2019-04-29 #
  • Windows: put environment variables to log using UTF8 encoding (instead of OEM)
  • prevent 0.0.0.0 DNS lookup - prevent server startup delay in case DNS server is not accessible
  • SQLBuilder: WhereItem without "values" part throws with a message "Where item with condition "%" must contains "values" part" instead of "List index out of bounds" in case condition is not isNull, isNotNull or Custom
5.9.1 2019-04-16 #
  • CRITICAL: prevent hangs on parse invalid JSON like [{..},}]
  • prevent loading of *.meta* files as entities. Valid entity file should ends with *.meta
  • fix AV during server start on Windows in case non-english environment variables exists (for example logged in user name contains russian letters)
  • prevent send Content-Type: application/json header for empty body
  • CRITICAL: TubVal.loadfromJSON - fix potential AV by prevent returning of a pointer to the stack variable for topmost call in recursion
  • while in shutdown state server will not accept HTTP requests and answer HTTP_UNAVAILABLE. This should allow gacefully shutdown in case of Hi load
  • Windows: prevent display confirmation message in console in case of server halt on unhandled exception
  • for multi-language attributes updation allow to pass values for default language without lang suffix {ID: 3, firstName: 'Pavlo1', 'firstName_uk^': 'PavloUK1'}. Prev. implementation require default user lang attribute to be with language suffix in case other lang also exists {ID: 3, 'firstName_en^': 'Pavlo1', 'firstName_uk^': 'PavloUK1'}
  • in case of call to update without fieldList return empty data instead of selectBeforeUpdate datastore (old data)
5.8.2 2019-04-09 #
  • fix duplication of "many" attributes values during insertion/updation in case there is several "many" attributes in one entity
  • Oracle: ORM will replace special chars ['(', ')', '"'] by space before pass a parameter value to CATSEARCH expression
  • in case we are behind the nginx reverse proxy with X-Accel-Redirect enabled Content-Type header will be added by getDocument endpoint instead of nginx
5.8.1 2019-04-07 #
  • in case multi-language column CATALOGUE index will be applied only in case user language === default app language. For a localization columns like will be used, so DDL generator can omit creation of CATALOGUE indexes for localization columns.
5.7.21 2019-04-05 #
  • AV during domain loading in case aclRls is enabled in some entity
  • added an asterisk to the end of CTXCAT pattern for like expression (Oracle)

@unitybase/adminui-pub #

Fixed #

5.8.7 2019-04-29 #
  • prevent two server query for Audit Trail grid by moving sort to the UBQL

@unitybase/base #

Added #

5.1.7 2019-04-02 #
  • optional parameter fieldAliases for ServerRepository.selectById method

Changed #

5.1.8 2019-04-10 #
  • in case response body is empty SyncConnection.xhr will return null even if Content-Type header is iset to *json

@unitybase/ub-pub #

Added #

5.2.36 2019-04-23 #
  • new methods added to the client side Connection addNewAsObject, runTransAsObject, updateAsObject, insertAsObject Result data of this methods is an Object (the same as in selectAsObject()) instead of Array (the same as in .selectAsArray())

    Useful for non-ExtJS clients, Vue for example. See documentation for detail:

    UB.connection.updateAsObject({
      entity: 'uba_user',
      fieldList: ['ID','name','mi_modifyDate', 'isPending'],
      execParams: {ID: 33246, name:'newName', mi_modifyDate:"2019-04-23T13:00:00Z"}
    }).then(UB.logDebug)
    // will return plain object 
    // {"ID": 332462122205200, "name": newName", "mi_modifyDate": new Date("2019-04-23T13:03:51Z"), isPending: false})
    

Changed #

5.2.35 2019-04-10 #
  • in case response body is empty AsyncConnection.xhr will return null even if Content-Type header is iset to *json

@unitybase/ub #

Added #

5.2.12 2019-04-28 #
  • new method THTTPRequest.writeToFile(fullFilePath) - write request body content (as binary) to a file. Return true on success. Can be used to bypass moving body content between native<->JS if conversion of the request body is not required.
5.2.11 2019-04-07 #
  • Entity metadata merging: in case descendant model contains entity with the same name as original model they *.meta files will be MERGED (before this patch descendant overrides parent). This allow to override only part of meta-file attributes/properties in descendants.

Fixed #

5.2.12 2019-04-28 #
  • Windows: UB.UBAbort server-side exception fileName & lineNum now valid in case file name is absolute path starts with drive letter. Prev. implementation puts drive letter instead of fileName

@unitybase/ubcli #

Added #

5.3.12 2019-04-04 #
  • support for Oracle Text and CTXCAT indexes (require Oracle Text to be enabled - see https://docs.oracle.com/cd/E11882_01/install.112/e27508/initmedia.htm#DFSIG269)

@unitybase/udisk #

Fixed #

5.0.54 2019-04-28 #
  • initialization script adopted for UB 5x