Hi,

I finally could get MySql UDF functions to work under win32 (VC++).  The 
only thing that concerns me is that it nevers returns any error message.
It works fine, but none error message is displayed.


The function expects 2 strings, if one, more or none is passed, I should get 
the error message "Wrong arguments to rateStrings", but I dont, seems like 
rateString_init() doesn't get called at all.


Any help will be appreciated.

Please see a sample code:


my_bool rateStrings_init(UDF_INIT *initid, UDF_ARGS *args, char *message);
void rateStrings_deinit(UDF_INIT *initid);
double rateStrings(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char 
*error);

my_bool rateStrings_init(UDF_INIT *initid, UDF_ARGS *args, char *message)
{
  if (args->arg_count != 2 || args->arg_type[0] != STRING_RESULT  || 
args->arg_type[1] != STRING_RESULT)
  {
    strcpy(message,"Wrong arguments to rateStrings;  Use the source");
    return 1;
  }
   return 0;
}

void rateStrings_deinit(UDF_INIT *initid)
{

}

double rateStrings(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char 
*error)
{
        double r;

        long l1, l2;

        char* tmpStr1;
        char* tmpStr2;

        if (args->args[0] == NULL || args->args[1] == NULL) {
                *is_null = 1;
                *error = 1;
                return 0;
        }

        l1 = strlen(args->args[0]);
        l2 = strlen(args->args[1]);

        tmpStr1 = new char[l1+1];
        tmpStr2 = new char[l2+1];

        strcpy(tmpStr1, args->args[0]);
        strcpy(tmpStr2, args->args[1]);

        tmpStr1[l1] = '\0';
        tmpStr2[l2] = '\0';

        char* sourceStr1 = tmpStr1;
        char* sourceStr2 = tmpStr2;

        while(*sourceStr1)
                *sourceStr1++ = toupper(*sourceStr1);

        while(*sourceStr2)
                *sourceStr2++ = toupper(*sourceStr2);

        if (l1 == 0 || l2 == 0)
                return 0;

        if (strcmp(tmpStr1, tmpStr2) == 0)
                return 1;

        r = (double)subSim(1, l1, 1, l2, tmpStr1, tmpStr2) / (l1 + l2) * 2;
//subSim is not included in this message.


        delete[] tmpStr1;
        delete[] tmpStr2;
        return r;
}

Regards,
Fabian von Romberg


_________________________________________________________________
Join the world’s largest e-mail service with MSN Hotmail. 
http://www.hotmail.com


---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to