docs: public static DatabaseType determineType(DatabaseMetaData metaData) throws SQLException {
          metaData = Objects.requireNonNull(metaData, "metaData cannot be null");
          int majorVersion = metaData.getDatabaseMajorVersion();
          int minorVersion = metaData.getDatabaseMinorVersion();
          String name = metaData.getDatabaseProductName().toLowerCase();
          if (name.contains("mysql")) {
              return new DatabaseType(DatabaseType.Name.MYSQL, majorVersion, minorVersion);
          } else if (name.contains("postgres")) {
              return new DatabaseType(DatabaseType.Name.POSTGRES, majorVersion, minorVersion);
          } else if (name.contains("derby")) {
              return new DatabaseType(DatabaseType.Name.DERBY, majorVersion, minorVersion);
          } else if (name.contains("hsql") || name.toLowerCase().contains("hypersonic")) {
              return new DatabaseType(DatabaseType.Name.HSQL, majorVersion, minorVersion);
          } else if (name.contains("h2")) {
              return new DatabaseType(DatabaseType.Name.H2, majorVersion, minorVersion);
          } else if (name.contains("sqlite")) {
              return new DatabaseType(DatabaseType.Name.SQLITE, majorVersion, minorVersion);
          } else if (name.contains("db2")) {
              return new DatabaseType(DatabaseType.Name.DB2, majorVersion, minorVersion);
          } else if (name.contains("informix")) {
              return new DatabaseType(DatabaseType.Name.INFORMIX, majorVersion, minorVersion);
          } else if (name.contains("interbase")) {
              return new DatabaseType(DatabaseType.Name.INTERBASE, majorVersion, minorVersion);
          } else if (name.contains("firebird")) {
              return new DatabaseType(DatabaseType.Name.FIREBIRD, majorVersion, minorVersion);
          } else if (name.contains("sqlserver") || name.toLowerCase().contains("microsoft")) {
              return new DatabaseType(DatabaseType.Name.SQLSERVER, majorVersion, minorVersion);
          } else if (name.contains("access")) {
              return new DatabaseType(DatabaseType.Name.ACCESS, majorVersion, minorVersion);
          } else if (name.contains("oracle")) {
              return new DatabaseType(DatabaseType.Name.ORACLE, majorVersion, minorVersion);
          } else if (name.contains("adaptive")) {
              return new DatabaseType(DatabaseType.Name.SYBASE, majorVersion, minorVersion);
          } else if (name.contains("cassandra")) {
              return new DatabaseType(DatabaseType.Name.CASSANDRA, majorVersion, minorVersion);
          }
          return DatabaseType.UNKNOWN;
      }