I think it should be the first option - just throw a clear exception if a query with a non-colocated join is executed without the flag set. Explicitly turning this mode on seems wrong, because in most cases this is not what a user intends to do.
We also should make sure to run performance tests. As far as I know, this was not implemented initially because the assumption was that performing such a check on every single query might have a significant negative impact, especially for OLTP patterns that require low latency and high throughput. -Val On Tue, Feb 2, 2021 at 7:18 AM Max Timonin <timonin.ma...@gmail.com> wrote: > Hi, Igniters! > > Last week I investigated a bug [1]. It's about an incorrect result for > non-colocated joins. For such joins it's required to set up the > "distributedJoin" flag, or try to make joined tables colocated. It is > covered in docs [2]. But it's not obvious and some users don't read that or > forget about that. In result there are wrong results for some queries that > are pretty hard to debug. > > There is a ticket [3] with a comment, where it's suggested to add a check > for such joins. I tried to implement it and found a place where it's > possible to put this check. But there is an open question what this check > should do. Currently I see 2 ways for that: > 1. Forbid non-colocated joins that aren't marked with the distributedJoin > flag, and throw an exception. > 2. Check every query for such joins and implicitly setup a distributedJoin > flag for them. > > Both solutions may break compatibility, but is this compatibility OK? > > Igniters, what do you think? > > [1] https://issues.apache.org/jira/browse/IGNITE-12847 > [2] > > https://ignite.apache.org/docs/latest/SQL/distributed-joins#distributed-joins > [3] https://issues.apache.org/jira/browse/IGNITE-13019 >