diff --git a/src/common/pl/plpgsql/src/pl_comp.cpp b/src/common/pl/plpgsql/src/pl_comp.cpp index 492cc354415814b44e26cf1206764f8f25bbafc8..fed6e814fc32ebe0eb2a9da70feadaf567c274c4 100644 --- a/src/common/pl/plpgsql/src/pl_comp.cpp +++ b/src/common/pl/plpgsql/src/pl_comp.cpp @@ -2977,8 +2977,12 @@ PLpgSQL_type* plpgsql_parse_wordtype(char* ident) return NULL; } - dtype = build_datatype(type_tup, -1, - u_sess->plsql_cxt.curr_compile_context->plpgsql_curr_compile->fn_input_collation); + if (u_sess->plsql_cxt.curr_compile_context->plpgsql_curr_compile == NULL) { + dtype = build_datatype(type_tup, -1, 0); + } else { + dtype = build_datatype(type_tup, -1, + u_sess->plsql_cxt.curr_compile_context->plpgsql_curr_compile->fn_input_collation); + } ReleaseSysCache(type_tup); return dtype; diff --git a/src/test/regress/expected/plpgsql_package_type.out b/src/test/regress/expected/plpgsql_package_type.out index 71076366827fa1eb33d91b77bcd34820a09dceea..4e0f1946f5215bccc6f55b2b43a98861eaf70d48 100644 --- a/src/test/regress/expected/plpgsql_package_type.out +++ b/src/test/regress/expected/plpgsql_package_type.out @@ -1462,9 +1462,17 @@ end pck1; / -- test pck1.record.col%type ref table of -- test pck1.va.col%type ref table of +create or replace package pak1 as +type tp_varray is varray(1) of char%type; +varray1 tp_varray; +procedure p1; +end pak1 ; +/ -------------------------------------------------- ------------------ END OF TESTS ------------------ -------------------------------------------------- +drop package pak1; +NOTICE: drop cascades to function plpgsql_packagetype1.p1() drop package p_test2; ERROR: package p_test2 does not exist drop package plpgsql_packagetype1.p_test2; diff --git a/src/test/regress/sql/plpgsql_package_type.sql b/src/test/regress/sql/plpgsql_package_type.sql index d674920597f88ad996305301142127b8cae2fb87..38b22eba2503a239396aa7494143da8666fcaaa9 100644 --- a/src/test/regress/sql/plpgsql_package_type.sql +++ b/src/test/regress/sql/plpgsql_package_type.sql @@ -1115,11 +1115,17 @@ end pck1; -- test pck1.va.col%type ref table of - +create or replace package pak1 as +type tp_varray is varray(1) of char%type; +varray1 tp_varray; +procedure p1; +end pak1 ; +/ -------------------------------------------------- ------------------ END OF TESTS ------------------ -------------------------------------------------- +drop package pak1; drop package p_test2; drop package plpgsql_packagetype1.p_test2; drop package plpgsql_packagetype1.p_test1;