docs: Table SYSTEM_TEXTTABLES() {
  
          Table t = sysTables[SYSTEM_TEXTTABLES];
  
          if (t == null) {
              t = createBlankTable(sysTableHsqlNames[SYSTEM_TEXTTABLES]);
  
              addColumn(t, "TABLE_CAT", SQL_IDENTIFIER);
              addColumn(t, "TABLE_SCHEM", SQL_IDENTIFIER);
              addColumn(t, "TABLE_NAME", SQL_IDENTIFIER);    // not null
              addColumn(t, "DATA_SOURCE_DEFINTION", CHARACTER_DATA);
              addColumn(t, "FILE_PATH", CHARACTER_DATA);
              addColumn(t, "FILE_ENCODING", CHARACTER_DATA);
              addColumn(t, "FIELD_SEPARATOR", CHARACTER_DATA);
              addColumn(t, "VARCHAR_SEPARATOR", CHARACTER_DATA);
              addColumn(t, "LONGVARCHAR_SEPARATOR", CHARACTER_DATA);
              addColumn(t, "IS_IGNORE_FIRST", Type.SQL_BOOLEAN);
              addColumn(t, "IS_ALL_QUOTED", Type.SQL_BOOLEAN);
              addColumn(t, "IS_QUOTED", Type.SQL_BOOLEAN);
              addColumn(t, "IS_DESC", Type.SQL_BOOLEAN);
  
              // ------------------------------------------------------------
              HsqlName name = HsqlNameManager.newInfoSchemaObjectName(
                  sysTableHsqlNames[SYSTEM_TEXTTABLES].name, false,
                  SchemaObject.INDEX);
  
              t.createPrimaryKey(name, new int[] {
                  0, 1, 2,
              }, false);
  
              return t;
          }
  
          // column number mappings
          final int itable_cat   = 0;
          final int itable_schem = 1;
          final int itable_name  = 2;
          final int idsd         = 3;
          final int ifile_path   = 4;
          final int ifile_enc    = 5;
          final int ifs          = 6;
          final int ivfs         = 7;
          final int ilvfs        = 8;
          final int iif          = 9;
          final int iiq          = 10;
          final int iiaq         = 11;
          final int iid          = 12;
  
          //
          PersistentStore store = database.persistentStoreCollection.getStore(t);
  
          // intermediate holders
          Iterator tables;
          Table    table;
          Object[] row;
  
          // Initialization
          tables =
              database.schemaManager.databaseObjectIterator(SchemaObject.TABLE);
  
          // Do it.
          while (tables.hasNext()) {
              table = (Table) tables.next();
  
              PersistentStore currentStore =
                  database.persistentStoreCollection.getStore(t);
  
              if (!table.isText() || !isAccessibleTable(table)) {
                  continue;
              }
  
              row               = t.getEmptyRowData();
              row[itable_cat]   = database.getCatalogName().name;
              row[itable_schem] = table.getSchemaName().name;
              row[itable_name]  = table.getName().name;
              row[idsd]         = ((TextTable) table).getDataSource();
  
              TextCache cache = (TextCache) currentStore.getCache();
  
              if (cache != null) {
                  row[ifile_path] =
                      FileUtil.getDefaultInstance().canonicalOrAbsolutePath(
                          cache.getFileName());
                  row[ifile_enc] = cache.stringEncoding;
                  row[ifs]       = cache.fs;
                  row[ivfs]      = cache.vs;
                  row[ilvfs]     = cache.lvs;
                  row[iif]       = ValuePool.getBoolean(cache.ignoreFirst);
                  row[iiq]       = ValuePool.getBoolean(cache.isQuoted);
                  row[iiaq]      = ValuePool.getBoolean(cache.isAllQuoted);
                  row[iid] = ((TextTable) table).isDescDataSource()
                             ? Boolean.TRUE
                             : Boolean.FALSE;
              }
  
              t.insertSys(store, row);
          }
  
          return t;
      }