[drupal-devel] [bug] pgsql _db_query() shows each query error twice
Cvbge
drupal-devel at drupal.org
Tue Aug 16 18:12:44 UTC 2005
Issue status update for
http://drupal.org/node/19942
Post a follow up:
http://drupal.org/project/comments/add/19942
Project: Drupal
Version: cvs
Component: database system
Category: bug reports
Priority: normal
Assigned to: Anonymous
Reported by: danielc
Updated by: Cvbge
Status: patch (code needs review)
To test this I've created simple block:
<?php
echo "This is a test";
db_query("HELLO WORLD");
?>
When the block was displayed the error was logged and displayed too:
warning: pg_query(): Query failed: ERROR: syntax error at or near
"HELLO" at character 1 in ..../includes/database.pgsql.inc on line 45.
user error:
query: HELLO WORLD in ..../includes/database.pgsql.inc on line 62.
But prefixing pg_query() with @ didn't change anything, the error was
still displayed on the page.
Cvbge
Previous comments:
------------------------------------------------------------------------
Mon, 04 Apr 2005 04:27:36 +0000 : danielc
Attachment: http://drupal.org/files/issues/database.silence.query.diff (1.2 KB)
In _db_query(), when a query error happens, the error messages are
displayed twice. First at the point of the pg_query()/mysql_query()
call and then at the track_errors() call. Since there is an error
handling/reporting process in place, the query calls should suppress
error output by placing @'s in front of them. The attached patch does
that for both the database.mysql.inc and database.pgsql.inc files.
------------------------------------------------------------------------
Fri, 08 Apr 2005 00:43:06 +0000 : danielc
Can this please be applied to 4-6 and HEAD?
------------------------------------------------------------------------
Fri, 08 Apr 2005 11:41:09 +0000 : Dries
How can we reproduce this? No matter what I do, I only see each error
reported once.
(We try to avoid the use of @ to surpress errors.)
------------------------------------------------------------------------
Fri, 08 Apr 2005 13:36:37 +0000 : danielc
Ah! It's just happening with PostgreSQL. I noticed it there and
assumed the same issue existed with MySQL. Sorry for the confusion.
Please commit to database.pgsql.inc only.
------------------------------------------------------------------------
Sat, 23 Apr 2005 14:35:12 +0000 : danielc
Add "pgsql" to title.
Test script:
------------------------------------------------------------------------
Sat, 23 Apr 2005 14:37:39 +0000 : danielc
The test script got ripped out. Perhaps because I used an opening PHP
tag w/o a closing one. Let's try again:
<?php
// so we don't need to include bootstrap
function variable_get($name, $default) {
return $default;
}
ini_set('include_path', 'd:/webroot/drupal/includes');
require_once 'database.pgsql.inc';
$db_url = 'pgsql://dropper:ak17q8l10@localhost/drupal';
$active_db = db_connect($db_url);
_db_query('a REALLY bad query');
?>
------------------------------------------------------------------------
Mon, 25 Apr 2005 18:02:53 +0000 : Dries
We're not fond of using '@'. I'll await feedback from Adrian, who
maintains the PostgreSQL port. He might be able to suggest an
alternative/better fix.
------------------------------------------------------------------------
Mon, 25 Apr 2005 18:40:55 +0000 : danielc
Judicious use of @ is important. For example, they're a bad idea when
including files. At the same time, there is no downside to suppressing
error messages for function calls when failures of the given function
are handled -- which they are in this case.
More information about the drupal-devel
mailing list