From: | Thom Brown <thom(at)linux(dot)com> |
---|---|
To: | PGSQL Mailing List <pgsql-general(at)postgresql(dot)org> |
Subject: | Referring to function parameter in function |
Date: | 2010-09-17 23:07:22 |
Message-ID: | AANLkTi=aF5XpYz+2cpN77OViM46oGez79+awQ5PnzaTx@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
I appear to be having a problem with a function I've created, and no
doubt it'll be something obvious I'm doing wrong. Here's my function:
CREATE OR REPLACE FUNCTION get_lsfr(
bitlength INT,
taps INT[],
from_value INT
) RETURNS INT AS $$
DECLARE
last_tap_value BIT;
tap INT;
new_value INT;
BEGIN
IF (SELECT MAX(x) FROM unnest(taps) AS x) > bitlength THEN
RAISE EXCEPTION 'LSFR tap exceeds range of value.';
END IF;
FOR tap IN SELECT value FROM unnest(taps) AS x(value) ORDER BY value DESC LOOP
IF last_tap_value IS NOT NULL THEN
last_tap_value := last_tap_value #
GET_BIT(from_value::bit(bitlength), tap.value-1);
ELSE
last_tap_value := GET_BIT(from_value::bit(bitlength), tap.value-1);
CONTINUE;
END IF;
END LOOP;
new_value := (last_tap_value || SUBSTRING(from_value::BIT(bitlength),
1, bitlength - 1))::BIT(bitlength)::INT;
RETURN new_value;
END;
$$ LANGUAGE plpgsql;
And here's it's usage and result:
select get_lsfr(4,'{3,4}'::int[],6);
ERROR: invalid input syntax for integer: "bitlength"
LINE 1: SELECT GET_BIT(from_value::bit(bitlength), tap.value-1)
^
QUERY: SELECT GET_BIT(from_value::bit(bitlength), tap.value-1)
CONTEXT: PL/pgSQL function "get_lsfr" line 14 at assignment
If the function is difficult to read, please look at this paste:
http://pgsql.privatepaste.com/fd5b83166c
I want to use the parameter called "bitlength" as the length of a bit
when casting a value.
So, in this case, it would be GET_BIT(6::bit(4), 4-1)
What am I missing?
--
Thom Brown
Twitter: @darkixion
IRC (freenode): dark_ixion
Registered Linux user: #516935
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2010-09-17 23:14:53 | Re: Referring to function parameter in function |
Previous Message | Carlos Mennens | 2010-09-17 21:00:17 | Re: Alter Table Command Rearranges Rows |