Re: [HACKERS] Custom compression methods
Dilip Kumar <dilipbalaut@gmail.com>
On Wed, Mar 24, 2021 at 8:41 PM Robert Haas <robertmhaas@gmail.com> wrote: > > On Wed, Mar 24, 2021 at 7:45 AM Dilip Kumar <dilipbalaut@gmail.com> wrote: > > I have anyway created a patch for this as well. Including all three > > patches so we don't lose track. > > > > 0001 ->shows compression method for the index attribute in index describe > > 0002 -> fix the reported bug (test case included) > > (optional) 0003-> Alter set compression for index column > > As I understand it, the design idea here up until now has been that > the index's attcompression values are irrelevant and ignored and that > any compression which happens for index attributes is based either on > the table attribute's assigned attcompression value, or the default. > If that's the idea, then all of these patches are wrong. The current design is that whenever we create an index, the index's attribute copies the attcompression from the table's attribute. And, while compressing the index tuple we will use the attcompression from the index attribute. > Now, a possible alternative design would be that the index's > attcompression controls compression for the index same as a table's > does for the table. But in that case, it seems to me that these > patches are insufficient, because then we'd also need to, for example, > dump and restore the setting, which I don't think anything in these > patches or the existing code will do. Yeah, you are right. > My vote, as of now, is for the first design, in which case you need to > forget about trying to get pg_attribute to have the right contents - > in fact, I think we should set all the values there to > InvalidCompressionMethod to make sure we're not relying on them > anywhere. And then you need to make sure that everything that tries to > compress an index value uses the setting from the table column or the > default, not the setting on the index column. Okay, that sounds like a reasonable design idea. But the problem is that in index_form_tuple we only have index tuple descriptor, not the heap tuple descriptor. Maybe we will have to pass the heap tuple descriptor as a parameter to index_form_tuple. I will think more about this that how can we do that. -- Regards, Dilip Kumar EnterpriseDB: http://www.enterprisedb.com
Commits
-
docs: Update TOAST storage docs for configurable compression.
- e8c435a824e1 14.0 landed
-
Further tweaking of pg_dump's handling of default_toast_compression.
- 54bb91c30e39 14.0 landed
-
Fix interaction of TOAST compression with expression indexes.
- 5db1fd7823a1 14.0 landed
-
Tidy up more loose ends related to configurable TOAST compression.
- e5595de03ec6 14.0 landed
-
Short-circuit slice requests that are for more than the object's size.
- 063dd37ebc76 14.0 landed
-
Mostly-cosmetic adjustments of TOAST-related macros.
- aeb1631ed207 14.0 landed
-
Remove useless configure probe for <lz4/lz4.h>.
- 2c75f8a612b2 14.0 landed
-
Error on invalid TOAST compression in CREATE or ALTER TABLE.
- a4d5284a10b5 14.0 landed
-
docs: Fix omissions related to configurable TOAST compression.
- 24f0e395ac58 14.0 landed
-
More code cleanup for configurable TOAST compression.
- 226e2be3876d 14.0 landed
-
Bring configure support for LZ4 up to snuff.
- 4d399a6fbeb7 14.0 landed
-
Make compression.sql regression test independent of default.
- fd1ac9a54896 14.0 landed
-
Use valid compression method in brin_form_tuple
- 882b2cdc08c4 14.0 landed
-
Fix up pg_dump's handling of per-attribute compression options.
- aa25d1089ac0 14.0 landed
-
Allow configurable LZ4 TOAST compression.
- bbe0a81db69b 14.0 landed
-
Fix inconsistencies in the code
- 6b8548964bcc 13.0 cited
-
Mostly-cosmetic improvements in memory chunk header alignment coding.
- f65d21b25808 11.0 cited
-
Allow numeric to use a more compact, 2-byte header in many cases.
- 145343534c15 9.1.0 cited