The following bug has been logged on the website:

Bug reference:      7535
Logged by:          Louis-David Mitterrand
Email address:      l...@apartia.fr
PostgreSQL version: 9.2.0
Operating system:   debian testing
Description:        

/*error in 9.2*/
drop database error92;
create database error92;
\c error92
CREATE TABLE price (
    id_price serial primary key
);
CREATE TABLE cabin_class (
    id_cabin_class serial primary key,
    cabin_class_name text not null
);
CREATE TABLE cabin_type (
    id_cabin_type serial primary key,
    id_cabin_class integer references cabin_class not null,
    cabin_type_name text not null,
    cabin_type_code text not null
);
CREATE TABLE cabin_category (
    id_cabin_category serial primary key,
    id_cabin_type integer references cabin_type not null,
    cabin_cat_name text,
    cabin_cat_code text
);
CREATE TABLE alert_cruise (
    id_alert_cruise serial primary key,
/*    id_cruise integer references cruise not null,
    id_currency integer references currency,*/
        enabled boolean default true not null,
    md5_code text DEFAULT md5(now()::text || random()::text)
);
CREATE TABLE alert_cabin_category (
    id_alert_cruise integer references alert_cruise,
    id_cabin_category integer references cabin_category not null
);
CREATE TABLE alert_cabin_type (
    id_alert_cruise integer references alert_cruise,
    id_cabin_type integer references cabin_type not null
);
CREATE TABLE alert_cabin_class (
    id_alert_cruise integer references alert_cruise,
    id_cabin_class integer references cabin_class not null
);
CREATE VIEW alert_cruise_all AS
    select c.*, ac.enabled
        from (
                -- ac.id_cabin_class is the first one, so other UNION parts will
                -- use that column name as well
                select 'class' as type,cl.cabin_class_name as type_name,ac.*
                from alert_cabin_class ac
                join cabin_class cl using (id_cabin_class)
    union all
        select 'type' as type,cl.cabin_class_name||case when 
cl.cabin_class_name =
ct.cabin_type_name then '' else ' ~ '||ct.cabin_type_name end as
type_name,ac.*
                from alert_cabin_type ac
                join cabin_type ct using (id_cabin_type)
                join cabin_class cl using (id_cabin_class)
    union all
                select 'category' as type,cl.cabin_class_name||
                case when cl.cabin_class_name = ct.cabin_type_name
                then '' else ' ~ '||ct.cabin_type_name end||' ~ 
'||cc.cabin_cat_code
                as type_name,ac.*
                from alert_cabin_category ac
                join cabin_category cc
                join cabin_type ct using (id_cabin_type)
                join cabin_class cl using (id_cabin_class)
                using (id_cabin_category)
        )
    as c join alert_cruise ac using (id_alert_cruise);
create view alert_to_category as
        select ac.*, cl.cabin_class_name, ct.cabin_type_name, cc.cabin_cat_name,
    cc.id_cabin_category, cc.cabin_cat_code,
    case when type='class' then cl.cabin_class_name
    when type='type' then ct.cabin_type_name
    when type='category' then ct.cabin_type_name||' '||cc.cabin_cat_code
    end as cabin_name
    from alert_cruise_all ac
    left join cabin_class cl on (
                (ac.type = 'class' and cl.id_cabin_class=ac.id_cabin_class)
        or (ac.type = 'type' and cl.id_cabin_class=(select id_cabin_class
from cabin_type where id_cabin_type=ac.id_cabin_class))
        or (ac.type = 'category' and cl.id_cabin_class=(select
ct2.id_cabin_class from cabin_type ct2 join cabin_category cc2 using
(id_cabin_type) where cc2.id_cabin_category=ac.id_cabin_class))
        )
    join cabin_type ct on (
                (ac.type = 'class' and  ct.id_cabin_class=cl.id_cabin_class)
                or (ac.type = 'type' and ct.id_cabin_type=ac.id_cabin_class)
        or (ac.type = 'category' and ct.id_cabin_type=(select id_cabin_type
from cabin_category where id_cabin_category=ac.id_cabin_class))
        )
    join cabin_category cc on (
                (ac.type = 'category' and 
cc.id_cabin_category=ac.id_cabin_class)
                or (ac.type != 'category' and ct.id_cabin_type=cc.id_cabin_type)
        );
select 
first_value(max(p.id_price)) over () as id_price1
,ac.cabin_name
        from alert_to_category ac
        join price p on (p.id_price=ac.id_alert_cruise)
        group by ac.cabin_name;
/*
select 
first_value(max(p.id_price)) over () as id_price1
,ac.cabin_name
        from alert_to_category ac
        join price p on (p.id_cruise=ac.id_cruise)
        group by ac.cabin_name;
*/
/*EOF*/




-- 
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Reply via email to