Date: 03-11-2010 Subject: PATCH RELEASE 9.4A Runtime Files These release notes pertain to the following programs or files: PLBCLI.EXE 9.4A 08 Mar 2010 9,4,1,600 PLBCLICON.EXE 9.4A 08 Mar 2010 9,4,1,500 PLBCLIENT.EXE 9.4A 08 Mar 2010 9,4,1,500 PLBCLINET.EXE 9.4A 08 Mar 2010 9,4,1,500 PLBCON.EXE 9.4A 08 Mar 2010 9,4,1,500 PLBCONET.EXE 9.4A 08 Mar 2010 9,4,1,500 PLBDSIGN.EXE 9.4A 08 Mar 2010 9,4,1,500 PLBNET.EXE 9.4A 08 Mar 2010 9,4,1,500 PLBRUN.EXE 9.4A 08 Mar 2010 9,4,1,600 PLBSERVE.EXE 9.4A 08 Mar 2010 9,4,1,500 PLBSERVET.EXE 9.4A 08 Mar 2010 9,4,1,500 (Threaded Server) PLBWIN.EXE 9.4A 08 Mar 2010 9,4,1,500 PLBNETSUP.DLL 9.4A 08 Mar 2010 9,4,1,500 Required for PLBNET PLBWSEC.DLL 9.4A 08 Mar 2010 9,4,1,500 Req'd PLBWIN/PLBNET DBEXPLORER.PLC 9.4A 08 Mar 2010 DESIGNER.PLC 9.4A 08 Mar 2010 EDITOR.PLC 9.4A 08 Mar 2010 PLBCMP.PLC 9.4A 08 Mar 2010 SUNIDE.PLC 9.4A 08 Mar 2010 SODBC2SCHDB.PLS 9.4A 08 Mar 2010 PLBMETH.INC 9.4A 08 Mar 2010 SUNCS21.OCX 9.4A 08 Mar 2010 *============================================================================== Notes for DOCUMENTATION: - Add a note to the FORMLOAD instruction to document the following behavior when an object-only PLF is being loaded. "Any window events specified in an objects-only PLF form are registered for the target panel or window object of the FORMLOAD." *============================================================================== The following files have been changed as noted: ------------------------------------------------------------------------------- PLBSERVE(WINDOWS) - Corrected a problem where the CLOCK SYSDATE instruction was not returning valid Timezone information. The problem was that the Timezone information was always being returned as '+0000'. ------------------------------------------------------------------------------- PLBWIN, PLBNET, PLBSERVE, PLB(UNIX) - Updated the runtimes to include the latest SQLite version 3.6.22 from the previous version of 3.6.19. The SQLite release fixes are documented as follows: 2010 Jan 06 (3.6.22) * Fix bugs that can (rarely) lead to incorrect query results when the CAST or OR operators are used in the WHERE clause of a query. * Continuing enhancements and improvements to FTS3. * Other miscellaneous bug fixes. 2009 Dec 07 (3.6.21) * The SQL output resulting from sqlite3_trace() is now modified to include the values of bound parameters. * Performance optimizations targeting a specific use case from a single high-profile user of SQLite. A 12% reduction in the number of CPU operations is achieved (as measured by valgrind). Actual performance improvements in practice may vary depending on workload. Changes include: o The ifnull() and coalesce() SQL functions are now implemented using in-line VDBE code rather than calling external functions, so that unused arguments need never be evaluated. o The substr() SQL function does not bother to measure the length its entire input string if it is only computing a prefix o Unnecessary OP_IsNull, OP_Affinity, and OP_MustBeInt VDBE opcodes are suppressed o Various code refactorizations for performance * The FTS3 extension has undergone a major rework and cleanup. New FTS3 documentation is now available. * The SQLITE_SECURE_DELETE compile-time option fixed to make sure that content is deleted even when the truncate optimization applies. * Improvements to "dot-command" handling in the Command Line Interface. * Other minor bug fixes and documentation enhancements. 2009 Nov 4 (3.6.20) * Optimizer enhancement: prepared statements are automatically re-compiled when a binding on the RHS of a LIKE operator changes or when any range constraint changes under SQLITE_ENABLE_STAT2. * Various minor bug fixes and documentation enhancements. - The runtimes have been modified to only connect with the embedded SQLite database engine when the end-user PLB application executes an instruction that requires access to a database. With this change, the embedded database engine never allocates any memory until it is required by the PLB program. - Implemented SQL Transactions for the SCHEMA instruction that improves the overall performance of the instruction. In addition, the SQL Transaction support ensures detection of database busy situations when more than one user is attempting to update/write schema information at the same time. If a database is detected to be busy, an I85 error is expected. A user application can implement FILEPI coverage for a SCHEMA instruction to control schema updates by multiple users. As a general statement, it is recommended that normally the schema database information would be updated by an administrative program that is not executed by multiple uses at the same time. - Modified the 'SCHEMA IMPORT={svar}' keyword default behavior to execute the same as when the FLAGS bit mask value of '0x00000001' is specified. - Modified the SCHEMA FLAGS keyword to include a prep bit mask value that can be used to initialize the Sunbelt tables in a SQLite database. Bit Mask Value Behavior 0x00000004 - When this bit is set to be 1 in a bit mask value, the Sunbelt schema tables are dropped from a SQLite database and then recreated. WARNING: All previous data in the Sunbelt tables is lost and must be recreated after the Sunbelt tables have been recreated. - Corrected problems where the SCHEMA instruction would cause excessive memory allocation when multiple SCHEMA instructions were executed. - Corrected a problem in COMMON alignment checking where an unexpected C09 subcode 10 error could occur when chaining between programs. ------------------------------------------------------------------------------- PLBWIN, PLBNET, ALL GUI CLIENTS - Modified the execution of the 'CLOCK ENV' instruction to detect and return a duplicate keyword when it is encountered during the next keyword mode. The next keyword mode is used when a specified keyword is followed by a '=' character. Normally, duplicate keywords do not exist and are not allowed in the UET (User Environment Table). However, there is a problem with the Microsoft IIS that allows a duplicate keyword named 'APP_POOL_ID' to exist in the UET when the IIS software executes the the PLB runtime. When the duplicate keyword was encountered, the PLB runtime would restart processing the UET keywords at the first instance of the keyword. The runtime now continues to retrieve keywords after a duplicate keyword if it exists. Also, note, that the 'CLOCK ENV' always returns the first instance of a keyword when the next keyword mode with a '=' is not used. - Modified the SubItemHitTest method for the LISTVIEW object to support an optional '*FLAGS={dnumnvar}' parameter. This parameter is a bit mask value that can be used to control special execution behaviors for the SubItemHitTest method. The description for the LISTVIEW SubItemHitTest is changed as follows: [label] {object}.SubItemHitTest [GIVING {return}]: USING [*Horz=]{horz}: [*Vert=]{vert}[: [*Flags=]{mask}] Where: mask Optional. A Numeric Variable or decimal number whose bit mask value is defined as follows: 0x00000001 - The return value is formatted to support up to 1000 columns. Note the following: 2. If the method succeeds and the {mask} value is not used, the {return} is the item number * 100 + the sub item number. If the method succeeds and the {mask} value has the 0x00000001 bit set to 1, the {return} value is the item number * 1000 + the sub item number. - Modified the PICT object to detect and ignore the extended BMP headers identified as 'BITMAPV4HEADER' and 'BITMAPV5HEADER'. This modification is to eliminate O103 errors that would occur when a BMP picture file with one of these headers was being loaded into a PICT object. - Modified the BUTTON object to support the APPEARANCE property. - Modified the RADIO and CHECKBOX objects to support the BORDER property. ------------------------------------------------------------------------------- PLBCMP - Modified the compiler error for an invalid operand to give the invalid label name. This change is being done to eliminate any confusion about the actual label name that is invalid. - Corrected a problem where a FILELIST or a pointer data variable could cause an invalid common UDA size to be used when it was the first variable that terminated the common variables. ------------------------------------------------------------------------------- PLBDSIGN - Modified the PICT object to detect and ignore the extended BMP headers identified as 'BITMAPV4HEADER' and 'BITMAPV5HEADER'. Also, modified to allow an extended BMP to be loaded as a resource. ------------------------------------------------------------------------------- PLBMETH.INC - Updated for LISTVIEW SubItemHitTest FLAGS option. ------------------------------------------------------------------------------- SUNCS21.OCX - Corrected an issue where once the PLB LineDraw font was selected, no other font would be shown in the font selection dialog. - Made change in the font creation to not try to force fixed width on an already fixed width font. This was causing some fonts to render poorly. ------------------------------------------------------------------------------- SUNIDE.PLC - Modified project setting so if no extension is specified for an alternate compiler when creating a new project, it uses .PLC ------------------------------------------------------------------------------- EDITOR.PLC - Corrected an O103 error that occurs when chaining multiple times to a utility that uses the editor module. ------------------------------------------------------------------------------- DESIGNER.PLC - Corrected computation of the required code buffer during &Objname replacement. - Corrected Pasting of non-local object events. - Modified the listview editor to name the columns with a suffix beginning at zero. The column name's now match the index used by various methods such as InsertItemEx. - Added the Disable External Labels behavior option to force the designer to operate more like the legacy designer. - Corrected issues relating the editing event in single event mode. - Added Border property support for radio buttons and checkboxes. - Added Appearance property support for buttons. ------------------------------------------------------------------------------- DBEXPLORER.PLC - Modified to not change tabs when a treeview item is clicked. The activate tab's data will be refreshed if it is columns, indexes, or data. - Corrected a number of cosmetic issues. - Enabled tool tips on the SQL panel toolbar. - Correct issues regarding cut and paste with the SQL panel. ------------------------------------------------------------------------------- SODBC2SCHDB.PLS - Updated to make it more of a robust example. -------------------------------------------------------------------------------