BUGFIX: fix reusing randomnumbers in new games
authorArun Persaud <arun@nubati.net>
Sun, 24 Jan 2016 19:37:52 +0000 (11:37 -0800)
committerArun Persaud <arun@nubati.net>
Sun, 24 Jan 2016 19:37:52 +0000 (11:37 -0800)
need to look at randomnumbers not gameids, otherwise we always
return the same randomnumbers of the first game non-of the new players
was in.

include/db.php

index fa7d5643f40f2db5b969f52e53c3001f1dde1a16..f74ab4f8bc6ba4a10256814611905100cbf250f6 100644 (file)
@@ -912,13 +912,13 @@ function DB_get_email_pref_by_uid($uid)
 function DB_get_unused_randomnumbers($userstr)
 {
   /* optimized version of this query using temporary tables (perhaps we should use a procedure here?).
-     First we create a copy of the Game table using just the gameid and the cards.
-     Then in a second round we delete all the gameids of games where our players are in.
+     First we create a copy of the Game table using just the cards.
+     Then in a second round we delete all the randomnumbers of games where our players are in.
      At the end we return only the first entry in the temporary table.
   */
   DB_query("DROP   TEMPORARY TABLE IF EXISTS gametmp;");
-  DB_query("CREATE TEMPORARY TABLE gametmp SELECT id,randomnumbers FROM Game;");
-  DB_query("DELETE FROM gametmp WHERE id IN (SELECT distinct game_id FROM Hand LEFT JOIN Game ON Game.id=game_id WHERE user_id IN (".$userstr."));");
+  DB_query("CREATE TEMPORARY TABLE gametmp SELECT DISTINCT randomnumbers FROM Game;");
+  DB_query("DELETE FROM gametmp WHERE randomnumbers IN (SELECT DISTINCT randomnumbers FROM Game WHERE id IN (SELECT DISTINCT game_id FROM Hand WHERE user_id IN (".$userstr.")));");
 
   $r = DB_query_array("SELECT randomnumbers FROM gametmp LIMIT 1;");
   DB_query("DROP   TEMPORARY TABLE IF EXISTS gametmp;");