Plan
Plan copied to clipboard
MySQL error with only_full_group_by setting turned on
Describe the issue
Playerbase overview query for Regular player count fails with this mode turned on.
Change causing the issue
https://github.com/plan-player-analytics/Plan/commit/ead1b401bca13cc963d7daf9ac2d8fd12efd1a66#diff-b2f69297a19f63f37649cc101fda914e23a685d65204cb5f11bb8c1274723ce0R125-R131
Exceptions & Other Logs
5feceb66ff - Last occurred: 2022-09-21 Occurrences: 4
---- Context 4 ----
Plan v5.5 build 1953
Paper git-Paper-161 (MC: 1.19.2)
Server v1.19.2-R0.1-SNAPSHOT
Error code: 1140
SELECT COUNT(1) as count, COALESCE(activity_index, 0) as activity_index FROM plan_user_info u LEFT JOIN (SELECT 5.0 - 5.0 * AVG(1.0 / (?/2.0 * (q1.active_playtime*1.0/?) +1.0)) as activity_index,u.id as user_id,u.uuid FROM (SELECT ux.user_id,COALESCE(active_playtime,0) AS active_playtime FROM plan_user_info ux LEFT JOIN (SELECT user_id,SUM(session_end-session_start-afk_time) as active_playtime FROM plan_sessions WHERE server_id=(SELECT plan_servers.id FROM plan_servers WHERE plan_servers.uuid=? LIMIT 1) AND session_end>=? AND session_start<=? GROUP BY user_id) sx on sx.user_id=ux.user_id UNION ALL SELECT ux.user_id,COALESCE(active_playtime,0) AS active_playtime FROM plan_user_info ux LEFT JOIN (SELECT user_id,SUM(session_end-session_start-afk_time) as active_playtime FROM plan_sessions WHERE server_id=(SELECT plan_servers.id FROM plan_servers WHERE plan_servers.uuid=? LIMIT 1) AND session_end>=? AND session_start<=? GROUP BY user_id) sx on sx.user_id=ux.user_id UNION ALL SELECT ux.user_id,COALESCE(active_playtime,0) AS active_playtime FROM plan_user_info ux LEFT JOIN (SELECT user_id,SUM(session_end-session_start-afk_time) as active_playtime FROM plan_sessions WHERE server_id=(SELECT plan_servers.id FROM plan_servers WHERE plan_servers.uuid=? LIMIT 1) AND session_end>=? AND session_start<=? GROUP BY user_id) sx on sx.user_id=ux.user_id) q1 JOIN plan_users u on u.id=q1.user_id GROUP BY q1.user_id) q2 on q2.user_id=u.user_id WHERE u.server_id=(SELECT plan_servers.id FROM plan_servers WHERE plan_servers.uuid=? LIMIT 1) AND u.registered<=? AND activity_index>=? AND activity_index<?
Unknown SQL Error code
---- Context 3 ----
Plan v5.5 build 1953
Paper git-Paper-161 (MC: 1.19.2)
Server v1.19.2-R0.1-SNAPSHOT
Error code: 1140
SELECT COUNT(1) as count, COALESCE(activity_index, 0) as activity_index FROM plan_user_info u LEFT JOIN (SELECT 5.0 - 5.0 * AVG(1.0 / (?/2.0 * (q1.active_playtime*1.0/?) +1.0)) as activity_index,u.id as user_id,u.uuid FROM (SELECT ux.user_id,COALESCE(active_playtime,0) AS active_playtime FROM plan_user_info ux LEFT JOIN (SELECT user_id,SUM(session_end-session_start-afk_time) as active_playtime FROM plan_sessions WHERE server_id=(SELECT plan_servers.id FROM plan_servers WHERE plan_servers.uuid=? LIMIT 1) AND session_end>=? AND session_start<=? GROUP BY user_id) sx on sx.user_id=ux.user_id UNION ALL SELECT ux.user_id,COALESCE(active_playtime,0) AS active_playtime FROM plan_user_info ux LEFT JOIN (SELECT user_id,SUM(session_end-session_start-afk_time) as active_playtime FROM plan_sessions WHERE server_id=(SELECT plan_servers.id FROM plan_servers WHERE plan_servers.uuid=? LIMIT 1) AND session_end>=? AND session_start<=? GROUP BY user_id) sx on sx.user_id=ux.user_id UNION ALL SELECT ux.user_id,COALESCE(active_playtime,0) AS active_playtime FROM plan_user_info ux LEFT JOIN (SELECT user_id,SUM(session_end-session_start-afk_time) as active_playtime FROM plan_sessions WHERE server_id=(SELECT plan_servers.id FROM plan_servers WHERE plan_servers.uuid=? LIMIT 1) AND session_end>=? AND session_start<=? GROUP BY user_id) sx on sx.user_id=ux.user_id) q1 JOIN plan_users u on u.id=q1.user_id GROUP BY q1.user_id) q2 on q2.user_id=u.user_id WHERE u.server_id=(SELECT plan_servers.id FROM plan_servers WHERE plan_servers.uuid=? LIMIT 1) AND u.registered<=? AND activity_index>=? AND activity_index<?
Unknown SQL Error code
---- Context 2 ----
Plan v5.5 build 1953
Paper git-Paper-161 (MC: 1.19.2)
Server v1.19.2-R0.1-SNAPSHOT
Error code: 1140
SELECT COUNT(1) as count, COALESCE(activity_index, 0) as activity_index FROM plan_user_info u LEFT JOIN (SELECT 5.0 - 5.0 * AVG(1.0 / (?/2.0 * (q1.active_playtime*1.0/?) +1.0)) as activity_index,u.id as user_id,u.uuid FROM (SELECT ux.user_id,COALESCE(active_playtime,0) AS active_playtime FROM plan_user_info ux LEFT JOIN (SELECT user_id,SUM(session_end-session_start-afk_time) as active_playtime FROM plan_sessions WHERE server_id=(SELECT plan_servers.id FROM plan_servers WHERE plan_servers.uuid=? LIMIT 1) AND session_end>=? AND session_start<=? GROUP BY user_id) sx on sx.user_id=ux.user_id UNION ALL SELECT ux.user_id,COALESCE(active_playtime,0) AS active_playtime FROM plan_user_info ux LEFT JOIN (SELECT user_id,SUM(session_end-session_start-afk_time) as active_playtime FROM plan_sessions WHERE server_id=(SELECT plan_servers.id FROM plan_servers WHERE plan_servers.uuid=? LIMIT 1) AND session_end>=? AND session_start<=? GROUP BY user_id) sx on sx.user_id=ux.user_id UNION ALL SELECT ux.user_id,COALESCE(active_playtime,0) AS active_playtime FROM plan_user_info ux LEFT JOIN (SELECT user_id,SUM(session_end-session_start-afk_time) as active_playtime FROM plan_sessions WHERE server_id=(SELECT plan_servers.id FROM plan_servers WHERE plan_servers.uuid=? LIMIT 1) AND session_end>=? AND session_start<=? GROUP BY user_id) sx on sx.user_id=ux.user_id) q1 JOIN plan_users u on u.id=q1.user_id GROUP BY q1.user_id) q2 on q2.user_id=u.user_id WHERE u.server_id=(SELECT plan_servers.id FROM plan_servers WHERE plan_servers.uuid=? LIMIT 1) AND u.registered<=? AND activity_index>=? AND activity_index<?
Unknown SQL Error code
---- Context 1 ----
Plan v5.5 build 1953
Paper git-Paper-161 (MC: 1.19.2)
Server v1.19.2-R0.1-SNAPSHOT
Error code: 1140
SELECT COUNT(1) as count, COALESCE(activity_index, 0) as activity_index FROM plan_user_info u LEFT JOIN (SELECT 5.0 - 5.0 * AVG(1.0 / (?/2.0 * (q1.active_playtime*1.0/?) +1.0)) as activity_index,u.id as user_id,u.uuid FROM (SELECT ux.user_id,COALESCE(active_playtime,0) AS active_playtime FROM plan_user_info ux LEFT JOIN (SELECT user_id,SUM(session_end-session_start-afk_time) as active_playtime FROM plan_sessions WHERE server_id=(SELECT plan_servers.id FROM plan_servers WHERE plan_servers.uuid=? LIMIT 1) AND session_end>=? AND session_start<=? GROUP BY user_id) sx on sx.user_id=ux.user_id UNION ALL SELECT ux.user_id,COALESCE(active_playtime,0) AS active_playtime FROM plan_user_info ux LEFT JOIN (SELECT user_id,SUM(session_end-session_start-afk_time) as active_playtime FROM plan_sessions WHERE server_id=(SELECT plan_servers.id FROM plan_servers WHERE plan_servers.uuid=? LIMIT 1) AND session_end>=? AND session_start<=? GROUP BY user_id) sx on sx.user_id=ux.user_id UNION ALL SELECT ux.user_id,COALESCE(active_playtime,0) AS active_playtime FROM plan_user_info ux LEFT JOIN (SELECT user_id,SUM(session_end-session_start-afk_time) as active_playtime FROM plan_sessions WHERE server_id=(SELECT plan_servers.id FROM plan_servers WHERE plan_servers.uuid=? LIMIT 1) AND session_end>=? AND session_start<=? GROUP BY user_id) sx on sx.user_id=ux.user_id) q1 JOIN plan_users u on u.id=q1.user_id GROUP BY q1.user_id) q2 on q2.user_id=u.user_id WHERE u.server_id=(SELECT plan_servers.id FROM plan_servers WHERE plan_servers.uuid=? LIMIT 1) AND u.registered<=? AND activity_index>=? AND activity_index<?
Unknown SQL Error code
---- Stacktrace ----
java.lang.IllegalStateException: com.djrapitops.plan.exceptions.database.DBOpException: SQL Failure: In aggregated query without GROUP BY, expression #2 of SELECT list contains nonaggregated column 'q2.activity_index'; this is incompatible with sql_mode=only_full_group_by
Plan-5.5-build-1953.jar//com.djrapitops.plan.processing.Processing.lambda$submitNonCritical$3(Processing.java:106)
java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
java.base/java.lang.Thread.run(Thread.java:833)
Caused by:
com.djrapitops.plan.exceptions.database.DBOpException: SQL Failure: In aggregated query without GROUP BY, expression #2 of SELECT list contains nonaggregated column 'q2.activity_index'; this is incompatible with sql_mode=only_full_group_by
Plan-5.5-build-1953.jar//com.djrapitops.plan.exceptions.database.DBOpException.forCause(DBOpException.java:152)
Plan-5.5-build-1953.jar//com.djrapitops.plan.storage.database.queries.QueryStatement.executeWithConnection(QueryStatement.java:64)
Plan-5.5-build-1953.jar//com.djrapitops.plan.storage.database.queries.QueryStatement.executeQuery(QueryStatement.java:52)
Plan-5.5-build-1953.jar//com.djrapitops.plan.storage.database.SQLDB.query(SQLDB.java:325)
Plan-5.5-build-1953.jar//com.djrapitops.plan.delivery.rendering.json.PlayerBaseOverviewJSONCreator.createTrendsMap(PlayerBaseOverviewJSONCreator.java:86)
Plan-5.5-build-1953.jar//com.djrapitops.plan.delivery.rendering.json.PlayerBaseOverviewJSONCreator.createJSONAsMap(PlayerBaseOverviewJSONCreator.java:66)
Plan-5.5-build-1953.jar//com.djrapitops.plan.delivery.rendering.json.PlayerBaseOverviewJSONCreator.createJSONAsMap(PlayerBaseOverviewJSONCreator.java:42)
Plan-5.5-build-1953.jar//com.djrapitops.plan.delivery.rendering.json.ServerTabJSONCreator.apply(ServerTabJSONCreator.java:34)
Plan-5.5-build-1953.jar//com.djrapitops.plan.delivery.rendering.json.ServerTabJSONCreator.apply(ServerTabJSONCreator.java:28)
Plan-5.5-build-1953.jar//com.djrapitops.plan.delivery.webserver.cache.AsyncJSONResolverService.lambda$resolve$0(AsyncJSONResolverService.java:69)
Plan-5.5-build-1953.jar//com.djrapitops.plan.delivery.webserver.cache.AsyncJSONResolverService.lambda$submitToProcessing$2(AsyncJSONResolverService.java:151)
Plan-5.5-build-1953.jar//com.djrapitops.plan.processing.Processing.lambda$submitNonCritical$3(Processing.java:104)
java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
java.base/java.lang.Thread.run(Thread.java:833)
Caused by:
java.sql.SQLSyntaxErrorException: In aggregated query without GROUP BY, expression #2 of SELECT list contains nonaggregated column 'q2.activity_index'; this is incompatible with sql_mode=only_full_group_by
com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916)
com.mysql.cj.jdbc.ClientPreparedStatement.executeQuery(ClientPreparedStatement.java:972)
Plan-5.5-build-1953.jar//plan.com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52)
Plan-5.5-build-1953.jar//plan.com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java)
Plan-5.5-build-1953.jar//com.djrapitops.plan.storage.database.queries.QueryStatement.executeQuery(QueryStatement.java:72)
Plan-5.5-build-1953.jar//com.djrapitops.plan.storage.database.queries.QueryStatement.executeWithConnection(QueryStatement.java:62)
Plan-5.5-build-1953.jar//com.djrapitops.plan.storage.database.queries.QueryStatement.executeQuery(QueryStatement.java:52)
Plan-5.5-build-1953.jar//com.djrapitops.plan.storage.database.SQLDB.query(SQLDB.java:325)
Plan-5.5-build-1953.jar//com.djrapitops.plan.delivery.rendering.json.PlayerBaseOverviewJSONCreator.createTrendsMap(PlayerBaseOverviewJSONCreator.java:86)
Plan-5.5-build-1953.jar//com.djrapitops.plan.delivery.rendering.json.PlayerBaseOverviewJSONCreator.createJSONAsMap(PlayerBaseOverviewJSONCreator.java:66)
Plan-5.5-build-1953.jar//com.djrapitops.plan.delivery.rendering.json.PlayerBaseOverviewJSONCreator.createJSONAsMap(PlayerBaseOverviewJSONCreator.java:42)
Plan-5.5-build-1953.jar//com.djrapitops.plan.delivery.rendering.json.ServerTabJSONCreator.apply(ServerTabJSONCreator.java:34)
Plan-5.5-build-1953.jar//com.djrapitops.plan.delivery.rendering.json.ServerTabJSONCreator.apply(ServerTabJSONCreator.java:28)
Plan-5.5-build-1953.jar//com.djrapitops.plan.delivery.webserver.cache.AsyncJSONResolverService.lambda$resolve$0(AsyncJSONResolverService.java:69)
Plan-5.5-build-1953.jar//com.djrapitops.plan.delivery.webserver.cache.AsyncJSONResolverService.lambda$submitToProcessing$2(AsyncJSONResolverService.java:151)
Plan-5.5-build-1953.jar//com.djrapitops.plan.processing.Processing.lambda$submitNonCritical$3(Processing.java:104)
java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
java.base/java.lang.Thread.run(Thread.java:833)
Plugin versions
5.5 build 1953
Additional information
Temporary fix is to turn off only_full_group_by - and reverse is easy way to reproduce the issue (I hope)
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','')