ID:               34920
 Updated by:       [EMAIL PROTECTED]
 Reported By:      n dot j dot saunders at gmail dot com
-Status:           Open
+Status:           Assigned
 Bug Type:         PostgreSQL related
 Operating System: *
 PHP Version:      5CVS-2005-10-31 (cvs)
-Assigned To:      
+Assigned To:      helly
 New Comment:

Assigned to the maintainer (according to EXTENSIONS file :)


Previous Comments:
------------------------------------------------------------------------

[2005-10-24 10:31:47] chriskl at familyhealth dot com dot au

As a pgsql developer, this is definitel a bug.  These are the possible
fixes:

* Get rid of unknown and make the error message say 'this type is not
supported'

* Query for the domain's base type and use that.  AFAIK, from
postgresql 8.0 onwards the type of domain columns is always reported as
the base type via libPQ.  Might want to check when that changed.  (Might
be wrong tho.)

Check the PQftype function here:
http://www.postgresql.org/docs/8.0/interactive/libpq-exec.html#LIBPQ-EXEC-SELECT-INFO

------------------------------------------------------------------------

[2005-10-20 00:10:46] n dot j dot saunders at gmail dot com

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.

------------------------------------------------------------------------

[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