feat(installer): install extensions by default — REPL cross-index JOINs & MVs out of the box - #156
Merged
Merged
Conversation
…ss-index JOINs in the REPL) The REPL assembly contains no JOIN engine, and the launcher's 'java -jar' ignored lib/ entirely — so a fresh install could not run cross-index JOINs at all, and no amount of jar-dropping could fix it. install.sh now: - launches via 'java -cp "<assembly>:lib/*" app.softnetwork.elastic.client.Cli' (assembly first so it wins any classpath conflict) with the Arrow --add-opens flags on Java 9+ - for SoftClient4ES >= 0.20 on Java 11+, bootstraps the coursier launcher and resolves softclient4es-arrow-extensions + community-extensions with their FULL dependency closure (~277 jars incl. Arrow/DuckDB) into lib/ - --no-extensions flag for a minimal install; VERSION and the summary report what was installed documentation/client/repl.md (the README the installer ships) gains an Extensions section: default behaviour, manual 'cs fetch' recipe for existing installs, the thin-jar warning, and the Java 11+ constraint. Verified end-to-end against live ES 8.18.3: fresh install, CREATE/INSERT fixtures, SELECT…JOIN returns correct INNER JOIN rows through the REPL (with softclient4es-arrow#125 applied; see that PR for the extension priority collision this uncovered). install.ps1 parity is a follow-up. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This was referenced Jul 27, 2026
Apache Arrow 18.x ships Java-11 bytecode (class-file major 55), so every JOIN surface needs Java 11+ at runtime. Documented in repl.md (prerequisites + extensions) and joins.md (requirement callout). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…atrices Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ck 1.5.x (Java-11 bytecode) Verified empirically on Zulu 8: 'java -jar <0.20.0 assembly> --help' crashes with UnsupportedClassVersionError on LogbackServiceProvider before doing anything — the 'Java 8+' claim was already false for the 0.20 CLI, independent of extensions. The installer now requires Java 11 for ES 6-8 (17 for ES 9) and the docs state the real floor. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…26-07-28) jdbc/adbc driver jars and arrow-flight-sql refs move 0.2.0 -> 0.2.1; softclient4es-community-extensions stays 0.2.0 (not re-released). Installer usage examples showed '-v 0.2.0' where -v takes the CLI/engine version — corrected to 0.20.0. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
A fresh REPL install could not run cross-index JOINs at all:
softclient4es{N}-cliassembly contains no JOIN engine (zero DuckDB/Arrow classes — verified by jar inspection). JOINs live insoftclient4es-arrow-extensions, discovered via theExtensionSpiServiceLoader.java -jar <assembly>, which ignores the classpath entirely — manually dropping jars intolib/did nothing.Changes (install.sh + documentation/client/repl.md)
java -cp "<assembly>:lib/*" app.softnetwork.elastic.client.Cli, assembly first so it wins any conflict; Arrow--add-opensflags added automatically on Java 9+.--no-extensionsfor a minimal install; VERSION file + summary report what was installed.cs fetchrecipe for existing installs, the thin-jar warning, per-extension Java requirements.Verified end-to-end (live ES 8.18.3, Docker)
Fresh install →
CREATE TABLE×2 →INSERTfixtures →SELECT … FROM jdbc_join_emp e JOIN jdbc_join_dept d ON e.dept_id = d.dept_id→ correct INNER JOIN rows (dept names populated, orphan dropped). 277 jars inlib/(~488 MB).Depends on / uncovered
EnforcedDqlExtension(priority 50, greedycanHandle) swallows JOIN queries beforeJoinExtension(also 50), silently returning wrong single-index rows. Fixed there; needs an arrow-extensions 0.2.1 release, which this installer picks up automatically (latest-version resolution). Until 0.2.1 is published, a default install still exhibits the collision.JOIN … ORDER BYfailing on qualifier loss.install.ps1(Windows) parity is a follow-up.mainat install time by end users — merging changes the public install behaviour immediately. Recommended order: merge arrow#125 → release arrow-extensions 0.2.1 → merge this.🤖 Generated with Claude Code