Hello Sergei,
I have a couple of suggestions:
<cut>
I suggest considering these ways:
1. Change "bool explicitly_nullable" to "bool explicit_nullability",
which will be:
- false if nothing was specified
- true if NULL or NOT NULL was specified.
2. Or don't store NOT_NULL_FLAG in Column_definition::flags at all.
Add a new Column_definition enum member with three values for:
- not specified
- explicit NULL
- explicit NOT NULL
This would require 4 or 8 bytes extra per field (and each field definition is stored twice per table), so this is probably not a good idea.