Conversation
Comparing date/time segments against the placeholder string 'campaign' (e.g. visitEndServerDate != 'campaign') is rejected by MySQL 8.0 as an invalid DATE value; MySQL 5.7 tolerated it. Give each date/time segment a valid, type-appropriate value instead - a date for DATE() segments and an integer for the HOUR()/MINUTE()/YEAR()/... extractions - so they stay covered and the query runs on MySQL 8.0. The matched result is unchanged (the segment still matches no visits via the impossible deviceType condition).
The workflow inherited the shared action's MySQL 5.7 default, which is below Matomo's new minimum. Pin the database-backed jobs to the supported floor: PluginTests now runs a MySQL 8.0 + MariaDB 10.6 matrix, and the UI job runs on MySQL 8.0.
PluginTests runs a MySQL + MariaDB matrix; the upload-artifacts condition matched both legs and uploaded twice. Restrict the upload to the MySQL leg.
sgiehl
marked this pull request as ready for review
July 20, 2026 11:10
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes the
TwoVisitsWithCustomVariablesSegmentMatchNONEsystem test under MySQL 8.0, and updates the plugin test workflow to run against the new minimum supported database versions.Core PR: matomo-org/matomo#24858
Test fix (MySQL 8.0)
The test built a segment comparing every registered segment to a placeholder value. For date/time segments (e.g.
visitEndServerDate,visitServerHour,visitEndServerYear, …) it used the string'campaign', which MySQL 8.0 rejects as an invalidDATEvalue (SQLSTATE[HY000] 1525); MySQL 5.7 silently tolerated it. Each date/time segment now gets a valid, type-appropriate value (a date forDATE()segments, an integer for theHOUR()/MINUTE()/YEAR()/… extractions). The matched result is unchanged — the segment still matches no visits via the impossibledeviceType==car browsercondition — so the expected output files are untouched.Workflow
Checklist