Lines Matching refs:hcp

99 	HASH_CURSOR *hcp;
106 hcp = (HASH_CURSOR *)dbc->internal;
107 if (flags == DB_CURRENT && hcp->dpgno == PGNO_INVALID)
108 del_len = hcp->dup_len;
120 * hcp->dndx is the first free ndx or the index of the
123 hk = H_PAIRDATA(hcp->pagep, hcp->bndx);
124 new_size = DUP_SIZE(nval->size) - del_len + LEN_HKEYDATA(hcp->pagep,
125 hcp->hdr->pagesize, H_DATAINDEX(hcp->bndx));
133 (HPAGE_PTYPE(hk) == H_OFFPAGE || ISBIG(hcp, new_size) ||
134 DUP_SIZE(nval->size) - del_len > P_FREESPACE(hcp->pagep))) {
139 hk = H_PAIRDATA(hcp->pagep, hcp->bndx);
148 pval.size = LEN_HDATA(hcp->pagep, dbp->pgsize,
149 hcp->bndx);
171 tmp_val.doff = LEN_HDATA(hcp->pagep,
172 hcp->hdr->pagesize, hcp->bndx);
180 dbt.data = HKEYDATA_DATA(H_PAIRDATA(hcp->pagep,
181 hcp->bndx)) + hcp->dup_off;
182 dbt.size = DUP_SIZE(hcp->dup_len);
186 tmp_val.doff = hcp->dup_off;
187 tmp_val.dlen = DUP_SIZE(hcp->dup_len);
190 tmp_val.doff = hcp->dup_off;
193 tmp_val.doff = hcp->dup_off + DUP_SIZE(hcp->dup_len);
199 ret = __ham_dirty_page(dbp, hcp->pagep);
200 __ham_c_update(hcp, hcp->pgno, tmp_val.size, 1, 1);
205 if (hcp->dpgno == PGNO_INVALID) {
206 memcpy(&hcp->dpgno, HOFFDUP_PGNO(hk), sizeof(db_pgno_t));
207 hcp->dndx = 0;
219 if (hcp->dpagep == NULL && (ret =
220 __db_dend(dbc, hcp->dpgno, &hcp->dpagep)) != 0)
222 hcp->dndx = 0;
227 hcp->dpgno, &hcp->dndx, &hcp->dpagep, &cmp)) != 0)
230 hcp->dpgno = PGNO(hcp->dpagep);
232 if (hcp->dpagep == NULL && (ret =
233 __db_dend(dbc, hcp->dpgno, &hcp->dpagep)) != 0)
235 hcp->dpgno = PGNO(hcp->dpagep);
236 hcp->dndx = NUM_ENT(hcp->dpagep);
241 nval, hcp->dpagep, hcp->dndx, dbp->dup_compare) != 0)
243 switch (GET_BKEYDATA(hcp->dpagep, hcp->dndx)->type) {
245 del_len = BKEYDATA_SIZE(GET_BKEYDATA(hcp->dpagep,
246 hcp->dndx)->len);
253 __db_ditem(dbc, hcp->dpagep, hcp->dndx, del_len)) != 0)
259 hcp->dndx++;
264 nval, &hcp->dpagep, &hcp->dndx, __ham_overflow_page);
265 hcp->pgno = PGNO(hcp->pagep);
266 __ham_c_update(hcp, hcp->pgno, nval->size, 1, 1);
278 HASH_CURSOR *hcp;
290 hcp = (HASH_CURSOR *)dbc->internal;
292 __ham_overflow_page(dbc, P_DUPLICATE, &hcp->dpagep)) != 0)
294 hcp->dpagep->type = P_DUPLICATE;
295 hcp->dpgno = PGNO(hcp->dpagep);
302 switch (HPAGE_PTYPE(H_PAIRDATA(hcp->pagep, hcp->bndx))) {
306 LEN_HDATA(hcp->pagep, hcp->hdr->pagesize, hcp->bndx);
307 dbt.data = HKEYDATA_DATA(H_PAIRDATA(hcp->pagep, hcp->bndx));
308 ret = __db_pitem(dbc, hcp->dpagep,
311 __ham_dirty_page(dbp, hcp->dpagep);
316 P_ENTRY(hcp->pagep, H_DATAINDEX(hcp->bndx)), HOFFPAGE_SIZE);
325 ret = __db_pitem(dbc, hcp->dpagep,
328 __ham_dirty_page(dbp, hcp->dpagep);
331 p = HKEYDATA_DATA(H_PAIRDATA(hcp->pagep, hcp->bndx));
333 LEN_HDATA(hcp->pagep, hcp->hdr->pagesize, hcp->bndx);
343 if (off == hcp->dup_off)
352 &hcp->dpagep, &i, __ham_overflow_page);
358 ret = __db_pgfmt(dbp, (u_long)hcp->pgno);
366 __ham_move_offpage(dbc, hcp->pagep,
367 (u_int32_t)H_DATAINDEX(hcp->bndx), hcp->dpgno);
370 ret = __ham_dirty_page(dbp, hcp->pagep);
371 hcp->dndx = dndx;
373 (void)__ham_del_page(dbc, hcp->dpagep);
374 hcp->dpagep = NULL;
418 HASH_CURSOR *hcp;
428 hcp = (HASH_CURSOR *)dbc->internal;
433 hk = H_PAIRDATA(hcp->pagep, hcp->bndx);
443 LEN_HITEM(hcp->pagep, hcp->hdr->pagesize, H_DATAINDEX(hcp->bndx));
454 if (ISBIG(hcp, new_datalen) && (old_len > HOFFDUP_SIZE ||
455 HOFFDUP_SIZE - old_len <= P_FREESPACE(hcp->pagep)))
458 if (!ISBIG(hcp, new_datalen) &&
459 add_len <= (int32_t)P_FREESPACE(hcp->pagep))
467 new_datalen = ISBIG(hcp, new_datalen) ?
471 for (next_pgno = NEXT_PGNO(hcp->pagep); next_pgno != PGNO_INVALID;
487 hcp->pagep, 0, &next_pagep)) != 0)
496 if (DB_LOGGING(hcp->dbc)) {
501 H_PAIRKEY(hcp->pagep, hcp->bndx)) == H_OFFPAGE) {
503 k.data = H_PAIRKEY(hcp->pagep, hcp->bndx);
507 HKEYDATA_DATA(H_PAIRKEY(hcp->pagep, hcp->bndx));
508 k.size = LEN_HKEY(hcp->pagep,
509 hcp->hdr->pagesize, hcp->bndx);
514 d.data = H_PAIRDATA(hcp->pagep, hcp->bndx);
518 HKEYDATA_DATA(H_PAIRDATA(hcp->pagep, hcp->bndx));
519 d.size = LEN_HDATA(hcp->pagep,
520 hcp->hdr->pagesize, hcp->bndx);
536 hcp->pagep, H_KEYINDEX(hcp->bndx), next_pagep);
538 hcp->pagep, H_DATAINDEX(hcp->bndx), next_pagep);
543 (void)__ham_put_page(dbp, hcp->pagep, 1);
544 hcp->pagep = next_pagep;
545 hcp->pgno = PGNO(hcp->pagep);
546 hcp->bndx = H_NUMPAIRS(hcp->pagep) - 1;
547 F_SET(hcp, H_EXPAND);
570 HASH_CURSOR *hcp;
579 hcp = (HASH_CURSOR *)dbc->internal;
590 old_dbt.size = LEN_HITEM(pagep, hcp->hdr->pagesize, ndx);
598 LEN_HITEM(pagep, hcp->hdr->pagesize, ndx) - HOFFDUP_SIZE;
629 HASH_CURSOR *hcp;
636 hcp = (HASH_CURSOR *)dbc->internal;
642 i = F_ISSET(dbc, DBC_CONTINUE) ? hcp->dup_off: 0;
643 data = HKEYDATA_DATA(H_PAIRDATA(hcp->pagep, hcp->bndx)) + i;
644 while (i < LEN_HDATA(hcp->pagep, hcp->hdr->pagesize, hcp->bndx)) {