On 2/26/24 08:53, Thiemo Kellner wrote:
Thanks for the hint and care. The install script has a set statement already and I now added the search_path clause to no avail. Please find the entire code attached and a screenshot from the error.

I quick test:

create table type_test(NODE_TYPE⠒NAME text);

 \d type_test
                Table "public.type_test"
     Column     | Type | Collation | Nullable | Default
----------------+------+-----------+----------+---------
 node_type⠒name | text |           |

CREATE OR REPLACE FUNCTION public.type_test_fnc()
 RETURNS void
 LANGUAGE plpgsql
AS $function$
DECLARE
    type_name  type_test.node_type⠒name%TYPE :=NULL;
BEGIN
    RAISE NOTICE 'TEST';
END;

$function$

select type_test_fnc();
NOTICE:  TEST
 type_test_fnc
---------------

Shows that it is not the name itself that is the problem, at least in my case. I'm going to say it as Tom Lane said, there is a search_path issue. I tried to follow all the set search_path calls in your code and got lost as to where that ended up. I would try a simple test case, using psql, like above to verify that it is not the name in your case either. Assuming that works then you will need to track down what the actual search_path is when you run the function.



Am 26.02.2024 um 17:35 schrieb Tom Lane:
Thiemo Kellner <thi...@gelassene-pferde.biz> writes:
However, I want to create a (trigger) function to impose data
consistency. For that purpose, I try to copy the data type of a PL/pgSQL
variable from the base object, a view in that case. Trying so, I get the
following error on installation of the function.

V⠒NODE_TYPE⠒NAME                NODE⠒V.NODE_TYPE⠒NAME%type := null;

Syntax error at "%" … invalid type name. If I use the actual type of the
column, all is fine.

FWIW, I couldn't reproduce this with the fragmentary scripts you
provided.  I suspect the problem is not about the special characters
in the names, rather about search_path not including the NODE⠒V view.
Consider schema-qualifying the view name, or attaching a "SET
search_path" clause to the function.

            regards, tom lane

--
Adrian Klaver
adrian.kla...@aklaver.com



Reply via email to