Hi, In <CAD21AoDABLkUTTOwWa1he6gbc=nm46comu-bvwjc_i6usnn...@mail.gmail.com> "Re: Make COPY format extendable: Extract COPY TO format implementations" on Thu, 27 Feb 2025 15:24:26 -0800, Masahiko Sawada <sawada.m...@gmail.com> wrote:
> Pushed the 0001 patch. Thanks! > Regarding the 0002 patch, I realized we stopped exposing > NextCopyFromRawFields() function: > > --- a/src/include/commands/copy.h > +++ b/src/include/commands/copy.h > @@ -107,8 +107,6 @@ extern CopyFromState BeginCopyFrom(ParseState > *pstate, Relation rel, Node *where > extern void EndCopyFrom(CopyFromState cstate); > extern bool NextCopyFrom(CopyFromState cstate, ExprContext *econtext, > Datum *values, bool *nulls); > -extern bool NextCopyFromRawFields(CopyFromState cstate, > - char ***fields, int *nfields); > > I think that this change is not relevant with the refactoring and > probably we should keep it exposed as extension might be using it. > Considering that we added pg_attribute_always_inline to the function, > does it work even if we omit pg_attribute_always_inline to its > function declaration in the copy.h file? Unfortunately, no. The inline + constant argument optimization requires "static". How about the following? static pg_attribute_always_inline bool NextCopyFromRawFieldsInternal(CopyFromState cstate, char ***fields, int *nfields, bool is_csv) { ... } bool NextCopyFromRawFields(CopyFromState cstate, char ***fields, int *nfields) { return NextCopyFromRawFieldsInternal(cstate, fields, nfields, cstate->opts.csv_mode); } Thanks, -- kou