plsql in 7.1
От | Jie Liang |
---|---|
Тема | plsql in 7.1 |
Дата | |
Msg-id | Pine.BSF.4.10.10106202255270.60351-100000@tidal.ipinc.com обсуждение исходный текст |
Ответ на | Re: commentds on redhats new database (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-sql |
Hi, Does plpgsql in 7.1.2 has some change in implementation?? Since I have a plplsql function which works in pg-7.0, however, in pg-7.1.2, sometimes doesn't work, I found sometimes, I generate more then 800 pg_sorttemp???.??? file each has ~430k. which causes our disk full so fast(when we have mutilpel client call it). Here it is: CREATE FUNCTION getstats12(text,date) RETURNS text AS ' declare rater alias for $1; string text:=''''; c char(1):='',''; svid int4:=0; rec record; dnorat int4:=0; drat int4:=0; ddel int4:=0; dunrch int4:=0; wnorat int4:=0; wrat int4:=0; wdel int4:=0; wunrch int4:=0; dhours float4; whours float4; drph int2:=0; wrph int2:=0; nthday int2:=0; start timestamp; last timestamp; finish timestamp; begin SELECT dayofweek($2) INTO nthday; finish:=$2+''23:59:59''::time; last:=finish-''1day''::timespan; start:=($2-nthday)::timestamp; FOR rec IN SELECT urlinfo.id,ratedon,cid FROM urlinfo,ratings_by_serial WHERE urlinfo.id=ratings_by_serial.id and ratedby=rater and ratedon between start and finish UNION SELECTuinfo2.id,ratedon,cid FROM uinfo2,rbs2 WHERE urlinfo.id=ratings_by_serial.id and ratedby=rater andratedon between start and finish LOOP IF rec.id<>svid THEN IF rec.ratedon>last THEN IFrec.cid= -1 THEN dnorat:=dnorat+1; ELSE drat:=drat+1; END IF; ELSE IF rec.cid= -1 THEN wnorat:=wnorat+1; ELSE wrat:=wrat+1; END IF; END IF; END IF; svid:=rec.id; END LOOP; --raise notice ''urlinfo done''; FOR rec IN SELECT deleteddate FROM deleted WHERE allocatedto=rater and deleteddate between start and finish LOOP IF rec.deleteddate>last THEN ddel:=ddel+1; ELSE wdel:=wdel+1; END IF; END LOOP; --raise notice ''deleted done''; FOR rec IN SELECT checkdate FROM unreachable WHEREcheckedby=rater and checkdate between start and finish LOOP IF rec.checkdate>last THEN dunrch:=dunrch+1; ELSE wunrch:=wunrch+1; END IF; END LOOP; --raise notice ''unreachabledone''; wnorat:=wnorat+dnorat; wrat:=wrat+drat; wdel:=wdel+ddel; wunrch:=wunrch+dunrch; SELECT getratinghour(rater,$2,$2)INTO dhours; SELECT getratinghour(rater,start::date,$2) INTO whours; IF dhours>0 THEN drph:=round(drat/dhours); END IF; IF whours>0 THEN wrph:=round(wrat/whours); END IF; string:=string||drat||c||wrat||c||dnorat||c||wnorat||c|| ddel||c||wdel||c||dunrch||c||wunrch||c|| dhours||c||whours||c||drph||c||wrph; return string; end; ' LANGUAGE 'plpgsql'; Thanks. Jie LIANG St. Bernard Software 10350 Science Center Drive Suite 100, San Diego, CA 92121 Office:(858)320-4873 jliang@ipinc.com www.stbernard.com www.ipinc.com
В списке pgsql-sql по дате отправления: