C example--value set queries
void queryUsingSubquery(unsigned int IN_NOT_IN_op,
ARControlStruct *ctrl, ARStatusList *status)
{
ARMultiSchemaFieldFuncValueListList msEntryList = {0, NULL}; /**/
unsigned int numMatches;
unsigned int *numMatchesPtr;
int result;
ARMultiSchemaFuncQueryFromList fromList = {0, NULL}; /**/
ARMultiSchemaSortList sortList = {0, NULL};
ARMultiSchemaFieldFuncList getListFields = {0, NULL}; /**/
ARMultiSchemaFuncQueryFromStruct perm1fromItem = {0,}; /* 0-fill */ /**/
ARMultiSchemaFuncQueryFromStruct perm3fromItem = {0,}; /* 0-fill */ /**/
ARMultiSchemaQualifierStruct joinQual = {AR_COND_OP_NONE, NULL};
ARMultiSchemaQualifierStruct qualifier = {AR_COND_OP_NONE, NULL};
ARMultiSchemaRelOpStruct relop;
ARMultiSchemaFieldFuncStruct fieldIdMain[4] = {{"",}}; /* 0-fill */ /**/
ARMultiSchemaValueSetFuncQueryStruct valueSetQuery = {{0,}}; /* 0-fill *//**/
/* fill up query struct */
fromList.numItems = 1;
fromList.listPtr = &perm1fromItem;
strcpy(fieldIdMain[0].queryFromAlias, "perm1");
fieldIdMain[0].fieldId = 1; /*requestId */
fieldIdMain[0].funcId = AR_MULTI_SCHEMA_FUNC_NONE; /**/
strcpy(fieldIdMain[1].queryFromAlias, "perm1");
fieldIdMain[1].fieldId = 536870913; /* char field */
fieldIdMain[1].funcId = AR_MULTI_SCHEMA_FUNC_NONE; /**/
strcpy(fieldIdMain[2].queryFromAlias, "perm1");
fieldIdMain[2].funcId = AR_MULTI_SCHEMA_FUNC_NONE; /**/
fieldIdMain[2].fieldId = 536870914; /* integer field */
getListFields.numItems = 3;
getListFields.listPtr = fieldIdMain; /**/
/* perm1fromItem from item */
perm1fromItem.type = AR_MULTI_SCHEMA_SCHEMA_NAME;
strcpy(perm1fromItem.u.schemaName, "InSubqueryPermissions1");
perm1fromItem.joinType = 0;
perm1fromItem.joinQual = NULL;
strcpy(perm1fromItem.queryFromAlias, "perm1");
/* perm3fromItem from item */
perm3fromItem.type = AR_MULTI_SCHEMA_SCHEMA_NAME;
strcpy(perm3fromItem.u.schemaName, "InSubqueryPermissions4");
perm3fromItem.joinType = 0;
perm3fromItem.joinQual = NULL;
strcpy(perm3fromItem.queryFromAlias, "perm3");
numMatchesPtr = &numMatches;
/* main query qualifier */
qualifier.operation = AR_COND_OP_REL_OP;
qualifier.u.relOp = &relop;
relop.operation = IN_NOT_IN_op;
relop.operandLeft.tag = AR_FIELD;
strcpy(relop.operandLeft.u.fieldId.queryFromAlias, "perm1");
relop.operandLeft.u.fieldId.fieldId = 536870913;
relop.operandRight.tag = AR_VALUE_SET_QUERY;
relop.operandRight.u.valueSetQuery = &valueSetQuery;
/* set value set query now */
valueSetQuery.queryFromList.numItems = 1;
valueSetQuery.queryFromList.listPtr = &perm3fromItem;
valueSetQuery.fieldId.fieldId = 536870913;
strcpy(valueSetQuery.fieldId.queryFromAlias, "perm3");
valueSetQuery.qualifier = NULL;
result = ARGetListEntryWithMultiSchemaFields (ctrl, &fromList,
&getListFields, &qualifier, &sortList, AR_START_WITH_FIRST_ENTRY,
AR_NO_MAX_LIST_RETRIEVE, FALSE,
NULL, NULL, /* groupBy, having */
&msEntryList, numMatchesPtr, status);
}
ARControlStruct *ctrl, ARStatusList *status)
{
ARMultiSchemaFieldFuncValueListList msEntryList = {0, NULL}; /**/
unsigned int numMatches;
unsigned int *numMatchesPtr;
int result;
ARMultiSchemaFuncQueryFromList fromList = {0, NULL}; /**/
ARMultiSchemaSortList sortList = {0, NULL};
ARMultiSchemaFieldFuncList getListFields = {0, NULL}; /**/
ARMultiSchemaFuncQueryFromStruct perm1fromItem = {0,}; /* 0-fill */ /**/
ARMultiSchemaFuncQueryFromStruct perm3fromItem = {0,}; /* 0-fill */ /**/
ARMultiSchemaQualifierStruct joinQual = {AR_COND_OP_NONE, NULL};
ARMultiSchemaQualifierStruct qualifier = {AR_COND_OP_NONE, NULL};
ARMultiSchemaRelOpStruct relop;
ARMultiSchemaFieldFuncStruct fieldIdMain[4] = {{"",}}; /* 0-fill */ /**/
ARMultiSchemaValueSetFuncQueryStruct valueSetQuery = {{0,}}; /* 0-fill *//**/
/* fill up query struct */
fromList.numItems = 1;
fromList.listPtr = &perm1fromItem;
strcpy(fieldIdMain[0].queryFromAlias, "perm1");
fieldIdMain[0].fieldId = 1; /*requestId */
fieldIdMain[0].funcId = AR_MULTI_SCHEMA_FUNC_NONE; /**/
strcpy(fieldIdMain[1].queryFromAlias, "perm1");
fieldIdMain[1].fieldId = 536870913; /* char field */
fieldIdMain[1].funcId = AR_MULTI_SCHEMA_FUNC_NONE; /**/
strcpy(fieldIdMain[2].queryFromAlias, "perm1");
fieldIdMain[2].funcId = AR_MULTI_SCHEMA_FUNC_NONE; /**/
fieldIdMain[2].fieldId = 536870914; /* integer field */
getListFields.numItems = 3;
getListFields.listPtr = fieldIdMain; /**/
/* perm1fromItem from item */
perm1fromItem.type = AR_MULTI_SCHEMA_SCHEMA_NAME;
strcpy(perm1fromItem.u.schemaName, "InSubqueryPermissions1");
perm1fromItem.joinType = 0;
perm1fromItem.joinQual = NULL;
strcpy(perm1fromItem.queryFromAlias, "perm1");
/* perm3fromItem from item */
perm3fromItem.type = AR_MULTI_SCHEMA_SCHEMA_NAME;
strcpy(perm3fromItem.u.schemaName, "InSubqueryPermissions4");
perm3fromItem.joinType = 0;
perm3fromItem.joinQual = NULL;
strcpy(perm3fromItem.queryFromAlias, "perm3");
numMatchesPtr = &numMatches;
/* main query qualifier */
qualifier.operation = AR_COND_OP_REL_OP;
qualifier.u.relOp = &relop;
relop.operation = IN_NOT_IN_op;
relop.operandLeft.tag = AR_FIELD;
strcpy(relop.operandLeft.u.fieldId.queryFromAlias, "perm1");
relop.operandLeft.u.fieldId.fieldId = 536870913;
relop.operandRight.tag = AR_VALUE_SET_QUERY;
relop.operandRight.u.valueSetQuery = &valueSetQuery;
/* set value set query now */
valueSetQuery.queryFromList.numItems = 1;
valueSetQuery.queryFromList.listPtr = &perm3fromItem;
valueSetQuery.fieldId.fieldId = 536870913;
strcpy(valueSetQuery.fieldId.queryFromAlias, "perm3");
valueSetQuery.qualifier = NULL;
result = ARGetListEntryWithMultiSchemaFields (ctrl, &fromList,
&getListFields, &qualifier, &sortList, AR_START_WITH_FIRST_ENTRY,
AR_NO_MAX_LIST_RETRIEVE, FALSE,
NULL, NULL, /* groupBy, having */
&msEntryList, numMatchesPtr, status);
}
Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*