From b4364fb99979ad02d551669de9b9766e8437c32a Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Sun, 28 Aug 2011 16:38:14 +1200 Subject: [PATCH] Fix for the following error: davical: LOG: principals/users/cars/hilux/: Query: QF: SQL error "42804" - ERROR: column "changed_by" is of type integer but expression is of type name LINE 1: ...on, property_name, property_value ) VALUES( path, user, curr... ^ HINT: You will need to rewrite or cast the expression. QUERY: INSE davical: LOG: principals/users/cars/hilux/: Query: QF: RT INTO property ( dav_name, changed_by, changed_on, property_name, property_value ) VALUES( path, user, current_timestamp, key, value ) CONTEXT: PL/pgSQL function "set_dav_property" line 16 at SQL statement" davical: LOG: principals/users/cars/hilux/: Query: QF: SELECT set_dav_property( :dav_name, :user_no, :tag::text, :value::text) davical: LOG: principals/users/cars/hilux/: Query: QF: ":dav_name" => "/cars/hilux/" davical: LOG: principals/users/cars/hilux/: Query: QF: ":user_no" => "1023" davical: LOG: principals/users/cars/hilux/: Query: QF: ":tag" => "http://apple.com/ns/ical/:calendar-color" davical: LOG: principals/users/cars/hilux/: Query: QF: ":value" => "#711A76" From 'mate' on IRC. --- dba/caldav_functions.sql | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/dba/caldav_functions.sql b/dba/caldav_functions.sql index 5bd2f3a5..bcddb973 100644 --- a/dba/caldav_functions.sql +++ b/dba/caldav_functions.sql @@ -348,7 +348,6 @@ DECLARE change_user ALIAS FOR $2; key ALIAS FOR $3; value ALIAS FOR $4; - tmp_int INT; BEGIN -- Check that there is either a resource, collection or user at this location. IF NOT EXISTS( SELECT 1 FROM caldav_data WHERE dav_name = path @@ -358,11 +357,11 @@ BEGIN ) THEN RETURN FALSE; END IF; - SELECT changed_by INTO tmp_int FROM property WHERE dav_name = path AND property_name = key; + PERFORM true FROM property WHERE dav_name = path AND property_name = key; IF FOUND THEN - UPDATE property SET changed_by=change_user, changed_on=current_timestamp, property_value=value WHERE dav_name = path AND property_name = key; + UPDATE property SET changed_by=change_user::integer, changed_on=current_timestamp, property_value=value WHERE dav_name = path AND property_name = key; ELSE - INSERT INTO property ( dav_name, changed_by, changed_on, property_name, property_value ) VALUES( path, change_user, current_timestamp, key, value ); + INSERT INTO property ( dav_name, changed_by, changed_on, property_name, property_value ) VALUES( path, change_user::integer, current_timestamp, key, value ); END IF; RETURN TRUE; END;