From netgeek@frigames.org Sun Aug 22 01:01:34 2004
Return-path: <netgeek@frigames.org>
Envelope-to: netgeek@lube.frigames.org
Delivery-date: Sun, 22 Aug 2004 01:01:34 -0400
Received: from netgeek by frigames.org with local (Exim 3.36 #1)
	id 1BykU2-0002ip-00
	for netgeek@lube.frigames.org; Sun, 22 Aug 2004 01:01:34 -0400
Date: Sun, 22 Aug 2004 01:01:34 -0400
From: Mike Burns <netgeek@speakeasy.net>
To: Mike Burns <netgeek@lube.frigames.org>
Subject: First one
Message-ID: <20040822050134.GA22771@lube.frigames.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
User-Agent: Mutt/1.4.1i
Sender: "Mike Burns,,,617-739-1575" <netgeek@frigames.org>

Mike,

This is the first one.

-- 
Mike Burns netgeek@speakeasy.net http://mike-burns.com

From netgeek@frigames.org Sun Aug 22 01:01:54 2004
Return-path: <netgeek@frigames.org>
Envelope-to: netgeek@lube.frigames.org
Delivery-date: Sun, 22 Aug 2004 01:01:54 -0400
Received: from netgeek by frigames.org with local (Exim 3.36 #1)
	id 1BykUM-0001Hx-00
	for netgeek@lube.frigames.org; Sun, 22 Aug 2004 01:01:54 -0400
Date: Sun, 22 Aug 2004 01:01:54 -0400
From: Mike Burns <netgeek@speakeasy.net>
To: Mike Burns <netgeek@lube.frigames.org>
Subject: Second one
Message-ID: <20040822050154.GB22771@lube.frigames.org>
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="r5Pyd7+fXNt84Ff3"
Content-Disposition: inline
User-Agent: Mutt/1.4.1i
Sender: "Mike Burns,,,617-739-1575" <netgeek@frigames.org>


--r5Pyd7+fXNt84Ff3
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Mike,

Next one. With an attachment.

-- 
Mike Burns netgeek@speakeasy.net http://mike-burns.com

--r5Pyd7+fXNt84Ff3
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="joinstr.sql"

--
-- ~/projects/postgres/joinstr/joinstr.sql ---
--
-- $Id: joinstr.sql,v 1.2 2004/03/28 01:44:58 harley Exp $
--
-- Commentary:
-- * Join string aggregate for postgres.
-- * We would really like to be able to say:
--      select joinstr(col,':') from tablename;
--   but postgres only permits aggregates of 'arity 1'.

-- clear out
drop aggregate joinstr;
drop function  joinstr_func(text,text);

--
create or replace function joinstr_func(text,text) returns text as '
declare
   str1  alias for $1;
   str2  alias for $2;
   out   text;
begin
   if str1 is null then
      return str2;
   end if;
   if str2 is null then
      return str1;
   end if;
   return str1 || '' & '' || str2;
end;
' language 'plpgsql';

-- tests
-- select joinstr_func( 'a', 'b');
-- select joinstr_func(null, 'b');
-- select joinstr_func( 'a',null);

-- Put the strings together
create aggregate joinstr (
        basetype = text,
        sfunc    = joinstr_func,
        stype    = text
);
        
-- drop table foo;
-- create table foo ( bar text );
-- insert into foo values ( 'a' );
-- insert into foo values ( 'b' );
-- insert into foo values ( 'c' );
-- insert into foo values ( null );
-- insert into foo values ( 'e' );
-- 
-- select joinstr(bar) from foo;

--r5Pyd7+fXNt84Ff3--

From netgeek@frigames.org Sun Aug 22 01:02:21 2004
Return-path: <netgeek@frigames.org>
Envelope-to: netgeek@lube.frigames.org
Delivery-date: Sun, 22 Aug 2004 01:02:21 -0400
Received: from netgeek by frigames.org with local (Exim 3.36 #1)
	id 1BykUn-0002tt-00
	for netgeek@lube.frigames.org; Sun, 22 Aug 2004 01:02:21 -0400
Date: Sun, 22 Aug 2004 01:02:21 -0400
From: Mike Burns <netgeek@speakeasy.net>
To: Mike Burns <netgeek@lube.frigames.org>
Subject: Third one
Message-ID: <20040822050221.GC22771@lube.frigames.org>
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="A6N2fC+uXW/VQSAv"
Content-Disposition: inline
User-Agent: Mutt/1.4.1i
Sender: "Mike Burns,,,617-739-1575" <netgeek@frigames.org>


--A6N2fC+uXW/VQSAv
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Mike,

Third one!

-- 
Mike Burns netgeek@speakeasy.net http://mike-burns.com

--A6N2fC+uXW/VQSAv
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="rss-0.1.plt"

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

--A6N2fC+uXW/VQSAv--

