Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitb12b7a9

Browse files
committed
Change the notation for calling functions with named parameters from
"val AS name" to "name := val", as per recent discussion.This patch catches everything in the original named-parameters patch,but I'm not certain that no other dependencies snuck in later (greppingthe source tree for all uses of AS soon proved unworkable).In passing I note that we've dropped the ball at least once on keepingecpg's lexer (as opposed to parser) in sync with the backend. It wouldbe a good idea to go through all of pgc.l and see if it's in sync now.I didn't attempt that at the moment.
1 parent2bde07c commitb12b7a9

File tree

11 files changed

+105
-102
lines changed

11 files changed

+105
-102
lines changed

‎doc/src/sgml/syntax.sgml

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<!-- $PostgreSQL: pgsql/doc/src/sgml/syntax.sgml,v 1.144 2010/05/27 18:23:47 petere Exp $ -->
1+
<!-- $PostgreSQL: pgsql/doc/src/sgml/syntax.sgml,v 1.145 2010/05/30 18:10:40 tgl Exp $ -->
22

33
<chapter id="sql-syntax">
44
<title>SQL Syntax</title>
@@ -2285,10 +2285,11 @@ SELECT concat_lower_or_upper('Hello', 'World');
22852285
</indexterm>
22862286

22872287
<para>
2288-
In named notation, each argument's name is specified using the
2289-
<literal>AS</literal> keyword. For example:
2288+
In named notation, each argument's name is specified using
2289+
<literal>:=</literal> to separate it from the argument expression.
2290+
For example:
22902291
<screen>
2291-
SELECT concat_lower_or_upper('Hello' AS a, 'World' AS b);
2292+
SELECT concat_lower_or_upper(a :='Hello', b := 'World');
22922293
concat_lower_or_upper
22932294
-----------------------
22942295
hello world
@@ -2299,13 +2300,13 @@ SELECT concat_lower_or_upper('Hello' AS a, 'World' AS b);
22992300
using named notation is that the arguments may be specified in any
23002301
order, for example:
23012302
<screen>
2302-
SELECT concat_lower_or_upper('Hello' AS a, 'World' AS b, true AS uppercase);
2303+
SELECT concat_lower_or_upper(a :='Hello', b := 'World', uppercase := true);
23032304
concat_lower_or_upper
23042305
-----------------------
23052306
HELLO WORLD
23062307
(1 row)
23072308

2308-
SELECT concat_lower_or_upper('Hello' AS a, true AS uppercase, 'World' AS b);
2309+
SELECT concat_lower_or_upper(a :='Hello', uppercase := true, b := 'World');
23092310
concat_lower_or_upper
23102311
-----------------------
23112312
HELLO WORLD
@@ -2327,7 +2328,7 @@ SELECT concat_lower_or_upper('Hello' AS a, true AS uppercase, 'World' AS b);
23272328
already mentioned, named arguments cannot precede positional arguments.
23282329
For example:
23292330
<screen>
2330-
SELECT concat_lower_or_upper('Hello', 'World',true AS uppercase);
2331+
SELECT concat_lower_or_upper('Hello', 'World',uppercase := true);
23312332
concat_lower_or_upper
23322333
-----------------------
23332334
HELLO WORLD

‎doc/src/sgml/xfunc.sgml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<!-- $PostgreSQL: pgsql/doc/src/sgml/xfunc.sgml,v 1.148 2010/05/16 04:35:04 rhaas Exp $ -->
1+
<!-- $PostgreSQL: pgsql/doc/src/sgml/xfunc.sgml,v 1.149 2010/05/30 18:10:40 tgl Exp $ -->
22

33
<sect1 id="xfunc">
44
<title>User-Defined Functions</title>
@@ -705,14 +705,14 @@ SELECT mleast(VARIADIC ARRAY[10, -1, 5, 4.4]);
705705
<literal>VARIADIC</>. For example, this will work:
706706

707707
<screen>
708-
SELECT mleast(VARIADIC ARRAY[10, -1, 5, 4.4] AS arr);
708+
SELECT mleast(VARIADICarr :=ARRAY[10, -1, 5, 4.4]);
709709
</screen>
710710

711711
but not these:
712712

713713
<screen>
714-
SELECT mleast(10 AS arr);
715-
SELECT mleast(ARRAY[10, -1, 5, 4.4] AS arr);
714+
SELECT mleast(arr := 10);
715+
SELECT mleast(arr :=ARRAY[10, -1, 5, 4.4]);
716716
</screen>
717717
</para>
718718
</sect2>

‎src/backend/parser/gram.y

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
*
1212
*
1313
* IDENTIFICATION
14-
* $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.711 2010/02/23 22:51:42 tgl Exp $
14+
* $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.712 2010/05/30 18:10:40 tgl Exp $
1515
*
1616
* HISTORY
1717
* AUTHORDATEMAJOR EVENT
@@ -444,8 +444,8 @@ static TypeName *TableFuncTypeName(List *columns);
444444
* the set of keywords. PL/pgsql depends on this so that it can share the
445445
* same lexer. If you add/change tokens here, fix PL/pgsql to match!
446446
*
447-
* DOT_DOTand COLON_EQUALS areunused in the core SQL grammar, and so will
448-
*always provokeparse errors.They are needed by PL/pgsql.
447+
* DOT_DOTisunused in the core SQL grammar, and so will always provoke
448+
* parse errors.It is needed by PL/pgsql.
449449
*/
450450
%token<str>IDENTFCONSTSCONSTBCONSTXCONSTOp
451451
%token<ival>ICONSTPARAM
@@ -10212,13 +10212,13 @@ func_arg_expr: a_expr
1021210212
{
1021310213
$$ = $1;
1021410214
}
10215-
|a_expr AS param_name
10215+
|param_name COLON_EQUALS a_expr
1021610216
{
1021710217
NamedArgExpr *na =makeNode(NamedArgExpr);
10218-
na->arg = (Expr *) $1;
10219-
na->name = $3;
10218+
na->name = $1;
10219+
na->arg = (Expr *) $3;
1022010220
na->argnumber = -1;/* until determined*/
10221-
na->location = @3;
10221+
na->location = @1;
1022210222
$$ = (Node *) na;
1022310223
}
1022410224
;
@@ -10698,7 +10698,7 @@ AexprConst: Iconst
1069810698
if (IsA(arg, NamedArgExpr))
1069910699
ereport(ERROR,
1070010700
(errcode(ERRCODE_SYNTAX_ERROR),
10701-
errmsg("type modifier cannot haveAS name"),
10701+
errmsg("type modifier cannot haveparameter name"),
1070210702
parser_errposition(arg->location)));
1070310703
}
1070410704
t->typmods = $3;

‎src/backend/parser/parse_func.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $PostgreSQL: pgsql/src/backend/parser/parse_func.c,v 1.223 2010/03/17 16:52:38 tgl Exp $
11+
* $PostgreSQL: pgsql/src/backend/parser/parse_func.c,v 1.224 2010/05/30 18:10:40 tgl Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -1386,12 +1386,12 @@ funcname_signature_string(const char *funcname, int nargs,
13861386
{
13871387
if (i)
13881388
appendStringInfoString(&argbuf,", ");
1389-
appendStringInfoString(&argbuf,format_type_be(argtypes[i]));
13901389
if (i >=numposargs)
13911390
{
1392-
appendStringInfo(&argbuf," AS %s", (char*)lfirst(lc));
1391+
appendStringInfo(&argbuf,"%s :=", (char*)lfirst(lc));
13931392
lc=lnext(lc);
13941393
}
1394+
appendStringInfoString(&argbuf,format_type_be(argtypes[i]));
13951395
}
13961396

13971397
appendStringInfoChar(&argbuf,')');

‎src/backend/parser/scan.l

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
* Portions Copyright (c) 1994, Regents of the University of California
2525
*
2626
* IDENTIFICATION
27-
* $PostgreSQL: pgsql/src/backend/parser/scan.l,v 1.166 2010/01/16 17:39:55 tgl Exp $
27+
* $PostgreSQL: pgsql/src/backend/parser/scan.l,v 1.167 2010/05/30 18:10:41 tgl Exp $
2828
*
2929
*-------------------------------------------------------------------------
3030
*/
@@ -317,8 +317,6 @@ ident_cont[A-Za-z\200-\377_0-9\$]
317317
identifier{ident_start}{ident_cont}*
318318

319319
typecast"::"
320-
321-
/* these two token types are used by PL/pgsql, though not in core SQL */
322320
dot_dot\.\.
323321
colon_equals":="
324322

‎src/backend/utils/adt/ruleutils.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*
1010
*
1111
* IDENTIFICATION
12-
* $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.325 2010/02/26 02:01:09 momjian Exp $
12+
* $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.326 2010/05/30 18:10:41 tgl Exp $
1313
*
1414
*-------------------------------------------------------------------------
1515
*/
@@ -4537,8 +4537,8 @@ get_rule_expr(Node *node, deparse_context *context,
45374537
{
45384538
NamedArgExpr*na= (NamedArgExpr*)node;
45394539

4540+
appendStringInfo(buf,"%s := ",quote_identifier(na->name));
45404541
get_rule_expr((Node*)na->arg,context,showimplicit);
4541-
appendStringInfo(buf," AS %s",quote_identifier(na->name));
45424542
}
45434543
break;
45444544

‎src/bin/psql/psqlscan.l

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
* Portions Copyright (c) 1994, Regents of the University of California
3434
*
3535
* IDENTIFICATION
36-
* $PostgreSQL: pgsql/src/bin/psql/psqlscan.l,v 1.33 2010/05/05 22:18:56 tgl Exp $
36+
* $PostgreSQL: pgsql/src/bin/psql/psqlscan.l,v 1.34 2010/05/3018:10:41 tgl Exp $
3737
*
3838
*-------------------------------------------------------------------------
3939
*/
@@ -345,8 +345,6 @@ ident_cont[A-Za-z\200-\377_0-9\$]
345345
identifier{ident_start}{ident_cont}*
346346

347347
typecast"::"
348-
349-
/* these two token types are used by PL/pgsql, though not in core SQL*/
350348
dot_dot\.\.
351349
colon_equals":="
352350

‎src/interfaces/ecpg/preproc/parse.pl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/usr/bin/perl
2-
# $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/parse.pl,v 1.7 2010/01/02 16:58:11 momjian Exp $
2+
# $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/parse.pl,v 1.8 2010/05/30 18:10:41 tgl Exp $
33
# parser generater for ecpg
44
# call with backend parser as stdin
55
#
@@ -41,6 +41,8 @@
4141
$replace_string{'NULLS_FIRST'} ='nulls first';
4242
$replace_string{'NULLS_LAST'} ='nulls last';
4343
$replace_string{'TYPECAST'} ='::';
44+
$replace_string{'DOT_DOT'} ='..';
45+
$replace_string{'COLON_EQUALS'} =':=';
4446

4547
# specific replace_types for specific non-terminals - never include the ':'
4648
# ECPG-only replace_types are defined in ecpg-replace_types

‎src/interfaces/ecpg/preproc/pgc.l

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
*
1313
*
1414
* IDENTIFICATION
15-
* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.173 2010/03/2110:49:51 meskes Exp $
15+
* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.174 2010/05/30 18:10:41 tgl Exp $
1616
*
1717
*-------------------------------------------------------------------------
1818
*/
@@ -230,6 +230,8 @@ identifier{ident_start}{ident_cont}*
230230

231231
array({ident_cont}|{whitespace}|[\[\]\+\-\*\%\/\(\)\>\.])*
232232
typecast"::"
233+
dot_dot\.\.
234+
colon_equals":="
233235

234236
/*
235237
* "self" is the set of chars that should be returned as single-character
@@ -595,6 +597,8 @@ cppline{space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})(.*\\{space})*.
595597
}
596598
<xdc>{xdcinside}{addlit(yytext, yyleng); }
597599
<SQL>{typecast}{return TYPECAST; }
600+
<SQL>{dot_dot}{return DOT_DOT; }
601+
<SQL>{colon_equals}{return COLON_EQUALS; }
598602
<SQL>{informix_special}{
599603
/* are we simulating Informix? */
600604
if (INFORMIX_MODE)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp