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.
This commit is contained in:
Andrew McMillan 2011-08-28 16:38:14 +12:00
parent c0a64931a2
commit b4364fb999

View File

@ -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;