Re: [HACKERS] rollback varchar change

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: [HACKERS] rollback varchar change
Дата
Msg-id 199801080507.AAA07928@candle.pha.pa.us
обсуждение исходный текст
Ответ на Re: [HACKERS] rollback varchar change  ("Vadim B. Mikheev" <vadim@sable.krasnoyarsk.su>)
Список pgsql-hackers
>
> Bruce Momjian wrote:
> >
> > I have found that the varchar() change I made requires a new
> > pg_attribute field, so I am rolling back the change until I get a fully
>   ^^^^^^^^^^^^^^^^^^
>
> Please try some other way. As I remember, you said about breaking
> vl_len into 2 parts - very nice for me, but I'd recommend to leave
> varlena as is and add new structure - for compatibility and to allow
> text (etc) be longer 2^16 someday (multi-representation feature).
> Just like attlen -1 is used in many parts of code to flag varlena,
> you could use -2 to flag new structure.

OK, I have now figured out that my original idea was sound.  The only
problem is that I started using VARSIZE in varchar.c instead of the old
vcTruelen() function.  It turns out that constants have the full length
of the type with trailing nulls, and the disk data doesn't.  I put the
old comparison function back, and it seems to be working just fine now.

I will look through the code some more to make sure we are safe.  The
regression tests pass, so it must be working pefectly :-)  The attlen
field must contain -1 so it knows it is a varlena, and just references
the real attribute length when it needs to do some creation things.

That works fine for my purposes.

--
Bruce Momjian
maillist@candle.pha.pa.us

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: varchar() change
Следующее
От: "Vadim B. Mikheev"
Дата:
Сообщение: Re: [HACKERS] varchar() change