-
Notifications
You must be signed in to change notification settings - Fork 18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
64 bit large object support #10
Comments
Thanks for the heads up. Probably, eventually. Though honestly my feeling is that I'd eventually like to deprecate the current bindings to the lo_ functions, and instead implement large object support in higher-level bindings using execParams instead, especially once execParams is implemented with non-blocking C calls and the IO manager instead of blocking C calls. |
Here's another relevant reference from pg-hackers, although I had kind of figured it out between my own investigations and a conversation on #postgresql. |
Interesting. Will the same seek, and read functionality still exist in On Tue, 2013-08-20 at 16:57 -0700, Leon P Smith wrote:
|
Yes, the same seek and read functionality will still exist in a hypothetical execParams-based large object binding. Although this doesn't appear to be documented particularly well, the seek pointer and all the lo_* functions are server-side constructs. (Except lo_import/lo_export, which differ on the client side versus the server side) Out of curiousity, how are you currently using the lo functionality from Haskell? Are you using postgresql-simple's binding, postgresql-libpq's binding, or some other way? As for overhead and speed, that's not obvious to me at this point. Using non-blocking C calls and the IO manager should save some context-switching overhead on the client side, and probably scale better in highly concurrent environments, as the GHC runtime would be responsible for scheduling green threads, instead of the kernel being responsible for scheduling kernel threads. On the other hand, there is the issue of overhead added on the client side by Haskell, which I can't really quantify at this point, and the overhead added on the backend because the server would be parsing the function name each side. In that regard So... would you be willing to help perform performance testing once I get around to working on these issues? (Though be warned, this isn't really a priority for me at the moment.) Also, if you find that the 64-bit functionality immediately important, I'm certainly willing to entertain pull requests. Though if you end up writing bindings to the libpq functions in postgresql-simple, there are some unresolved issues regarding versioning that I have yet to work out to my satisfaction. Namely, I'd like to follow the PVP, and there is some newer functionality in libpq that I'd really like to make available (like |
On Wed, 2013-08-21 at 15:07 -0700, Leon P Smith wrote:
Straight up postgresql-libpq. Speedy bugger that one is. I wrap multiple
Cool. Will do. I also need to do some poking in postgresql-simple to fix
Gotcha! |
Of course, I don't exactly understand what you are trying to do here, but this doesn't particularly sound like a postgresql-simple issue. Are you using persistent on top of postgresql-simple? |
I believe it was related to this: Also it could be a Persistent problem as well. On Thu, 2013-08-22 at 07:00 -0700, Leon P Smith wrote:
|
Well, postgresql-simple doesn't have any particular support for parameterizing table/schema names. That requires dynamic sql generation of a sort you'd have to perform yourself. This is something I'd like to fix, but doing it properly does require |
Got it. With all of the modules stacked on top of one another in Yesod On Thu, 2013-08-22 at 20:09 -0700, Leon P Smith wrote:
|
Do you have a plan to update postgresql-libpq to support the upcoming 64 bit large objects?
cf: http://www.postgresql.org/message-id/[email protected]
The text was updated successfully, but these errors were encountered: