|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2005-10-19 21:44 UTC] 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.
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Mon Oct 27 02:00:01 2025 UTC |
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.