BranchStore: quote binary values when cloning...

...branches, instead of letting prepared statements deal with this.

refs #2711
This commit is contained in:
Thomas Gelf 2023-02-23 11:32:59 +01:00
parent b3e09978fa
commit 12aa7e07e2
1 changed files with 16 additions and 0 deletions

View File

@ -56,6 +56,7 @@ class BranchStore
$rows = $db->fetchAll($db->select()->from($table)->where('branch_uuid = ?', $oldQuotedUuid));
foreach ($rows as $row) {
$modified = (array)$row;
$this->quoteBinaryProperties($modified);
$modified['branch_uuid'] = $quotedUuid;
if ($table === self::TABLE_ACTIVITY) {
$modified['timestamp_ns'] = round($modified['timestamp_ns'] / 1000000);
@ -68,6 +69,21 @@ class BranchStore
return $this->fetchBranchByName($newName);
}
protected function quoteBinaryProperties(&$properties)
{
foreach ($properties as $key => $value) {
if ($this->isBinaryColumn($key)) {
$properties[$key] = $this->connection->quoteBinary($value);
}
}
}
protected function isBinaryColumn($key)
{
return (strpos($key, 'uuid') !== false || strpos($key, 'checksum') !== false)
&& strpos($key, 'hex') === false;
}
protected function runTransaction($callback)
{
$db = $this->db;