Hi, Igniters During testing Thin JDBC Driver I found some interesting things that would be good to discuss:
collocated flag ============== The flag helps to optimize query against collocated data in advance. We've following: 1. Simple queries against single tables return weird results [3]. It means that either a connection has reset every switch collocated/non-collocated requests or make two connections for collocated and collocated requests respectively. 2. *distrubitedJoins *flag mostly covers the cases: - if it is true we don't concern how the data distributed over cluster - if not we always operate local data no matter it's collocated or not 3. There was an activity to remove it but it was cancelled [2]. replicatedOnly flag =============== The flag helps to optimize query against replicated tables (caches) and query always operates local data. 1. But why can't we find at preparing the request for execution? 2. For PRIMARY_SYNC cache mode using local node data may lead to inconsistent results. Thus it may be implemented as an explicit hint for a query if user want to do that and accept the possible risks or just re-use *distrubitedJoins=false*. 3. Same concern that it used per JDBC connection and required reconnect for change the flag. I guess both flags should be deprecated and removed (2.8?). Ideally *distrubitedJoins *should be removed as well and replaced by query hints (default *distrubitedJoins=true*) 1. https://apacheignite-sql.readme.io/docs/jdbc-driver 2. https://issues.apache.org/jira/browse/IGNITE-6296 3. https://issues.apache.org/jira/browse/IGNITE-12372 -- Sergey Kozlov GridGain Systems www.gridgain.com
