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