Skip to main content

Upgrading to a newer Ingres version breaks SQL query

The following query (ignore most fields,just pay attention to d1.last_aa)

 Q1

 

select

d1.last_aa,

          m.c_ylikoy as c_ylikoy,

          n_ylikoy = m.n_ylikoy,

          c_typ_ylik=tf.c_typ_ylik,

          n_typ_ylik = tf.n_typ_ylik,

          tm_mesh=m.tm_mesh,

          pt_fpa=m.pt_fpa,

          pt_fpa_last= d1.pt_fpa,

          end_eis_ex = d.end_eis_ex,

          ps_diaqesh = sum(d.ps_diaqesh),

                   tm_monadas = avg(d.tm_monadas),

          c_mon_metr = m.c_mon_metr,

          c_typ_gmdn = m.c_typ_gmdn,

          c_loga = m.c_loga,

          c_cpv = c.c_cpv,

          n_cpv = c.n_cpv,

          c_prom = h1.c_prom,

          c_loga_dls = ss.c_loga_dls,

          tm_mm_last = max(decimal (d1.timh_symb /s.periektiko, 16, 4)),

          tm_mm_fpa_last = max(( d1.timh_symb /s.periektiko) * (100.0 +d1.pt_fpa) / 100)

       from hi_denyl d  inner join hi_henyl h on

            d.c_entyp = h.c_entyp and

            d.last_year = h.last_year and

            d.last_aa = h.last_aa  inner join grnoe g on

            g.c_grnoe = h.c_grnoe inner join hi_mylik m on

            m.c_ylikoy = d.c_ylikoy inner  join tylik tf on

            m.c_typ_ylik = tf.c_typ_ylik left join cpv c on

            tf.c_cpv = c.c_cpv left join

            (hi_dylpr d1 inner join hi_sylik s on

               s.c_ylikoy = d1.c_ylikoy and s.aa_syskeya = d1.aa_syskeya

                 inner join hi_hylpr h1 on h1.last_aa = d1.last_aa and

               h1.c_entyp = d1.c_entyp and h1.last_year =  d1.last_year

               and h1.end_akyro = '') on

               d1.c_ylikoy = d.c_ylikoy

     left join (select

     c_loga_dls=max(c_loga_dls),c_loga

     from nosxe n

     where n.y_xrhshs='01/01/2020'

     and n.c_forea='01'

     group by c_loga

     ) s  on m.c_loga = s.c_loga

     where

         h.last_year     = '1/1/2020'

          and  h.c_entyp    = 'ΥΛ010'

          and  d.c_ylikoy     >= '13'

          and  d.c_ylikoy     <= '13ΩΩΩΩΩΩΩΩ'

          and  h.d_diaqeshs   >= '01/01/2020'

          and  h.d_diaqeshs   <= '31/12/2020'

          and  h.end_akyro     = ''

     and ( (d1.last_aa is null)

     or  (d1.last_aa = (select max(d2.last_aa)

                                      from  hi_dylpr d2 where

                                     d1.c_ylikoy  = d2.c_ylikoy)))

     group by

              d1.last_aa,

               m.c_ylikoy,

               n_ylikoy,

               tf.c_typ_ylik,

               tf.n_typ_ylik,

               m.tm_mesh,

               m.pt_fpa,

               d1.pt_fpa,

               h1.c_prom,

               ss.c_loga_dls,

               d.end_eis_ex,

               end_diax,

               m.c_mon_metr,

               m.c_typ_gmdn,

               m.c_loga,

               c.c_cpv,

               c.n_cpv

     order by m.c_ylikoy

 

totally ignores the  (d1.last_aa is null) condition and just brings the results that qualify with

(d1.last_aa = (select max(d2.last_aa)

                                      from  hi_dylpr d2 where

                                     d1.c_ylikoy  = d2.c_ylikoy))


 

Breaking it apart and just issuing  d1.last_aa is null

Q2

  where

         h.last_year     = '1/1/2020'

          and  h.c_entyp    = 'ΥΛ010'

          and  d.c_ylikoy     >= '13'

          and  d.c_ylikoy     <= '13ΩΩΩΩΩΩΩΩ'

          and  h.d_diaqeshs   >= '01/01/2020'

          and  h.d_diaqeshs   <= '31/12/2020'

          and  h.end_akyro     = ''

     and d1.last_aa is null

   group by

              d1.last_aa,

               m.c_ylikoy,

               n_ylikoy,

               tf.c_typ_ylik,

               tf.n_typ_ylik,

               m.tm_mesh,

               m.pt_fpa,

               d1.pt_fpa,

               h1.c_prom,

               ss.c_loga_dls,

               d.end_eis_ex,

               end_diax,

               m.c_mon_metr,

               m.c_typ_gmdn,

               m.c_loga,

               c.c_cpv,

               c.n_cpv

     order by m.c_ylikoy

 

brings the following results.Note that last_aa column is comprised of NULLs only.


 

Running the query with the other part 

Q3  

  where

         h.last_year     = '1/1/2020'

          and  h.c_entyp    = 'ΥΛ010'

          and  d.c_ylikoy     >= '13'

          and  d.c_ylikoy     <= '13ΩΩΩΩΩΩΩΩ'

          and  h.d_diaqeshs   >= '01/01/2020'

          and  h.d_diaqeshs   <= '31/12/2020'

          and  h.end_akyro     = '' and

  (d1.last_aa = (select max(d2.last_aa)

                                      from  hi_dylpr d2 where

                                     d1.c_ylikoy  = d2.c_ylikoy))

   group by

              d1.last_aa,

               m.c_ylikoy,

               n_ylikoy,

               tf.c_typ_ylik,

               tf.n_typ_ylik,

               m.tm_mesh,

               m.pt_fpa,

               d1.pt_fpa,

               h1.c_prom,

               ss.c_loga_dls,

               d.end_eis_ex,

               end_diax,

               m.c_mon_metr,

               m.c_typ_gmdn,

               m.c_loga,

               c.c_cpv,

               c.n_cpv

     order by m.c_ylikoy

 

results in the following, the same as Q1.Note the column last_aa is filled with numbers,no nulls here.


 

That's all on II 10.2.0 (a64.lnx/100)          

 

Now Q1 on II 10.0.1 (a64.lnx/100)NPTL   

brings the correct results of nulls and not nulls,as is.

 


 On II 9.3 the query just doesn't run, some cryptic QEF error of some sort.

I have to say that there's other compatibility issues in 10.2 especially in the ABF part.


 

 

 

 

Comments

Popular posts from this blog

Spatial Data Management For GIS and Data Scientists

  Videos of the lectures taught in Fall 2023 at the University of Tennessee are now available as a YouTube playlist. They provide a complete overview of the concepts of GeoSpatial science using Google Earth Engine, PostgresSQL GIS , DuckDB, Python and SQL. https://www.i-programmer.info/news/145-mapping-a-gis/16772-spatial-data-management-for-gis-and-data-scientists.html