On 11/25/22 7:00 AM, Ralph Lange via Core-talk wrote:
I chime
in here as we discussed this with Georg
yesterday. Using cainfo, the original IOC
reports both native and request data types
as double (DBF_DOUBLE resp. DBR_DOUBLE).
True.
And wrong.
Btw. The compress_array() routine in compressRecord.c
treats N and NSAM as signed.
Also wrong.
I'm not quite sure what your first "wrong" there was referring to,
CA just can't express any data types outside its limited set, so
what cainfo reports as the "Native data type" has to be the result
of converting the internal type into some appropriate CA type.
True. My bad.
The code snipped (what cainfo prints) is
dbfType = ca_field_type(pvs[n].chid);
dbrType = dbf_type_to_DBR(dbfType);
I always thought that dbf_type_to_DBR() would make the ULONG -> DOUBLE translation visible, but looking at the definition of that macro as
#define dbf_type_to_DBR(type) (((type) >= 0 && (type) <= dbf_text_dim-3) ? (type) : -1 )
that was obviously just wishful thinking.
I don't think cainfo could ever show a difference between the
"Native data type" and "Request type" lines since
it doesn't make any access requests at all with any data types, so
the latter line isn't really very useful output from cainfo IMHO.
I will make a change to cainfo and remove the redundant output line.
Cheers,
~Ralph