Each object, such as a message or a container, has header information containing internal system columns that can be outputted as part of code generation. System columns have information associated with the object, such as, for example, version number, class ID, and schema ID. These are internal fields used by Kamanja during internal store or to internally communicate from one node to another node. Kamanja 1.5 has some control flags meaning “should internal columns be serialized or not?” The flags control whether to put those internal columns in the output.
If system columns are stored, the storage serializer needs to preserve that information in the storage. Otherwise, that information may not be able to be restored properly. A flag that says “serialize the internal columns” makes the serializer class include the internal columns as part of the output mechanism.
System columns must be excluded in cases where serialization occurs for consumption by external systems with no knowledge of internal columns. In order to exclude system columns, the control flags say “don’t serialize the internal columns”.
Currently, system columns can only be included/excluded in the JSON serializer/deserializer. The option is called
emitSystemColumns. By default, it is
FALSE (that means the system columns are excluded).
Here is a sample of the binding string:
In this case,
TRUE, meaning that the system columns are included.
Note: Converting messages to CSV or JSON is serialization. If a CSV file is converted to an internal message, this is called deserialization.