mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-06 10:46:21 +08:00
(blindly) allow to build with BACKSQL_ARBITRARY_KEY defined (ITS#6100). Please note that this disables paged results support
This commit is contained in:
parent
6bd1861101
commit
8d55fbf5c6
@ -41,7 +41,9 @@ sql_back_initialize(
|
||||
#ifdef SLAP_CONTROL_X_TREE_DELETE
|
||||
SLAP_CONTROL_X_TREE_DELETE,
|
||||
#endif /* SLAP_CONTROL_X_TREE_DELETE */
|
||||
#ifndef BACKSQL_ARBITRARY_KEY
|
||||
LDAP_CONTROL_PAGEDRESULTS,
|
||||
#endif /* ! BACKSQL_ARBITRARY_KEY */
|
||||
NULL
|
||||
};
|
||||
|
||||
|
@ -48,6 +48,9 @@ static int backsql_process_filter_attr( backsql_srch_info *bsi, Filter *f,
|
||||
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)
|
||||
@ -58,6 +61,7 @@ static void send_paged_response(
|
||||
Operation *op,
|
||||
SlapReply *rs,
|
||||
ID *lastid );
|
||||
#endif /* ! BACKSQL_ARBITRARY_KEY */
|
||||
|
||||
static int
|
||||
backsql_attrlist_add( backsql_srch_info *bsi, AttributeDescription *ad )
|
||||
@ -1551,6 +1555,7 @@ backsql_srch_query( backsql_srch_info *bsi, struct berval *query )
|
||||
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;
|
||||
@ -1574,6 +1579,7 @@ backsql_srch_query( backsql_srch_info *bsi, struct berval *query )
|
||||
lowidstring );
|
||||
}
|
||||
}
|
||||
#endif /* ! BACKSQL_ARBITRARY_KEY */
|
||||
|
||||
rc = backsql_process_filter( bsi, bsi->bsi_filter );
|
||||
if ( rc > 0 ) {
|
||||
@ -1654,6 +1660,7 @@ backsql_oc_get_candidates( void *v_oc, void *v_bsi )
|
||||
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 ) )
|
||||
@ -1661,6 +1668,7 @@ backsql_oc_get_candidates( void *v_oc, void *v_bsi )
|
||||
return BACKSQL_AVL_CONTINUE;
|
||||
}
|
||||
}
|
||||
#endif /* ! BACKSQL_ARBITRARY_KEY */
|
||||
|
||||
if ( bsi->bsi_n_candidates == -1 ) {
|
||||
Debug( LDAP_DEBUG_TRACE, "backsql_oc_get_candidates(): "
|
||||
@ -1988,7 +1996,9 @@ backsql_search( Operation *op, SlapReply *rs )
|
||||
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,",
|
||||
@ -2125,6 +2135,7 @@ backsql_search( Operation *op, SlapReply *rs )
|
||||
( 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 );
|
||||
@ -2133,6 +2144,7 @@ backsql_search( Operation *op, SlapReply *rs )
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
#endif /* ! BACKSQL_ARBITRARY_KEY */
|
||||
|
||||
switch ( bsi.bsi_scope ) {
|
||||
case LDAP_SCOPE_BASE:
|
||||
@ -2409,6 +2421,7 @@ backsql_search( Operation *op, SlapReply *rs )
|
||||
|
||||
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 )
|
||||
@ -2419,6 +2432,7 @@ backsql_search( Operation *op, SlapReply *rs )
|
||||
}
|
||||
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;
|
||||
@ -2466,9 +2480,12 @@ end_of_search:;
|
||||
|
||||
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 );
|
||||
}
|
||||
}
|
||||
@ -2663,7 +2680,7 @@ backsql_entry_release(
|
||||
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 )
|
||||
@ -2716,7 +2733,7 @@ static void
|
||||
send_paged_response(
|
||||
Operation *op,
|
||||
SlapReply *rs,
|
||||
unsigned long *lastid )
|
||||
ID *lastid )
|
||||
{
|
||||
LDAPControl ctrl, *ctrls[2];
|
||||
BerElementBuffer berbuf;
|
||||
@ -2767,3 +2784,4 @@ send_paged_response(
|
||||
done:
|
||||
(void) ber_free_buf( ber );
|
||||
}
|
||||
#endif /* ! BACKSQL_ARBITRARY_KEY */
|
||||
|
Loading…
Reference in New Issue
Block a user