>Description:
        My udf function and an equal udf function I found in the internet
        seem to work well as does substring_index. Only when I call them
        together I get a bug. As my function (quotet below) is so simple 
        that it doubtly has a bug I guess substring_index has one.
>How-To-Repeat:
        mysql> select substring_index("1.2.3.4/24","/",1) ;
        +-------------------------------------+
        | substring_index("1.2.3.4/24","/",1) |
        +-------------------------------------+
        | 1.2.3.4                             |
        +-------------------------------------+
        1 row in set (0.00 sec)

        mysql> select ewu_aton("1.2.3.4");                 
        +---------------------+
        | ewu_aton("1.2.3.4") |
        +---------------------+
        |            16909060 |
        +---------------------+
        1 row in set (0.01 sec)

        mysql> select ewu_aton( substring_index("1.2.3.4/24","/",1) );
        +-------------------------------------------------+
        | ewu_aton( substring_index("1.2.3.4/24","/",1) ) |
        +-------------------------------------------------+
        |                                      3772388104 |
        +-------------------------------------------------+
        1 row in set (0.00 sec)
        
        Here the correct value should had been 16909060 (0x01020304), too!


        My Function:
        /*
        ** inet_aton() 
        */
        my_bool ewu_aton_init(UDF_INIT *initid, UDF_ARGS *args, char *message)
        {
          if (args->arg_count != 1 || args->arg_type[0] != STRING_RESULT)
          {
            strmov(message,"Wrong arguments to ewu_aton;  Use the source!");
            return 1;
          }
          initid->max_length=20;
          initid->maybe_null=0;
          return 0;
        }
        long long ewu_aton(UDF_INIT *initid, UDF_ARGS *args,
                           char *is_null, char *error)
        {
          struct in_addr        in;
         
          inet_aton(((char*) args->args[0]), &in);
          *is_null=0;

          return htonl(in.s_addr);
        }

>Fix:
        I'd wish I'd have one :-)

>Submitter-Id:  <submitter ID>
>Originator:    Christian Hammers
>Organization:  WESTEND GmbH
>MySQL support: none
>Synopsis:      substring_index bug with udf function
>Severity:      serious
>Priority:      medium
>Category:      mysql
>Class:         sw-bug
>Release:       mysql-3.23.30-gamma (Source distribution)
>Server: /usr/bin/mysqladmin  Ver 8.13 Distrib 3.23.30-gamma, for pc-linux-gnu on i586
Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license

Server version          3.23.30-gamma and 3.21.30
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/run/mysqld/mysqld.sock
Uptime:                 5 days 17 hours 34 min 27 sec

Threads: 3  Questions: 128800303  Slow queries: 1299  Opens: 260  Flush tables: 1  
Open tables: 48 Queries per second avg: 260.062
>Environment:
        Testet on two different i386 architecture machins running with two
        versions of Debian GNU/Linux (an old and the latest)
System: Linux han 2.4.0-test12 #1 Fre Dez 22 15:58:55 CET 2000 i686 unknown
Architecture: i686

Some paths:  /usr/bin/perl /usr/bin/make /usr/local/bin/gcc /usr/bin/cc
GCC: Reading specs from /usr/local/pgcc/lib/gcc-lib/i686-pc-linux-gnu/pgcc-2.95.2/specs
gcc version pgcc-2.95.2 19991024 (release)
Compilation info: CC='gcc'  CFLAGS='-O2 -fomit-frame-pointer -g'  CXX='g++'  
CXXFLAGS='-O2 -fomit-frame-pointer -g -felide-constructors -fno-exceptions -fno-rtti'  
LDFLAGS=''
LIBC: 
lrwxrwxrwx    1 root     root           13 Jan 19 09:25 /lib/libc.so.6 -> libc-2.2.1.so
-rwxr-xr-x    1 root     root      1078540 Jan 14 07:51 /lib/libc-2.2.1.so
-rw-r--r--    1 root     root      2471916 Jan 14 07:53 /usr/lib/libc.a
-rw-r--r--    1 root     root          178 Jan 14 07:53 /usr/lib/libc.so
-rw-r--r--    1 root     root      2024202 Sep  6 15:18 /usr/lib/libc-client.a
-rw-r--r--    1 root     root       665260 Sep  6 15:18 /usr/lib/libc-client.so
-rw-r--r--    1 root     root       665260 Sep  6 15:18 /usr/lib/libc-client.so.4.7
Configure command: ./configure  --prefix=/usr --exec-prefix=/usr 
--libexecdir=/usr/sbin --datadir=/usr/share --sysconfdir=/etc/mysql 
--localstatedir=/var/lib/mysql --includedir=/usr/include --infodir=/usr/share/info 
--mandir=/usr/share/man --enable-shared --with-libwrap --enable-assembler 
--with-berkeley-db-includes=/home/ch/debian/mysql/mysql-3.23.30/debian/db-3.2.3g/build_unix
 
--with-berkeley-db-libs=/home/ch/debian/mysql/mysql-3.23.30/debian/db-3.2.3g/build_unix
 --enable-static --enable-shared --with-raid 
--with-unix-socket-path=/var/run/mysqld/mysqld.sock --with-mysqld-user=mysql 
--without-bench --without-readline --with-extra-charsets=all


---------------------------------------------------------------------
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