Обсуждение: AW: [HACKERS] Re: atttypmod of 0
Yes, I think to change atttypmod to default to -1 would be the right thing, since the empty string '' really has a length of 0, We could think of -1 as: We don't know how long this field will be. 0 would mean the field has 0 bytes. Andreas > > > > This time it's during the parser (gdb told me). varcharin() > > is called with a atttypmod of 0 causing a palloc() of 0 > > bytes. How should a VARCHAR type whithout a specified length > > behave? Is this type 1 character or a variable size up to > > 4096? > > > > I thought we fixed this on Feb 3. look at > > parse_expr.c line 104: it should read: > > if (con->typename != NULL) > > ! result = > parser_typecast(val, > > con->typename, -1); > > else > > > > I think all funcs calling with atttypmod = 0 are allways wrong, > should > > be -1. > > or a number > 0 (or 4 if atttypmod includes the VARHDRSZ don't know) > > > > > Andreas > > > > > > Yes, we did, but now I fixed varcharin, and bpcharin to test for > atttypmod of 0 and do the right thing, I think. If we need to make > the > default atttypmod value -1, then we can change it back. Let me know > if > the current fix does not work. > > Should I make atttypmod default to -1? > > -- > Bruce Momjian > maillist@candle.pha.pa.us > >
> > Yes, I think to change atttypmod to default to -1 would be the right > thing, > since the empty string '' really has a length of 0, > We could think of -1 as: We don't know how long this field will be. > 0 would mean the field has 0 bytes. Field has varlena == 4, so zero is not possible, but I could still change to -1 for clarity. -- Bruce Momjian maillist@candle.pha.pa.us
> > Yes, I think to change atttypmod to default to -1 would be the right > thing, > since the empty string '' really has a length of 0, > We could think of -1 as: We don't know how long this field will be. > 0 would mean the field has 0 bytes. Do people want atttypmod at -1 at this time? It will require a dump/reload. -- Bruce Momjian maillist@candle.pha.pa.us
> > Yes, I think to change atttypmod to default to -1 would be the right > > thing, > > since the empty string '' really has a length of 0, > > We could think of -1 as: We don't know how long this field will be. > > 0 would mean the field has 0 bytes. > > Do people want atttypmod at -1 at this time? It will require a > dump/reload. If it fixes problems, now is the time :)
> > > > Yes, I think to change atttypmod to default to -1 would be the right > > > thing, > > > since the empty string '' really has a length of 0, > > > We could think of -1 as: We don't know how long this field will be. > > > 0 would mean the field has 0 bytes. > > > > Do people want atttypmod at -1 at this time? It will require a > > dump/reload. > > If it fixes problems, now is the time :) Well, right now, since it is not being used from anything by char() and varchar(), it is not a problem. But it will have to be changed when we use it for other types. So do we change it now? -- Bruce Momjian maillist@candle.pha.pa.us
> > > > Yes, I think to change atttypmod to default to -1 would be the right > > > > thing, > > > > since the empty string '' really has a length of 0, > > > > We could think of -1 as: We don't know how long this field will be. > > > > 0 would mean the field has 0 bytes. > > > > > > Do people want atttypmod at -1 at this time? It will require a > > > dump/reload. > > > > If it fixes problems, now is the time :) > > Well, right now, since it is not being used from anything by char() and > varchar(), it is not a problem. But it will have to be changed when we > use it for other types. > > So do we change it now? If it make things more self-consistant, now is the time :) I would consider all of this related to or a followup on the char/varchar work done earlier. - Tom
> > So do we change it now? > > If it make things more self-consistant, now is the time :) > > I would consider all of this related to or a followup on the char/varchar > work done earlier. OK -- Bruce Momjian maillist@candle.pha.pa.us
> > > > > Yes, I think to change atttypmod to default to -1 would be the right > > thing, > > since the empty string '' really has a length of 0, > > We could think of -1 as: We don't know how long this field will be. > > 0 would mean the field has 0 bytes. > > Do people want atttypmod at -1 at this time? It will require a > dump/reload. OK, atttypmod now defaults to -1. Initdb everyone. -- Bruce Momjian maillist@candle.pha.pa.us