zOs/SQL/CATRUPD3
declare global temporary table session.st
as (select creator cr, name tb, tbName db, tsName ts,
statstime lim
from sysibm.sysTables
) with no data on commit preserve rows
;
declare global temporary table session.sx
as (select creator cr, name ix, tbCreator tbCr, tbName tb,
statstime lim
from sysibm.sysIndexes
) with no data on commit preserve rows
;
insert into session.st
select creator, name, dbName, tsName, '0001-01-01-00.00.00'
from sysibm.sysTables
where dbName like 'M%'
;
update session.st st
set lim = ( select max('0002-01-01-00.00.00',
max(statstime)) - 169 hours
from sysibm.sysColumns co
where co.tbCreator = st.cr and co.tbName = st.tb)
;
insert into session.sx
select creator, name, tbCreator, tbName, lim
from sysibm.sysIndexes ix join session.st st
on ix.tbCreator = st.cr and ix.tbName = st.tb
;
with old (tb, cat, stats) as
(
select tb, 'columns', statstime
from sysibm.sysColumns co join session.st st
on co.tbCreator = st.cr and co.tbName = st.tb
and statsTime < lim
and statsTime > '0001-01-01-00.00.00.00000'
union all select tb, 'colDist', statstime
from sysibm.sysColDist cd join session.st st
on cd.tbOwner = st.cr and cd.tbName = st.tb
and cd.statstime < lim
union all select tb, 'colDistStats', statstime
from sysibm.sysColDistStats cds join session.st st
on cds.tbOwner = st.cr and cds.tbName = st.tb
and statstime < lim
)
select tb, cat, count(*), min(stats), max(stats)
from old
group by tb, cat
order by tb, cat
;;;