Re: [PATCHES] Proposed patch for sequence-renaming problems
От | Bruce Momjian |
---|---|
Тема | Re: [PATCHES] Proposed patch for sequence-renaming problems |
Дата | |
Msg-id | 200510011810.j91IAfQ08710@candle.pha.pa.us обсуждение исходный текст |
Ответ на | Re: [PATCHES] Proposed patch for sequence-renaming problems (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: [PATCHES] Proposed patch for sequence-renaming problems
|
Список | pgsql-hackers |
Tom Lane wrote: > Bruce Momjian <pgman@candle.pha.pa.us> writes: > > Tom Lane wrote: > >> Ripping out ALTER SCHEMA RENAME is not a solution unless you have a path > >> to a solution later with more work. > > > Well, we are only giving ourselves a few weeks to solve this, and I > > think a hack to make it work cleanly for users is better than supporting > > two function names perpetually. > > Well, if you are dead set on having only one function name, then I think > the best solution is this: > > * only one function, taking regclass > > * add an implicit text-to-regclass coercion > > With this, nextval('foo') is early binding and nextval('foo'::text) is > late binding, and existing dumps are going to continue to behave as late > binding unless changed manually. > > The implicit coercion is a bit risky, but in practice these are likely > to be the only functions in the system that are declared to take > regclass, so the odds of the implicit coercion firing unexpectedly seem > low. > > Does that sound like a workable compromise? Personally, I _love_ it. I hope others do as well. :-) Let me explain why I thought two function names would be confusing. We have been telling people to use nextval() since we added sequences in 6.4, and since 99% of people would want early binding (with dependencies), I think making them all move to a new function name would be a long-running education effort. If it can be avoided, that is better. I think the solution you propose is great because: o it fixes SERIAL dependencyo it allows old dumps to load with no change in behavioro it allows new nextval() calls tohave early binding, unless ::text is used In fact, the use of ::text is dump is the only thing that is _allowing_ this migration idea to work. I think I can easily explain this issue in the release notes, and show how users can update their schemas to the new behavior. -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001+ If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania19073
В списке pgsql-hackers по дате отправления: