I prolly think - I am hoping against hope. But I am wanted to see if there's a glimmer here .... When you create a VT like this
create multiset volatile table VT , no fallback,no log as
( sel
A.1, B.2 from A Join B on <conditon >
)
with data Primary Index (____) on commit preserve rows ;
The table columns are always NULLABLE even though the columns that form the VT are NOT NULL. So the in the above e.g. A.1 B.2 are NOT NULL columns as per A and B's DDL ( or I can write a filter condition in the sel clause to weed out NULLS ). In either case the VT table design is not intelligent to sense that A.1 & B.2 are NOT NULL so keep them that way in the VT.
Why does it matter ?
Because making a Not null column nullable causes null checking and processing overhead when the VT is joined in the subsequent query . So I am forced to grab the DDL using a "with No data" statement and add NOT NULL to the DDL and then issue a separate CT statement
Am I missing something or that is "just the way it is "