and the other 26 for ldap_entries ID number. If your max(oc_map_id) is more
than 63, you will need to steal more bits from ldap_entries ID number and
put them into the OC ID part of the cookie. */
+
+/* NOTE: not supported when BACKSQL_ARBITRARY_KEY is defined */
+#ifndef BACKSQL_ARBITRARY_KEY
#define SQL_TO_PAGECOOKIE(id, oc) (((id) << 6 ) | ((oc) & 0x3F))
#define PAGECOOKIE_TO_SQL_ID(pc) ((pc) >> 6)
#define PAGECOOKIE_TO_SQL_OC(pc) ((pc) & 0x3F)
Operation *op,
SlapReply *rs,
ID *lastid );
+#endif /* ! BACKSQL_ARBITRARY_KEY */
static int
backsql_attrlist_add( backsql_srch_info *bsi, AttributeDescription *ad )
assert( 0 );
}
+#ifndef BACKSQL_ARBITRARY_KEY
/* If paged results are in effect, ignore low ldap_entries.id numbers */
if ( get_pagedresults(bsi->bsi_op) > SLAP_CONTROL_IGNORED ) {
unsigned long lowid = 0;
lowidstring );
}
}
+#endif /* ! BACKSQL_ARBITRARY_KEY */
rc = backsql_process_filter( bsi, bsi->bsi_filter );
if ( rc > 0 ) {
return BACKSQL_AVL_STOP;
}
+#ifndef BACKSQL_ARBITRARY_KEY
/* If paged results have already completed this objectClass, skip it */
if ( get_pagedresults(op) > SLAP_CONTROL_IGNORED ) {
if ( oc->bom_id < PAGECOOKIE_TO_SQL_OC( ((PagedResultsState *)op->o_pagedresults_state)->ps_cookie ) )
return BACKSQL_AVL_CONTINUE;
}
}
+#endif /* ! BACKSQL_ARBITRARY_KEY */
if ( bsi->bsi_n_candidates == -1 ) {
Debug( LDAP_DEBUG_TRACE, "backsql_oc_get_candidates(): "
backsql_srch_info bsi = { 0 };
backsql_entryID *eid = NULL;
struct berval nbase = BER_BVNULL;
- unsigned long lastid = 0;
+#ifndef BACKSQL_ARBITRARY_KEY
+ ID lastid = 0;
+#endif /* ! BACKSQL_ARBITRARY_KEY */
Debug( LDAP_DEBUG_TRACE, "==>backsql_search(): "
"base=\"%s\", filter=\"%s\", scope=%d,",
( op->ors_limit->lms_s_unchecked == -1 ? -2 :
( op->ors_limit->lms_s_unchecked ) ) );
+#ifndef BACKSQL_ARBITRARY_KEY
/* If paged results are in effect, check the paging cookie */
if ( get_pagedresults( op ) > SLAP_CONTROL_IGNORED ) {
rs->sr_err = parse_paged_cookie( op, rs );
goto done;
}
}
+#endif /* ! BACKSQL_ARBITRARY_KEY */
switch ( bsi.bsi_scope ) {
case LDAP_SCOPE_BASE:
if ( test_filter( op, e, op->ors_filter ) == LDAP_COMPARE_TRUE )
{
+#ifndef BACKSQL_ARBITRARY_KEY
/* If paged results are in effect, see if the page limit was exceeded */
if ( get_pagedresults(op) > SLAP_CONTROL_IGNORED ) {
if ( rs->sr_nentries >= ((PagedResultsState *)op->o_pagedresults_state)->ps_size )
}
lastid = SQL_TO_PAGECOOKIE( eid->eid_id, eid->eid_oc_id );
}
+#endif /* ! BACKSQL_ARBITRARY_KEY */
rs->sr_attrs = op->ors_attrs;
rs->sr_operational_attrs = NULL;
rs->sr_entry = e;
send_results:;
if ( rs->sr_err != SLAPD_ABANDON ) {
+#ifndef BACKSQL_ARBITRARY_KEY
if ( get_pagedresults(op) > SLAP_CONTROL_IGNORED ) {
send_paged_response( op, rs, NULL );
- } else {
+ } else
+#endif /* ! BACKSQL_ARBITRARY_KEY */
+ {
send_ldap_result( op, rs );
}
}
return 0;
}
-
+#ifndef BACKSQL_ARBITRARY_KEY
/* This function is copied verbatim from back-bdb/search.c */
static int
parse_paged_cookie( Operation *op, SlapReply *rs )
send_paged_response(
Operation *op,
SlapReply *rs,
- unsigned long *lastid )
+ ID *lastid )
{
LDAPControl ctrl, *ctrls[2];
BerElementBuffer berbuf;
done:
(void) ber_free_buf( ber );
}
+#endif /* ! BACKSQL_ARBITRARY_KEY */