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.