14.02.2022 22:40, Roman Simakov wrote:
I don't remember exactly why we decided to make it nullable. I suppose for more backward compatibility. If a client doesn't use it it will be NULL everywhere.
Maybe the idea was to distinguish between legacy databases (restored without SQL SECURITY) and explicitly declared SQL SECURITY in newer databases?
So in fact it can be NULL physically. But logically only two options make sense. NULL is considered as legacy, i.e. INVOKER. Thus you are right. For INVOKER we have two values to read and one to write.
The question is whether seeing legacy is really important. If not, I'd suggest to convert NULL into INVOKER during restore.
Dmitry Firebird-Devel mailing list, web interface at https://lists.sourceforge.net/lists/listinfo/firebird-devel