docs: final Table SYSTEM_TYPEINFO() {
  
          Table t = sysTables[SYSTEM_TYPEINFO];
  
          if (t == null) {
              t = createBlankTable(sysTableHsqlNames[SYSTEM_TYPEINFO]);
  
              //-------------------------------------------
              // required by JDBC:
              // ------------------------------------------
              addColumn(t, "TYPE_NAME", SQL_IDENTIFIER);
              addColumn(t, "DATA_TYPE", Type.SQL_SMALLINT);
              addColumn(t, "PRECISION", Type.SQL_INTEGER);
              addColumn(t, "LITERAL_PREFIX", CHARACTER_DATA);
              addColumn(t, "LITERAL_SUFFIX", CHARACTER_DATA);
              addColumn(t, "CREATE_PARAMS", CHARACTER_DATA);
              addColumn(t, "NULLABLE", Type.SQL_SMALLINT);
              addColumn(t, "CASE_SENSITIVE", Type.SQL_BOOLEAN);
              addColumn(t, "SEARCHABLE", Type.SQL_INTEGER);
              addColumn(t, "UNSIGNED_ATTRIBUTE", Type.SQL_BOOLEAN);
              addColumn(t, "FIXED_PREC_SCALE", Type.SQL_BOOLEAN);
              addColumn(t, "AUTO_INCREMENT", Type.SQL_BOOLEAN);
              addColumn(t, "LOCAL_TYPE_NAME", SQL_IDENTIFIER);
              addColumn(t, "MINIMUM_SCALE", Type.SQL_SMALLINT);
              addColumn(t, "MAXIMUM_SCALE", Type.SQL_SMALLINT);
              addColumn(t, "SQL_DATA_TYPE", Type.SQL_INTEGER);
              addColumn(t, "SQL_DATETIME_SUB", Type.SQL_INTEGER);
              addColumn(t, "NUM_PREC_RADIX", Type.SQL_INTEGER);
  
              //-------------------------------------------
              // for JDBC sort contract:
              //-------------------------------------------
              addColumn(t, "TYPE_SUB", Type.SQL_INTEGER);
  
              // order: DATA_TYPE, TYPE_SUB
              // true PK
              HsqlName name = HsqlNameManager.newInfoSchemaObjectName(
                  sysTableHsqlNames[SYSTEM_TYPEINFO].name, false,
                  SchemaObject.INDEX);
  
              t.createPrimaryKey(name, new int[] {
                  1, 18
              }, true);
  
              return t;
          }
  
          PersistentStore store = database.persistentStoreCollection.getStore(t);
          Session sys = database.sessionManager.newSysSession(
              SqlInvariants.INFORMATION_SCHEMA_HSQLNAME, session.getUser());
          Result rs = sys.executeDirectStatement(
              "select TYPE_NAME, DATA_TYPE, PRECISION, LITERAL_PREFIX,"
              + "LITERAL_SUFFIX, CREATE_PARAMS, NULLABLE, CASE_SENSITIVE,"
              + "SEARCHABLE,"
              + "UNSIGNED_ATTRIBUTE, FIXED_PREC_SCALE, AUTO_INCREMENT, LOCAL_TYPE_NAME, MINIMUM_SCALE, "
              + "MAXIMUM_SCALE, SQL_DATA_TYPE, SQL_DATETIME_SUB, NUM_PREC_RADIX, TYPE_SUB "
              + "from INFORMATION_SCHEMA.SYSTEM_ALLTYPEINFO  where AS_TAB_COL = true;");
  
          t.insertSys(store, rs);
          sys.close();
  
          return t;
      }