DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(mysql.info.gz) UDF aggr

Info Catalog (mysql.info.gz) UDF calling (mysql.info.gz) Adding UDF (mysql.info.gz) UDF arguments
 
 25.2.2.2 UDF Calling Sequences for aggregate functions
 ......................................................
 
 Here follows a description of the different functions you need to define
 when you want to create an aggregate UDF function.
 
 Note that the following function is NOT needed or used by MySQL 4.1.1.
 You can keep still have define this function if you want to have your
 code work with both MySQL 4.0 and MySQL 4.1.1
 
      char *xxx_reset(UDF_INIT *initid, UDF_ARGS *args,
                      char *is_null, char *error);
 
 This function is called when MySQL finds the first row in a new group.
 In the function you should reset any internal summary variables and
 then set the given argument as the first argument in the group.
 
 In many cases this is implemented internally by reseting all variables
 (for example by calling `xxx_clear()' and then calling `xxx_add()'.
 
 The following function is only required by MySQL 4.1.1 and above:
 
      char *xxx_clear(UDF_INIT *initid, char *is_null, char *error);
 
 This function is called when MySQL needs to reset the summary results.
 This will be called at the beginning for each new group but can also be
 called to reset the values for a query where there was no matching rows.
 `is_null' will be set to point to `CHAR(0)' before calling
 `xxx_clear()'.
 
 You can use the `error' pointer to store a byte if something went wrong
 .
 
      char *xxx_add(UDF_INIT *initid, UDF_ARGS *args,
                    char *is_null, char *error);
 
 This function is called for all rows that belongs to the same group,
 except for the first row. In this you should add the value in UDF_ARGS
 to your internal summary variable.
 
 The `xxx()' function should be declared identical as when you define a
 simple UDF function.  UDF calling.
 
 This function is called when all rows in the group has been processed.
 You should normally never access the `args' variable here but return
 your value based on your internal summary variables.
 
 All argument processing in `xxx_reset()' and `xxx_add()' should be done
 identically as for normal UDFs.  UDF arguments.
 
 The return value handling in `xxx()' should be done identically as for
 a normal UDF.  UDF return values.
 
 The pointer argument to `is_null' and `error' is the same for all calls
 to `xxx_reset()', `xxx_clear()', `xxx_add()' and `xxx()'.  You can use
 this to remember that you got an error or if the `xxx()' function
 should return `NULL'. Note that you should not store a string into
 `*error'!  This is just a 1 byte flag!
 
 `is_null' is reset for each group (before calling `xxx_clear()').
 `error' is never reset.
 
 If `is_null' or `error' are set after `xxx()', then MySQL will return
 `NULL' as the result for the group function.
 
Info Catalog (mysql.info.gz) UDF calling (mysql.info.gz) Adding UDF (mysql.info.gz) UDF arguments
automatically generated byinfo2html