Bug in subselect

pierluigi.frullani@frumar.it

From: Pierluigi.Frullani@frumar.it
To: pgsql-bugs@postgresql.org
Date: 1999-03-03T19:29:45Z
Lists: pgsql-bugs

Attachments

  • Dump (application/octet-stream)
============================================================================
                        POSTGRESQL BUG REPORT TEMPLATE
============================================================================


Your name               :        Pierluigi Frullani
Your email address      :        pigi@frumar.it


System Configuration
---------------------
  Architecture (example: Intel Pentium)         :  Intel Pentium
  Architecture       Other                      :  Ultra 250 

  Operating System (example: Linux 2.0.26 ELF)  :  Linux 2.0.33  ELF
  Operating System                              :  Solaris 2.6  

  PostgreSQL version (example: PostgreSQL-6.4.2)  :   PostgreSQL-6.4.2
  PostgreSQL version                              :   PostgreSQL-6.3

  Compiler used (example:  gcc 2.8.0)           : gcc 2.7.2.3
  For solaris we used the bin distrib.


Please enter a FULL description of your problem:
------------------------------------------------
In a select with a sub select if you use a true condition as " AND 1 = 1 "
in the 6.4.2. you will get no result and in the 6.3 you will get coredump

This is needed when we compose the query string and we have no other condition.
In informix and oracle it work.



Please describe a way to repeat the problem.   Please try to provide a
concise reproducible example, if at all possible: 
----------------------------------------------------------------------
 we use this select :

SELECT chiamate.n_chiam,  chiamate.probl,  clienti.rag_soc,
       chiamate.contatto,  chiamate.severita,  
       tabseverita.desseverita,  esecutori.cognome,  
       stato_chiamata.des_stato ,  chiamate.data_aper,  
       tabseverita.colore ,  chiamate.dta_primo_cont  
FROM chiamate,chiamatedet,commesse,esecutori,clienti, 
     tabseverita,stato_chiamata  
WHERE chiamatedet.n_chiam = chiamate.n_chiam  
 AND chiamatedet.data_ult =  (select max(b.data_ult)  
                                from chiamatedet  b
                                where b.n_chiam= chiamate.n_chiam
                                AND 1 = 1)        <=== here the problem.
 AND chiamate.cod_com = commesse.cod_com 
 AND chiamatedet.stato_chiamata=stato_chiamata.cod_stato 
 AND chiamatedet.cod_ese = esecutori.cod_ese  
 AND commesse.cod_soc_cli = clienti.cod_societa  
 AND tabseverita.codseverita = chiamate.severita  
 AND stato_chiamata.flag_stato='O'  
ORDER BY chiamate.n_chiam

If we do not use the showed condition the select will work .

Here attached there is the dump of our database