2 * Description: This module contains routines related to
3 * reading and storing the field information from a query.
7 #include "columninfo.h"
9 #include "connection.h"
12 #include "pgapifunc.h"
14 ColumnInfoClass
*CI_Constructor()
18 rv
= (ColumnInfoClass
*) malloc(sizeof(ColumnInfoClass
));
23 rv
->coli_array
= NULL
;
30 void CI_Destructor(ColumnInfoClass
* self
)
38 void CI_free_memory(ColumnInfoClass
* self
)
41 int num_fields
= self
->num_fields
;
43 /* Safe to call even if null */
47 for (lf
= 0; lf
< num_fields
; lf
++)
49 if (self
->coli_array
[lf
].name
)
51 free(self
->coli_array
[lf
].name
);
52 self
->coli_array
[lf
].name
= NULL
;
55 free(self
->coli_array
);
56 self
->coli_array
= NULL
;
62 typedef ColumnInfoClass_::srvr_info srvr_info
;
66 CI_set_num_fields(ColumnInfoClass
* self
, int new_num_fields
,
69 CI_free_memory(self
); /* always safe to call */
71 self
->num_fields
= new_num_fields
;
73 self
->coli_array
= (srvr_info
*)
74 calloc(sizeof(srvr_info
), self
->num_fields
);
79 CI_set_field_info(ColumnInfoClass
* self
, int field_num
,
81 OID new_adtid
, Int2 new_adtsize
, Int4 new_atttypmod
,
82 OID new_relid
, OID new_attid
)
85 if ((field_num
< 0) || (field_num
>= self
->num_fields
))
89 self
->coli_array
[field_num
].name
= strdup(new_name
);
90 self
->coli_array
[field_num
].adtid
= new_adtid
;
91 self
->coli_array
[field_num
].adtsize
= new_adtsize
;
92 self
->coli_array
[field_num
].atttypmod
= new_atttypmod
;
94 self
->coli_array
[field_num
].display_size
= 0;
95 self
->coli_array
[field_num
].relid
= new_relid
;
96 self
->coli_array
[field_num
].attid
= new_attid
;