Обсуждение: proposal: disallow operator "=>" and use it for named parameters
Hello
two years a operator "=>" is marked as deprecated (from PostgreSQL 9.2). Вложения
On Sat, Jan 17, 2015 at 8:27 PM, Pavel Stehule <pavel.stehule@gmail.com> wrote: > two years a operator "=>" is marked as deprecated (from PostgreSQL 9.2). > > Isn't time to use it for named parameters now (for PostgreSQL 9.5) ? I'm cool with that. It's possible that there are installations out there that still have => operators installed, but every still-supported release warns you not to do that, and the hstore change exists in three released versions. Anyway, no amount of waiting will eliminate the hazard completely. > I am sending a implementation where syntax based on "=>" symbol is second > (but preferred) variant of ":=" syntax .. syntax ":=" will be supported > still. > > Here is a patch I think you should just remove the WARNING, not change it to an error. If somebody wants to quote the operator name to be able to continue using it, I think that's OK. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
2015-01-19 4:54 GMT+01:00 Robert Haas <robertmhaas@gmail.com>:
On Sat, Jan 17, 2015 at 8:27 PM, Pavel Stehule <pavel.stehule@gmail.com> wrote:
> two years a operator "=>" is marked as deprecated (from PostgreSQL 9.2).
>
> Isn't time to use it for named parameters now (for PostgreSQL 9.5) ?
I'm cool with that. It's possible that there are installations out
there that still have => operators installed, but every
still-supported release warns you not to do that, and the hstore
change exists in three released versions. Anyway, no amount of
waiting will eliminate the hazard completely.
> I am sending a implementation where syntax based on "=>" symbol is second
> (but preferred) variant of ":=" syntax .. syntax ":=" will be supported
> still.
>
> Here is a patch
I think you should just remove the WARNING, not change it to an error.
If somebody wants to quote the operator name to be able to continue
using it, I think that's OK.
I have no problem with it. Just I'll try if there are no some unexpected problem and I'll send a updated patch
Regards
Pavel
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
2015-01-19 4:54 GMT+01:00 Robert Haas <robertmhaas@gmail.com>:
On Sat, Jan 17, 2015 at 8:27 PM, Pavel Stehule <pavel.stehule@gmail.com> wrote:
> two years a operator "=>" is marked as deprecated (from PostgreSQL 9.2).
>
> Isn't time to use it for named parameters now (for PostgreSQL 9.5) ?
I'm cool with that. It's possible that there are installations out
there that still have => operators installed, but every
still-supported release warns you not to do that, and the hstore
change exists in three released versions. Anyway, no amount of
waiting will eliminate the hazard completely.
> I am sending a implementation where syntax based on "=>" symbol is second
> (but preferred) variant of ":=" syntax .. syntax ":=" will be supported
> still.
>
> Here is a patch
I think you should just remove the WARNING, not change it to an error.
If somebody wants to quote the operator name to be able to continue
using it, I think that's OK.
It looks so quoting doesn't help here
+ CREATE OPERATOR "=>" (
+ leftarg = int8,<--><------>-- right unary
+ procedure = numeric_fac
+ );
+ ERROR: syntax error at or near "("
+ LINE 1: CREATE OPERATOR "=>" (
+ ^
+ CREATE OPERATOR "=>" (
+ leftarg = int8,<--><------>-- right unary
+ procedure = numeric_fac
+ );
+ ERROR: syntax error at or near "("
+ LINE 1: CREATE OPERATOR "=>" (
+ ^
Regards
Pavel
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
On Mon, Jan 19, 2015 at 2:59 AM, Pavel Stehule <pavel.stehule@gmail.com> wrote: >> I think you should just remove the WARNING, not change it to an error. >> If somebody wants to quote the operator name to be able to continue >> using it, I think that's OK. > > It looks so quoting doesn't help here > > + CREATE OPERATOR "=>" ( > + leftarg = int8,<--><------>-- right unary > + procedure = numeric_fac > + ); > + ERROR: syntax error at or near "(" > + LINE 1: CREATE OPERATOR "=>" ( > + ^ Well then the error check is just dead code. Either way, you don't need it. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
Pavel Stehule wrote: > It looks so quoting doesn't help here > > + CREATE OPERATOR "=>" ( > + leftarg = int8,<--><------>-- right unary > + procedure = numeric_fac > + ); > + ERROR: syntax error at or near "(" > + LINE 1: CREATE OPERATOR "=>" ( > + ^ Does it work to use OPERATOR(=>) syntax? I don't think identifier quoting works for operators. -- Álvaro Herrera http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
2015-01-19 14:30 GMT+01:00 Alvaro Herrera <alvherre@2ndquadrant.com>:
Pavel Stehule wrote:
> It looks so quoting doesn't help here
>
> + CREATE OPERATOR "=>" (
> + leftarg = int8,<--><------>-- right unary
> + procedure = numeric_fac
> + );
> + ERROR: syntax error at or near "("
> + LINE 1: CREATE OPERATOR "=>" (
> + ^
Does it work to use OPERATOR(=>) syntax? I don't think identifier
quoting works for operators.
it doesn't work too
--
Álvaro Herrera http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
2015-01-19 14:27 GMT+01:00 Robert Haas <robertmhaas@gmail.com>:
On Mon, Jan 19, 2015 at 2:59 AM, Pavel Stehule <pavel.stehule@gmail.com> wrote:
>> I think you should just remove the WARNING, not change it to an error.
>> If somebody wants to quote the operator name to be able to continue
>> using it, I think that's OK.
>
> It looks so quoting doesn't help here
>
> + CREATE OPERATOR "=>" (
> + leftarg = int8,<--><------>-- right unary
> + procedure = numeric_fac
> + );
> + ERROR: syntax error at or near "("
> + LINE 1: CREATE OPERATOR "=>" (
> + ^
Well then the error check is just dead code. Either way, you don't need it.
yes, I removed it
Regards
Pavel
Вложения
On 19/01/15 17:14, Pavel Stehule wrote: > > > 2015-01-19 14:27 GMT+01:00 Robert Haas <robertmhaas@gmail.com > <mailto:robertmhaas@gmail.com>>: > > On Mon, Jan 19, 2015 at 2:59 AM, Pavel Stehule > <pavel.stehule@gmail.com <mailto:pavel.stehule@gmail.com>> wrote: > >> I think you should just remove the WARNING, not change it to an error. > >> If somebody wants to quote the operator name to be able to continue > >> using it, I think that's OK. > > > > It looks so quoting doesn't help here > > > > + CREATE OPERATOR "=>" ( > > + leftarg = int8,<--><------>-- right unary > > + procedure = numeric_fac > > + ); > > + ERROR: syntax error at or near "(" > > + LINE 1: CREATE OPERATOR "=>" ( > > + ^ > > Well then the error check is just dead code. Either way, you don't > need it. > > > yes, I removed it > I am marking this as Ready For Committer, the patch is trivial and works as expected, there is nothing to be added to it IMHO. The "=>" operator was deprecated for several years so it should not be too controversial either. -- Petr Jelinek http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
2015-02-19 16:06 GMT+01:00 Petr Jelinek <petr@2ndquadrant.com>:
On 19/01/15 17:14, Pavel Stehule wrote:
2015-01-19 14:27 GMT+01:00 Robert Haas <robertmhaas@gmail.com
<mailto:robertmhaas@gmail.com>>:
On Mon, Jan 19, 2015 at 2:59 AM, Pavel Stehule
<pavel.stehule@gmail.com <mailto:pavel.stehule@gmail.com>> wrote:
>> I think you should just remove the WARNING, not change it to an error.
>> If somebody wants to quote the operator name to be able to continue
>> using it, I think that's OK.
>
> It looks so quoting doesn't help here
>
> + CREATE OPERATOR "=>" (
> + leftarg = int8,<--><------>-- right unary
> + procedure = numeric_fac
> + );
> + ERROR: syntax error at or near "("
> + LINE 1: CREATE OPERATOR "=>" (
> + ^
Well then the error check is just dead code. Either way, you don't
need it.
yes, I removed it
I am marking this as Ready For Committer, the patch is trivial and works as expected, there is nothing to be added to it IMHO.
The "=>" operator was deprecated for several years so it should not be too controversial either.
Thank you very much
Pavel
--
Petr Jelinek http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services
On Thu, Feb 19, 2015 at 3:15 PM, Pavel Stehule <pavel.stehule@gmail.com> wrote: >> I am marking this as Ready For Committer, the patch is trivial and works >> as expected, there is nothing to be added to it IMHO. >> >> The "=>" operator was deprecated for several years so it should not be too >> controversial either. Committed with a few documentation tweaks. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
Robert Haas <robertmhaas@gmail.com> writes: > On Thu, Feb 19, 2015 at 3:15 PM, Pavel Stehule <pavel.stehule@gmail.com> wrote: >> I am marking this as Ready For Committer, the patch is trivial and works >> as expected, there is nothing to be added to it IMHO. >> >> The "=>" operator was deprecated for several years so it should not be too >> controversial either. > Committed with a few documentation tweaks. Was there any consideration given to whether ruleutils should start printing NamedArgExprs with "=>"? Or do we think that needs to wait? regards, tom lane
2015-03-10 16:50 GMT+01:00 Tom Lane <tgl@sss.pgh.pa.us>:
Robert Haas <robertmhaas@gmail.com> writes:
> On Thu, Feb 19, 2015 at 3:15 PM, Pavel Stehule <pavel.stehule@gmail.com> wrote:
>> I am marking this as Ready For Committer, the patch is trivial and works
>> as expected, there is nothing to be added to it IMHO.
>>
>> The "=>" operator was deprecated for several years so it should not be too
>> controversial either.
> Committed with a few documentation tweaks.
Was there any consideration given to whether ruleutils should start
printing NamedArgExprs with "=>"? Or do we think that needs to wait?
I didn't think about it? I don't see any reason why it have to use deprecated syntax.
Regards
Pavel
regards, tom lane
On 10/03/15 17:01, Pavel Stehule wrote: > > > 2015-03-10 16:50 GMT+01:00 Tom Lane <tgl@sss.pgh.pa.us > <mailto:tgl@sss.pgh.pa.us>>: > > Robert Haas <robertmhaas@gmail.com <mailto:robertmhaas@gmail.com>> > writes: > > > Committed with a few documentation tweaks. > > Was there any consideration given to whether ruleutils should start > printing NamedArgExprs with "=>"? Or do we think that needs to wait? > > > I didn't think about it? I don't see any reason why it have to use > deprecated syntax. > There is one, loading the output into older version of Postgres. Don't know if that's important one though. -- Petr Jelinek http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
2015-03-10 17:07 GMT+01:00 Petr Jelinek <petr@2ndquadrant.com>:
On 10/03/15 17:01, Pavel Stehule wrote:
2015-03-10 16:50 GMT+01:00 Tom Lane <tgl@sss.pgh.pa.us
<mailto:tgl@sss.pgh.pa.us>>:
Robert Haas <robertmhaas@gmail.com <mailto:robertmhaas@gmail.com>>
writes:
> Committed with a few documentation tweaks.
Was there any consideration given to whether ruleutils should start
printing NamedArgExprs with "=>"? Or do we think that needs to wait?
I didn't think about it? I don't see any reason why it have to use
deprecated syntax.
There is one, loading the output into older version of Postgres. Don't know if that's important one though.
I don't think so it is a hard issue. We doesn't support downgrades - and if somebody needs it, it can fix it with some regexp. We should to use preferred syntax everywhere - and preferred syntax should be ANSI.
I forgot it :(
Pavel
--
Petr Jelinek http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services
On Tue, Mar 10, 2015 at 11:50 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote: > Robert Haas <robertmhaas@gmail.com> writes: >> On Thu, Feb 19, 2015 at 3:15 PM, Pavel Stehule <pavel.stehule@gmail.com> wrote: >>> I am marking this as Ready For Committer, the patch is trivial and works >>> as expected, there is nothing to be added to it IMHO. >>> >>> The "=>" operator was deprecated for several years so it should not be too >>> controversial either. > >> Committed with a few documentation tweaks. > > Was there any consideration given to whether ruleutils should start > printing NamedArgExprs with "=>"? Or do we think that needs to wait? I have to admit that I didn't consider that. What do you think? I guess I'd be tentatively in favor of changing that to match, but I could be convinced otherwise. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
Robert Haas <robertmhaas@gmail.com> writes: > On Tue, Mar 10, 2015 at 11:50 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote: >> Was there any consideration given to whether ruleutils should start >> printing NamedArgExprs with "=>"? Or do we think that needs to wait? > I have to admit that I didn't consider that. What do you think? I > guess I'd be tentatively in favor of changing that to match, but I > could be convinced otherwise. Well, as said upthread, the argument for not changing would be that it would make it easier to dump views and reload them into older PG versions. I'm not sure how big a consideration that is, or whether it outweighs possible cross-DBMS compatibility benefits of dumping the more standard syntax. Presumably we are going to change it at some point; maybe we should just do it rather than waiting another 5 years. IOW, I guess I lean mildly towards changing, but I've been beaten up enough lately about backwards-compatibility worries that I'm not going to fight for changing this. regards, tom lane
Tom Lane <tgl@sss.pgh.pa.us> wrote: > Robert Haas <robertmhaas@gmail.com> writes: >> On Tue, Mar 10, 2015 at 11:50 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote: >>> Was there any consideration given to whether ruleutils should start >>> printing NamedArgExprs with "=>"? Or do we think that needs to wait? >> >> I have to admit that I didn't consider that. What do you think? I >> guess I'd be tentatively in favor of changing that to match, but I >> could be convinced otherwise. > Presumably we are going to change it at some point; maybe we > should just do it rather than waiting another 5 years. +1 It has been deprecated long enough that I don't see the point of waiting. -- Kevin Grittner EDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
Kevin Grittner <kgrittn@ymail.com> writes: > Tom Lane <tgl@sss.pgh.pa.us> wrote: >> Presumably we are going to change it at some point; maybe we >> should just do it rather than waiting another 5 years. > +1 > It has been deprecated long enough that I don't see the point of waiting. Uh, just to clarify, this has nothing to do with how long the operator has been deprecated. The issue is whether pg_dump should dump a function-call syntax that will not be recognized by any pre-9.5 release, when there is an alternative that will be recognized back to 9.0. BTW, I just noticed another place that probably should be changed: regression=# select foo(x => 1); ERROR: 42883: function foo(x := integer) does not exist LINE 1: select foo(x => 1); ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. LOCATION: ParseFuncOrColumn, parse_func.c:516 regards, tom lane
2015-03-10 19:02 GMT+01:00 Tom Lane <tgl@sss.pgh.pa.us>:
1. funcname_signature_string
2. get_rule_expr
Kevin Grittner <kgrittn@ymail.com> writes:
> Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> Presumably we are going to change it at some point; maybe we
>> should just do it rather than waiting another 5 years.
> +1
> It has been deprecated long enough that I don't see the point of waiting.
Uh, just to clarify, this has nothing to do with how long the operator has
been deprecated. The issue is whether pg_dump should dump a function-call
syntax that will not be recognized by any pre-9.5 release, when there is
an alternative that will be recognized back to 9.0.
BTW, I just noticed another place that probably should be changed:
regression=# select foo(x => 1);
ERROR: 42883: function foo(x := integer) does not exist
LINE 1: select foo(x => 1);
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
LOCATION: ParseFuncOrColumn, parse_func.c:516
1. funcname_signature_string
2. get_rule_expr
regards, tom lane
On Tue, Mar 10, 2015 at 2:32 PM, Pavel Stehule <pavel.stehule@gmail.com> wrote: > 1. funcname_signature_string > 2. get_rule_expr Thanks. Patch attached. I'll commit this if there are no objections. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
Вложения
On Tue, Mar 10, 2015 at 02:51:30PM -0400, Robert Haas wrote: > On Tue, Mar 10, 2015 at 2:32 PM, Pavel Stehule <pavel.stehule@gmail.com> wrote: > > 1. funcname_signature_string > > 2. get_rule_expr > > Thanks. Patch attached. I'll commit this if there are no objections. Robert, are you going to apply this? -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + Everyone has their own god. +
<p dir="ltr">It is done<div class="gmail_quote">Dne 1.5.2015 3:11 napsal uživatel "Bruce Momjian" <<a href="mailto:bruce@momjian.us">bruce@momjian.us</a>>:<brtype="attribution" /><blockquote class="gmail_quote" style="margin:00 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Tue, Mar 10, 2015 at 02:51:30PM -0400, Robert Haaswrote:<br /> > On Tue, Mar 10, 2015 at 2:32 PM, Pavel Stehule <<a href="mailto:pavel.stehule@gmail.com">pavel.stehule@gmail.com</a>>wrote:<br /> > > 1. funcname_signature_string<br/> > > 2. get_rule_expr<br /> ><br /> > Thanks. Patch attached. I'll commit thisif there are no objections.<br /><br /> Robert, are you going to apply this?<br /><br /> --<br /> Bruce Momjian <<ahref="mailto:bruce@momjian.us">bruce@momjian.us</a>> <a href="http://momjian.us" target="_blank">http://momjian.us</a><br/> EnterpriseDB <a href="http://enterprisedb.com" target="_blank">http://enterprisedb.com</a><br/><br /> + Everyone has their own god. +<br /></blockquote></div>
On Fri, May 1, 2015 at 05:25:53AM +0200, Pavel Stehule wrote: > It is done Uh, I am not sure why you say that as I don't see any commit related to this. Can you show me the commit? --------------------------------------------------------------------------- > > Dne 1.5.2015 3:11 napsal uživatel "Bruce Momjian" <bruce@momjian.us>: > > On Tue, Mar 10, 2015 at 02:51:30PM -0400, Robert Haas wrote: > > On Tue, Mar 10, 2015 at 2:32 PM, Pavel Stehule <pavel.stehule@gmail.com> > wrote: > > > 1. funcname_signature_string > > > 2. get_rule_expr > > > > Thanks. Patch attached. I'll commit this if there are no objections. > > Robert, are you going to apply this? > > -- > Bruce Momjian <bruce@momjian.us> http://momjian.us > EnterpriseDB http://enterprisedb.com > > + Everyone has their own god. + > -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + Everyone has their own god. +
On 01/05/15 15:01, Bruce Momjian wrote: > On Fri, May 1, 2015 at 05:25:53AM +0200, Pavel Stehule wrote: >> It is done > > Uh, I am not sure why you say that as I don't see any commit related to > this. Can you show me the commit? > 865f14a2d31af23a05bbf2df04c274629c5d5c4d -- Petr Jelinek http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
On Fri, May 1, 2015 at 03:13:28PM +0200, Petr Jelinek wrote: > On 01/05/15 15:01, Bruce Momjian wrote: > >On Fri, May 1, 2015 at 05:25:53AM +0200, Pavel Stehule wrote: > >>It is done > > > >Uh, I am not sure why you say that as I don't see any commit related to > >this. Can you show me the commit? > > > > 865f14a2d31af23a05bbf2df04c274629c5d5c4d But that doesn't touch these: 1. funcname_signature_string2. get_rule_expr which is what Robert's later patch did: http://www.postgresql.org/message-id/CA+TgmobCMF7F50+feJpcLR8E_Lyv45AYXBSdiog-NS7VLuFopg@mail.gmail.com -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + Everyone has their own god. +
On 01/05/15 15:17, Bruce Momjian wrote: > On Fri, May 1, 2015 at 03:13:28PM +0200, Petr Jelinek wrote: >> On 01/05/15 15:01, Bruce Momjian wrote: >>> On Fri, May 1, 2015 at 05:25:53AM +0200, Pavel Stehule wrote: >>>> It is done >>> >>> Uh, I am not sure why you say that as I don't see any commit related to >>> this. Can you show me the commit? >>> >> >> 865f14a2d31af23a05bbf2df04c274629c5d5c4d > > But that doesn't touch these: > > 1. funcname_signature_string > 2. get_rule_expr > > which is what Robert's later patch did: > > http://www.postgresql.org/message-id/CA+TgmobCMF7F50+feJpcLR8E_Lyv45AYXBSdiog-NS7VLuFopg@mail.gmail.com > Oh, now I see what you mean, yeah that does not appear to have been committed. -- Petr Jelinek http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
On Thu, Apr 30, 2015 at 9:11 PM, Bruce Momjian <bruce@momjian.us> wrote: > On Tue, Mar 10, 2015 at 02:51:30PM -0400, Robert Haas wrote: >> On Tue, Mar 10, 2015 at 2:32 PM, Pavel Stehule <pavel.stehule@gmail.com> wrote: >> > 1. funcname_signature_string >> > 2. get_rule_expr >> >> Thanks. Patch attached. I'll commit this if there are no objections. > > Robert, are you going to apply this? Good catch. I had totally forgotten about this. Committed now, thanks. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company