Gábor Boskovits <boskov...@gmail.com> writes: > P > > Clément Lassieur <clem...@lassieur.org> ezt írta (időpont: 2018. júl. 29., > V 14:01): > >> Danny Milosavljevic <dan...@scratchpost.org> writes: >> >> > Hi Tatiana, >> > >> > On Sun, 8 Jul 2018 21:48:32 +0200 >> > Tatiana Sholokhova <tanja201...@gmail.com> wrote: >> > >> >> Do you have ideas on how to >> >> implement tuple comparison and other routines in SQL and guile in a >> >> convenient and flexible way? >> > >> > sqlite3 supports row values, so the comparison can be >> > written like this: >> > >> > select * from foo where (a,b,c) = (2,'foo',3); >> > >> > It even supports NULLs for wildcards, though it's a little more >> complicated: >> > >> > select * from foo where coalesce((a,b,c) = (2,NULL,3), 1) = 1; >> > >> > The sqlite C interface doesn't support parameter bindings for the entire >> > row, though, so you'd have to specify 3 values. >> > >> > This works: >> > >> > (sqlite-exec db "select * from foo where (a,b,c) = (" 2 "," "foo" "," >> 3 ");") >> > >> > but this doesn't work, unfortunately: >> > >> > (sqlite-exec db "select * from foo where (a,b,c) = " '(2 "foo" 3) ";") >> > >> > See also https://www.sqlite.org/rowvalue.html >> >> With the '<' operator, it doesn't give the results we are looking for, I >> think. >> >> For example: >> >> select (0,1) < (1,0); -- returns 1 >> select (0,0) < (0,1); -- returns 1 >> > > This is working as expected. Actually this: > (a,b)<(c,d) is a shortcut for a<c or (a=c and b<d). > > In both cases, we'd want it to return 0. >> > > How do we use it? Why this is the expected result? > > >> I think we should use: >> >> select (0 < 1) and (1 < 0); -- returns 0 >> select (0 < 0) and (0 < 1); -- returns 0 >> > > Could you please clarify which numbers are the placeholders for which > quantities? > >> >> instead, for the pagination borders code.
Actually, forget what I said, I was wrong ;-)