Thread: BUG #7552: where clause gets ignored on one of view fields

BUG #7552: where clause gets ignored on one of view fields

From
andrei@tchijov.com
Date:
The following bug has been logged on the website:

Bug reference:      7552
Logged by:          Andrei Tchijov
Email address:      andrei@tchijov.com
PostgreSQL version: 9.2.0
Operating system:   Ubuntu 11.10
Description:        =


In a view (can provide source upon request) where condition on one of
columns gets ignored by select. No errors at all. Select runs as if the
condition is not present. Where conditions on other columns work as
expected.

The very same view functions as it should in 9.1 and 9.0.

Re: BUG #7552: where clause gets ignored on one of view fields

From
Tom Lane
Date:
andrei@tchijov.com writes:
> In a view (can provide source upon request) where condition on one of
> columns gets ignored by select. No errors at all. Select runs as if the
> condition is not present. Where conditions on other columns work as
> expected.

You really think this is sufficient detail for somebody to fix the
problem?

https://wiki.postgresql.org/wiki/Guide_to_reporting_problems

            regards, tom lane

Re: BUG #7552: where clause gets ignored on one of view fields

From
Andrei Tchijov
Date:
Hi,

I have a view (see SQL at the end of this e-mail).  Query like following =
works without any problems on 9.0 and 9.1.

    select * form v_jobs where rdms_job_number =3D 41771;
   =20
However, on 9.2 this query acts as it is   =20

    select * form v_jobs;
   =20
It seems that this problem occur only if I am trying to use this =
particular field (rdms_job_number), other fields works as they should.

PostgreSQL version number you are running:
    PostgreSQL 9.2.0 on x86_64-unknown-linux-gnu, compiled by =
gcc-4.4.real (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3, 64-bit

How you installed PostgreSQL: Following packages were downloaded from =
http://www.ubuntuupdates.org
    postgresql-9.2_9.2.0-1~lucid_amd64.deb
    postgresql-client-9.2_9.2.0-1~lucid_amd64.deb
    postgresql-client-common_130~lucid_all.deb=20
    postgresql-common_130~lucid_all.deb

Changes made to the settings in the postgresql.conf file:  none

Operating system and version: Ubuntu 11.10

What program you're using to connect to PostgreSQL: psql
=20
Is there anything relevant or unusual in the PostgreSQL server logs?: =
Nothing. No new messages logged when problem occur.
=20
SQL (Please let me know if you need definitions for other tables/views =
involved):

--
--
--

CREATE OR REPLACE FUNCTION ensure_rdms_job_number( p_job_id INTEGER, =
p_rdms_job_number INTEGER, p_leads_job_number INTEGER)=20
  RETURNS INTEGER=20
AS
$BODY$

BEGIN
  IF ( p_rdms_job_number IS NULL OR p_rdms_job_number =3D 0 ) AND=20
    ( p_leads_job_number IS NOT NULL AND p_leads_job_number > 0 )
  THEN
    UPDATE jobs SET rdms_job_number =3D p_leads_job_number WHERE =
job_id_pk =3D p_job_id;
  END IF;

  RETURN p_job_id;
END;

$BODY$ language plpgsql;

DROP VIEW v_jobs CASCADE;

CREATE OR REPLACE VIEW v_jobs AS
  SELECT=20
    ensure_rdms_job_number(j.job_id_pk, j.rdms_job_number, =
ls.job_number) as job_id_pk,=20
    j.job_status_id_fk,=20
    j.rdms_link_no,=20
    j.brand_id_fk,=20
    j.job_desc,=20

    jm.ca,=20
    jm.cca,=20
    jm.title1 AS client_title1,=20
    jm.fname1 AS client_fname1,=20
    jm.sname1 AS client_sname1,=20
    jm.title2 AS client_title2,=20
    jm.fname2 AS client_fname2,=20
    jm.sname2 AS client_sname2,=20
    ls.stradd AS client_stradd,=20
    jm.csub AS client_suburb,=20
    jm.cstate AS client_state,=20
    jm.cpcode AS client_postcode,=20

    jm.slot AS site_slot,=20
    jm.sstrno AS site_strno,=20
    jm.saddr1 AS site_addr1,=20
    jm.saddr2 AS site_addr2,=20
    jm.ssub AS site_suburb,=20
    jm.sstate AS site_state,=20
    jm.spcode AS site_postcode,=20

    j.job_scheduled_date,=20
    j.job_scheduler_id_fk,=20

    COALESCE(j.rdms_job_number, ls.job_number) AS rdms_job_number,=20
    est.suburb_shire_postcode_id_fk,
    jm.email AS client_email,

    jm.contract_value,

    jm.phone1 AS client_phone1,
    jm.phone2 AS client_phone2,
    jm.fax AS client_fax,

    s.supervisor_name=20

    FROM jobs j=20
    LEFT JOIN estimates est ON (j.job_id_pk =3D est.job_id_fk)
    LEFT JOIN v_lead_system ls ON(ls.id =3D j.rdms_link_no)
    LEFT JOIN v_jobmst jm ON (jm.job_number =3D =
COALESCE(j.rdms_job_number, ls.job_number))=20
    LEFT JOIN construction c ON(c.job_number =3D ls.job_number)
    LEFT JOIN supervisors s ON(c.supervisor_id =3D s.supervisor_id)
  ;

Re: BUG #7552: where clause gets ignored on one of view fields

From
Andrei Tchijov
Date:
No. But the form for entering bugs is not very ... sophisticated.

Thanks for pointing me to this wiki, I will re-submit properly.

Cheers,

    Andrei


On Sep 17, 2012, at 11:55 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

> andrei@tchijov.com writes:
>> In a view (can provide source upon request) where condition on one of
>> columns gets ignored by select. No errors at all. Select runs as if the
>> condition is not present. Where conditions on other columns work as
>> expected.
>
> You really think this is sufficient detail for somebody to fix the
> problem?
>
> https://wiki.postgresql.org/wiki/Guide_to_reporting_problems
>
>             regards, tom lane

Re: BUG #7552: where clause gets ignored on one of view fields

From
Tom Lane
Date:
Andrei Tchijov <andrei@tchijov.com> writes:
> SQL (Please let me know if you need definitions for other tables/views involved):

What we need is a self-contained test case.

            regards, tom lane

Re: BUG #7552: where clause gets ignored on one of view fields

From
Andrei Tchijov
Date:
I will try to provide one, but it will have to wait till weekend.

Cheers,=20
    Andrei

On Sep 18, 2012, at 2:05 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

> Andrei Tchijov <andrei@tchijov.com> writes:
>> SQL (Please let me know if you need definitions for other =
tables/views involved):
>=20
> What we need is a self-contained test case.
>=20
>             regards, tom lane