Skip to content

[BUGFIX] Qualify referrer column in referrer-domain queries#76

Merged
einpraegsam merged 1 commit into
developfrom
bugfix/ambiguous-referrer-column-in-sources-analysis
Jul 22, 2026
Merged

[BUGFIX] Qualify referrer column in referrer-domain queries#76
einpraegsam merged 1 commit into
developfrom
bugfix/ambiguous-referrer-column-in-sources-analysis

Conversation

@flolanger

@flolanger flolanger commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

[Claude Code]

Problem

Das Sources-Analysemodul (LuxAnalysis/Analysis/sources) stürzt mit folgendem Fehler ab:

#1052 An exception occurred while executing a query: Column 'referrer' in SELECT is ambiguous

Der Fehler tritt auf, sobald die Tabelle tx_lux_domain_model_visitor noch eine alte referrer-Spalte enthält (Überbleibsel aus älteren LUX-Versionen — Schema-Migrationen entfernen veraltete Spalten nie automatisch).

Ursache

getIdentifiedVisitorsPerReferrerSql() verknüpft tx_lux_domain_model_pagevisit per INNER JOIN mit tx_lux_domain_model_visitor, referenziert referrer im SELECT aber unqualifiziert:

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(referrer, '://', -1), '/', 1) AS referrer_domain, ...
FROM tx_lux_domain_model_pagevisit pv
INNER JOIN tx_lux_domain_model_visitor v ON pv.visitor = v.uid AND ...

Haben beide Tabellen eine referrer-Spalte, kann MySQL die Spalte nicht mehr eindeutig auflösen und das gesamte Modul bricht ab.

Fix

Die Spalte wird in beiden Referrer-Domain-Queries mit dem Alias pv. qualifiziert, sodass sie unabhängig von veralteten Spalten auf verknüpften Tabellen immer auf tx_lux_domain_model_pagevisit verweist.

Geändert in Classes/Domain/Repository/PagevisitRepository.php (3 Zeilen):

  • getIdentifiedVisitorsPerReferrerSql() — SUBSTRING_INDEX(referrer, …) → SUBSTRING_INDEX(pv.referrer, …) (der eigentliche Absturz, JOIN pagevisit ↔ visitor)
  • getPageVisitsPerReferrerSql() — SELECT-Ausdruck und NOT REGEXP-Klausel ebenfalls auf pv.referrer (Konsistenz/Absicherung; dort kein JOIN, daher heute kein Absturz)

Test

  • PHP-Lint fehlerfrei
  • Die zuvor fehlschlagende Query läuft nach dem Fix ohne Ambiguitätsfehler durch

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.
@einpraegsam
einpraegsam merged commit 19d8ba8 into develop Jul 22, 2026
17 checks passed
@einpraegsam

Copy link
Copy Markdown
Contributor

Thx for digging into that issue

@einpraegsam
einpraegsam deleted the bugfix/ambiguous-referrer-column-in-sources-analysis branch July 22, 2026 17:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants