summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Schneider2021-01-26 16:22:23 +0100
committerChristian Schneider2021-01-26 16:22:56 +0100
commit183ee7e7f21a84eb682e8398c41d0b57792756fa (patch)
tree9515bc47d62856e8cfb4c0d5ed1c825c8b886d0b
parent83939b20b156ac0cc192eb0edf9eac8654a07d36 (diff)
downloaditools-183ee7e7f21a84eb682e8398c41d0b57792756fa.tar.gz
itools-183ee7e7f21a84eb682e8398c41d0b57792756fa.tar.bz2
itools-183ee7e7f21a84eb682e8398c41d0b57792756fa.zip
Fix error suppression for safety => 0
-rw-r--r--it_dbi.class2
-rw-r--r--it_dbi_postgres.class5
-rwxr-xr-xtest/it_dbi.t1
3 files changed, 5 insertions, 3 deletions
diff --git a/it_dbi.class b/it_dbi.class
index d8dfa1b..6268105 100644
--- a/it_dbi.class
+++ b/it_dbi.class
@@ -579,7 +579,7 @@ function query($query, $p = array())
if (!($result = $this->_query($query, $p)))
{
- if ($result === null)
+ if ($result === null || !$p['safety'])
return false;
$this->_fatal("query(\"$query\") failed");
}
diff --git a/it_dbi_postgres.class b/it_dbi_postgres.class
index 5caaba9..c26f5fc 100644
--- a/it_dbi_postgres.class
+++ b/it_dbi_postgres.class
@@ -108,7 +108,7 @@ function _query($query, $p)
$query .= ' RETURNING ' . $this->_escape_name($this->_p['keyfield']);
}
- if (!($result = pg_query($this->_link, $query)) && $p['safety'])
+ if (!($result = @pg_query($this->_link, $query)) && $p['safety'])
{
if (($p['safety'] < 2) && it::match('duplicate key value', pg_last_error($this->_link))) # Duplicate entry
return null;
@@ -122,7 +122,8 @@ function _query($query, $p)
}
*/
}
- else
+
+ if ($result)
{
$this->_affectedrows = pg_affected_rows($result);
$this->_insertid = $isinsert ? $this->_fetch_assoc($result)[$this->_p['keyfield']] : 0;
diff --git a/test/it_dbi.t b/test/it_dbi.t
index 7b1c9d7..13708e2 100755
--- a/test/it_dbi.t
+++ b/test/it_dbi.t
@@ -35,6 +35,7 @@ $opts['subclass']::createclass(['table' => "it_dbi_test", 'forcecreate' => true]
$record = new it_dbi_test;
$GLOBALS['it_defaultconfig']['fatal_throws_exception'] = true;
+is($record->query("SYNTAX ERROR", ['safety' => 0]), false, "Suppress failures with safety 0");
try {
is(@$record->select("SYNTAX ERROR"), "Exception", "Syntax triggers exception for fatal_throws_exception mode");
} catch (Exception $e) {