int updateTreeSegment(void *dbid, int nid, void *startDsc, void *endDsc, void *timeDsc, int isCached, int cachePolicy) { struct descriptor_xd *startXd = (struct descriptor_xd *)startDsc; struct descriptor_xd *endXd = (struct descriptor_xd *)endDsc; struct descriptor_xd *timeXd = (struct descriptor_xd *)timeDsc; int status; if(isCached) { status = _RTreeUpdateSegment(dbid, nid, (struct descriptor *)startXd->pointer, (struct descriptor *)endXd->pointer, (struct descriptor *)timeXd->pointer, -1, cachePolicy); } else status = _TreeUpdateSegment(dbid, nid, (struct descriptor *)startXd->pointer, (struct descriptor *)endXd->pointer, (struct descriptor *)timeXd->pointer, -1); freeDsc(startXd); freeDsc(endXd); freeDsc(timeXd); return status; }
int updateTreeSegment(void *dbid, int nid, int segIdx, void *startDsc, void *endDsc, void *timeDsc) { struct descriptor_xd *startXd = (struct descriptor_xd *)startDsc; struct descriptor_xd *endXd = (struct descriptor_xd *)endDsc; struct descriptor_xd *timeXd = (struct descriptor_xd *)timeDsc; int status, numSegments, segmentIdx; if(segIdx == -1) { status = _TreeGetNumSegments(dbid, nid, &numSegments); if(!(status & 1)) return status; segmentIdx = numSegments - 1; } else segmentIdx = segIdx; status = _TreeUpdateSegment(dbid, nid, (struct descriptor *)startXd->pointer, (struct descriptor *)endXd->pointer, (struct descriptor *)timeXd->pointer, segmentIdx); freeDsc(startXd); freeDsc(endXd); freeDsc(timeXd); return status; }