diff options
author | Robin Appelman <robin@icewind.nl> | 2025-06-10 16:15:05 +0200 |
---|---|---|
committer | Robin Appelman <robin@icewind.nl> | 2025-06-10 16:15:05 +0200 |
commit | 26903926a2eed87d6a1664df15eb221426e97dd3 (patch) | |
tree | 799cb593c84cfe65c6697b9089b865e0337909b0 | |
parent | 6d8b2634f238524b7a04aa902c4df60efbd3366e (diff) | |
download | nextcloud-server-shard-key-hint-partition.tar.gz nextcloud-server-shard-key-hint-partition.zip |
fix: allow hinting the shard keys for joined tablesshard-key-hint-partition
Signed-off-by: Robin Appelman <robin@icewind.nl>
-rw-r--r-- | lib/private/DB/QueryBuilder/Partitioned/PartitionedQueryBuilder.php | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/private/DB/QueryBuilder/Partitioned/PartitionedQueryBuilder.php b/lib/private/DB/QueryBuilder/Partitioned/PartitionedQueryBuilder.php index 2942eeccdf7..8b051561a2e 100644 --- a/lib/private/DB/QueryBuilder/Partitioned/PartitionedQueryBuilder.php +++ b/lib/private/DB/QueryBuilder/Partitioned/PartitionedQueryBuilder.php @@ -444,4 +444,19 @@ class PartitionedQueryBuilder extends ShardedQueryBuilder { public function getPartitionCount(): int { return count($this->splitQueries) + 1; } + + public function hintShardKey(string $column, mixed $value, bool $overwrite = false): self { + if (str_contains($column, '.')) { + [$alias, $column] = explode('.', $column); + $partition = $this->getPartition($alias); + if ($partition) { + $this->splitQueries[$partition->name]->query->hintShardKey($column, $value, $overwrite); + } else { + parent::hintShardKey($column, $value, $overwrite); + } + } else { + parent::hintShardKey($column, $value, $overwrite); + } + return $this; + } } |