On 2023-06-26 Mo 09:45, jian he wrote:
On Mon, Jun 26, 2023 at 9:32 PM jian he <jian.universal...@gmail.com>
wrote:
>
> On Mon, Jun 26, 2023 at 7:50 PM Andrew Dunstan <and...@dunslane.net>
wrote:
> >
> >
> > On 2023-06-26 Mo 07:20, jian he wrote:
> >
> > static
> > Datum return_numeric_datum(char *token)
> > {
> > Datum numd;
> > Node *escontext;
> >
> > if (!DirectInputFunctionCallSafe(numeric_in, token,
> > InvalidOid, -1,
> > escontext,
> > &numd));
> > elog(INFO,"something is wrong");
> > return numd;
> > }
> >
> >
> > To start with, the semicolon at the end of that if appears bogus.
The elog is indented to look like it's conditioned by the if but the
semicolon makes it not be.
> >
> > There are compiler switches in modern gcc at least that help you
detect things like this.
> >
> >
> > cheers
> >
> >
> > andrew
> >
> > --
> > Andrew Dunstan
> > EDB: https://www.enterprisedb.com
>
>
> sorry. It was my mistake.
>
> > Node *escontext;
> > if (!DirectInputFunctionCallSafe(numeric_in, token,
> > InvalidOid, -1,
> > escontext,
> > &numd))
> > elog(INFO,"something is wrong");
>
> I wonder about the implication of just declaring Node *escontext in
here.
> In this DirectInputFunctionCallSafe, what does escontext point to.
gcc -Wempty-body will detect my error.
However, gcc -Wextra includes -Wempty-body and -Wuninitializedand
others.
i guess in here, the real question in here is how to initializeescontext.
See code for pg_input_error_info and friends for examples.
cheers
andrew
--
Andrew Dunstan
EDB:https://www.enterprisedb.com