From A.Gaab@scanlab.de Fri Jan 28 11:42:32 2011 Received: from maia.hub.org (maia-5.hub.org [200.46.204.29]) by mail.postgresql.org (Postfix) with ESMTP id 55D88133616B for ; Fri, 28 Jan 2011 07:42:32 -0400 (AST) Received: from mail.postgresql.org ([200.46.204.86]) by maia.hub.org (mx1.hub.org [200.46.204.29]) (amavisd-maia, port 10024) with ESMTP id 67296-03 for ; Fri, 28 Jan 2011 11:42:25 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from mail.scanlab.de (mail.scanlab.de [62.138.55.241]) by mail.postgresql.org (Postfix) with ESMTP id 760551337B79 for ; Fri, 28 Jan 2011 07:42:23 -0400 (AST) Received: from unknown (HELO Exchange-Server.scanlab-intern.de) ([172.16.20.15]) by mail.scanlab-intern.de with ESMTP; 28 Jan 2011 12:42:19 +0100 Received: from Exchange-Server.scanlab-intern.de ([127.0.0.1]) by Exchange-Server ([127.0.0.1]) with mapi; Fri, 28 Jan 2011 12:42:19 +0100 From: Andreas Gaab To: "pgsql-sql@postgresql.org" Date: Fri, 28 Jan 2011 12:42:18 +0100 Subject: aggregation of setof Thread-Topic: aggregation of setof Thread-Index: Acu+4GsEJv1OP8BcSm+4yFBK9dW2VQ== Message-ID: <48DA836F3865C54B8FBF424A3B775AF60132434B4A@Exchange-Server> Accept-Language: de-DE Content-Language: de-DE X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: de-DE Content-Type: multipart/alternative; boundary="_000_48DA836F3865C54B8FBF424A3B775AF60132434B4AExchangeServe_" MIME-Version: 1.0 X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=-1.909 tagged_above=-5 required=5 tests=BAYES_00=-1.9, HTML_MESSAGE=0.001, T_RP_MATCHES_RCVD=-0.01 X-Spam-Level: X-Archive-Number: 201101/113 X-Sequence-Number: 35060 --_000_48DA836F3865C54B8FBF424A3B775AF60132434B4AExchangeServe_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi all, I would like to write a query, which aggregates the results of regexp_match= es(). The problem is that regexp_matches returnes setof text[] as documente= d even if I discard the global flag (http://www.postgresql.org/docs/8.4/sta= tic/functions-matching.html#FUNCTIONS-POSIX-REGEXP ). Thus resulting in an = error when I try to aggregate the result: " SELECT array_accum( regexp_matches('foobarbequebazilbarfbonk', '(b[^b]+)(b[^b]+)') ) ------------------------------- ERROR: set-valued function called in context that cannot accept a set ********** Fehler ********** ERROR: set-valued function called in context that cannot accept a set SQL Status:0A000 " Can I convert a 'setof text[]' to a 'text[]'? Alternatively I could use a sub-select, but I am curious if there are other= solutions around. Regards, Andreas ___________________________________________________________________________ SCANLAB AG Dr. Andreas Simon Gaab Entwicklung * R & D Siemensstr. 2a * 82178 Puchheim * Germany Tel. +49 (89) 800 746-513 * Fax +49 (89) 800 746-199 mailto:a.gaab@scanlab.de * www.scanlab.de Amtsgericht M=FCnchen: HRB 124707 * USt-IdNr.: DE 129 456 351 Vorstand: Georg Hofner (Sprecher), Christian Huttenloher, Norbert Petschik Aufsichtsrat (Vorsitz): Dr. Hans J. Langer ___________________________________________________________________________ --_000_48DA836F3865C54B8FBF424A3B775AF60132434B4AExchangeServe_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

Hi all,

 <= /p>

I would like to write a query, which aggre= gates the results of regexp_matches(). The problem is that regexp_matches r= eturnes setof text[] as documented even if I discard the global flag (http://www.postgresql.org/docs/8.4/static/functions-ma= tching.html#FUNCTIONS-POSIX-REGEXP ). Thus resulting in an error when I= try to aggregate the result:

 

“

SELECT array_accum(

regexp_matches('foobarbequebaz= ilbarfbonk', '(b[^b]+)(b[^b]+)')

= )

-------------= ------------------

ERROR= :=A0 set-valued function called in context that cannot accept a set

********** Fehler **********

ERROR: set-valued function= called in context that cannot accept a set

SQL Status:0A000

“

 

Can I convert a ‚setof te= xt[]‘ to a ‚text[]‘?

 

A= lternatively I could use a sub-select, but I am curious if there are other = solutions around.

&= nbsp;

Regards,

Andreas

 

______________________________________________= _____________________________

 

SCANLAB AG

<= p class=3DMsoNormal>Dr. Andreas = Simon Gaab

Entwicklung • R & D

 

Siemensstr.&= nbsp;2a • 82178 Puchheim • Germany

Tel. +49 (89)=  800 746-513 • Fax +49 (89) 800 746-199=

mailto:a.gaab@scanlab.de • = www.scanlab.de

<= p class=3DMsoNormal> 

Amtsgericht&nbs= p;M=FCnchen: HRB 124707 • USt-IdNr.: DE 129 456 3= 51

Vorstand: Georg Hofner (Sprecher), Christian Huttenloher,= Norbert Petschik

Aufsichtsrat (Vorsitz): Dr. Hans J.&n= bsp;Langer

________________________________________________________________= ___________

 

=
= --_000_48DA836F3865C54B8FBF424A3B775AF60132434B4AExchangeServe_-- From A.Gaab@scanlab.de Mon Jan 31 09:02:43 2011 Received: from maia.hub.org (maia-2.hub.org [200.46.204.251]) by mail.postgresql.org (Postfix) with ESMTP id 4333013364DE for ; Mon, 31 Jan 2011 05:02:43 -0400 (AST) Received: from mail.postgresql.org ([200.46.204.86]) by maia.hub.org (mx1.hub.org [200.46.204.251]) (amavisd-maia, port 10024) with ESMTP id 40050-05 for ; Mon, 31 Jan 2011 09:02:35 +0000 (UTC) X-Greylist: delayed 00:10:07.151069 by SQLgrey-1.7.6 Received: from mail.scanlab.de (mail.scanlab.de [62.138.55.241]) by mail.postgresql.org (Postfix) with ESMTP id 2FEF2133616B for ; Mon, 31 Jan 2011 05:02:33 -0400 (AST) Received: from unknown (HELO Exchange-Server.scanlab-intern.de) ([172.16.20.15]) by mail.scanlab-intern.de with ESMTP; 31 Jan 2011 09:52:23 +0100 Received: from Exchange-Server.scanlab-intern.de ([127.0.0.1]) by Exchange-Server ([127.0.0.1]) with mapi; Mon, 31 Jan 2011 09:52:23 +0100 From: Andreas Gaab To: "pgsql-sql@postgresql.org" Date: Mon, 31 Jan 2011 09:52:23 +0100 Subject: Re: aggregation of setof Thread-Topic: [SQL] aggregation of setof Thread-Index: Acu/jmxN1yPRn8HzQSK4uNWgAHkoQwBlXXgQ Message-ID: <48DA836F3865C54B8FBF424A3B775AF6671A6838F8@Exchange-Server> References: <48DA836F3865C54B8FBF424A3B775AF60132434B4A@Exchange-Server> In-Reply-To: Accept-Language: de-DE Content-Language: de-DE X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: de-DE Content-Type: multipart/alternative; boundary="_000_48DA836F3865C54B8FBF424A3B775AF6671A6838F8ExchangeServe_" MIME-Version: 1.0 X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=-1.909 tagged_above=-5 required=5 tests=BAYES_00=-1.9, HTML_MESSAGE=0.001, T_RP_MATCHES_RCVD=-0.01 X-Spam-Level: X-Archive-Number: 201101/117 X-Sequence-Number: 35064 --_000_48DA836F3865C54B8FBF424A3B775AF6671A6838F8ExchangeServe_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 RnVuY3Rpb25zIGFwcGFyZW50bHkgY2Fubm90IHRha2Ugc2V0b2YgYXJndW1lbnRzLg0KDQpQb3N0 Z3JlcyA4LjQ6DQoNCkNSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHRlc3R0YWJsZShJTiBzZXRv ZiBhbnlhcnJheSkNCiAgUkVUVVJOUyBhbnlhcnJheSBBUw0KJEJPRFkkDQpTRUxFQ1QgJDEgTElN SVQgMTsNCiRCT0RZJA0KICBMQU5HVUFHRSAnc3FsJyBTVEFCTEU7DQoNCi0tPg0KRVJST1I6ICBm dW5jdGlvbnMgY2Fubm90IGFjY2VwdCBzZXQgYXJndW1lbnRzDQoNCg0KDQpWb246IFZpa3RvciBC b2pvdmnEhyBbbWFpbHRvOnZpa3Rvci5ib2pvdmljQGdtYWlsLmNvbV0NCkdlc2VuZGV0OiBTYW1z dGFnLCAyOS4gSmFudWFyIDIwMTEgMDk6MjgNCkFuOiBBbmRyZWFzIEdhYWINCkJldHJlZmY6IFJl OiBbU1FMXSBhZ2dyZWdhdGlvbiBvZiBzZXRvZg0KDQppIGhhdmUgbmV2ZXIgdXNlZCB0aGF0IHR5 cGUgYnV0IG1heWJlIHlvdSBjYW4gdHJ5IHRoaXM7DQotY3JlYXRlIGZ1bmN0aW9uIHdoaWNoIHJl dHVybnMgdGV4dFtdLCBhbmQgdGFrc2Ugc2V0b2YgdGV4dCBhcyBhcmd1bWVudCAoaWYgcG9zc2li bGUpDQotcmVhY2ggZXZlcnkgdGV4dFtdIGluIHNldCBvZiB0ZXh0W10gdXNpbmcgYXJyYXkgaW5k ZXgNCi1yZXR1cm4gdmFsdWVzIHVzaW5nICJyZXR1cm4gbmV4dCIgZm9yIGVhY2ggdGV4dCBpbiB0 ZXh0W10gd2hpY2ggaXMgaW4gc2V0IG9mIHRleHRbXQ0KDQpPbiBGcmksIEphbiAyOCwgMjAxMSBh dCAxMjo0MiBQTSwgQW5kcmVhcyBHYWFiIDxBLkdhYWJAc2NhbmxhYi5kZTxtYWlsdG86QS5HYWFi QHNjYW5sYWIuZGU+PiB3cm90ZToNCkhpIGFsbCwNCg0KSSB3b3VsZCBsaWtlIHRvIHdyaXRlIGEg cXVlcnksIHdoaWNoIGFnZ3JlZ2F0ZXMgdGhlIHJlc3VsdHMgb2YgcmVnZXhwX21hdGNoZXMoKS4g VGhlIHByb2JsZW0gaXMgdGhhdCByZWdleHBfbWF0Y2hlcyByZXR1cm5lcyBzZXRvZiB0ZXh0W10g YXMgZG9jdW1lbnRlZCBldmVuIGlmIEkgZGlzY2FyZCB0aGUgZ2xvYmFsIGZsYWcgKGh0dHA6Ly93 d3cucG9zdGdyZXNxbC5vcmcvZG9jcy84LjQvc3RhdGljL2Z1bmN0aW9ucy1tYXRjaGluZy5odG1s I0ZVTkNUSU9OUy1QT1NJWC1SRUdFWFAgKS4gVGh1cyByZXN1bHRpbmcgaW4gYW4gZXJyb3Igd2hl biBJIHRyeSB0byBhZ2dyZWdhdGUgdGhlIHJlc3VsdDoNCg0K4oCcDQpTRUxFQ1QgYXJyYXlfYWNj dW0oDQpyZWdleHBfbWF0Y2hlcygnZm9vYmFyYmVxdWViYXppbGJhcmZib25rJywgJyhiW15iXSsp KGJbXmJdKyknKQ0KKQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KRVJST1I6ICBz ZXQtdmFsdWVkIGZ1bmN0aW9uIGNhbGxlZCBpbiBjb250ZXh0IHRoYXQgY2Fubm90IGFjY2VwdCBh IHNldA0KKioqKioqKioqKiBGZWhsZXIgKioqKioqKioqKg0KRVJST1I6IHNldC12YWx1ZWQgZnVu Y3Rpb24gY2FsbGVkIGluIGNvbnRleHQgdGhhdCBjYW5ub3QgYWNjZXB0IGEgc2V0DQpTUUwgU3Rh dHVzOjBBMDAwDQrigJwNCg0KQ2FuIEkgY29udmVydCBhIOKAmnNldG9mIHRleHRbXeKAmCB0byBh IOKAmnRleHRbXeKAmD8NCg0KQWx0ZXJuYXRpdmVseSBJIGNvdWxkIHVzZSBhIHN1Yi1zZWxlY3Qs IGJ1dCBJIGFtIGN1cmlvdXMgaWYgdGhlcmUgYXJlIG90aGVyIHNvbHV0aW9ucyBhcm91bmQuDQoN ClJlZ2FyZHMsDQpBbmRyZWFzDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KDQpTQ0FOTEFCIEFHDQpE ci4gQW5kcmVhcyBTaW1vbiBHYWFiDQpFbnR3aWNrbHVuZyDigKIgUiAmIEQNCg0KU2llbWVuc3N0 ci4gMmEg4oCiIDgyMTc4IFB1Y2hoZWltIOKAoiBHZXJtYW55DQpUZWwuICs0OSAoODkpIDgwMCA3 NDYtNTEzIOKAoiBGYXggKzQ5ICg4OSkgODAwIDc0Ni0xOTkNCm1haWx0bzphLmdhYWJAc2Nhbmxh Yi5kZSDigKIgd3d3LnNjYW5sYWIuZGU8aHR0cDovL3d3dy5zY2FubGFiLmRlPg0KDQpBbXRzZ2Vy aWNodCBNw7xuY2hlbjogSFJCIDEyNDcwNyDigKIgVVN0LUlkTnIuOiBERSAxMjkgNDU2IDM1MQ0K Vm9yc3RhbmQ6IEdlb3JnIEhvZm5lciAoU3ByZWNoZXIpLCBDaHJpc3RpYW4gSHV0dGVubG9oZXIs IE5vcmJlcnQgUGV0c2NoaWsNCkF1ZnNpY2h0c3JhdCAoVm9yc2l0eik6IERyLiBIYW5zIEouIExh bmdlcg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fDQoNCg0KDQoNCi0tDQotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NClZpa3RvciBCb2pvdmnEhw0KLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpXaGVyZXZlciBJIGdvLCBNdXJwaHkgZ29lcyB3aXRoIG1l DQo= --_000_48DA836F3865C54B8FBF424A3B775AF6671A6838F8ExchangeServe_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv VFIvUkVDLWh0bWw0MCI+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVu dD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij48bWV0YSBuYW1lPUdlbmVyYXRvciBjb250ZW50 PSJNaWNyb3NvZnQgV29yZCAxMiAoZmlsdGVyZWQgbWVkaXVtKSI+PHN0eWxlPjwhLS0NCi8qIEZv bnQgRGVmaW5pdGlvbnMgKi8NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6V2luZ2RpbmdzOw0K CXBhbm9zZS0xOjUgMCAwIDAgMCAwIDAgMCAwIDA7fQ0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWls eTpXaW5nZGluZ3M7DQoJcGFub3NlLTE6NSAwIDAgMCAwIDAgMCAwIDAgMDt9DQpAZm9udC1mYWNl DQoJe2ZvbnQtZmFtaWx5OlRhaG9tYTsNCglwYW5vc2UtMToyIDExIDYgNCAzIDUgNCA0IDIgNDt9 DQovKiBTdHlsZSBEZWZpbml0aW9ucyAqLw0KcC5Nc29Ob3JtYWwsIGxpLk1zb05vcm1hbCwgZGl2 Lk1zb05vcm1hbA0KCXttYXJnaW46MGNtOw0KCW1hcmdpbi1ib3R0b206LjAwMDFwdDsNCglmb250 LXNpemU6MTIuMHB0Ow0KCWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iLCJzZXJpZiI7fQ0K aDENCgl7bWFyZ2luLXRvcDoxMi4wcHQ7DQoJbWFyZ2luLXJpZ2h0OjBjbTsNCgltYXJnaW4tYm90 dG9tOjE4LjBwdDsNCgltYXJnaW4tbGVmdDowY207DQoJcGFnZS1icmVhay1hZnRlcjphdm9pZDsN Cglmb250LXNpemU6MTYuMHB0Ow0KCWZvbnQtZmFtaWx5OiJBcmlhbCIsInNhbnMtc2VyaWYiO30N CmgyDQoJe21hcmdpbi10b3A6Ni4wcHQ7DQoJbWFyZ2luLXJpZ2h0OjBjbTsNCgltYXJnaW4tYm90 dG9tOjBjbTsNCgltYXJnaW4tbGVmdDowY207DQoJbWFyZ2luLWJvdHRvbTouMDAwMXB0Ow0KCXBh Z2UtYnJlYWstYWZ0ZXI6YXZvaWQ7DQoJZm9udC1zaXplOjEyLjBwdDsNCglmb250LWZhbWlseToi QXJpYWwiLCJzYW5zLXNlcmlmIjsNCgl0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30NCmgzDQoJ e21hcmdpbi10b3A6My4wcHQ7DQoJbWFyZ2luLXJpZ2h0OjBjbTsNCgltYXJnaW4tYm90dG9tOjBj bTsNCgltYXJnaW4tbGVmdDowY207DQoJbWFyZ2luLWJvdHRvbTouMDAwMXB0Ow0KCXBhZ2UtYnJl YWstYWZ0ZXI6YXZvaWQ7DQoJZm9udC1zaXplOjEyLjBwdDsNCglmb250LWZhbWlseToiQXJpYWwi LCJzYW5zLXNlcmlmIjsNCglmb250LXdlaWdodDpub3JtYWw7DQoJdGV4dC1kZWNvcmF0aW9uOnVu ZGVybGluZTt9DQpoNA0KCXttYXJnaW4tdG9wOjBjbTsNCgltYXJnaW4tcmlnaHQ6MGNtOw0KCW1h cmdpbi1ib3R0b206MTIuMHB0Ow0KCW1hcmdpbi1sZWZ0OjBjbTsNCglwYWdlLWJyZWFrLWFmdGVy OmF2b2lkOw0KCWZvbnQtc2l6ZToxMi4wcHQ7DQoJZm9udC1mYW1pbHk6IkFyaWFsIiwic2Fucy1z ZXJpZiI7DQoJZm9udC13ZWlnaHQ6bm9ybWFsOw0KCXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7 fQ0KcC5Nc29Ub2MxLCBsaS5Nc29Ub2MxLCBkaXYuTXNvVG9jMQ0KCXttYXJnaW4tdG9wOjYuMHB0 Ow0KCW1hcmdpbi1yaWdodDoxLjBjbTsNCgltYXJnaW4tYm90dG9tOjBjbTsNCgltYXJnaW4tbGVm dDoxNC4ycHQ7DQoJbWFyZ2luLWJvdHRvbTouMDAwMXB0Ow0KCXRleHQtaW5kZW50Oi0xNC4ycHQ7 DQoJZm9udC1zaXplOjEyLjBwdDsNCglmb250LWZhbWlseToiQXJpYWwiLCJzYW5zLXNlcmlmIjsN Cglmb250LXdlaWdodDpib2xkO30NCnAuTXNvVG9jMiwgbGkuTXNvVG9jMiwgZGl2Lk1zb1RvYzIN Cgl7bWFyZ2luLXRvcDozLjBwdDsNCgltYXJnaW4tcmlnaHQ6MS4wY207DQoJbWFyZ2luLWJvdHRv bTowY207DQoJbWFyZ2luLWxlZnQ6MjguNHB0Ow0KCW1hcmdpbi1ib3R0b206LjAwMDFwdDsNCgl0 ZXh0LWluZGVudDotMTQuMnB0Ow0KCWZvbnQtc2l6ZToxMi4wcHQ7DQoJZm9udC1mYW1pbHk6IkFy aWFsIiwic2Fucy1zZXJpZiI7fQ0KcC5Nc29Ub2MzLCBsaS5Nc29Ub2MzLCBkaXYuTXNvVG9jMw0K CXttYXJnaW4tdG9wOjBjbTsNCgltYXJnaW4tcmlnaHQ6MS4wY207DQoJbWFyZ2luLWJvdHRvbTow Y207DQoJbWFyZ2luLWxlZnQ6NDIuNTVwdDsNCgltYXJnaW4tYm90dG9tOi4wMDAxcHQ7DQoJdGV4 dC1pbmRlbnQ6LTE0LjJwdDsNCglmb250LXNpemU6MTIuMHB0Ow0KCWZvbnQtZmFtaWx5OiJBcmlh bCIsInNhbnMtc2VyaWYiO30NCmE6bGluaywgc3Bhbi5Nc29IeXBlcmxpbmsNCgl7Y29sb3I6Ymx1 ZTsNCgl0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30NCmE6dmlzaXRlZCwgc3Bhbi5Nc29IeXBl cmxpbmtGb2xsb3dlZA0KCXtjb2xvcjpwdXJwbGU7DQoJdGV4dC1kZWNvcmF0aW9uOnVuZGVybGlu ZTt9DQpzcGFuLkUtTWFpbEZvcm1hdHZvcmxhZ2UyMA0KCXttc28tc3R5bGUtdHlwZTpwZXJzb25h bC1yZXBseTsNCglmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIiwic2VyaWYiOw0KCWNvbG9y OiMxRjQ5N0Q7fQ0KLk1zb0NocERlZmF1bHQNCgl7bXNvLXN0eWxlLXR5cGU6ZXhwb3J0LW9ubHk7 DQoJZm9udC1zaXplOjEwLjBwdDt9DQpAcGFnZSBXb3JkU2VjdGlvbjENCgl7c2l6ZTo2MTIuMHB0 IDc5Mi4wcHQ7DQoJbWFyZ2luOjcwLjg1cHQgNzAuODVwdCAyLjBjbSA3MC44NXB0O30NCmRpdi5X b3JkU2VjdGlvbjENCgl7cGFnZTpXb3JkU2VjdGlvbjE7fQ0KLS0+PC9zdHlsZT48IS0tW2lmIGd0 ZSBtc28gOV0+PHhtbD4NCjxvOnNoYXBlZGVmYXVsdHMgdjpleHQ9ImVkaXQiIHNwaWRtYXg9IjEw MjYiIC8+DQo8L3htbD48IVtlbmRpZl0tLT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4NCjxvOnNo YXBlbGF5b3V0IHY6ZXh0PSJlZGl0Ij4NCjxvOmlkbWFwIHY6ZXh0PSJlZGl0IiBkYXRhPSIxIiAv Pg0KPC9vOnNoYXBlbGF5b3V0PjwveG1sPjwhW2VuZGlmXS0tPjwvaGVhZD48Ym9keSBsYW5nPURF IGxpbms9Ymx1ZSB2bGluaz1wdXJwbGU+PGRpdiBjbGFzcz1Xb3JkU2VjdGlvbjE+PHAgY2xhc3M9 TXNvTm9ybWFsPjxzcGFuIGxhbmc9RU4tVVMgc3R5bGU9J2ZvbnQtc2l6ZToxMS4wcHQ7Y29sb3I6 IzFGNDk3RCc+RnVuY3Rpb25zIGFwcGFyZW50bHkgY2Fubm90IHRha2Ugc2V0b2YgYXJndW1lbnRz LjxvOnA+PC9vOnA+PC9zcGFuPjwvcD48cCBjbGFzcz1Nc29Ob3JtYWw+PHNwYW4gbGFuZz1FTi1V UyBzdHlsZT0nZm9udC1zaXplOjExLjBwdDtjb2xvcjojMUY0OTdEJz48bzpwPiZuYnNwOzwvbzpw Pjwvc3Bhbj48L3A+PHAgY2xhc3M9TXNvTm9ybWFsPjxzcGFuIGxhbmc9RU4tVVMgc3R5bGU9J2Zv bnQtc2l6ZToxMS4wcHQ7Y29sb3I6IzFGNDk3RCc+UG9zdGdyZXMgOC40OjxvOnA+PC9vOnA+PC9z cGFuPjwvcD48cCBjbGFzcz1Nc29Ob3JtYWw+PHNwYW4gbGFuZz1FTi1VUyBzdHlsZT0nZm9udC1z aXplOjExLjBwdDtjb2xvcjojMUY0OTdEJz48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+PHAg Y2xhc3M9TXNvTm9ybWFsPjxzcGFuIGxhbmc9RU4tVVMgc3R5bGU9J2ZvbnQtc2l6ZToxMS4wcHQ7 Y29sb3I6IzFGNDk3RCc+Q1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gdGVzdHRhYmxlKElOIHNl dG9mIGFueWFycmF5KTxvOnA+PC9vOnA+PC9zcGFuPjwvcD48cCBjbGFzcz1Nc29Ob3JtYWw+PHNw YW4gbGFuZz1FTi1VUyBzdHlsZT0nZm9udC1zaXplOjExLjBwdDtjb2xvcjojMUY0OTdEJz7CoCBS RVRVUk5TIGFueWFycmF5IEFTPG86cD48L286cD48L3NwYW4+PC9wPjxwIGNsYXNzPU1zb05vcm1h bD48c3BhbiBsYW5nPUVOLVVTIHN0eWxlPSdmb250LXNpemU6MTEuMHB0O2NvbG9yOiMxRjQ5N0Qn PiRCT0RZJDxvOnA+PC9vOnA+PC9zcGFuPjwvcD48cCBjbGFzcz1Nc29Ob3JtYWw+PHNwYW4gbGFu Zz1FTi1VUyBzdHlsZT0nZm9udC1zaXplOjExLjBwdDtjb2xvcjojMUY0OTdEJz5TRUxFQ1QgJDEg TElNSVQgMTs8bzpwPjwvbzpwPjwvc3Bhbj48L3A+PHAgY2xhc3M9TXNvTm9ybWFsPjxzcGFuIGxh bmc9RU4tVVMgc3R5bGU9J2ZvbnQtc2l6ZToxMS4wcHQ7Y29sb3I6IzFGNDk3RCc+JEJPRFkkPG86 cD48L286cD48L3NwYW4+PC9wPjxwIGNsYXNzPU1zb05vcm1hbD48c3BhbiBsYW5nPUVOLVVTIHN0 eWxlPSdmb250LXNpemU6MTEuMHB0O2NvbG9yOiMxRjQ5N0QnPsKgIExBTkdVQUdFICdzcWwnIFNU QUJMRTs8bzpwPjwvbzpwPjwvc3Bhbj48L3A+PHAgY2xhc3M9TXNvTm9ybWFsPjxzcGFuIGxhbmc9 RU4tVVMgc3R5bGU9J2ZvbnQtc2l6ZToxMS4wcHQ7Y29sb3I6IzFGNDk3RCc+PG86cD4mbmJzcDs8 L286cD48L3NwYW4+PC9wPjxwIGNsYXNzPU1zb05vcm1hbD48c3BhbiBsYW5nPUVOLVVTIHN0eWxl PSdmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OldpbmdkaW5ncztjb2xvcjojMUY0OTdEJz7D oDwvc3Bhbj48c3BhbiBsYW5nPUVOLVVTIHN0eWxlPSdmb250LXNpemU6MTEuMHB0O2NvbG9yOiMx RjQ5N0QnPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD48cCBjbGFzcz1Nc29Ob3JtYWw+PHNwYW4gbGFu Zz1FTi1VUyBzdHlsZT0nZm9udC1zaXplOjExLjBwdDtjb2xvcjojMUY0OTdEJz5FUlJPUjrCoCBm dW5jdGlvbnMgY2Fubm90IGFjY2VwdCBzZXQgYXJndW1lbnRzPG86cD48L286cD48L3NwYW4+PC9w PjxwIGNsYXNzPU1zb05vcm1hbD48c3BhbiBsYW5nPUVOLVVTIHN0eWxlPSdmb250LXNpemU6MTEu MHB0O2NvbG9yOiMxRjQ5N0QnPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD48cCBjbGFzcz1N c29Ob3JtYWw+PHNwYW4gbGFuZz1FTi1VUyBzdHlsZT0nZm9udC1zaXplOjExLjBwdDtjb2xvcjoj MUY0OTdEJz48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+PHAgY2xhc3M9TXNvTm9ybWFsPjxz cGFuIGxhbmc9RU4tVVMgc3R5bGU9J2ZvbnQtc2l6ZToxMS4wcHQ7Y29sb3I6IzFGNDk3RCc+PG86 cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPjxkaXYgc3R5bGU9J2JvcmRlcjpub25lO2JvcmRlci10 b3A6c29saWQgI0I1QzRERiAxLjBwdDtwYWRkaW5nOjMuMHB0IDBjbSAwY20gMGNtJz48cCBjbGFz cz1Nc29Ob3JtYWw+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6 IlRhaG9tYSIsInNhbnMtc2VyaWYiJz5Wb246PC9zcGFuPjwvYj48c3BhbiBzdHlsZT0nZm9udC1z aXplOjEwLjBwdDtmb250LWZhbWlseToiVGFob21hIiwic2Fucy1zZXJpZiInPiBWaWt0b3IgQm9q b3ZpxIcgW21haWx0bzp2aWt0b3IuYm9qb3ZpY0BnbWFpbC5jb21dIDxicj48Yj5HZXNlbmRldDo8 L2I+IFNhbXN0YWcsIDI5LiBKYW51YXIgMjAxMSAwOToyODxicj48Yj5Bbjo8L2I+IEFuZHJlYXMg R2FhYjxicj48Yj5CZXRyZWZmOjwvYj4gUmU6IFtTUUxdIGFnZ3JlZ2F0aW9uIG9mIHNldG9mPG86 cD48L286cD48L3NwYW4+PC9wPjwvZGl2PjxwIGNsYXNzPU1zb05vcm1hbD48bzpwPiZuYnNwOzwv bzpwPjwvcD48ZGl2PjxwIGNsYXNzPU1zb05vcm1hbD5pIGhhdmUgbmV2ZXIgdXNlZCB0aGF0IHR5 cGUgYnV0IG1heWJlIHlvdSBjYW4gdHJ5IHRoaXM7PG86cD48L286cD48L3A+PC9kaXY+PGRpdj48 cCBjbGFzcz1Nc29Ob3JtYWw+LWNyZWF0ZSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIHRleHRbXSwg YW5kIHRha3NlIHNldG9mIHRleHQgYXMgYXJndW1lbnQgKGlmIHBvc3NpYmxlKTxvOnA+PC9vOnA+ PC9wPjwvZGl2PjxkaXY+PHAgY2xhc3M9TXNvTm9ybWFsPi1yZWFjaCBldmVyeSB0ZXh0W10gaW4g c2V0IG9mIHRleHRbXSB1c2luZyBhcnJheSBpbmRleDxvOnA+PC9vOnA+PC9wPjwvZGl2PjxkaXY+ PHAgY2xhc3M9TXNvTm9ybWFsPi1yZXR1cm4gdmFsdWVzIHVzaW5nICZxdW90O3JldHVybiBuZXh0 JnF1b3Q7IGZvciBlYWNoIHRleHQgaW4gdGV4dFtdIHdoaWNoIGlzIGluIHNldCBvZiB0ZXh0W108 bzpwPjwvbzpwPjwvcD48L2Rpdj48ZGl2PjxwIGNsYXNzPU1zb05vcm1hbD48bzpwPiZuYnNwOzwv bzpwPjwvcD48L2Rpdj48ZGl2PjxwIGNsYXNzPU1zb05vcm1hbD5PbiBGcmksIEphbiAyOCwgMjAx MSBhdCAxMjo0MiBQTSwgQW5kcmVhcyBHYWFiICZsdDs8YSBocmVmPSJtYWlsdG86QS5HYWFiQHNj YW5sYWIuZGUiPkEuR2FhYkBzY2FubGFiLmRlPC9hPiZndDsgd3JvdGU6PG86cD48L286cD48L3A+ PGRpdj48ZGl2PjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbXNvLW1hcmdpbi10b3AtYWx0OmF1 dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG8nPjxzcGFuIGxhbmc9RU4tVVMgc3R5bGU9J2Zv bnQtc2l6ZToxMS4wcHQnPkhpIGFsbCw8L3NwYW4+PG86cD48L286cD48L3A+PHAgY2xhc3M9TXNv Tm9ybWFsIHN0eWxlPSdtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1h bHQ6YXV0byc+PHNwYW4gbGFuZz1FTi1VUyBzdHlsZT0nZm9udC1zaXplOjExLjBwdCc+Jm5ic3A7 PC9zcGFuPjxvOnA+PC9vOnA+PC9wPjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbXNvLW1hcmdp bi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG8nPjxzcGFuIGxhbmc9RU4t VVMgc3R5bGU9J2ZvbnQtc2l6ZToxMS4wcHQnPkkgd291bGQgbGlrZSB0byB3cml0ZSBhIHF1ZXJ5 LCB3aGljaCBhZ2dyZWdhdGVzIHRoZSByZXN1bHRzIG9mIHJlZ2V4cF9tYXRjaGVzKCkuIFRoZSBw cm9ibGVtIGlzIHRoYXQgcmVnZXhwX21hdGNoZXMgcmV0dXJuZXMgc2V0b2YgdGV4dFtdIGFzIGRv Y3VtZW50ZWQgZXZlbiBpZiBJIGRpc2NhcmQgdGhlIGdsb2JhbCBmbGFnICg8YSBocmVmPSJodHRw Oi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvOC40L3N0YXRpYy9mdW5jdGlvbnMtbWF0Y2hpbmcu aHRtbCNGVU5DVElPTlMtUE9TSVgtUkVHRVhQIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5w b3N0Z3Jlc3FsLm9yZy9kb2NzLzguNC9zdGF0aWMvZnVuY3Rpb25zLW1hdGNoaW5nLmh0bWwjRlVO Q1RJT05TLVBPU0lYLVJFR0VYUDwvYT4gKS4gVGh1cyByZXN1bHRpbmcgaW4gYW4gZXJyb3Igd2hl biBJIHRyeSB0byBhZ2dyZWdhdGUgdGhlIHJlc3VsdDo8L3NwYW4+PG86cD48L286cD48L3A+PHAg Y2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2lu LWJvdHRvbS1hbHQ6YXV0byc+PHNwYW4gbGFuZz1FTi1VUyBzdHlsZT0nZm9udC1zaXplOjExLjBw dCc+Jm5ic3A7PC9zcGFuPjxvOnA+PC9vOnA+PC9wPjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0n bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG8nPjxzcGFu IGxhbmc9RU4tVVMgc3R5bGU9J2ZvbnQtc2l6ZToxMS4wcHQnPuKAnDwvc3Bhbj48bzpwPjwvbzpw PjwvcD48cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21z by1tYXJnaW4tYm90dG9tLWFsdDphdXRvJz48c3BhbiBsYW5nPUVOLVVTIHN0eWxlPSdmb250LXNp emU6MTEuMHB0Jz5TRUxFQ1QgYXJyYXlfYWNjdW0oIDwvc3Bhbj48bzpwPjwvbzpwPjwvcD48cCBj bGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4t Ym90dG9tLWFsdDphdXRvJz48c3BhbiBsYW5nPUVOLVVTIHN0eWxlPSdmb250LXNpemU6MTEuMHB0 Jz5yZWdleHBfbWF0Y2hlcygnZm9vYmFyYmVxdWViYXppbGJhcmZib25rJywgJyhiW15iXSspKGJb XmJdKyknKTwvc3Bhbj48bzpwPjwvbzpwPjwvcD48cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21z by1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDphdXRvJz48c3BhbiBs YW5nPUVOLVVTIHN0eWxlPSdmb250LXNpemU6MTEuMHB0Jz4pPC9zcGFuPjxvOnA+PC9vOnA+PC9w PjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1h cmdpbi1ib3R0b20tYWx0OmF1dG8nPjxzcGFuIGxhbmc9RU4tVVMgc3R5bGU9J2ZvbnQtc2l6ZTox MS4wcHQnPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L3NwYW4+PG86cD48L286cD48 L3A+PHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28t bWFyZ2luLWJvdHRvbS1hbHQ6YXV0byc+PHNwYW4gbGFuZz1FTi1VUyBzdHlsZT0nZm9udC1zaXpl OjExLjBwdCc+RVJST1I6Jm5ic3A7IHNldC12YWx1ZWQgZnVuY3Rpb24gY2FsbGVkIGluIGNvbnRl eHQgdGhhdCBjYW5ub3QgYWNjZXB0IGEgc2V0PC9zcGFuPjxvOnA+PC9vOnA+PC9wPjxwIGNsYXNz PU1zb05vcm1hbCBzdHlsZT0nbXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0 b20tYWx0OmF1dG8nPjxzcGFuIGxhbmc9RU4tVVMgc3R5bGU9J2ZvbnQtc2l6ZToxMS4wcHQnPioq KioqKioqKiogRmVobGVyICoqKioqKioqKio8L3NwYW4+PG86cD48L286cD48L3A+PHAgY2xhc3M9 TXNvTm9ybWFsIHN0eWxlPSdtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRv bS1hbHQ6YXV0byc+PHNwYW4gbGFuZz1FTi1VUyBzdHlsZT0nZm9udC1zaXplOjExLjBwdCc+RVJS T1I6IHNldC12YWx1ZWQgZnVuY3Rpb24gY2FsbGVkIGluIGNvbnRleHQgdGhhdCBjYW5ub3QgYWNj ZXB0IGEgc2V0PC9zcGFuPjxvOnA+PC9vOnA+PC9wPjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0n bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG8nPjxzcGFu IGxhbmc9RU4tVVMgc3R5bGU9J2ZvbnQtc2l6ZToxMS4wcHQnPlNRTCBTdGF0dXM6MEEwMDA8L3Nw YW4+PG86cD48L286cD48L3A+PHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtc28tbWFyZ2luLXRv cC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0byc+PHNwYW4gbGFuZz1FTi1VUyBz dHlsZT0nZm9udC1zaXplOjExLjBwdCc+4oCcPC9zcGFuPjxvOnA+PC9vOnA+PC9wPjxwIGNsYXNz PU1zb05vcm1hbCBzdHlsZT0nbXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0 b20tYWx0OmF1dG8nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTEuMHB0Jz4mbmJzcDs8L3NwYW4+ PG86cD48L286cD48L3A+PHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtc28tbWFyZ2luLXRvcC1h bHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0byc+PHNwYW4gbGFuZz1FTi1VUyBzdHls ZT0nZm9udC1zaXplOjExLjBwdCc+Q2FuIEkgY29udmVydCBhIOKAmnNldG9mIHRleHRbXeKAmCB0 byBhIOKAmnRleHRbXeKAmD88L3NwYW4+PG86cD48L286cD48L3A+PHAgY2xhc3M9TXNvTm9ybWFs IHN0eWxlPSdtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0 byc+PHNwYW4gbGFuZz1FTi1VUyBzdHlsZT0nZm9udC1zaXplOjExLjBwdCc+Jm5ic3A7PC9zcGFu PjxvOnA+PC9vOnA+PC9wPjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbXNvLW1hcmdpbi10b3At YWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG8nPjxzcGFuIGxhbmc9RU4tVVMgc3R5 bGU9J2ZvbnQtc2l6ZToxMS4wcHQnPkFsdGVybmF0aXZlbHkgSSBjb3VsZCB1c2UgYSBzdWItc2Vs ZWN0LCBidXQgSSBhbSBjdXJpb3VzIGlmIHRoZXJlIGFyZSBvdGhlciBzb2x1dGlvbnMgYXJvdW5k Ljwvc3Bhbj48bzpwPjwvbzpwPjwvcD48cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21zby1tYXJn aW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDphdXRvJz48c3BhbiBsYW5nPUVO LVVTIHN0eWxlPSdmb250LXNpemU6MTEuMHB0Jz4mbmJzcDs8L3NwYW4+PG86cD48L286cD48L3A+ PHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFy Z2luLWJvdHRvbS1hbHQ6YXV0byc+PHNwYW4gbGFuZz1FTi1VUyBzdHlsZT0nZm9udC1zaXplOjEx LjBwdCc+UmVnYXJkcyw8L3NwYW4+PG86cD48L286cD48L3A+PHAgY2xhc3M9TXNvTm9ybWFsIHN0 eWxlPSdtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0byc+ PHNwYW4gbGFuZz1FTi1VUyBzdHlsZT0nZm9udC1zaXplOjExLjBwdCc+QW5kcmVhczwvc3Bhbj48 bzpwPjwvbzpwPjwvcD48cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21zby1tYXJnaW4tdG9wLWFs dDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDphdXRvJz48c3BhbiBsYW5nPUVOLVVTIHN0eWxl PSdmb250LXNpemU6MTEuMHB0Jz4mbmJzcDs8L3NwYW4+PG86cD48L286cD48L3A+PHAgY2xhc3M9 TXNvTm9ybWFsIHN0eWxlPSdtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRv bS1hbHQ6YXV0byc+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXzwvc3Bhbj48bzpwPjwvbzpwPjwvcD48cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21zby1t YXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDphdXRvJz48c3BhbiBzdHls ZT0nZm9udC1zaXplOjEwLjBwdCc+Jm5ic3A7PC9zcGFuPjxvOnA+PC9vOnA+PC9wPjxwIGNsYXNz PU1zb05vcm1hbCBzdHlsZT0nbXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0 b20tYWx0OmF1dG8nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5TQ0FOTEFCJm5ic3A7 QUc8L3NwYW4+PG86cD48L286cD48L3A+PHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtc28tbWFy Z2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0byc+PHNwYW4gc3R5bGU9 J2ZvbnQtc2l6ZToxMC4wcHQnPkRyLiZuYnNwO0FuZHJlYXMmbmJzcDtTaW1vbiZuYnNwO0dhYWI8 L3NwYW4+PG86cD48L286cD48L3A+PHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtc28tbWFyZ2lu LXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0byc+PHNwYW4gc3R5bGU9J2Zv bnQtc2l6ZToxMC4wcHQnPkVudHdpY2tsdW5nIOKAoiBSJm5ic3A7JmFtcDsmbmJzcDtEPC9zcGFu PjxvOnA+PC9vOnA+PC9wPjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbXNvLW1hcmdpbi10b3At YWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG8nPjxzcGFuIHN0eWxlPSdmb250LXNp emU6MTAuMHB0Jz4mbmJzcDs8L3NwYW4+PG86cD48L286cD48L3A+PHAgY2xhc3M9TXNvTm9ybWFs IHN0eWxlPSdtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0 byc+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPlNpZW1lbnNzdHIuJm5ic3A7MmEg4oCi IDgyMTc4Jm5ic3A7UHVjaGhlaW0g4oCiIEdlcm1hbnk8L3NwYW4+PG86cD48L286cD48L3A+PHAg Y2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2lu LWJvdHRvbS1hbHQ6YXV0byc+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPlRlbC4mbmJz cDsrNDkmbmJzcDsoODkpJm5ic3A7ODAwJm5ic3A7NzQ2LTUxMyDigKIgRmF4Jm5ic3A7KzQ5Jm5i c3A7KDg5KSZuYnNwOzgwMCZuYnNwOzc0Ni0xOTk8L3NwYW4+PG86cD48L286cD48L3A+PHAgY2xh c3M9TXNvTm9ybWFsIHN0eWxlPSdtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJv dHRvbS1hbHQ6YXV0byc+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjxhIGhyZWY9Im1h aWx0bzphLmdhYWJAc2NhbmxhYi5kZSIgdGFyZ2V0PSJfYmxhbmsiPm1haWx0bzphLmdhYWJAc2Nh bmxhYi5kZTwvYT4g4oCiIDxhIGhyZWY9Imh0dHA6Ly93d3cuc2NhbmxhYi5kZSIgdGFyZ2V0PSJf YmxhbmsiPnd3dy5zY2FubGFiLmRlPC9hPjwvc3Bhbj48bzpwPjwvbzpwPjwvcD48cCBjbGFzcz1N c29Ob3JtYWwgc3R5bGU9J21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9t LWFsdDphdXRvJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Jm5ic3A7PC9zcGFuPjxv OnA+PC9vOnA+PC9wPjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbXNvLW1hcmdpbi10b3AtYWx0 OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG8nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6 MTAuMHB0Jz5BbXRzZ2VyaWNodCZuYnNwO03DvG5jaGVuOiBIUkImbmJzcDsxMjQ3MDcg4oCiIFVT dC1JZE5yLjogREUmbmJzcDsxMjkmbmJzcDs0NTYmbmJzcDszNTE8L3NwYW4+PG86cD48L286cD48 L3A+PHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28t bWFyZ2luLWJvdHRvbS1hbHQ6YXV0byc+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPlZv cnN0YW5kOiBHZW9yZyZuYnNwO0hvZm5lciZuYnNwOyhTcHJlY2hlciksIENocmlzdGlhbiZuYnNw O0h1dHRlbmxvaGVyLCBOb3JiZXJ0Jm5ic3A7UGV0c2NoaWs8L3NwYW4+PG86cD48L286cD48L3A+ PHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFy Z2luLWJvdHRvbS1hbHQ6YXV0byc+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkF1ZnNp Y2h0c3JhdCZuYnNwOyhWb3JzaXR6KTogRHIuJm5ic3A7SGFucyZuYnNwO0ouJm5ic3A7TGFuZ2Vy PC9zcGFuPjxvOnA+PC9vOnA+PC9wPjxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbXNvLW1hcmdp bi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG8nPjxzcGFuIHN0eWxlPSdm b250LXNpemU6MTAuMHB0Jz5fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX188L3NwYW4+PG86cD48L286cD48L3A+ PHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFy Z2luLWJvdHRvbS1hbHQ6YXV0byc+Jm5ic3A7PG86cD48L286cD48L3A+PC9kaXY+PC9kaXY+PC9k aXY+PHAgY2xhc3M9TXNvTm9ybWFsPjxicj48YnIgY2xlYXI9YWxsPjxicj4tLSA8YnI+LS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPGJyPlZpa3RvciBCb2pvdmnEhzxicj4t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08YnI+V2hlcmV2ZXIgSSBnbywg TXVycGh5IGdvZXMgd2l0aCBtZTxvOnA+PC9vOnA+PC9wPjwvZGl2PjwvYm9keT48L2h0bWw+ --_000_48DA836F3865C54B8FBF424A3B775AF6671A6838F8ExchangeServe_-- From pavel.stehule@gmail.com Mon Jan 31 09:49:06 2011 Received: from maia.hub.org (maia-5.hub.org [200.46.204.29]) by mail.postgresql.org (Postfix) with ESMTP id AA85C1337999 for ; Mon, 31 Jan 2011 05:49:06 -0400 (AST) Received: from mail.postgresql.org ([200.46.204.86]) by maia.hub.org (mx1.hub.org [200.46.204.29]) (amavisd-maia, port 10024) with ESMTP id 95206-06 for ; Mon, 31 Jan 2011 09:49:00 +0000 (UTC) X-Greylist: delayed 00:16:26.035246 by SQLgrey-1.7.6 Received: from mail-iy0-f174.google.com (mail-iy0-f174.google.com [209.85.210.174]) by mail.postgresql.org (Postfix) with ESMTP id 111AD1336971 for ; Mon, 31 Jan 2011 05:48:58 -0400 (AST) Received: by iyj18 with SMTP id 18so4652198iyj.19 for ; Mon, 31 Jan 2011 01:48:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type:content-transfer-encoding; bh=XZVr8e/4hpkR6uLgS3cChw07ENMwmWGsUOz710wk+Is=; b=u+SPuawoyNN4/n2Q7PBWGzOVchCU9kkSm+JbpWuMtcCq9LGw64h4MBb2Ayf+Mv7Ky1 iZOMx3IdFMDbG++LNXtvtS/+mvQFyoPGrxn7VaY3RyZAl5yDvfql3sLS3+zbbbi6+O7w ALYTZicYqDrb8XG+fBY9kFVGbPzoNWa9yUVG0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type:content-transfer-encoding; b=VTo9rGCdH3U9Uie3m5IqHNBWNjtluTVrfEmjJNEOOnej1jA8IxaygeYCINcERryv6u bH6ASU9bKLkQviDTx9if2wE26rPAo/xZuXuhRVOVGfQ+U0VgH+NYCy4QEOMSQDG8j7cR MrYYD4ahSWyI5DptgqV7CPr1KIVD6YpYEzdOg= Received: by 10.42.229.9 with SMTP id jg9mr7537771icb.146.1296465877221; Mon, 31 Jan 2011 01:24:37 -0800 (PST) MIME-Version: 1.0 Received: by 10.42.177.8 with HTTP; Mon, 31 Jan 2011 01:23:56 -0800 (PST) In-Reply-To: <48DA836F3865C54B8FBF424A3B775AF6671A6838F8@Exchange-Server> References: <48DA836F3865C54B8FBF424A3B775AF60132434B4A@Exchange-Server> <48DA836F3865C54B8FBF424A3B775AF6671A6838F8@Exchange-Server> From: Pavel Stehule Date: Mon, 31 Jan 2011 10:23:56 +0100 Message-ID: Subject: Re: aggregation of setof To: Andreas Gaab Cc: "pgsql-sql@postgresql.org" Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=-0.67 tagged_above=-5 required=5 tests=BAYES_00=-1.9, FREEMAIL_FROM=0.001, FREEMAIL_REPLY=1.929, RCVD_IN_DNSWL_LOW=-0.7 X-Spam-Level: X-Archive-Number: 201101/118 X-Sequence-Number: 35065 Hello use a array constructor instead SELECT ARRAY(SELECT ...) Regards Pavel Stehule 2011/1/31 Andreas Gaab : > Functions apparently cannot take setof arguments. > > > > Postgres 8.4: > > > > CREATE OR REPLACE FUNCTION testtable(IN setof anyarray) > > =C2=A0 RETURNS anyarray AS > > $BODY$ > > SELECT $1 LIMIT 1; > > $BODY$ > > =C2=A0 LANGUAGE 'sql' STABLE; > > > > =C3=A0 > > ERROR:=C2=A0 functions cannot accept set arguments > > > > > > > > Von: Viktor Bojovi=C4=87 [mailto:viktor.bojovic@gmail.com] > Gesendet: Samstag, 29. Januar 2011 09:28 > An: Andreas Gaab > Betreff: Re: [SQL] aggregation of setof > > > > i have never used that type but maybe you can try this; > > -create function which returns text[], and takse setof text as argument (= if > possible) > > -reach every text[] in set of text[] using array index > > -return values using "return next" for each text in text[] which is in se= t > of text[] > > > > On Fri, Jan 28, 2011 at 12:42 PM, Andreas Gaab wrote: > > Hi all, > > > > I would like to write a query, which aggregates the results of > regexp_matches(). The problem is that regexp_matches returnes setof text[= ] > as documented even if I discard the global flag > (http://www.postgresql.org/docs/8.4/static/functions-matching.html#FUNCTI= ONS-POSIX-REGEXP > ). Thus resulting in an error when I try to aggregate the result: > > > > =E2=80=9C > > SELECT array_accum( > > regexp_matches('foobarbequebazilbarfbonk', '(b[^b]+)(b[^b]+)') > > ) > > ------------------------------- > > ERROR:=C2=A0 set-valued function called in context that cannot accept a s= et > > ********** Fehler ********** > > ERROR: set-valued function called in context that cannot accept a set > > SQL Status:0A000 > > =E2=80=9C > > > > Can I convert a =E2=80=9Asetof text[]=E2=80=98 to a =E2=80=9Atext[]=E2=80= =98? > > > > Alternatively I could use a sub-select, but I am curious if there are oth= er > solutions around. > > > > Regards, > > Andreas > > > > _________________________________________________________________________= __ > > > > SCANLAB=C2=A0AG > > Dr.=C2=A0Andreas=C2=A0Simon=C2=A0Gaab > > Entwicklung =E2=80=A2 R=C2=A0&=C2=A0D > > > > Siemensstr.=C2=A02a =E2=80=A2 82178=C2=A0Puchheim =E2=80=A2 Germany > > Tel.=C2=A0+49=C2=A0(89)=C2=A0800=C2=A0746-513 =E2=80=A2 Fax=C2=A0+49=C2= =A0(89)=C2=A0800=C2=A0746-199 > > mailto:a.gaab@scanlab.de =E2=80=A2 www.scanlab.de > > > > Amtsgericht=C2=A0M=C3=BCnchen: HRB=C2=A0124707 =E2=80=A2 USt-IdNr.: DE=C2= =A0129=C2=A0456=C2=A0351 > > Vorstand: Georg=C2=A0Hofner=C2=A0(Sprecher), Christian=C2=A0Huttenloher, = Norbert=C2=A0Petschik > > Aufsichtsrat=C2=A0(Vorsitz): Dr.=C2=A0Hans=C2=A0J.=C2=A0Langer > > _________________________________________________________________________= __ > > > > > -- > --------------------------------------- > Viktor Bojovi=C4=87 > --------------------------------------- > Wherever I go, Murphy goes with me From A.Gaab@scanlab.de Mon Jan 31 10:22:32 2011 Received: from maia.hub.org (maia-5.hub.org [200.46.204.29]) by mail.postgresql.org (Postfix) with ESMTP id 4DF141337B34 for ; Mon, 31 Jan 2011 06:22:32 -0400 (AST) Received: from mail.postgresql.org ([200.46.204.86]) by maia.hub.org (mx1.hub.org [200.46.204.29]) (amavisd-maia, port 10024) with ESMTP id 05333-05 for ; Mon, 31 Jan 2011 10:22:26 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from mail.scanlab.de (mail.scanlab.de [62.138.55.241]) by mail.postgresql.org (Postfix) with ESMTP id 7A1871337999 for ; Mon, 31 Jan 2011 06:22:24 -0400 (AST) Received: from unknown (HELO Exchange-Server.scanlab-intern.de) ([172.16.20.15]) by mail.scanlab-intern.de with ESMTP; 31 Jan 2011 11:22:23 +0100 Received: from Exchange-Server.scanlab-intern.de ([127.0.0.1]) by Exchange-Server ([127.0.0.1]) with mapi; Mon, 31 Jan 2011 11:22:23 +0100 From: Andreas Gaab To: "pgsql-sql@postgresql.org" Date: Mon, 31 Jan 2011 11:22:23 +0100 Subject: Re: aggregation of setof Thread-Topic: [SQL] aggregation of setof Thread-Index: AcvBKLAAvmoDTGgvQgaMhWupwpBX+wABw6iA Message-ID: <48DA836F3865C54B8FBF424A3B775AF6671A6838F9@Exchange-Server> References: <48DA836F3865C54B8FBF424A3B775AF60132434B4A@Exchange-Server> <48DA836F3865C54B8FBF424A3B775AF6671A6838F8@Exchange-Server> In-Reply-To: Accept-Language: de-DE Content-Language: de-DE X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: de-DE Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=-1.91 tagged_above=-5 required=5 tests=BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01 X-Spam-Level: X-Archive-Number: 201101/119 X-Sequence-Number: 35066 SGksDQoNCkNvdWxkIG5vdCB0aGUgZnVuY3Rpb24gcmVnZXhwX21hdGNoZXModGV4dCwgdGV4dCkg YmUgZGVmaW5lZCB0byBvbmx5IHJldHVybiBhIHRleHRbXSBub3QgYSBzZXRvZiB0ZXh0W10/DQoN CkJlY2F1c2UgdGhhdCBpcywgd2hhdCBpdCBhY3R1YWxseSBkb2VzLCBvcj8gRm9yIGV2ZXJ5IGlu cHV0LCBpdCByZXR1cm5zIG9ubHkgb25lIG91dHB1dCByb3cuIFRoZSBmdW5jdGlvbiByZWdleHBf bWF0Y2hlcyh0ZXh0LHRleHQsdGV4dCkgaW4gY29udHJhc3QgcmVhbGx5IGNhbiByZXR1cm4gbXVs dGlwbGUgcm93cyB3aGlsZSBvbmx5IHJlY2VpdmluZyBvbmUgcm93Lg0KDQoNClJlZ2FyZHMsDQpB bmRyZWFzDQoNCg0KLS0tLS1VcnNwcsO8bmdsaWNoZSBOYWNocmljaHQtLS0tLQ0KVm9uOiBQYXZl bCBTdGVodWxlIFttYWlsdG86cGF2ZWwuc3RlaHVsZUBnbWFpbC5jb21dIA0KR2VzZW5kZXQ6IE1v bnRhZywgMzEuIEphbnVhciAyMDExIDEwOjI0DQpBbjogQW5kcmVhcyBHYWFiDQpDYzogcGdzcWwt c3FsQHBvc3RncmVzcWwub3JnDQpCZXRyZWZmOiBSZTogW1NRTF0gYWdncmVnYXRpb24gb2Ygc2V0 b2YNCg0KSGVsbG8NCg0KdXNlIGEgYXJyYXkgY29uc3RydWN0b3IgaW5zdGVhZA0KDQpTRUxFQ1Qg QVJSQVkoU0VMRUNUIC4uLikNCg0KUmVnYXJkcw0KDQpQYXZlbCBTdGVodWxlDQoNCjIwMTEvMS8z MSBBbmRyZWFzIEdhYWIgPEEuR2FhYkBzY2FubGFiLmRlPjoNCj4gRnVuY3Rpb25zIGFwcGFyZW50 bHkgY2Fubm90IHRha2Ugc2V0b2YgYXJndW1lbnRzLg0KPg0KPg0KPg0KPiBQb3N0Z3JlcyA4LjQ6 DQo+DQo+DQo+DQo+IENSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHRlc3R0YWJsZShJTiBzZXRv ZiBhbnlhcnJheSkNCj4NCj4gwqAgUkVUVVJOUyBhbnlhcnJheSBBUw0KPg0KPiAkQk9EWSQNCj4N Cj4gU0VMRUNUICQxIExJTUlUIDE7DQo+DQo+ICRCT0RZJA0KPg0KPiDCoCBMQU5HVUFHRSAnc3Fs JyBTVEFCTEU7DQo+DQo+DQo+DQo+IMOgDQo+DQo+IEVSUk9SOsKgIGZ1bmN0aW9ucyBjYW5ub3Qg YWNjZXB0IHNldCBhcmd1bWVudHMNCj4NCj4NCj4NCj4NCj4NCj4NCj4NCj4gVm9uOiBWaWt0b3Ig Qm9qb3ZpxIcgW21haWx0bzp2aWt0b3IuYm9qb3ZpY0BnbWFpbC5jb21dDQo+IEdlc2VuZGV0OiBT YW1zdGFnLCAyOS4gSmFudWFyIDIwMTEgMDk6MjgNCj4gQW46IEFuZHJlYXMgR2FhYg0KPiBCZXRy ZWZmOiBSZTogW1NRTF0gYWdncmVnYXRpb24gb2Ygc2V0b2YNCj4NCj4NCj4NCj4gaSBoYXZlIG5l dmVyIHVzZWQgdGhhdCB0eXBlIGJ1dCBtYXliZSB5b3UgY2FuIHRyeSB0aGlzOw0KPg0KPiAtY3Jl YXRlIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgdGV4dFtdLCBhbmQgdGFrc2Ugc2V0b2YgdGV4dCBh cyBhcmd1bWVudCAoaWYNCj4gcG9zc2libGUpDQo+DQo+IC1yZWFjaCBldmVyeSB0ZXh0W10gaW4g c2V0IG9mIHRleHRbXSB1c2luZyBhcnJheSBpbmRleA0KPg0KPiAtcmV0dXJuIHZhbHVlcyB1c2lu ZyAicmV0dXJuIG5leHQiIGZvciBlYWNoIHRleHQgaW4gdGV4dFtdIHdoaWNoIGlzIGluIHNldA0K PiBvZiB0ZXh0W10NCj4NCj4NCj4NCj4gT24gRnJpLCBKYW4gMjgsIDIwMTEgYXQgMTI6NDIgUE0s IEFuZHJlYXMgR2FhYiA8QS5HYWFiQHNjYW5sYWIuZGU+IHdyb3RlOg0KPg0KPiBIaSBhbGwsDQo+ DQo+DQo+DQo+IEkgd291bGQgbGlrZSB0byB3cml0ZSBhIHF1ZXJ5LCB3aGljaCBhZ2dyZWdhdGVz IHRoZSByZXN1bHRzIG9mDQo+IHJlZ2V4cF9tYXRjaGVzKCkuIFRoZSBwcm9ibGVtIGlzIHRoYXQg cmVnZXhwX21hdGNoZXMgcmV0dXJuZXMgc2V0b2YgdGV4dFtdDQo+IGFzIGRvY3VtZW50ZWQgZXZl biBpZiBJIGRpc2NhcmQgdGhlIGdsb2JhbCBmbGFnDQo+IChodHRwOi8vd3d3LnBvc3RncmVzcWwu b3JnL2RvY3MvOC40L3N0YXRpYy9mdW5jdGlvbnMtbWF0Y2hpbmcuaHRtbCNGVU5DVElPTlMtUE9T SVgtUkVHRVhQDQo+ICkuIFRodXMgcmVzdWx0aW5nIGluIGFuIGVycm9yIHdoZW4gSSB0cnkgdG8g YWdncmVnYXRlIHRoZSByZXN1bHQ6DQo+DQo+DQo+DQo+IOKAnA0KPg0KPiBTRUxFQ1QgYXJyYXlf YWNjdW0oDQo+DQo+IHJlZ2V4cF9tYXRjaGVzKCdmb29iYXJiZXF1ZWJhemlsYmFyZmJvbmsnLCAn KGJbXmJdKykoYlteYl0rKScpDQo+DQo+ICkNCj4NCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KPg0KPiBFUlJPUjrCoCBzZXQtdmFsdWVkIGZ1bmN0aW9uIGNhbGxlZCBpbiBjb250 ZXh0IHRoYXQgY2Fubm90IGFjY2VwdCBhIHNldA0KPg0KPiAqKioqKioqKioqIEZlaGxlciAqKioq KioqKioqDQo+DQo+IEVSUk9SOiBzZXQtdmFsdWVkIGZ1bmN0aW9uIGNhbGxlZCBpbiBjb250ZXh0 IHRoYXQgY2Fubm90IGFjY2VwdCBhIHNldA0KPg0KPiBTUUwgU3RhdHVzOjBBMDAwDQo+DQo+IOKA nA0KPg0KPg0KPg0KPiBDYW4gSSBjb252ZXJ0IGEg4oCac2V0b2YgdGV4dFtd4oCYIHRvIGEg4oCa dGV4dFtd4oCYPw0KPg0KPg0KPg0KPiBBbHRlcm5hdGl2ZWx5IEkgY291bGQgdXNlIGEgc3ViLXNl bGVjdCwgYnV0IEkgYW0gY3VyaW91cyBpZiB0aGVyZSBhcmUgb3RoZXINCj4gc29sdXRpb25zIGFy b3VuZC4NCj4NCj4NCj4NCj4gUmVnYXJkcywNCj4NCj4gQW5kcmVhcw0KPg0KPg0KPg0KPiBfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18NCj4NCj4NCj4NCj4gU0NBTkxBQsKgQUcNCj4NCj4gRHIuwqBBbmRyZWFz wqBTaW1vbsKgR2FhYg0KPg0KPiBFbnR3aWNrbHVuZyDigKIgUsKgJsKgRA0KPg0KPg0KPg0KPiBT aWVtZW5zc3RyLsKgMmEg4oCiIDgyMTc4wqBQdWNoaGVpbSDigKIgR2VybWFueQ0KPg0KPiBUZWwu wqArNDnCoCg4OSnCoDgwMMKgNzQ2LTUxMyDigKIgRmF4wqArNDnCoCg4OSnCoDgwMMKgNzQ2LTE5 OQ0KPg0KPiBtYWlsdG86YS5nYWFiQHNjYW5sYWIuZGUg4oCiIHd3dy5zY2FubGFiLmRlDQo+DQo+ DQo+DQo+IEFtdHNnZXJpY2h0wqBNw7xuY2hlbjogSFJCwqAxMjQ3MDcg4oCiIFVTdC1JZE5yLjog REXCoDEyOcKgNDU2wqAzNTENCj4NCj4gVm9yc3RhbmQ6IEdlb3JnwqBIb2ZuZXLCoChTcHJlY2hl ciksIENocmlzdGlhbsKgSHV0dGVubG9oZXIsIE5vcmJlcnTCoFBldHNjaGlrDQo+DQo+IEF1ZnNp Y2h0c3JhdMKgKFZvcnNpdHopOiBEci7CoEhhbnPCoEouwqBMYW5nZXINCj4NCj4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fDQo+DQo+DQo+DQo+DQo+IC0tDQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KPiBWaWt0b3IgQm9qb3ZpxIcNCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQo+IFdoZXJldmVyIEkgZ28sIE11cnBoeSBnb2VzIHdpdGggbWUN Cg== From tgl@sss.pgh.pa.us Mon Jan 31 15:32:14 2011 Received: from maia.hub.org (maia-5.hub.org [200.46.204.29]) by mail.postgresql.org (Postfix) with ESMTP id 2561E1337B9E for ; Mon, 31 Jan 2011 11:32:14 -0400 (AST) Received: from mail.postgresql.org ([200.46.204.86]) by maia.hub.org (mx1.hub.org [200.46.204.29]) (amavisd-maia, port 10024) with ESMTP id 05501-02 for ; Mon, 31 Jan 2011 15:32:05 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from sss.pgh.pa.us (sss.pgh.pa.us [66.207.139.130]) by mail.postgresql.org (Postfix) with ESMTP id 6231E1337B9D for ; Mon, 31 Jan 2011 11:32:03 -0400 (AST) Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) by sss.pgh.pa.us (8.14.2/8.14.2) with ESMTP id p0VFW30I016977; Mon, 31 Jan 2011 10:32:03 -0500 (EST) To: Andreas Gaab cc: "pgsql-sql@postgresql.org" Subject: Re: aggregation of setof In-reply-to: <48DA836F3865C54B8FBF424A3B775AF6671A6838F9@Exchange-Server> References: <48DA836F3865C54B8FBF424A3B775AF60132434B4A@Exchange-Server> <48DA836F3865C54B8FBF424A3B775AF6671A6838F8@Exchange-Server> <48DA836F3865C54B8FBF424A3B775AF6671A6838F9@Exchange-Server> Comments: In-reply-to Andreas Gaab message dated "Mon, 31 Jan 2011 11:22:23 +0100" Date: Mon, 31 Jan 2011 10:32:03 -0500 Message-ID: <16976.1296487923@sss.pgh.pa.us> From: Tom Lane X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=-1.91 tagged_above=-5 required=5 tests=BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01 X-Spam-Level: X-Archive-Number: 201101/121 X-Sequence-Number: 35068 Andreas Gaab writes: > Could not the function regexp_matches(text, text) be defined to only return a text[] not a setof text[]? It'd be pretty hard to change at this point, because of backwards-compatibility considerations, and because the two functions share a single implementation. regards, tom lane From viktor.bojovic@gmail.com Mon Jan 31 15:37:24 2011 Received: from maia.hub.org (maia-2.hub.org [200.46.204.251]) by mail.postgresql.org (Postfix) with ESMTP id 923FC1336971 for ; Mon, 31 Jan 2011 11:37:24 -0400 (AST) Received: from mail.postgresql.org ([200.46.204.86]) by maia.hub.org (mx1.hub.org [200.46.204.251]) (amavisd-maia, port 10024) with ESMTP id 08933-08 for ; Mon, 31 Jan 2011 15:37:17 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-qy0-f174.google.com (mail-qy0-f174.google.com [209.85.216.174]) by mail.postgresql.org (Postfix) with ESMTP id BD24F13364DE for ; Mon, 31 Jan 2011 11:37:16 -0400 (AST) Received: by qyj19 with SMTP id 19so3547581qyj.19 for ; Mon, 31 Jan 2011 07:37:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=a25AyoDTwkbQn2i42A/cxia9PyQ4OoyBPbauyN8Yntk=; b=rQSxPMs3PT6y8yB5uI7qFewqfV9oPX2JD2sW9Vhp0nIHFNN/r/z1RyVx3Gb6HgUx2W tRs6fzoeNc50sux7TMOl0LsNP5fdc27Ameu1QL3zvZZBiLP5D0XLCuHisrHTOMVrO3X9 DWHDx2vXdXpwtij7UJzeDSUR31FkpF12KCWd4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=H+d21vShZWW2eA+3PM4aW5XXiau19Q6x+dVog8Dt4Ygu/5aPVUajST0W4oY5Q6MKe7 k330yn9AcBYRTXOkszk9jyrztuv44OWdgwK8K3ywusGgYdn8iJE9jXpxbqXvS9vVpJIn 8to/WgjODbBmO5KHgMeaFQO4ZDuAQd6LkgmBY= MIME-Version: 1.0 Received: by 10.224.60.208 with SMTP id q16mr6614430qah.82.1296488237013; Mon, 31 Jan 2011 07:37:17 -0800 (PST) Received: by 10.220.185.133 with HTTP; Mon, 31 Jan 2011 07:37:16 -0800 (PST) In-Reply-To: <48DA836F3865C54B8FBF424A3B775AF6671A6838F8@Exchange-Server> References: <48DA836F3865C54B8FBF424A3B775AF60132434B4A@Exchange-Server> <48DA836F3865C54B8FBF424A3B775AF6671A6838F8@Exchange-Server> Date: Mon, 31 Jan 2011 16:37:16 +0100 Message-ID: Subject: Re: aggregation of setof From: =?UTF-8?Q?Viktor_Bojovi=C4=87?= To: Andreas Gaab Cc: "pgsql-sql@postgresql.org" Content-Type: multipart/alternative; boundary=0015175cde76d2b11a049b263073 X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=-2.598 tagged_above=-5 required=5 tests=BAYES_00=-1.9, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7 X-Spam-Level: X-Archive-Number: 201101/122 X-Sequence-Number: 35069 --0015175cde76d2b11a049b263073 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable maybe custom types can be helpful. i use them when i have to many variables or arrays. On Mon, Jan 31, 2011 at 9:52 AM, Andreas Gaab wrote: > Functions apparently cannot take setof arguments. > > > > Postgres 8.4: > > > > CREATE OR REPLACE FUNCTION testtable(IN setof anyarray) > > RETURNS anyarray AS > > $BODY$ > > SELECT $1 LIMIT 1; > > $BODY$ > > LANGUAGE 'sql' STABLE; > > > > =C3=A0 > > ERROR: functions cannot accept set arguments > > > > > > > > *Von:* Viktor Bojovi=C4=87 [mailto:viktor.bojovic@gmail.com] > *Gesendet:* Samstag, 29. Januar 2011 09:28 > *An:* Andreas Gaab > *Betreff:* Re: [SQL] aggregation of setof > > > > i have never used that type but maybe you can try this; > > -create function which returns text[], and takse setof text as argument (= if > possible) > > -reach every text[] in set of text[] using array index > > -return values using "return next" for each text in text[] which is in se= t > of text[] > > > > On Fri, Jan 28, 2011 at 12:42 PM, Andreas Gaab wrote: > > Hi all, > > > > I would like to write a query, which aggregates the results of > regexp_matches(). The problem is that regexp_matches returnes setof text[= ] > as documented even if I discard the global flag ( > http://www.postgresql.org/docs/8.4/static/functions-matching.html#FUNCTIO= NS-POSIX-REGEXP). Thus resulting in an error when I try to aggregate the re= sult: > > > > =E2=80=9C > > SELECT array_accum( > > regexp_matches('foobarbequebazilbarfbonk', '(b[^b]+)(b[^b]+)') > > ) > > ------------------------------- > > ERROR: set-valued function called in context that cannot accept a set > > ********** Fehler ********** > > ERROR: set-valued function called in context that cannot accept a set > > SQL Status:0A000 > > =E2=80=9C > > > > Can I convert a =E2=80=9Asetof text[]=E2=80=98 to a =E2=80=9Atext[]=E2=80= =98? > > > > Alternatively I could use a sub-select, but I am curious if there are oth= er > solutions around. > > > > Regards, > > Andreas > > > > _________________________________________________________________________= __ > > > > SCANLAB AG > > Dr. Andreas Simon Gaab > > Entwicklung =E2=80=A2 R & D > > > > Siemensstr. 2a =E2=80=A2 82178 Puchheim =E2=80=A2 Germany > > Tel. +49 (89) 800 746-513 =E2=80=A2 Fax +49 (89) 800 746-199 > > mailto:a.gaab@scanlab.de =E2=80=A2 www.scanlab.de > > > > Amtsgericht M=C3=BCnchen: HRB 124707 =E2=80=A2 USt-IdNr.: DE 129 456 351 > > Vorstand: Georg Hofner (Sprecher), Christian Huttenloher, Norbert Petschi= k > > Aufsichtsrat (Vorsitz): Dr. Hans J. Langer > > _________________________________________________________________________= __ > > > > > > > -- > --------------------------------------- > Viktor Bojovi=C4=87 > --------------------------------------- > Wherever I go, Murphy goes with me > --=20 --------------------------------------- Viktor Bojovi=C4=87 --------------------------------------- Wherever I go, Murphy goes with me --0015175cde76d2b11a049b263073 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable maybe custom types can be helpful. i use them when i have to many variables= or arrays.

On Mon, Jan 31, 2011 at 9:52 = AM, Andreas Gaab <A.Gaab@scanlab.de> wrote:

Functions apparent= ly cannot take setof arguments.

=C2=A0

Postgres 8.4:

= =C2=A0

CREATE OR REPLACE FUNCTION testtable(= IN setof anyarray)

=C2=A0 RETURNS anyarray AS

$BODY$

SELECT $1 LIMIT 1;

$BOD= Y$

=C2=A0 LANGUAGE 'sql' STABLE;

=C2=A0

=C3=A0

ER= ROR:=C2=A0 functions cannot accept set arguments

=C2=A0

=C2=A0

=C2=A0

On Fri, Jan 28, 2011 at 12= :42 PM, Andreas Gaab <A.Gaab@scanlab.de> wrote:

Hi all,

=C2=A0

I would like to write a query, which aggre= gates the results of regexp_matches(). The problem is that regexp_matches r= eturnes setof text[] as documented even if I discard the global flag (http://www.postgresql.org/docs/8.4/s= tatic/functions-matching.html#FUNCTIONS-POSIX-REGEXP ). Thus resulting = in an error when I try to aggregate the result:

=C2= =A0

=E2=80=9C

SELECT array_accum(

rege= xp_matches('foobarbequebazilbarfbonk', '(b[^b]+)(b[^b]+)')<= /span>

)

----= ---------------------------

ERROR:=C2=A0 set-valued function called i= n context that cannot accept a set

****= ****** Fehler **********

ERROR: set-valued function called in context= that cannot accept a set

SQL = Status:0A000

=E2=80=9C

=C2=A0

Can = I convert a =E2=80=9Asetof text[]=E2=80=98 to a =E2=80=9Atext[]=E2=80=98?

=C2=A0

Alternatively I could use a sub-select, but I am curious = if there are other solutions around.

=C2= =A0

Regards,

Andreas

=C2= =A0

_____= ______________________________________________________________________

=C2=A0

SCANLAB=C2=A0AG

Dr.=C2=A0Andreas=C2=A0Simon=C2=A0Gaab=

Entwicklung =E2=80=A2 R=C2=A0&=C2=A0D<= /span>

=C2=A0

Siemensstr.= =C2=A02a =E2=80=A2 82178=C2=A0Puchheim =E2=80=A2 Germany

Tel.=C2=A0+49=C2=A0= (89)=C2=A0800=C2=A0746-513 =E2=80=A2 Fax=C2=A0+49=C2=A0(89)=C2=A0800=C2=A07= 46-199

mailto:a.gaab@scanlab.= de =E2=80=A2 www.sc= anlab.de

=C2=A0

Amtsgericht=C2=A0M=C3= =BCnchen: HRB=C2=A0124707 =E2=80=A2 USt-IdNr.: DE=C2=A0129=C2=A0456=C2=A035= 1

Vorstan= d: Georg=C2=A0Hofner=C2=A0(Sprecher), Christian=C2=A0Huttenloher, Norbert= =C2=A0Petschik

Aufsichtsrat=C2=A0(= Vorsitz): Dr.=C2=A0Hans=C2=A0J.=C2=A0Langer

________________________________________= ___________________________________

=C2=A0

<= br>

--
---------------------------------------
= Viktor Bojovi=C4=87
---------------------------------------
Wherever = I go, Murphy goes with me




-- ---------------------------------------
Viktor Bojovi=C4=87
--------= -------------------------------
Wherever I go, Murphy goes with me
--0015175cde76d2b11a049b263073--