Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vymm5-000Q8j-05 for pgsql-general@arkaria.postgresql.org; Sat, 07 Mar 2026 08:12:37 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vyml2-008B7u-1w for pgsql-general@arkaria.postgresql.org; Sat, 07 Mar 2026 08:11:33 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vyml2-008B7l-0v for pgsql-general@lists.postgresql.org; Sat, 07 Mar 2026 08:11:32 +0000 Received: from mail-yw1-x1129.google.com ([2607:f8b0:4864:20::1129]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vyml0-00000000yLU-2FUy for pgsql-general@lists.postgresql.org; Sat, 07 Mar 2026 08:11:31 +0000 Received: by mail-yw1-x1129.google.com with SMTP id 00721157ae682-798527f822cso100768737b3.3 for ; Sat, 07 Mar 2026 00:11:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1772871090; cv=none; d=google.com; s=arc-20240605; b=aFdaMkBbhGoSvA/ndWcmV6+QOmWSbvzmLJXfRBeW659dD71m7S1cVUVJfsNfDy2jtf WsaEWj5Mnq97GEaqxNPBWdqUXoa1YiEaUu8dVMKQcUuMuhAbOu7y2KdxI/qqrwAcOX5m 15s7jOBkt9dh4BzdO+3wr3F+KuiBVQVNnFQtq/s0Ph1HSCpFrdhfWjjeIMZ0+flC95SO 2xjcfFUVUyn+yPknQYs0/cwgKXKul/9G+rr551dC4EWJfx5sGL02vNn7trlbM5X8+2pT LN5rQ3mqSY7w+ZkOqMEG2z1DP9Cwhyvi7NIupLYgAnO9jo0hvG288rvIBvLKQd1k0iQS hNeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=HVdkCGHWrJESxWi8zaaJISpRXb9SESZS7N8XpRMOsX4=; fh=kyAsYl77KsxRDd0MpChrI1Mi1G/EXxKHRVc31UaZmY8=; b=Mv+3RsHfC10h6n2BwlwRhX77ixirWHToB6DsqXjx7bXZCY2Z+lxxWXTi2yyAnowTh1 seXSrYzjgTDlxu9HE0aF3HD+QxAO5LmKwgjC9w9EnMBI2pzUMww1P/6vJMy7n3XDri/A nBxihod6Ny7xyWpluGId9cxmNM5NsOs+ZWpp+Euq33XFBZleXD/ERGf2oCYDZnFHQuHq QtgMhag/d9jkgBYVvLRN1XKnHvDXXcDxdJ1HgH/fXUUAPLFosTaBoHTK+gDQsy1+QfoC Ka+TgaTHflfVjIs37Y+e0UMqB/0nHbkpTvhdTNP/Yp/1AyKdS9RfiZJ+LYiZruJobUMf jkiQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772871090; x=1773475890; darn=lists.postgresql.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=HVdkCGHWrJESxWi8zaaJISpRXb9SESZS7N8XpRMOsX4=; b=mJp8lCRiUt3uQivq71GoZQ5boy/JGj+gM20DIq3SK1pM1eq+EGhe3KgBts5yYEPlgO YK+WtFSpdtan0aPjmH16b8zDYvapb67dNWfc5l/+EVhBG2ynP986ststDzEPIUGTLHRF 5+COfCWuOa97zkE0ICxjhXp3k0D2hJoJC62CfedMwfnfK8QGoP0gdj8oZzCYY7duBtnw dB255NUXNfxrwD9hnP/muTZKyDUNa0T3NQhllfZNuJZPL+UxshhJ05jBHfCkHVaXQeDV x6Jy1fahtzd8i4s/N71aqRUv82dad78RE1LFvomsWixKSTNkuJaM7v4ZDY1KPtSgnZnq PSKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772871090; x=1773475890; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=HVdkCGHWrJESxWi8zaaJISpRXb9SESZS7N8XpRMOsX4=; b=KCWFcPAc+Gtcvwh2j2XQkKnG53SebGhsHoOi1g2CWH4jMJxlNOD9rm9JlTxnt+1y9O bhoC83ftKA+ZPs6zGiVDwgNNQPj+DHsSYxSJynzF+6Mnl8LG7qsUePPfrPwGgYdUGVtn Yta2XMFaIeWlGSkknCRoCwIE8nX3zNrzypiQyeMXtRvH7CmKrm8IcRdoKk4KtjTkFn2e 0KPn8preRR/4mbjTHUxlkfJkJUeWntSojc7JIbNidArdeI1CFgBax7jizp7cPquhPTDF Sj13j4p1ziPEysZyChBIgvuuodNRrMd1z80lwhdhi3dq08Bv9zFUMT3EODGHt4TUSAYF wn7A== X-Gm-Message-State: AOJu0YwL+6x4g3Z7o8cg/eg+283/nKOcc+KCTGychwkKNSRX1VxCCT/I mtIhBUfkH1Z6PqrkJbzsJMOIT4Vhg83Z8+TCiHQdjz/rJ8NXFOVTSBQIfmoageIFGRqkDOrDerW 6HmAjxKCm8CaJ7SZdDnWohpUnlhVpeT8= X-Gm-Gg: ATEYQzzZOah7hAv87vMrdSx4b/7Mr9T0mOJZ8za+dvfIm3Z/TCiCLeuW+FyjOeqyouB 8prJ7mhu1XqPdHZzjSNs118r5FnKHBusedryuAJ394UJbz/JbP5CmexWRAQsF0mXV7h1P7r2Q8f r3hzh7UlVuH99qLSJzHtE9YZQVmzBLE/8kY459uWHwtJOIk6dJaq0QTpCfsY9aHrNJW+kFwhc7i k/gur5fSPPG2RdXDjsaRgZEYbeAhww7g9s/CDG7fbRLP/c/yV6dWNa/XIaRxh2sNcaAJmwTbzqU OH0= X-Received: by 2002:a05:690c:e3c9:b0:794:ff22:4fb4 with SMTP id 00721157ae682-798dd6444fcmr47292407b3.4.1772871089676; Sat, 07 Mar 2026 00:11:29 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Igor Korot Date: Sat, 7 Mar 2026 02:11:18 -0600 X-Gm-Features: AaiRm507kAiq3KBnbuw4NzkfjgDyqBukK6aU-UtKe5rsOq11B0GErNgdDuZC-L4 Message-ID: Subject: Re: How to properly use TRIM()? To: "David G. Johnston" Cc: "pgsql-generallists.postgresql.org" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk Hi, David, On Sat, Mar 7, 2026 at 1:41=E2=80=AFAM David G. Johnston wrote: > > On Saturday, March 7, 2026, Igor Korot wrote: >> >> >> included, NULLIF( TRIM( c.reloptions ), '' ) AS storage FROM pg_index >> idx, pg_class c, pg_namespace n, pg_class t, pg_indexes ixs WHERE >> ixs.indexname =3D c.relname AND c.oid =3D idx.indexrelid AND t.oid =3D >> idx.indrelid AND n.oid =3D c.relnamespace AND idx.indisprimary AND >> n.nspname =3D 'public' AND t.relname =3D 'leagues'; >> ERROR: function pg_catalog.btrim(text[]) does not exist >> LINE 1: ...num) OFFSET idx.indnkeyatts) AS included, NULLIF( TRIM( c.re.= .. >> > > > You are asking the wrong question. The right question is =E2=80=9Chow do= es one turn an empty array into the null value?=E2=80=9D Nullif is correct= , you just need to specify an empty array (of the correct type) for the sec= ond argument. I don't think pg_class.reloptions is an ARRAY... draft=3D# SELECT c.relname AS name, ixs.tablespace, ARRAY(SELECT a.attname FROM pg_attribute a WHERE a.attrelid =3D idx.indrelid AND a.attnum =3D ANY(idx.indkey) AND a.attnum > 0 ORDER BY array_position(idx.indkey, a.attnum) OFFSET idx.indnkeyatts) AS included, c.reloptions AS storage FROM pg_index idx, pg_class c, pg_namespace n, pg_class t, pg_indexes ixs WHERE ixs.indexname =3D c.relname AND c.oid =3D idx.indexrelid AND t.oid =3D idx.indrelid AND n.oid =3D c.relnamespace AND idx.indisprimary AND n.nspname =3D 'public' AND t.relname =3D 'leagues'; name | tablespace | included | storage --------------+------------+----------+--------- leagues_pkey | | {} | (1 row) Included is one, storage is not. Thank you. > > Given that error message, an array of text is the correct type. > > Array[]::text[] > > David J. >