[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Re: back-sql and unicode
> Hello,
> There is problem with unicode processing. (openldap 2.1.24 protocol v3)
> Currently back-sql sources uses ldap_pvt_str2upper function to uppercase
> filter values instead of unicode aware version. Thus search always
> returns empty result.
>
> Problem source files
> \servers\slapd\back-sql\search.c
> \servers\slapd\back-sql\sql-wrap.c
> \servers\slapd\back-sql\entry-id.c
> and \servers\slapd\ad.c
>
> And this patch fixes error in sql expression when left operand is empty:
You should open an ITS, and provide a patch against HEAD code
(simply run "cvs diff -u" from a checked out tree with
your changes applied).
p.
>
> file: \servers\slapd\back-sql\search.c
> static int
> backsql_process_filter_list( backsql_srch_info *bsi, Filter *f, int op )
> {
> .......
> res = backsql_process_filter( bsi, f );
> if ( res < 0 ) {
> /*
> * TimesTen : If the query has no answers,
> * don't bother to run the query.
> */
> return -1;
> }
> f = f->f_next;
> if ( f == NULL ) {
> break;
> }
>
> + if (res==0) continue; /*left operand is empty*/
>
> switch ( op ) {
> case LDAP_FILTER_AND:
> backsql_strfcat( &bsi->flt_where, &bsi->fwhere_len, "l",
> (ber_len_t)sizeof( " AND " ) - 1, " AND " );
> break;
> case LDAP_FILTER_OR:
> backsql_strfcat( &bsi->flt_where, &bsi->fwhere_len,
> "l",
> (ber_len_t)sizeof( " OR " ) - 1, " OR " );
> break;
> .......
> }
--
Pierangelo Masarati
mailto:pierangelo.masarati@sys-net.it