Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dao/hibernate/GradebookDAO.java =================================================================== diff -u -r59b1d6a4b7b6a652692806943c8dec52df01e455 -r1577a6a33d31161c0eddd4afe2c37e70ce79d88a --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dao/hibernate/GradebookDAO.java (.../GradebookDAO.java) (revision 59b1d6a4b7b6a652692806943c8dec52df01e455) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dao/hibernate/GradebookDAO.java (.../GradebookDAO.java) (revision 1577a6a33d31161c0eddd4afe2c37e70ce79d88a) @@ -289,7 +289,7 @@ + "WHERE lesson.learningDesign.learningDesignId = ld.learningDesignId AND ld.copyTypeID != 3 " + "AND lesson.organisation.organisationId = lo.organisationId " + "AND (lo.organisationId = :orgId OR lo.parentOrganisation.organisationId = :orgId) " - + "AND lesson.lessonStateId != 7 AND lesson.lessonName LIKE CONCAT('%', :searchString, '%') {1} " + + "AND lesson.lessonStateId != 7 {1} {2} " + "ORDER BY CASE WHEN :sortBy='rowName' THEN lesson.lessonName " + "WHEN :sortBy='startDate' THEN lesson.startDateTime END " + sortOrder; @@ -299,7 +299,7 @@ + "WHERE lesson.learningDesign.learningDesignId = ld.learningDesignId AND ld.copyTypeID != 3 " + "AND lesson.organisation.organisationId = lo.organisationId " + "AND (lo.organisationId = :orgId OR lo.parentOrganisation.organisationId = :orgId) " - + "AND lesson.lessonStateId != 7 AND lesson.lessonName LIKE CONCAT('%', :searchString, '%') {1} " + + "AND lesson.lessonStateId != 7 {1} {2} " + "GROUP BY lesson ORDER BY AVG(TIMEDIFF(progress.finishDate,progress.startDate)) " + sortOrder; //when :sortBy='avgMark' @@ -308,13 +308,13 @@ + "WHERE lesson.learningDesign.learningDesignId = ld.learningDesignId AND ld.copyTypeID != 3 " + "AND lesson.organisation.organisationId = lo.organisationId " + "AND (lo.organisationId = :orgId OR lo.parentOrganisation.organisationId = :orgId) " - + "AND lesson.lessonStateId != 7 AND lesson.lessonName LIKE CONCAT('%', :searchString, '%') {1} " - + "GROUP BY lesson ORDER BY AVG(IFNULL(gles.mark, -1)) " + sortOrder; + + "AND lesson.lessonStateId != 7 {1} {2} " + "GROUP BY lesson ORDER BY AVG(IFNULL(gles.mark, -1)) " + + sortOrder; - final String CONDITION_IF_ANY_USER_PROVIDED = "AND lesson.lessonClass.groupingId = g.grouping.groupingId " - + "AND ug.group.groupId = g.groupId AND ug.user.userId = :userId"; + final String CONDITION_IF_ANY_USER_PROVIDED = " AND lesson.lessonClass.groupingId = g.grouping.groupingId " + + "AND ug.group.groupId = g.groupId AND ug.user.userId = :userId "; - final String CONDITION_IF_STAFF_PROVIDED = "AND ug.group.groupId = lesson.lessonClass.staffGroup.groupId AND ug.user.userId = :userId"; + final String CONDITION_IF_STAFF_PROVIDED = " AND ug.group.groupId = lesson.lessonClass.staffGroup.groupId AND ug.user.userId = :userId "; String queryString; if (sortBy.equals("avgTimeTaken")) { @@ -325,8 +325,10 @@ queryString = LOAD_LESSONS_ORDERED_BY_FIELDS; } - queryString = queryString.replace("{0}", userId == null ? "" : "Group g, GroupUser ug,"); + queryString = queryString.replace("{0}", userId == null ? "" : " Group g, GroupUser ug, "); queryString = queryString.replace("{1}", + searchString == null ? "" : " AND lesson.lessonName LIKE CONCAT('%', :searchString, '%') "); + queryString = queryString.replace("{2}", userId == null ? "" : staffOnly ? CONDITION_IF_STAFF_PROVIDED : CONDITION_IF_ANY_USER_PROVIDED); Query query = getSession().createQuery(queryString, Lesson.class); @@ -337,9 +339,10 @@ if (!sortBy.equals("avgTimeTaken") && !sortBy.equals("avgMark")) { query.setParameter("sortBy", sortBy); } - // support for custom search from a toolbar - searchString = searchString == null ? "" : searchString; - query.setParameter("searchString", searchString); + if (searchString != null) { + // support for custom search from a toolbar + query.setParameter("searchString", searchString); + } query.setFirstResult(page * size); query.setMaxResults(size); return query.list(); Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dbupdates/patch20191016.sql =================================================================== diff -u --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dbupdates/patch20191016.sql (revision 0) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dbupdates/patch20191016.sql (revision 1577a6a33d31161c0eddd4afe2c37e70ce79d88a) @@ -0,0 +1,16 @@ +-- Turn off autocommit, so nothing is committed if there is an error +SET AUTOCOMMIT = 0; +SET FOREIGN_KEY_CHECKS=0; +----------------------Put all sql statements below here------------------------- + +-- LDEV-4813 Add missing indexes to speed up queries + ALTER TABLE tl_laasse10_assessment_result ADD INDEX (latest); + + ALTER TABLE tl_laasse10_option_answer ADD INDEX (answer_boolean); + +----------------------Put all sql statements above here------------------------- + +-- If there were no errors, commit and restore autocommit to on +COMMIT; +SET AUTOCOMMIT = 1; +SET FOREIGN_KEY_CHECKS=1; \ No newline at end of file