Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mploJ-00032y-ML for pgsql-performance@arkaria.postgresql.org; Wed, 24 Nov 2021 06:31:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mploI-0005Tf-JF for pgsql-performance@arkaria.postgresql.org; Wed, 24 Nov 2021 06:31:14 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mploI-0005TV-8O for pgsql-performance@lists.postgresql.org; Wed, 24 Nov 2021 06:31:14 +0000 Received: from mout.gmx.net ([212.227.17.21]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mploF-00030f-Ip for pgsql-performance@lists.postgresql.org; Wed, 24 Nov 2021 06:31:13 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1637735469; bh=8QNVDzznL1iafXMUDqbuYMZa8oHThUDn05JRP4Yk924=; h=X-UI-Sender-Class:Subject:To:References:From:Date:In-Reply-To; b=Ud891b+hvn4UtKk5bV7CpyL960bvWNpPeJnbiGrCQbJEW+EbW8IBh3KexfoBCGkNP GvHUb9/84jTrasJrwbWndJCCeFG0hexr0q9NX/9FSfQVUUHRB4CSMTvArkfjs/AHBH GvuIm+UJg0gl+VW4378FFxBiq5anFbdHNqnqUl3M= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [10.1.32.158] ([185.40.248.10]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1M8QS8-1mlLxt0XAW-004VT2 for ; Wed, 24 Nov 2021 07:31:09 +0100 Subject: Re: Out of memory error To: pgsql-performance@lists.postgresql.org References: <97240.1637733158@sss.pgh.pa.us> From: Thomas Kellerer Message-ID: <4af2ff21-1140-ccbd-5adf-926dc816782f@gmx.net> Date: Wed, 24 Nov 2021 07:31:08 +0100 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.23) Gecko/20090812 Thunderbird/2.0.0.23 Mnenhy/0.7.6.666 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:QAx+tVXZL85dJ6WHpkvgr9qRSNBQnOIj88ZoVSfK3LkzldljP+m v+j6e8YCzCkh9p02gUNYc1cfUv7b6f8HhTgrCd/paiPmzod5rzYrcb87FCaIfYRe/PC9Iiy oMR8eON5vo4oDeInUoQZLpUnXgJnfZoLISjaNiN//gZyScMYIeT4fNbO3UgtqOp2ebfpLBu dI/qL9hpDyFpo9zwgroYg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:jiN/sEPWkqQ=:GUYuQPDoK5BQevcdAfsh+b 70pCJOHm7zHvEGrIBw1Zu9W0n34mrovCrElwsKszrMjLIxzQLEznrCt6Jo8N+dnQY9x11Qqvb qGT2Th1QoJfT31uBz8EfAr68e0rMAfApym9wTAwbjv/6CSb31Vbs9bs3zMOtCEhd7UsFZ0fgJ tylLvqDGKr5wjo1xiFBTUqFpGrAc8r9STnMhanG2555foHLRsUkzSdCQSzzhjwK9MoBp+lxVD inejzbbtLKMA4clfDAofPjUZtgctblStSTRXy07t0eLQ7OP9W83jQhzhjYrH1hFx3eol3MAeQ Z6r3psQiDHwTPtHHRTlgSxmHYRTqtUU6yMRqwWYOYgbZQlbeXvMdrY9pm3jIG+07MI8XEWBL1 SoiJqPxZS4gG6IHtfFR/FH2/nSpuWuRcVOeiql1SxCkIug3TxJoc3TcqRFmSsLSmq3u73SD2a H9Ul2K/9+FVfmkXcKV00vDs6xCFLDGI6ETKIQ5J7GpjBMqzOF28mCN4nMZq0xyK2upCsX3C5a /gBvO61HS8aJuHT4X+TUxvCOSMAaQfic6afAct28Hqcq5+VLrFYvcA2AOXNKQapuJh7t6jQM+ pbPetOK8DCCNB2iF6EfPY3fBdL0rVb/KAHo6ipK/MgSlwF/IVklDD8Tp594cWTuU9UDZ5pxYO 2zE9FDEjYhwKmbkpiv/D33eRwaU6lTqXKzRN+sFGrJmCmaXfnMQFtIn/Bq9Qw2bBHq3rWq1c8 xUmkXXSWEUyYsz8EFdLU9M55IJmV3lYtsbH74k8V9TQGFBmylnW6IURCjwScpp9RgPcEZfMWq FyhQztddpKDhzxJt/86OGArNSTf0YQmCX8afR2U7p6KUpnXU//ym/2YOafbgdyeq8Yv9l4rOr tkLV+lwOTTz+R5q1jBP9clXTAME99PTnPebHqs8lERB4hi/4IkDIYx3/FdC7HxsNZKZM3jSpt xy6b0Yg0bf/xwy197KFIXI9SfX4Q/B2xPAV2WZALtw5xIn4Tp5D0zlACWLr7WFAwwKW47Wyxi SwiCcL/UpERNv/N9rrI3CUfs4hVAevDRx32QXjCVRq/sEmiucwaIsJjjzSBa8MjsItloM2kPN chHiTsLwezDiig= List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk aditya desai schrieb am 24.11.2021 um 07:25: > Thanks Tom. However I could not find any solution to achieve the given r= equirement. I have to take all values in the temp table and assign it to a= n array variable to pass it to the audit procedure as shown below. Can you= please advise ?=C2=A0 > > CREATE OR REPLACE FUNCTION call_insert_info( > =C2=A0 =C2=A0=C2=A0 > ) RETURNS void AS $$ > =C2=A0 =C2=A0 DECLARE > =C2=A0 =C2=A0 =C2=A0 =C2=A0 v_message r_log_message[]; > OLDVALUE1 varchar(4000); > =C2=A0 =C2=A0 BEGIN > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 drop table if exists changedin= fo > =C2=A0 =C2=A0 create temp table changedinfo(colName varchar(100), oldVal= ue varchar(4000), newValue varchar(4000)); > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 insert into changed infot sele= ct 'empName', OLD.empName, NEW.empName from employee; > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 insert into changed infot sele= ct 'location', OLD.location, NEW.location from employee; > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0 > =C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0 > v_message:=3D=C2=A0 =C2=A0array(select '(' || columname || ',' || oldval= ue || ',' || newvalue ||')' from changedinfo); > =C2=A0 =C2=A0 =C2=A0 =C2=A0 perform insert_info(v_message); > =C2=A0 =C2=A0 =C2=A0 =C2=A0 raise notice '%',v_message; > =C2=A0 =C2=A0 END; > $$ LANGUAGE plpgsql; You don't need a temp table for that. You can create the array directly fr= om the new and old records: v_message :=3D array[concat_ws(',', 'empName', old.empname, new.empnam= e), concat_ws(',', 'location', old.location, new.location)]; Although nowadays I would probably pass such an "structure" as JSON though= , not as a comma separated list.