Skip to content

Conversation

@transistive
Copy link
Collaborator

No description provided.

…PHP Client and Testkit backend. This includes full request/response handling, driver integration, and a critical fix for routing table validation.
@p123-stack
Copy link
Collaborator

p123-stack commented Nov 18, 2025

Hello @transistive 👋

I've prepared a detailed overview of all the architectural and functional changes included in this PR.

Driver-Level executeQuery() Implementation

  • Implemented complete executeQuery() method across the Neo4j PHP Client following the driver API specification.

  • Added executeQuery() method in BoltDriver, Neo4jDriver, and DriverInterface.

  • Supports comprehensive execution configuration including database selection, read/write routing, user impersonation, transaction metadata, and timeout settings.

  • Executes queries in auto-commit transactions with built-in retry logic via readTransaction() or writeTransaction().

  • Automatically manages session lifecycle with proper cleanup in finally block ensuring resource safety.

  • Integrated full driver → testkit backend request handler chain with fallback support for legacy drivers.

GetServerInfo End-to-End Implementation

  • Implemented complete GetServerInfo flow across the Neo4j PHP Client and Testkit backend.

  • Added getServerInfo() method in BoltDriver, Neo4jDriver, and DriverInterface.

  • Integrated full driver → connection → backend response chain for server metadata retrieval.

  • Extracts server metadata (address, protocol, agent) from live connections for accurate reporting.

  • Neo4jDriver defaults to READ access mode for routing to follower nodes when fetching server info.

  • Provides consistent driver information for Testkit compliance and driver introspection.

Session Management Improvements

  • Session::close() now discards unconsumed results on all used connections for proper resource cleanup.

  • Prevents resource leaks by sending DISCARD protocol messages when results remain partially consumed.

  • Improved session consistency during concurrent or retried operations.

  • Ensures stable and predictable session behavior across driver invocations.

Testkit Backend Integration

  • Updated RequestFactory to map GetServerInfo request type to GetServerInfoRequest handler.

  • Configured ExecuteQueryRequest handler with fallback support for drivers without native executeQuery() method.

  • Testkit.sh configured to validate driver_execute_query test suite compliance.

  • Enables full testkit protocol compliance for Neo4j driver testing infrastructure.

@transistive transistive merged commit 79cdb30 into main Nov 18, 2025
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants