From 3894fa94603f660bb055594dbc43ea41cb954b0e Mon Sep 17 00:00:00 2001 From: Paul Holden Date: Thu, 18 May 2023 11:37:37 +0100 Subject: [PATCH] MDL-76900 roles: improve Oracle support for entity description column. Specifically during column grouping/aggregation, we need to avoid CLOB datatype inconsistencies (ORA-00932). --- .../roles/classes/reportbuilder/local/entities/role.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/admin/roles/classes/reportbuilder/local/entities/role.php b/admin/roles/classes/reportbuilder/local/entities/role.php index ecc607eddb8..125ec87dd8c 100644 --- a/admin/roles/classes/reportbuilder/local/entities/role.php +++ b/admin/roles/classes/reportbuilder/local/entities/role.php @@ -82,6 +82,8 @@ class role extends base { * @return column[] */ protected function get_all_columns(): array { + global $DB; + $contextalias = $this->get_table_alias('context'); $rolealias = $this->get_table_alias('role'); @@ -119,6 +121,10 @@ class role extends base { ->set_is_sortable(true); // Description column. + $descriptionfieldsql = "{$rolealias}.description"; + if ($DB->get_dbfamily() === 'oracle') { + $descriptionfieldsql = $DB->sql_order_by_text($descriptionfieldsql, 1024); + } $columns[] = (new column( 'description', new lang_string('description'), @@ -126,7 +132,8 @@ class role extends base { )) ->add_joins($this->get_joins()) ->set_type(column::TYPE_LONGTEXT) - ->add_fields("{$rolealias}.description, {$rolealias}.shortname") + ->add_field($descriptionfieldsql, 'description') + ->add_field("{$rolealias}.shortname") ->set_callback(static function($description, stdClass $role): string { if ($description === null) { return ''; -- 2.43.0