The Lib-Lab Pact - A Parliamentary Agreement, 1977-78

The first thing to say about this book is that it is an important addition to modern British political history. Following the availability of the crucial parliamentary documents in 2008 under the thirty year rule a mature assessment of this political episode became possible and full marks to Jonathan Kirkup for undertaking it. However, it soon becomes evident from the style and structure of the book that it derives from an academic thesis. A little research does indeed show that the Dr Kirkup completed a PhD in 2012 on this subject. Clearly it is perfectly legitimate to use all one's detailed academic research to produce a book on the same subject, but it should be in a very different style. A book is a narrative and a thesis is an academic exercise. The book's editor should have insisted on stylistic changes but then, given more than a score of typographical errors, more could also have been expected from such a reputable publisher as Palgrave Macmillan. Quite apart from annoying misspellings and errors of date perhaps someone can explain what the following comment means, on industrial democracy in the Post Office:

[I}n some ways this issue encapsulates one of the structural problems of a parliamentary arrangement only the lines of the Pact.

Also the author twice calls the Joseph Rowntree Reform Trust funded, and politically independent, Outer Circle Policy Unit, the "Liberal Outer Policy Unit." However, setting these solecisms and its overly-academic style aside, this is an important book and the best analysis and commentary on the Pact and on what was certainly an interesting period. The Liberal party's response to its formation in March 1977 was singularly different from the reaction to Jeremy Thorpe's discussions with Edward Heath on the possibility of Liberal-Conservative coalition after the 1970 general election. In 1970 my telephone went berserk with furious calls from Yorkshire Liberals protesting at Thorpe's action, whereas in 1977 I had just one worried enquirer. The difference was both because the party felt itself instinctively to be anti-Conservative - nb 2010! - and also because the political situation in 1977 clearly had potentially more leverage for us, albeit being also high risk. It lasted only for sixteen and a half months - though at the time it seemed much longer - and though there was the inevitable slum in poll ratings, from 13% to 6%, during its life they returned to 13% in the ten months after its termination up to the 1979 general election. Perhaps if the party had ended the coalition in August 2014 there might have been a corresponding recovery by the 2015 election.

Kirkup shows that, although some of the Liberal spokesmen, Richard Wainwright, for instance, achieved changes in legislation, the results of the Pact were rather more what the Liberals had stopped Labour from enacting. It is clear from Kirkup's careful narrative that specific policy achievements were less important to David Steel than the fact of the Pact and to the establishment of a formal Joint Consultative Committee between the two parties - and arrangement which was only reluctantly conceded by Jim Callaghan. The circumstances of the Pact are interesting. In a real sense the felicitous conjunction of the necessary planets at the right moment to grasp the parliamentary arithmetic and the frailty of the Labour government was crucial to its establishment and continuance. David Steel had been in office as leader for less than nine months and it is hard to imagine that Jeremy Thorpe would have been capable of taking and seeing through any such initiative. It is also unlikely that had John Pardoe won the Liberal party leadership election he would have taken the same initiative, though he loyally supported Steel throughout. Also Jim Callaghan had been leader of the Labour party for only a couple of months longer than Steel's tenure in the Liberal party and it is inconceivable that Harold Wilson would have envisaged such a Pact for an instant. It was similarly crucial that the machine-man Bob Mellish had been replaced recently by the much more personable and astute Michael Cocks as Labour Chief Whip. The Liberal Chief Whip, Alan Beith, also a great fixer, had an excellent relationship with Michael Cocks twisting his arm to move the writ for the by-election in Liverpool Edge Hill at the very last minute to ensure polling day, and a victory for the then Liberal, David Alton, and a very much needed boost for the party just thirty-five days before the general election. Kirkup's access to cabinet papers shines a welcome light on the important roles played by Freddie Warren, Private Secretary ot the Chief Whip, and Kenneth Stowe, the Prime Minister's Principal Private Secretary. Stowe in particular had Callaghan's full confidence and played a very pro-active role in keeping the show on the road.

Under the Pact every government department had a Liberal "shadow." This inevitably required the use of a number Liberal peers, some of whom such as Nacy Seear and Desmond Banks were acknowledged to be knowledgeable and influential. Other partnerships were not as fruitful. Jo Grimond and Tony Benn were hardly soulmates and I recall Jo regaling colleagues with accounts of their less than meaningful sessions. "We had a note presented of the current energy issues and we had a very pleasant chat about the main ones. We then had mugs of tea and five biscuits and I then left." Benn was permanently infuriating for Callaghan and Cocks and on occasion had to be threatened with dismissal from his Cabinet post. When the confidential draft agreement was circulated and handed back at the end of the meeting, Benn secretly retained his copy. I am reminded of Stephen Wall's comment on Benn in his official history of Britain and the European Community: "Tony Benn's capacity for disingenuous naivete was inexhaustible." Interestingly, party favourite Russell Johnston was regarded as poor negotiator, which I would attribute to Russell's lack of interest in detail, as opposed to his superb perorations in set speeches.

The issue of proportional representation for the direct elections to the European Parliament looms large throughout the book. Thirty-five years later, with PR (albeit of an inferior variety) adopted by consensus for these elections as well as for the Scottish Parliament and the Welsh Assembly and for the London Assembly, it seems rather paltry. It was, however, a totem pole for the Pact. In some respects it was a case of an irresistible force meeting an immovable object. The Liberals were absolutely determined to achieve PR for the MEP elections as an important act in itself but also as a tangible sign of the value of the Pact. Callaghan and Foot were equally intransigent on the impossibility of whipping their parliamentary colleagues to support it. The argument still continues as to whether it could have been won by more determination on the part of David Steel. He thought not and his style has always been not to confront the obvious. On the other hand, David Owen and Chris Mayhew, a defector to Liberal from Labour three years before, believed that Labour's fear of being turned out by a Thatcher-led Conservative party would have made it possible. The most David Steel achieved was an undertaking from Callaghan that he personally would support PR for Europe and state so in advance, thus recommending it to Cabinet colleagues and Labour MPs. The key vote in the House was lost by 321 to 224. It was a great disappointment to those who had set so much store on winning it but, in fact, it was a considerable step forward in the eternal struggle for electoral reform. Steel's biggest disappointment was over the lack of Conservative support which, he admits, he was naive in relying on. There was no way in which Conservative MPs were going to do anything to prop up the Pact. Even so, 61 Conservative MPs did vote for PR.

The Pact was very much David Steel's creation and it was always clear that he was going to "manage" it and to undertake its key negotiations personally, often without any colleague present. Kirkup's use of official papers exposes more than known at the time of how far Steel ignored party decisions and votes that were aimed at strengthening his negotiating position. It is recorded that, in his negotiations with the Prime Minister on the renewal of the Pact "he once again did not raise any of the Party Council or Steering Committee recommendations." This brings us right to David Steel's relations with his party. These were, alas, consistently bad, not just during the Pact but also later during the Alliance and the negotiations over merger with the SDP. He was permanently exasperated with the party and even put his disparagement with it on record. I am sure that this simply provoked negative reactions from a party that wished co-operate and which those in charge worked hard to be helpful and supportive. Certainly he suffered ill-timed and uncalled for vicious personal attacks from Cyril Smith, supported by David Alton, at the first meeting of the parliamentary party following the 1983 election. Party officers were always conscious of the severe electoral consequences of open disloyalty to the leader and, however provoked and disparaged, they swallowed hard and maintained public solidarity.

This was apparent at the special Liberal Assembly towards the end of the Pact. The September 1977 Assembly, faced with the impending renegotiation, agreed to leave it to the party president, Gruff Evans, the party Chair, Geoff Tordoff, an d the Assembly chair, myself to call a Special Assembly as and when needed. (We inevitably became known as the Three Wise Men and I recall receiving a 'phone call midway through December when the familiar nasal tones of Clement Freud asked, "Can I speak to a wise man before Christmas?"). We called this Assembly for 21 January 1978 and carefully worded the motions for debate to enable the "for" and "against" cases to be fully presented and debated. The pro-motion was carried by more than a two-thirds majority, which was an excellent example of the judgement and maturity of the party when faced with a potentially disastrous open revolt against the party leader. At the time I regarded it as demonstrating why the leader should leave party management to the party officers and should be co-operative and be advised by them. This lesson was not learnt as was shown by the debacle of the 1986 Eastbourne defence debate, the Alliance struggles and the 1987 merger negotiations, all of which were avoidable.

Jonathan Kirkup is excellent in analysing the Special Assembly and, particularly, in emphasising the positive role played by Chris Mayhew which was not recognised at the time. Kirkup is right to conclude that, although there were many good things for politics to emanate from the Pact, "Steel's strategy was ultimately flawed," but he is, however, I think, wrong in his contention that the Pact had no effect on future inter-party relations. It established good relations between a number of Liberal and Labour politicians and created Labour respect for a good number of their Liberal counterparts. It may indeed well have been in mind when, virtually alone of the party's senior figures, David Steel's support for the coalition in 2010 was couched in the shrewdest possible terms: "The coalition is a business arrangement born of necessity to clear up the country's dire financial debt. It should never be portrayed as anything else." Had that judgement been heeded we might have avoided the Rose Garden love-in and the back slapping of Osborne's budget performance and maintained a more winsome appeal to the electorate.

The Lib-Lab Pact - A Parliamentary Agreement, 1977-78 by Jonathan Kirkup, pub. Palgrave Macmillan 2015 ISBN 978-1-137-52768-4.

7.572MBMemory Usage224msRequest Duration
Joomla! Version4.4.4
PHP Version8.2.28
Identityguest
Response200
Templatetp_advocat
Database
Server
mysql
Version
10.11.10-MariaDB-log
Collation
utf8mb4_unicode_ci
Conn Collation
utf8mb4_general_ci
$_GET
[]
$_POST
[]
$_SESSION
array:1 [ "joomla" => "***redacted***" ]
$_COOKIE
[]
$_SERVER
array:54 [ "LSPHP_ProcessGroup" => "on" "PATH" => "/usr/local/bin:/bin:/usr/bin" "HTTP_ACCEPT"...
session
array:3 [ "counter" => 1 "timer" => array:3 [ "start" => 1749530514 "last" => 1749530514...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:18 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (447.52KB) (3.78ms)
  • afterInitialise (1.11MB) (33.42ms)
  • afterRoute (813.08KB) (9.26ms)
  • beforeRenderComponent com_content (44.5KB) (1.79ms)
  • Before Access::preloadComponents (all components) (41.02KB) (1.02ms)
  • After Access::preloadComponents (all components) (114.09KB) (884μs)
  • Before Access::preloadPermissions (com_content) (1.66KB) (18μs)
  • After Access::preloadPermissions (com_content) (336.12KB) (1.1ms)
  • Before Access::getAssetRules (id:551 name:com_content.article.311) (18.65KB) (36μs)
  • After Access::getAssetRules (id:551 name:com_content.article.311) (7.06KB) (103μs)
  • afterRenderComponent com_content (465.24KB) (21.43ms)
  • afterDispatch (207.85KB) (4.21ms)
  • Before Access::getAssetRules (id:16 name:com_menus) (1.27MB) (32.34ms)
  • After Access::getAssetRules (id:16 name:com_menus) (5.7KB) (42μs)
  • beforeRenderRawModule mod_tags_popular (Filter articles by topic) (6.27KB) (110μs)
  • afterRenderRawModule mod_tags_popular (Filter articles by topic) (57.18KB) (7.22ms)
  • beforeRenderModule mod_tags_popular (Filter articles by topic) (736B) (10μs)
  • afterRenderModule mod_tags_popular (Filter articles by topic) (7.67KB) (277μs)
  • beforeRenderRawModule mod_menu (In this section... ) (112B) (1.36ms)
  • afterRenderRawModule mod_menu (In this section... ) (4.66KB) (793μs)
  • beforeRenderModule mod_menu (In this section... ) (720B) (7μs)
  • afterRenderModule mod_menu (In this section... ) (2.9KB) (121μs)
  • beforeRenderRawModule mod_tags_popular (Filter by topic:) (80B) (329μs)
  • afterRenderRawModule mod_tags_popular (Filter by topic:) (16.81KB) (4.71ms)
  • beforeRenderModule mod_tags_popular (Filter by topic:) (720B) (8μs)
  • afterRenderModule mod_tags_popular (Filter by topic:) (6.15KB) (128μs)
  • beforeRenderRawModule mod_breadcrumbs_adv (Breadcrumbs Advanced) (880B) (1.16ms)
  • afterRenderRawModule mod_breadcrumbs_adv (Breadcrumbs Advanced) (15.53KB) (938μs)
  • beforeRenderModule mod_breadcrumbs_adv (Breadcrumbs Advanced) (736B) (6μs)
  • afterRenderModule mod_breadcrumbs_adv (Breadcrumbs Advanced) (3.63KB) (108μs)
  • beforeRenderRawModule mod_search (My search for top menu) (336B) (428μs)
  • afterRenderRawModule mod_search (My search for top menu) (31.88KB) (1.32ms)
  • beforeRenderModule mod_search (My search for top menu) (720B) (6μs)
  • afterRenderModule mod_search (My search for top menu) (4.69KB) (118μs)
  • beforeRenderRawModule mod_menu (Main Menu Mobile) (864B) (264μs)
  • afterRenderRawModule mod_menu (Main Menu Mobile) (8.88KB) (2.61ms)
  • beforeRenderModule mod_menu (Main Menu Mobile) (720B) (7μs)
  • afterRenderModule mod_menu (Main Menu Mobile) (10.15KB) (158μs)
  • afterRender (455.88KB) (92.19ms)
  • 1 x afterRender (455.88KB) (41.07%)
    92.19ms
    1 x afterInitialise (1.11MB) (14.89%)
    33.42ms
    1 x Before Access::getAssetRules (id:16 name:com_menus) (1.27MB) (14.41%)
    32.34ms
    1 x afterRenderComponent com_content (465.24KB) (9.55%)
    21.43ms
    1 x afterRoute (813.08KB) (4.13%)
    9.26ms
    1 x afterRenderRawModule mod_tags_popular (Filter articles by topic) (57.18KB) (3.21%)
    7.22ms
    1 x afterRenderRawModule mod_tags_popular (Filter by topic:) (16.81KB) (2.1%)
    4.71ms
    1 x afterDispatch (207.85KB) (1.87%)
    4.21ms
    1 x afterLoad (447.52KB) (1.68%)
    3.78ms
    1 x afterRenderRawModule mod_menu (Main Menu Mobile) (8.88KB) (1.16%)
    2.61ms
    1 x beforeRenderComponent com_content (44.5KB) (0.8%)
    1.79ms
    1 x beforeRenderRawModule mod_menu (In this section... ) (112B) (0.61%)
    1.36ms
    1 x afterRenderRawModule mod_search (My search for top menu) (31.88KB) (0.59%)
    1.32ms
    1 x beforeRenderRawModule mod_breadcrumbs_adv (Breadcrumbs Advanced) (880B) (0.52%)
    1.16ms
    1 x After Access::preloadPermissions (com_content) (336.12KB) (0.49%)
    1.10ms
    1 x Before Access::preloadComponents (all components) (41.02KB) (0.45%)
    1.02ms
    1 x afterRenderRawModule mod_breadcrumbs_adv (Breadcrumbs Advanced) (15.53KB) (0.42%)
    938μs
    1 x After Access::preloadComponents (all components) (114.09KB) (0.39%)
    884μs
    1 x afterRenderRawModule mod_menu (In this section... ) (4.66KB) (0.35%)
    793μs
    1 x beforeRenderRawModule mod_search (My search for top menu) (336B) (0.19%)
    428μs
    1 x beforeRenderRawModule mod_tags_popular (Filter by topic:) (80B) (0.15%)
    329μs
    1 x afterRenderModule mod_tags_popular (Filter articles by topic) (7.67KB) (0.12%)
    277μs
    1 x beforeRenderRawModule mod_menu (Main Menu Mobile) (864B) (0.12%)
    264μs
    1 x afterRenderModule mod_menu (Main Menu Mobile) (10.15KB) (0.07%)
    158μs
    1 x afterRenderModule mod_tags_popular (Filter by topic:) (6.15KB) (0.06%)
    128μs
    1 x afterRenderModule mod_menu (In this section... ) (2.9KB) (0.05%)
    121μs
    1 x afterRenderModule mod_search (My search for top menu) (4.69KB) (0.05%)
    118μs
    1 x beforeRenderRawModule mod_tags_popular (Filter articles by topic) (6.27KB) (0.05%)
    110μs
    1 x afterRenderModule mod_breadcrumbs_adv (Breadcrumbs Advanced) (3.63KB) (0.05%)
    108μs
    1 x After Access::getAssetRules (id:551 name:com_content.article.311) (7.06KB) (0.05%)
    103μs
    1 x After Access::getAssetRules (id:16 name:com_menus) (5.7KB) (0.02%)
    42μs
    1 x Before Access::getAssetRules (id:551 name:com_content.article.311) (18.65KB) (0.02%)
    36μs
    1 x Before Access::preloadPermissions (com_content) (1.66KB) (0.01%)
    18μs
    1 x beforeRenderModule mod_tags_popular (Filter articles by topic) (736B) (0%)
    10μs
    1 x beforeRenderModule mod_tags_popular (Filter by topic:) (720B) (0%)
    8μs
    1 x beforeRenderModule mod_menu (In this section... ) (720B) (0%)
    7μs
    1 x beforeRenderModule mod_menu (Main Menu Mobile) (720B) (0%)
    7μs
    1 x beforeRenderModule mod_breadcrumbs_adv (Breadcrumbs Advanced) (736B) (0%)
    6μs
    1 x beforeRenderModule mod_search (My search for top menu) (720B) (0%)
    6μs
31 statements were executed, 7 of which were duplicates, 24 unique18.29ms278.57KB
  • SELECT @@SESSION.sql_mode;77μs968B/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:334Copy
  • SELECT `data` FROM `jto7c_session` WHERE `session_id` = ?106μs1008BParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:261Copy
  • SELECT `session_id` FROM `jto7c_session` WHERE `session_id` = :session_id LIMIT 161μs1.3KBParams/libraries/src/Session/MetadataManager.php:187Copy
  • INSERT INTO `jto7c_session` (`session_id`,`guest`,`time`,`userid`,`username`,`client_id`) VALUES (:session_id, :guest, :time, :user_id, :username, :client_id)154μs944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `extension_id` AS `id`,`element` AS `option`,`params`,`enabled` FROM `jto7c_extensions` WHERE `type` = 'component' AND `state` = 0 AND `enabled` = 1372μs1.73KB/libraries/src/Component/ComponentHelper.php:399Copy
  • SELECT `id`,`rules` FROM `jto7c_viewlevels`73μs624B/libraries/src/Access/Access.php:955Copy
  • SELECT `b`.`id` FROM `jto7c_usergroups` AS `a` LEFT JOIN `jto7c_usergroups` AS `b` ON `b`.`lft` <= `a`.`lft` AND `b`.`rgt` >= `a`.`rgt` WHERE `a`.`id` = :guest169μs1.31KBParams/libraries/src/Access/Access.php:868Copy
  • SELECT `folder` AS `type`,`element` AS `name`,`params` AS `params`,`extension_id` AS `id` FROM `jto7c_extensions` WHERE `enabled` = 1 AND `type` = 'plugin' AND `state` IN (0,1) AND `access` IN (:preparedArray1) ORDER BY `ordering`794μs3.96KBParams/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 `jto7c_menu` AS `m` LEFT JOIN `jto7c_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`903μs165.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 `jto7c_categories` AS `s` INNER JOIN `jto7c_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`371μs3.88KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `id` FROM `jto7c_content` WHERE `alias` = :alias AND `catid` = :catid214μs1.34KBParams/components/com_content/src/Service/Router.php:263Copy
  • SELECT `template`,`id`,`title`,`params`,`home` FROM `jto7c_template_styles` WHERE `id`='36'95μs768B/libraries/astroid/framework/library/astroid/Template.php:223Copy
  • SELECT * FROM `jto7c_languages` WHERE `published` = 1 ORDER BY `ordering` ASC101μs1.59KB/libraries/src/Language/LanguageHelper.php:142Copy
  • SELECT `id`,`home`,`template`,`s`.`params`,`inheritable`,`parent` FROM `jto7c_template_styles` AS `s` LEFT JOIN `jto7c_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` = 1354μs864B/administrator/components/com_templates/src/Model/StyleModel.php:773Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `jto7c_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,:preparedArray40,:preparedArray41,:preparedArray42)533μs7.56KBParams/libraries/src/Access/Access.php:357Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `jto7c_assets` WHERE `name` LIKE :asset OR `name` = :extension OR `parent_id` = 0534μs29.48KBParams/libraries/src/Access/Access.php:301Copy
  • 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 `jto7c_content` AS `a` INNER JOIN `jto7c_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `jto7c_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `jto7c_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `jto7c_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `jto7c_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)373μs23.42KBParams/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 `jto7c_categories` AS `s` INNER JOIN `jto7c_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) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`381μs3.91KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `m`.`tag_id`,`t`.* FROM `jto7c_contentitem_tag_map` AS `m` INNER JOIN `jto7c_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)667μs3.98KBParams/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 `jto7c_categories` AS `s` INNER JOIN `jto7c_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) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`400μs3.91KBParams/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 jto7c_fields AS a LEFT JOIN `jto7c_languages` AS l ON l.lang_code = a.language LEFT JOIN jto7c_users AS uc ON uc.id=a.checked_out LEFT JOIN jto7c_viewlevels AS ag ON ag.id = a.access LEFT JOIN jto7c_users AS ua ON ua.id = a.created_user_id LEFT JOIN jto7c_fields_groups AS g ON g.id = a.group_id LEFT JOIN `jto7c_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)) AND (`a`.`group_id` = 0 OR `g`.`access` IN (:preparedArray5)) 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 ASC974μs4.72KBParams/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 `jto7c_categories` AS `s` INNER JOIN `jto7c_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) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`437μs3.91KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `params` FROM `jto7c_categories` WHERE `id`=4085μs536B/libraries/astroid/framework/library/astroid/Article.php:677Copy
  • SELECT `m`.`id`,`m`.`title`,`m`.`module`,`m`.`position`,`m`.`content`,`m`.`showtitle`,`m`.`params`,`mm`.`menuid` FROM `jto7c_modules` AS `m` LEFT JOIN `jto7c_modules_menu` AS `mm` ON `mm`.`moduleid` = `m`.`id` LEFT JOIN `jto7c_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)) 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`1.16ms1.94KBParams/libraries/src/Cache/Controller/CallbackController.php:51Copy
  • SELECT `a`.`tag_id`,`a`.`count`,`a`.`title`,`a`.`access`,`a`.`alias`,`a`.`language` FROM ( SELECT MAX(`tag_id`) AS `tag_id`,COUNT(*) AS `count`,MAX(`t`.`title`) AS `title`,MAX(`t`.`access`) AS `access`,MAX(`t`.`alias`) AS `alias`,MAX(`t`.`params`) AS `params`,MAX(`t`.`language`) AS `language` FROM `jto7c_contentitem_tag_map` AS `m` INNER JOIN `jto7c_ucm_content` AS `ucm` ON `m`.`content_item_id` = `ucm`.`core_content_item_id` AND `m`.`type_id` = `ucm`.`core_type_id` INNER JOIN `jto7c_categories` AS `cat` ON `ucm`.`core_catid` = `cat`.`id` INNER JOIN `jto7c_tags` AS `t` ON `tag_id` = `t`.`id` INNER JOIN `jto7c_ucm_content` AS `c` ON `m`.`core_content_id` = `c`.`core_content_id` WHERE `t`.`access` IN (:preparedArray1) AND `t`.`published` = 1 AND `cat`.`published` > 0 AND `m`.`type_alias` = `c`.`core_type_alias` AND `c`.`core_state` = 1 AND (`c`.`core_access` IN (:preparedArray2) OR `c`.`core_access` = 0) AND (`c`.`core_publish_up` IS NULL OR `c`.`core_publish_up` = :nullDate2 OR `c`.`core_publish_up` <= :nowDate2) AND (`c`.`core_publish_down` IS NULL OR `c`.`core_publish_down` = :nullDate3 OR `c`.`core_publish_down` >= :nowDate3) GROUP BY `tag_id`,`t`.`title`,`t`.`access`,`t`.`alias` ORDER BY `count` DESC LIMIT 70) AS `a` ORDER BY `a`.`title` ASC LIMIT 704.29ms2.16KBParams/modules/mod_tags_popular/src/Helper/TagsPopularHelper.php:183Copy
  • SELECT `a`.`tag_id`,`a`.`count`,`a`.`title`,`a`.`access`,`a`.`alias`,`a`.`language` FROM ( SELECT MAX(`tag_id`) AS `tag_id`,COUNT(*) AS `count`,MAX(`t`.`title`) AS `title`,MAX(`t`.`access`) AS `access`,MAX(`t`.`alias`) AS `alias`,MAX(`t`.`params`) AS `params`,MAX(`t`.`language`) AS `language` FROM `jto7c_contentitem_tag_map` AS `m` INNER JOIN `jto7c_ucm_content` AS `ucm` ON `m`.`content_item_id` = `ucm`.`core_content_item_id` AND `m`.`type_id` = `ucm`.`core_type_id` INNER JOIN `jto7c_categories` AS `cat` ON `ucm`.`core_catid` = `cat`.`id` INNER JOIN `jto7c_tags` AS `t` ON `tag_id` = `t`.`id` INNER JOIN `jto7c_ucm_content` AS `c` ON `m`.`core_content_id` = `c`.`core_content_id` WHERE `t`.`access` IN (:preparedArray1) AND `t`.`published` = 1 AND `cat`.`published` > 0 AND `m`.`type_alias` = `c`.`core_type_alias` AND `c`.`core_state` = 1 AND (`c`.`core_access` IN (:preparedArray2) OR `c`.`core_access` = 0) AND (`c`.`core_publish_up` IS NULL OR `c`.`core_publish_up` = :nullDate2 OR `c`.`core_publish_up` <= :nowDate2) AND (`c`.`core_publish_down` IS NULL OR `c`.`core_publish_down` = :nullDate3 OR `c`.`core_publish_down` >= :nowDate3) GROUP BY `tag_id`,`t`.`title`,`t`.`access`,`t`.`alias` ORDER BY `count` DESC LIMIT 70) AS `a` ORDER BY `a`.`title` ASC LIMIT 703.75ms2.16KBParams/modules/mod_tags_popular/src/Helper/TagsPopularHelper.php:183Copy
  • SELECT `alias` FROM `jto7c_content` WHERE `id` = :id133μs1.31KBParams/components/com_content/src/Service/Router.php:168Copy
  • SELECT `alias` FROM `jto7c_content` WHERE `id` = :id110μs1.31KBParams/components/com_content/src/Service/Router.php:168Copy
  • 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 `jto7c_scheduler_tasks` AS `a` WHERE `a`.`state` = 1185μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:466Copy
  • SELECT `session_id` FROM `jto7c_session` WHERE `session_id` = ?229μs1KBParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:291Copy
  • UPDATE `jto7c_session` SET `data` = ? , `time` = ? WHERE `session_id` = ?211μs592BParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:318Copy