aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMaxence Lange <maxence@artificial-owl.com>2024-01-24 20:00:18 -0100
committerMaxence Lange <maxence@artificial-owl.com>2024-01-24 20:01:56 -0100
commit8362025643bdbe6c93ce4b3c33e61c2c370039fc (patch)
tree4c2f797c96c8261f64fef59dfd7cb3ae79510a50 /lib
parentcb43fca83d238adceb1d383ece7942bdbbe8880c (diff)
downloadnextcloud-server-8362025643bdbe6c93ce4b3c33e61c2c370039fc.tar.gz
nextcloud-server-8362025643bdbe6c93ce4b3c33e61c2c370039fc.zip
better indexes
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/composer/composer/autoload_classmap.php3
-rw-r--r--lib/composer/composer/autoload_static.php3
-rw-r--r--lib/private/AppConfig.php43
3 files changed, 29 insertions, 20 deletions
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php
index f1de00a49bf..2fffd0c2f2d 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -1241,8 +1241,11 @@ return array(
'OC\\Core\\Migrations\\Version28000Date20230906104802' => $baseDir . '/core/Migrations/Version28000Date20230906104802.php',
'OC\\Core\\Migrations\\Version28000Date20231004103301' => $baseDir . '/core/Migrations/Version28000Date20231004103301.php',
'OC\\Core\\Migrations\\Version28000Date20231103104802' => $baseDir . '/core/Migrations/Version28000Date20231103104802.php',
+ 'OC\\Core\\Migrations\\Version28000Date20231126110901' => $baseDir . '/core/Migrations/Version28000Date20231126110901.php',
'OC\\Core\\Migrations\\Version29000Date20231126110901' => $baseDir . '/core/Migrations/Version29000Date20231126110901.php',
'OC\\Core\\Migrations\\Version29000Date20231213104850' => $baseDir . '/core/Migrations/Version29000Date20231213104850.php',
+ 'OC\\Core\\Migrations\\Version29000Date20240124132201' => $baseDir . '/core/Migrations/Version29000Date20240124132201.php',
+ 'OC\\Core\\Migrations\\Version29000Date20240124132202' => $baseDir . '/core/Migrations/Version29000Date20240124132202.php',
'OC\\Core\\Notification\\CoreNotifier' => $baseDir . '/core/Notification/CoreNotifier.php',
'OC\\Core\\Service\\LoginFlowV2Service' => $baseDir . '/core/Service/LoginFlowV2Service.php',
'OC\\DB\\Adapter' => $baseDir . '/lib/private/DB/Adapter.php',
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index 017918b3f44..d38db8050cc 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -1274,8 +1274,11 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2
'OC\\Core\\Migrations\\Version28000Date20230906104802' => __DIR__ . '/../../..' . '/core/Migrations/Version28000Date20230906104802.php',
'OC\\Core\\Migrations\\Version28000Date20231004103301' => __DIR__ . '/../../..' . '/core/Migrations/Version28000Date20231004103301.php',
'OC\\Core\\Migrations\\Version28000Date20231103104802' => __DIR__ . '/../../..' . '/core/Migrations/Version28000Date20231103104802.php',
+ 'OC\\Core\\Migrations\\Version28000Date20231126110901' => __DIR__ . '/../../..' . '/core/Migrations/Version28000Date20231126110901.php',
'OC\\Core\\Migrations\\Version29000Date20231126110901' => __DIR__ . '/../../..' . '/core/Migrations/Version29000Date20231126110901.php',
'OC\\Core\\Migrations\\Version29000Date20231213104850' => __DIR__ . '/../../..' . '/core/Migrations/Version29000Date20231213104850.php',
+ 'OC\\Core\\Migrations\\Version29000Date20240124132201' => __DIR__ . '/../../..' . '/core/Migrations/Version29000Date20240124132201.php',
+ 'OC\\Core\\Migrations\\Version29000Date20240124132202' => __DIR__ . '/../../..' . '/core/Migrations/Version29000Date20240124132202.php',
'OC\\Core\\Notification\\CoreNotifier' => __DIR__ . '/../../..' . '/core/Notification/CoreNotifier.php',
'OC\\Core\\Service\\LoginFlowV2Service' => __DIR__ . '/../../..' . '/core/Service/LoginFlowV2Service.php',
'OC\\DB\\Adapter' => __DIR__ . '/../../..' . '/lib/private/DB/Adapter.php',
diff --git a/lib/private/AppConfig.php b/lib/private/AppConfig.php
index d15aff37c5b..8064fe186f8 100644
--- a/lib/private/AppConfig.php
+++ b/lib/private/AppConfig.php
@@ -83,6 +83,9 @@ class AppConfig implements IAppConfig {
/**
* $migrationCompleted is only needed to manage the previous structure
* of the database during the upgrading process to nc29.
+ *
+ * only when upgrading from a version prior 28.0.2
+ *
* @TODO: remove this value in Nextcloud 30+
*/
private bool $migrationCompleted = true;
@@ -735,7 +738,7 @@ class AppConfig implements IAppConfig {
$insert = $this->connection->getQueryBuilder();
$insert->insert('appconfig')
->setValue('appid', $insert->createNamedParameter($app))
- ->setValue('lazy', $insert->createNamedParameter($lazy, IQueryBuilder::PARAM_BOOL))
+ ->setValue('lazy', $insert->createNamedParameter(($lazy) ? 1 : 0, IQueryBuilder::PARAM_INT))
->setValue('type', $insert->createNamedParameter($type, IQueryBuilder::PARAM_INT))
->setValue('configkey', $insert->createNamedParameter($key))
->setValue('configvalue', $insert->createNamedParameter($value));
@@ -788,7 +791,7 @@ class AppConfig implements IAppConfig {
$update = $this->connection->getQueryBuilder();
$update->update('appconfig')
->set('configvalue', $update->createNamedParameter($value))
- ->set('lazy', $update->createNamedParameter($lazy, IQueryBuilder::PARAM_BOOL))
+ ->set('lazy', $update->createNamedParameter(($lazy) ? 1 : 0, IQueryBuilder::PARAM_INT))
->set('type', $update->createNamedParameter($type, IQueryBuilder::PARAM_INT))
->where($update->expr()->eq('appid', $update->createNamedParameter($app)))
->andWhere($update->expr()->eq('configkey', $update->createNamedParameter($key)));
@@ -925,7 +928,7 @@ class AppConfig implements IAppConfig {
$update = $this->connection->getQueryBuilder();
$update->update('appconfig')
- ->set('lazy', $update->createNamedParameter($lazy, IQueryBuilder::PARAM_BOOL))
+ ->set('lazy', $update->createNamedParameter($lazy ? 1 : 0, IQueryBuilder::PARAM_INT))
->where($update->expr()->eq('appid', $update->createNamedParameter($app)))
->andWhere($update->expr()->eq('configkey', $update->createNamedParameter($key)));
$update->executeStatement();
@@ -1157,21 +1160,13 @@ class AppConfig implements IAppConfig {
if (!$this->migrationCompleted) {
$qb->select('appid', 'configkey', 'configvalue');
} else {
- $qb->select('appid', 'configkey', 'configvalue', 'type', 'lazy');
+ // we only need value from lazy when loadConfig does not specify it
+ $qb->select('appid', 'configkey', 'configvalue', 'type');
+
if ($lazy !== null) {
- if ($this->connection->getDatabaseProvider() === IDBConnection::PLATFORM_ORACLE) {
- // Oracle does not like empty string nor false boolean !?
- if ($lazy) {
- $qb->where($qb->expr()->eq('lazy', $qb->createNamedParameter('1', IQueryBuilder::PARAM_INT)));
- } else {
- $qb->where($qb->expr()->orX(
- $qb->expr()->isNull('lazy'),
- $qb->expr()->eq('lazy', $qb->createNamedParameter('0', IQueryBuilder::PARAM_INT))
- ));
- }
- } else {
- $qb->where($qb->expr()->eq('lazy', $qb->createNamedParameter($lazy, IQueryBuilder::PARAM_BOOL)));
- }
+ $qb->where($qb->expr()->eq('lazy', $qb->createNamedParameter($lazy ? 1 : 0, IQueryBuilder::PARAM_INT)));
+ } else {
+ $qb->addSelect('lazy');
}
}
@@ -1195,9 +1190,8 @@ class AppConfig implements IAppConfig {
$rows = $result->fetchAll();
foreach ($rows as $row) {
- // if migration is not completed, 'lazy' and 'type' does not exist in $row
- // also on oracle, lazy can be null ...
- if ($row['lazy'] ?? false) {
+ // most of the time, 'lazy' is not in the select because its value is already known
+ if (($row['lazy'] ?? ($lazy ?? 0) ? 1 : 0) === 1) {
$cache = &$this->lazyCache;
} else {
$cache = &$this->fastCache;
@@ -1282,6 +1276,15 @@ class AppConfig implements IAppConfig {
* @deprecated
*/
public function setValue($app, $key, $value) {
+ /**
+ * TODO: would it be overkill, or decently improve performance, to catch
+ * call to this method with $key='enabled' and 'hide' config value related
+ * to $app when the app is disabled (by modifying entry in database: lazy=lazy+2)
+ * or enabled (lazy=lazy-2)
+ *
+ * this solution would remove the loading of config values from disabled app
+ * unless calling the method {@see loadConfigAll()}
+ */
return $this->setTypedValue($app, $key, (string)$value, false, self::VALUE_MIXED);
}