Re: RFI: Extending the TOAST Pointer
| От | Aleksander Alekseev |
|---|---|
| Тема | Re: RFI: Extending the TOAST Pointer |
| Дата | |
| Msg-id | CAJ7c6TMko_Y_7Eh262sqj=uRjiY+f_HcGMCKwyjObXX8H4hy3g@mail.gmail.com обсуждение исходный текст |
| Ответ на | Re: RFI: Extending the TOAST Pointer (Matthias van de Meent <boekewurm+postgres@gmail.com>) |
| Ответы |
Re: RFI: Extending the TOAST Pointer
|
| Список | pgsql-hackers |
Hi,
> We'd need to stop using the va_tag as length indicator, but I don't
> think it's currently assumed to be a length indicator anyway (see
> VARSIZE_EXTERNAL(ptr)). By not using the varatt_external struct
> currently in use, we could be able to get down to <18B toast pointers
> as well, though I'd consider that unlikely.
Agree.
Another thing we have to decide is what to do exactly in the scope of
this thread.
I imagine it as a refactoring that will find all the places that deal
with current TOAST pointer and changes them to something like:
```
switch(va_tag) {
case DEFAULT_VA_TAG( equals 18 ):
default_toast_process_case_abc(...);
default:
elog(ERROR, "Unknown TOAST tag")
}
```
So that next time somebody is going to need another type of TOAST
pointer this person will have only to add a corresponding tag and
handlers. (Something like "virtual methods" will produce a cleaner
code but will also break branch prediction, so I don't think we should
use those.)
I don't think we need an example of adding a new TOAST tag in scope of
this work since the default one is going to end up being such an
example.
Does it make sense?
--
Best regards,
Aleksander Alekseev
В списке pgsql-hackers по дате отправления: