33
33
/*******************************************************************************
35
35
********************************************************************************/
36
DocIndexer::DocIndexer(csize numColumns, PlanIterator* plan, store::Item* varName)
36
DocIndexer::DocIndexer(
42
theIsGeneral(general),
38
43
theNumColumns(numColumns),
39
44
theIndexerPlan(plan),
40
45
theNodeVarName(varName),
81
86
store::Item_t tmp = docNode;
82
87
theDctx->set_variable(theNodeVarId, theNodeVarName, QueryLoc::null, tmp);
84
csize numEntries = delta.size();
85
89
store::Item_t domainNode;
86
store::IndexKey* key = NULL;
90
while (thePlanWrapper->next(domainNode))
92
key = new store::IndexKey(theNumColumns);
94
//std::cout << domainNode.getp() << " " << key << std::endl;
96
for (csize i = 0; i < theNumColumns; ++i)
95
if (thePlanWrapper->next(domainNode))
98
if (!thePlanWrapper->next((*key)[i]))
99
throw ZORBA_EXCEPTION(zerr::ZXQP0003_INTERNAL_ERROR,
100
ERROR_PARAMS(ZED(IncompleteKeyInIndexRefresh)));
102
assert(domainNode->isNode());
104
while ((more = thePlanWrapper->next(key)))
108
domainNode.transfer(key);
112
store::Item_t node = domainNode;
113
delta.addGeneralPair(node, key);
120
store::IndexKey* key = NULL;
122
//std::cout << "Computing value index delta" << std::endl;
126
while (thePlanWrapper->next(domainNode))
128
key = new store::IndexKey(theNumColumns);
130
for (csize i = 0; i < theNumColumns; ++i)
132
if (!thePlanWrapper->next((*key)[i]))
134
throw ZORBA_EXCEPTION(zerr::ZXQP0003_INTERNAL_ERROR,
135
ERROR_PARAMS(ZED(IncompleteKeyInIndexRefresh)));
103
delta.resize(numEntries + 1);
104
delta[numEntries].first.transfer(domainNode);
105
delta[numEntries].second = key;
140
std::cout << "[ node: " << domainNode.getp()
142
<< " , keyval: " << (*key)[0]->getStringValue()
143
<< " ]" << std::endl;
145
delta.addValuePair(domainNode, key);
149
//std::cout << std::endl;
115
for (ulong i = 0; i < delta.size(); ++i)
117
delete delta[i].second;
120
164
theDctx->unset_variable(theNodeVarId, theNodeVarName, QueryLoc::null);