From: | Binguo Bao <djydewang(at)gmail(dot)com> |
---|---|
To: | John Naylor <john(dot)naylor(at)2ndquadrant(dot)com> |
Cc: | Thomas Munro <thomas(dot)munro(at)gmail(dot)com>, Andrey Borodin <x4mmm(at)yandex-team(dot)ru>, Atri Sharma <atri(dot)jiit(at)gmail(dot)com>, Stephen Frost <sfrost(at)snowman(dot)net>, Владимир Лесков <vladimirlesk(at)yandex-team(dot)ru>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: [proposal] de-TOAST'ing using a iterator |
Date: | 2019-08-21 17:10:43 |
Message-ID: | CAL-OGkvGePwfAaPbfv2Ec-0ubPUE-==0PygpLxyEjNsw-ZSGUw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
John Naylor <john(dot)naylor(at)2ndquadrant(dot)com> 于2019年8月19日周一 下午12:55写道:
> init_toast_buffer():
>
> + * Note the constrain buf->position <= buf->limit may be broken
> + * at initialization. Make sure that the constrain is satisfied
> + * when consume chars.
>
> s/constrain/constraint/ (2 times)
> s/consume/consuming/
>
> Also, this comment might be better at the top the whole function?
>
The constraint is broken in the if branch, so I think put this comment in
the branch
is more precise.
The check
> if (iter->buf != iter->fetch_datum_iterator->buf)
> is what we need to do for the compressed case. Could we use this
> directly instead of having a separate state variable iter->compressed,
> with a macro like this?
> #define TOAST_ITER_COMPRESSED(iter) \
> (iter->buf != iter->fetch_datum_iterator->buf)
The logic of the macro may be hard to understand, so I think it's ok to
just check the compressed state variable.
+ * If "ctrlc" field in iterator is equal to INVALID_CTRLC, it means that
> + * the field is invalid and need to read the control byte from the
> + * source buffer in the next iteration, see pglz_decompress_iterate().
> + */
> +#define INVALID_CTRLC 8
>
> I think the macro might be better placed in pg_lzcompress.h, and for
> consistency used in pglz_decompress(). Then the comment can be shorter
> and more general. With my additional comment in
> init_detoast_iterator(), hopefully it will be clear to readers.
>
The main role of this macro is to explain the iterator's "ctrlc" state, IMO
it's reasonable to put
the macro and definition of de-TOAST iterator together.
Thanks for your suggestion, I have updated the patch.
--
Best regards,
Binguo Bao
Attachment | Content-Type | Size |
---|---|---|
0001-de-TOASTing-using-a-iterator-9.patch | text/x-patch | 20.6 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Anastasia Lubennikova | 2019-08-21 17:19:38 | Re: [HACKERS] [WIP] Effective storage of duplicates in B-tree index. |
Previous Message | Konstantin Knizhnik | 2019-08-21 16:41:08 | Why overhead of SPI is so large? |