Uj fills column with empty dict

I was doing an uj between 2 tables.
One had a dict type column the other didn’t have that column.
I was expecting it to fill that column with something like

`symbol()!`symbol$()

However, to my suprise, the empty column was filled with a dictionary with the same keys, but null values. I checked documentation and I wasnt’t able to find anything on this.

So this returns the expected answer:

(sym:`TST2`TST2;price:99.1 33.2;exhaust:(`tstC`testC!(`someVal1;`someVal2);`tstC`testC!(`someVal3;`someVal4));source:`dd`de)uj(sym:`TST2`TST;price:33.2 332.2;source:`d3`ee)

But this fills the second table with a dictionary with the same keys, but null values:

(sym:`TST2`TST2;price:99.1 33.2;exhaust:(`tstC`testC!(`someVal1;“someVal2”);`tstC`testC!(`someVal3;“someVal4”));source:`dd`de)uj(sym:`TST2`TST;price:33.2 332.2;source:`d3`ee)

The only difference between the 2 is that is the string value there in the dictionary.
So … can anyone explains why is this happenind and is this anywhere in the documentation and maybe I have missed ?

Tables in kdb+ | Language | kdb+ and q documentation - kdb+ and q documentation

A table is an ordered list of same-key dictionaries.

kdb+ is making a best guest using the first entry of the column as a prototype.

  1. If the dictionary has a mixture of types as values: Return a table prototype retaining keys (column names) and fill null values.
  2. If the dictionary has uniform types: Return an empty dictionary prototype with a typed empty list as value.

For complex columns like that it’s best for you to manage what default fill values get entered manually.