Issue Details (XML | Word | Printable)

Key: CORE-1326
Type: New Feature New Feature
Status: Open Open
Priority: Minor Minor
Assignee: Adriano dos Santos Fernandes
Reporter: Igor Lobov
Votes: 9
Watchers: 8
Operations

If you were logged in you would be able to see more operations.
Firebird Core

Aggregate UDF

Created: 17/Jun/07 12:37 PM   Updated: 06/Feb/13 02:23 AM
Component/s: UDF
Affects Version/s: None
Fix Version/s: None

Issue Links:
Duplicate
 


 Description  « Hide
Create a way to create aggregate UDFs

 All   Comments   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Ivan added a comment - 22/Oct/09 02:38 PM

mysql support this and maybe other databases.


http://books.google.com/books?id=kVB1wiF87ooC&pg=PA265&lpg=PA265&dq=mysql+udf+aggregate+example&source=bl&ots=HOlP34LbdM&sig=Fcj_7w5NycrtKhxpUbAREpMQ5K0&hl=en&ei=saTdSub8OIGUjAe838xt&sa=X&oi=book_result&ct=result&resnum=5&ved=0CBkQ6AEwBA#v=onepage&q=mysql%20udf%20aggregate%20example&f=false

why is this important?

if I need functions which contains few aggregate function then the best way for this problem is aggregate UDF.

firebird c-api does not support this and I don't know why?

many special functions which people need can't be write in sql query.
can be but with two or more stored procedures.

for example consider standard deviation

http://en.wikipedia.org/wiki/Standard_deviation

first query is avg(x) on stored procedures.
 input parameter is one column-> x.
then must using cursor and for each x calculate
(x-avg(x))^2 as y

then
must run query
sqrt(sum(y)/count(x))

I know that somebody will say that database is not for processing data.

cursor is very slow, ETL (SISS) is fast but for processing data is slow.
ETL(SISS) is only for transform and migrate data.

application for statistics is also not very good.


what users want is only enable aggregate UDF in c-api and nothing else.




adnanoncevarlik added a comment - 22/Oct/11 11:06 AM
Hi All,

May be wrong place to say but we want to create functions on FIREBIRD and want to use in SELECT statements. Like this,


CREATE MY_FUNC_CALC_AGE(prmBirthDay TIMESTAMP) RETURNS RET_AGE INTEGER
BEGIN
  RET_AGE = DATEDIFF(YEAR FROM prmBirthDay TO CURRENT_DATE) ;
  SUSPEND ;
END


SELECT NAME, SIRNAME, MY_FUNC_CALC_AGE( BIRTHDAY)
FROM MY_TABLE


When this issue will planned to solve ?

Thank you and best regards
Adnan

Dmitry Yemanov added a comment - 22/Oct/11 11:18 AM
It's implemented in FB v3.0.

Mason Wheeler added a comment - 05/Feb/13 10:23 PM
Is there any documentation available on this, as to how one would go about creating an external aggregate function in FB 3.0?

Adriano dos Santos Fernandes added a comment - 06/Feb/13 01:49 AM
It's simple PSQL functions which is implemented. Aggregate function is not nor will be in FB 3.0.

Juan Antonio Castillo added a comment - 06/Feb/13 02:02 AM
Sadly. is there any plan to support it on a later version? It's known which version?

Mason Wheeler added a comment - 06/Feb/13 02:15 AM
What's the rationale for this? Most other serious RDBMSes have a way to define external aggregates. It's something that's very noticeably lacking from Firebird.

Adriano dos Santos Fernandes added a comment - 06/Feb/13 02:23 AM
Probably in the next major version.