Why is the SET CURRENT APPLICATION COMPATIBILITY statement now generated in DDL for some objects on release r20?
This is a new feature introduced on r20.
These statements are generated when the current active function level of the Db2 subsystem is at least V12R1M504 and are required to support deprecated objects.
For example:
CREATE DDL statements for deprecated objects are now generated as follows to enable creation of these objects after activating function level M504:
SET CURRENT APPLICATION COMPATIBILITY = 'V12M1M503';
(deprecated object CREATE DDL statements)
SET CURRENT APPLICATION COMPATIBILITY = 'V12R1M504';
Non-UTS table spaces for base tables are deprecated with M504. So without the SET CURRENT APPLICATION COMPATIBILITY = 'V12R1M503'; this Tablespace will be created as a PBG UTS.
If you want it to be created as a non-UTS segmented Tablespace then the SET CURRENT APPLICATION COMPATIBILITY = 'V12R1M503' is required as generated.
Further documentation regarding this new feature can be found here.