Peter Eisentraut <pe...@eisentraut.org> 于2024年10月15日周二 15:02写道:
> On 14.10.24 23:28, Nathan Bossart wrote: > > On Mon, Oct 14, 2024 at 09:47:59AM +0200, Peter Eisentraut wrote: > >> But we can do this better by using an incomplete struct, like > >> > >> struct Query *viewQuery ...; > >> > >> That way, everything has the correct type and fewer casts are required. > This > >> technique is already used elsewhere in node type definitions. > Agree. The attached patches LGTM. > > > > I noticed that the examples in parsenodes.h are for structs defined > within > > the same file. If the struct is defined in a separate file, I guess you > > might need to include another header file wherever it is used, but that > > doesn't seem too bad. > > No, you can leave the struct incomplete. You only need to provide its > full definition (= include the other header file) if you actually want > to access the struct's fields. > > Yeah. There are many examples. For example as below: in struct RelOptInfos, /* use "struct FdwRoutine" to avoid including fdwapi.h here */ struct FdwRoutine *fdwroutine pg_node_attr(read_write_ignore); -- Thanks, Tender Wang