Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1YYCxf-00031D-SV for pgsql-sql@arkaria.postgresql.org; Wed, 18 Mar 2015 12:20:36 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.80) (envelope-from ) id 1YYCxe-000322-WE for pgsql-sql@arkaria.postgresql.org; Wed, 18 Mar 2015 12:20:35 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1YYCxb-0002tQ-7z for pgsql-sql@postgresql.org; Wed, 18 Mar 2015 12:20:31 +0000 Received: from post.visena.com ([46.226.10.50]) by makus.postgresql.org with esmtps (TLS1.2:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.80) (envelope-from ) id 1YYCxV-0008Gu-Nf for pgsql-sql@postgresql.org; Wed, 18 Mar 2015 12:20:27 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=visena.com; s=20141101.wh; h=Content-Type:MIME-Version:Subject:In-Reply-To:Message-ID:To:From:Date; bh=y+qw9NK1DqmpA2is47xzlqrivkoVfpyJoBe56Y74Q8k=; b=bM+43feSn43O+UBGEB7xJWJeNBGXP5pEgqrbobutDsq2CcLZjWXKpUknkzcWX33xPN8gOKAsBpY7S2QsXoCmtkgIx5n99DAuBYecNbyc4R1aKP7O8ItunH4Wdms0+7yA2qh10hEjD/PBVLHfL/jjTI01AAkpy75P5Qp9DTMlglc=; Received: from [10.0.1.10] (helo=tc7-visena.wh.internal.visena.com) by post.visena.com with esmtp (Exim 4.82) (envelope-from ) id 1YYCxP-00088i-2M for pgsql-sql@postgresql.org; Wed, 18 Mar 2015 13:20:21 +0100 Received: from localhost ([127.0.0.1] helo=tc7-visena.wh.internal.visena.com) by tc7-visena.wh.internal.visena.com with esmtp (Exim 4.82) (envelope-from ) id 1YYCxP-0001GY-N7 for pgsql-sql@postgresql.org; Wed, 18 Mar 2015 13:20:19 +0100 Date: Wed, 18 Mar 2015 13:20:19 +0100 (CET) From: Andreas Joseph Krogh To: pgsql-sql@postgresql.org Message-ID: In-Reply-To: <1426680525528.15871@metametrics.co.uk> Subject: Re: Effective query for listing flags in use by messages in a folder MIME-Version: 1.0 X-Mailer: Visena Mail 1.9.0-SNAPSHOT X-Spam-Score: -1.0 X-Spam-Report: SpamAssasin (score=-1.0, required 5.0 ALL_TRUSTED=-1, HTML_MESSAGE=0.001) X-Pg-Spam-Score: -2.0 (--) Content-Type: multipart/related; boundary="----=_Part_153_1706254387.1426681219578" List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-sql Precedence: bulk Sender: pgsql-sql-owner@postgresql.org ------=_Part_152_25528981.1426681219578 Content-Type: multipart/related; boundary="----=_Part_153_1706254387.1426681219578" ------=_Part_153_1706254387.1426681219578 Content-Type: multipart/alternative; boundary="----=_Part_154_1923653916.1426681219615" ------=_Part_154_1923653916.1426681219615 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable P=C3=A5 onsdag 18. mars 2015 kl. 13:08:45, skrev Hector Vass < hector.vass@metametrics.co.uk >: do y= ou=20 want to post some insert statements to populate the table message with=20 some=C2=A0realistic example data.. =C2=A0 Sure: drop table if EXISTS message; create table message( folder_id = integer=20 not NULL, msg varchar NOT NULL, is_seen boolean NOT NULL default false,=20 is_repliedboolean not null default false, is_forwarded boolean not null def= ault=20 false, is_deleted boolean not null default false, is_draft boolean not null= =20 default false, is_flagged boolean not null default false ); INSERT INTO mes= sage( folder_id, msg, is_seen, is_replied, is_forwarded, is_deleted, is_draft,=20 is_flagged) values(1, 'msg a', FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) , = (1,=20 'msg b', TRUE, FALSE, FALSE, FALSE, FALSE, FALSE) , (1, 'msg c', TRUE, FALS= E,=20 FALSE, FALSE, FALSE, FALSE) , (1, 'msg d', TRUE, TRUE, FALSE, FALSE, FALSE,= =20 FALSE) , (1, 'msg e', TRUE, TRUE, FALSE, FALSE, FALSE, FALSE) , (1, 'msg f'= ,=20 FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) , (1, 'msg g', FALSE, FALSE, FALS= E,=20 FALSE, FALSE, FALSE) , (1, 'msg h', TRUE, FALSE, FALSE, TRUE, FALSE, FALSE)= ;=20 create indexmessage_folder_id_deleted_idx ON message(folder_id) where is_de= leted =3DTRUE; create index message_folder_id_forwarded_idx ON message(folder_id)= where=20 is_forwarded=3D TRUE; create index message_folder_id_replied_idx ON message= ( folder_id) where is_replied =3D TRUE; create index message_folder_id_seen_i= dx ON=20 message(folder_id) where is_seen =3D TRUE; create index=20 message_folder_id_flagged_idxON message(folder_id) where is_flagged =3D TRU= E;=20 create indexmessage_folder_id_draft_idx ON message(folder_id) where is_draf= t =3D=20 TRUE; select 'is_deleted' as falgs from (select * from message where folder= _id =3D 1AND is_deleted limit 1) as q UNION select 'is_forwarded' from (select * fr= om=20 message wherefolder_id =3D 1 AND is_forwarded limit 1) as q UNION select=20 'is_replied'from (select * from message where folder_id =3D 1 AND is_replie= d limit 1) as q UNION select 'is_seen' from (select * from message where folder_id = =3D 1=20 ANDis_seen limit 1) as q UNION select 'is_flagged' from (select * from mess= age=20 wherefolder_id =3D 1 AND is_flagged limit 1) as q UNION select 'is_draft' f= rom ( select* from message where folder_id =3D 1 AND is_draft limit 1) as q ; Yie= lds: =C2=A0=20 =C2=A0=C2=A0 falgs ------------ =C2=A0is_deleted =C2=A0is_replied =C2=A0is_seen (3 rows) =C2=A0 =C2=A0 -- Andreas Joseph Krogh CTO / Partner - Visena AS M= obile: +47=20 909 56 963 andreas@visena.com www.visena.com=20 =C2=A0 ------=_Part_154_1923653916.1426681219615 Content-Type: text/html;charset=UTF-8 Content-Transfer-Encoding: quoted-printable
P=C3=A5 onsdag 18. mars 2015 kl. 13:08:45, skrev Hector Vass <hector.vass@metametrics.co.uk>:

do you want to post some = insert statements to populate the table message with some=C2=A0realistic ex= ample data..

=C2=A0
Sure:
drop table if EXISTS m=
essage;
create table mess=
age(
    folder_id =
integer no=
t NULL,
    msg varchar NOT NULL=
,
    is_seen boolean NOT =
NULL default false,
    is_replied=
 boolean n=
ot null default false,
    is_forward=
ed boolean=
 not null default false,
    is_deleted=
 boolean n=
ot null default false,
    is_draft <=
/span>boolean not=
 null default false,
    is_flagged=
 boolean n=
ot null default false
);

INSERT INTO messa=
ge(fold=
er_id, =
msg, is=
_seen, =
is_replied, is_forwarded, is_deleted, is_draft, is_flagged)
values(1, 'msg a', FALSE, FALSE, FALSE, FALSE, FALSE, FALSE)
    , (1, 'msg b', TRUE, FALSE, FALSE, FALSE, FALSE, FALSE)
    , (1, 'msg c', TRUE, FALSE, FALSE, FALSE, FALSE, FALSE)
    , (1, 'msg d', TRUE, TRUE, FALSE, FALSE, FALSE, FALSE)
    , (1, 'msg e', TRUE, TRUE, FALSE, FALSE, FALSE, FALSE)
    , (1, 'msg f', FALSE, FALSE, FALSE, FALSE, FALSE, FALSE)
    , (1, 'msg g', FALSE, FALSE, FALSE, FALSE, FALSE, FALSE)
    , (1, 'msg h', TRUE, FALSE, FALSE, TRUE, FALSE, FALSE)
;

create index message_folder_id_deleted_idx ON message(folder_id) where is_deleted =3D TRUE;
create index message_folder_id_forwarded_idx ON message(folder_id) where is_forwarded =3D TRUE;
create index message_folder_id_replied_idx ON message(folder_id) where is_replied =3D TRUE;
create index message_folder_id_seen_idx ON message(folder_id) where is_seen =3D TRUE;
create index message_folder_id_flagged_idx ON message(folder_id) where is_flagged =3D TRUE;
create index message_folder_id_draft_idx ON message(folder_id) where is_draft =3D TRUE;

select 'is_deleted' =
as falgs <=
span style=3D"color: rgb(0, 0, 128); font-weight: bold;">from (select * from message where folder_id <=
/span>=3D 1 AND is_deleted limit 1) as q
UNION
select 'is_forwarded=
' from (select * from message =
where f=
older_id =3D 1 AND is_forwarded limit 1) as q
UNION
select 'is_replied' =
from (select =
* from message wh=
ere fol=
der_id =3D 1 AND is_replied limit 1) as q
UNION
select 'is_seen' from (=
select * <=
span style=3D"color: rgb(0, 0, 128); font-weight: bold;">from message where=
 folder=
_id =3D 1 AND is_seen limit 1) as q
UNION
select 'is_flagged' =
from (select =
* from message wh=
ere fol=
der_id =3D 1 AND is_flagged limit 1) as q
UNION
select 'is_draft' <=
/span>from (select * from =
message where =
folder_id =3D 1 AND is_draft limit 1) as q
;

Yields:
=C2=A0
=C2=A0=C2= =A0 falgs
------------
=C2=A0is_deleted
=C2=A0is_replied
=C2=A0is_seen
(3 rows)
=C2=A0
=C2=A0
=C2=A0
------=_Part_154_1923653916.1426681219615-- ------=_Part_153_1706254387.1426681219578 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Disposition: inline Content-ID: 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 ------=_Part_153_1706254387.1426681219578-- ------=_Part_152_25528981.1426681219578--