nizhikov opened a new pull request, #13668:
URL: https://github.com/apache/ignite/pull/13668
Prerequisites for making Calcite the default SQL engine (IGNITE-29117): a
node with `ignite-calcite` but without `ignite-indexing` on the classpath must
work for the supported SQL entry points and fail with a precise error for the
H2-only ones.
### What
- **`CalciteOnlyNodeIntegrationTest`** (calcite module): starts the node
under test in a child JVM (`IgniteProcessProxy`) whose classpath is the test
classpath without `ignite-indexing`, H2 and Lucene, so it runs in the existing
CI jobs. The test JVM talks to that node via thin JDBC, the thin client and a
thin-client compute task for the cache API checks. Covers
`SqlFieldsQuery`/DDL/DML, deprecated `SqlQuery`, `TextQuery`, `SET STREAMING`,
`COPY`, the `queryEngine` JDBC property and the `QUERY_ENGINE` hint.
- **Implicit engine configuration**: when no engines are configured and H2
is absent, the only available engine is registered with its default
configuration (new `QueryEngine.config()`), so `?queryEngine=calcite` and `/*+
QUERY_ENGINE('calcite') */` work without an explicit `SqlConfiguration`. The
JDBC/ODBC handshakes ask `GridQueryProcessor.queryEngineConfigured()` instead
of scanning the user configuration, which does not contain the implicit entry.
- **Precise errors for H2-only query types**:
`IgniteCacheProxyImpl.validate()` rejects deprecated `SqlQuery` and `TextQuery`
without H2 with a message naming `ignite-indexing` (and suggesting
`SqlFieldsQuery`) instead of an NPE / bare "Indexing is disabled.". `querySql`
and `streamUpdateQuery` check indexing like the other H2-only paths.
- **Thin JDBC driver**: `executeNative` enables the stream state only after
the server accepted `SET STREAMING ON`. Previously a rejected command left the
state set and `Connection.close()` blocked forever waiting for a batch
response. Latent with H2 (the command never fails), reachable on a Calcite-only
node.
### Why
Decisions taken while preparing the engine switch: deprecated `SqlQuery` is
not ported to Calcite and stays H2-only; `SET STREAMING` and `COPY` keep
failing with the Calcite parse error (the test pins the current message).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]