MCPcopy Create free account
hub / github.com/apache/madlib / svec_out_internal

Function svec_out_internal

methods/svec/src/pg_gp/sparse_vector.c:133–175  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

131}
132
133char * svec_out_internal(SvecType *svec)
134{
135 char *ix_string,*vals_string,*result;
136 int ixlen,vslen;
137 SparseData sdata=sdata_from_svec(svec);
138 int64 *array_ix =sdata_index_to_int64arr(sdata);
139 ArrayType *pgarray_ix,*pgarray_vals;
140
141 pgarray_ix = construct_array((Datum *)array_ix,
142 sdata->unique_value_count,INT8OID,
143 sizeof(int64),true,'d');
144
145 ix_string = DatumGetPointer(OidFunctionCall1(F_ARRAY_OUT,
146 PointerGetDatum(pgarray_ix)));
147 ixlen = strlen(ix_string);
148
149 pgarray_vals = construct_array((Datum *)sdata->vals->data,
150 sdata->unique_value_count,FLOAT8OID,
151 sizeof(float8),true,'d');
152
153 vals_string = DatumGetPointer(OidFunctionCall1(F_ARRAY_OUT,
154 PointerGetDatum(pgarray_vals)));
155 vslen = strlen(vals_string);
156
157 result = (char *)palloc(sizeof(char)*(vslen+ixlen+1+1));
158
159 /* NULLs are represented as NaN internally; see svec_in();
160 * Here we print each NaN as an NVP. */
161 for (int i=0; i!=vslen; i++)
162 if (vals_string[i] == 'N')
163 {
164 vals_string[i+1] = 'V';
165 vals_string[i+2] = 'P';
166 i = i+2;
167 }
168
169 sprintf(result,"%s:%s",ix_string,vals_string);
170 pfree(ix_string);
171 pfree(vals_string);
172 pfree(array_ix);
173
174 return(result);
175}
176
177SvecType * svec_in_internal(char * str);
178

Callers 2

svec_to_stringFunction · 0.85
svec_outFunction · 0.85

Calls 2

sdata_from_svecFunction · 0.85
sdata_index_to_int64arrFunction · 0.85

Tested by

no test coverage detected