mirror of
https://github.com/strapi/strapi.git
synced 2025-11-11 07:39:16 +00:00
finally drop temp table
This commit is contained in:
parent
e2234ed9f1
commit
306d5c4abc
@ -295,75 +295,86 @@ const cleanOrderColumnsForOldDatabases = async ({
|
|||||||
|
|
||||||
if (hasOrderColumn(attribute) && id) {
|
if (hasOrderColumn(attribute) && id) {
|
||||||
const tempOrderTableName = `tempOrderTableName_${now}`;
|
const tempOrderTableName = `tempOrderTableName_${now}`;
|
||||||
await db.connection
|
try {
|
||||||
.raw(
|
await db.connection
|
||||||
`
|
.raw(
|
||||||
CREATE TEMPORARY TABLE :tempOrderTableName:
|
`
|
||||||
SELECT
|
CREATE TEMPORARY TABLE :tempOrderTableName:
|
||||||
|
SELECT
|
||||||
|
id,
|
||||||
|
(
|
||||||
|
SELECT count(*)
|
||||||
|
FROM :joinTableName: b
|
||||||
|
WHERE a.:orderColumnName: >= b.:orderColumnName: AND a.:joinColumnName: = b.:joinColumnName: AND a.:joinColumnName: = :id
|
||||||
|
) AS src_order
|
||||||
|
FROM :joinTableName: a`,
|
||||||
|
{
|
||||||
|
tempOrderTableName,
|
||||||
|
joinTableName: joinTable.name,
|
||||||
|
orderColumnName,
|
||||||
|
joinColumnName: joinColumn.name,
|
||||||
id,
|
id,
|
||||||
(
|
}
|
||||||
SELECT count(*)
|
)
|
||||||
FROM :joinTableName: b
|
.transacting(trx);
|
||||||
WHERE a.:orderColumnName: >= b.:orderColumnName: AND a.:joinColumnName: = b.:joinColumnName: AND a.:joinColumnName: = :id
|
await db.connection
|
||||||
) AS src_order
|
.raw(
|
||||||
FROM :joinTableName: a`,
|
`UPDATE ?? as a, (SELECT * FROM ??) AS b
|
||||||
{
|
|
||||||
tempOrderTableName,
|
|
||||||
joinTableName: joinTable.name,
|
|
||||||
orderColumnName,
|
|
||||||
joinColumnName: joinColumn.name,
|
|
||||||
id,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.transacting(trx);
|
|
||||||
await db.connection
|
|
||||||
.raw(
|
|
||||||
`UPDATE ?? as a, (SELECT * FROM ??) AS b
|
|
||||||
SET ?? = b.src_order
|
SET ?? = b.src_order
|
||||||
WHERE a.id = b.id`,
|
WHERE a.id = b.id`,
|
||||||
[joinTable.name, tempOrderTableName, orderColumnName]
|
[joinTable.name, tempOrderTableName, orderColumnName]
|
||||||
)
|
)
|
||||||
.transacting(trx);
|
.transacting(trx);
|
||||||
await db.connection.raw(`DROP TEMPORARY TABLE ${tempOrderTableName}`).transacting(trx);
|
} finally {
|
||||||
|
await db.connection
|
||||||
|
.raw(`DROP TEMPORARY TABLE IF EXISTS ${tempOrderTableName}`)
|
||||||
|
.transacting(trx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasInverseOrderColumn(attribute) && !isEmpty(inverseRelIds)) {
|
if (hasInverseOrderColumn(attribute) && !isEmpty(inverseRelIds)) {
|
||||||
const tempInvOrderTableName = `tempInvOrderTableName_${now}`;
|
const tempInvOrderTableName = `tempInvOrderTableName_${now}`;
|
||||||
await db.connection
|
try {
|
||||||
.raw(
|
await db.connection
|
||||||
`
|
.raw(
|
||||||
CREATE TEMPORARY TABLE ??
|
`
|
||||||
SELECT
|
CREATE TEMPORARY TABLE ??
|
||||||
id,
|
SELECT
|
||||||
(
|
id,
|
||||||
SELECT count(*)
|
(
|
||||||
FROM ?? b
|
SELECT count(*)
|
||||||
WHERE a.?? >= b.?? AND a.?? = b.?? AND a.?? IN (${inverseRelIds
|
FROM ?? b
|
||||||
.map(() => '?')
|
WHERE a.?? >= b.?? AND a.?? = b.?? AND a.?? IN (${inverseRelIds
|
||||||
.join(', ')})
|
.map(() => '?')
|
||||||
) AS inv_order
|
.join(', ')})
|
||||||
FROM ?? a`,
|
) AS inv_order
|
||||||
[
|
FROM ?? a`,
|
||||||
tempInvOrderTableName,
|
[
|
||||||
joinTable.name,
|
tempInvOrderTableName,
|
||||||
inverseOrderColumnName,
|
joinTable.name,
|
||||||
inverseOrderColumnName,
|
inverseOrderColumnName,
|
||||||
inverseJoinColumn.name,
|
inverseOrderColumnName,
|
||||||
inverseJoinColumn.name,
|
inverseJoinColumn.name,
|
||||||
inverseJoinColumn.name,
|
inverseJoinColumn.name,
|
||||||
...inverseRelIds,
|
inverseJoinColumn.name,
|
||||||
joinTable.name,
|
...inverseRelIds,
|
||||||
]
|
joinTable.name,
|
||||||
)
|
]
|
||||||
.transacting(trx);
|
)
|
||||||
await db.connection
|
.transacting(trx);
|
||||||
.raw(
|
await db.connection
|
||||||
`UPDATE ?? as a, (SELECT * FROM ??) AS b
|
.raw(
|
||||||
SET ?? = b.inv_order
|
`UPDATE ?? as a, (SELECT * FROM ??) AS b
|
||||||
WHERE a.id = b.id`,
|
SET ?? = b.inv_order
|
||||||
[joinTable.name, tempInvOrderTableName, inverseOrderColumnName]
|
WHERE a.id = b.id`,
|
||||||
)
|
[joinTable.name, tempInvOrderTableName, inverseOrderColumnName]
|
||||||
.transacting(trx);
|
)
|
||||||
await db.connection.raw(`DROP TEMPORARY TABLE ${tempInvOrderTableName}`).transacting(trx);
|
.transacting(trx);
|
||||||
|
} finally {
|
||||||
|
await db.connection
|
||||||
|
.raw(`DROP TEMPORARY TABLE IF EXISTS ${tempInvOrderTableName}`)
|
||||||
|
.transacting(trx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user