Received: from localhost (postgresql.org [64.49.215.8]) by postgresql.org (Postfix) with ESMTP id B8FF0476818 for ; Thu, 24 Oct 2002 03:23:10 -0400 (EDT) Received: from matrix.gatewaynet.com (unknown [217.19.69.50]) by postgresql.org (Postfix) with ESMTP id ABFFE4762A2 for ; Thu, 24 Oct 2002 03:23:08 -0400 (EDT) Received: from localhost (achill@localhost) by matrix.gatewaynet.com (8.11.6/8.11.6) with ESMTP id g9O7asp00798; Thu, 24 Oct 2002 10:36:55 +0300 Date: Thu, 24 Oct 2002 10:36:54 +0300 (EEST) From: Achilleus Mantzios To: Tom Haddon Cc: pgsql-sql@postgresql.org Subject: Re: Sum of Every Column In-Reply-To: <31182.66.47.66.34.1035404245.squirrel@tomandshirl.com> Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="333001285-1140151470-1035445014=:26588" X-Virus-Scanned: by AMaViS new-20020517 X-Archive-Number: 200210/322 X-Sequence-Number: 10039 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --333001285-1140151470-1035445014=:26588 Content-Type: TEXT/PLAIN; charset=US-ASCII Hi tom. In postgresql you cannot have functions with a variable number of parameters. (pgsql supports some kind of method overloading based on the type and number of parameters, thats the reason why). But if you run Unix (with freebsd and linux it is trivial as you will see, with solaris you have to be more formal) there is a hack. I had the same problem as yours, but in my case i wanted the minimum, maximum of double numbers (maximum 14 of them). In BSD,linux you can navigate the process' stack with no problems. The idea is to write a variable parameter number function, with the first parameter denoting the number of the rest parameters, (just like printf) and then define a pgsql function with the maximum number of parameters that you will ever have. I attach the code (tested under RedHat 7.1, kernel 2.4.7, glibc-2.2.2-10,gcc-2.96-81 and FreeBSD 4.6.1-RC2, both with postgresql 7.2.1), ================================================================== Achilleus Mantzios S/W Engineer IT dept Dynacom Tankers Mngmt Nikis 4, Glyfada Athens 16610 Greece tel: +30-10-8981112 fax: +30-10-8981877 email: achill@matrix.gatewaynet.com mantzios@softlab.ece.ntua.gr --333001285-1140151470-1035445014=:26588 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="mini_maxi.c" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="mini_maxi.c" I2luY2x1ZGUgPHBnc3FsL2luY2x1ZGUvc2VydmVyL3Bvc3RncmVzLmg+DQoj aW5jbHVkZSA8c3RkaW8uaD4NCmludCBtaW5paGFjayhhcmdjKQ0KaW50IGFy Z2M7DQp7DQoJaW50IGk7DQoJaW50IHRlbXAgPSAqKCZhcmdjICsgMSk7DQoJ aW50IHR2YWw7DQoJZm9yIChpPTE7aTxhcmdjO2krKykgew0KCQl0dmFsID0g KigmYXJnYysxK2kpOw0KCQlpZiAodHZhbCA8IHRlbXAgJiYgdHZhbCAhPTAp DQoJCQl0ZW1wID0gdHZhbDsNCgl9DQoJcmV0dXJuIHRlbXA7DQp9DQppbnQ0 IG1pbmkodDEsdDIsdDMsdDQsdDUsdDYsdDcsdDgsdDksdDEwLHQxMSx0MTIs dDEzLHQxNCkgDQppbnQ0IHQxOw0KaW50NCB0MjsNCmludDQgdDM7DQppbnQ0 IHQ0Ow0KaW50NCB0NTsNCmludDQgdDY7DQppbnQ0IHQ3Ow0KaW50NCB0ODsN CmludDQgdDk7DQppbnQ0IHQxMDsNCmludDQgdDExOw0KaW50NCB0MTI7DQpp bnQ0IHQxMzsNCmludDQgdDE0Ow0Kew0KCXJldHVybiBtaW5paGFjaygxNCx0 MSx0Mix0Myx0NCx0NSx0Nix0Nyx0OCx0OSx0MTAsdDExLHQxMix0MTMsdDE0 KTsNCn0NCmludCBtYXhpaGFjayhhcmdjKQ0KaW50IGFyZ2M7DQp7DQoJaW50 IGk7DQoJaW50IHRlbXAgPSAqKCZhcmdjICsgMSk7DQoJaW50IHR2YWw7DQoJ Zm9yIChpPTE7aTxhcmdjO2krKykgew0KCQl0dmFsID0gKigmYXJnYysxK2kp Ow0KCQlpZiAodHZhbCA+IHRlbXApDQoJCQl0ZW1wID0gdHZhbDsNCgl9DQoJ cmV0dXJuIHRlbXA7DQp9DQppbnQ0IG1heGkodDEsdDIsdDMsdDQsdDUsdDYs dDcsdDgsdDksdDEwLHQxMSx0MTIsdDEzLHQxNCkgDQppbnQ0IHQxOw0KaW50 NCB0MjsNCmludDQgdDM7DQppbnQ0IHQ0Ow0KaW50NCB0NTsNCmludDQgdDY7 DQppbnQ0IHQ3Ow0KaW50NCB0ODsNCmludDQgdDk7DQppbnQ0IHQxMDsNCmlu dDQgdDExOw0KaW50NCB0MTI7DQppbnQ0IHQxMzsNCmludDQgdDE0Ow0Kew0K CXJldHVybiBtYXhpaGFjaygxNCx0MSx0Mix0Myx0NCx0NSx0Nix0Nyx0OCx0 OSx0MTAsdDExLHQxMix0MTMsdDE0KTsNCn0NCg== --333001285-1140151470-1035445014=:26588--