Package: firebird2-classic-server Version: 1.5.1-4 Severity: normal Tags: patch
UDF (user defined libraries) are extensions library to firebird sql engine; to use them (fbudf.so ib_udf.so) you need to register the sql functions in the server engine. These are two scripts missing from the debian package, that are in the original distribution from firebirdsql site. I attach them here, but they need to be distributed with the package. -- System Information: Debian Release: testing/unstable APT prefers testing APT policy: (500, 'testing') Architecture: i386 (i686) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.8-7-686-w4l Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968) Versions of packages firebird2-classic-server depends on: ii firebird2-server-common 1.5.1-4 Common files for Firebird - a RDBM ii libc6 2.3.2.ds1-22 GNU C Library: Shared libraries an ii libfirebird2-classic 1.5.1-4 Library files for Firebird Classic ii libgcc1 1:4.0.1-2 GCC support library ii libncurses5 5.4-9 Shared libraries for terminal hand ii libstdc++5 1:3.3.5-13 The GNU Standard C++ Library v3 firebird2-classic-server recommends no packages. -- no debconf information
/* * * The contents of this file are subject to the Initial * Developer's Public License Version 1.0 (the "License"); * you may not use this file except in compliance with the * License. You may obtain a copy of the License at * http://www.ibphoenix.com/idpl.html. * * Software distributed under the License is distributed on * an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either * express or implied. See the License for the specific * language governing rights and limitations under the License. * * * The Original Code was created by Claudio Valderama C. for IBPhoenix. * The development of the Original Code was sponsored by Craig Leonardi. * * Copyright (c) 2001 IBPhoenix * All Rights Reserved. */ /*This file defines the new udfs for firebird.*/ set sql dialect 3; --FBUDF_API paramdsc* idNvl(paramdsc* v, paramdsc* v2) declare external function invl int by descriptor, int by descriptor returns int by descriptor entry_point 'idNvl' module_name 'fbudf'; --FBUDF_API paramdsc* idNvl(paramdsc* v, paramdsc* v2) declare external function i64nvl numeric(18,0) by descriptor, numeric(18,0) by descriptor returns numeric(18,0) by descriptor entry_point 'idNvl' module_name 'fbudf'; --FBUDF_API paramdsc* idNvl(paramdsc* v, paramdsc* v2) declare external function dnvl double precision by descriptor, double precision by descriptor returns double precision by descriptor entry_point 'idNvl' module_name 'fbudf'; --FBUDF_API paramdsc* sNvl(paramdsc* v, paramdsc* v2, paramdsc* rc) declare external function snvl varchar(100) by descriptor, varchar(100) by descriptor, varchar(100) by descriptor returns parameter 3 entry_point 'sNvl' module_name 'fbudf'; --FBUDF_API paramdsc* iNullIf(paramdsc* v, paramdsc* v2) declare external function inullif int by descriptor, int by descriptor returns int by descriptor entry_point 'iNullIf' module_name 'fbudf'; --FBUDF_API paramdsc* dNullIf(paramdsc* v, paramdsc* v2) declare external function dnullif double precision by descriptor, double precision by descriptor returns double precision by descriptor entry_point 'dNullIf' module_name 'fbudf'; --FBUDF_API paramdsc* iNullIf(paramdsc* v, paramdsc* v2) declare external function i64nullif numeric(18,4) by descriptor, numeric(18,4) by descriptor returns numeric(18,4) by descriptor entry_point 'iNullIf' module_name 'fbudf'; --FBUDF_API paramdsc* sNullIf(paramdsc* v, paramdsc* v2, paramdsc* rc) declare external function snullif varchar(100) by descriptor, varchar(100) by descriptor, varchar(100) by descriptor returns parameter 3 entry_point 'sNullIf' module_name 'fbudf'; --FBUDF_API char* DOW(ISC_DATE* v, char* rc) declare external function dow timestamp, varchar(15) returns parameter 2 entry_point 'DOW' module_name 'fbudf'; --FBUDF_API char* SDOW(ISC_DATE* v, char* rc) declare external function sdow timestamp, varchar(5) returns parameter 2 entry_point 'SDOW' module_name 'fbudf'; --FBUDF_API paramdsc* right(paramdsc*, short* rl, paramdsc* rc) declare external function sright varchar(100) by descriptor, smallint, varchar(100) by descriptor returns parameter 3 entry_point 'right' module_name 'fbudf'; --FBUDF_API ISC_TIMESTAMP* addDay(ISC_TIMESTAMP* v, int ndays) declare external function addDay timestamp, int returns timestamp entry_point 'addDay' module_name 'fbudf'; --FBUDF_API ISC_TIMESTAMP* addWeek(ISC_TIMESTAMP* v, int nweeks) declare external function addWeek timestamp, int returns timestamp entry_point 'addWeek' module_name 'fbudf'; --FBUDF_API ISC_TIMESTAMP* addMonth(ISC_TIMESTAMP* v, int nmonths) declare external function addMonth timestamp, int returns timestamp entry_point 'addMonth' module_name 'fbudf'; --FBUDF_API ISC_TIMESTAMP* addYear(ISC_TIMESTAMP* v, int nyears) declare external function addYear timestamp, int returns timestamp entry_point 'addYear' module_name 'fbudf'; --FBUDF_API ISC_TIMESTAMP* addMilliSecond(ISC_TIMESTAMP* v, int nseconds) declare external function addMilliSecond timestamp, int returns timestamp entry_point 'addMilliSecond' module_name 'fbudf'; --FBUDF_API ISC_TIMESTAMP* addSecond(ISC_TIMESTAMP* v, int nseconds) declare external function addSecond timestamp, int returns timestamp entry_point 'addSecond' module_name 'fbudf'; --FBUDF_API ISC_TIMESTAMP* addMinute(ISC_TIMESTAMP* v, int nminutes) declare external function addMinute timestamp, int returns timestamp entry_point 'addMinute' module_name 'fbudf'; --FBUDF_API ISC_TIMESTAMP* addHour(ISC_TIMESTAMP* v, int nhours) declare external function addHour timestamp, int returns timestamp entry_point 'addHour' module_name 'fbudf'; --It will work only with Win32 until it's ported to another OS. --FBUDF_API ISC_TIMESTAMP* getExactTimestamp(ISC_TIMESTAMP* rc) declare external function getExactTimestamp timestamp returns parameter 1 entry_point 'getExactTimestamp' module_name 'fbudf'; --FBUDF_API paramdsc* fbtruncate(paramdsc* v, paramdsc* rc) declare external function Truncate int by descriptor, int by descriptor returns parameter 2 entry_point 'fbtruncate' module_name 'fbudf'; --FBUDF_API paramdsc* fbtruncate(paramdsc* v, paramdsc* rc) declare external function i64Truncate numeric(18) by descriptor, numeric(18) by descriptor returns parameter 2 entry_point 'fbtruncate' module_name 'fbudf'; --FBUDF_API paramdsc* fbround(paramdsc* v, paramdsc* rc) declare external function Round int by descriptor, int by descriptor returns parameter 2 entry_point 'fbround' module_name 'fbudf'; --FBUDF_API paramdsc* fbround(paramdsc* v, paramdsc* rc) declare external function i64Round numeric(18, 4) by descriptor, numeric(18, 4) by descriptor returns parameter 2 entry_point 'fbround' module_name 'fbudf'; --FBUDF_API paramdsc* power(paramdsc* v, paramdsc* v2, paramdsc* rc) declare external function dPower double precision by descriptor, double precision by descriptor, double precision by descriptor returns parameter 3 entry_point 'power' module_name 'fbudf'; --FBUDF_API blobcallback* string2blob(paramdsc* v, blobcallback* outblob) declare external function string2blob varchar(300) by descriptor, blob returns parameter 2 entry_point 'string2blob' module_name 'fbudf';
/* * The contents of this file are subject to the Interbase Public * License Version 1.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy * of the License at http://www.Inprise.com/IPL.html * * Software distributed under the License is distributed on an * "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express * or implied. See the License for the specific language governing * rights and limitations under the License. * * The Original Code was created by Inprise Corporation * and its predecessors. Portions created by Inprise Corporation are * Copyright (C) Inprise Corporation. * * All Rights Reserved. * Contributor(s): ______________________________________. * $Id: ib_udf.sql,v 1.4 2003/02/04 17:27:38 dimitr Exp $ * Revision 1.2 2000/11/28 06:47:52 fsg * Changed declaration of ascii_char in ib_udf.sql * to get correct result as proposed by Claudio Valderrama * 2001.5.19 Claudio Valderrama, add the declaration of alternative * substrlen function to handle string,start,length instead. * */ /***************************************** * * a b s * ***************************************** * * Functional description: * Returns the absolute value of a * number. * *****************************************/ DECLARE EXTERNAL FUNCTION abs DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_abs' MODULE_NAME 'ib_udf'; /***************************************** * * a c o s * ***************************************** * * Functional description: * Returns the arccosine of a number * between -1 and 1, if the number is * out of bounds it returns NaN, as handled * by the _matherr routine. * *****************************************/ DECLARE EXTERNAL FUNCTION acos DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_acos' MODULE_NAME 'ib_udf'; /***************************************** * * a s c i i _ c h a r * ***************************************** * * Functional description: * Returns the ASCII character corresponding * with the value passed in. * *****************************************/ DECLARE EXTERNAL FUNCTION ascii_char INTEGER RETURNS CSTRING(1) FREE_IT ENTRY_POINT 'IB_UDF_ascii_char' MODULE_NAME 'ib_udf'; /***************************************** * * a s c i i _ v a l * ***************************************** * * Functional description: * Returns the ascii value of the character * passed in. * *****************************************/ DECLARE EXTERNAL FUNCTION ascii_val CHAR(1) RETURNS INTEGER BY VALUE ENTRY_POINT 'IB_UDF_ascii_val' MODULE_NAME 'ib_udf'; /***************************************** * * a s i n * ***************************************** * * Functional description: * Returns the arcsin of a number between * -1 and 1, if the number is out of * range NaN is returned. * *****************************************/ DECLARE EXTERNAL FUNCTION asin DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_asin' MODULE_NAME 'ib_udf'; /***************************************** * * a t a n * ***************************************** * * Functional description: * Returns the arctangent of a number. * * *****************************************/ DECLARE EXTERNAL FUNCTION atan DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_atan' MODULE_NAME 'ib_udf'; /***************************************** * * a t a n 2 * ***************************************** * * Functional description: * Returns the arctangent of the * first param / the second param. * *****************************************/ DECLARE EXTERNAL FUNCTION atan2 DOUBLE PRECISION, DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_atan2' MODULE_NAME 'ib_udf'; /***************************************** * * b i n _ a n d * ***************************************** * * Functional description: * Returns the result of a binary AND * operation performed on the two numbers. * *****************************************/ DECLARE EXTERNAL FUNCTION bin_and INTEGER, INTEGER RETURNS INTEGER BY VALUE ENTRY_POINT 'IB_UDF_bin_and' MODULE_NAME 'ib_udf'; /***************************************** * * b i n _ o r * ***************************************** * * Functional description: * Returns the result of a binary OR * operation performed on the two numbers. * *****************************************/ DECLARE EXTERNAL FUNCTION bin_or INTEGER, INTEGER RETURNS INTEGER BY VALUE ENTRY_POINT 'IB_UDF_bin_or' MODULE_NAME 'ib_udf'; /***************************************** * * b i n _ x o r * ***************************************** * * Functional description: * Returns the result of a binary XOR * operation performed on the two numbers. * *****************************************/ DECLARE EXTERNAL FUNCTION bin_xor INTEGER, INTEGER RETURNS INTEGER BY VALUE ENTRY_POINT 'IB_UDF_bin_xor' MODULE_NAME 'ib_udf'; /***************************************** * * c e i l i n g * ***************************************** * * Functional description: * Returns a double value representing * the smallest integer that is greater * than or equal to the input value. * *****************************************/ DECLARE EXTERNAL FUNCTION ceiling DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_ceiling' MODULE_NAME 'ib_udf'; /***************************************** * * c o s * ***************************************** * * Functional description: * The cos function returns the cosine * of x. If x is greater than or equal * to 263, or less than or equal to -263, * a loss of significance in the result * of a call to cos occurs, in which case * the function generates a _TLOSS error * and returns an indefinite (same as a * quiet NaN). * *****************************************/ DECLARE EXTERNAL FUNCTION cos DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_cos' MODULE_NAME 'ib_udf'; /***************************************** * * c o s h * ***************************************** * * Functional description: * The cosh function returns the hyperbolic cosine * of x. If x is greater than or equal * to 263, or less than or equal to -263, * a loss of significance in the result * of a call to cos occurs, in which case * the function generates a _TLOSS error * and returns an indefinite (same as a * quiet NaN). * *****************************************/ DECLARE EXTERNAL FUNCTION cosh DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_cosh' MODULE_NAME 'ib_udf'; /***************************************** * * c o t * ***************************************** * * Functional description: * Returns 1 over the tangent of the * input parameter. * *****************************************/ DECLARE EXTERNAL FUNCTION cot DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_cot' MODULE_NAME 'ib_udf'; /***************************************** * * d i v * ***************************************** * * Functional description: * Returns the quotient part of the division * of the two input parameters. * *****************************************/ DECLARE EXTERNAL FUNCTION div INTEGER, INTEGER RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_div' MODULE_NAME 'ib_udf'; /***************************************** * * f l o o r * ***************************************** * * Functional description: * Returns a floating-point value * representing the largest integer that * is less than or equal to x * *****************************************/ DECLARE EXTERNAL FUNCTION floor DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_floor' MODULE_NAME 'ib_udf'; /***************************************** * * l n * ***************************************** * * Functional description: * Returns the natural log of a number. * *****************************************/ DECLARE EXTERNAL FUNCTION ln DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_ln' MODULE_NAME 'ib_udf'; /***************************************** * * l o g * ***************************************** * * Functional description: * log (x,y) returns the logarithm * base x of y. * *****************************************/ DECLARE EXTERNAL FUNCTION log DOUBLE PRECISION, DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_log' MODULE_NAME 'ib_udf'; /***************************************** * * l o g 1 0 * ***************************************** * * Functional description: * Returns the logarithm base 10 of the * input parameter. * *****************************************/ DECLARE EXTERNAL FUNCTION log10 DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_log10' MODULE_NAME 'ib_udf'; /***************************************** * * l o w e r * ***************************************** * * Functional description: * Returns the input string into lower * case characters. Note: This function * will not work with international and * non-ascii characters. * Note: This function is NOT limited to * receiving and returning only 80 characters, * rather, it can use as long as 32767 * characters which is the limit on an * INTERBASE character string. * *****************************************/ DECLARE EXTERNAL FUNCTION lower CSTRING(80) RETURNS CSTRING(80) FREE_IT ENTRY_POINT 'IB_UDF_lower' MODULE_NAME 'ib_udf'; /***************************************** * * l p a d * ***************************************** * * Functional description: * Appends the given character to beginning * of the input string until length of the result * string becomes equal to the given number. * Note: This function is NOT limited to * receiving and returning only 80 characters, * rather, it can use as long as 32767 * characters which is the limit on an * INTERBASE character string. * *****************************************/ DECLARE EXTERNAL FUNCTION lpad CSTRING(80), INTEGER, CSTRING(1) RETURNS CSTRING(80) FREE_IT ENTRY_POINT 'IB_UDF_lpad' MODULE_NAME 'ib_udf'; /***************************************** * * l t r i m * ***************************************** * * Functional description: * Removes leading spaces from the input * string. * Note: This function is NOT limited to * receiving and returning only 80 characters, * rather, it can use as long as 32767 * characters which is the limit on an * INTERBASE character string. * *****************************************/ DECLARE EXTERNAL FUNCTION ltrim CSTRING(80) RETURNS CSTRING(80) FREE_IT ENTRY_POINT 'IB_UDF_ltrim' MODULE_NAME 'ib_udf'; /***************************************** * * m o d * ***************************************** * * Functional description: * Returns the remainder part of the * division of the two input parameters. * *****************************************/ DECLARE EXTERNAL FUNCTION mod INTEGER, INTEGER RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_mod' MODULE_NAME 'ib_udf'; /***************************************** * * p i * ***************************************** * * Functional description: * Returns the value of pi = 3.1459... * *****************************************/ DECLARE EXTERNAL FUNCTION pi RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_pi' MODULE_NAME 'ib_udf'; /***************************************** * * r a n d * ***************************************** * * Functional description: * Returns a random number between 0 * and 1. Note the random number * generator is seeded using the current * time. * *****************************************/ DECLARE EXTERNAL FUNCTION rand RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_rand' MODULE_NAME 'ib_udf'; /***************************************** * * r p a d * ***************************************** * * Functional description: * Appends the given character to end * of the input string until length of the result * string becomes equal to the given number. * Note: This function is NOT limited to * receiving and returning only 80 characters, * rather, it can use as long as 32767 * characters which is the limit on an * INTERBASE character string. * *****************************************/ DECLARE EXTERNAL FUNCTION rpad CSTRING(80), INTEGER, CSTRING(1) RETURNS CSTRING(80) FREE_IT ENTRY_POINT 'IB_UDF_rpad' MODULE_NAME 'ib_udf'; /***************************************** * * r t r i m * ***************************************** * * Functional description: * Removes trailing spaces from the input * string. * Note: This function is NOT limited to * receiving and returning only 80 characters, * rather, it can use as long as 32767 * characters which is the limit on an * INTERBASE character string. * *****************************************/ DECLARE EXTERNAL FUNCTION rtrim CSTRING(80) RETURNS CSTRING(80) FREE_IT ENTRY_POINT 'IB_UDF_rtrim' MODULE_NAME 'ib_udf'; /***************************************** * * s i g n * ***************************************** * * Functional description: * Returns 1, 0, or -1 depending on whether * the input value is positive, zero or * negative, respectively. * *****************************************/ DECLARE EXTERNAL FUNCTION sign DOUBLE PRECISION RETURNS INTEGER BY VALUE ENTRY_POINT 'IB_UDF_sign' MODULE_NAME 'ib_udf'; /***************************************** * * s i n * ***************************************** * * Functional description: * Returns the sine of x. If x is greater * than or equal to 263, or less than or * equal to -263, a loss of significance * in the result occurs, in which case the * function generates a _TLOSS error and * returns an indefinite (same as a quiet NaN). * *****************************************/ DECLARE EXTERNAL FUNCTION sin DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_sin' MODULE_NAME 'ib_udf'; /***************************************** * * s i n h * ***************************************** * * Functional description: * Returns the hyperbolic sine of x. If x is greater * than or equal to 263, or less than or * equal to -263, a loss of significance * in the result occurs, in which case the * function generates a _TLOSS error and * returns an indefinite (same as a quiet NaN). * *****************************************/ DECLARE EXTERNAL FUNCTION sinh DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_sinh' MODULE_NAME 'ib_udf'; /***************************************** * * s q r t * ***************************************** * * Functional description: * Returns the square root of a number. * *****************************************/ DECLARE EXTERNAL FUNCTION sqrt DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_sqrt' MODULE_NAME 'ib_udf'; /***************************************** * * s u b s t r * ***************************************** * * Functional description: * substr(s,m,n) returns the substring * of s which starts at position m and * ending at position n. * Note: This function is NOT limited to * receiving and returning only 80 characters, * rather, it can use as long as 32767 * characters which is the limit on an * INTERBASE character string. * Change by Claudio Valderrama: when n>length(s), * the result will be the original string instead * of NULL as it was originally designed. * *****************************************/ DECLARE EXTERNAL FUNCTION substr CSTRING(80), SMALLINT, SMALLINT RETURNS CSTRING(80) FREE_IT ENTRY_POINT 'IB_UDF_substr' MODULE_NAME 'ib_udf'; /***************************************** * * s u b s t r l e n * ***************************************** * * Functional description: * substr(s,i,l) returns the substring * of s which starts at position i and * ends at position i+l-1, being l the length. * Note: This function is NOT limited to * receiving and returning only 80 characters, * rather, it can use as long as 32767 * characters which is the limit on an * INTERBASE character string. * *****************************************/ DECLARE EXTERNAL FUNCTION substrlen CSTRING(80), SMALLINT, SMALLINT RETURNS CSTRING(80) FREE_IT ENTRY_POINT 'IB_UDF_substrlen' MODULE_NAME 'ib_udf'; /***************************************** * * s t r l e n * ***************************************** * * Functional description: * Returns the length of a given string. * *****************************************/ DECLARE EXTERNAL FUNCTION strlen CSTRING(32767) RETURNS INTEGER BY VALUE ENTRY_POINT 'IB_UDF_strlen' MODULE_NAME 'ib_udf'; /***************************************** * * t a n * ***************************************** * * Functional description: * Returns the tangent of x. If x is * greater than or equal to 263, or less * than or equal to -263, a loss of * significance in the result occurs, in * which case the function generates a * _TLOSS error and returns an indefinite * (same as a quiet NaN). * *****************************************/ DECLARE EXTERNAL FUNCTION tan DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_tan' MODULE_NAME 'ib_udf'; /***************************************** * * t a n h * ***************************************** * * Functional description: * Returns the tangent of x. If x is * greater than or equal to 263, or less * than or equal to -263, a loss of * significance in the result occurs, in * which case the function generates a * _TLOSS error and returns an indefinite * (same as a quiet NaN). * *****************************************/ DECLARE EXTERNAL FUNCTION tanh DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_tanh' MODULE_NAME 'ib_udf';