I guess this query comes back non-empty: SELECT * FROM paliers JOIN tmp_limitcontrats USING(idcontrat) WHERE qtep1 >= qtep2
This would then lead somewhere to this expression numrange(3,2) Check out idpalier=805 On Tue, Aug 27, 2024 at 7:37 PM Adrian Klaver <adrian.kla...@aklaver.com> wrote: > > > On 8/27/24 10:29 AM, Jean-Christophe Boggio wrote: > > Hello, > > > > I have 2 very confusing behaviors when using ranges. > > > > It all started with this query: > > > > WITH rangespaliers AS ( > > SELECT numrange( qtep1+1 , qtep2, '[]') AS rangep FROM > > paliers JOIN tmp_limitcontrats USING(idcontrat) > > -- SELECT numrange( qtep1+1 , qtep2, '[]') AS rangep FROM > > paliers WHERE idcontrat=1003 > > ) > > ,rangespaliers2 AS ( > > select * > > FROM rangespaliers > > WHERE rangep <> NUMRANGE(NULL, NULL) -- ERROR IS HERE > > ) > > select * from rangespaliers2; > > > > When I run this query, I get the error "Range lower bound must be less > > than or equal to range upper bound". > > > > (a) If I comment out the line marked "ERROR IS HERE", I don't have an > > error (but I'm missing the filter of course). > > > > (b) Also, if I uncomment line 3 and comment out line 2, I get the > > correct behavior. Very strange thing is that tmp_limitcontrats has only > > one row which contains "idcontrat=1003". > > What does: > > SELECT numrange( qtep1+1 , qtep2, '[]') AS rangep FROM paliers WHERE > idcontrat=1003 > > return? > > > > > > This fails on PG 16.4 and 15.7 > > > > Thanks a lot for your enlightenment. > > > > -- > Adrian Klaver > adrian.kla...@aklaver.com > > >