[14/Mar/2003:23:19:18][5118.4101][-conn0-] Error: dbinit: error(localhost::blog,ERROR: value too long for type character(1) ): 'select sec_rotate_last_visit(8780, 1047680358)' [14/Mar/2003:23:19:18][5118.4101][-conn0-] Error: Filter sec_read_security_info returned error #1: Database operation "1row" failed (exception NSDB, "Query was not a statement returning rows.") [14/Mar/2003:23:19:18][5118.4101][-conn0-] Error: tclop: invalid return code from filter proc 'Critical filter sec_read_security_info failed.': must be filter_ok, filter_return, or filter_break
Very annoying.... By the way, I do not expect any of you to have a solution for this... I guess we just have to use the old databases on a different install.
Actually, there is a quite simple fix for this problem. In the function sec_rotate_last_visit in security.sql, just cast the variable vtime as a varchar, not a char, thus:
create function sec_rotate_last_visit(integer, integer) returns integer as ' DECLARE v_browser_id alias for $1; v_time alias for $2; BEGIN lock table sec_browser_properties; delete from sec_browser_properties where browser_id = v_browser_id and module = ''acs'' and property_name = ''second_to_last_visit''; update sec_browser_properties set property_name = ''second_to_last_visit'' where module = ''acs'' and property_name = ''last_visit'' and browser_id = v_browser_id; insert into sec_browser_properties(browser_id, module, property_name, property_value, secure_p) values(v_browser_id, ''acs'', ''last_visit'', v_time::varchar, ''f''); return 1; end; ' language 'plpgsql';
Drop the function using PSQL and then read the security.sql file into the database to reload the function. I think all will be happiness and light then.
This actually has been previously discussed at length. See http://openacs.org/forums/message-view?message_id=29185 for one thread...