iris-vector-graph 2.4.1__tar.gz → 2.4.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/PKG-INFO +1 -1
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/_engine/nodes_edges.py +5 -1
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/_engine/query.py +8 -2
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/cypher/translator.py +27 -1
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/engine.py +64 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/pyproject.toml +1 -1
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/TESTING.md +19 -29
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/benchmarks/README.md +8 -11
- iris_vector_graph-2.4.3/tests/integration/test_driver_segfault_guard.py +146 -0
- iris_vector_graph-2.4.3/tests/unit/test_fetch_first_join_bug.py +56 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/.gitignore +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/LICENSE +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/README.md +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/examples/demo_biomedical.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/examples/demo_fraud_detection.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/examples/demo_fraud_detection_sql.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/examples/demo_rdf_semantic_layer.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/examples/demo_utils.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/examples/demo_working_system.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/examples/domains/__init__.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/examples/domains/biomedical/__init__.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/examples/domains/biomedical/loaders.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/examples/domains/biomedical/resolver.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/examples/domains/biomedical/types.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/examples/domains/biomedical_legacy/__init__.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/examples/domains/biomedical_legacy/biomedical_engine.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/examples/domains/biomedical_legacy/biomedical_schema.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/examples/domains/biomedical_legacy/legacy_wrapper.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/examples/domains/fraud/__init__.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/examples/domains/fraud/loaders.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/examples/domains/fraud/resolver.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/examples/domains/fraud/types.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/examples/graphQL.http +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/examples/hybrid_vector_graph_query.cypher +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/examples/rest.http +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/Algorithms.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/ArnoAccel.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/BM25Index.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/BenchFormat.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/BenchSeeder.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/Benchmark.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/Centrality.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/Communities.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/Edge.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/EdgeScan.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/EmbedQueue.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/GraphIndex.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/IVFIndex.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/Loader.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/MCPService.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/MCPToolSet.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/MCPTools.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/Meta.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/NKGAccel.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/NKGAccelAdjacency.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/NKGAccelCentrality.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/NKGAccelLoader.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/NKGAccelTraversal.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/PLAIDSearch.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/PageRank.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/PyOps.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/Service.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/Snapshot.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/Subgraph.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/TemporalIndex.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/TestEdge.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/Traversal.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/TraversalBFS.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/TraversalBuild.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/TraversalKHop.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/TraversalPaths.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/Graph/KG/VecIndex.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/IVG/CypherEngine.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/IVG/Percentile.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/PageRankEmbedded.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/User.Exec.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_src/src/iris/vector/graph/GraphOperators.cls +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/__init__.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/_engine/__init__.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/_engine/_rdf_utils.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/_engine/admin.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/_engine/algorithms.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/_engine/embeddings.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/_engine/fhir.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/_engine/prov.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/_engine/query.py,cover +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/_engine/rdf_export.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/_engine/schema.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/_engine/shacl.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/_engine/snapshot.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/_engine/snapshot.py,cover +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/_engine/temporal.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/_engine/vector.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/_validate.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/api_auth.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/bolt_server.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/0-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/1-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/10-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/11-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/12-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/13-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/14-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/15-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/16-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/17-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/18-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/19-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/20-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/21-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/22-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/23-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/24-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/25-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/26-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/27-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/28-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/29-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/30-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/31-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/32-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/33-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/34-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/35-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/36-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/37-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/38-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/39-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/40-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/41-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/42-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/43-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/44-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/45-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/46-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/47-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/48-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/49-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/50-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/51-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/52-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/53-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/54-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/55-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/56-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/57-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/58-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/59-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/6-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/60-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/61-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/62-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/63-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/64-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/65-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/66-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/67-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/68-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/69-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/7-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/70-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/71-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/72-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/73-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/74-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/75-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/8-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/9-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/app-b124e26129aa436b26fe.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/filter-a7c44e713bf19d31f6b2849160b1bba8.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.eot +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.ttf +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.woff +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.woff2 +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.eot +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.ttf +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.woff +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.woff2 +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.eot +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.ttf +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.woff +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.woff2 +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.eot +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.ttf +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.woff +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.woff2 +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Bold.ttf +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/OpenSans-BoldItalic.ttf +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/OpenSans-ExtraBold.ttf +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Italic.ttf +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Light.ttf +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/OpenSans-LightItalic.ttf +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Regular.ttf +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Semibold.ttf +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/OpenSans-SemiboldItalic.ttf +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/codicon.ttf +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/filter.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.eot +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.ttf +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.woff +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.woff2 +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/group-by.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.eot +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.ttf +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.woff +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/sort.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/sort1.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/sort2.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/streamline.eot +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/streamline.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/streamline.ttf +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/fonts/streamline.woff +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/group-by-89c6aaa756bc3548cc6ab3d2be4d2862.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/Favorites.mp4 +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/Keystrokes.mp4 +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/ProjectFiles.mp4 +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/ReusableFrame.mp4 +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/SidebarDB_Iinfo.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/Stream.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/aura-logo-inverted.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/aura-logo.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/books.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/clusters.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/community.jpg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-144x144.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-192x192.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-36x36.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-48x48.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-72x72.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-96x96.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-114x114.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-120x120.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-144x144.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-152x152.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-180x180.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-57x57.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-60x60.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-72x72.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-76x76.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-precomposed.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/browserconfig.xml +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-16x16.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-32x32.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-96x96.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/favicon.ico +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/manifest.json +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-144x144.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-150x150.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-310x310.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-70x70.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/neo4j-browser-canary.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/device-icons/neo4j-browser.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/labeled_node.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/more_nodes.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/neo4j-favicon.ico +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/neo4j-logo-inverted.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/neo4j-logo.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/northwind/customer-orders.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/northwind/order-graph.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/northwind/product-category-supplier.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/northwind/product-graph.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/one_node.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/query-plan-operator-cost.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/query-plan-operator-details.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/query-plan-operator-rows.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/query-plan.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/rel-props.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/relationships.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/screen_code_frame.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/screen_cypher_warn.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/screen_editor.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/screen_sidebar.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/images/screen_stream.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/sort-8d6f482c21de572ceeb5ac93623e6c97.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/sort1-d2dc515571213fc0ca99b0341b88e413.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/assets/sort2-31050964e7eb2042325f7bcbba3d58ad.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/bolt-worker-dfa551eb0861cc080843.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/cypher-editor-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/editor-455af92e7e1dc39fdbc8060f6680ab32.worker.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/index.html +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/manifest.json +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/CoseBilkentLayout.worker-FEt6e_rV.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/HierarchicalLayout.worker-O6WHYssL.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/asciidoc.8O6YIVRy.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/auto-track.BlKugDvg.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/bash.CLAyaf9k.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/c.l4fEI10z.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/connect-icon-Br2hQy_e.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/csharp.ChqrQYCS.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/css-extras.Bi-4v17d.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/css.B1LHiudN.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/cypher-editor-auto-completions.gif +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/cypher-editor-inline-help.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/cypher-editor-linting.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/cypher-editor-syntax-highlighting.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/cypher-reference.gif +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/cypher.C3qdyJ5B.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/docker.CF7EZT1T.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/fira-code-400-regular-normal-BzypJxJk.woff2 +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/fira-code-500-medium-normal-CRWzqcWa.woff2 +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/fira-code-700-bold-normal-hUmNV4O0.woff2 +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/go.FsJyBHVG.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/graphql.BlTzkzAJ.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/history-quick-search.gif +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/index-CY0cZcsW.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/index-H7L207gH.css +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/index.BpRu7Js3.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/index.C74acnU7.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/index.CHatcJcU.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/index.D6ZMQedT.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/index.DPZla5MT.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/index.dzIUqrzq.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/index.leyiHvaQ.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/index.qJ6VE118.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/index.umd.B9yhfa5Y.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/is-plan-event-enabled.DeNtQvA5.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/java.BBXwBh9f.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/java.CQ1iJ0-D.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/javadoc.UnquSOIj.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/javascript.CYTqTa0W.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/json.BIkJg-Cj.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/jsx.Cy_hP1z6.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/kotlin.D_6l0VkM.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/lintWorker-QNEp56W3.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/logo-aura-white-DCfUnkCN.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/movie-model.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/movies-active-B2SzHIc1.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/neo4j-logo-active-CieUxroh.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/patterned-banner-background-C_nO-Yn8.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/php.BKb6XVba.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/plan-graph-worker-s17nF19Q.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/public-sans-300-light-normal-CG9e8kLa.woff2 +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/public-sans-400-regular-italic-D9FlViiB.woff2 +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/public-sans-400-regular-normal-D4F9yfFi.woff2 +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/public-sans-500-medium-normal-ChZcBEnJ.woff2 +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/public-sans-600-semi-bold-normal-Ck6TyfRI.woff2 +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/public-sans-700-bold-normal-CGjRhW-d.woff2 +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/python.tCcUC3U7.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/query-fundamentals-active-jvTJU1K2.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/query.snake-frame.DmvXOQIM.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/regex.C_VuIVtC.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/rust.CtSATZMt.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/saved-cypher.gif +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/scalable-graph-visualization.gif +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/sql.CfOAbw6n.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/syne-neo-500-medium-normal-A5GXmYUf.woff2 +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/table-visualization.gif +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/typescript.3Tbm37mD.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/xml-doc.h79Tu9Aw.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/assets/yaml.B-Jvd59g.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/favicons/android-chrome-192x192.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/favicons/apple-touch-icon.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/favicons/favicon-16x16.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/favicons/favicon-194x194.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/favicons/favicon-32x32.png +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/favicons/favicon.ico +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/favicons/safari-pinned-tab.svg +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/index.html +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/preview/manifest.json +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/ui-libs-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/browser_static/vendor-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/bulk_loader.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/capabilities.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/cli.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/cypher/__init__.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/cypher/algorithms/__init__.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/cypher/algorithms/paths.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/cypher/aql/__init__.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/cypher/aql/ast.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/cypher/aql/lexer.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/cypher/aql/parser.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/cypher/aql/translator.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/cypher/ast.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/cypher/lexer.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/cypher/parser.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/cypher/translator.py,cover +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/cypher_api.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/dbapi_utils.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/embed_selector.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/embedded.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/errors.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/fhir_bridge.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/fusion.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/gql/__init__.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/gql/constants.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/gql/engine.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/gql/pooling.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/gql/resolvers.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/gql/schema.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/index_config.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/index_protocol.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/models.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/operators.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/py.typed +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/result.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/schema.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/sdk.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/security.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/status.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/store_protocol.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/stores/__init__.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/stores/arno_bridge.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/stores/iris_sql_store.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/stores/lazy_kg.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/text_search.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/utils.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/vector_utils.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/sql/fhir_bridges.sql +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/sql/fraud_sample_data.sql +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/sql/globals_schema.sql +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/sql/graph_path_globals.sql +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/sql/graph_walk_tvf.sql +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/sql/migrations/000_base_schema_iris.sql +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/sql/migrations/001_add_nodepk_table.sql +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/sql/migrations/001_rollback_nodepk.sql +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/sql/migrations/002_add_fk_constraints.sql +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/sql/operators.sql +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/sql/operators_fixed.sql +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/sql/procedures/kg_PageRank.sql +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/sql/rdf_reifications.sql +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/sql/schema.sql +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/benchmark_parser.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/benchmarks/bench.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/benchmarks/bench_193_full.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/benchmarks/bench_utils.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/benchmarks/benchmark_neo4j.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/benchmarks/bfs_benchmark.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/benchmarks/establish_baseline.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/benchmarks/graph_gen.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/benchmarks/ic2_profile.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/benchmarks/iris_baseline_run.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/benchmarks/iris_os_run.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/benchmarks/ldbc_full_loader.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/benchmarks/load_neo4j.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/benchmarks/synthetic_baseline.csv +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/conftest.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/contract/__init__.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/contract/conftest.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/contract/test_cypher_api.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/contract/test_cypher_api_errors.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/contract/test_graphql_queries.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/contract/test_graphql_schema.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/contract/test_ppr_api.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/curl_suite.sh +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/__init__.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/conftest.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/fixtures/__init__.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/fixtures/centrality_graphs.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/fixtures/community_graphs.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_analytics_dispatch.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_approx_count_distinct.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_aql_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_arno_bfs_global.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_arno_bfs_unified.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_betweenness_neighborhood_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_betweenness_os_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_biomedical_demo.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_biomedical_ui.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_centrality_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_closeness_os_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_communities_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_communities_perf.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_cypher_coerce_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_cypher_gaps_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_cypher_sprints_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_cypher_vector_search.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_cypher_vl_path_bfs.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_edge_weights.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_eigenvector_os_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_embed_queue_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_embedded_wgproto_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_execution_contexts.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_execution_contexts_new.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_fhir_bridges_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_fraud_demo.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_fraud_ui.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_gql_autogen_startup.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_gql_cypher_passthrough.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_gql_node_queries.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_gql_semantic_search.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_gql_traversal.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_graph_kernels_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_hla_kg_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_ic13_shortest_path.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_ic3_exact_count.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_igraph_fastpath_parity.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_index_protocol.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_introspection_api.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_ivf_insert.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_large_output_chunked.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_lazy_kg_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_lazy_node_resolution.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_msbfs_closeness.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_multi_query_engine_platform.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_named_paths_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_nkg_index_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_objectscript_split_resolution.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_operator_wiring_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_pattern_comprehension_reduce.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_plaid.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_plaid_search_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_ppr_cls_fast_path.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_ppr_guided_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_procedure_installation.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_reification_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_schema_procedures_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_sdk_ergonomics_178_180_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_store_injection_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_streaming_bfs.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_stress_api.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_stress_ingest.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_stress_multi_context.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_stress_search.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_stress_setup.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_stress_traversal.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_subgraph_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_subquery_call_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_temporal_store_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_unified_index_api.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_untested_methods.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/e2e/test_vecindex_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/__init__.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/conftest.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/gql/__init__.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/gql/test_graphql_mutations.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/gql/test_graphql_nested_queries.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/gql/test_graphql_queries.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/gql/test_graphql_vector_search.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_196_bug_fixes.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_admin_introspection.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_algorithm_branches.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_algorithms_deep_coverage.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_algorithms_error_paths.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_algorithms_integration.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_algorithms_new_paths.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_api_completeness.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_arno_bridge_mock_paths.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_arno_bridge_paths.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_arno_store_layer.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_bidirectional_ppr.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_bulk_load_session.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_bulk_loader_live.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_cls_layer.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_coverage_final_push.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_coverage_push_final.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_cypher_advanced.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_cypher_api_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_cypher_api_exception_paths.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_cypher_enhancements.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_cypher_multi_type.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_cypher_rd.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_cypher_rel_vars.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_cypher_single_type.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_cypher_untyped.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_cypher_vector_search.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_diabolical_qa.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_doc_claims.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_embed_queue_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_embeddings_api.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_embeddings_integration.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_embeddings_paths.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_engine_misc_paths.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_engine_utils_paths.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_fastapi_graphql.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_fhir_bridges_integration.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_fhir_event_sidecar.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_fusion_dbapi_bulk.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_gql_resolvers_live.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_index_consistency_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_lazykg_algorithms.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_lazykg_fallback_forced.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_named_paths_integration.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_nodepk_advanced_benchmarks.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_nodepk_constraints.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_nodepk_graph_analytics.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_nodepk_migration.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_nodepk_performance.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_nodepk_production_scale.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_nodes_edges_and_algo_paths.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_nodes_edges_deep.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_objectscript_classes.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_pagerank_sql_optimization.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_query_deep.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_query_engine_branches.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_query_engine_special.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_query_fastpaths.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_query_paths_deep.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_query_special_patterns.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_rdf_semantic_layer_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_reification_integration.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_remaining_paths.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_schema_and_engine_procs.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_schema_deep.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_schema_migration.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_snapshot_deep.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_snapshot_import_export.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_snapshot_paths.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_sql_parameterization.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_sql_store_direct.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_sql_store_paths.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_store_algorithms.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_store_bfs_deep.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_store_exception_paths.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_store_write_paths.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_stored_procedure_install.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_subquery_call_integration.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_vector_advanced_paths.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_vector_engine_deep.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_vector_index_paths.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_vector_index_paths2.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_vector_optimizer_live.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/integration/test_vector_paths.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/perf/__init__.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/perf/test_betweenness_vs_gds.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/perf/test_head_to_head.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/perf/test_leiden_four_way.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/performance/conftest.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/performance/scale_benchmark.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/performance/test_ppr_stress.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/performance/test_stress_v1_5.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/python/run_all_tests.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/python/test_iris_rest_api.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/python/test_networkx_loader.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/python/test_performance_benchmarks.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/python/test_pyops_vector_conversion.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/python/test_python_operators.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/python/test_python_sdk.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/python/test_schema_validation.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/python/test_sql_queries.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/python/test_vector_functions.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/regression/__init__.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/regression/engine_api_baseline.json +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/regression/test_complexity.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/regression/test_engine_api.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/regression/test_module_size.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/regression/test_no_silent_swallow.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/test_schema_contract.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/cypher/__init__.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/cypher/test_lexer.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/cypher/test_lexer_advanced.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/cypher/test_parser.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/cypher/test_parser_advanced.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_193_bfs_nkg_fast_path.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_194_readme.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_admin_remaining.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_admin_unit.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_algorithm_warning_paths.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_algorithms_extended_unit.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_algorithms_large_graph_warn.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_algorithms_unit.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_api_security.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_aql_lexer.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_aql_parser.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_aql_translator.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_aql_translator_extra.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_arno_bridge.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_batch_mutations.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_betweenness_os_unit.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_bfs_arno.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_bm25_index.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_bolt_relationship_encoding.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_bolt_server.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_bulk_load_session.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_bulk_loader_coverage.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_bulk_loader_unit.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_centrality_translator.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_centrality_unit.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_cli.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_closeness_os_unit.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_cls_deployment.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_communities_translator.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_communities_unit.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_concept_first_status.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_coverage_boost.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_cypher_api_admin.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_cypher_api_coverage.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_cypher_api_extra.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_cypher_benchmark.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_cypher_benchmark_scale.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_cypher_case_when.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_cypher_e2e_new_features.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_cypher_functions.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_cypher_parser.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_cypher_posos_bugs.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_cypher_procedures.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_cypher_translator.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_cypher_union_exists.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_cypher_var_length.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_cypher_vector_search.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_dbapi_utils_unit.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_drift_detector.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_edge_embeddings.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_edgeprop_ndjson.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_embed_nodes_params.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_embed_queue_unit.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_embed_selector.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_embed_selector_unit.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_embedded.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_embedded_wgproto.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_embeddings_remaining.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_embeddings_unit.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_engine_deep.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_engine_dimension_fix.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_engine_embeddings.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_engine_mocked.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_engine_status.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_engine_unit.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_error_model.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_fhir_bridge.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_fhir_bridges.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_fhir_event_sidecar.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_gds_shims.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_get_nodes.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_gql_coverage.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_gql_edge_cases.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_gql_resolver_bodies.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_graph_kernels.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_graphql_dataloader.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_index_config.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_index_handle.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_index_protocol.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_ingest_formats.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_introspection_api.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_ivf_index.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_ivgresult.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_khop_dispatch.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_lazy_kg.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_module_coverage.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_named_graphs.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_named_paths.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_nodes_edges_unit.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_operators_coverage.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_operators_wiring.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_parse_cache.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_plaid_search.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_ppr_guided_subgraph.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_predicate_order.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_prov_export.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_query_extra_unit.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_query_fastpath_unit.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_query_unit.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_rdf_coverage_boost.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_rdf_export.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_reification.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_retrieve_and_vector_distance.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_schema_engine_unit.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_schema_init.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_schema_procedures.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_schema_remaining.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_schema_unit.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_sdk.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_sdk_async.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_sdk_coverage.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_shacl_validation.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_shortest_path.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_snapshot.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_snapshot_restore_unit.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_snapshot_unit.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_sql_splitter.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_sql_store_unit.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_sql_table_bridge.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_store_protocol.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_structural_guard.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_structural_guard_e2e.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_subgraph.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_subquery_call.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_supporting_modules.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_sync_model.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_temporal_cypher.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_temporal_edges.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_temporal_unit.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_translator_coverage.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_translator_deep_coverage.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_translator_extended.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_translator_gaps.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_unified_edge_store.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_utilities_final.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_utils_coverage.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_validation.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_vector_search_routing.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_vector_unit.py +0 -0
- {iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/tests/unit/test_weighted_shortest_path.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: iris-vector-graph
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.3
|
|
4
4
|
Summary: Transactional Graph + Vector retrieval system for InterSystems IRIS with hybrid search, openCypher, and GraphQL APIs
|
|
5
5
|
Project-URL: Homepage, https://github.com/intersystems-community/iris-vector-graph
|
|
6
6
|
Project-URL: Documentation, https://github.com/intersystems-community/iris-vector-graph/tree/main/docs
|
{iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/iris_vector_graph/_engine/nodes_edges.py
RENAMED
|
@@ -459,7 +459,11 @@ class NodesEdgesMixin:
|
|
|
459
459
|
graph: Optional named graph identifier.
|
|
460
460
|
|
|
461
461
|
Returns:
|
|
462
|
-
True if
|
|
462
|
+
True if a NEW edge was created. False if the edge already existed
|
|
463
|
+
(UNIQUE violation, swallowed safely) OR on error. The duplicate case is
|
|
464
|
+
safe and never raises — but it is NOT distinguishable from an error by the
|
|
465
|
+
return value, so callers that re-create edges defensively should call
|
|
466
|
+
create_edge unconditionally and not gate success on the return value.
|
|
463
467
|
"""
|
|
464
468
|
EdgeInput(source_id=source_id, predicate=predicate, target_id=target_id)
|
|
465
469
|
cursor = self.conn.cursor()
|
|
@@ -355,8 +355,11 @@ class QueryMixin:
|
|
|
355
355
|
max_hops = vl0.get("max_hops", 5)
|
|
356
356
|
direction = vl0.get("direction", "out")
|
|
357
357
|
def _extract_limit(s: str) -> int:
|
|
358
|
-
# IRIS SQL uses FETCH FIRST N ROWS ONLY;
|
|
358
|
+
# IRIS SQL uses FETCH FIRST N ROWS ONLY; the build-106 %qaqpre workaround
|
|
359
|
+
# emits SELECT TOP N instead; fall back to LIMIT N.
|
|
359
360
|
m = _re.search(r"FETCH\s+FIRST\s+(\d+)\s+ROWS\s+ONLY", s, _re.IGNORECASE)
|
|
361
|
+
if not m:
|
|
362
|
+
m = _re.search(r"\bSELECT\s+(?:DISTINCT\s+)?TOP\s+(\d+)\b", s, _re.IGNORECASE)
|
|
360
363
|
if not m:
|
|
361
364
|
m = _re.search(r"\bLIMIT\s+(\d+)", s, _re.IGNORECASE)
|
|
362
365
|
return int(m.group(1)) if m else 0
|
|
@@ -563,8 +566,11 @@ class QueryMixin:
|
|
|
563
566
|
import re as _re
|
|
564
567
|
sql_str = sql_query.sql if isinstance(sql_query.sql, str) else (sql_query.sql[0] if sql_query.sql else "")
|
|
565
568
|
if sql_query.sql:
|
|
566
|
-
# IRIS SQL uses "FETCH FIRST N ROWS ONLY"
|
|
569
|
+
# IRIS SQL uses "FETCH FIRST N ROWS ONLY"; the build-106 %qaqpre workaround
|
|
570
|
+
# emits SELECT TOP N instead; fall back to LIMIT N.
|
|
567
571
|
m = _re.search(r"FETCH\s+FIRST\s+(\d+)\s+ROWS\s+ONLY", sql_str, _re.IGNORECASE)
|
|
572
|
+
if not m:
|
|
573
|
+
m = _re.search(r"\bSELECT\s+(?:DISTINCT\s+)?TOP\s+(\d+)\b", sql_str, _re.IGNORECASE)
|
|
568
574
|
if not m:
|
|
569
575
|
m = _re.search(r"\bLIMIT\s+(\d+)", sql_str, _re.IGNORECASE)
|
|
570
576
|
if m:
|
|
@@ -1044,9 +1044,14 @@ def _maybe_split_deep_joins(sql: str, params: list, context) -> str:
|
|
|
1044
1044
|
if join_count <= JOIN_THRESHOLD:
|
|
1045
1045
|
return sql
|
|
1046
1046
|
import re as _re
|
|
1047
|
-
|
|
1047
|
+
# Capture an optional `TOP n` in the prefix (the FETCH-FIRST-+-JOIN workaround emits
|
|
1048
|
+
# SELECT [DISTINCT] TOP n) so it stays attached to the SELECT keyword and is not
|
|
1049
|
+
# swept into the column list.
|
|
1050
|
+
select_m = _re.match(r'(SELECT\s+(?:DISTINCT\s+)?(?:TOP\s+\d+\s+)?)(.*?)(\nFROM\s)', sql, _re.DOTALL)
|
|
1048
1051
|
if not select_m:
|
|
1049
1052
|
return sql
|
|
1053
|
+
# select_prefix carries any DISTINCT and TOP n; both propagate to the outer wrapper
|
|
1054
|
+
# (line below), so the CTE wrap preserves the row cap from the TOP workaround.
|
|
1050
1055
|
select_prefix = select_m.group(1)
|
|
1051
1056
|
select_cols = select_m.group(2).strip()
|
|
1052
1057
|
has_agg = bool(_re.search(r'\b(AVG|SUM|COUNT|MIN|MAX|STDEV|JSON_ARRAYAGG)\s*\(', select_cols))
|
|
@@ -1543,6 +1548,27 @@ def apply_pagination(
|
|
|
1543
1548
|
if limit is not None or skip is not None:
|
|
1544
1549
|
if "\nFROM " not in sql and "FROM " not in sql.split("\n")[0]:
|
|
1545
1550
|
sql = sql.rstrip() + "\nFROM (SELECT 1) __dual"
|
|
1551
|
+
# Build-106 workaround: IRIS 2026.3.0AI build 106 SIGSEGVs in %qaqpre when a
|
|
1552
|
+
# multi-table JOIN is combined with `FETCH FIRST n ROWS ONLY` on VARCHAR-keyed
|
|
1553
|
+
# tables (the ivg schema). `SELECT TOP n` does NOT crash. When the engine has
|
|
1554
|
+
# detected the bug (engine._fetch_first_unsafe, set by a connect-time probe) and
|
|
1555
|
+
# there is a LIMIT with NO SKIP (TOP cannot express OFFSET), emit TOP instead.
|
|
1556
|
+
engine = getattr(context, "_engine", None)
|
|
1557
|
+
fetch_first_unsafe = bool(getattr(engine, "_fetch_first_unsafe", False))
|
|
1558
|
+
if (
|
|
1559
|
+
limit is not None
|
|
1560
|
+
and skip is None
|
|
1561
|
+
and fetch_first_unsafe
|
|
1562
|
+
and sql.lstrip().upper().startswith("SELECT ")
|
|
1563
|
+
and " TOP " not in sql.split("\n", 1)[0].upper()
|
|
1564
|
+
):
|
|
1565
|
+
# Inject `TOP n` right after the leading SELECT (and after DISTINCT if present).
|
|
1566
|
+
head, sep, rest = sql.partition("SELECT ")
|
|
1567
|
+
if rest[:9].upper().startswith("DISTINCT "):
|
|
1568
|
+
rest = "DISTINCT " + f"TOP {limit} " + rest[9:]
|
|
1569
|
+
else:
|
|
1570
|
+
rest = f"TOP {limit} " + rest
|
|
1571
|
+
return head + sep + rest
|
|
1546
1572
|
if limit is not None:
|
|
1547
1573
|
sql += f"\nFETCH FIRST {limit} ROWS ONLY"
|
|
1548
1574
|
if skip is not None:
|
|
@@ -143,6 +143,7 @@ class IRISGraphEngine(RdfExportMixin, ShaclMixin, ProvMixin, TemporalMixin, Snap
|
|
|
143
143
|
self._rel_mapping_cache: Optional[Dict[tuple, dict]] = None
|
|
144
144
|
self._connection_params: Optional[Dict[str, Any]] = None
|
|
145
145
|
self._nkg_dirty: bool = False
|
|
146
|
+
self._fetch_first_unsafe_cached: Optional[bool] = None # build-106 %qaqpre probe (lazy)
|
|
146
147
|
self._native_conn = None # dedicated connection for iris.createIRIS — never used for cursor DDL
|
|
147
148
|
self._index_registry: Dict[str, str] = self._build_index_registry()
|
|
148
149
|
self._pending_index_config: Dict[str, Any] = {}
|
|
@@ -209,6 +210,69 @@ class IRISGraphEngine(RdfExportMixin, ShaclMixin, ProvMixin, TemporalMixin, Snap
|
|
|
209
210
|
)
|
|
210
211
|
return cls(conn, embedding_dimension=embedding_dimension, **kwargs)
|
|
211
212
|
|
|
213
|
+
@property
|
|
214
|
+
def _fetch_first_unsafe(self) -> bool:
|
|
215
|
+
"""True when this IRIS build SIGSEGVs in %qaqpre on a multi-table JOIN combined
|
|
216
|
+
with `FETCH FIRST n ROWS ONLY` (observed on irishealth 2026.3.0AI build 106).
|
|
217
|
+
|
|
218
|
+
Detected once and cached. Primary signal is a behavioral probe run in a
|
|
219
|
+
SUBPROCESS (the crash is a hard SIGSEGV — uncatchable in-process), gated on
|
|
220
|
+
having stored connection params. Falls back to a $ZVERSION build check when a
|
|
221
|
+
subprocess probe is not possible (e.g. embedded context). Defaults to safe
|
|
222
|
+
(False) if neither can determine — `TOP` is only a workaround, never required.
|
|
223
|
+
"""
|
|
224
|
+
if self._fetch_first_unsafe_cached is None:
|
|
225
|
+
self._fetch_first_unsafe_cached = self._detect_fetch_first_unsafe()
|
|
226
|
+
return self._fetch_first_unsafe_cached
|
|
227
|
+
|
|
228
|
+
def _detect_fetch_first_unsafe(self) -> bool:
|
|
229
|
+
# Subprocess behavioral probe (most reliable): run the crashing shape against a
|
|
230
|
+
# VARCHAR-keyed temp table; SIGSEGV (rc -11 / 139) => unsafe.
|
|
231
|
+
if self._connection_params:
|
|
232
|
+
try:
|
|
233
|
+
import subprocess, sys, json
|
|
234
|
+
cp = json.dumps(self._connection_params)
|
|
235
|
+
script = (
|
|
236
|
+
"import iris, json, sys\n"
|
|
237
|
+
f"cp = json.loads(r'''{cp}''')\n"
|
|
238
|
+
"c = iris.dbapi.connect(**cp); cur = c.cursor()\n"
|
|
239
|
+
"for d in ['CREATE TABLE ivg_ff_probe_a (id VARCHAR(64))',"
|
|
240
|
+
"'CREATE TABLE ivg_ff_probe_b (sid VARCHAR(64))']:\n"
|
|
241
|
+
" try: cur.execute(d)\n"
|
|
242
|
+
" except Exception: pass\n"
|
|
243
|
+
"cur.execute('SELECT a.id FROM ivg_ff_probe_a a JOIN ivg_ff_probe_b b "
|
|
244
|
+
"ON b.sid=a.id FETCH FIRST 1 ROWS ONLY'); cur.fetchall()\n"
|
|
245
|
+
"print('OK')\n"
|
|
246
|
+
)
|
|
247
|
+
r = subprocess.run([sys.executable, "-c", script],
|
|
248
|
+
capture_output=True, text=True, timeout=60)
|
|
249
|
+
if r.returncode in (-11, 139, -6, 134):
|
|
250
|
+
logger.warning(
|
|
251
|
+
"IRIS build SIGSEGVs in %%qaqpre on FETCH FIRST + multi-table JOIN "
|
|
252
|
+
"(observed on 2026.2.0AI and 2026.3.0AI AI builds); ivg will emit "
|
|
253
|
+
"TOP for LIMIT-only queries to avoid the crash."
|
|
254
|
+
)
|
|
255
|
+
return True
|
|
256
|
+
return False
|
|
257
|
+
except Exception as e:
|
|
258
|
+
logger.debug("fetch-first probe failed, falling back to version check: %s", e)
|
|
259
|
+
# Fallback: $ZVERSION check (no crash risk) when a subprocess probe is not
|
|
260
|
+
# possible (e.g. embedded context with no stored connection params). The bug
|
|
261
|
+
# has been observed on the IRIS "AI" build line (2026.2.0AI build 161 and
|
|
262
|
+
# 2026.3.0AI build 106); treat AI builds as unsafe conservatively. Non-AI
|
|
263
|
+
# builds are assumed safe (FETCH FIRST retained). If a future build fixes it,
|
|
264
|
+
# this fallback can be narrowed — the subprocess probe remains authoritative.
|
|
265
|
+
try:
|
|
266
|
+
cur = self.conn.cursor()
|
|
267
|
+
cur.execute("SELECT $ZVERSION")
|
|
268
|
+
ver = str(cur.fetchone()[0])
|
|
269
|
+
import re as _re
|
|
270
|
+
if _re.search(r"20\d\d\.\d+\.\d+AI", ver):
|
|
271
|
+
return True
|
|
272
|
+
except Exception:
|
|
273
|
+
pass
|
|
274
|
+
return False
|
|
275
|
+
|
|
212
276
|
def _reconnect_if_stale(self) -> None:
|
|
213
277
|
try:
|
|
214
278
|
cur = self.conn.cursor()
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "iris-vector-graph"
|
|
7
|
-
version = "2.4.
|
|
7
|
+
version = "2.4.3"
|
|
8
8
|
description = "Transactional Graph + Vector retrieval system for InterSystems IRIS with hybrid search, openCypher, and GraphQL APIs"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -20,22 +20,22 @@ pytest -m performance
|
|
|
20
20
|
|
|
21
21
|
The `iris_test_container` fixture (session scope) manages the container lifecycle:
|
|
22
22
|
|
|
23
|
-
1.
|
|
24
|
-
2.
|
|
25
|
-
3.
|
|
26
|
-
4.
|
|
27
|
-
5.
|
|
28
|
-
6.
|
|
29
|
-
7.
|
|
23
|
+
1. **Attach or Start**: If a container named `iris-vector-graph-main` is already running, attaches to it via `IRISContainer.attach()`. Otherwise starts a fresh container.
|
|
24
|
+
2. **Ready**: Waits for the IRIS SuperServer to be ready (180s timeout).
|
|
25
|
+
3. **Initialize**: Automatically creates the `Graph_KG` schema, tables, views, and loads ObjectScript classes.
|
|
26
|
+
4. **Security**: Creates a dedicated **`test`** user with password **`test`** and ensures password expiry is disabled.
|
|
27
|
+
5. **Verify**: Blocks until a real `test`/`test` connection succeeds — no test module ever races on a not-yet-ready container.
|
|
28
|
+
6. **Execute**: Runs the requested tests.
|
|
29
|
+
7. **Tear down**: Stops containers that were started by the fixture; leaves pre-existing containers running.
|
|
30
30
|
|
|
31
31
|
## Key Fixtures
|
|
32
32
|
|
|
33
|
-
| Fixture
|
|
34
|
-
|
|
35
|
-
| `iris_test_container` | Session
|
|
36
|
-
| `iris_connection`
|
|
37
|
-
| `iris_cursor`
|
|
38
|
-
| `clean_test_data`
|
|
33
|
+
| Fixture | Scope | Description |
|
|
34
|
+
|---------|-------|-------------|
|
|
35
|
+
| `iris_test_container` | Session | Managed IRIS container for the entire test session. |
|
|
36
|
+
| `iris_connection` | Module | Reusable DBAPI connection from the managed container. |
|
|
37
|
+
| `iris_cursor` | Function | Fresh cursor with automatic rollback isolation. |
|
|
38
|
+
| `clean_test_data` | Function | Provides a unique prefix (e.g., `TEST_abc123:`) and auto-deletes matching data after the test. |
|
|
39
39
|
|
|
40
40
|
## Writing New Tests
|
|
41
41
|
|
|
@@ -49,64 +49,55 @@ def test_my_feature(iris_connection, clean_test_data):
|
|
|
49
49
|
"""Test with managed container and auto-cleanup."""
|
|
50
50
|
prefix = clean_test_data
|
|
51
51
|
cursor = iris_connection.cursor()
|
|
52
|
-
|
|
52
|
+
|
|
53
53
|
# Create test data using the unique prefix
|
|
54
54
|
cursor.execute(
|
|
55
55
|
"INSERT INTO nodes (node_id) VALUES (?)",
|
|
56
56
|
(f"{prefix}node1",)
|
|
57
57
|
)
|
|
58
58
|
iris_connection.commit()
|
|
59
|
-
|
|
59
|
+
|
|
60
60
|
# Assertions
|
|
61
61
|
cursor.execute("SELECT COUNT(*) FROM nodes WHERE node_id LIKE ?", (f"{prefix}%",))
|
|
62
62
|
assert cursor.fetchone()[0] == 1
|
|
63
|
-
|
|
63
|
+
|
|
64
64
|
# No need to manual cleanup - clean_test_data fixture handles it!
|
|
65
65
|
```
|
|
66
66
|
|
|
67
67
|
## Configuration
|
|
68
68
|
|
|
69
|
-
| Environment Variable | Default | Description
|
|
70
|
-
|
|
71
|
-
| `IRIS_TEST_TIMEOUT`
|
|
69
|
+
| Environment Variable | Default | Description |
|
|
70
|
+
|----------------------|---------|-------------|
|
|
71
|
+
| `IRIS_TEST_TIMEOUT` | `180` | Startup timeout in seconds. |
|
|
72
72
|
|
|
73
73
|
## Troubleshooting
|
|
74
74
|
|
|
75
75
|
### "Password change required" or "Access Denied"
|
|
76
|
-
|
|
77
76
|
IRIS Community Edition often enforces a password change on first login. The test infrastructure automatically handles this by:
|
|
78
|
-
|
|
79
77
|
1. Creating a dedicated `test`/`test` user with `%ALL` roles.
|
|
80
78
|
2. Forcefully clearing `ChangePassword` and `PasswordNeverExpires` flags via ObjectScript.
|
|
81
79
|
|
|
82
80
|
If you encounter this when connecting manually:
|
|
83
|
-
|
|
84
81
|
- Use the **`test`** user instead of `_SYSTEM`.
|
|
85
82
|
- Or reset the `_SYSTEM` password: `Set usr = ##class(Security.Users).%OpenId("_SYSTEM"), usr.ChangePassword=0, usr.PasswordNeverExpires=1 Do usr.%Save()`
|
|
86
83
|
|
|
87
84
|
### Schema (`Graph_KG`)
|
|
88
|
-
|
|
89
85
|
All tables are created in the **`Graph_KG`** schema with views mirrored into `SQLUser` for unqualified access. Use fully-qualified names in tests (`Graph_KG.nodes`) or the unqualified view aliases (`nodes`, `rdf_edges`, etc.).
|
|
90
86
|
|
|
91
87
|
### "AttributeError: module 'iris' has no attribute 'connect'"
|
|
92
|
-
|
|
93
88
|
This used to happen because of a naming conflict with the `iris/` directory. That directory has been renamed to `iris_src/`, so `import iris` should now work correctly.
|
|
94
89
|
|
|
95
90
|
The `iris_connection` fixture handles connection management for you.
|
|
96
91
|
|
|
97
92
|
### Resetting the Environment
|
|
98
|
-
|
|
99
93
|
If the test container gets into a bad state:
|
|
100
|
-
|
|
101
94
|
```bash
|
|
102
95
|
docker rm -f iris-vector-graph-main
|
|
103
96
|
pytest
|
|
104
97
|
```
|
|
105
98
|
|
|
106
99
|
### Production-Scale Benchmarks
|
|
107
|
-
|
|
108
100
|
The `test_nodepk_production_scale` tests create 100K nodes / 500K edges and are **skipped by default** to avoid multi-minute runtimes and segfaults under memory pressure. To run them:
|
|
109
|
-
|
|
110
101
|
```bash
|
|
111
102
|
RUN_PRODUCTION_SCALE=1 pytest tests/integration/test_nodepk_production_scale.py
|
|
112
103
|
```
|
|
@@ -114,7 +105,6 @@ RUN_PRODUCTION_SCALE=1 pytest tests/integration/test_nodepk_production_scale.py
|
|
|
114
105
|
## Constitutional Compliance
|
|
115
106
|
|
|
116
107
|
This infrastructure enforces **Principle II: Test-First with Live Database**:
|
|
117
|
-
|
|
118
108
|
- ✅ All `@pytest.mark.requires_database` tests hit real IRIS.
|
|
119
109
|
- ✅ No mocked database for integration tests.
|
|
120
110
|
- ✅ Schema automatically initialized.
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# IVG Benchmark Suite (Spec 093)
|
|
2
2
|
|
|
3
3
|
Repeatable benchmark harness measuring IVG traversal performance:
|
|
4
|
-
|
|
5
4
|
- `ivg-os`: ObjectScript `BFSFastJson` over `^KG` globals
|
|
6
5
|
- `ivg-arno`: Rust `NKGAccel.BFSJson` over `^NKG` integer adjacency (enterprise IRIS only)
|
|
7
6
|
|
|
@@ -42,11 +41,9 @@ Arno (Rust BFS via `NKGAccel.BFSJson`) requires enterprise IRIS with `libarno_ca
|
|
|
42
41
|
deployed to the IRIS manager directory. Community IRIS reports `arno BFS not available`.
|
|
43
42
|
|
|
44
43
|
To run with arno:
|
|
45
|
-
|
|
46
44
|
```bash
|
|
47
45
|
IRIS_PORT=64780 conda run -n py312 python bench.py --datasets M --skip-load
|
|
48
46
|
```
|
|
49
|
-
|
|
50
47
|
(assumes IVG classes and graph data already loaded in enterprise container)
|
|
51
48
|
|
|
52
49
|
## Output
|
|
@@ -57,14 +54,14 @@ JSON result files are gitignored.
|
|
|
57
54
|
|
|
58
55
|
## Query catalog
|
|
59
56
|
|
|
60
|
-
| ID
|
|
61
|
-
|
|
62
|
-
| Q1
|
|
63
|
-
| Q2
|
|
64
|
-
| Q3
|
|
65
|
-
| Q4
|
|
66
|
-
| Q5
|
|
67
|
-
| Q6
|
|
57
|
+
| ID | Pattern | Engine path |
|
|
58
|
+
|----|---------|-------------|
|
|
59
|
+
| Q1 | 1-hop count (SQL MATCH) | IRISGraphEngine.execute_cypher |
|
|
60
|
+
| Q2 | 2-hop BFS, DISTINCT nodes | BFSFastJson / NKGAccel.BFSJson |
|
|
61
|
+
| Q3 | 3-hop BFS | same |
|
|
62
|
+
| Q4 | 4-hop BFS | same (MAXSTRING risk on M+) |
|
|
63
|
+
| Q5 | shortestPath (unweighted BFS) | ShortestPathJson |
|
|
64
|
+
| Q6 | weighted shortestPath (Dijkstra) | ivg.shortestPath.weighted |
|
|
68
65
|
|
|
69
66
|
## Known limitations
|
|
70
67
|
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"""Subprocess-isolated guard against the intersystems-iris driver SIGSEGV
|
|
2
|
+
(DP-451209 family) on the multi-JOIN parameterized SELECT shape that ivg's Cypher
|
|
3
|
+
translator generates.
|
|
4
|
+
|
|
5
|
+
WHY A SUBPROCESS: the failure mode is a NATIVE SIGSEGV in the driver's
|
|
6
|
+
cursor.execute — it kills the Python process with NO exception and NO pytest FAIL
|
|
7
|
+
(it reports as "0% coverage / process died"). A normal test cannot assert against a
|
|
8
|
+
crash that erases the test process. So we run the suspect query in a CHILD process and
|
|
9
|
+
assert the child did not die with signal 11 (exit code -11 / 139). If the driver
|
|
10
|
+
regresses to crashing, THIS test fails visibly instead of silently killing the suite.
|
|
11
|
+
|
|
12
|
+
Reference: productivity-framework/specs/058-memory-recall-bridge/IRISPYTHON_SEGFAULT_REPORT.md
|
|
13
|
+
(report filed against intersystems-iris 5.3.3; ivg generates valid SQL — the driver
|
|
14
|
+
crashes executing it). ivg owns the SQL generator, so it owns this regression guard.
|
|
15
|
+
|
|
16
|
+
The crashing shape (translator.py): 2 LEFT JOINs to rdf_props on different "key" params
|
|
17
|
+
(L3167/3180/3221) + an EXISTS structural guard (L294) + a param-concat LIKE (L2758) +
|
|
18
|
+
FETCH FIRST, with multiple positional params.
|
|
19
|
+
|
|
20
|
+
SCOPE / KNOWN LIMITATION: the report's crash is SCALE-DEPENDENT — it reproduced against
|
|
21
|
+
~1.1M nodes / 3.1M edges, where the driver picks a particular plan. On the small fixture
|
|
22
|
+
data here the same shape does NOT crash (different plan), so these tests do NOT reproduce
|
|
23
|
+
the original bug. What they DO guard: that this exact query shape, through both the raw
|
|
24
|
+
driver and ivg's execute_cypher, never SIGSEGVs the host on representative data — i.e.
|
|
25
|
+
they catch a regression to "crashes even on small data," and they make the shape an
|
|
26
|
+
explicit, runnable artifact. A faithful repro needs a large dataset; gate that behind
|
|
27
|
+
IVG_SEGFAULT_SCALE_TEST=1 with a pre-loaded large graph (not run by default — too heavy).
|
|
28
|
+
"""
|
|
29
|
+
import os
|
|
30
|
+
import sys
|
|
31
|
+
import subprocess
|
|
32
|
+
import textwrap
|
|
33
|
+
import pytest
|
|
34
|
+
|
|
35
|
+
SKIP_IRIS_TESTS = os.environ.get("SKIP_IRIS_TESTS", "false").lower() == "true"
|
|
36
|
+
|
|
37
|
+
pytestmark = pytest.mark.skipif(SKIP_IRIS_TESTS, reason="SKIP_IRIS_TESTS=true")
|
|
38
|
+
|
|
39
|
+
# signal 11 (SIGSEGV) shows up as returncode -11 (POSIX) or 139 (shell convention).
|
|
40
|
+
SEGV_RETURNCODES = {-11, 139}
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def _conn_params(conn):
|
|
44
|
+
"""Pull host/port/namespace/creds off the live test connection for the subprocess."""
|
|
45
|
+
return {
|
|
46
|
+
"hostname": getattr(conn, "hostname", "localhost"),
|
|
47
|
+
"port": int(getattr(conn, "port", os.environ.get("IVG_PORT", "21972"))),
|
|
48
|
+
"namespace": getattr(conn, "namespace", "USER"),
|
|
49
|
+
"username": getattr(conn, "username", "_SYSTEM"),
|
|
50
|
+
"password": getattr(conn, "password", "SYS"),
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def _run_in_subprocess(body: str, params: dict) -> subprocess.CompletedProcess:
|
|
55
|
+
script = textwrap.dedent(f"""
|
|
56
|
+
import faulthandler, sys
|
|
57
|
+
faulthandler.enable()
|
|
58
|
+
import iris # the wrapper's unified iris (base dep)
|
|
59
|
+
conn = iris.dbapi.connect(
|
|
60
|
+
hostname={params['hostname']!r}, port={params['port']},
|
|
61
|
+
namespace={params['namespace']!r},
|
|
62
|
+
username={params['username']!r}, password={params['password']!r},
|
|
63
|
+
)
|
|
64
|
+
{body}
|
|
65
|
+
print("SUBPROCESS_OK")
|
|
66
|
+
""")
|
|
67
|
+
return subprocess.run(
|
|
68
|
+
[sys.executable, "-c", script],
|
|
69
|
+
capture_output=True, text=True, timeout=120,
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
class TestDriverSegfaultGuard:
|
|
74
|
+
def test_raw_crash_shape_does_not_segfault(self, iris_connection):
|
|
75
|
+
"""The report's minimal raw-driver repro, run in a child process. We assert the
|
|
76
|
+
child does not die with SIGSEGV. (It may raise a clean SQL error or return rows —
|
|
77
|
+
both are acceptable; a SIGSEGV is not.)"""
|
|
78
|
+
params = _conn_params(iris_connection)
|
|
79
|
+
body = textwrap.dedent('''
|
|
80
|
+
cur = conn.cursor()
|
|
81
|
+
sql = (
|
|
82
|
+
"SELECT n0.node_id AS f_id, p4.val AS f_posted_at "
|
|
83
|
+
"FROM Graph_KG.nodes n0 "
|
|
84
|
+
"JOIN Graph_KG.rdf_edges e2 ON e2.s = n0.node_id AND e2.p = ? "
|
|
85
|
+
"JOIN Graph_KG.nodes n1 ON n1.node_id = e2.o_id "
|
|
86
|
+
"LEFT JOIN Graph_KG.rdf_props p3 ON p3.s = n0.node_id AND p3.\\"key\\" = ? "
|
|
87
|
+
"LEFT JOIN Graph_KG.rdf_props p4 ON p4.s = n0.node_id AND p4.\\"key\\" = ? "
|
|
88
|
+
"WHERE EXISTS (SELECT 1 FROM Graph_KG.rdf_props _sgn0 "
|
|
89
|
+
"WHERE _sgn0.s = n0.node_id AND _sgn0.\\"key\\" = 'title') "
|
|
90
|
+
"AND ((n0.node_id LIKE (? || '%') AND p3.val = ?) AND n1.node_id = ?) "
|
|
91
|
+
"FETCH FIRST 1 ROWS ONLY"
|
|
92
|
+
)
|
|
93
|
+
params = ['IN_PROJECT', 'title', 'posted_at', 'seg:', 'x', 'seg:target']
|
|
94
|
+
try:
|
|
95
|
+
cur.execute(sql, params)
|
|
96
|
+
cur.fetchall()
|
|
97
|
+
except Exception as e:
|
|
98
|
+
# A clean exception is fine — the driver bug is the CRASH, not an error.
|
|
99
|
+
print("SUBPROCESS_SQL_EXCEPTION:", type(e).__name__)
|
|
100
|
+
''')
|
|
101
|
+
result = _run_in_subprocess(body, params)
|
|
102
|
+
assert result.returncode not in SEGV_RETURNCODES, (
|
|
103
|
+
"intersystems-iris driver SIGSEGV on the multi-JOIN parameterized SELECT "
|
|
104
|
+
f"shape (DP-451209 family). returncode={result.returncode}\n"
|
|
105
|
+
f"stderr tail:\n{result.stderr[-800:]}"
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
def test_cypher_path_crash_shape_does_not_segfault(self, engine, iris_connection):
|
|
109
|
+
"""The CONSUMER path: a Cypher query through execute_cypher that ivg translates
|
|
110
|
+
to the crashing shape (LIKE-prefix on id + two property projections + a related
|
|
111
|
+
node). Built on real (small) fixture data. Asserts no host SIGSEGV."""
|
|
112
|
+
# Seed a tiny graph with the property/edge shape the query touches.
|
|
113
|
+
eng = engine
|
|
114
|
+
try:
|
|
115
|
+
eng.create_node("seg:a")
|
|
116
|
+
eng.create_node("seg:target")
|
|
117
|
+
eng.set_node_property("seg:a", "title", "hello")
|
|
118
|
+
eng.set_node_property("seg:a", "posted_at", "2026-06-27")
|
|
119
|
+
eng.create_edge("seg:a", "IN_PROJECT", "seg:target")
|
|
120
|
+
except Exception:
|
|
121
|
+
pass # best-effort seed; the point is the query shape, not the data
|
|
122
|
+
|
|
123
|
+
params = _conn_params(iris_connection)
|
|
124
|
+
body = textwrap.dedent('''
|
|
125
|
+
from iris_vector_graph.engine import IRISGraphEngine, set_schema_prefix
|
|
126
|
+
set_schema_prefix("Graph_KG")
|
|
127
|
+
eng = IRISGraphEngine(conn, embedding_dimension=384)
|
|
128
|
+
cypher = (
|
|
129
|
+
"MATCH (n)-[:IN_PROJECT]->(m) "
|
|
130
|
+
"WHERE n.node_id STARTS WITH 'seg:' AND n.title = 'hello' "
|
|
131
|
+
"AND m.node_id = 'seg:target' "
|
|
132
|
+
"RETURN n.node_id AS id, n.posted_at AS posted_at "
|
|
133
|
+
"LIMIT 1"
|
|
134
|
+
)
|
|
135
|
+
try:
|
|
136
|
+
res = eng.execute_cypher(cypher, read_only=True)
|
|
137
|
+
print("SUBPROCESS_CYPHER_ROWS:", len(getattr(res, 'rows', []) or []))
|
|
138
|
+
except Exception as e:
|
|
139
|
+
print("SUBPROCESS_CYPHER_EXCEPTION:", type(e).__name__)
|
|
140
|
+
''')
|
|
141
|
+
result = _run_in_subprocess(body, params)
|
|
142
|
+
assert result.returncode not in SEGV_RETURNCODES, (
|
|
143
|
+
"ivg execute_cypher -> generated SQL SIGSEGV'd the host process "
|
|
144
|
+
f"(driver DP-451209 family). returncode={result.returncode}\n"
|
|
145
|
+
f"stderr tail:\n{result.stderr[-800:]}"
|
|
146
|
+
)
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"""Translator tests for the FETCH FIRST + JOIN %qaqpre crash workaround (build-106).
|
|
2
|
+
|
|
3
|
+
ROOT CAUSE (proven on a live irishealth:2026.3.0AI.106.0 container): the DB-API driver
|
|
4
|
+
SIGSEGVs in %qaqpre when executing a query that combines a multi-table JOIN with
|
|
5
|
+
`FETCH FIRST n ROWS ONLY` on VARCHAR-keyed tables (the ivg schema). It is NOT the
|
|
6
|
+
INNER JOIN keyword (the original report's guess) — comma-join and LEFT OUTER JOIN crash
|
|
7
|
+
too. `SELECT TOP n` does NOT crash and is the fix.
|
|
8
|
+
|
|
9
|
+
The engine detects the bug at connect time (subprocess probe) and sets
|
|
10
|
+
`engine._fetch_first_unsafe`. When set, the translator emits `SELECT TOP n` instead of a
|
|
11
|
+
trailing `FETCH FIRST n ROWS ONLY` for LIMIT-only queries.
|
|
12
|
+
"""
|
|
13
|
+
import pytest
|
|
14
|
+
from iris_vector_graph.cypher.translator import translate_to_sql
|
|
15
|
+
from iris_vector_graph.cypher.parser import parse_query
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class _StubEngine:
|
|
19
|
+
"""Minimal engine carrying just the bug flag the translator reads."""
|
|
20
|
+
def __init__(self, fetch_first_unsafe):
|
|
21
|
+
self._fetch_first_unsafe = fetch_first_unsafe
|
|
22
|
+
def get_table_mapping(self, label):
|
|
23
|
+
return None
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def _sql(cypher, *, unsafe, params=None):
|
|
27
|
+
ast = parse_query(cypher)
|
|
28
|
+
res = translate_to_sql(ast, params or {}, engine=_StubEngine(unsafe))
|
|
29
|
+
return res if isinstance(res, str) else str(res)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class TestFetchFirstJoinWorkaround:
|
|
33
|
+
CYPHER = "MATCH (n)-[:R]->(m) RETURN n.node_id AS id LIMIT 5"
|
|
34
|
+
|
|
35
|
+
def test_unsafe_build_emits_top_not_fetch_first(self):
|
|
36
|
+
sql = _sql(self.CYPHER, unsafe=True)
|
|
37
|
+
assert "FETCH FIRST" not in sql, f"FETCH FIRST must not be emitted on unsafe build:\n{sql}"
|
|
38
|
+
assert "TOP 5" in sql, f"expected SELECT TOP 5:\n{sql}"
|
|
39
|
+
|
|
40
|
+
def test_safe_build_keeps_fetch_first(self):
|
|
41
|
+
sql = _sql(self.CYPHER, unsafe=False)
|
|
42
|
+
# On safe builds the existing FETCH FIRST behavior is preserved.
|
|
43
|
+
assert "FETCH FIRST 5 ROWS ONLY" in sql, f"expected FETCH FIRST on safe build:\n{sql}"
|
|
44
|
+
|
|
45
|
+
def test_unsafe_limit_only_simple_match(self):
|
|
46
|
+
sql = _sql("MATCH (n) RETURN n.node_id LIMIT 3", unsafe=True)
|
|
47
|
+
assert "FETCH FIRST" not in sql
|
|
48
|
+
assert "TOP 3" in sql
|
|
49
|
+
|
|
50
|
+
def test_unsafe_skip_plus_limit_keeps_fetch_first(self):
|
|
51
|
+
# TOP cannot express OFFSET; SKIP+LIMIT must retain FETCH FIRST + OFFSET
|
|
52
|
+
# (rare; residual build-106 risk is documented in apply_pagination).
|
|
53
|
+
sql = _sql("MATCH (n) RETURN n.node_id SKIP 2 LIMIT 4", unsafe=True)
|
|
54
|
+
assert "OFFSET 2" in sql
|
|
55
|
+
assert "FETCH FIRST 4 ROWS ONLY" in sql
|
|
56
|
+
assert "TOP 4" not in sql
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/examples/domains/biomedical_legacy/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_vector_graph-2.4.1 → iris_vector_graph-2.4.3}/examples/hybrid_vector_graph_query.cypher
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|