Issue 31928  —   deprecated sql92npw connector option MSS U5.2 driver still needed by endusers

Status:   Planned for resolution in 10.4.01

Solution available in patch(es):      10.3.02.003    9.7.05.016

Description:

 Summary:
 Uniface:
 deprecated sql92npw connector option MSS U5.2 driver still needed by endusers.
 This option has been deprecated because Microsoft will be disabling the setting
 being OFF in a future version of SQL server.
 However this option is at the moment still available in Microsof SQL Server
 2017 and higher versions.

 Environment:
 +Uniface Version  : 9 .7.05 / 10.3
 +Operating System : OS independent
 +Database         :   Microsoft SQL Server 2017 and higher

 Reproduction scenario
 Use the U5.2 driver for  Microsoft SQL Server 2017 and set sql92npw to off:
 USYS$MSS_PARAMS sql92npw = off
 In 4GL execute
 sql/print "SELECT ISNULL('type: ' + fruit, '(null)') AS fruit FROM null_fruit"

 Expected Result
 fruit
 ===============
 type:
 type: apple
 type: banana

 Actual Result
 Behavior as if sql92npw=on:
 fruit
 ===============
 (null)
 type: apple
 type: banana

Workaround:

 The concatenation of 'type: ' and a null value has now resulted in null because
 null values are considered unknown values and not empty strings.
 Should you want to explicitly consider null values as empty strings, the ISNULL
 or COALESCE functions should be used in the SQL statement. For example:
 sql/print "SELECT 'type:' + ISNULL(fruit, '') AS fruit FROM null_fruit" or
 sql/print "SELECT 'type:' + COALESCE(fruit, '') AS fruit FROM null_fruit"

Notes:

 For MSS connector U5.2, the sql92npw option was initially deprecated and the
 default set to on. It is now possible to set this option off, but the default
 remains on for MSS U5.2 and higher. For MSS U5.1 and lower, the default is off.