This is a scholarly history that starts out like a mystery novel.

The setting is a place called the Welsh Marches, the ancient border area between Wales and England.  (The book has a map.) It’s an area that marks the division between ancient tribal Celtic Wales and the Romanized lands of the Anglo-Saxons that eventually became England. For millennia, the Welsh Marches has been a place of fervent, popular practice in the realms of folk magic, witchcraft and druidry.

Author Jon G. Hughes, who’s a scholar and member of a five-generation lineage of druids, received a call one day in 2019 from a friend who had inherited an old farm house in the Welsh Marches. Behind the home’s mantle, above an old fireplace, the friend had found an odd collection of things.  There was a medallion, a charred piece of paper, and a bundle of small bent pins tied together with thread.  What did it mean?  Hughes said he’d help the friend figure it out. The friend mailed the collection to Hughes, and when Hughes opened the envelope, he quickly realized that this was “a collection of meaningful occult items intended to protect the farmhouse and its occupants from malevolent forces and influences.”

Not that this was all that unusual. There are protective tokens tucked into buildings throughout the region.  But Hughes did consider this particular collection to be wyrd on two scores: 1) the potency of the combined items suggested that the homeowner had felt a very powerful need for protection; and 2) the items represented two usually separate occult traditions:  ancient witchcraft and the lore of the druidic traditions.  Now Hughes had a mystery to solve:  why were witchy and druidish items placed together, and why the need  to pack so much protection power into a single device?

For help, Hughes contacted curators of the National Museum Wales. He also enlisted Sophie Gallagher, a witch and witchcraft researcher based in rural Wales. She is the collaborative co-author of this book.

It’s an amazing book on several dimensions.

First, Hughes and Gallagher decoded the combined witchcraft and druidic sigils on the amulet found in the farmhouse.  It’s an apotropaic, or protection device, used for “the turning away of evil,” and also to attract good fortune and health. The combination of symbols speaks to the synergy of the two occult systems.

Hughes and Gallagher trace the history of the persecutions of witches and the suppressions of druids by invading armies. Centuries of repression and erasure were entwined with the histories of Catholic and Protestant expansions in the U.K. Witches and, often, druids were present in every village and town of the Welsh Marchs at the time of the 17th century Witchcraft Acts. Witches were simultaneously accorded high status because they were seen as capable of preventing disasters, and they were just as intensely feared by the locals.  Evidence of witchery’s prominence in this region is found in the countless old buildings that are riddled with apotropaic devices found in walls, ceilings, fireplaces, beneath floorboards. This book is on one level an archaeology of the many different types of witch markings and sigils that were burned and etched into every conceivable part of a building.

The population of this area was both enthralled and spooked by witches and druids. Hughes and Gallagher emphasize that while craft activity and druidry overlapped or co-existed in the region over many centuries, these should be treated as two distinct occult traditions. Witchcraft gives central importance to deities, whereas druidry is not about god(deses) but about direct communion with Nature itself.

In the occult mix of the Welsh Marches region, there was a special category of people called sin eaters.  An ancient funerary custom unique to Welsh culture, sin eating predated Christianity; was later incorporated into Christianity with its focus on human sin; and the practice persisted into the 19th century. When someone died, a relative would bake a cake and place it on the person’s corpse at sunset as if to absorb the decedent’s sins. The next morning, a sin eater would arrive and, for a fee, eat the cake and drink a bowl of ale or mead, symbolically taking on the sins of the decedent.

Imbibing a special liquor and eating a cake to transmute sinfulness—that sounds Christian, doesn’t it? The ethnography of this book points to the syncretic nature of occultism and Christianity even as recent as a few centuries ago.

Part 2 of this book, called a Grimoire of the Welsh Marches, begins with an analysis of the distinctions between witchcraft and druidry and the similarity of their compatible beliefs. “[B]oth traditions act for the benefit of humanity and the natural world that surrounds us,” Hughes and Gallagher write. The authors then offer an elaborate rendition of practices, including how to cast circles, use tools, botanicals, invocations, how to make and use your own apotropaic devices, including witch bottles.  It’s a lot of juicy material, something for occultists of both witchcraft and druidic persuasions.

This book is at once a great act of storytelling and historical summation, and it’s also a cook book of sorts. The book’s own multi-faceted liveliness captures the spirit of the Welsh Marches region and the practices that have thrived there.
    
~Review by Sara R. Diamond

Authors: Jon G. Hughes with Sophie Gallagher
Destiny Books, 2022
296 pp., $24.95

16.306MBMemory Usage324msRequest Duration
Joomla! Version4.4.8
PHP Version8.3.19
Identityguest
Response200
Templatert_ambrosia
Database
Server
mysql
Version
10.6.21-MariaDB
Collation
latin1_swedish_ci
Conn Collation
utf8mb4_general_ci
$_GET
[]
$_POST
[]
$_SESSION
array:1 [ "joomla" => "***redacted***" ]
$_COOKIE
[]
$_SERVER
array:49 [ "USER" => "facingnorth" "HOME" => "/home/facingnorth" "SCRIPT_NAME" => "/index.php"...
session
array:3 [ "counter" => 1 "timer" => array:3 [ "start" => 1743034918 "last" => 1743034918...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:18 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (458.5KB) (4.28ms)
  • afterInitialise (809.69KB) (18.59ms)
  • afterRoute (544.29KB) (10.02ms)
  • beforeRenderComponent com_content (34.37KB) (1.14ms)
  • Before Access::preloadComponents (all components) (33.47KB) (904μs)
  • After Access::preloadComponents (all components) (107.34KB) (1.17ms)
  • Before Access::preloadPermissions (com_content) (1.57KB) (38μs)
  • After Access::preloadPermissions (com_content) (1.99MB) (7.27ms)
  • Before Access::getAssetRules (id:3658 name:com_content.article.2769) (66.65KB) (223μs)
  • After Access::getAssetRules (id:3658 name:com_content.article.2769) (8.72KB) (117μs)
  • afterRenderComponent com_content (277.34KB) (12.04ms)
  • afterDispatch (2.28KB) (117μs)
  • beforeRenderRawModule mod_finder (Search Module) (1.52MB) (18.79ms)
  • afterRenderRawModule mod_finder (Search Module) (278.92KB) (4.6ms)
  • beforeRenderModule mod_finder (Search Module) (720B) (14μs)
  • afterRenderModule mod_finder (Search Module) (1.28KB) (103μs)
  • afterRender (9.66MB) (243ms)
  • 1 x afterRender (9.66MB) (74.89%)
    243.00ms
    1 x beforeRenderRawModule mod_finder (Search Module) (1.52MB) (5.79%)
    18.79ms
    1 x afterInitialise (809.69KB) (5.73%)
    18.59ms
    1 x afterRenderComponent com_content (277.34KB) (3.71%)
    12.04ms
    1 x afterRoute (544.29KB) (3.09%)
    10.02ms
    1 x After Access::preloadPermissions (com_content) (1.99MB) (2.24%)
    7.27ms
    1 x afterRenderRawModule mod_finder (Search Module) (278.92KB) (1.42%)
    4.60ms
    1 x afterLoad (458.5KB) (1.32%)
    4.28ms
    1 x After Access::preloadComponents (all components) (107.34KB) (0.36%)
    1.17ms
    1 x beforeRenderComponent com_content (34.37KB) (0.35%)
    1.14ms
    1 x Before Access::preloadComponents (all components) (33.47KB) (0.28%)
    904μs
    1 x Before Access::getAssetRules (id:3658 name:com_content.article.2769) (66.65KB) (0.07%)
    223μs
    1 x After Access::getAssetRules (id:3658 name:com_content.article.2769) (8.72KB) (0.04%)
    117μs
    1 x afterDispatch (2.28KB) (0.04%)
    117μs
    1 x afterRenderModule mod_finder (Search Module) (1.28KB) (0.03%)
    103μs
    1 x Before Access::preloadPermissions (com_content) (1.57KB) (0.01%)
    38μs
    1 x beforeRenderModule mod_finder (Search Module) (720B) (0%)
    14μs
32 statements were executed, 3 of which were duplicates, 29 unique18.31ms396.05KB
  • SELECT @@SESSION.sql_mode;156μs968B/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:334Copy
  • SELECT `data` FROM `facv2_session` WHERE `session_id` = ?207μs1008BParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:261Copy
  • SELECT `session_id` FROM `facv2_session` WHERE `session_id` = :session_id LIMIT 1187μs1.3KBParams/libraries/src/Session/MetadataManager.php:187Copy
  • INSERT INTO `facv2_session` (`session_id`,`guest`,`time`,`userid`,`username`,`client_id`) VALUES (:session_id, :guest, :time, :user_id, :username, :client_id)1.52ms944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `extension_id` AS `id`,`element` AS `option`,`params`,`enabled` FROM `facv2_extensions` WHERE `type` = 'component' AND `state` = 0 AND `enabled` = 1471μs1.61KB/libraries/src/Component/ComponentHelper.php:399Copy
  • SELECT `id`,`rules` FROM `facv2_viewlevels`129μs656B/libraries/src/Access/Access.php:955Copy
  • SELECT `b`.`id` FROM `facv2_usergroups` AS `a` LEFT JOIN `facv2_usergroups` AS `b` ON `b`.`lft` <= `a`.`lft` AND `b`.`rgt` >= `a`.`rgt` WHERE `a`.`id` = :guest198μs1.33KBParams/libraries/src/Access/Access.php:868Copy
  • SELECT `folder` AS `type`,`element` AS `name`,`params` AS `params`,`extension_id` AS `id` FROM `facv2_extensions` WHERE `enabled` = 1 AND `type` = 'plugin' AND `state` IN (0,1) AND `access` IN (:preparedArray1,:preparedArray2) ORDER BY `ordering`1.1ms3.48KBParams/libraries/src/Plugin/PluginHelper.php:294Copy
  • SELECT `m`.`id`,`m`.`menutype`,`m`.`title`,`m`.`alias`,`m`.`note`,`m`.`link`,`m`.`type`,`m`.`level`,`m`.`language`,`m`.`browserNav`,`m`.`access`,`m`.`params`,`m`.`home`,`m`.`img`,`m`.`template_style_id`,`m`.`component_id`,`m`.`parent_id`,`m`.`path` AS `route`,`e`.`element` AS `component` FROM `facv2_menu` AS `m` LEFT JOIN `facv2_extensions` AS `e` ON `m`.`component_id` = `e`.`extension_id` WHERE ( (`m`.`published` = 1 AND `m`.`parent_id` > 0 AND `m`.`client_id` = 0) AND (`m`.`publish_up` IS NULL OR `m`.`publish_up` <= :currentDate1)) AND (`m`.`publish_down` IS NULL OR `m`.`publish_down` >= :currentDate2) ORDER BY `m`.`lft`798μs133.17KBParams/libraries/src/Menu/SiteMenu.php:166Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `facv2_categories` AS `s` INNER JOIN `facv2_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`569μs3.88KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `id` FROM `facv2_content` WHERE `alias` = :alias AND `catid` = :catid208μs1.34KBParams/components/com_content/src/Service/Router.php:263Copy
  • SELECT `id`,`home`,`template`,`s`.`params`,`inheritable`,`parent` FROM `facv2_template_styles` AS `s` LEFT JOIN `facv2_extensions` AS `e` ON `e`.`element` = `s`.`template` AND `e`.`type` = 'template' AND `e`.`client_id` = `s`.`client_id` WHERE `s`.`client_id` = 0 AND `e`.`enabled` = 1302μs880B/administrator/components/com_templates/src/Model/StyleModel.php:773Copy
  • SELECT s.id, s.template, s.home, s.title AS long_title, s.params FROM facv2_template_styles AS s WHERE s.client_id = 0 AND s.template = 'rt_ambrosia' ORDER BY s.id230μs800B/libraries/gantry5/src/classes/Gantry/Joomla/StyleHelper.php:69Copy
  • SELECT * FROM `facv2_languages` WHERE `published` = 1 ORDER BY `ordering` ASC212μs1.59KB/libraries/src/Language/LanguageHelper.php:142Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `facv2_assets` WHERE `name` IN (:preparedArray1,:preparedArray2,:preparedArray3,:preparedArray4,:preparedArray5,:preparedArray6,:preparedArray7,:preparedArray8,:preparedArray9,:preparedArray10,:preparedArray11,:preparedArray12,:preparedArray13,:preparedArray14,:preparedArray15,:preparedArray16,:preparedArray17,:preparedArray18,:preparedArray19,:preparedArray20,:preparedArray21,:preparedArray22,:preparedArray23,:preparedArray24,:preparedArray25,:preparedArray26,:preparedArray27,:preparedArray28,:preparedArray29,:preparedArray30,:preparedArray31,:preparedArray32,:preparedArray33,:preparedArray34,:preparedArray35,:preparedArray36,:preparedArray37,:preparedArray38,:preparedArray39)563μs7.44KBParams/libraries/src/Access/Access.php:357Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `facv2_assets` WHERE `name` LIKE :asset OR `name` = :extension OR `parent_id` = 02.68ms181.48KBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `facv2_content`507μs3.02KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:625Copy
  • UPDATE `facv2_content` SET `hits` = (`hits` + 1) WHERE `id` = '2769'1.54ms48B/libraries/src/Table/Table.php:1325Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `facv2_content` AS `a` INNER JOIN `facv2_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `facv2_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `facv2_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `facv2_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `facv2_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)415μs22.13KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `facv2_categories` AS `s` INNER JOIN `facv2_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`432μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `m`.`tag_id`,`t`.* FROM `facv2_contentitem_tag_map` AS `m` INNER JOIN `facv2_tags` AS `t` ON `m`.`tag_id` = `t`.`id` WHERE `m`.`type_alias` = :contentType AND `m`.`content_item_id` = :id AND `t`.`published` = 1 AND `t`.`access` IN (:preparedArray1,:preparedArray2)263μs3.97KBParams/libraries/src/Helper/TagsHelper.php:388Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `facv2_categories` AS `s` INNER JOIN `facv2_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`436μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT DISTINCT a.id, a.title, a.name, a.checked_out, a.checked_out_time, a.note, a.state, a.access, a.created_time, a.created_user_id, a.ordering, a.language, a.fieldparams, a.params, a.type, a.default_value, a.context, a.group_id, a.label, a.description, a.required, a.only_use_in_subform,l.title AS language_title, l.image AS language_image,uc.name AS editor,ag.title AS access_level,ua.name AS author_name,g.title AS group_title, g.access as group_access, g.state AS group_state, g.note as group_note FROM facv2_fields AS a LEFT JOIN `facv2_languages` AS l ON l.lang_code = a.language LEFT JOIN facv2_users AS uc ON uc.id=a.checked_out LEFT JOIN facv2_viewlevels AS ag ON ag.id = a.access LEFT JOIN facv2_users AS ua ON ua.id = a.created_user_id LEFT JOIN facv2_fields_groups AS g ON g.id = a.group_id LEFT JOIN `facv2_fields_categories` AS fc ON fc.field_id = a.id WHERE ( (`a`.`context` = :context AND (`fc`.`category_id` IS NULL OR `fc`.`category_id` IN (:preparedArray1,:preparedArray2,:preparedArray3)) AND `a`.`access` IN (:preparedArray4,:preparedArray5)) AND (`a`.`group_id` = 0 OR `g`.`access` IN (:preparedArray6,:preparedArray7)) AND `a`.`state` = :state) AND (`a`.`group_id` = 0 OR `g`.`state` = :gstate) AND `a`.`only_use_in_subform` = :only_use_in_subform ORDER BY a.ordering ASC914μs4.81KBParams/libraries/src/MVC/Model/BaseDatabaseModel.php:166Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `facv2_categories` AS `s` INNER JOIN `facv2_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`419μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `a`.`menutype`,`a`.`title` FROM `facv2_menu_types` AS `a` WHERE `a`.`client_id` = 0130μs608B/libraries/gantry5/src/classes/Gantry/Framework/Menu.php:138Copy
  • SELECT m.id, m.alias, m.path AS route, m.level, m.parent_id FROM facv2_menu AS m WHERE m.menutype = 'mainmenu' AND m.parent_id > 0 AND m.client_id = 0 AND m.published >= 0 ORDER BY m.lft588μs1.98KB/libraries/gantry5/src/classes/Gantry/Framework/Menu.php:791Copy
  • SELECT `m`.`id`,`m`.`title`,`m`.`module`,`m`.`position`,`m`.`content`,`m`.`showtitle`,`m`.`params`,`mm`.`menuid` FROM `facv2_modules` AS `m` LEFT JOIN `facv2_modules_menu` AS `mm` ON `mm`.`moduleid` = `m`.`id` LEFT JOIN `facv2_extensions` AS `e` ON `e`.`element` = `m`.`module` AND `e`.`client_id` = `m`.`client_id` WHERE ( ( (`m`.`published` = 1 AND `e`.`enabled` = 1 AND `m`.`client_id` = :clientId AND `m`.`access` IN (:preparedArray1,:preparedArray2)) AND (`m`.`publish_up` IS NULL OR `m`.`publish_up` <= :publishUp)) AND (`m`.`publish_down` IS NULL OR `m`.`publish_down` >= :publishDown)) AND (`mm`.`menuid` = :itemId OR `mm`.`menuid` <= 0) ORDER BY `m`.`position`,`m`.`ordering`526μs1.83KBParams/libraries/src/Cache/Controller/CallbackController.php:51Copy
  • SELECT `name`,`element` FROM `facv2_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1308μs656B/administrator/components/com_finder/src/Helper/LanguageHelper.php:135Copy
  • SELECT `title` FROM `facv2_finder_taxonomy` WHERE `parent_id` = 1 AND `state` = 1 AND `access` IN (1,5)187μs584B/administrator/components/com_finder/src/Indexer/Taxonomy.php:314Copy
  • SELECT SUM(CASE WHEN `a`.`next_execution` <= :now THEN 1 ELSE 0 END) AS due_count,SUM(CASE WHEN `a`.`locked` IS NULL THEN 0 ELSE 1 END) AS locked_count FROM `facv2_scheduler_tasks` AS `a` WHERE `a`.`state` = 1182μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:466Copy
  • SELECT `session_id` FROM `facv2_session` WHERE `session_id` = ?143μs1KBParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:291Copy
  • UPDATE `facv2_session` SET `data` = ? , `time` = ? WHERE `session_id` = ?1.79ms592BParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:318Copy