From: | Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com> |
---|---|
To: | Radosław Smogura <rsmogura(at)softperience(dot)eu> |
Cc: | PG Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Streaming solution and v3.1 protocol |
Date: | 2011-06-03 17:04:15 |
Message-ID: | 4DE9140F.4020201@enterprisedb.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 03.06.2011 19:19, Radosław Smogura wrote:
> Hello,
>
> Sorry for short introduction about this, and plese as far as possible,
> disconnet it from LOBs, as it on top of LOB.
>
> Idea of streaming is to reduce memory copy mainly during receiving and sending
> tuples. Currently receive works as follows
> 1. Read bytes of tuple (allocate x memory).
> 2. Eventually convert it to database encoding.
> 3. Use this data and create datum (which is little changed copy of 1 or 2)
> 4. Streaming will be allowed only in binary mode, and actually stream in/out
> will return binary data.
Hmm, I was thinking that streaming would be a whole new mode, alongside
the current text and binary mode.
> Look for example at execution chain from textrecv.
>
> Idea is to add stream_in, stream_out columns pg_type.
>
> When value is to be serialized the sin/sout is called. Struct must pass len of
> data, and struct of stream (simillar to C FILE*).
>
> Caller should validate if all bytes has been consumed (expose simple methods
> for this)
>
> To implement(code API requirements):
> First stream is buffered socekt reader.
>
> Fast substreams - create fast stream limited to x bytes basing on other stream
>
> Skipping bytes + skipAll()
>
> Stream filtering - do fast (faster will be if conversion will occure in
> buffered chunks) encoding conversion.
>
> Support for direct PG printf() version. Linux has ability to create cookie
> streams and use it with fprintf(), so its greate advantage to format huge
> strings. Other system should buffer output. Problem is if Linux cookie will
> fail will it write something to output? Windows proxy will push value to temp
> buffer.
This is pretty low-level stuff, I think we should focus on the protocol
changes and user-visible libpq API first.
However, we don't want to use anything Linux-specific here, so that
cookie streams are not an option.
--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com
From | Date | Subject | |
---|---|---|---|
Next Message | Thom Brown | 2011-06-03 17:45:57 | Re: creating CHECK constraints as NOT VALID |
Previous Message | Alvaro Herrera | 2011-06-03 17:02:51 | Re: ALTER TABLE ... ADD FOREIGN KEY ... NOT ENFORCED |