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 1l4esb-0004ZD-1H for pgsql-admin@arkaria.postgresql.org; Wed, 27 Jan 2021 07:04:41 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1l4esZ-0001QI-Pw for pgsql-admin@arkaria.postgresql.org; Wed, 27 Jan 2021 07:04:39 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l4esZ-0001Pu-G9 for pgsql-admin@lists.postgresql.org; Wed, 27 Jan 2021 07:04:39 +0000 Received: from mout.gmx.net ([212.227.17.20]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l4esX-0005Tz-2x for pgsql-admin@lists.postgresql.org; Wed, 27 Jan 2021 07:04:38 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1611731074; bh=2WXTQg+d4RxmLlpFGnEXRG/ka5BVK44MpiSCF9yBZ90=; h=X-UI-Sender-Class:Subject:To:References:From:Date:In-Reply-To; b=XNz3wsqDPFAT5tEo62UyJw5oBaKtMAj4p3x8G2GR1+DalmRhW0c5eto6gjRr3BhLm f/KVUlj/25eva1JZjMaauyRuVpo1ezGVtwt6RxwnPxclsqovqJJowuhWEaeSKjgFLx bRjYRfaKsFESPz493a4Thnw+Axr0o1yN0d0xZHmM= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [10.1.32.226] ([185.40.248.10]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MryXN-1ljEyC47uf-00o01j for ; Wed, 27 Jan 2021 08:04:34 +0100 Subject: Re: json_build_object, numeric types, and function limits on 100 arguments To: pgsql-admin@lists.postgresql.org References: <20210126135238.GA20826@alvherre.pgsql> <2338155.1611697339@sss.pgh.pa.us> From: Thomas Kellerer Message-ID: Date: Wed, 27 Jan 2021 08:04:32 +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: de-DE Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:ycMnvuiLKhDk8lBdDry15+AWo8cTIOX6Ah4pH6cCVewHxC8V7gt KffnhWHcUxoOgRUXL5W3qf/0xKsq2Rrp54lq5YOqsvE2D+QVnqHuHpdIDJnPPRw8VDK/v55 n6BY6nIyBLifdI21bLxO9Bhru42axzEgsAtqeGDQ/RpsThlKMakZ+IFqXCjgia/kWavccSF JEQ2V1Q3ejEu48bTapcZA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:iJwszgSNPgU=:WGGtIfboZ5G8AupZiNLFqC 3XtI2IcBH4FuLPqRgln5quIUauZyCtZ2qkTHgEMZCZQxR2bKlCphCb6EY5gIdLDopaGpQ3pjI aKuLKK19i/MIgpzCHIAkTmDoKbWQEmE+p7WpKJzO+6szZyAbpQMo9HMd/zDVBGKBCCCOVJgAE ilzw7WA3cueNC1dWJnKMF1jXBTt2q/j0h3m+BEaGz4SuHEhYzU62ErnsXUVlynARMD3J/nIgO LueP3utUO1W68/psXiGGUzXOZDyaQL1vgx75rVb+T4EmUKLL/FHhXdu5fi23wMJnsQk6geWSs 1rks6vVEBGr9+BLZYN6p30tJmls5GQUOsoT4BCKqJIpKwwVqvOOPKpwVhui9upolhvamWyc5i CT/e+iD7CkmMzAKSK1nYiPV2SLSIb4dzWmLZ7mlP5ee40uwnf8DchprWHlfOURnaFvNb+JjRa MnHo3lJfk6a64oWXOdDulHxu5wAVDp1StPwuXnSinyHj/szUkcYjpwvuFzWosuOhSn6r0609u AR8ZlFKKVl/RvySCXGbU04+uJVGxZ+MYt90RtqTTOruRvd/ySB6iKh1GaPEBO0bteE/Autm3f j0olxFdGEf7ggJZKtZ4UGyy/lebhL6VaWl/5w86Cq2E4r2B7AbcyLv4+1MgFHygK/35Cbrhx0 TUsR4/r/5n4rl47eP7eBDP2IKOJqjOYsHsKBXPHglGLbeqehwe/Qc43DKN6y7b/y4Atpp2q0K VKg3V6qr8n8uFjpevPH9H33A3a06ZW9WOBstF4Y2euCMfCSvUFF2Aq0S+px41xm3F3i9S1i22 +nr1A6H51jRypoCm5axk0Do1IFUlVJ7iOgEdb0E066gXJkhmW3bOUMKpy5s3+5DgV3SSCcJx8 y5FS6HN39mUSHC+31K3w== List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk Wells Oliver schrieb am 27.01.2021 um 07:39: > Thanks, Tom. Doing something like: > > with t as ( select somekey, someotherkey from mytable ) select json_agg(= t)->0 from t; > > Feels a lot more, errr, natural. Would rather have the object than an > array of 1 containing the object, thus the ->0 but this works well > and feels SQL-ish indeed. Seems you just want: select to_jsonb(t) from ( select somekey, someotherkey from my_table ) t Or if you want nearly all columns, convert the whole row, and remove those= you don't want: select to_jsonb(t) - 'keyone' - 'keytwo' from my_table; That will return all columns as json keys, but remove the columns named "k= eyone" and "keytwo" Or build the JSON object directly without a derived table (or CTE) select jsonb_build_object('one', somekey, 'two' someotherkey) from my_table;