From 5c6e67d189a9023db9ff265406c90153f9f6b7bd Mon Sep 17 00:00:00 2001 From: Florian Langer Date: Wed, 22 Jul 2026 17:33:56 +0200 Subject: [PATCH] [BUGFIX] Qualify referrer column in referrer-domain queries The Sources analysis (LuxAnalysis/Analysis/sources) builds a subquery in getIdentifiedVisitorsPerReferrerSql() that joins tx_lux_domain_model_pagevisit with tx_lux_domain_model_visitor but references `referrer` unqualified in the SELECT expression. When the visitor table still carries a legacy `referrer` column (left over from older LUX versions, since schema migrations never drop obsolete columns), MySQL raises #1052 "Column 'referrer' in SELECT is ambiguous" and the whole module crashes. Qualify the column with the `pv.` alias in both referrer-domain query builders so it always resolves to tx_lux_domain_model_pagevisit regardless of legacy columns on joined tables. --- Classes/Domain/Repository/PagevisitRepository.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Classes/Domain/Repository/PagevisitRepository.php b/Classes/Domain/Repository/PagevisitRepository.php index 0aa8688d..3b973380 100644 --- a/Classes/Domain/Repository/PagevisitRepository.php +++ b/Classes/Domain/Repository/PagevisitRepository.php @@ -414,11 +414,11 @@ protected function getPageVisitsPerReferrerSql(FilterDto $filter): string { /** @var SiteService $siteService */ $siteService = GeneralUtility::makeInstance(SiteService::class); - $sql = 'SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(referrer, \'://\', -1), \'/\', 1) as referrer_domain, COUNT(*) as total_pagevisits'; + $sql = 'SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(pv.referrer, \'://\', -1), \'/\', 1) as referrer_domain, COUNT(*) as total_pagevisits'; $sql .= ' FROM ' . Pagevisit::TABLE_NAME . ' pv'; $sql .= ' WHERE pv.deleted = 0 and pv.hidden = 0'; $sql .= ' AND pv.referrer != \'\''; - $sql .= ' AND referrer NOT REGEXP "' . $siteService->getAllDomainsForWhereClause() . '"'; + $sql .= ' AND pv.referrer NOT REGEXP "' . $siteService->getAllDomainsForWhereClause() . '"'; $sql .= $this->extendWhereClauseWithFilterSearchterms($filter, 'pv', 'referrer'); $sql .= $this->extendWhereClauseWithFilterTime($filter, true, 'pv'); $sql .= $this->extendWhereClauseWithFilterSite($filter); @@ -429,7 +429,7 @@ protected function getPageVisitsPerReferrerSql(FilterDto $filter): string protected function getIdentifiedVisitorsPerReferrerSql(FilterDto $filter): string { - $sql = 'SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(referrer, \'://\', -1), \'/\', 1) as referrer_domain, COUNT(DISTINCT pv.visitor) as identified_visitor_count'; + $sql = 'SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(pv.referrer, \'://\', -1), \'/\', 1) as referrer_domain, COUNT(DISTINCT pv.visitor) as identified_visitor_count'; $sql .= ' FROM ' . Pagevisit::TABLE_NAME . ' pv'; $sql .= ' INNER JOIN ' . Visitor::TABLE_NAME . ' v ON pv.visitor=v.uid AND v.identified=1 AND v.hidden=0 AND v.deleted=0'; $sql .= ' WHERE pv.deleted = 0 and pv.hidden = 0 AND pv.referrer != \'\'';