try fix error cannot insert multiple commands into prepared statement

This commit is contained in:
Julie Lenaerts 2023-09-11 11:23:21 +02:00
parent 92b1b17679
commit c1d70ec63e
6 changed files with 19 additions and 13 deletions

View File

@ -34,11 +34,11 @@ class PersonMoveAccompanyingPeriodParticipationHandler implements PersonMoveSqlH
WHERE WHERE
person_id = %d person_id = %d
AND (cpapp.startdate, COALESCE(cpapp.enddate, 'infinity'::date)) OVERLAPS (cpapp2.startdate, COALESCE(cpapp2.enddate, 'infinity'::date)) AND (cpapp.startdate, COALESCE(cpapp.enddate, 'infinity'::date)) OVERLAPS (cpapp2.startdate, COALESCE(cpapp2.enddate, 'infinity'::date))
) );
SQL, $to->getId(), $from->getId(), $to->getId()); SQL, $to->getId(), $from->getId(), $to->getId());
$deleteSql = sprintf(<<<'SQL' $deleteSql = sprintf(<<<'SQL'
DELETE FROM chill_person_accompanying_period_participation WHERE person_id = %d DELETE FROM chill_person_accompanying_period_participation WHERE person_id = %d;
SQL, $from->getId()); SQL, $from->getId());
return [$insertSql, $deleteSql]; return [$insertSql, $deleteSql];

View File

@ -52,12 +52,17 @@ class PersonMoveCenterHistoryHandler implements PersonMoveSqlHandlerInterface
} }
} }
$sqlDelete = sprintf("delete FROM chill_person_person_center_history WHERE person_id = %d", $from->getId()); $sqlDelete = sprintf(<<<'SQL'
DELETE FROM chill_person_person_center_history WHERE person_id = %d;
SQL, $from->getId());
$sqlStatements = [$sqlDelete]; $sqlStatements = [$sqlDelete];
if ((null !== $oldestDateA && null !== $oldestDateB) && $oldestDateA <= $oldestDateB) { if ((null !== $oldestDateA && null !== $oldestDateB) && $oldestDateA <= $oldestDateB) {
$sqlInsert = sprintf("update chill_person_person_center_history set startDate = '%s' WHERE id = %d", $oldestDateA->format('Y-m-d'), $oldestCenterHistoryB->getId());
$sqlInsert = sprintf(<<<'SQL'
UPDATE chill_person_person_center_history SET startDate = '%s' WHERE id = %d;
SQL, $oldestDateA->format('Y-m-d'), $oldestCenterHistoryB->getId());
$sqlStatements = [$sqlInsert, $sqlDelete]; $sqlStatements = [$sqlInsert, $sqlDelete];
} }

View File

@ -34,11 +34,11 @@ class PersonMoveHouseholdHandler implements PersonMoveSqlHandlerInterface
WHERE WHERE
person_id = %d person_id = %d
AND daterange(cphm.startdate, cphm.enddate) && daterange(cphm_inner.startdate, cphm_inner.enddate) AND daterange(cphm.startdate, cphm.enddate) && daterange(cphm_inner.startdate, cphm_inner.enddate)
) );
SQL, $to->getId(), $from->getId(), $to->getId()); SQL, $to->getId(), $from->getId(), $to->getId());
$deleteSql = sprintf(<<<'SQL' $deleteSql = sprintf(<<<'SQL'
DELETE FROM chill_person_household_members WHERE person_id = %d DELETE FROM chill_person_household_members WHERE person_id = %d;
SQL, $from->getId()); SQL, $from->getId());
return [$sqlInsert, $deleteSql]; return [$sqlInsert, $deleteSql];

View File

@ -34,7 +34,7 @@ class PersonMoveRelationHandler implements PersonMoveSqlHandlerInterface
WHERE WHERE
cpr2.fromperson_id = %d AND cpr2.toperson_id = %d cpr2.fromperson_id = %d AND cpr2.toperson_id = %d
OR cpr2.fromperson_id = %d AND cpr2.toperson_id = %d OR cpr2.fromperson_id = %d AND cpr2.toperson_id = %d
) );
SQL, $from->getId(), $from->getId(), $to->getId(), $from->getId(), $from->getId(), $to->getId()); SQL, $from->getId(), $from->getId(), $to->getId(), $from->getId(), $from->getId(), $to->getId());
$deleteSql = sprintf(<<<'SQL' $deleteSql = sprintf(<<<'SQL'

View File

@ -107,11 +107,11 @@ class PersonMove
$personMetadata = $this->em->getClassMetadata(Person::class); $personMetadata = $this->em->getClassMetadata(Person::class);
$sqls[] = sprintf( $sqls[] = sprintf(
'DELETE FROM %s WHERE id = %d', 'DELETE FROM %s WHERE id = %d;',
$this->getTableName($personMetadata), $this->getTableName($personMetadata),
$from->getId() $from->getId()
); );
return $sqls; return $sqls;
} }
@ -132,7 +132,7 @@ class PersonMove
} }
return sprintf( return sprintf(
'DELETE FROM %s WHERE %s', 'DELETE FROM %s WHERE %s;',
$this->getTableName($metadata), $this->getTableName($metadata),
implode(' AND ', $conditions) implode(' AND ', $conditions)
); );
@ -153,7 +153,7 @@ class PersonMove
. $mapping['joinTable']['name']; . $mapping['joinTable']['name'];
$sqlInsert = sprintf( $sqlInsert = sprintf(
"INSERT INTO %s (%s, %s) SELECT %d, %s FROM %s WHERE %s = %d ON CONFLICT DO NOTHING", "INSERT INTO %s (%s, %s) SELECT %d, %s FROM %s WHERE %s = %d ON CONFLICT DO NOTHING;",
$tableName, $tableName,
$mapping['joinTable']['inverseJoinColumns'][0]['name'], // person_id $mapping['joinTable']['inverseJoinColumns'][0]['name'], // person_id
$mapping['joinTable']['joinColumns'][0]['name'], // something_else_id $mapping['joinTable']['joinColumns'][0]['name'], // something_else_id
@ -165,7 +165,7 @@ class PersonMove
); );
$deleteSql = sprintf( $deleteSql = sprintf(
"DELETE FROM %s WHERE %s = %d", "DELETE FROM %s WHERE %s = %d;",
$tableName, $tableName,
$mapping['joinTable']['inverseJoinColumns'][0]['name'], // person_id $mapping['joinTable']['inverseJoinColumns'][0]['name'], // person_id
$from->getId() $from->getId()
@ -196,7 +196,7 @@ class PersonMove
} }
return [sprintf( return [sprintf(
'UPDATE %s SET %s WHERE %s', 'UPDATE %s SET %s WHERE %s;',
$tableName, $tableName,
implode(' ', $sets), implode(' ', $sets),
implode(' AND ', $conditions) implode(' AND ', $conditions)

View File

@ -120,6 +120,7 @@ class PersonDuplicateController extends Controller
$connection->beginTransaction(); $connection->beginTransaction();
foreach ($sqls as $sql) { foreach ($sqls as $sql) {
dump($sql);
$connection->executeQuery($sql); $connection->executeQuery($sql);
} }
$connection->commit(); $connection->commit();