Re: Disallow arrays with non-standard lower bounds

Поиск
Список
Период
Сортировка
От Jim Nasby
Тема Re: Disallow arrays with non-standard lower bounds
Дата
Msg-id 52D49123.9010006@nasby.net
обсуждение исходный текст
Ответ на Re: Disallow arrays with non-standard lower bounds  (Kevin Grittner <kgrittn@ymail.com>)
Список pgsql-hackers
On 1/13/14, 7:10 PM, Kevin Grittner wrote:
> Tom Lane<tgl@sss.pgh.pa.us>  wrote:
>
>> >I think the argument really is that some people don't want to
>> >make their application code work with such cases (which is fine)
>> >so they'd like an inside-the-database guarantee that the app code
>> >won't ever see such cases.  Which is less fine, ISTM: if you fear
>> >some part of your app might be generating such arrays, then you
>> >don't have such little use for the feature after all, eh?
> While I don't see the argument for dropping support for lower
> bounds other than 1 as long as standard syntax for creating arrays
> yields arrays staring at 1, this argument holds no water at all.  I
> have done too many conversions from databases which did not enforce
> data integrity rules not to have a lot of sympathy for people
> wanting to have the ability to easily constrain data to whatever
> their business rules say it should look like.  The fact that some
> day some new programmer might not be aware of all business rules,
> or might choose to try to ignore them is the reason you add
> constraints to columns and domains.
>
> I think providing functions that make it easy to enforce this rule
> make a lot of sense, as it would make a lot of application code
> simpler, easier to read, and less fragile.  I support overloading
> functions with simpler parameter lists for standard-conforming
> arrays; I don't support dropping support for whoever might be using
> non-conforming arrays.  A veriable lower bound is an extension to
> the standard, and extensions are fine.

To be clear: I am completely fine with continuing to support custom lower bounds (to quote my original email:
"Obviouslywe can't just drop support, but what about an initdb (or hell, even configure) option to disallow arrays with
alower bound <> 1?").
 

It might also be possible to protect users on the access side instead: provide alternate functions that protect you if
youpass them an array that does have a custom lower bound. But I'm not so sure that'll work out, since one of the
biggestoffenders here is:
 

FOR i IN 1..array_upper(some_array) LOOP.

Yes, today you can use FOREACH, but what about all your legacy code that's ass-u-ming that the lower bound is 1?
-- 
Jim C. Nasby, Data Architect                       jim@nasby.net
512.569.9461 (cell)                         http://jim.nasby.net



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

Предыдущее
От: Kevin Grittner
Дата:
Сообщение: Re: Disallow arrays with non-standard lower bounds
Следующее
От: Andres Freund
Дата:
Сообщение: Re: [Lsf-pc] Linux kernel impact on PostgreSQL performance