docs: protected final void init() {
  
          ns = new DINameSpace(database);
          pi = new DIProcedureInfo(ns);
  
          // flag the Session-dependent cached tables
          Table t;
  
          for (int i = 0; i < sysTables.length; i++) {
              t = sysTables[i] = generateTable(i);
  
              if (t != null) {
                  t.setDataReadOnly(true);
              }
          }
  
          GranteeManager gm    = database.getGranteeManager();
          Right          right = new Right();
  
          right.set(GrantConstants.SELECT, null);
  
          for (int i = 0; i < sysTableHsqlNames.length; i++) {
              if (sysTables[i] != null) {
                  gm.grantSystemToPublic(sysTables[i], right);
              }
          }
  
          right = Right.fullRights;
  
          gm.grantSystemToPublic(SqlInvariants.YES_OR_NO, right);
          gm.grantSystemToPublic(SqlInvariants.TIME_STAMP, right);
          gm.grantSystemToPublic(SqlInvariants.CARDINAL_NUMBER, right);
          gm.grantSystemToPublic(SqlInvariants.CHARACTER_DATA, right);
          gm.grantSystemToPublic(SqlInvariants.SQL_CHARACTER, right);
          gm.grantSystemToPublic(SqlInvariants.SQL_IDENTIFIER_CHARSET, right);
          gm.grantSystemToPublic(SqlInvariants.SQL_IDENTIFIER, right);
          gm.grantSystemToPublic(SqlInvariants.SQL_TEXT, right);
      }