From 7cf52a2ab5cc47301d94f7c290a79d77454e38ec Mon Sep 17 00:00:00 2001 From: ale <ale@incal.net> Date: Fri, 19 Feb 2021 16:26:21 +0000 Subject: [PATCH] Add support for github.com/stuttter/ludicrousdb It is a replacement for HyperDB. Controlled by defining R2DB_USE_LUDICROUSDB to non-null in db-config.php. --- db-backends.php | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/db-backends.php b/db-backends.php index ace5b2a..b6df992 100644 --- a/db-backends.php +++ b/db-backends.php @@ -10,7 +10,7 @@ $r2db_hash_map = new Flexihash(null, R2DB_FLEXIHASH_REPLICAS); * * Implements a consistent hashing scheme using Flexihash. */ -function noblogs_db_callback($query, $wpdb) { +function noblogs_hyperdb_callback($query, $wpdb) { global $r2db_hash_map; if (preg_match("/^{$wpdb->base_prefix}(\d+)_/", $wpdb->table, $matches)) { $blog_id = $matches[1]; @@ -18,7 +18,22 @@ function noblogs_db_callback($query, $wpdb) { } } -$wpdb->add_callback('noblogs_db_callback'); +/* Same as above but with a slightly different function + signature for https://github.com/stuttter/ludicrousdb */ +function noblogs_ludicrousdb_callback($table, $wpdb) { + global $r2db_hash_map; + if (preg_match("/^{$wpdb->base_prefix}(\d+)_/", $table, $matches)) { + $blog_id = $matches[1]; + return $r2db_hash_map->lookup($blog_id); + } + return "global"; +} + +if (defined('R2DB_USE_LUDICROUSDB')) { + $wpdb->add_callback('noblogs_ludicrousdb_callback'); +} else { + $wpdb->add_callback('noblogs_hyperdb_callback'); +} /* Load backend shards and add them to FlexiHash / $wpdb. */ function noblogs_load_backends() { -- GitLab