i just changed the  jdbc, but   still get the wrong values...

On Wed, Feb 1, 2017 at 9:47 AM, Edmundo Robles <edmu...@sw-argos.com> wrote:

> this issues could be  raised by a incorrect jdbc?   the jdbc used is
> postrgresql-9.2-1002.jdbc4.jar and i have a postgresql 9.4
>
> On Wed, Feb 1, 2017 at 9:35 AM, Edmundo Robles <edmu...@sw-argos.com>
> wrote:
>
>>
>> I have postgresql 9.4  and  wrote a function get_ignition_time() to get
>> the first time when a  car was ignition on and  the  last time when
>>  ignition is off,   those
>> time stamps are  used in another function  get_fuel_consumption() to get
>>  the  fuel consumption.
>>
>>
>>
>> The issue is  when:
>> 1.   I run get_ignition_time()   directly in: psql, pgadmin  got the
>> right values.
>> 2.   I run  get_ignition_time()  inside iReport preview and  got the
>> right values.
>>
>> 3. But, when i run  the report from web server got wrong values...first i
>> thought on timezone issues, because i have had issues with timestamp
>>  constraints at resotring database, but the timestamp  mismatch  the CST
>> timezone, if you compare the time stamp  from  1 step  the  difference is
>> not  6hr.
>>
>>
>>
>> the  get_igniton_time is called in a cursor  inside get_fuel_consumption
>> but   when i fetch  it  the ini_time and end_time are wrong like   in 3rd
>> step
>>
>>
>>
>> I was  rewrote the function many times,
>>     i have used  window value first_value and last_value,
>>     i have wrote  one  query  when igntion is on anohter whem igntion is
>> off  then joined,
>>     etc,
>>    i have wrote  on different ways to get the same value like  step 1 and
>> 2 but  3 is always wrong...
>>    i have set the order, like mentionend on 'windowedagg ... mail'
>>    but no success ....
>>
>> what  is  the safe way to use  windowed  function???
>>
>>
>>
>>
>>  this  is the  last function i wrote:
>>
>> CREATE OR REPLACE FUNCTION get_ignition_time(in punits character varying,
>> pfrom character varying,  pto character varying)
>>   RETURNS TABLE(id_unit integer
>>   , ini_time timestamp with time zone
>>   , end_time timestamp with time zone) as
>> $BODY$
>> DECLARE
>>    vunits integer[]= string_to_array(punits, ',');
>> BEGIN
>> RETURN QUERY with   foo as (
>> select   st.id_trun, st.time_stamp
>> , min(st.time_stamp)  filter (where ignition=true)  over w
>> , max(st.time_stamp)  filter (where ignition=false)  over w
>> from big_big_table st
>> where  st.id_trun =  ANY(ARRAY[vunits])
>> and st.time_stamp>=pfrom::timestamptz and st.time_stamp <
>> pto::timestamptz
>> window  w as (partition by  st.id_trun )
>> order by st.id_trun,st.time_stamp
>> )
>> select distinct  f.id_trun,f.min,f.max from foo f where min is not null
>>  and max is not null;
>>
>> END;
>> $BODY$
>>   LANGUAGE plpgsql VOLATILE
>>   COST 100
>>   ROWS 1000;
>>
>>
>>
>>
>>
>> CREATE OR REPLACE FUNCTION get_fuel_cosumption_dt(IN truns character
>> varying, IN dfrom character varying, IN dto character varying)
>>   RETURNS TABLE(
>> id_trun integer,
>> first_day smallint,
>> last_day smallint,
>> consumtpion_over_day bigint,
>> recharge_over_day bigint
>> ) AS
>> $BODY$
>> DECLARE
>>
>>    rec record;
>>    trip cursor for  select * from hydra.get_ignition_time(truns,
>> dfrom,dto);
>> BEGIN
>>
>>   create temp table if not exists t_fuel_consumption_dt(
>>    id_trun integer,
>> first_day smallint,
>> last_day smallint,
>> cosumption_over_day bigint,
>> recharge_over_day bigint
>> ) on commit drop;
>>
>>    open  trip;
>>     loop fetch trip into rec;
>>     exit when not found;
>>
>>           raise log 'XXX::>> select r.*  from
>> hydra.rep_calculo_gas(''%'', ''%'', ''%'') r;' ,
>> rec.id_trun::varchar,rec.ini_time::varchar,rec.end_time::varchar ;
>>
>>           insert into t_fuel_consumption_dt
>>           select
>>           r.*
>>        from 
>> hydra.get_consumption(rec.id_trun::varchar,rec.ini_time::varchar,rec.end_time::varchar)
>> r;
>>     end loop;
>>    close trip;
>>
>>    return query select * from t_fuel_consumption_dt;
>>
>> END;
>> $BODY$
>>   LANGUAGE plpgsql VOLATILE
>>   COST 100
>>   ROWS 1000;
>>
>>
>
>
> --
>
>


--

Reply via email to