Re: [HACKERS] proposal: window function - change_number

2014-09-21 Thread Rémi Cura
Hey, sorry I what I say is obvious for you .

If I understood your problem correctly, it is strictly equivalent to this
one :

there is a postgres trick to solve this problem :
what you want is essentially generate a unique group_id,
but one that depends of an order of row not defined in the group.

The solution
is to generate a row number by the order you want , then a row number by
the group ,
then a subtraction of the 2 row number gives you an unique id per group.

The cost is that you have to use 2 windows function., hence 2 scans I guess.


2014-09-21 17:51 GMT+02:00 Andrew Gierth

  Pavel == Pavel Stehule writes:

  Pavel Hi
  Pavel I tried to solve following task:

  Pavel I have a table

  Pavel start, reason, km
  Pavel =
  Pavel  2014-01-01 08:00:00, private, 10
  Pavel  2014-01-01 09:00:00, commerc, 20
  Pavel  2014-01-01 10:00:00, commerc, 20
  Pavel  2014-01-01 11:00:00, private, 8

  Pavel and I would reduce these rows to

  Pavel  2014-01-01 08:00:00, private, 10
  Pavel  2014-01-01 09:00:00, commerc, 20 + 20 = 40
  Pavel  2014-01-01 11:00:00, private, 8

  Pavel It is relative hard to it now with SQL only.

 Only relatively. My standard solution is something like this:

 select start_time, reason, sum(km) as km
   from (select max(label_time) over (order by start) as start_time,
reason, km
   from (select start, reason, km,
case when reason
  is distinct from
  lag(reason) over (order by start)
 then start
end as label_time
   from yourtable
) s2
) s1
  group by start_time, reason
  order by start_time;

 (Your change_number idea is essentially equivalent to doing
 sum(case when x is distinct from lag(x) over w then 1 end) over w,
 except that since window functions can't be nested, that expression
 requires a subquery.)

 Andrew (irc:RhodiumToad)

 Sent via pgsql-hackers mailing list (
 To make changes to your subscription:

[HACKERS] python modul pre-import to avoid importing each time

2014-06-24 Thread Rémi Cura
Hey List,
this is a repost from the general list where it get no responses (5 days)

I use plpython with postgis and 2 python modules (numpy and shapely).
Sadly importing such module in the plpython function is very slow (about
half a second).

I also don't know if this overhead is applied each time the function is
called in the same session.

Is there a way to pre-import those modules once and for all (at server
start up for example),
such that the python function are accelerated?