Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

completion settings cause database read error #99

Open
thebenkahn opened this issue Jun 9, 2023 · 0 comments
Open

completion settings cause database read error #99

thebenkahn opened this issue Jun 9, 2023 · 0 comments

Comments

@thebenkahn
Copy link

Hello,
I have found that using the completion settings for mod ouwiki can cause a DML read error due to the formatting of one of the queries used in the plugin.

Version tested: 3_11 branch (2020050501)
Moodle version: 3.11.11+ (Build: 20221216)
Replication steps:
In an empty course, add a new OU Wiki activity
Under Activity Completion, set "Show activity as complete when conditions are met" and tick the "User must create new pages" box
Save the OU Wiki activity and view the course page

Error with developer debugging

Error reading from database

[More information about this error](https://docs.moodle.org/311/en/error/moodle/dmlreadexception)

Debug info: execute command denied to user 'moodledude'@'localhost' for routine 'evilcorp.MIN'
SELECT COUNT(1)
FROM mdl_ouwiki_versions v
INNER JOIN mdl_ouwiki_pages p ON p.id = v.pageid
INNER JOIN mdl_ouwiki_subwikis s ON s.id = p.subwikiid
WHERE v.userid = ? AND v.deletedat IS NULL AND s.wikiid = ? AND (SELECT MIN (id)
FROM mdl_ouwiki_versions
WHERE pageid = p.id AND deletedat IS NULL) = v.id
[array (
0 => 2,
1 => '1',
)]
Error code: dmlreadexception×Dismiss this notification
Stack trace:
line 486 of /lib/dml/moodle_database.php: dml_read_exception thrown
line 293 of /lib/dml/moodle_read_slave_trait.php: call to moodle_database->query_end()
line 1273 of /lib/dml/mysqli_native_moodle_database.php: call to mysqli_native_moodle_database->query_end()
line 1671 of /lib/dml/moodle_database.php: call to mysqli_native_moodle_database->get_records_sql()
line 1744 of /lib/dml/moodle_database.php: call to moodle_database->get_record_sql()
line 4061 of /mod/ouwiki/locallib.php: call to moodle_database->get_field_sql()
line 43 of /mod/ouwiki/classes/completion/custom_completion.php: call to ouwiki_get_completion_state_lib()
line 1177 of /lib/completionlib.php: call to mod_ouwiki\completion\custom_completion->get_state()
line 1047 of /lib/completionlib.php: call to completion_info->get_other_cm_completion_data()
line 70 of /completion/classes/cm_completion_details.php: call to completion_info->get_data()
line 275 of /completion/classes/cm_completion_details.php: call to core_completion\cm_completion_details->__construct()
line 947 of /course/renderer.php: call to core_completion\cm_completion_details::get_instance()
line 836 of /course/renderer.php: call to core_course_renderer->course_section_cm()
line 1051 of /course/renderer.php: call to core_course_renderer->course_section_cm_list_item()
line 885 of /course/format/renderer.php: call to core_course_renderer->course_section_cm_list()
line 57 of /course/format/topics/format.php: call to format_section_renderer_base->print_multiple_section_page()
line 278 of /course/view.php: call to require()

It looks to me that there is an unneeded space in the "SELECT MIN (id)" portion of the SQL that is incompatible with default MySQL/MariaDB, unless the "IGNORE_SPACE" variable is enabled.

I can replicate the error running the query directly in the MySQL console.

As a note, I tried enabling IGNORE_SPACE on my MySQL server and that allowed me to run the query directly from the MySQL console. However I still get the same error in Moodle, though I am not sure why. In any case I think the space is not needed and enabling the white space variable could cause other issues with reserved words.

problem setting:
Snag_232943ca

full page error
Snag_2329ce57

ignore space off, get the error
Snag_2329f78a

ignore space on, error resolved
Snag_232a0a66

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

No branches or pull requests

1 participant