ESQL/C no indicator variables ./. error -213 - Mailing list pgsql-general

From Matthias Apitz
Subject ESQL/C no indicator variables ./. error -213
Date
Msg-id 20200617170221.GA30377@sh4-5.1blu.de
Whole thread Raw
Responses Re: ESQL/C no indicator variables ./. error -213  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: ESQL/C no indicator variables ./. error -213  (Laurenz Albe <laurenz.albe@cybertec.at>)
List pgsql-general
Hello,

We encountered that if our ESQL/C written servers see on SELECT or FETCH
in a row a NULL value, it will raise correctly the error -213 as written
and explained in https://www.postgresql.org/docs/11/ecpg-variables.html#ECPG-INDICATORS
We catch this error -213 and deal with in.

What we did not knew and discovered today is something very fatal: In
such a situation on a FETCH of a row of some 55 columns, the transfer of
the column elements into their hostvariables stops on first NULL value,
as here to be seen in the log:

[29217] [17.06.2020 15:49:16:499]: ecpg_execute on line 69: query: select * from acq_ffleit where bnr = $1 ; with 1
parameter(s)on connection sisis
 
[29217] [17.06.2020 15:49:16:500]: ecpg_execute on line 69: using PQexecParams
[29217] [17.06.2020 15:49:16:500]: ecpg_free_params on line 69: parameter 1 = 742
[29217] [17.06.2020 15:49:16:500]: ecpg_process_output on line 69: correctly got 1 tuples with 55 fields
[29217] [17.06.2020 15:49:16:500]: ecpg_get_data on line 69: RESULT: 742 offset: 752; array: no
...
[29217] [17.06.2020 15:49:16:500]: ecpg_get_data on line 69: RESULT: 49 offset: 752; array: no
[29217] [17.06.2020 15:49:16:500]: ecpg_get_data on line 69: RESULT: offset: 752; array: no
[29217] [17.06.2020 15:49:16:500]: raising sqlcode -213 on line 69: null value without indicator on line 69

In the above examples the transfer stopped after 47 RESULTs; the
hostvariables after this have been untouched in our program, i.e. only
part of the row has been read.

One could say, "so what, you have error -213 and you deserve it". But at
least this behaviour should be documented clearly in the above mentioned page.

I would expect, that NULL values would not be transfered in such case
but all other hostvariables yes, i.e. for me this is perhaps a bug in the
ESQL/C implementation.

Comments?

Thanks

    matthias

-- 
Matthias Apitz, ✉ guru@unixarea.de, http://www.unixarea.de/ +49-176-38902045
Public GnuPG key: http://www.unixarea.de/key.pub
May, 9: Спаси́бо освободители! Thank you very much, Russian liberators!



pgsql-general by date:

Previous
From: Javi Legido
Date:
Subject: Re: Logical replication
Next
From: Tom Lane
Date:
Subject: Re: ESQL/C no indicator variables ./. error -213