zmactep / hasbolt

Haskell driver for Neo4j 3+ (BOLT protocol)
BSD 3-Clause "New" or "Revised" License
82 stars 13 forks source link

Bolt protocol 4+ support (with poll) #29

Open zmactep opened 3 years ago

zmactep commented 3 years ago

Hi!

So, since the version 0.1.5.0 (see #28), we have initial support of Bolt Protocol v.3. It contains:

You may choose { ... version = 3 ... } in BoltCfg, and everything should work even with the latest version of neo4j (4.2.6). But we still do not support the extra dictionary in "run query" and new transactions style (the old one from protocol v.2 seems to work). And of course, neo4j will drop the version 3 protocol soon, while version 4 has backward capability break again.

I see that I have to redesign a library a lot to support the newest features. So I have a question for all the users: should I still support the versions 1/2 of protocol or keep only the latest version? Or maybe I should make another library (like, hasbolt2 for the newest versions)? Or perhaps you are not interested in novel features and just need the basic statements supporting the latest versions of neo4j?

/polls "I need support of protocol versions 1/2" "I need the non-basic features of latest protocol versions" "I am ok to use the separate library for new/old protocol versions"

odanoburu commented 3 years ago

hi @zmactep! thanks for this, it's appreciated :+1: I plan to upgrade to Neo4j v4 as soon as possible, and have only been using v3.5, so I guess I wouldn't need Bolt v1. with regards to a new package or not, I'd vote for you doing what's easier for you, I can handle whichever. another option would be to keep hasbolt versions <2 for bolt v1-2, and versions >2 for bolt v3-4.

And of course, neo4j will drop the version 3 protocol soon, while version 4 has backward capability break again.

this is very annoying…

Microtribute commented 3 years ago

Hey @zmactep please write a separate library to support Neo4j 4+.

iazel commented 2 years ago

Hello,

Thank you for your work. Is there any news on when the new protocol version will be supported and if it will be split on a new lib?

About the poll, I don't need bolt v1 and v2 support. If you would like to keep it, I'd suggest to keep it for library v1 and work on the new protocol on v2.

Also, supposing the new implementation would be fine for the older bolt versions too, I guess if it really comes to it, support could be reintroduced on v2 too.

I think splitting it on a different library could be confusing for users.

ProofOfKeags commented 1 year ago

Would a PR be accepted that updated this to work with Neo4j 5+?

joshniemela commented 1 year ago

@ProofOfKeags Did you have any progress on rewriting it for 5+?

ProofOfKeags commented 1 year ago

Still on my list, haven't set aside time for it but my main side project uses it and while I'm not actively working on this piece of it I am still actively working on that side project.

joshniemela commented 1 year ago

Understandable, feel free to @ me if you need someone to help rewriting it since I'll most likely need it in my own project so I can avoid JavaScript.

philippedev101 commented 1 year ago

I spend two weeks continuously making a new version, changed so much it might as well be a new driver altogether. For example one thing i did was implement the PackStream protocol as a separate library based on haskell message pack implementation. Thing is after 2 weeks i got fed up with it and returned to neo4j 3.5. The state right now is that the functions are more or less in place, but it has never run a successful query (handshake looked ok though). If anyone has appetite to dig in leave your email or discord handle and we can discuss. I estimate 2 more weeks of continuous work is needed to debug and add the tests. With likely more bugfix releases after. I won't upload a public repo in the state it is in right now. Maybe one day i will come back to it myself, but i'm in the same situation that it's for a side project that i like to upgrade to the latest neo4j version.

ProofOfKeags commented 1 year ago

Where can I contribute to this effort?

philippedev101 commented 10 months ago

@ProofOfKeags i send you an invite, sorry for the late reply. Please write your discord handle

ProofOfKeags commented 6 months ago

I am no longer planning to work on this at this time. Just closing the loop here.