X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fback-sql%2Futil.h;h=06e38d5824b19db090b7f251c87e2b291609a3d7;hb=6e9c21cff8fc740dc6ed21c6f64d9a8899a33401;hp=d75eba3799ef2f7f5dcca833680515ae7c43a5e2;hpb=ede3abc8c7565f1e342420c993e51dd38a089562;p=openldap diff --git a/servers/slapd/back-sql/util.h b/servers/slapd/back-sql/util.h index d75eba3799..06e38d5824 100644 --- a/servers/slapd/back-sql/util.h +++ b/servers/slapd/back-sql/util.h @@ -14,51 +14,70 @@ #include "entry-id.h" #include "schema-map.h" -#define BACKSQL_MAX(a,b) ((a)>(b)?(a):(b)) -#define BACKSQL_MIN(a,b) ((a)<(b)?(a):(b)) +#define BACKSQL_CONCAT -#define BACKSQL_STR_GROW 64 +struct berval * backsql_strcat( struct berval *dest, ber_len_t *buflen, ... ); +struct berval * backsql_strfcat( struct berval *dest, ber_len_t *buflen, + const char *fmt, ... ); -char* backsql_strcat(char* dest,int *buflen, ...); +int backsql_entry_addattr( Entry *e, struct berval *at_name, + struct berval *at_val ); -int backsql_entry_addattr(Entry *e,char *at_name,char *at_val,unsigned int at_val_len); +typedef struct backsql_srch_info { + struct berval *base_dn; + int scope; + Filter *filter; + int slimit, tlimit; + time_t stoptime; + backsql_entryID *id_list, *c_eid; + int n_candidates; + int abandon; + backsql_info *bi; + backsql_oc_map_rec *oc; + struct berval sel, from, join_where, flt_where; + ber_len_t sel_len, from_len, jwhere_len, fwhere_len; + SQLHDBC dbh; + int status; + Backend *be; + Connection *conn; + Operation *op; + AttributeName *attrs; + int bsi_flags; +#define BSQL_SF_ALL_OPER 0x0001 +#define BSQL_SF_FILTER_HASSUBORDINATE 0x0002 + Entry *e; + /* 1 if the db is TimesTen; 0 if it's not */ + int use_reverse_dn; +} backsql_srch_info; -typedef struct __backsql_srch_info -{ - char *base_dn; - int scope; - Filter *filter; - int slimit,tlimit; - time_t stoptime; - backsql_entryID *id_list,*c_eid; - int abandon; - backsql_info *bi; - backsql_oc_map_rec *oc; - char *sel,*from,*join_where,*flt_where; - int sel_len,from_len,jwhere_len,fwhere_len; - SQLHDBC dbh; - int status; - Backend *be; - Connection *conn; - Operation *op; - char **attrs; - Entry *e; - int isTimesTen; /* 1 if the db is TimesTen; 0 if it's not */ -}backsql_srch_info; +void backsql_init_search( backsql_srch_info *bsi, backsql_info *bi, + struct berval *nbase, int scope, int slimit, int tlimit, + time_t stoptime, Filter *filter, SQLHDBC dbh, + BackendDB *be, Connection *conn, Operation *op, + AttributeName *attrs ); +Entry *backsql_id2entry( backsql_srch_info *bsi, Entry *e, + backsql_entryID *id ); -int backsql_process_filter(backsql_srch_info *bsi,Filter *f); -void backsql_init_search(backsql_srch_info *bsi,backsql_info *bi,char *nbase,int scope, - int slimit,int tlimit,time_t stoptime,Filter *filter, - SQLHDBC dbh,Backend *be,Connection *conn,Operation *op,struct berval **attrs); -Entry* backsql_id2entry(backsql_srch_info *bsi,Entry* e,backsql_entryID* id); +extern char + backsql_def_oc_query[], + backsql_def_needs_select_oc_query[], + backsql_def_at_query[], + backsql_def_delentry_query[], + backsql_def_insentry_query[], + backsql_def_subtree_cond[], + backsql_def_upper_subtree_cond[], + backsql_id_query[], + backsql_def_concat_func[]; +extern char + backsql_check_dn_ru_query[]; -extern char backsql_def_oc_query[],backsql_def_at_query[], - backsql_def_delentry_query[],backsql_def_insentry_query[], - backsql_def_subtree_cond[],backsql_id_query[]; -extern char backsql_check_dn_ru_query[]; +int backsql_merge_from_clause( struct berval *dest_from, ber_len_t *dest_len, + struct berval *src_from ); -int backsql_merge_from_clause(char **dest_from,int *dest_len,char *src_from); +int backsql_split_pattern( const char *pattern, BerVarray *split_pattern, + int expected ); +int backsql_prepare_pattern( BerVarray split_pattern, BerVarray values, + struct berval *res ); - -#endif +#endif /* __BACKSQL_UTIL_H__ */