Re: Identifying function-lookup failures due to argument name mismatches

Поиск
Список
Период
Сортировка
От Chao Li
Тема Re: Identifying function-lookup failures due to argument name mismatches
Дата
Msg-id EB6ABA47-7322-4B17-B206-A7E428D8693B@gmail.com
обсуждение исходный текст
Ответ на Re: Identifying function-lookup failures due to argument name mismatches  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers

> On Aug 25, 2025, at 02:47, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>
> Here is a v4 with some additional bike-shedding on the error texts.
> In particular, I decided that it was worth expending an additional
> flag bit so that we could reliably distinguish "There is no function
> of that name" from "A function of that name exists, but it is not in
> the search_path".  (Since FuncnameGetCandidates is already searching
> the entire set of functions matching the given name, it doesn't take
> any extra work to know that there's a match outside the search path.)
> I rephrased a couple of the other messages too, but without any
> substantive logic change.
>

I tested various error cases, all got proper error messages. So, I think this patch has significantly improved the
situation.

I just have a tiny comment. In func_lookup_failure_details(), there are a lot of duplicate code like:

```
    if (proc_call)
        return errdetail("A procedure of that name exists, but it is not in the search_path.");
    else
        return errdetail("A function of that name exists, but it is not in the search_path.”);
```

The if-else is just to distinguish “procedure” and “function”, rest of words are duplicated.

Can we avoid the duplication in a way like:

```
static int
func_lookup_failure_details(int fgc_flags, List *argnames, bool proc_call)
{
    const char *func_kind = proc_call ? "procedure" : "function";

    /*
    if (proc_call)
        return errdetail("There is no procedure of that name.");
    else
        return errdetail("There is no function of that name.");
    */
    return errdetail("There is no %s of that name.", func_kind);
```

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/


В списке pgsql-hackers по дате отправления: