Click here for a list of the fixed issues in OpenEdge 12.3.

The following table lists the release notes for this release:

Components Item Known Issues Knowledge Base
ABLTOOLS OCTA-19871 The OpenEdge.Web.WebResponseWriter defaults to using HTTP chunked encoding for writing the responses. This means that a Content-Length header is not written to the output stream, regardless of the number of bytes written, or if a value exists for the response, via the ContentLength property.

For cases where a developer needs to write a Content-Length header (for instance a response to a HEAD request), they should assign the correct value to the response's ContentLength property and ensure that there is no body for the response (ie the Entity property should not be assigned a value). When the response is written in this case (either by calling the Write() or Close() methods), a Content-Length header will be returned to the client.

Click for more information
ABLTOOLS OCTA-21530 The ABL HTTP Client's JSON body writer (OpenEdge.Net.HTTP.Filter.Payload.JsonBodyWriter, shipped in OpenEdge.Net.pl) is used to convert a temp-table, dataset, JsonObject or JsonArray from a handle or object into raw bytes for sending to a server.

This data is produced using the Write() or WRITE-JSON methods. While earlier versions optionally produced formatted data, this capability has been removed, so as to reduce the size of the data produced, and to reduce the time taken to do so. Unformatted JSON data will help reduce the incidence of server disconnects.

Developers can still produce formatted JSON by exporting the data into a longchar or memptr themselves, before adding it to a request.

Click for more information
ABLTOOLS OCTA-24631 The LoggerBuilder contains a a cache of logger instances, to reduce the cost of obtaining a uniquely-named logger. Each child builder can decide whether the cache should be invalidated (ie if the logging.config file is updated, then the ConfigFileLoggerBuilder will clear the cache of

instances).

The instance cache does not affect loggers in use (ie it does not delete the logger) but only whether a new logger instance should be built.

Caches are invalidated on:
  1. Any changes to the logging.config configuration file causes the entire cache to be cleared.
  2. When the default logger is used, and it is LOG-MANAGER based, then changes in the logging level and the value of the session debug-alert flag cause a logger named LoggerBuilder:LOG-MANAGER to be removed and re-cached.
  3. If the LoggerBuilder's AddFilter() and LogAt() builder methods are called directly (ie not from within the LoggerBuilder hierarchy, then that's taken as a signal that the config for that named logger is changing and so any previously-cached instances should be removed from the cache.
Click for more information
Lang OCTA-29170 The 12.3 Client monitoring of OpenEdge Replication status is not functioning for Progress Application Server for OpenEdge agents. It will be available in a future OpenEdge release. See the OpenEdge documentation for more information.

Learn about automatic database reconnect.

Click for more information
PDSOE OCTA-30423 Infragistics version 19.2.20192.381 bundled with OpenEdge 12.3 has a known issue where the following error pops up when using the UltraDockManager component in forms,

UltraDockManager - DragDrop disabled

The 'AllowDrop' property is set to true but the ApartmentState of the current thread does not support drag drop. To disbale drag drop functionality set the 'AllowDrop' property to false.

Adding the following code can be used as a workaround to avoid the error,
{noformat}

    /**

     * Purpose: Suspends STAThread
warnings for an UltraDockManager instance

     *	       
https://www.infragistics.com/community/forums/f/ultimate-ui-for-windows-forms/1
21824/appstylist-for-windows-forms-2020-1/537711

     * @param poDockManager
The reference to the UltraDockManager

     */

    METHOD PROTECTED VOID
SuspendSTAThreadWarning (poDockManager AS
Infragistics.Win.UltraWinDock.UltraDockManager):



	DEFINE VARIABLE oType
    AS System.Type		   NO-UNDO .

	DEFINE VARIABLE oProperty
AS System.Reflection.FieldInfo NO-UNDO .



	oType =
poDockManager:GetType() .



	oProperty =
oType:GetField("STAThreadWarningSuspended":U,

				 
 CAST (Progress.Util.EnumHelper:Or (System.Reflection.BindingFlags:NonPublic,

 
								   
System.Reflection.BindingFlags:Instance),

				     
   System.Reflection.BindingFlags)).



	oProperty:SetValue
(poDockManager, TRUE).



    END METHOD.

{noformat}
Click for more information
SQL OCTA-22512 When the database startup parameters include "-SQLTruncateTooLarge OUTPUT" , and a sql query selects character data from an array with too-large data, then OpenEdge releases, prior to 12.3, may output the selected data with an incorrect size. The incorrect size may be larger, and sometimes much larger, than the correct, defined column size for an array element or for the entire array.
As of OpenEdge 12.3, when these conditions occur, these are some specific changes that may be seen:
  • When a query is executed involving arrays containing UTF8 data, query execution will output array data in its correct size. Previously, the output UTF8 data might be 4 times the correct defined column size.
  • A query can now be executed again and again, and all executions will have the same correct output column size. Previously, the 2nd to nth executions would have output column size equal to the largest column value previously selected.
  • The correct size for the array data is its defined length in the database schema, as used by the array referencing method - subscripting, pro_element(), or the array as a whole.
Click for more information