| 167 | } |
| 168 | |
| 169 | char * |
| 170 | svec_out_internal(SvecType *svec) |
| 171 | { |
| 172 | char *ix_string,*vals_string,*result; |
| 173 | int ixlen,vslen; |
| 174 | SparseData sdata=sdata_from_svec(svec); |
| 175 | int64 *array_ix =sdata_index_to_int64arr(sdata); |
| 176 | ArrayType *pgarray_ix,*pgarray_vals; |
| 177 | |
| 178 | pgarray_ix = construct_array((Datum *)array_ix, |
| 179 | sdata->unique_value_count,INT8OID, |
| 180 | sizeof(int64),true,'d'); |
| 181 | |
| 182 | ix_string=DatumGetPointer(OidFunctionCall1(F_ARRAY_OUT, |
| 183 | PointerGetDatum(pgarray_ix))); |
| 184 | ixlen = strlen(ix_string); |
| 185 | |
| 186 | pgarray_vals = construct_array((Datum *)sdata->vals->data, |
| 187 | sdata->unique_value_count,FLOAT8OID, |
| 188 | sizeof(float8),true,'d'); |
| 189 | vals_string=DatumGetPointer(OidFunctionCall1(F_ARRAY_OUT, |
| 190 | PointerGetDatum(pgarray_vals))); |
| 191 | vslen = strlen(vals_string); |
| 192 | |
| 193 | result = (char *)palloc(sizeof(char)*(vslen+ixlen+1+1)); |
| 194 | |
| 195 | sprintf(result,"%s:%s",ix_string,vals_string); |
| 196 | pfree(ix_string); |
| 197 | pfree(vals_string); |
| 198 | pfree(array_ix); |
| 199 | |
| 200 | return(result); |
| 201 | } |
| 202 | |
| 203 | PG_FUNCTION_INFO_V1(svec_in); |
| 204 | Datum |
no test coverage detected