Article Joe Fu · Mar 7, 2025 2m read

We recently changed the 'UserID" property in a "User" class from type of %String to be %Library.Username. This is for better consistency across our codebase regarding MAXLEN limit.

%Library.Username is a system wrapper datatype which extends %String and has a MAXLEN of 160. This change should have minimal/no impact on code behavior. However, we found that some SQL query cannot return expected rows after the change. Query will return empty values even if the entry is in the table.

After investigation, we found that re-building index could solve the issue, which means the data type change caused

3
0 237
Question Joe Fu · Feb 26, 2025

By extending %XML.Adaptor, we can use

Parameter XMLIGNORENULL   

to handle empty tags in output xml file from %Persistent. But this parameter only applies to %String property. What if a class has other types of properties, like %Stream (for holding large chunk of data). What is the recommended handle if we cannot use XMLIGNORENULL here?

Context: In change control, exported .xml file is important to make diff between versions. To correctly handle edits on a previously null property (for example, the first edit to store value in "Data" field), we need XMLIGNORENULL to be "inputonly" so that our

1
0 175