Skip to content

Instantly share code, notes, and snippets.

@q0rban
Last active December 21, 2015 19:49
Show Gist options
  • Save q0rban/6356972 to your computer and use it in GitHub Desktop.
Save q0rban/6356972 to your computer and use it in GitHub Desktop.
<?php
/**
* @file
* Select builder for MySQL database engine, routing all SELECTs to the slave.
*/
/**
* @addtogroup database
* @{
*/
class SelectQuery_mysql extends SelectQuery {
public function __construct($table, $alias = NULL, DatabaseConnection $connection, $options = array()) {
$key = $connection->getKey();
$connection = Database::getConnection('slave', $key);
$options['target'] = 'slave';
parent::__construct($table, $alias, $connection, $options);
}
}
/**
* @} End of "addtogroup database".
*/
@mabushey
Copy link

On Drupal 7.35, this routes all SELECTs that have carrage returns in them to the slave:

Slave log:
...
4755 Query SELECT r.rid AS rid, r.name AS name
FROM
role r
ORDER BY weight ASC, name ASC
4755 Query SELECT r.rid AS rid, r.name AS name
FROM
role r
ORDER BY weight ASC, name ASC
4755 Query SELECT t__0.*
FROM
js_injector_rule t__0
4755 Query SELECT DISTINCT registry.name AS name, registry.filename AS filename
FROM
registry registry
WHERE (type='class' AND ( filename like '%.mail.%' OR name like '%MailSystem' ))
4755 Query SELECT redirect.rid AS rid
FROM
redirect redirect
WHERE (source LIKE 'js/admin_menu/cache/536cf41ec31d9ad0908b30a985f32c81' ESCAPE '') AND (language IN ('en', 'und'))
...

Master log:
...
5184 Query SELECT name, filename, type from system WHERE status = 1
5184 Query SELECT u., s. FROM users u INNER JOIN sessions s ON u.uid = s.uid WHERE s.ssid = 'Jabm2N9WQhBalbf5OtIPRC4S5EggyqfrrlvRfV7593w'
5184 Query SELECT r.rid, r.name FROM role r INNER JOIN users_roles ur ON ur.rid = r.rid WHERE ur.uid = '13787'
5184 Query SELECT filename FROM system WHERE name = 'bancbox' AND type = 'module'
5184 Query SELECT filename FROM system WHERE name = 'mixpanel-php' AND type = 'module'
5184 Query SELECT source FROM url_alias WHERE alias = 'js/admin_menu/cache/536cf41ec31d9ad0908b30a985f32c81' AND language IN ('en', 'und') ORDER BY language ASC, pid DESC
5184 Query SELECT source, alias FROM url_alias WHERE source IN ('user/login') AND language IN ('en', 'und') ORDER BY language ASC, pid ASC
5184 Query SELECT rid, permission FROM role_permission WHERE rid IN ('2', '3', '12', '22', '28', '38')
...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment