Hi, 
 
I found following code:

create or replace function plpgsql_edit_distance(stra text, strb text)
        returns integer as $$
declare
    rows integer;
    cols integer;
begin
    rows := length(stra);
    cols := length(strb);

    IF rows = 0 THEN
        return cols;
    END IF;
    IF cols = 0 THEN
        return rows;
    END IF;

    declare
        row_u integer[];
        row_l integer[];
        diagonal integer;
        upper integer;
        left integer;
    begin
        FOR i in 0..cols LOOP
            row_u[i] := i;
        END LOOP;

        FOR i IN 1..rows LOOP
            row_l[0] := i;
            FOR j IN 1..cols LOOP
                IF substring (stra, i, 1) = substring (strb, j, 1) THEN
                    diagonal := row_u[j-1];
                else
                    diagonal := row_u[j-1] + 1;
                END IF;
                upper := row_u[j] + 1;
                left := row_l[j-1] + 1;
                row_l[j] := int4smaller(int4smaller(diagonal, upper), left);
                END LOOP;
            row_u := row_l;
        END LOOP;
        return row_l[cols];
    end;
end
$$ language 'plpgsql' immutable strict;

Does anyone know why the colums :"row_l[j] := int4smaller(int4smaller(diagonal, 
upper), left);" doesn't work.
 
Janek Sendrowski


-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Reply via email to