Skip to content

Docs for 26.11.1: query language, find_nearest width and distance, read-only open, single-pass results, server mode, and fixes from the audit - #264

Merged
tae898 merged 8 commits into
mainfrom
docs/which-query-language
Nov 5, 2026
Merged

tae898 merged 8 commits into
mainfrom
docs/which-query-language

Conversation

@tae898

@tae898 tae898 commented Nov 5, 2026 •

Copy link
Copy Markdown
Collaborator

Closes #263. Part of #267 (the before-release items of the docs audit; the larger pages follow after 26.11.1).

Page or file Change
how-to/databases-and-queries.adoc "Which query language": openCypher for graph patterns and traversals, SQL for documents and tables, the older SQL graph syntax supported but not recommended for new code. "Read-only open": open_database(path, read_only=True), what it refuses, no speed claim. "A result set is read once": lazy single-pass cursor, what closes it, count() consumes it, errors can surface while reading, close or exhaust it so the engine releases its scan, to_list() for two passes
how-to/vectors.adoc What find_nearest(ef_search=None) does and the 26.11.1 default width (max(k, 100) under 10,000 vectors, max(2k, 100) from 10,000 on; ArcadeData/arcadedb#10704); the second tuple element is a distance, lower is closer; find_nearest_by_key; openCypher CREATE VECTOR INDEX and SEARCH ... IN (VECTOR INDEX ...) linked to the main manual
quickstart.adoc Server mode: host defaults to localhost (Docker and LAN clients need 0.0.0.0), how other keys map to arcadedb.* settings, the Postgres, Redis and Bolt plugins via server_plugins, no Studio on the native server
installation.adoc, which-package.adoc jvm_kwargs is accepted and ignored with a warning on native (it was described as not existing); Studio is JVM only; one install command per package in the table (each was listed twice)
how-to/bulk-loads.adoc, how-to/concurrency.adoc append_samples exists on both packages, the address path is native; the native row is no longer labelled alpha
README.md 29 example scripts; Python range per package; the polars extra of arcadedb-jvm; the CI sentence matches the matrices (assumes #269, which merges first)
src/arcadedb/core.py, graph_batch.py, results.py docstrings no longer point to pages that do not exist
examples/02_social_network_graph.py, examples/README.md example 02 runs and prints its openCypher section first; SQL MATCH described as the older syntax

Every new statement rests on the code or on the engine commit it names (file:line in #267). Sample outputs from older versions (installation.adoc verify output, quickstart.adoc 26.10.2 notes, the concurrency.adoc probe tables) still need a real rerun and are listed in #267; the pre-release notes change on release day. Checks: compile() and pyflakes on the changed Python files (the two pyflakes warnings in core.py are on main already, #270), pre-commit on the range, no pip install and no em dash in the diff.

🤖 Generated with Claude Code

databases-and-queries.adoc gets a short 'Which query language' paragraph: openCypher for graph patterns and traversals, SQL for documents, tables, schema, inserts, filters, aggregates and pagination, the older SQL graph syntax (MATCH {...}, out(), TRAVERSE) supported but not recommended for new code, with links to the main SQL and openCypher references instead of repeating them. Example 02 runs and prints its openCypher section first and describes SQL MATCH as the older syntax; plain SQL stays for documents and tables. Examples 05 and 06 are left for a follow-up after their run on the small dataset (docs audit 2026-11-04, item M3).

Closes #263

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
tae898 and others added 2 commits November 5, 2026 14:38
… of the default width

With ef_search=None the width comes from the index's efSearch metadata, else from the engine: max(k, 100) under 10,000 vectors, max(2k, 100) from 10,000 on (ArcadeData/arcadedb#10704, in 26.11.1; before max(2k, 20), SIFT 100k recall@10 0.929 vs 0.998). A search on a large index is more accurate and slower than on earlier releases; ef_search trades it back. Found while answering ArcadeData/arcadedb#11323.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…efuses, no speed claim

Both builds implement and test it (tests/test_open_read_only.py: reads, INSERT, CREATE DOCUMENT TYPE and save() refused with 'read only', commit/rollback of a read transaction returns from 26.11.1, DatabaseFactory.open(read_only=True)); no page described it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
tae898 and others added 4 commits November 5, 2026 14:55
- jvm_kwargs on the native build: create_database and open_database accept it and ignore it with a logged warning (_native/database.py NativeDatabaseFactory), they do not 'not exist'. installation.adoc and which-package.adoc said so.
- Studio: the native pom has no arcadedb-studio, so the native server has none; installation.adoc's shared 'What is included' list now says Studio is JVM only.
- Docstrings pointed to pages that do not exist (docs/api/graph_batch.md, 'the Python functions guide', 'the performance guide'). graph_batch.py now points to the bulk-loads page, the other two drop the pointer.
- README: 29 example scripts (was 27), Python range per package (native tested on 3.11 to 3.14 and installs on 3.15, JVM is >=3.11,<3.15), the polars extra of arcadedb-jvm.
- bulk-loads.adoc: append_samples exists on both packages; the address path is the native fast path.
- concurrency.adoc: the native row said 'alpha quality'; the package is beta (README, classifiers).

Sample outputs that need a real rerun (installation.adoc, quickstart.adoc, concurrency.adoc) are left as they are; the pre-release notes change on release day.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ns (#267)

databases-and-queries.adoc, 'A result set is read once': a second pass over a set read to its end returns nothing; first(), one(), close() and leaving a with block close it, and a set closed before its end raises ArcadeDBError when read again; count() consumes it; statement errors can surface while rows are read; an unclosed set keeps the parallel scan threads parked for arcadedb.parallelScanAbandonedTimeout; to_list() when the rows are needed twice. Rests on results.py (class docstring, count, first, one, close, __enter__) and the same states in _native/database.py (NativeResultSet._readable, close, first, one, count).

quickstart.adoc, server mode: host defaults to localhost and covers the HTTP server and every enabled wire protocol (server.py and _native/server.py, ArcadeNative.serverStart), http_port and mode are read by the bindings, any other key becomes arcadedb.<key with _ as .>, Postgres/Redis/Bolt plugins are opt-in through server_plugins and are in both builds (native/pom.xml), the native server has no Studio.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…earest_by_key (#267)

vectors.adoc: openCypher creates (CREATE VECTOR INDEX) and searches (SEARCH ... IN (VECTOR INDEX ...)) vector indexes from 26.11.1, with links to the main manual's cypher-clauses page (anchors cypher-create-vector-index, cypher-search, checked on docs.arcadedb.com). The second element of a find_nearest tuple is a distance, lower is closer, for every similarity function (VectorIndex._sort_results; the native index reads the distance column of vectorNeighbors); find_nearest_by_key(key, k, ef_search, allowed_rids) uses the stored vector of the record whose id property equals key (vector.py _lookup_query_vector_by_key).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… matrices (#267)

The install table had each uv add line twice (left over from the pip-to-uv replacement). The README said CI tests 3.11 to 3.14 on every platform for main, nightly and releases; per scripts/select_native_matrix.py and select_matrix.py, main and nightly run native 3.12 and 3.14 on every platform (pyver subset on 3.11, 3.13, 3.15) and the JVM build 3.11 to 3.14 on Linux x86-64 plus 3.11 and 3.14 elsewhere. A release runs 3.11 to 3.14 on all four platforms for both builds once the JVM release matrix is full (ci/jvm-full-matrix-on-release, to merge before this PR).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
tae898 added a commit that referenced this pull request Nov 5, 2026
…t can be saved (#266)

A hit of find_nearest(include_vector=True) carries the row's RID as its rid, and the native record wrappers wrap their rid again (RID(self._rid) in save, the update, delete, new_edge and the edge reads). RID.__init__ kept its argument as is, so .text was an RID and the fast named-parameter path of codec.encode_params raised 'Object of type RID is not JSON serializable' (test_vector_hit_records::test_a_hit_can_be_modified_and_saved[True], found on #264's parity leg); the slower paths sent a nested tag. RID now unwraps an RID argument. test_native_rid_params.py (native only) checks the constructor and that a wrapped RID encodes byte for byte like the RID on the fast and the hook paths; both tests fail on the previous codec.py and pass on this one (checked engine-free).

Closes #265

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…uage

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@tae898 tae898 changed the title Docs: say which query language to use; example 02 leads with openCypher Docs for 26.11.1: query language, find_nearest width and distance, read-only open, single-pass results, server mode, and fixes from the audit Nov 5, 2026
@tae898
tae898 merged commit 7e1fdc5 into main Nov 5, 2026
42 checks passed
@tae898
tae898 deleted the docs/which-query-language branch November 5, 2026 08:19
@github-actions github-actions Bot added this to the 26.11.1 milestone Nov 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Docs: no page says which query language to use; example 02 leads graph queries with the SQL graph syntax

1 participant