docs: static void updateConfiguration(DbConn cnx)
      {
          // Default queue
          Queue q = null;
          long i = cnx.runSelectSingle("q_select_count_all", Integer.class);
          if (i == 0L)
          {
              Queue.create(cnx, "DEFAULT", "default queue", true);
              jqmlogger.info("A default queue was created in the configuration");
          }
          else
          {
              try
              {
                  jqmlogger.info("Default queue is named " + cnx.runSelectSingle("q_select_default", 4, String.class));
              }
              catch (NonUniqueResultException e)
              {
                  // Faulty configuration, but why not
                  q = Queue.select(cnx, "q_select_all").get(0);
                  cnx.runUpdate("q_update_default_none");
                  cnx.runUpdate("q_update_default_by_id", q.getId());
                  jqmlogger.info("Queue " + q.getName() + " was modified to become the default queue as there were multiple default queues");
              }
              catch (NoResultException e)
              {
                  // Faulty configuration, but why not
                  q = Queue.select(cnx, "q_select_all").get(0);
                  cnx.runUpdate("q_update_default_none");
                  cnx.runUpdate("q_update_default_by_id", q.getId());
                  jqmlogger.info("Queue " + q.getName() + " was modified to become the default queue as there were multiple default queues");
              }
          }
  
          // Global parameters
          initSingleParam("mavenRepo", "http://repo1.maven.org/maven2/", cnx);
          initSingleParam(Constants.GP_DEFAULT_CONNECTION_KEY, Constants.GP_JQM_CONNECTION_ALIAS, cnx);
          initSingleParam("logFilePerLaunch", "true", cnx);
          initSingleParam("internalPollingPeriodMs", "60000", cnx);
          initSingleParam("disableWsApi", "false", cnx);
          initSingleParam("enableWsApiSsl", "false", cnx);
          initSingleParam("enableWsApiAuth", "true", cnx);
          initSingleParam("enableInternalPki", "true", cnx);
  
          // Roles
          RRole adminr = createRoleIfMissing(cnx, "administrator", "all permissions without exception", "*:*");
          createRoleIfMissing(cnx, "config admin", "can read and write all configuration, except security configuration", "node:*", "queue:*",
                  "qmapping:*", "jndi:*", "prm:*", "jd:*");
          createRoleIfMissing(cnx, "config viewer", "can read all configuration except for security configuration", "node:read", "queue:read",
                  "qmapping:read", "jndi:read", "prm:read", "jd:read");
          createRoleIfMissing(cnx, "client", "can use the full client API except reading logs, files and altering position", "node:read",
                  "queue:read", "job_instance:*", "jd:read");
          createRoleIfMissing(cnx, "client power user", "can use the full client API", "node:read", "queue:read", "job_instance:*", "jd:read",
                  "logs:read", "queue_position:create", "files:read");
          createRoleIfMissing(cnx, "client read only", "can query job instances and get their files", "queue:read", "job_instance:read",
                  "logs:read", "files:read");
  
          // Users
          createUserIfMissing(cnx, "root", new SecureRandomNumberGenerator().nextBytes().toHex(), "all powerful user", adminr.getName());
  
          // Mail session
          i = cnx.runSelectSingle("jndi_select_count_for_key", Integer.class, "mail/default");
          if (i == 0)
          {
              Map<String, String> prms = new HashMap<>();
              prms.put("smtpServerHost", "smtp.gmail.com");
  
              JndiObjectResource.create(cnx, "mail/default", "javax.mail.Session", "com.enioka.jqm.providers.MailSessionFactory",
                      "default parameters used to send e-mails", true, prms);
          }
  
          // Done
          cnx.commit();
      }