diff --git a/psalm.xml.dist b/psalm.xml.dist
index 0cd64623472..6591e47a5cc 100644
--- a/psalm.xml.dist
+++ b/psalm.xml.dist
@@ -655,10 +655,12 @@
+
+
diff --git a/src/Driver/PgSQL/Connection.php b/src/Driver/PgSQL/Connection.php
index c6e170b5dde..703e327c7c5 100644
--- a/src/Driver/PgSQL/Connection.php
+++ b/src/Driver/PgSQL/Connection.php
@@ -17,8 +17,10 @@
use function pg_escape_bytea;
use function pg_escape_literal;
use function pg_get_result;
+use function pg_last_error;
use function pg_result_error;
use function pg_send_prepare;
+use function pg_send_query;
use function pg_version;
use function sprintf;
use function uniqid;
@@ -67,7 +69,18 @@ public function prepare(string $sql): Statement
public function query(string $sql): Result
{
- return $this->prepare($sql)->execute();
+ if (@pg_send_query($this->connection, $sql) !== true) {
+ throw new Exception(pg_last_error($this->connection));
+ }
+
+ $result = @pg_get_result($this->connection);
+ assert($result !== false);
+
+ if ((bool) pg_result_error($result)) {
+ throw Exception::fromResult($result);
+ }
+
+ return new Result($result);
}
/** {@inheritdoc} */
@@ -82,7 +95,7 @@ public function quote($value, $type = ParameterType::STRING)
public function exec(string $sql): int
{
- return $this->prepare($sql)->execute()->rowCount();
+ return $this->query($sql)->rowCount();
}
/** {@inheritdoc} */