Народ, подскажите, почему размер таблицы меняется
postgres=# create table t1(id1 int,id2 int,id3 int, sss text);
CREATE TABLE
postgres=# insert into t1 (select
s.id,
s.id,
s.id,repeat(
s.id::text,
s.id) from
generate_series(1,1000) as s(id));
INSERT 0 1000
postgres=# \d t1
Table "public.t1"
Column | Type | Collation | Nullable | Default
--------+---------+-----------+----------+---------
id1 | integer | | |
id2 | integer | | |
id3 | integer | | |
sss | text | | |
postgres=# vacuum FULL ANALYZE ;
VACUUM
postgres=# select pg_table_size('t1'),pg_relation_size('t1');
pg_table_size | pg_relation_size
---------------+------------------
761856 | 753664
(1 row)
postgres=# begin;
BEGIN
postgres=# alter table t1 alter COLUMN sss type bigint using substring(sss from 1 for 2)::bigint;
ALTER TABLE
postgres=# select pg_table_size('t1'),pg_relation_size('t1');
pg_table_size | pg_relation_size
---------------+------------------
57344 | 57344
(1 row)
postgres=# \d t1
Table "public.t1"
Column | Type | Collation | Nullable | Default
--------+---------+-----------+----------+---------
id1 | integer | | |
id2 | integer | | |
id3 | integer | | |
sss | bigint | | |
postgres=# select * from t1 where id1=900;
id1 | id2 | id3 | sss
-----+-----+-----+-----
900 | 900 | 900 | 90
(1 row)
postgres=# rollback ;
ROLLBACK
postgres=# \d t1
Table "public.t1"
Column | Type | Collation | Nullable | Default
--------+---------+-----------+----------+---------
id1 | integer | | |
id2 | integer | | |
id3 | integer | | |
sss | text | | |
postgres=# select pg_table_size('t1'),pg_relation_size('t1');
pg_table_size | pg_relation_size
---------------+------------------
761856 | 753664
(1 row)
postgres=#