docs: Table SYSTEM_PROPERTIES() {
  
          Table t = sysTables[SYSTEM_PROPERTIES];
  
          if (t == null) {
              t = createBlankTable(sysTableHsqlNames[SYSTEM_PROPERTIES]);
  
              addColumn(t, "PROPERTY_SCOPE", CHARACTER_DATA);
              addColumn(t, "PROPERTY_NAMESPACE", CHARACTER_DATA);
              addColumn(t, "PROPERTY_NAME", CHARACTER_DATA);
              addColumn(t, "PROPERTY_VALUE", CHARACTER_DATA);
              addColumn(t, "PROPERTY_CLASS", CHARACTER_DATA);
  
              // order PROPERTY_SCOPE, PROPERTY_NAMESPACE, PROPERTY_NAME
              // true PK
              HsqlName name = HsqlNameManager.newInfoSchemaObjectName(
                  sysTableHsqlNames[SYSTEM_PROPERTIES].name, false,
                  SchemaObject.INDEX);
  
              t.createPrimaryKey(name, new int[] {
                  0, 1, 2
              }, true);
  
              return t;
          }
  
          // column number mappings
          final int iscope = 0;
          final int ins    = 1;
          final int iname  = 2;
          final int ivalue = 3;
          final int iclass = 4;
  
          //
          PersistentStore store = database.persistentStoreCollection.getStore(t);
  
          // calculated column values
          String scope;
          String nameSpace;
  
          // intermediate holders
          Object[]               row;
          HsqlDatabaseProperties props;
  
          // First, we want the names and values for
          // all JDBC capabilities constants
          scope     = "SESSION";
          props     = database.getProperties();
          nameSpace = "database.properties";
  
          // boolean properties
          Iterator it = props.getUserDefinedPropertyData().iterator();
  
          while (it.hasNext()) {
              Object[] metaData = (Object[]) it.next();
  
              row         = t.getEmptyRowData();
              row[iscope] = scope;
              row[ins]    = nameSpace;
              row[iname]  = metaData[HsqlProperties.indexName];
              row[ivalue] = props.getProperty((String) row[iname]);
              row[iclass] = metaData[HsqlProperties.indexClass];
  
              t.insertSys(store, row);
          }
  
          row         = t.getEmptyRowData();
          row[iscope] = scope;
          row[ins]    = nameSpace;
          row[iname]  = "SCRIPTFORMAT";
  
          try {
              row[ivalue] =
                  ScriptWriterBase
                      .LIST_SCRIPT_FORMATS[database.logger.getScriptType()];
          } catch (Exception e) {}
  
          row[iclass] = "java.lang.String";
  
          t.insertSys(store, row);
  
          // write delay
          row         = t.getEmptyRowData();
          row[iscope] = scope;
          row[ins]    = nameSpace;
          row[iname]  = "WRITE_DELAY";
          row[ivalue] = "" + database.logger.getWriteDelay();
          row[iclass] = "int";
  
          t.insertSys(store, row);
  
          // ignore case
          row         = t.getEmptyRowData();
          row[iscope] = scope;
          row[ins]    = nameSpace;
          row[iname]  = "IGNORECASE";
          row[ivalue] = database.isIgnoreCase() ? "true"
                                                : "false";
          row[iclass] = "boolean";
  
          t.insertSys(store, row);
  
          // referential integrity
          row         = t.getEmptyRowData();
          row[iscope] = scope;
          row[ins]    = nameSpace;
          row[iname]  = "REFERENTIAL_INTEGRITY";
          row[ivalue] = database.isReferentialIntegrity() ? "true"
                                                          : "false";
          row[iclass] = "boolean";
  
          t.insertSys(store, row);
  
          return t;
      }