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=34920&edit=1

Reply via email to