Compare this row value expression with a set of row value expressions for
equality.
Row IN predicates can be emulated in those databases that do not support
such predicates natively: (A, B) IN ((1, 2), (3, 4))
is
equivalent to ((A, B) = (1, 2)) OR ((A, B) = (3, 4))
, which
is equivalent to (A = 1 AND B = 2) OR (A = 3 AND B = 4)
Note that generating dynamic SQL with arbitrary-length
IN
predicates can cause cursor cache contention in some
databases that use unique SQL strings as a statement identifier (e.g.
SQLDialect#ORACLE). In order to prevent such problems, you could
use
Settings#isInListPadding() to produce less distinct SQL
strings (see also
[#5600]), or you
could avoid IN
lists, and replace them with:
IN
predicates on temporary tables
IN
predicates on unnested array bind variables