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 1vyxnO-000Zry-0v for pgsql-general@arkaria.postgresql.org; Sat, 07 Mar 2026 19:58:42 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vyxnL-009P64-1I for pgsql-general@arkaria.postgresql.org; Sat, 07 Mar 2026 19:58:39 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vyxnL-009P5v-0I for pgsql-general@lists.postgresql.org; Sat, 07 Mar 2026 19:58:39 +0000 Received: from mail-yw1-x1133.google.com ([2607:f8b0:4864:20::1133]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vyxnI-00000001O8z-3m6B for pgsql-general@lists.postgresql.org; Sat, 07 Mar 2026 19:58:38 +0000 Received: by mail-yw1-x1133.google.com with SMTP id 00721157ae682-7987531082aso101746397b3.3 for ; Sat, 07 Mar 2026 11:58:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1772913515; cv=none; d=google.com; s=arc-20240605; b=It6OwKMfBI1eozZIBDAXUJdALlUsJ70OARTjZnAAlAvdjSnk5X2DmkXSpweXcrvFdW sEazjGuU7hTWciZ5ku4duiats/wfNGR6D7/+rpDB1Z0jR+EqHuW6vzNfx/q4tltYxO2J /CbMtjmnbt2IO8gKVLRullf9vY2TGVHZr34c6tOtdl/VXBNV0KAX+vz98vlJACTfkqQm XexxDT7IY5GfRj1xoxlvmLfX1kvPRIjSoNYcmQXh+X+m3gxDbXFxauPZLGSblybFfgV2 TBIgepJrdGjPVfT1bnXreI+JUns8AgbpBFadvyhfKaZcaxecr0b5YHeZtWZg/a+ANtbT nG7Q== 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=2k68RtYR5oV4B3/maPzxIN3WbFH6KMySPDKVuc0eazM=; fh=uLtc09j0h68o8CQxZLtg+OQEWBN4tf7Qw/NoAJ6kcao=; b=Q3tKPw3C0VKpoNrKws2A7QWsmFpFvEIdYBzrCv981JwHH7DqLWvtUdaW+2moFjTUkG fP4LotnXIEWcvcF1Ol6q5tBZ21SfisSvxUJuo/IwEpn74+vTljTRSnagAefNX67Vos/t v9dmC4wmn0lAQ92Vv4viD745G4aPmm/vcgcUeeBoVEXIe4sN8kqz5wJtu/9VfyX7U38g X42ApLyQls674FrXDkx5Erx0FsexT2luaHyXxdippt4Z8XTzJ9YMnYLwgAzYbRhnz4Ps vltIcy9Nnb05JdNcVQ29yuKbSAQv/CbDIpEcAQy2eB0MAE6E+ke2T1bkg06xvLfsCGQn Y6/w==; 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=1772913515; x=1773518315; 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=2k68RtYR5oV4B3/maPzxIN3WbFH6KMySPDKVuc0eazM=; b=MbTPmaOK70Cz6tH6oy1vKFOzqUmiz6gFZZrtnxKiF1Rg9U9IXTiu8TwFJqL3K6l1Uu aLPS2JE+H8SevCDtXRhHgSa8Fhf6a32ynr1epZsYq6KVupj4oIi7dtFZkwA28zUToOvp GP/bwNp23EuV59NPBOSX0q64+fPOhNGCPrTL6F5/Yn5Qj7zA6wjhGdhik6FGm87ofdot GVBQLqKAkmYmO+FOnX8z84g5bg4dzfAykHpZk7F2MMWSqH5vex7GbDCTERkPvod72tVZ 8vUB0VVTLINU3Dc0EVBqJCXsSwvtT6y4ca3cF8CHMRPHb5M1iqh0gvAmYdtTpWH4wLBs VT6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772913515; x=1773518315; 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=2k68RtYR5oV4B3/maPzxIN3WbFH6KMySPDKVuc0eazM=; b=ThzfBF3HUXOvWVbSe4BY0Bnx92JSTiBn4NVA1KBR2y5t4zv+061Yo1okngDe1R8qUC MIGhFKcEkSzta5q/tSWq+wky2J5aYN7rZoEe0qEM9Z4gwOpgx4fFmOAC+SbEwZDzIXB9 eiA2dQ/B/NR7uQgpGdZDbvqHUFMESdxAY2nNLtnaXFg0tLCIRQENhK82552sTRyDapKL ydvIUObqiOtSSy7+GDhsI61N5lCgU7n4M8LGF2FOud2SAM+d0fSy41oh38CPsjrVvPAz IeRzpZ2NrfgWq/UtNjldE9R5HFNRLN9bYpMnwbhDYfyqYJVGKIhstG1AbLtNKunR7/YC +0Sw== X-Forwarded-Encrypted: i=1; AJvYcCXLdPRciovwSljd8K36imKMbPUbSWvLE3nowwwfTf6+xRieHHpTbzezCViPzAwNjkAKWU30ydJPDnWaCvqp@lists.postgresql.org X-Gm-Message-State: AOJu0Ywg7RKay4PzAFbehQoRrF6pV5P6e/mcfIsShO9rKPeKycOX5kyc bxnaQmXIRBy+HbAqA/qTmMrA+IijsYgyJbwU/IhvoIAE3BUrnhk/aybMuTuFnO+kLkL/vLfQn+a HaLrPrLDX6tmNmPSkqU/gX+z789bAMhw= X-Gm-Gg: ATEYQzyCKXw1gUcCZfJldsDYvKXn5Qz5MW2xBXBQpPt7fpUWzeY+45L4Yxh/Re/uu8r OqRLuuH/GpClLSQyPKWBHKgEg9aQr+g308UacjD+IGArgFoDVvrMGA4/93HQYTcHeKW0Fxyrt8A /fJgq2YwDBhBx5uHljNkq9kDHqwUIX60wahK0NLB2kY5hWy9muwz/skSv7LDnzZJxlfP4ltoOP5 NZOKR/alzwel8gmBAqCWlnrmbVSC1wSOdWeb508JRuYkGWQB0ocN7z8jyktPYKVn6iCAhl2ecwK wy8= X-Received: by 2002:a05:690c:3489:b0:78f:a615:2724 with SMTP id 00721157ae682-798dd7878ebmr59696127b3.48.1772913515031; Sat, 07 Mar 2026 11:58:35 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Igor Korot Date: Sat, 7 Mar 2026 13:58:22 -0600 X-Gm-Features: AaiRm53JHImGXZ8D7BnE740Mxqb_lZ07rlxeOpNFcAZSkLDN8cxob7PWDr-fBNQ Message-ID: Subject: Re: How to properly use TRIM()? To: Rob Sargent Cc: Adrian Klaver , "David G. Johnston" , "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, Rob, On Sat, Mar 7, 2026 at 1:20=E2=80=AFPM Rob Sargent = wrote: > > >> reloptions text[] > > > Then why it=E2=80=99s not showing {} as in the =E2=80=9Cincluded=E2=80=9D= columns? > > Or it=E2=80=99s an ARRAY() implementation? > > Thank you. > >> > > One is an empty array, the other is null. Those are not the same thing. Following code successfully retrieves column 3 and exits, but keep looping for column 4. while( ( ret =3D SQLGetData( m_hstmt, 3, SQL_C_WCHAR, included.get(), 255, &ind[2] ) ) !=3D SQL_NO_DATA ) { if( ret =3D=3D SQL_SUCCESS || ret =3D=3D SQL_SUCCESS_WI= TH_INFO ) { auto numBytes =3D ind[2]; if( ind[2] =3D=3D SQL_NO_TOTAL ) numBytes =3D 255; else if( ind[2] > 255 ) numBytes =3D 255; str_to_uc_cpy( includedCol, included.get() ); } else { GetErrorMessage( errorMsg, STMT_ERROR ); result =3D 1; } } includedCol.erase( 0, 1 ); includedCol.pop_back(); } while( ( ret =3D SQLGetData( m_hstmt, 4, SQL_C_WCHAR, index_param.get(), 255, &ind[3] ) ) !=3D SQL_NO_DATA ) { if( ret =3D=3D SQL_SUCCESS || ret =3D=3D SQL_SUCCESS_WITH_I= NFO ) { auto numBytes =3D ind[3]; if( ind[3] =3D=3D SQL_NO_TOTAL ) numBytes =3D 255; else if( ind[3] > 255 ) numBytes =3D 255; str_to_uc_cpy( options, index_param.get() ); } else { GetErrorMessage( errorMsg, STMT_ERROR ); result =3D 1; } } when I tried to run it without nullif() and trim(). So I started looking for a way to return SQL_NO_DATA on that 4th column... Thank you. P.S.: Sorry for kind of throwing ODBC code here. You have ODBC related list, but this is where things get in the cross. > >> >> >> > Included is one, storage is not. >> > >> > Thank you. >> > >> >> >> >> Given that error message, an array of text is the correct type. >> >> >> >> Array[]::text[] >> >> >> >> David J. >> >> >> > >> > >> >> >> -- >> Adrian Klaver >> adrian.klaver@aklaver.com