- dump_raw(mu, sigma, num_players);
-#else
- dump_scores(players, mu, sigma, num_players);
- //fprintf(stderr, "Optimal sigma: %f (two-player: %f)\n", sigma[0], sigma[0] * sqrt(2.0f));
- printf("%f -2\n", sigma[0]);
- printf("%f -3\n", prior_sigma);
+ dump_raw(mu, num_players);
+ return 0;
+#endif
+
+#if USE_DB
+ pqxx::work txn(conn);
+ txn.exec("SET client_min_messages TO WARNING");
+
+ // Dump ratings.
+ {
+ txn.exec("TRUNCATE ratings");
+ pqxx::tablewriter writer(txn, "ratings");
+ for (unsigned i = 0; i < rating_db_tuples.size(); ++i) {
+ char player_str[128], mu_str[128], mu_stddev_str[128];
+ snprintf(player_str, 128, "%d", rating_db_tuples[i].player);
+ snprintf(mu_str, 128, "%f", rating_db_tuples[i].mu);
+ snprintf(mu_stddev_str, 128, "%f", rating_db_tuples[i].mu_stddev);
+
+ vector<string> tuple;
+ tuple.push_back(player_str);
+ tuple.push_back(mu_str);
+ tuple.push_back(mu_stddev_str);
+ writer.push_back(tuple);
+ }
+ writer.complete();
+ }
+
+ // Create a table new_covariance, and dump covariance into it.
+ {
+ txn.exec("CREATE TABLE new_covariance ( player1 smallint NOT NULL, player2 smallint NOT NULL, cov float NOT NULL )");
+ pqxx::tablewriter writer(txn, "new_covariance");
+ for (unsigned i = 0; i < covariance_db_tuples.size(); ++i) {
+ char player1_str[128], player2_str[128], cov_str[128];
+ snprintf(player1_str, 128, "%d", covariance_db_tuples[i].player1);
+ snprintf(player2_str, 128, "%d", covariance_db_tuples[i].player2);
+ snprintf(cov_str, 128, "%f", covariance_db_tuples[i].covariance);
+
+ vector<string> tuple;
+ tuple.push_back(player1_str);
+ tuple.push_back(player2_str);
+ tuple.push_back(cov_str);
+ writer.push_back(tuple);
+ }
+ writer.complete();
+ }