#34920 [Fbk->Opn]: pg_update fails

From: Date: Wed, 19 Oct 2005 22:10:48 +0000
Subject: #34920 [Fbk->Opn]: pg_update fails
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-86776@lists.php.net to get a copy of this message
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] tony2001@php.net 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=34920&edit=1

« previous php.bugs (#86776) next »