Contemporary witches and Neo-Pagans struggle with the issue of an ancient or inherited spiritual legacy. We’re told that there isn’t one, or that it was wiped out, or that the notion of ancient traditions surviving to modern times is ridiculous. People who try to claim a traditional lineage risk getting laughed out of the room. The “accepted version” is that witchcraft was wiped out by Christian persecutors wielding torches and stakes, and was reconstituted as Wicca by Gerald Gardner, Doreen Valiente, Old Dorothy and the New Forest Coven in Britain in the 1940’s and 1950’s. But is there all there is to it?

Grimassi opens his book with an exciting premise: the idea that witchcraft never entirely died out, and that practitioners of traditional forms of the Craft survived into the 20th century. His quest leads the reader from ancient Greece and Rome to the writings of late Romantic folklorists of the 18th and 19th centuries. Searching through a daunting mountain of records, folklore, and literature, the author scrapes away layers of superstition and prejudice and what remains offers a reasonably accurate picture of a historic witch.

Through his sorting process, Grimassi identifies consistent threads and themes in historic witchcraft. The first three chapters include wonderful bits and stories of witches of the past. In the story of Biddy Early, born in 1789 in Ireland, we encounter a witch who was a healer and seer. Since her magic worked, people went to her instead of to the Church. Trouble ensued. Although she was put on trial in 1865, no one would testify against her and she was released for lack of evidence.

No prejudicial muck succeeds in sticking to Biddy’s story, and there are others that supply convincing evidence that witches existed, their magic worked, and they were not inherently evil or associated with Satan. Grimassi shows how the Church inserted the Devil into what was essentially a practice of nature animism and goddess worship. Witchcraft persisted at the edges of society well into the Industrial Age.

But after a truly stellar explication of Old World afterlife theories, on page 94, the text suddenly jumps into an advertisement for the Ash, Birch and Willow (ABW) system of witchcraft Grimassi developed with his wife/partner Stephanie Taylor in 2004. The only warning is a paragraph header. Boo! Hiss! Why isn’t this at the beginning of new chapter? The editor was apparently asleep under an enchanted tree.

While I have no objection to writers promoting original systems, the reader deserves topical formatting that makes it clear that the author is shifting gears. Tagging this intro onto the end of a research section was the magical equivalent of a hidden bear trap.

From this point on, the book becomes an outline of the beliefs, methods and instructions for ABW practices. The following sections—Chapters Four and Five and Appendix A and B—draw heavily on the consistent themes of Old World witchcraft: herbal lore, spiritual connections with the earth, glimpses into the past through the dead and through earth memories, and a connection with lunar and seasonal cycles. 

While Raven Grimassi is a highly respected writer and obviously a dedicated researcher, there are other annoying bits. At the top of my list is the name of the witches’ God that the author is “not at liberty to disclose.” Then why even mention it? That’s just rude. The author questions the idea that ancient witches and magic practitioners had books,  and this underscores his intermittent problem with the transmission of witchcraft and its practices and precepts through the centuries.* Indeed, this is a complex area, but relevant scholarly insights exist. Although they may have been suppressed, witches didn’t exist in a vacuum, and neither did Europe. The progress of European witchcraft is entwined with the development and transmission of magic, math, astrology and medicine, and it bounced around from the Roman Empire to the Middle East to Europe. The transmission of traditional Hebrew magic (in ancient and medieval periods) and the Kabbalah (during the Mezarabic period in Spain) figure into this picture, too. 

Grimassi emphasizes the importance of the mortar and pestle as witches’ tools and discusses their powerful symbolism in a Craft context. How did he manage to omit Baba Yaga? And there are significant cosmological references to mortar and pestle symbolism that are omitted like the Amritamanthana and the story of Amlethi. Yes, I’m being extremely picky here, but readers should be aware that there are missing bits. Grimassi references Gimbutas, but missed her analysis of the immense importance and historic relevance of Baba Yaga and her mortar and pestle. (See “The Living Goddess” by Marija Gimbutas and Miriam Robbins Dexter, published after Gimbutas’ death in 2001.)

By identifying coherent themes from 2,000 years of obscured and garbled witch history, the author manages to return something contemporary practitioners have lost: a historic legacy. While most witches really can’t claim an unbroken tradition since the time of Medea, what can be claimed is a tradition of goddess worship and Green Wisdom that stretches back to antiquity, far too deeply embedded in the human genome and the earth’s memory to ever be suppressed or eradicated by hostile, dominant religions. “We are Everywhere” happily becomes “We have Always been Everywhere.” For that reclamation, the structural flaws, omissions, and some internal redundancies are minor issues in what otherwise is an excellent book.

Recommended for those seeking a greater understanding of the history of witchcraft, and who are interested in learning about the contemporary Ash, Birch and Willow practices developed by the author to include and explore traditional themes of Old World witchcraft.

~review by Elizabeth Hazel

Author: Raven Grimassi
Weiser Books, 2011
pp. 244, $19.95

* An extremely scholarly book that covers the practices of ancient magicians (and witches, doctors and sorcerers, and these aren’t easily separated) is: Magic and Magicians in the Greco-Roman World by Matthew W. Dickie; Routledge, 2001. This book is stultifying except for the small gold nuggets hidden in the text.

Another scholarly work that provides translations of ancient charms and amulets found throughout the ancient world in archeological digs and also helps answer the question of what deities were evoked in ancient magic is The Greek Magical Papyri In Translation, Including the Demotic Spells”(Volume One: Texts) edited by Hans Dieter Betz, University of Chicago Press, 1986. Many spells are addressed to Agathodaemon and Aphrodite; others are addressed to forms of solar deities including Apollo, Helios, and Shamash (Hebrew). There is a surprising amount of Hebrew influence in this collection, suggesting that tribal magical practices were well infused into mainstream magical practices during the Roman Empire period. Lots of these spells are really nasty.

Neither of these books is for the casual reader, but they do fill in some of the gaps in Grimassi’s historic examination of witchcraft, should the reader care to pursue these topics in scholarly depth.

16.325MBMemory Usage335msRequest Duration
Joomla! Version4.4.8
PHP Version8.3.22
Identityguest
Response200
Templatert_ambrosia
Database
Server
mysql
Version
10.6.22-MariaDB
Collation
latin1_swedish_ci
Conn Collation
utf8mb4_general_ci
$_GET
[]
$_POST
[]
$_SESSION
array:1 [ "joomla" => "***redacted***" ]
$_COOKIE
[]
$_SERVER
array:51 [ "USER" => "facingnorth" "HOME" => "/home/facingnorth" "SCRIPT_NAME" => "/index.php"...
session
array:3 [ "counter" => 1 "timer" => array:3 [ "start" => 1751804456 "last" => 1751804456...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:18 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (458.97KB) (4.53ms)
  • afterInitialise (809.85KB) (20.47ms)
  • afterRoute (544.34KB) (13.44ms)
  • beforeRenderComponent com_content (34.19KB) (1.44ms)
  • Before Access::preloadComponents (all components) (33.52KB) (979μs)
  • After Access::preloadComponents (all components) (107.34KB) (1.11ms)
  • Before Access::preloadPermissions (com_content) (1.57KB) (35μs)
  • After Access::preloadPermissions (com_content) (2MB) (10.7ms)
  • Before Access::getAssetRules (id:2130 name:com_content.article.1251) (66.65KB) (341μs)
  • After Access::getAssetRules (id:2130 name:com_content.article.1251) (8.72KB) (186μs)
  • afterRenderComponent com_content (275.32KB) (14.39ms)
  • afterDispatch (2.28KB) (149μs)
  • beforeRenderRawModule mod_finder (Search Module) (1.52MB) (21.46ms)
  • afterRenderRawModule mod_finder (Search Module) (279.35KB) (4.75ms)
  • beforeRenderModule mod_finder (Search Module) (720B) (8μs)
  • afterRenderModule mod_finder (Search Module) (1.28KB) (102μs)
  • afterRender (9.65MB) (240ms)
  • 1 x afterRender (9.65MB) (71.52%)
    239.79ms
    1 x beforeRenderRawModule mod_finder (Search Module) (1.52MB) (6.4%)
    21.46ms
    1 x afterInitialise (809.85KB) (6.11%)
    20.47ms
    1 x afterRenderComponent com_content (275.32KB) (4.29%)
    14.39ms
    1 x afterRoute (544.34KB) (4.01%)
    13.44ms
    1 x After Access::preloadPermissions (com_content) (2MB) (3.19%)
    10.70ms
    1 x afterRenderRawModule mod_finder (Search Module) (279.35KB) (1.42%)
    4.75ms
    1 x afterLoad (458.97KB) (1.35%)
    4.53ms
    1 x beforeRenderComponent com_content (34.19KB) (0.43%)
    1.44ms
    1 x After Access::preloadComponents (all components) (107.34KB) (0.33%)
    1.11ms
    1 x Before Access::preloadComponents (all components) (33.52KB) (0.29%)
    979μs
    1 x Before Access::getAssetRules (id:2130 name:com_content.article.1251) (66.65KB) (0.1%)
    341μs
    1 x After Access::getAssetRules (id:2130 name:com_content.article.1251) (8.72KB) (0.06%)
    186μs
    1 x afterDispatch (2.28KB) (0.04%)
    149μs
    1 x afterRenderModule mod_finder (Search Module) (1.28KB) (0.03%)
    102μs
    1 x Before Access::preloadPermissions (com_content) (1.57KB) (0.01%)
    35μs
    1 x beforeRenderModule mod_finder (Search Module) (720B) (0%)
    8μs
32 statements were executed, 3 of which were duplicates, 29 unique17.75ms396.05KB
  • SELECT @@SESSION.sql_mode;114μs968B/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:334Copy
  • SELECT `data` FROM `facv2_session` WHERE `session_id` = ?148μs1008BParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:261Copy
  • SELECT `session_id` FROM `facv2_session` WHERE `session_id` = :session_id LIMIT 198μ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.69ms944BParams/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` = 1323μs1.61KB/libraries/src/Component/ComponentHelper.php:399Copy
  • SELECT `id`,`rules` FROM `facv2_viewlevels`111μ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` = :guest167μ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`563μs3.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`794μ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`429μs3.88KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `id` FROM `facv2_content` WHERE `alias` = :alias AND `catid` = :catid182μ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` = 1246μ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.id185μs800B/libraries/gantry5/src/classes/Gantry/Joomla/StyleHelper.php:69Copy
  • SELECT * FROM `facv2_languages` WHERE `published` = 1 ORDER BY `ordering` ASC224μ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)601μ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.55ms181.48KBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `facv2_content`634μs3.02KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:625Copy
  • UPDATE `facv2_content` SET `hits` = (`hits` + 1) WHERE `id` = '1251'1.81ms48B/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)449μ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`471μ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)273μ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`443μ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 ASC889μ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`444μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `a`.`menutype`,`a`.`title` FROM `facv2_menu_types` AS `a` WHERE `a`.`client_id` = 0115μ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.lft849μ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`540μs1.83KBParams/libraries/src/Cache/Controller/CallbackController.php:51Copy
  • SELECT `name`,`element` FROM `facv2_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1310μ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)173μ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` = 1221μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:466Copy
  • SELECT `session_id` FROM `facv2_session` WHERE `session_id` = ?145μs1KBParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:291Copy
  • UPDATE `facv2_session` SET `data` = ? , `time` = ? WHERE `session_id` = ?1.56ms592BParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:318Copy