Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
bc7d907
Update README.md
majensen May 10, 2020
297df5b
bolt 3.0 - add messages and update negotiation
majensen Nov 22, 2020
6d62b6d
bolt-3.0 - building out transaction machinery WIP
majensen Nov 25, 2020
8fccd03
feat(bolt 3.0) - begin, run, rollback, commit
majensen Nov 26, 2020
879771f
feat(bolt 3.0) - compiles
majensen Nov 28, 2020
d7264dc
feat(bolt 3.0) - old checks pass
majensen Nov 29, 2020
4895c27
feat(bolt 3.0) - txn code added to build; compiles
majensen Dec 1, 2020
d870964
feat(bolt-3.0) : added check_transaction
majensen Dec 7, 2020
cbae678
feat(bolt-3.0) rm cruft
majensen Dec 7, 2020
9738271
feat(bolt-3.0): test run stmt in tx
majensen Dec 8, 2020
ea45729
feat(bolt-3.0): modify INIT argv for bolt 3
majensen Dec 8, 2020
2ba01a4
feat(bolt-3.0): doc for txn api functions
majensen Dec 8, 2020
4a40d28
feat(bolt-3.0): extra dict required in RUN argv
majensen Dec 8, 2020
ab5d97c
Update README.md
majensen Dec 8, 2020
580b767
feat(bolt-3.0): RESET in place of ACK_FAILURE
majensen Dec 9, 2020
4ea6690
feat(bolt-3.0): catch expired tx in run
majensen Dec 9, 2020
3e1e2c8
Merge branch 'feat-bolt-3.0' of https://github.com/majensen/libneo4j-…
majensen Dec 9, 2020
1baeba4
feat(bolt-3.0) - update dir struct to refect master
majensen Dec 10, 2020
b6384ab
Merge branch 'feat-bolt-3.0'
majensen Dec 10, 2020
f4a9549
feat(bolt-3.0) bolt 3.0 into master
majensen Dec 10, 2020
a4519f4
feat(shell 3.0) - a start on adding tx cmds
majensen Dec 10, 2020
9b5f358
feat(bolt 3.0): Add begin/rollback/commit to shell
majensen Dec 11, 2020
12bd774
feat(bolt-4.0) handle maj/min versions, dbname
majensen Dec 12, 2020
9db0853
feat(bolt 4.0): enable 4.0 database selection
majensen Dec 15, 2020
f2506b4
feat(bolt 4.0) - this should work, but doesn't
majensen Dec 17, 2020
6894f9d
Fix #1 - remove default timeout
majensen Dec 19, 2020
d5e6b3c
Merge branch 'master' into feat-bolt-4.0
majensen Dec 19, 2020
81bd4dd
feat(bolt 4.0): this works
majensen Dec 19, 2020
5be667b
feat(bolt 4.0): manage dbname
majensen Dec 19, 2020
a3d681b
rm cruft
majensen Dec 19, 2020
4469770
update README
majensen Dec 19, 2020
806bdb8
rm cruft
majensen Dec 20, 2020
1b2a58a
rm cruft
majensen Dec 20, 2020
28f5ff1
Fix #3 #4 #6
majensen Dec 30, 2020
3bec0ff
Fix #8 - reset properly
majensen Dec 30, 2020
7bd6dfd
add txn features and protect from roll/comm closed txns
majensen Jan 3, 2021
badda39
fix bug in transaction.c
majensen Jan 4, 2021
e2aee3e
workaround unusual bug
majensen Jan 7, 2021
88eaa8a
complete unusual bug fix
majensen Jan 9, 2021
3d178ff
Fix #9 - also make :reconnect actually work
majensen Jan 9, 2021
e445d11
fix bug introduced by fixing bug
majensen Jan 11, 2021
4902541
feat(new types): values.c/values.h type machinery
majensen Jan 7, 2023
56c3f0d
feat(new types): print functions
majensen Jan 9, 2023
c0f6f5d
fix wrong assumptions; add some tests (WIP)
majensen Jan 12, 2023
f9eb4a6
localtime test
majensen Jan 14, 2023
6cef73e
localtime test works
majensen Mar 18, 2023
e93b5a7
localtime datetime checks
majensen Mar 18, 2023
dc026f0
localdatetime
majensen Mar 18, 2023
3bdec10
point2d point3d
majensen Mar 18, 2023
f1a1b8c
feat(v5.0): update supported versions
majensen Mar 18, 2023
f582ffc
fix print/values for new structures
majensen Mar 23, 2023
3058930
update deserialization tests for v5
majensen Mar 24, 2023
7ac1b93
more
majensen Mar 25, 2023
6fdf051
catch structs with known signatures, create correct types
majensen Apr 1, 2023
ba33123
render durations acc to ISO 8601
majensen Apr 1, 2023
f668344
fixing time renderings
majensen Apr 2, 2023
5e86f6c
update version offer
majensen Apr 5, 2023
cf10a17
Merge branch 'cleishm:main' into master
majensen Apr 6, 2023
5b33ee4
feat(new types): values.c/values.h type machinery
majensen Jan 7, 2023
e211cbf
feat(new types): print functions
majensen Jan 9, 2023
edac417
fix wrong assumptions; add some tests (WIP)
majensen Jan 12, 2023
871a3d1
localtime test
majensen Jan 14, 2023
98021cb
localtime test works
majensen Mar 18, 2023
5176e02
localtime datetime checks
majensen Mar 18, 2023
404851c
localdatetime
majensen Mar 18, 2023
e24246e
point2d point3d
majensen Mar 18, 2023
b7e54a3
feat(v5.0): update supported versions
majensen Mar 18, 2023
9d2aa31
fix print/values for new structures
majensen Mar 23, 2023
4dbe43b
update deserialization tests for v5
majensen Mar 24, 2023
a4dff6a
more
majensen Mar 25, 2023
9f2e346
Merge branch 'master' into feat-neo4j-5.0
majensen Apr 6, 2023
c425033
resolve
majensen Apr 6, 2023
dd40133
update connection test
majensen Apr 6, 2023
561b3fb
Merge pull request #11 from majensen/feat-neo4j-5.0
majensen Apr 6, 2023
3a59804
fix(supported versions): handshake exclude v5.1
majensen Apr 10, 2023
346ad1a
struct datatypes fix: legacy datetime fix
majensen Apr 16, 2023
e710cf2
feat(supported versions): dynamic versions
majensen May 1, 2023
a52de4c
feat(supported versions): put version spec in config
majensen May 2, 2023
bcfed7c
feat(supported versions): get and set in config
majensen May 7, 2023
a77a45e
Update README.md
majensen May 8, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
**2023-05-07: This fork will be archived.**

*Work on maintaining libneo4j-client compatibility with the latest version of Bolt continues at the top-level repo [libneo4j-omni](https://github.com/majensen/libneo4j-omni)*


neo4j-client
============

Expand All @@ -20,7 +25,7 @@ Requirements
------------

neo4j-client is known to work on GNU/Linux, Mac OS X and FreeBSD. It
requires neo4j 3.0.0 or later.
support Neo4j through v4.0.


Getting Started
Expand Down Expand Up @@ -76,12 +81,17 @@ Available commands:
:export Display currently exported parameters
:export name=val ... Export parameters for queries
:unexport name ... Unexport parameters for queries
:begin [timeout(ms)] [mode(r|w)]
Begin an explicit transaction (v3.0+)
:commit Commit an open transaction (v3.0+)
:rollback Rollback an open transaction (v3.0+)
:reset Reset the session with the server
:set Display current option values
:set option=value ... Set shell options
:unset option ... Unset shell options
:status Show the client connection status
:help Show usage information
:dbname [name] View or set database for queries (v4.0+)
:format (table|csv) Set the output format
:width (<n>|auto) Set the number of columns in the table output

Expand Down
1 change: 1 addition & 0 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ AC_ARG_ENABLE([werror],
[werror_flag=$enableval], [werror_flag=yes])
AS_IF([test "X$werror_flag" = "Xyes"], [GCC_CFLAGS="$GCC_CFLAGS -Werror"])


LT_INIT
AC_LANG([C])
AC_PROG_CC
Expand Down
2 changes: 2 additions & 0 deletions lib/src/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ libneo4j_client_la_SOURCES = \
thread.h \
tofu.c \
tofu.h \
transaction.c \
transaction.h \
u8.c \
uri.c \
uri.h \
Expand Down
74 changes: 73 additions & 1 deletion lib/src/client_config.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,17 @@
*/
#include "../../config.h"
#include "client_config.h"
#include "connection.h"
#include "memory.h"
#include "util.h"
#include <string.h>
#include <assert.h>
#include <errno.h>
#include <limits.h>
#include <pwd.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>

#define NEO4J_DEFAULT_MPOOL_BLOCK_SIZE 128
#define NEO4J_DEFAULT_RCVBUF_SIZE 4096
Expand Down Expand Up @@ -72,6 +75,11 @@ const struct neo4j_plan_table_colors *neo4j_plan_table_no_colors =
const struct neo4j_plan_table_colors *neo4j_plan_table_ansi_colors =
&_neo4j_plan_table_ansi_colors;

static version_spec_t neo4j_supported_versions[4] = {
{5, 6, 4}, {4, 0, 0}, {4, 4, 3}, {3, 0, 0}
};

static const char neo4j_supported_versions_string[] = "5.6-5.2,4.0,4.4-4.1,3.0";

static ssize_t default_password_callback(void *userdata, char *buf, size_t n);

Expand Down Expand Up @@ -110,6 +118,7 @@ neo4j_config_t *neo4j_new_config()
config->render_inspect_rows = NEO4J_DEFAULT_RENDER_INSPECT_ROWS;
config->results_table_colors = neo4j_results_table_no_colors;
config->plan_table_colors = neo4j_plan_table_no_colors;
config->supported_versions = neo4j_supported_versions;
return config;
}

Expand Down Expand Up @@ -216,7 +225,6 @@ int neo4j_config_nset_username(neo4j_config_t *config,
return replace_strptr_ndup(&(config->username), username, n);
}


int neo4j_config_set_password(neo4j_config_t *config, const char *password)
{
REQUIRE(config != NULL, -1);
Expand Down Expand Up @@ -698,3 +706,67 @@ const struct neo4j_plan_table_colors *neo4j_config_get_plan_table_colorization(
{
return config->plan_table_colors;
}

int neo4j_config_set_supported_versions(neo4j_config_t *config, const char *version_string)
{
char *vs = strdup(version_string);
char *p = strtok(vs, ",");
int n=0;
if (vs == NULL)
{
fprintf(stderr, "Can't allocate string copy\n");
return -1;
}
while ((p != NULL) && (n < 4))
{
if (parse_version_string(p, config->supported_versions+n) != 0)
{
// set default
int i;
neo4j_config_set_supported_versions(config, neo4j_supported_versions_string);
fprintf(stderr, "%s\n", neo4j_config_get_supported_versions(config));
return -1;
}
p = strtok(NULL, ",");
n++;
}
if (n<4) {
(config->supported_versions+n)->major = 0;
(config->supported_versions+n)->minor = 0;
(config->supported_versions+n)->and_lower = 0;
n++;
}
return 0;
}

const char *neo4j_config_get_supported_versions(neo4j_config_t *config)
{
static char buf[50];
char *p;
int l=0, nmax=50, n;
version_spec_t *vs;
p = buf;
for (n=0;n<4;n++) {
vs = config->supported_versions+n;
if (vs->major == 0)
{
continue;
}
if (vs->and_lower == 0) {
l=snprintf(p, nmax, "%d.%d ", vs->major, vs->minor);
}
else {
l=snprintf(p, nmax, "%d.%d-%d.%d ", vs->major, vs->minor, vs->major, vs->minor-vs->and_lower);
}
if (l >= nmax) {
*p = '\0';
continue;
}
else {
p += l;
nmax -= l;
}

}
return buf;
}
2 changes: 2 additions & 0 deletions lib/src/client_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ struct neo4j_config
unsigned int render_inspect_rows;
const struct neo4j_results_table_colors *results_table_colors;
const struct neo4j_plan_table_colors *plan_table_colors;
version_spec_t *supported_versions;
};


Expand Down Expand Up @@ -114,4 +115,5 @@ static inline neo4j_mpool_t neo4j_std_mpool(const neo4j_config_t *config)
int ensure_basic_auth_credentials(neo4j_config_t *config, const char *host);



#endif/*NEO4J_CLIENT_CONFIG_H*/
Loading