Skip to content
This repository was archived by the owner on Jan 14, 2025. It is now read-only.

Do not store and re-use typeinfo statements #3

Open
wants to merge 7 commits into
base: grafbase
Choose a base branch
from

Conversation

pimeys
Copy link
Collaborator

@pimeys pimeys commented Nov 6, 2023

These might be the ones triggering the s0 errors.

kelvich and others added 7 commits October 13, 2023 09:26
Add query_raw_txt client method

It takes all the extended protocol params as text and passes them to
postgres to sort out types. With that we can avoid situations when
postgres derived different type compared to what was passed in arguments.
There is also propare_typed method, but since we receive data in text
format anyway it makes more sense to avoid dealing with types in params.

This way we also can save on roundtrip and send Parse+Bind+Describe+Execute
right away without waiting for params description before Bind.

Use text protocol for responses -- that allows to grab
postgres-provided serializations for types.

Catch command tag.

Expose row buffer size and add `max_backend_message_size` option to
prevent handling and storing in memory large messages from the backend.

Co-authored-by: Arthur Petukhovsky <[email protected]>
Previous coding only allowed passing vector of text values as params,
but that does not allow to distinguish between nulls and 4-byte
strings with "null" written in them. Change query_raw_txt params
argument to accept Vec<Option<String>> instead.
As we are trying to match client-side behaviour with node-postgres we
need to return this fields as well because node-postgres returns them.
* refactor query_raw_txt to use a pre-prepared statement

* expose ready_status on RowStream
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Development

Successfully merging this pull request may close these issues.

5 participants