Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
3.6.6, 3.7.2, 3.8.4, 3.9.1, 3.10
-
MOODLE_310_STABLE, MOODLE_36_STABLE, MOODLE_37_STABLE, MOODLE_38_STABLE, MOODLE_39_STABLE
-
MOODLE_38_STABLE, MOODLE_39_STABLE
-
MDL-67002_39 -
Description
It is necessary to have an installation on an Oracle DB.
1 - Access as a teacher in a course and create a quiz, with at least 1 question.
2 - Access as a student and answer this quiz.
3 - Access as a teacher and go to the "Responses" report screen.
4 - In the table, sort by one of the "question" columns.
The attached error is displayed.
Debug info: ORA-00932: tipos de dato inconsistentes: se esperaba - se ha obtenido CLOB
SELECT *
FROM (SELECT
DISTINCT MOODLELIB.UNDO_MEGA_HACK(MOODLELIB.TRICONCAT(u.id, '#', COALESCE(quiza.attempt, 0))) AS uniqueid,
quiza.uniqueid AS usageid,
quiza.id AS attempt,
u.id AS userid,
u.idnumber, u.firstnamephonetic,u.lastnamephonetic,u.middlename,u.alternatename,u.firstname,u.lastname,
u.picture,
u.imagealt,
u.institution,
u.department,
u.email,
quiza.state,
quiza.sumgrades,
quiza.timefinish,
quiza.timestart,
CASE WHEN quiza.timefinish = 0 THEN null
WHEN quiza.timefinish > quiza.timestart THEN quiza.timefinish - quiza.timestart
ELSE 0 END AS duration,
dbms_lob.substr(qa1.questionsummary, 32,1) AS question1,
qa1.questionsummary AS question1full,
dbms_lob.substr(qa1.rightanswer, 32,1) AS right1,
qa1.rightanswer AS right1full,
dbms_lob.substr(qa1.responsesummary, 32,1) AS response1,
qa1.responsesummary AS response1full
FROM m_user u
LEFT JOIN m_quiz_attempts quiza ON
quiza.userid = u.id AND quiza.quiz = :o_quizid
JOIN m_user_enrolments ej1_ue ON ej1_ue.userid = u.id
JOIN m_enrol ej1_e ON (ej1_e.id = ej1_ue.enrolid AND ej1_e.courseid = :o_ej1_courseid)
LEFT JOIN (
SELECT qa1qa.id AS questionattemptid,
qa1qa.questionusageid,
qa1qa.slot,
qa1qa.behaviour,
qa1qa.questionid,
qa1qa.variant,
qa1qa.maxmark,
qa1qa.minfraction,
qa1qa.maxfraction,
qa1qa.flagged,
qa1qa.questionsummary,
qa1qa.rightanswer,
qa1qa.responsesummary,
qa1qa.timemodified,
qa1qas.id AS attemptstepid,
qa1qas.sequencenumber,
qa1qas.state,
qa1qas.fraction,
qa1qas.timecreated,
qa1qas.userid
FROM m_quiz_attempts qa1quiza
JOIN m_question_attempts qa1qa ON qa1qa.questionusageid = qa1quiza.uniqueid
JOIN m_question_attempt_steps qa1qas ON qa1qas.questionattemptid = qa1qa.id
AND qa1qas.sequencenumber = (
SELECT MAX(sequencenumber)
FROM m_question_attempt_steps
WHERE questionattemptid = qa1qa.id
)
WHERE qa1quiza.quiz = :o_qa1quizid
) qa1 ON qa1.questionusageid = quiza.uniqueid AND qa1.slot = :o_qa1slot
WHERE quiza.preview = 0 AND quiza.id IS NOT NULL AND 1 = 1 AND u.deleted = 0
ORDER BY response1 ASC, firstname ASC, quiza.id ASC)
WHERE rownum <= :o_oracle_num_rows
[array (
'o_quizid' => '7101',
'o_ej1_courseid' => '4582',
'o_qa1quizid' => '7101',
'o_qa1slot' => '1',
'o_oracle_num_rows' => 30,
)]
Error code: dmlreadexception
Stack trace: * line 486 of /lib/dml/moodle_database.php: dml_read_exception thrown
- line 277 of /lib/dml/oci_native_moodle_database.php: call to moodle_database->query_end()
- line 1180 of /lib/dml/oci_native_moodle_database.php: call to oci_native_moodle_database->query_end()
- line 1609 of /lib/tablelib.php: call to oci_native_moodle_database->get_records_sql()
- line 575 of /mod/quiz/report/attemptsreport_table.php: call to table_sql->query_db()
- line 1630 of /lib/tablelib.php: call to quiz_attempts_report_table->query_db()
- line 192 of /mod/quiz/report/responses/report.php: call to table_sql->out()
- line 97 of /mod/quiz/report.php: call to quiz_responses_report->display()