> Some of the queries we use can be very large.
> My code is crashing here:
>
> QResultClass *
> LIBPQ_execute_query(ConnectionClass *self,char *query)
> {
> QResultClass *qres;
> PGresult *pgres;
> char *ptr;
> char cmdbuffer[ERROR_MSG_LENGTH + 1];
> char errbuffer[ERROR_MSG_LENGTH + 1];
> int pos=0;
>
> strcpy(cmdbuffer,query);
>
>
> ERROR_MSG_LENGTH is 4096, my query is larger than that.
> What's the rationale here and how do we fix it? This works fine with
the
> old driver.
That code is fishy. I should be making strncpy, not strcpy, and I don't
understand why ERROR_MSG_LENGTH is used for the length. The query is
copied again (with strdup) inside QR_set_command.
IMO, it doesn't seem worthwhile to make the extra copy just to be able
to trim spaces leter.
Merlin