Merge pull request #23952 from nextcloud/backport/23922/stable19
[stable19] Improve query type detection
This commit is contained in:
commit
8c384b8856
|
@ -73,8 +73,7 @@ class OC_DB {
|
||||||
throw new \OC\DatabaseException($e->getMessage());
|
throw new \OC\DatabaseException($e->getMessage());
|
||||||
}
|
}
|
||||||
// differentiate between query and manipulation
|
// differentiate between query and manipulation
|
||||||
$result = new OC_DB_StatementWrapper($result, $isManipulation);
|
return new OC_DB_StatementWrapper($result, $isManipulation);
|
||||||
return $result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -85,22 +84,26 @@ class OC_DB {
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public static function isManipulation($sql) {
|
public static function isManipulation($sql) {
|
||||||
|
$sql = trim($sql);
|
||||||
$selectOccurrence = stripos($sql, 'SELECT');
|
$selectOccurrence = stripos($sql, 'SELECT');
|
||||||
if ($selectOccurrence !== false && $selectOccurrence < 10) {
|
if ($selectOccurrence === 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$insertOccurrence = stripos($sql, 'INSERT');
|
$insertOccurrence = stripos($sql, 'INSERT');
|
||||||
if ($insertOccurrence !== false && $insertOccurrence < 10) {
|
if ($insertOccurrence === 0) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
$updateOccurrence = stripos($sql, 'UPDATE');
|
$updateOccurrence = stripos($sql, 'UPDATE');
|
||||||
if ($updateOccurrence !== false && $updateOccurrence < 10) {
|
if ($updateOccurrence === 0) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
$deleteOccurrence = stripos($sql, 'DELETE');
|
$deleteOccurrence = stripos($sql, 'DELETE');
|
||||||
if ($deleteOccurrence !== false && $deleteOccurrence < 10) {
|
if ($deleteOccurrence === 0) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
\OC::$server->getLogger()->logException(new \Exception('Can not detect if query is manipulating: ' . $sql));
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue