Hi.
With the commit mentioned in the $subject, I am seeing the
change in behaviour with the varlena header size. Please
consider the below test:
postgres@83795=#CREATE TABLE test_storage_char(d char(20));
CREATE TABLE
postgres@83795=#INSERT INTO test_storage_char SELECT REPEAT('e', 20);
INSERT 0 1
postgres@83795=#SELECT d, pg_column_size(d) FROM test_storage_char;
d | pg_column_size
----------------------+----------------
eeeeeeeeeeeeeeeeeeee | 21
(1 row)
postgres@83795=#ALTER TABLE test_storage_char ALTER COLUMN d SET STORAGE PLAIN;
ALTER TABLE
postgres@83795=#SELECT d, pg_column_size(d) FROM test_storage_char;
d | pg_column_size
----------------------+----------------
eeeeeeeeeeeeeeeeeeee | 21
(1 row)
postgres@83795=#UPDATE test_storage_char SET d='ab' WHERE d LIKE '%e%';
UPDATE 1
postgres@83795=#SELECT d, pg_column_size(d) FROM test_storage_char;
d | pg_column_size
----------------------+----------------
ab | 24
(1 row)
After changing the STORAGE for the column and UPDATE, pg_column_size
now returns the size as 24.
BEFORE Commit 86dc90056:
postgres@129158=#SELECT d, pg_column_size(d) FROM test_storage_char;
d | pg_column_size
----------------------+----------------
ab | 21
(1 row)
I am not sure whether this change is expected? Or missing something
in the toasting the attribute?
Thanks,
Rushabh Lathia