typelevel / typelevel/skunk

Postgres Large Object Support

Open
#543 0 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Scala
Stars
1.7k
Forks
175
Avg merge
5d 14h
Merged PRs (30d)
9

Description

Some existing codebases are already leveraging large object support with doobie. As this is the successor we were trying to figure out how we could get this. Bytea is likely capable of containing our use case, but wanted to capture this in case someone wanted to resolve it in the future.

The large-object thing is some server-side functions that let you manipulate chunks.
It's not part of the protocol, it's a userland thing.
But the C driver creates a fiction on top of this, as does the JDBC driver.
Which is to say, it will work with Skunk but you'll need to do a bunch of stuff by hand. A userland thing could be built up for it.
But how large are your objects? Is it clear that a normal bytea won't work?
It does give you the ability to stream stuff in and out though, which seems useful. Probably wouldn't be that hard to implement.

Something like createLargeObject: F[(Oid, Sink[F,Byte])] and then readLargeObject(oid, chunksize): Stream[F,Byte]) would cover most cases.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No files or tests are named. First compare whether PostgreSQL bytea meets the intended object sizes and streaming needs, then review how Skunk could expose the server-side large-object functions; done should include a defined scope and an agreed API such as the create and read operations suggested in the issue.

Written by the indexing model from the issue text.

Assessment

Tech stack
postgresql, scala
Domain
databases
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.