Ashutosh Bapat <ashutosh.bapat....@gmail.com> writes:
> On Sun, Feb 18, 2024 at 1:59 PM Andy Fan <zhihuifan1...@163.com> wrote: >> >> >> I tried your idea with the attatchment, it is still in a drafted state >> but it can be used as a prove-of-concept and for better following >> communicating. Just one point needs to metion is serial implies >> "default value" + "not null" constaint. So when we modify a column into >> serial, we need to modify the 'NULL value' and only to the default value >> at the RewriteTable stage. >> > > I am surprised that this requires changes in ReWrite. I thought adding > NOT NULL constraint and default value commands would be done by > transformColumnDefinition(). But I haven't looked at the patch close > enough. Hmm, I think this depends on how to handle the NULL values before the RewriteTable. Consider the example like this: \pset null (null) create table t(a int); insert into t select 1; insert into t select; postgres=# select * from t; a -------- 1 (null) (2 rows) since serial type implies "not null" + "default value", shall we raise error or fill the value with the "default" value? The patch choose the later way which needs changes in RewirteTable stage, but now I think the raise error directly is an option as well. -- Best Regards Andy Fan