Same query difference results

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



I have a table that tracks changes over time and the automated process
which inserts the data as it comes in uses the same query as a week
ago but is behaving strangely.  The automated process is saving all
rows whether there is a change or not however if I walk through it
manually cutting & pasting the same SQL in psql the results are as
needed.

Below is the table and the process we use to insert the changes.  Any
help would be greatly appreciated.

Table:
create table samples (
  ss_id   int8 references snapshots(ss_id),
  name    text,
  attr1   varchar(16),
  attr2   int8,
  attr3   int8,
   primary key(ss_id,name)
);
create table snapshots (
  ss_id    serial8 unique,
  s_id     int8 references systems(s_id),
  ss_time  int8 not null,
  ss_lock  boolean default FALSE,
   primary key (ss_id,s_id,ss_time)
);


Insert process for ss_id=290:
begin;
-- Create empty temp table, ss_id never equals -1
select * into temporary table samples_290 from samples where ss_id=-1;
-- Load data to tmep table
copy samples_290 from '/var/tmpfs/samples_290.dat';
-- Insert changes only
insert into samples (
 select distinct on(news.name) news.* from
  (select * from samples_290 ) as news
  full outer join
  (select distinct on (f.name) * from samples f
   where exists (select * from snapshots s where s.ss_s_id=295 and
   s.ss_id!=290 and s.ss_time<(select ss_time from snapshots
   where ss_id=290) and s.ss_id=f.ss_id order by s.ss_time desc))
  as olds
  on news.name=olds.name
  where
   -- if "name" exists in both tables
   news.name is not null and
   ((news.attr1, news.attr2, news.attr3)
    <>
    (olds.attr1, olds.attr2, olds.attr3)
    or
    olds.name is null  -- if "name" doesn't exist in the table yet
));  -- END of insert
commit;


--
Greg Spiegelberg
 Sr. Product Development Engineer
 Cranel, Incorporated.
 Phone: 614.318.4314
 Fax:   614.431.8388
 Email: gspiegelberg@xxxxxxxxxx
Cranel. Technology. Integrity. Focus.




[Index of Archives]     [Postgresql General]     [Postgresql Admin]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Yosemite Backpacking]     [Postgresql Jobs]

  Powered by Linux