mirror of
https://github.com/php/php-src.git
synced 2024-09-21 18:07:23 +00:00
- MFH Bug #32223 weird behaviour of pg_last_notice
This commit is contained in:
parent
9e1beb4f1c
commit
ae1d56d098
@ -345,7 +345,7 @@ static void _php_pgsql_notice_handler(void *resource_id, const char *message)
|
||||
if (PGG(log_notices)) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_NOTICE, "%s", notice->message);
|
||||
}
|
||||
zend_hash_index_update(&PGG(notices), *(int *)resource_id, (void **)¬ice, sizeof(php_pgsql_notice *), NULL);
|
||||
zend_hash_index_update(&PGG(notices), (int)resource_id, (void **)¬ice, sizeof(php_pgsql_notice *), NULL);
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
@ -783,7 +783,7 @@ static void php_pgsql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
|
||||
}
|
||||
/* set notice processer */
|
||||
if (! PGG(ignore_notices) && Z_TYPE_P(return_value) == IS_RESOURCE) {
|
||||
PQsetNoticeProcessor(pgsql, _php_pgsql_notice_handler, (void *)&Z_RESVAL_P(return_value));
|
||||
PQsetNoticeProcessor(pgsql, _php_pgsql_notice_handler, (void*)Z_RESVAL_P(return_value));
|
||||
}
|
||||
php_pgsql_set_default_link(Z_LVAL_P(return_value) TSRMLS_CC);
|
||||
|
||||
|
57
ext/pgsql/tests/80_bug32223b.phpt
Executable file
57
ext/pgsql/tests/80_bug32223b.phpt
Executable file
@ -0,0 +1,57 @@
|
||||
--TEST--
|
||||
Bug #32223 (weird behaviour of pg_last_notice using notice)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
require_once('skipif.inc');
|
||||
|
||||
@pg_query($conn, "CREATE LANGUAGE 'plpgsql' HANDLER plpgsql_call_handler LANCOMPILER 'PL/pgSQL'");
|
||||
$res = @pg_query($conn, "CREATE OR REPLACE FUNCTION test_notice() RETURNS boolean AS '
|
||||
begin
|
||||
RAISE NOTICE ''11111'';
|
||||
return ''f'';
|
||||
end;
|
||||
' LANGUAGE plpgsql;");
|
||||
if (!$res) die('skip PLPGSQL not available');
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
require('config.inc');
|
||||
|
||||
define ('dbh', pg_connect($conn_str));
|
||||
//$dbh = @pg_connect($conn_str);
|
||||
if (!dbh) {
|
||||
die ("Could not connect to the server");
|
||||
}
|
||||
|
||||
//@pg_query(dbh, "CREATE LANGUAGE 'plpgsql' HANDLER plpgsql_call_handler LANCOMPILER 'PL/pgSQL'");
|
||||
$res = pg_query(dbh, "CREATE OR REPLACE FUNCTION test_notice() RETURNS boolean AS '
|
||||
begin
|
||||
RAISE NOTICE ''11111'';
|
||||
return ''f'';
|
||||
end;
|
||||
' LANGUAGE plpgsql;");
|
||||
|
||||
function tester() {
|
||||
$res = pg_query(dbh, 'SELECT test_notice()');
|
||||
$row = pg_fetch_row($res, 0);
|
||||
var_dump($row);
|
||||
pg_free_result($res);
|
||||
if ($row[0] == 'f')
|
||||
{
|
||||
var_dump(pg_last_notice(dbh));
|
||||
}
|
||||
}
|
||||
tester();
|
||||
|
||||
pg_close(dbh);
|
||||
|
||||
?>
|
||||
===DONE===
|
||||
--EXPECTF--
|
||||
array(1) {
|
||||
[0]=>
|
||||
string(1) "f"
|
||||
}
|
||||
string(14) "NOTICE: 11111"
|
||||
===DONE===
|
Loading…
Reference in New Issue
Block a user