Re: Re: [HACKERS] Is it necessaryto rewrite table while increasing the scale of datatype numeric?
От | wangshuo@highgo.com.cn |
---|---|
Тема | Re: Re: [HACKERS] Is it necessaryto rewrite table while increasing the scale of datatype numeric? |
Дата | |
Msg-id | ff308b974170fb49e796ecc6973559f0@highgo.com.cn обсуждение исходный текст |
Ответ на | Re: [HACKERS] Re: [HACKERS] Is it necessary to rewrite table while increasing the scale of datatype numeric? (Kevin Grittner <kgrittn@ymail.com>) |
Список | pgsql-hackers |
> "wangshuo@highgo.com.cn" <wangshuo@highgo.com.cn> wrote: > >> I modified the code for this situation.I consider it very simple. > >> It will does not modify the table file, when the scale has been >> increased exclusively. > Kevin Grittner <kgrittn@ymail.com> wrote: > This patch would allow data in a column which was not consistent > with the column definition: > > test=# create table n (val numeric(5,2)); > CREATE TABLE > test=# insert into n values ('123.45'); > INSERT 0 1 > test=# select * from n; > val > -------- > 123.45 > (1 row) > > test=# alter table n alter column val type numeric(5,4); > ALTER TABLE > test=# select * from n; > val > -------- > 123.45 > (1 row) > > Without your patch the ALTER TABLE command gets this error (as it > should): > > test=# alter table n alter column val type numeric(5,4); > ERROR: numeric field overflow > DETAIL: A field with precision 5, scale 4 must round to an absolute > value less than 10^1. > > -- > Kevin Grittner > EDB: http://www.enterprisedb.com > The Enterprise PostgreSQL Company Thanks for your reply and test. I had added a new function named ATNumericColumnChangeRequiresCheck to check the data when the scale of numeric increase. Now,the ALTER TABLE command could prompt this error: postgres=# alter table tt alter COLUMN t1 type numeric (5,4); ERROR: numeric field overflow DETAIL: A field with precision 5, scale 4 must round to an absolute value less than 10^1. STATEMENT: alter table tt alter COLUMN t1 type numeric (5,4); ERROR: numeric field overflow DETAIL: A field with precision 5, scale 4 must round to an absolute value less than 10^1. I packed a new patch about this modification. I think this ' altering field type model ' could modify all the type in database. Make different modification to column‘s datatype for different situation. For example when you modify the scale of numeric, if you think that the 5.0 and 5.00 is different, the table file must be rewritten; otherwise, needn't be rewritten. Wang Shuo HighGo Software Co.,Ltd. September 16, 2013
Вложения
В списке pgsql-hackers по дате отправления: