[HACKERS] DB2's row_number()

2003-07-17 Thread Hans-Jürgen Schönig
I had a brief look at DB2's row_number function which seems to be pretty 
useful.
What it does is:

test=# SELECT row_number(), relname FROM pg_class LIMIT 3;
 row_number |relname
+
  1 | pg_description
  2 | pg_group
  3 | pg_proc
(3 rows)
This makes sense to me and I need this feature from time to time. My 
question is: How do I find out when a query starts? Inside a table 
function I can call SRF_IS_FIRSTCALL() to see when it is called first. 
Is there an easy way to check that inside an ordinary C function 
returning just one value?
Currently my function counts the number of times it has been called per 
connection. I could write a second function for resetting the counter 
but this is not too smart ...

	Regards,

		Hans

--
Cybertec Geschwinde u Schoenig
Ludo-Hartmannplatz 1/14, A-1160 Vienna, Austria
Tel: +43/2952/30706; +43/664/233 90 75
www.cybertec.at, www.postgresql.at, kernel.cybertec.at


---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?
  http://www.postgresql.org/docs/faqs/FAQ.html


Re: [HACKERS] DB2's row_number()

2003-07-17 Thread Darcy Buskermolen
Here is how I doi it when I need to...

BEGIN;
CREATE TEMP SEQUENCE row_num;
SELECT next_val('row_num'), relname FROM pg_class LIMIT 3;
ROLLBACK;

You could also do this with a Set Returning Fucntion so that it returns the 
nextval in a simular way



On Thursday 17 July 2003 08:03, Hans-Jürgen Schönig wrote:
 I had a brief look at DB2's row_number function which seems to be pretty
 useful.
 What it does is:

 test=# SELECT row_number(), relname FROM pg_class LIMIT 3;
   row_number |relname
 +
1 | pg_description
2 | pg_group
3 | pg_proc
 (3 rows)

 This makes sense to me and I need this feature from time to time. My
 question is: How do I find out when a query starts? Inside a table
 function I can call SRF_IS_FIRSTCALL() to see when it is called first.
 Is there an easy way to check that inside an ordinary C function
 returning just one value?
 Currently my function counts the number of times it has been called per
 connection. I could write a second function for resetting the counter
 but this is not too smart ...

   Regards,

   Hans

-- 
Darcy Buskermolen
Wavefire Technologies Corp.
ph: 250.717.0200
fx:  250.763.1759
http://www.wavefire.com

---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faqs/FAQ.html


Re: [HACKERS] DB2's row_number()

2003-07-17 Thread Tom Lane
=?ISO-8859-1?Q?Hans-J=FCrgen_Sch=F6nig?= [EMAIL PROTECTED] writes:
 question is: How do I find out when a query starts? Inside a table 
 function I can call SRF_IS_FIRSTCALL() to see when it is called first. 
 Is there an easy way to check that inside an ordinary C function 
 returning just one value?

Use fn_extra to store some state data.
pg_stat_get_backend_idset() is a useful example.

regards, tom lane

---(end of broadcast)---
TIP 6: Have you searched our list archives?

   http://archives.postgresql.org