Subject sql$default
Author Claudio Valderrama C.
Please, can anybody translate into plain English this phrase?

LangRef explaining the fields in rdb$relations:
RDB$DEFAULT_CLASS
CHAR 31
Default security class that InterBase applies to columns newly
added to a table using the SQL security system

I know that this field contains entries like sql$defaultNN and the NN value
is provided by the generator SQL$DEFAULT (AFAIK, the only system generator
that doesn't begin with RDB$). When I try

select rdb$relation_name,
rdb$security_class,
rdb$default_class
from rdb$relations

I can see that that the 2nd and 3rd columns are NULL in the system tables,
with the exception of rdb$index_segments, rdb$indices, rdb$relations and
rdb$roles. Why?

For my tables, these fields always have values. Rdb$default_class and
rdb$security_class do not match in their values, of course:

- With the latter, I can go to rdb$security_classes (and from that, I can go
*probably* to rdb$user_privileges, right or wrong?).

- With the former, I don't know where to jump. Any hint?

Worse for my understanding, rdb$database has a RDB$SECURITY_CLASS field in
its unique row, that maps to rdb$security_classes.

It seems like I'm contemplating two parallel security systems, one being
the original and the other being the supporter for SQL-style GRANT/REVOKE
commands.

This is one piece of the IB's security puzzle that I always have wanted to
understand. I began with IB4, so I'm not an expert with QLI and GDML.

Thanks for your time.

C.
---------
Claudio Valderrama C.
Ingeniero en Informática - Consultor independiente
http://members.tripod.com/cvalde