Merges two or more data slices into a single data slice. Optionally, the primary database slice can be excluded.
This function applies only to aggregate storage databases.
Syntax
ESS_FUNC_M EssMergeDatabaseData (hCtx, AppName, DbName, ulOptions);
Parameter | Data Type | Description |
---|---|---|
hCtx | ESS_HCTX_T | API context handle |
AppName | ESS_STR_T | Use NULL. Function always applies to the currently selected database. |
DbName | ESS_STR_T | Use NULL. Function always applies to the currently selected database. |
ulOptions | ESS_ULONG_T | One of the following constants:
|
Return Value
Returns zero if successful; otherwise, returns an error code.
Example
void TestMergeDatabaseData(ESS_HCTX_T hCtx, ESS_STR_T AppName, ESS_STR_T DbName) { ESS_STS_T sts = ESS_STS_NOERR; ESS_SHORT_T isAbortOnError; ESS_OBJDEF_T Rules; ESS_OBJDEF_T Data; ESS_PMBRERR_T pMbrErr = NULL; ESS_PMBRUSER_T pMbrUser = NULL; ESS_ULONG_T ulBufferId; ESS_ULONG_T ulDuplicateAggregationMethod; ESS_ULONG_T ulOptionsFlags; ESS_ULONG_T ulSize; ESS_ULONG_T ulBufferCnt; ESS_ULONG_T ulCommitType ; ESS_ULONG_T ulActionType; ESS_ULONG_T ulOptions; ESS_ULONG_T ulBufferIdAry[1]; ESS_ULONG_T options; printf("\nCreate the buffer:\n"); ulDuplicateAggregationMethod = ESS_ASO_DATA_LOAD_BUFFER_DUPLICATES_ADD; ulOptionsFlags = ESS_ASO_DATA_LOAD_BUFFER_IGNORE_MISSING_VALUES; ulSize = 100; ulBufferId = 1; sts = EssLoadBufferInit(hCtx, AppName, DbName, ulBufferId, ulDuplicateAggregationMethod, ulOptionsFlags, ulSize); printf("EssLoadBufferInit sts: %ld\n", sts); /* Server object */ Rules.hCtx = hCtx; Rules.AppName = AppName; Rules.DbName = DbName; Rules.ObjType = ESS_OBJTYPE_RULES; Rules.FileName = "ddldinaq"; Data.hCtx = hCtx; Data.AppName = AppName; Data.DbName = DbName; Data.ObjType = ESS_OBJTYPE_TEXT; Data.FileName = "ddldinaq_slice1a"; isAbortOnError = ESS_TRUE; printf("\nLoad into buffer:\n"); sts = EssImportASO (hCtx, &Rules, &Data, &pMbrErr, pMbrUser, isAbortOnError, ulBufferId); printf("EssImportASO sts: %ld\n",sts); if(pMbrErr) EssFreeMbrErr(hCtx, pMbrErr); ulBufferCnt = 1; ulBufferIdAry[0] = ulBufferId; ulCommitType = ESS_ASO_DATA_LOAD_BUFFER_STORE_DATA; ulActionType = ESS_ASO_DATA_LOAD_BUFFER_COMMIT; printf("\Create a new slice:\n"); ulOptions = ESS_ASO_DATA_LOAD_INCR_TO_NEW_SLICE; sts = EssLoadBufferTerm(hCtx, AppName, DbName, ulBufferCnt, ulBufferIdAry, ulCommitType, ulActionType, ulOptions); printf("EssLoadBufferTerm sts: %ld\n",sts); options = ESS_MERGE_DATABASE_DATA_ALL; printf("\nMerge all data into one slice:\n"); sts = EssMergeDatabaseData(hCtx, AppName, DbName, options); printf("EssMergeDatabaseData sts: %ld\n",sts); }
See Also