diff --git a/admin/environment.xml b/admin/environment.xml
index ede697b6721..e596403a79d 100644
--- a/admin/environment.xml
+++ b/admin/environment.xml
@@ -1390,6 +1390,11 @@
+
+
+
+
+
diff --git a/lang/en/admin.php b/lang/en/admin.php
index 423ddda476d..1653a7f0753 100644
--- a/lang/en/admin.php
+++ b/lang/en/admin.php
@@ -1070,6 +1070,7 @@ $string['unlockaccount'] = 'Unlock account';
$string['unsettheme'] = 'Unset theme';
$string['unsupported'] = 'Unsupported';
$string['unsupporteddbstorageengine'] = 'The database storage engine being used is no longer supported.';
+$string['unsupporteddbtablerowformat'] = 'Your database has tables using Antelope as the file format. You are recommended to convert the tables to the Barracuda file format. See the documentation Administration via command line for details of a tool for converting InnoDB tables to Barracuda.';
$string['unsuspenduser'] = 'Activate user account';
$string['updateaccounts'] = 'Update existing accounts';
$string['updatecomponent'] = 'Update component';
diff --git a/lib/upgradelib.php b/lib/upgradelib.php
index 9cd41a018a4..272851a3e0f 100644
--- a/lib/upgradelib.php
+++ b/lib/upgradelib.php
@@ -2245,3 +2245,35 @@ function check_slasharguments(environment_results $result){
return null;
}
+
+/**
+ * This function verifies if the database has tables using innoDB Antelope row format.
+ *
+ * @param environment_results $result
+ * @return environment_results|null updated results object, or null if no Antelope table has been found.
+ */
+function check_database_tables_row_format(environment_results $result) {
+ global $DB;
+
+ if ($DB->get_dbfamily() == 'mysql') {
+ $generator = $DB->get_manager()->generator;
+
+ foreach ($DB->get_tables(false) as $table) {
+ $columns = $DB->get_columns($table, false);
+ $size = $generator->guess_antolope_row_size($columns);
+ $format = $DB->get_row_format($table);
+
+ if ($size <= $generator::ANTELOPE_MAX_ROW_SIZE) {
+ continue;
+ }
+
+ if ($format === 'Compact' or $format === 'Redundant') {
+ $result->setInfo('unsupported_db_table_row_format');
+ $result->setStatus(false);
+ return $result;
+ }
+ }
+ }
+
+ return null;
+}