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