diff options
| author | Damien Regad <dregad@mantisbt.org> | 2023-03-25 13:58:15 +0100 |
|---|---|---|
| committer | Damien Regad <dregad@mantisbt.org> | 2023-03-25 13:58:15 +0100 |
| commit | 09748995a96586348715049be1706f09a57d7478 (patch) | |
| tree | 958bbd6106423bf8f9690e3cf9e04c9b5bbab9fc /session | |
| parent | 46f1c61177bbd12ef681a50b1c3a7961e8ec3995 (diff) | |
| download | adodb-09748995a96586348715049be1706f09a57d7478.tar.gz adodb-09748995a96586348715049be1706f09a57d7478.tar.bz2 adodb-09748995a96586348715049be1706f09a57d7478.zip | |
Move MySQL BINARY to expression right-hand side
Having it on the left-hand side prevented usage of the index, so a full
table scan was performed with significant performance impact when a
large number of sessions are stored in the table.
Fixes #941
Diffstat (limited to 'session')
| -rw-r--r-- | session/adodb-session2.php | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/session/adodb-session2.php b/session/adodb-session2.php index 588220ba..11d61fd3 100644 --- a/session/adodb-session2.php +++ b/session/adodb-session2.php @@ -720,8 +720,9 @@ class ADODB_Session { } } - - $sql = "UPDATE $table SET expiry = $expiry ,expireref=".$conn->Param('0').", modified = $sysTimeStamp WHERE $binary sesskey = ".$conn->Param('1')." AND expiry >= $sysTimeStamp"; + $sql = "UPDATE $table SET expiry = $expiry, expireref=" . $conn->Param('0') + . ", modified = $sysTimeStamp WHERE sesskey = $binary " . $conn->Param('1') + . " AND expiry >= $sysTimeStamp"; $rs = $conn->Execute($sql,array($expirevar,$key)); return true; } @@ -825,7 +826,7 @@ class ADODB_Session { reset($expire_notify); $fn = next($expire_notify); $savem = $conn->SetFetchMode(ADODB_FETCH_NUM); - $sql = "SELECT expireref, sesskey FROM $table WHERE $binary sesskey = $qkey"; + $sql = "SELECT expireref, sesskey FROM $table WHERE sesskey = $binary $qkey"; $rs = $conn->Execute($sql); ADODB_Session::_dumprs($rs); $conn->SetFetchMode($savem); @@ -842,7 +843,7 @@ class ADODB_Session { $rs->Close(); } - $sql = "DELETE FROM $table WHERE $binary sesskey = $qkey"; + $sql = "DELETE FROM $table WHERE sesskey = $binary $qkey"; $rs = $conn->Execute($sql); if ($rs) { $rs->Close(); @@ -900,7 +901,7 @@ class ADODB_Session { $ref = $rs->fields[0]; $key = $rs->fields[1]; if ($fn) $fn($ref, $key); - $del = $conn->Execute("DELETE FROM $table WHERE sesskey=".$conn->Param('0'),array($key)); + $del = $conn->Execute("DELETE FROM $table WHERE sesskey = $binary " . $conn->Param('0'), array($key)); $rs->MoveNext(); $ccnt += 1; if ($tr && $ccnt % $COMMITNUM == 0) { |
