Subject: Psqlodbc build fails on linux

From: Moazzum Ali <[email-masked]>
Date: Thu, 31 Aug 2023 06:28:06 +0500

Hi,

I am trying to build psqlodbc 15.00.0000 with PostgreSQL 16. Here are my commands:

./configure --with-libpq=/usr/pgsql-16/ --with-unixodbc=/usr/bin/odbc_config LD_LIBRARY_PATH=/usr/pgsql-16/lib/  --prefix=$PWD/out
make

 make command fails with the following error:

In file included from connection.h:14,
                 from info.c:34:
/usr/pgsql-16/include/internal/pqexpbuffer.h:168:8: error: unknown type name 'bool'
 extern bool appendPQExpBufferVA(PQExpBuffer str, const char *fmt, va_list args) pg_attribute_printf(2, 0);

One way to fix the error is to include the following line before #include "pqexpbuffer.h" in connection.h and statement.h
#include <stdbool.h>

Regards,
Moazzum

---

From: Michael Paquier <[email-masked]>
Date: Mon, 4 Sep 2023 08:45:56 +0900

On Thu, Aug 31, 2023 at 06:28:06AM +0500, Moazzum Ali wrote:
> One way to fix the error is to include the following line before
> #include "pqexpbuffer.h" in connection.h and statement.h
> #include <stdbool.h>

Wouldn't it be better to enforce an environment rule in psqlodbc.h
instead?  PostgreSQL enforces PG_USE_STDBOOL already on Windows, and
I am pretty sure that it would be OK to do the same in other *nix
places where anybody cares about ODBC.
--
Michael

---

From: Dave Cramer <[email-masked]>
Date: Mon, 4 Sep 2023 10:23:31 -0400

> places where anybody cares about ODBC.

I'm guessing this is a debian thing as I just built this successfully on a
redhat (ish) system

Dave

---

From: Dave Cramer <[email-masked]>
Date: Mon, 4 Sep 2023 12:07:09 -0400

> I'm guessing this is a debian thing as I just built this successfully on a

It pays to read all of the above before trying to replicate. I was building
against 15, not 16
I see the failure now

---

From: Moazzum Ali <[email-masked]>
Date: Mon, 4 Sep 2023 21:27:49 +0500

Dave,

Is it something that can be fixed on PG or psqlodbc side or you would also
suggest what Michael suggested? I have tried that environment rule though
and it works.

Thanks,
Moazzum

On Mon, Sep 4, 2023, 9:07 PM Dave Cramer <[email-masked]> wrote:

>> I'm guessing this is a debian thing as I just built this successfully on
>> a redhat (ish) system
>>
>
> It pays to read all of the above before trying to replicate. I was
> building against 15, not 16
> I see the failure now
>
>>
>> Dave
>>
>

---

From: Dave Cramer <[email-masked]>
Date: Mon, 4 Sep 2023 13:53:59 -0400

Seems like the better solution is to use Michael's suggestion as that is
what PG does.

Dave Cramer
www.postgres.rocks

---

From: Moazzum Ali <[email-masked]>
Date: Mon, 4 Sep 2023 22:55:50 +0500

Thanks Dave and Michael.

On Mon, Sep 4, 2023, 10:54 PM Dave Cramer <[email-masked]> wrote:

>> Is it something that can be fixed on PG or psqlodbc side or you would
>> also suggest what Michael suggested? I have tried that environment rule
>> though and it works.
>>
>> Thanks,
>> Moazzum
>>
>>>> I'm guessing this is a debian thing as I just built this successfully
>>>> on a redhat (ish) system
>>>>
>>>

---

From: Dave Cramer <[email-masked]>
Date: Mon, 4 Sep 2023 16:01:35 -0400

Please see attached patch to use autoconf to detect and use stdbool.h

I have to admit to having no idea if this is correct or if the style is
correct, much was copied from postgresql.

I have tested it on ubuntu, and it compiles.

Dave Cramer
www.postgres.rocks

---

From: Michael Paquier <[email-masked]>
Date: Tue, 5 Sep 2023 13:11:17 +0900

> correct, much was copied from postgresql.

Hmm.  This patch is a copy of what PostgreSQL's c.h does.  This may be
OK in the short-term, but I think that we should try to include back
postgres_fe.h in the long-term and figure out what's happening with
b8ca812b, so as this code would be able to fetch what Postgres itself
does.
--
Michael