dml_write_exception inside a delegated transaction with DB logging enabled

Re: dml_write_exception inside a delegated transaction with DB logging enabled

per David Mudrák -
Nombre de respostes: 0
Imatge Core developers Imatge Documentation writers Imatge Moodle HQ Imatge Particularly helpful Moodlers Imatge Peer reviewers Imatge Plugin developers Imatge Plugins guardians Imatge Testers Imatge Translators

This is the patch I have applied to get more debugging info:

diff --git a/lib/dml/pgsql_native_moodle_database.php b/lib/dml/pgsql_native_moodle_database.php
index 97d94905ff..aca91ea529 100644
--- a/lib/dml/pgsql_native_moodle_database.php
+++ b/lib/dml/pgsql_native_moodle_database.php
@@ -966,6 +966,9 @@ class pgsql_native_moodle_database extends moodle_database {
         $sql = "INSERT INTO {$this->prefix}$table ($fields) VALUES($values) $returning";
         $this->query_start($sql, $params, SQL_QUERY_INSERT);
         $result = pg_query_params($this->pgsql, $sql, $params);
+        if (!$result) {
+            debugging($this->get_last_error(), DEBUG_DEVELOPER);
+        }
         $this->query_end($result);

         if ($returning !== "") {

With it, my upserting code throws an error (which is expected) followed by another error by the query_log() call:

++ ERROR:  duplicate key value violates unique constraint "mdl_amossnap_comlanbrastr2_uix"
DETAIL:  Key (component, lang, branch, stringid)=(tool_wp, en, 3700, loading) already exists. ++
* line 970 of /lib/dml/pgsql_native_moodle_database.php: call to debugging()
* line 1020 of /lib/dml/pgsql_native_moodle_database.php: call to pgsql_native_moodle_database->insert_record_raw()
* line 1014 of /local/amos/mlanglib.php: call to pgsql_native_moodle_database->insert_record()
* line 126 of /local/amos/cli/import-strings.php: call to mlang_stage->commit()
++ ERROR:  current transaction is aborted, commands ignored until end of transaction block ++
* line 970 of /lib/dml/pgsql_native_moodle_database.php: call to debugging()
* line 1020 of /lib/dml/pgsql_native_moodle_database.php: call to pgsql_native_moodle_database->insert_record_raw()
* line 538 of /lib/dml/moodle_database.php: call to pgsql_native_moodle_database->insert_record()
* line 481 of /lib/dml/moodle_database.php: call to moodle_database->query_log()
* line 248 of /lib/dml/pgsql_native_moodle_database.php: call to moodle_database->query_end()
* line 972 of /lib/dml/pgsql_native_moodle_database.php: call to pgsql_native_moodle_database->query_end()
* line 1020 of /lib/dml/pgsql_native_moodle_database.php: call to pgsql_native_moodle_database->insert_record_raw()
* line 1014 of /local/amos/mlanglib.php: call to pgsql_native_moodle_database->insert_record()
* line 126 of /local/amos/cli/import-strings.php: call to mlang_stage->commit()
PHP Warning:  pg_fetch_assoc() expects parameter 1 to be resource, boolean given in /opt/app/lib/dml/pgsql_native_moodle_database.php on line 975