X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fback-sql%2Fentry-id.c;h=b864e803d4ab7b28e4bccfb1a201548086ae608c;hb=9647ccd9456b8781066dbba5a063bf6c6c9dab6d;hp=eea0e15f5541a7b2705de6bd3fd8284fce0ff69b;hpb=7ab954d516fcb48c683f13ec04fe10eec6696df9;p=openldap diff --git a/servers/slapd/back-sql/entry-id.c b/servers/slapd/back-sql/entry-id.c index eea0e15f55..b864e803d4 100644 --- a/servers/slapd/back-sql/entry-id.c +++ b/servers/slapd/back-sql/entry-id.c @@ -1,10 +1,21 @@ -/* - * Copyright 1999, Dmitry Kovalev , All rights reserved. +/* $OpenLDAP$ */ +/* This work is part of OpenLDAP Software . * - * Redistribution and use in source and binary forms are permitted only - * as authorized by the OpenLDAP Public License. A copy of this - * license is available at http://www.OpenLDAP.org/license.html or - * in file LICENSE in the top-level directory of the distribution. + * Copyright 1999-2003 The OpenLDAP Foundation. + * Portions Copyright 1999 Dmitry Kovalev. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted only as authorized by the OpenLDAP + * Public License. + * + * A copy of this license is available in the file LICENSE in the + * top-level directory of the distribution or, alternatively, at + * . + */ +/* ACKNOWLEDGEMENTS: + * This work was initially developed by Dmitry Kovalev for inclusion + * by OpenLDAP Software. */ #include "portable.h" @@ -266,12 +277,13 @@ backsql_has_children( static int backsql_get_attr_vals( void *v_at, void *v_bsi ) { - backsql_at_map_rec *at = v_at; - backsql_srch_info *bsi = v_bsi; - RETCODE rc; - SQLHSTMT sth; - BACKSQL_ROW_NTS row; - int i; + backsql_at_map_rec *at = v_at; + backsql_srch_info *bsi = v_bsi; + backsql_info *bi = (backsql_info *)bsi->op->o_bd->be_private; + RETCODE rc; + SQLHSTMT sth; + BACKSQL_ROW_NTS row; + int i; assert( at ); assert( bsi ); @@ -285,7 +297,7 @@ backsql_get_attr_vals( void *v_at, void *v_bsi ) if ( rc != SQL_SUCCESS ) { Debug( LDAP_DEBUG_TRACE, "backsql_get_attr_values(): " "error preparing query: %s\n", at->query, 0, 0 ); - backsql_PrintErrors( bsi->bi->db_env, bsi->dbh, sth, rc ); + backsql_PrintErrors( bi->db_env, bsi->dbh, sth, rc ); return 1; } @@ -301,7 +313,7 @@ backsql_get_attr_vals( void *v_at, void *v_bsi ) Debug( LDAP_DEBUG_TRACE, "backsql_get_attr_values(): " "error executing attribute query '%s'\n", at->query, 0, 0 ); - backsql_PrintErrors( bsi->bi->db_env, bsi->dbh, sth, rc ); + backsql_PrintErrors( bi->db_env, bsi->dbh, sth, rc ); SQLFreeStmt( sth, SQL_DROP ); return 1; } @@ -325,7 +337,8 @@ backsql_get_attr_vals( void *v_at, void *v_bsi ) bv.bv_len = strlen( row.cols[ i ] ); #endif backsql_entry_addattr( bsi->e, - &row.col_names[ i ], &bv ); + &row.col_names[ i ], &bv, + bsi->op->o_tmpmemctx ); #ifdef BACKSQL_TRACE Debug( LDAP_DEBUG_TRACE, "prec=%d\n", @@ -356,19 +369,18 @@ backsql_id2entry( backsql_srch_info *bsi, Entry *e, backsql_entryID *eid ) Debug( LDAP_DEBUG_TRACE, "==>backsql_id2entry()\n", 0, 0, 0 ); - rc = dnPrettyNormal( NULL, &eid->dn, &e->e_name, &e->e_nname ); + rc = dnPrettyNormal( NULL, &eid->dn, &e->e_name, &e->e_nname, + bsi->op->o_tmpmemctx ); if ( rc != LDAP_SUCCESS ) { return NULL; } - bsi->oc = backsql_id2oc( bsi->bi, eid->oc_id ); + bsi->oc = backsql_id2oc( bsi->op->o_bd->be_private, eid->oc_id ); bsi->e = e; bsi->c_eid = eid; e->e_attrs = NULL; e->e_private = NULL; - /* if ( bsi->base_dn != NULL)??? */ - e->e_id = eid->id; if ( bsi->attrs != NULL ) { @@ -377,16 +389,7 @@ backsql_id2entry( backsql_srch_info *bsi, Entry *e, backsql_entryID *eid ) for ( i = 0; bsi->attrs[ i ].an_name.bv_val; i++ ) { AttributeName *attr = &bsi->attrs[ i ]; - if ( attr->an_desc == ad_oc -#if 0 /* FIXME: what is 0.10 ? */ - || !BACKSQL_NCMP( &attr->an_name, &bv_n_0_10 ) -#endif - ) { -#if 0 - backsql_entry_addattr( bsi->e, - &bv_n_objectclass, - BACKSQL_OC_NAME( bsi->oc ) ); -#endif + if ( attr->an_desc == ad_oc ) { continue; } @@ -409,7 +412,8 @@ backsql_id2entry( backsql_srch_info *bsi, Entry *e, backsql_entryID *eid ) bsi, 0, AVL_INORDER ); } - if ( attr_mergeit_one( bsi->e, ad_oc, &bsi->oc->oc->soc_cname ) ) { + if ( attr_merge_normalize_one( bsi->e, ad_oc, &bsi->oc->oc->soc_cname, + bsi->op->o_tmpmemctx ) ) { entry_free( e ); return NULL; } @@ -420,12 +424,10 @@ backsql_id2entry( backsql_srch_info *bsi, Entry *e, backsql_entryID *eid ) size_t textlen = sizeof( textbuf ); struct berval bv[ 2 ]; struct berval soc; - AttributeDescription *ad_soc - = slap_schema.si_ad_structuralObjectClass; int rc; bv[ 0 ] = bsi->oc->oc->soc_cname; - bv[ 0 ].bv_val = NULL; + bv[ 1 ].bv_val = NULL; rc = structural_class( bv, &soc, NULL, &text, textbuf, textlen ); @@ -434,9 +436,12 @@ backsql_id2entry( backsql_srch_info *bsi, Entry *e, backsql_entryID *eid ) return NULL; } - if ( bsi->bsi_flags | BSQL_SF_ALL_OPER + if ( ( bsi->bsi_flags | BSQL_SF_ALL_OPER ) || an_find( bsi->attrs, &AllOper ) ) { - if ( attr_mergeit_one( bsi->e, ad_soc, &soc ) ) { + rc = attr_merge_normalize_one( bsi->e, + slap_schema.si_ad_structuralObjectClass, + &soc, bsi->op->o_tmpmemctx ); + if ( rc != LDAP_SUCCESS ) { entry_free( e ); return NULL; }