PEAR is discontinued

This is a static archive preserving historical releases and metadata. No new packages or updates will be published. For updates to existing packages, or to publish new packages, please use Composer and Packagist.

Home » Database » DB » Bug #8561

Call to SP with Parameter "x into y" Causes Errenoneous Result

Details

Submitted2006-08-25 18:44 UTC
Frommankod04 at alum dot rpi dot edu
StatusDuplicate
PackageDB
PHP Version5.1.4
OSLinux (gentoo)
Roadmaps(Not assigned)

Comments

[2006-08-25 18:44 UTC] mankod04 at alum dot rpi dot edu

Description:
------------
I am running PostgreSQL 8.0.8. I have a stored procedures which takes several arguments (9), inserts the data into one or more tables according to some rules, and then returns the value from a PostgreSQL sequence of one of the tables.

I have this sp run several times in a foreach loop. On one particular run, it successfully executes the sp 10 times, but the return value from the 10th run, instead of being a result object, is simply the number 1. The query itself appears to have run successfully - the table has 10 new rows in it.

On some data sets it runs just fine. There is only one data set where this behavior is exhibited and I am wholly unsure as to why.

Below is a summary of the offending lines of code with the bad data.

note: Data comes from flickr

Test script:
---------------
$sql = 'SELECT register_tile( ? , ? , ? , ? , ? , ? , ? , ? , ? );';
$register_tile_stmt = $pear_db->prepare($sql);

//...

$tile[0] = mt_rand(100000, 100000000);
$tile[1] = 'Nautilus';
$tile[2] = "The chambered or pearly nautilus is a member of the cephalopod class of the mollusks. The nautilus is a "living fossil" whose close relatives date back 100's of millions of years into geologic history. The two living species of Nautilus live at great depths (~600 meters) within fore-reef habitats of the Indian and Pacific oceans. This one, sawed in half to show its chambers (used for regulating density), is from the waters of the Philippines.";
$tile[3] = 117731641;
$tile[4] = 'b084a38eaa';
$tile[5] = 39;
$tile[6] = '32543267@N00';
$tile[7] = 'Attribution License';
$tile[8] = 'NULL';

$result =& $pear_db->execute($register_tile_stmt, array( $tile[0], $tile[1], $tile[2], $tile[3], $tile[4], $tile[5], $tile[6], $tile[7], $tile[8] ))

if (PEAR::isError($result))
continue;

if (!is_object($result))
echo $result; //this should never be run!

$result->fetchInto($row);

//...

Expected result:
----------------
The above chunk of code *shouldn't* output anything.

Actual result:
--------------
Outputs '1';

[2006-08-25 18:47 UTC] mankod04 at alum dot rpi dot edu

updated summary to better reflect problem.

[2006-08-25 19:11 UTC] mankod04 at alum dot rpi dot edu

I've whittled it down and figured out the root of the problem. When $tile[2] equals "y into g" (or just "word1 into word 2"), $pear_db->query() returns 1. This is most certainly a bug no?