Forum .LRN Q&A: Re: notes on upgrading dotLRN to 2.2.0a1

Collapse
Posted by Nima Mazloumi on
Hi all,


as I can see there are still two different apm_register_parameter functions defined in acs-kernel:


apm-create.sql:

create or replace function apm__register_parameter (integer,varchar,varchar,varchar,varchar,varchar,varchar,integer,integer)
returns integer as '
declare
  register_parameter__parameter_id           alias for $1;  -- default null
  register_parameter__package_key            alias for $2;
  register_parameter__parameter_name         alias for $3;
  register_parameter__description            alias for $4;  -- default null
  register_parameter__datatype               alias for $5;  -- default ''string''
  register_parameter__default_value          alias for $6;  -- default null
  register_parameter__section_name           alias for $7;  -- default null
  register_parameter__min_n_values           alias for $8;  -- default 1
  register_parameter__max_n_values           alias for $9;  -- default 1

  v_parameter_id         apm_parameters.parameter_id%TYPE;
  v_value_id             apm_parameter_values.value_id%TYPE;
  v_pkg                  record;

begin -- Create the new parameter. v_parameter_id := acs_object__new( register_parameter__parameter_id, ''apm_parameter'', now(), null, null, null, ''t'', register_parameter__package_key || '' - '' || register_parameter__parameter_name, null ); insert into apm_parameters (parameter_id, parameter_name, description, package_key, datatype, default_value, section_name, min_n_values, max_n_values) values (v_parameter_id, register_parameter__parameter_name, register_parameter__description, register_parameter__package_key, register_parameter__datatype, register_parameter__default_value, register_parameter__section_name, register_parameter__min_n_values, register_parameter__max_n_values); -- Propagate parameter to new instances. for v_pkg in select package_id from apm_packages where package_key = register_parameter__package_key loop v_value_id := apm_parameter_value__new( null, v_pkg.package_id, v_parameter_id, register_parameter__default_value ); end loop; return v_parameter_id;

end;' language 'plpgsql';



upgrade-5.2.0d1-5.2.0d2.sql:

create or replace function apm__register_parameter (integer,varchar,varchar,varchar,varchar,varchar,varchar,integer,integer)
returns integer as '
declare
  register_parameter__parameter_id           alias for $1;  -- default null
  register_parameter__package_key            alias for $2;
  register_parameter__parameter_name         alias for $3;
  register_parameter__description            alias for $4;  -- default null
  register_parameter__datatype               alias for $5;  -- default ''string''
  register_parameter__default_value          alias for $6;  -- default null
  register_parameter__section_name           alias for $7;  -- default null
  register_parameter__min_n_values           alias for $8;  -- default 1
  register_parameter__max_n_values           alias for $9;  -- default 1

  v_parameter_id         apm_parameters.parameter_id%TYPE;
  cur_val                record;
begin
    -- Create the new parameter.
    v_parameter_id := acs_object__new(
       register_parameter__parameter_id,
       ''apm_parameter'',
       now(),
       null,
       null,
       null,
       ''t'',
       register_parameter__package_key || '': Parameter '' || register_parameter__parameter_name,
       null
    );

    insert into apm_parameters
    (parameter_id, parameter_name, description, package_key, datatype,
    default_value, section_name, min_n_values, max_n_values)
    values
    (v_parameter_id, register_parameter__parameter_name,
     register_parameter__description, register_parameter__package_key,
     register_parameter__datatype, register_parameter__default_value,
     register_parameter__section_name, register_parameter__min_n_values,
     register_parameter__max_n_values);

    -- Propagate parameter to new instances.
    for cur_val in select ap.package_id, p.parameter_id, p.default_value
       from apm_parameters p left outer join apm_parameter_values v
             using (parameter_id), apm_packages ap
      where p.package_key = ap.package_key
        and v.attr_value is null
        and p.package_key = register_parameter__package_key
      loop
        PERFORM apm__set_value(
            cur_val.parameter_id,
            cur_val.package_id,
            cur_val.default_value
            );
      end loop;

    return v_parameter_id;

end;' language 'plpgsql';



Which one is correct? The one in the upgrade skript results to null values. So it is definetly wrong. But what about the other?


Can someone help?

Collapse
Posted by Dave Bauer on
The function in the create.sql is correct. It was changed around 5.1 and should have stayed that way.

Try replacing the function. We can fix that in CVS and it will go in the next release of OpenACS/.LRN