On 4/10/21 8:56 PM, Tomas Vondra wrote: > On 4/11/21 2:38 AM, Dave Cramer wrote: >> >> >> >> On Sat, 10 Apr 2021 at 20:34, Tom Lane <t...@sss.pgh.pa.us >> <mailto:t...@sss.pgh.pa.us>> wrote: >> >> Dave Cramer <davecra...@gmail.com <mailto:davecra...@gmail.com>> writes: >> > On Sat, 10 Apr 2021 at 20:24, Tom Lane <t...@sss.pgh.pa.us >> <mailto:t...@sss.pgh.pa.us>> wrote: >> >> That's quite bizarre. What is the actual error level according to >> >> the source code, and where is the error being thrown exactly? >> >> > Well it really is an ERROR, and is being downgraded on windows to >> WARNING. >> >> That seems quite awful. >> >> However, now that I think about it, the elog.h error-level constants >> were renumbered not so long ago. Maybe you've failed to recompile >> everything for v14? >> >> >> We see this on a CI with a fresh pull from master. >> >> As I said I will dig into it and figure it out. >> > Well, plr.h does this: > > #define WARNING 19 > #define ERROR 20 > > which seems a bit weird, because elog.h does this (since 1f9158ba481): > > #define WARNING 19 > #define WARNING_CLIENT_ONLY 20 > #define ERROR 21 > > Not sure why this would break Windows but not Linux, though. > >
The coding pattern in plr.h looks quite breakable. Instead of hard coding values like this they should save the value from the postgres headers in another variable before undefining it and then restore that value after inclusion of the R headers. That would work across versions even if we renumber them. cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com