The initialization function should return 0
          if no error occurred and 1 otherwise. If an
          error occurs, xxx_init() should store a
          null-terminated error message in the
          message parameter. The message is returned
          to the client. The message buffer is
          MYSQL_ERRMSG_SIZE characters long, but you
          should try to keep the message to less than 80 characters so
          that it fits the width of a standard terminal screen.
        
          The return value of the main function xxx()
          is the function value, for long long and
          double functions. A string function should
          return a pointer to the result and set
          *length to the length (in bytes) of the
          return value. For example:
        
memcpy(result, "result string", 13); *length = 13;
          MySQL passes a buffer to the xxx() function
          via the result parameter. This buffer is
          sufficiently long to hold 255 characters, which as of MySQL
          4.1 can be multi-byte characters. The xxx()
          function can store the result in this buffer if it fits, in
          which case the return value should be a pointer to the buffer.
          If the function stores the result in a different buffer, it
          should return a pointer to that buffer.
        
          If your string function does not use the supplied buffer (for
          example, if it needs to return a string longer than 255
          characters), you must allocate the space for your own buffer
          with malloc() in your
          xxx_init() function or your
          xxx() function and free it in your
          xxx_deinit() function. You can store the
          allocated memory in the ptr slot in the
          UDF_INIT structure for reuse by future
          xxx() calls. See
          Section 18.2.2.1, “UDF Calling Sequences for Simple Functions”.
        
          To indicate a return value of NULL in the
          main function, set *is_null to
          1:
        
*is_null = 1;
          To indicate an error return in the main function, set
          *error to 1:
        
*error = 1;
          If xxx() sets *error to
          1 for any row, the function value is
          NULL for the current row and for any
          subsequent rows processed by the statement in which
          XXX() was invoked.
          (xxx() is not even called for subsequent
          rows.)
        
            Before MySQL 3.22.10, you should set both
            *error and *is_null:
          
*error = 1; *is_null = 1;


User Comments
Add your own comment.