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 1qtVT4-00CdCg-JS for pgsql-hackers@arkaria.postgresql.org; Thu, 19 Oct 2023 16:01:50 +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 1qtVT1-003r4w-PG for pgsql-hackers@arkaria.postgresql.org; Thu, 19 Oct 2023 16:01:48 +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.94.2) (envelope-from ) id 1qtVT1-003r4I-CS for pgsql-hackers@lists.postgresql.org; Thu, 19 Oct 2023 16:01:48 +0000 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qtVSy-001HZP-Vx for pgsql-hackers@lists.postgresql.org; Thu, 19 Oct 2023 16:01:46 +0000 Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-32003aae100so616543f8f.0 for ; Thu, 19 Oct 2023 09:01:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cybertec-at.20230601.gappssmtp.com; s=20230601; t=1697731302; x=1698336102; darn=lists.postgresql.org; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject :date:message-id:reply-to; bh=Tm4Zgx6K7wowu4oG7hr8bQ1NA2CnFI1BPkFZicGnzV4=; b=LjxIjr+yFaH54Ux96FPeWS9bNBkit0KkmgdZp8UtSmdDVqvZa0J73f0dMq5I3cfT9B /ZSkc9RDgSgatSu/EDYRFn/zaN5P1sbepaZZpMJiM7M/hWeAUqWbNpMadLZs4J7a+5OY yUxW2L8bAhMC8/0S9HoE9H3wB3hSPVOzB0csxwrPgneJtsXTwkQe9dukMAENFmp/Hoqn lgNe8eYYTsKGcG97SiSkDDp1dkDPOz31LZ2ncQOXgY5qePbVLbvWfcrFKmjZTDbsd0fZ ndaGYyNSejbB6u/XMDom+Dszv6/Tx/7HgnRL2CkEm/GffrOvt9NV7tvz4imh9836a9p8 zL0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697731302; x=1698336102; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=Tm4Zgx6K7wowu4oG7hr8bQ1NA2CnFI1BPkFZicGnzV4=; b=A9yKsxa4+Izhvx8RLL9kqzHah6TU9fxvml3+1C1dasWbD/+nj5BVrCOQ5NJQEDskCg j8ygkReml//2F5s8xBv8vvKiY1pM3+7/vskZ2ILn3Pw/dlxJY8rwQkGYvL36ZOk5d9Tu bJ36Cs6+7O0mRT9IPR2qOCqmmWZvgR1ujAr94j51WvvHr60tD6v9D3CLk/11f6/QTupJ 9+dzsKvCC+ui6CaFwLNk+n74SWejTUJiEnmmn60KNIHScJT9IlsOcgevtfMOiOGvIRR1 DQV+TzJduOKH/Cd/QY037GQWPaE7LFQBfEDrjpJ+s1cqV6tjGIyaullMEUY/o0YcPghD YkoA== X-Gm-Message-State: AOJu0YxQTXWsu7Y9BREhOqOAyV1Irq/DApUuf9lg9KqoVAp2EjsiEIsm HXzyxt3EOnH4eIabqshlufZ+dQ== X-Google-Smtp-Source: AGHT+IGYBnZFWIYnOqDSzk4R1vsTbz9ESCApIolR/MpHmu5LtIzWDOCOENn6LMqZkpaAVVOw7t9Gyg== X-Received: by 2002:a5d:4f0f:0:b0:314:1096:6437 with SMTP id c15-20020a5d4f0f000000b0031410966437mr2427340wru.19.1697731301460; Thu, 19 Oct 2023 09:01:41 -0700 (PDT) Received: from localhost.localdomain ([2001:871:260:ccee:ff5d:296a:ef88:dd9e]) by smtp.gmail.com with ESMTPSA id y18-20020a5d4712000000b0031984b370f2sm4748318wrq.47.2023.10.19.09.01.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Oct 2023 09:01:41 -0700 (PDT) Message-ID: Subject: Re: [PATCH] Add support function for containment operators From: Laurenz Albe To: jian he Cc: Kim Johan Andersson , pgsql-hackers@lists.postgresql.org Date: Thu, 19 Oct 2023 18:01:40 +0200 In-Reply-To: References: <94f64d1f-b8c0-b0c5-98bc-0793a34e0851@kimmet.dk> <4e6efd382b3195eb7ea438b7219cc94d9399c0bd.camel@cybertec.at> <147ac793f2c3a9a57764fba84988a4b5e843443b.camel@cybertec.at> <4cdc292e-3234-a03d-107d-31cf8b721cd4@kimmet.dk> <36ea800b7b537c89d92bcd109b3858c72c16a14c.camel@cybertec.at> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.48.4 (3.48.4-1.fc38) MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Fri, 2023-10-13 at 14:26 +0800, jian he wrote: > Collation problem seems solved. I didn't review your patch in detail, there is still a problem with my example: CREATE TYPE textrange AS RANGE ( SUBTYPE =3D text, SUBTYPE_OPCLASS =3D text_pattern_ops ); CREATE TABLE tx (t text COLLATE "cs-CZ-x-icu"); INSERT INTO tx VALUES ('a'), ('c'), ('d'), ('ch'); SELECT * FROM tx WHERE t <@ textrange('a', 'd'); t =20 =E2=95=90=E2=95=90=E2=95=90=E2=95=90 a c ch (3 rows) That was correct. EXPLAIN SELECT * FROM tx WHERE t <@ textrange('a', 'd'); QUERY PLAN =20 =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90 Seq Scan on tx (cost=3D0.00..30.40 rows=3D7 width=3D32) Filter: ((t >=3D 'a'::text) AND (t < 'd'::text)) (2 rows) But that was weird. The operators seem wrong. Look at that query: SELECT * FROM tx WHERE t >=3D 'a' AND t < 'd'; t=20 =E2=95=90=E2=95=90=E2=95=90 a c (2 rows) But the execution plan is identical... I am not sure what is the problem here, but in my opinion the operators shown in the execution plan should be like this: SELECT * FROM tx WHERE t ~>=3D~ 'a' AND t ~<~ 'd'; t =20 =E2=95=90=E2=95=90=E2=95=90=E2=95=90 a c ch (3 rows) Yours, Laurenz Albe