docs: Table SCHEMATA() {
  
          Table t = sysTables[SCHEMATA];
  
          if (t == null) {
              t = createBlankTable(sysTableHsqlNames[SCHEMATA]);
  
              addColumn(t, "CATALOG_NAME", SQL_IDENTIFIER);
              addColumn(t, "SCHEMA_NAME", SQL_IDENTIFIER);
              addColumn(t, "SCHEMA_OWNER", SQL_IDENTIFIER);
              addColumn(t, "DEFAULT_CHARACTER_SET_CATALOG", SQL_IDENTIFIER);
              addColumn(t, "DEFAULT_CHARACTER_SET_SCHEMA", SQL_IDENTIFIER);
              addColumn(t, "DEFAULT_CHARACTER_SET_NAME", SQL_IDENTIFIER);
              addColumn(t, "SQL_PATH", CHARACTER_DATA);
  
              // order: CATALOG_NAME, SCHEMA_NAME
              // false PK, as rows may have NULL CATALOG_NAME
              HsqlName name = HsqlNameManager.newInfoSchemaObjectName(
                  sysTableHsqlNames[SCHEMATA].name, false, SchemaObject.INDEX);
  
              t.createPrimaryKey(name, new int[] {
                  0, 1
              }, false);
  
              return t;
          }
  
          PersistentStore store = database.persistentStoreCollection.getStore(t);
  
          // Intermediate holders
          Iterator schemas;
          String   schema;
          String   dcsSchema = SqlInvariants.INFORMATION_SCHEMA;
          String   dcsName   = ValuePool.getString("UTF16");
          String   sqlPath   = null;
          Grantee  user      = session.getGrantee();
          Object[] row;
  
          // column number mappings
          final int schema_catalog                = 0;
          final int schema_name                   = 1;
          final int schema_owner                  = 2;
          final int default_character_set_catalog = 3;
          final int default_character_set_schema  = 4;
          final int default_character_set_name    = 5;
          final int sql_path                      = 6;
  
          // Initialization
          schemas = database.schemaManager.fullSchemaNamesIterator();
  
          // Do it.
          while (schemas.hasNext()) {
              schema = (String) schemas.next();
  
              if (!user.hasSchemaUpdateOrGrantRights(schema)) {
                  continue;
              }
  
              row                 = t.getEmptyRowData();
              row[schema_catalog] = database.getCatalogName().name;
              row[schema_name]    = schema;
              row[schema_owner] =
                  database.schemaManager.toSchemaOwner(schema).getNameString();
              row[default_character_set_catalog] =
                  database.getCatalogName().name;
              row[default_character_set_schema] = dcsSchema;
              row[default_character_set_name]   = dcsName;
              row[sql_path]                     = sqlPath;
  
              t.insertSys(store, row);
          }
  
          return t;
      }