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.94.2) (envelope-from ) id 1siz2h-00CDZU-Uw for pgsql-sql@arkaria.postgresql.org; Tue, 27 Aug 2024 16:27:40 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1siz2f-009ccs-HW for pgsql-sql@arkaria.postgresql.org; Tue, 27 Aug 2024 16:27:38 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with utf8esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1siz2e-009ccj-Dw for pgsql-sql@lists.postgresql.org; Tue, 27 Aug 2024 16:27:37 +0000 Received: from outbound.visena.net ([46.226.12.34]) by makus.postgresql.org with utf8esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1siz2X-001i5Y-M5 for pgsql-sql@lists.postgresql.org; Tue, 27 Aug 2024 16:27:35 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=visena.com; s=20141101.wh; h=Content-Type:MIME-Version:Subject:References:In-Reply-To: Message-ID:Cc:To:From:Date:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description; bh=a5BoY5iHPfi1BZvcE3P7eXQdOpK+3ueyToBVCNlx9jU=; b=sjgMfp973ifO/1+jgIiCo6cHJZ 97eyrK3+xSzYmq05flVDzgEjP1IS7tNFQd/N7we12aaDlu0m1ibArvYACy6t20PhwYV8bBHNsSO9H /S4XHf+WLOUVLCjK+9UQ/Odn2JUbPvdrDXCW0Xtzly8IolQZFa9Cl+wS+srF5GzMiHkE=; Received: from batch01.services.internal.visena.net ([10.3.0.103]) by outbound.visena.net with utf8esmtp (Exim 4.93) (envelope-from ) id 1siz2U-00Axyl-G6; Tue, 27 Aug 2024 18:27:26 +0200 Date: Tue, 27 Aug 2024 18:27:26 +0200 (CEST) From: Andreas Joseph Krogh To: "David G. Johnston" Cc: "pgsql-sql@lists.postgresql.org" Message-ID: In-Reply-To: References: Subject: Re: ORDER BY elements in ARRAY MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_64124_289675656.1724776046371" X-Mailer: Visena Mail 3.2.724 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk ------=_Part_64124_289675656.1724776046371 Content-Type: multipart/related; boundary="----=_Part_64125_983313147.1724776046371" ------=_Part_64125_983313147.1724776046371 Content-Type: multipart/alternative; boundary="----=_Part_64126_273319761.1724776046423" ------=_Part_64126_273319761.1724776046423 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable P=C3=A5 tirsdag 27. august 2024 kl. 18:03:37, skrev David G. Johnston < david.g.johnston@gmail.com >: On Tuesday, August 27, 2024, Andreas Joseph Krogh > wrote: [=E2=80=A6] This doesn't really do it. I'm looking for something analogous to Java's=20 Comparator-interface so the custom datatype knows how to sort itself. Ah. Then either just put those two values into the first two field position= s=20 of your custom type and live with an easy, but also self-contained, hack, o= r=20 figure out what incantations of create operator and/or create operator fami= ly=20 are need to install custom behavior for the b-tree < and > operators. I=E2= =80=99m 80%=20 sure it=E2=80=99s doable, 60% in plpgsql=E2=80=A6 David J. Ah, seems CREATE OPERATOR is worth pursuing. Thanks. -- Andreas Joseph Krogh CTO / Partner - Visena AS Mobile: +47 909 56 963 andreas@visena.com www.visena.com ------=_Part_64126_273319761.1724776046423 Content-Type: text/html;charset=UTF-8 Content-Transfer-Encoding: quoted-printable
P= =C3=A5 tirsdag 27. august 2024 kl. 18:03:37, skrev David G. Johnston <david.g.johnston@gmail.com&= gt;:

On Tuesd= ay, August 27, 2024, Andreas Joseph Krogh <andreas@visena.com> wrote:
[=E2=80=A6]

=C2=A0

This doesn't really do it. I'm looking for something analogous to Java= 's Comparator-interface so the custom datatype knows how to so= rt itself.

=C2=A0
Ah.=C2=A0 Then either just= put those two values into the first two field positions of your custom typ= e and live with an easy, but also self-contained, hack, or figure out what = incantations of create operator and/or create operator family are need to i= nstall custom behavior for the b-tree < and > operators.=C2=A0 I=E2= =80=99m 80% sure it=E2=80=99s doable, 60% in plpgsql=E2=80=A6
=C2= =A0
David J.

=C2=A0

Ah, seems CREATE OPERATOR is worth pursuing.

Thanks.

=C2=A0

<= div class=3D"visena-email-signature" data-visena-message-id=3D"_VisenaEmail= .23.cb59002578ada57.19194a9213f@origo-test01.app.internal.visena.net_">
--
Andreas Joseph Krogh
CTO / Partner - Visena AS
Mobile: +4= 7 909 56 963
3D""
=C2=A0
------=_Part_64126_273319761.1724776046423-- ------=_Part_64125_983313147.1724776046371 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Disposition: inline Content-ID: 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 ------=_Part_64125_983313147.1724776046371-- ------=_Part_64124_289675656.1724776046371--