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 по дате отправления: