[Date Prev][Date Next] [Chronological] [Thread] [Top]

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:

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;
.......
}