#34920 [NEW]: pg_update fails

2005-10-19 Thread n dot j dot saunders at gmail dot com
From: n dot j dot saunders at gmail dot com
Operating system: Windows XP
PHP version:  5.0.5
PHP Bug Type: PostgreSQL related
Bug description:  pg_update fails

Description:

pg_update seems to fail when updating an columns of a user defined
domain.

I have inherited table (advertisers) that contains, among others, the
columns telephone_country (integer), telephone_area (area domain),
telephone_number (number domain).

pg_update succeeds when VARCHAR fields are updated, but seems to fail
without error when fields of user defined domains are updated from the
array 

Reproduce code:
---
1. Define a Domain in an existing postgres database

e.g: area_code, domain with check

CREATE DOMAIN public.area_code AS
  varchar(10) NULL;

ALTER DOMAIN public.area_code
  ADD CONSTRAINT ck_area_code CHECK ((VALUE)::text ~
'^\\(?[0-9]\\)?[0-9]*$'::text);

2. Define a table in a postgres database that includes a column of the
type you just created.

CREATE TABLE public.users (
  username VARCHAR(20) NOT NULL, 
  altphone_area public.area_code);

3. Create a record in the table

INSERT INTO users (username, altphone_area) VALUES ('Neil',222);

3. Try and use pg_update to update this record

pg_update($db, users, array('altphone_area'=444),
array('username'='Neil'));

Expected result:

The record you created is updated, setting the value of altphone_area=444

Actual result:
--
Nothing. No updates, no error messages.

-- 
Edit bug report at http://bugs.php.net/?id=34920edit=1
-- 
Try a CVS snapshot (php4):   http://bugs.php.net/fix.php?id=34920r=trysnapshot4
Try a CVS snapshot (php5.0): 
http://bugs.php.net/fix.php?id=34920r=trysnapshot50
Try a CVS snapshot (php5.1): 
http://bugs.php.net/fix.php?id=34920r=trysnapshot51
Fixed in CVS:http://bugs.php.net/fix.php?id=34920r=fixedcvs
Fixed in release:http://bugs.php.net/fix.php?id=34920r=alreadyfixed
Need backtrace:  http://bugs.php.net/fix.php?id=34920r=needtrace
Need Reproduce Script:   http://bugs.php.net/fix.php?id=34920r=needscript
Try newer version:   http://bugs.php.net/fix.php?id=34920r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=34920r=support
Expected behavior:   http://bugs.php.net/fix.php?id=34920r=notwrong
Not enough info: 
http://bugs.php.net/fix.php?id=34920r=notenoughinfo
Submitted twice: 
http://bugs.php.net/fix.php?id=34920r=submittedtwice
register_globals:http://bugs.php.net/fix.php?id=34920r=globals
PHP 3 support discontinued:  http://bugs.php.net/fix.php?id=34920r=php3
Daylight Savings:http://bugs.php.net/fix.php?id=34920r=dst
IIS Stability:   http://bugs.php.net/fix.php?id=34920r=isapi
Install GNU Sed: http://bugs.php.net/fix.php?id=34920r=gnused
Floating point limitations:  http://bugs.php.net/fix.php?id=34920r=float
No Zend Extensions:  http://bugs.php.net/fix.php?id=34920r=nozend
MySQL Configuration Error:   http://bugs.php.net/fix.php?id=34920r=mysqlcfg


#34920 [Fbk-Opn]: pg_update fails

2005-10-19 Thread n dot j dot saunders at gmail dot com
 ID:   34920
 User updated by:  n dot j dot saunders at gmail dot com
 Reported By:  n dot j dot saunders at gmail dot com
-Status:   Feedback
+Status:   Open
 Bug Type: PostgreSQL related
 Operating System: Windows XP
 PHP Version:  5.0.5
 New Comment:

Tried as requested - Still unable to perform update, but at least we
now get an error:

Notice: pg_convert() [function.pg-convert]: Unknown or system data type
'area_code' for 'telephone_area' in c:\documents and
settings\neil.saunders\workspace\tvc\www\testpg.php on line 7

Notice: pg_update() [function.pg-update]: Unknown or system data type
'area_code' for 'telephone_area' in c:\documents and
settings\neil.saunders\workspace\tvc\www\testpg.php on line 10
ERROR

$db_conn = pg_connect(host=localhost port=5432 dbname=TVC
user=postgres password=xxx);

$data = array('telephone_area'='701');

pg_convert($db_conn, advertisers, $data);


$res = pg_update($db_conn, advertisers, $data, array('id'='2'));

if($res)
{
echo OK;
}
else
{
echo ERROR;
}

Is there any way that pg_convert/pg_update can perform this? Postgres
seems to handle the implied type conversion when the operation is
performed via SQL? Maybe just a documented caveat required?

Thanks Guys.


Previous Comments:


[2005-10-19 21:56:19] [EMAIL PROTECTED]

Please try using this CVS snapshot:

  http://snaps.php.net/php5-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5-win32-latest.zip

If you still able to reproduce it - please provide a short but complete
reproduce code and take a look into the Apache logs (if there are any
entries related to the problem - paste some of them here).



[2005-10-19 21:44:35] n dot j dot saunders at gmail dot com

Description:

pg_update seems to fail when updating an columns of a user defined
domain.

I have inherited table (advertisers) that contains, among others, the
columns telephone_country (integer), telephone_area (area domain),
telephone_number (number domain).

pg_update succeeds when VARCHAR fields are updated, but seems to fail
without error when fields of user defined domains are updated from the
array 

Reproduce code:
---
1. Define a Domain in an existing postgres database

e.g: area_code, domain with check

CREATE DOMAIN public.area_code AS
  varchar(10) NULL;

ALTER DOMAIN public.area_code
  ADD CONSTRAINT ck_area_code CHECK ((VALUE)::text ~
'^\\(?[0-9]\\)?[0-9]*$'::text);

2. Define a table in a postgres database that includes a column of the
type you just created.

CREATE TABLE public.users (
  username VARCHAR(20) NOT NULL, 
  altphone_area public.area_code);

3. Create a record in the table

INSERT INTO users (username, altphone_area) VALUES ('Neil',222);

3. Try and use pg_update to update this record

pg_update($db, users, array('altphone_area'=444),
array('username'='Neil'));

Expected result:

The record you created is updated, setting the value of
altphone_area=444

Actual result:
--
Nothing. No updates, no error messages.





-- 
Edit this bug report at http://bugs.php.net/?id=34920edit=1