Revision history for Neo4j::Driver

0.50  2024-10-28

 - Various documentation improvements:
   - Rewrite synopsis sections.
   - Clarifications regarding proper error handling using try/catch and
     HTTP result stream detachment.
   - Update for bugs and limitations.
 - Fix an issue that can cause CI failures in transaction.t when running
   the test suite live on Neo4j 5.23.

0.49  2024-04-15

 - Issue a Perl warning if a broken Neo4j::Client version is detected. For Bolt
   support installed from CPAN, Neo4j::Client 0.46 is currently recommended.

0.48  2024-04-10

 - The cypher_params config option now allows 'v2' as a synonym for v2.
 - Minor documentation updates.

0.47  2024-04-09

 - Returning a Result object from a managed transaction function now issues
   a warning that the Result may not be valid outside the function.
 - Clarify in documentation that concurrent_tx is a legacy feature.
 - Minor documentation fixes.
 - Minor testing improvements.

0.46  2024-03-03

 - Add support for byte array values via Bolt and Jolt (Neo4j::Types v2).
 - Fix Record->get() to not require its argument to be created as number when
   used as index, or created as string when used as field name.
 - Add check to prevent the HTTP-only concurrent_tx feature from being used
   with neo4j: URIs.
 - Add check to prevent plugin() after session().
 - Update the "experimental" warning in the plug-in API documentation.
 - Calling list methods in scalar context is no longer experimental.
 - Avoid crash of types-temporal.t on Win32.

0.45  2024-02-16

 - The boolean values used in HTTP query results are no longer chosen
   by the JSON coder. Perl core booleans are used on v5.36 and newer;
   on older Perl versions, JSON::PP booleans are used. (GH #16)

0.44  2024-02-06

 - Result->peek() is no longer experimental.
 - Result->consume() is no longer experimental.
 - Result->summary() is discouraged in favour of consume().
 - Internal change: Result->fetch() now detects an exhausted result stream
   immediately when the last record is retrieved.
 - Minor testing improvements.

0.43  2024-01-31

 - Accept neo4j: URIs, converting them to bolt / http / https.
 - Change default URI from http://localhost to neo4j://127.0.0.1.

0.42  2023-12-14

 - Add support for spatial and temporal Cypher values (Neo4j::Types v2).

0.41  2023-11-21

 - Calling element_id() on nodes and relationships from Neo4j version 4
   and earlier issues a warning. It will not become fatal.
 - New Neo4j::Driver::Types doc as an initial step towards Neo4j::Types v2.

0.40  2023-07-19

 - Add documentation that calling element_id() on nodes and relationships
   from Neo4j version 4 and earlier might change to become a fatal error.

0.39  2023-07-06

 - The concurrent_tx option is no longer experimental (now defaults to off).
 - Fix erroneous warnings for disabled concurrent transactions on HTTP.
 - Internal change: Store driver config options in a hash of their own.

0.38  2023-06-18

 - Mitigate more test failures on slow machines and on Perl v5.14 and older.
 - Tests no longer fail for unexpected warnings, except during author testing.

0.37  2023-02-27  (TRIAL RELEASE)

 - Add deprecation warning to node and relationship id() methods on Neo4j 5
 - Fix a bug introduced in 0.36 which prevented some Bolt server/network errors
   from being reported correctly.
 - Mitigate test failures on slow machines and on Perl v5.10

0.36  2023-02-05

 - Add support for managed transaction functions.
 - Add "error" event, which makes details of server and network errors
   available to plug-ins as a Neo4j::Error object. (GH #7)

0.35  2023-01-24

 - Fix an issue which could cause a Bolt v3/v4 session to report
   "Bolt error -1" and become unusable after a server-side statement
   evaluation failure inside an explicit transaction.

0.34  2023-01-22

 - Refactor experimental plug-in API:
   - Rename PluginManager to Events, add_event_handler() to add_handler(),
     trigger_event() to trigger().
   - Specify behaviour of HTTP adapters for internal error responses generated
     by the network library.
   - Deprecate adding plug-ins by module name; use plug-in instance instead.
 - Deprecate experimental internal http_timeout setting; use config() instead.
 - Fix support for non-standard database name in explicit transaction on Bolt
 - Fix support for transaction begin on Bolt v1/v2

0.33  2022-12-30

 - Fix documentation to indicate that the Neo4j 5 non-numeric element ID for
   nodes and relationships is not yet supported with Bolt in Perl at this time.

0.32  2022-12-29

 - Introduce Neo4j 5 non-numeric element ID for nodes and relationships
 - Fix test suite for Neo4j 5
 - Improve IPv6 support
 - Add possible strategies to resolve HTTP connection problems when using
   dual-stack host names (e. g. localhost) to driver documentation

0.31  2022-06-13

 - Replace experimental net_module config option with plug-in interface
 - The cypher_params config option is no longer experimental
 - Announce plan to switch from JSON::PP::Boolean to Perl distinguished booleans

0.30  2022-05-20

 - Add experimental config option concurrent_tx to explicitly enable support
   for multiple concurrent transactions within the same HTTP session
 - Deprecate experimental config option jolt that allowed disabling Jolt
 - Deprecate experimental methods Result->attached() and Result->detach()
 - Deprecate method protocol() in experimental LWP net module
 - Rename method agent() to ua() in experimental LWP net module

0.28  2022-01-25

 - Deprecate experimental return of results in JSON "graph" format
 - Deprecate experimental query statistics flag return_stats
 - Add deprecation warning for experimental config option ca_file
 - Fix constructor fallback to default uri (issue #14)
 - Improve session creation performance

0.27  2021-08-28

 - Add config options for auth and uri
 - Allow config option hashes to be passed by reference
 - Allow passing config options to new()
 - Rename config option tls to encrypted
 - Rename config option tls_ca to trust_ca

0.26  2021-07-30

 - Change in experimental feature behaviour: Most methods that return lists
   now yield item count when called in scalar context
 - deprecate experimental list context syntax for run()
 - deprecate experimental methods Node->deleted() and Relationship->deleted()
 - deprecate experimental method ServerInfo->protocol();
   add method ServerInfo->protocol_version() as replacement
 - ServerInfo->version() is now a discouraged alias of ServerInfo->agent()
 - change syntax for experimental Cypher parameter conversion config option

0.25  2021-06-30

 - deprecate experimental Cypher type system customisation
 - deprecate experimental run() with array of multiple statements

0.24  2021-06-21  (TRIAL RELEASE)

 - Jolt is enabled by default and no longer experimental
 - Bolt for Neo4j 4 is no longer experimental

0.23  2021-04-23

 - work around breaking change in Neo4j 4.2.5 Jolt implementation

0.22  2021-02-11

 - allow statements to begin with whitespace (fix issue #13)
 - fix test failing in old Perls with non-English locale (issue #12)

0.21  2021-02-06

 - add experimental support for HTTP responses in Jolt format
 - add experimental option for custom networking modules
 - announce future switch from Neo4j::Driver::Type::* to Neo4j::Types::*
 - fix Node->labels() method, which could die on nodes without labels (issue #11)
 - declare Time::Piece 1.20 dependency (for Perl < 5.14)
 - remove REST::Client dependency

0.20  2021-01-10

 - track timeout of HTTP transactions

0.19  2021-01-09  (TRIAL RELEASE)

 - add experimental support for newer Bolt protocol versions (for Neo4j 4)
 - add experimental protocol() method to ServerInfo
 - version discovery succeeds on Neo4j 1.x (which is otherwise unsupported)
 - rename StatementResult module to Result, in line with the Neo4j Driver API
 - internal redesign (removes private Transport modules)

0.18  2020-10-24

 - fix handling of index/key collisions in field names
 - deprecate experimental Record->{column_keys} access
 - deprecate experimental Record->{meta} access
 - deprecate experimental Path->path() method
 - warn when accessing the internals of node/rel/path objects (see issue #8)

0.17  2020-10-12

 - the Neo4j 4 default database name is reliably auto-detected (fix issue #6)
 - the option to select a database is no longer experimental
 - the option to select a database is now safely ignored on Neo4j 2/3
 - fix rare assertion failure when retrieving nodes or relations on Neo4j 4
 - get ServerInfo automatically when opening a new session
 - try to improve compatibility with outdated JSON module versions

0.16  2020-04-12

 - add experimental option to select a database specified by name (Neo4j 4)
 - fix handling of outdated JSON module versions

0.15  2020-02-20

 - support for secure communication using TLS encryption
 - add stable support for the Bolt protocol
 - remove XS dependency to support Pure Perl environments (HTTP only)
 - improve performance of running queries over HTTP
 - improve robustness of URL parsing
 - deprecate experimental mutability of auth credentials after session creation

0.14  2019-12-21

REMINDER: Neo4j::Driver 0.13 deprecated the old syntax to access nodes,
relationships and paths. You need to use the new accessor methods introduced
in 0.13, or else your code will fail with a future version of this software.

 - make Cypher type system customisable
 - add experimental filter to convert {param} to $param in Cypher queries
 - new syntax to specify the network timeout and other config options
 - allow strings containing just the protocol scheme be used as URIs
 - deprecate experimental close() method
 - deprecate experimental suppression of exceptions (die_on_error = 0)

0.13  2019-10-14

 - declare API stable
 - add record streaming interface to StatementResult
 - implement Cypher type system, returning Neo4j entities as blessed objects
 - methods returning lists now expect to be called in list context
 - change HTTP transactions to make query statistics available by default
 - experimental support for HTTPS

0.12  2019-09-23

 - slightly more robust Bolt support

0.11  2019-01-12

 - repair broken list of dependencies

0.10  2019-01-11

 - experimental support for Bolt

0.09  2018-12-03

 - implement Record->data() and StatementResult->keys()
 - security fix: move ServerInfo from ResultSummary to Session
 - change get() to warn when omitting the field parameter leads to ambiguity
 - better error message for run() if called with an unblessed reference as query

0.08  2018-11-27

 - track whether transactions are open or closed
 - support Perl 5.10
 - add documentation and a test suite

0.07  2018-11-19

 - add ResultSummary and SummaryCounters, deprecate stats()
 - deprecate get_bool()
 - improve error handling

0.06  2018-11-17

 - change single() to die on failure rather than return undef
 - fix size() to avoid dying on results with no rows
 - allow REST::Neo4p::Query and Neo4j::Cypher::Abstract objects as queries

0.05  2018-04-23

 - make HTTP timeout configurable

0.04  2018-04-23

 - convert into a Dist::Zilla-compatible module
 - move supporting classes into Neo4j::Driver namespace
 - allow reuse under the terms of the Artistic License 2.0

0.03  2017-07-20

 - improve handling of server errors

0.02  2017-01-28

 - add Neo4j includeStats support
 - add method to handle boolean values specially

0.01  2016-11-19

 - implement the Neo4j Driver API