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

Function concat

methods/svec/src/pg_gp/SparseData.c:1671–1708  ·  view source on GitHub ↗

* @param left The SparseData that comes first in the resulting concatenation * @param right The SparseData that comes second in the resulting concatenation * @return The concatenation of two input SparseData. */

Source from the content-addressed store, hash-verified

1669 * @return The concatenation of two input SparseData.
1670 */
1671SparseData concat(SparseData left, SparseData right) {
1672 if (left == NULL && right == NULL) {
1673 return NULL;
1674 } else if (left == NULL && right != NULL) {
1675 return makeSparseDataCopy(right);
1676 } else if (left != NULL && right == NULL) {
1677 return makeSparseDataCopy(left);
1678 }
1679 SparseData sdata = makeEmptySparseData();
1680 char *vals,*index;
1681 int l_val_len = left->vals->len;
1682 int r_val_len = right->vals->len;
1683 int l_ind_len = left->index->len;
1684 int r_ind_len = right->index->len;
1685 int val_len = l_val_len + r_val_len;
1686 int ind_len = l_ind_len + r_ind_len;
1687
1688 vals = (char *)palloc(sizeof(char)*val_len + 1);
1689 index = (char *)palloc(sizeof(char)*ind_len + 1);
1690
1691 memcpy(vals, left->vals->data,l_val_len);
1692 memcpy(vals+l_val_len,right->vals->data,r_val_len);
1693 vals[val_len] = '\0';
1694
1695 memcpy(index, left->index->data,l_ind_len);
1696 memcpy(index+l_ind_len,right->index->data,r_ind_len);
1697 index[ind_len] = '\0';
1698
1699 sdata->vals = makeStringInfoFromData(vals,val_len);
1700 sdata->index = makeStringInfoFromData(index,ind_len);
1701
1702 sdata->type_of_data = left->type_of_data;
1703 sdata->unique_value_count = left->unique_value_count +
1704 right->unique_value_count;
1705 sdata->total_value_count = left->total_value_count +
1706 right->total_value_count;
1707 return sdata;
1708}
1709
1710/**
1711 * @param rep The SparseData to be replicated

Callers 2

svec_changeFunction · 0.85
svec_concatFunction · 0.85

Calls 3

makeSparseDataCopyFunction · 0.85
makeEmptySparseDataFunction · 0.85
makeStringInfoFromDataFunction · 0.85

Tested by

no test coverage detected