The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Neo4j::Bolt::Cxn - Container for a Neo4j Bolt connection

SYNOPSIS

 use Neo4j::Bolt;
 $cxn = Neo4j::Bolt->connect("bolt://localhost:7687");
 unless ($cxn->connected) {
   print STDERR "Problem connecting: ".$cxn->errmsg;
 }
 $stream = $cxn->run_query(
   "MATCH (a) RETURN head(labels(a)) as lbl, count(a) as ct",
 );
 if ($stream->failure) {
   print STDERR "Problem with query run: ".
                 ($stream->client_errmsg || $stream->server_errmsg);
 }

DESCRIPTION

Neo4j::Bolt::Cxn is a container for a Bolt connection, instantiated by a call to Neo4j::Bolt->connect().

METHODS

connected()

True if server connected successfully. If not, see "errnum()" and "errmsg()".

run_query($cypher_query, [$param_hash])

Run a Cypher query on the server. Returns a Neo4j::Bolt::ResultStream which can be iterated to retrieve query results as Perl types and structures. [$param_hash] is an optional hashref of the form { param => $value, ... }.

send_query($cypher_query, [$param_hash])

Send a Cypher query to the server. All results (except error info) are discarded.

do_query($cypher_query, [$param_hash])
  ($stream, @rows) = do_query($cypher_query);
  $stream = do_query($cypher_query, $param_hash);

Run a Cypher query on the server, and iterate the stream to retrieve all result rows. do_query is convenient for running write queries (e.g., CREATE (a:Bloog {prop1:"blarg"}) ), since it returns the $stream with "update_counts" in Neo4j::Bolt::ResultStream ready for reading.

run_query_( $cypher_query, $param_hash, $send )

Run a Cypher query on the server. Returns a Neo4j::Bolt::ResultStream which can be iterated to retrieve query results as Perl types and structures. $param_hash is a hashref of the form { param => $value, ... }. If there are no params to be set, use {}.

If $send is 1, run_query_ will simply send the query and discard any results (including query stats). Set $send to 0 and follow up with "fetch_next_()" in Neo4j::Bolt::ResultStream to retrieve results.

Easier to use run_query, send_query, do_query.

reset_cxn()

Send a RESET message to the Neo4j server. According to the Bolt protocol, this should force any currently processing query to abort, forget any pending queries, clear any failure state, dispose of outstanding result records, and roll back the current transaction.

errnum(), errmsg()

Current error state of the connection. If

 $cxn->connected == $cxn->errnum == 0

then you have a virgin Cxn object that came from someplace other than Neo4j::Bolt->connect(), which would be weird.

server_id()
 print $cxn->server_id;  # "Neo4j/3.3.9"

Get the server ID string, including the version number. undef if connecting wasn't successful or the server didn't identify itself.

SEE ALSO

Neo4j::Bolt, Neo4j::Bolt::ResultStream.

AUTHOR

 Mark A. Jensen
 CPAN: MAJENSEN
 majensen -at- cpan -dot- org

LICENSE

This software is Copyright (c) 2019-2020 by Mark A. Jensen.

This is free software, licensed under:

  The Apache License, Version 2.0, January 2004