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

Commit8b84aeb

Browse files
committed
Add BETWEEN SYMMETRIC.
Pavel Stehule
1 parent495f9aa commit8b84aeb

File tree

3 files changed

+50
-11
lines changed

3 files changed

+50
-11
lines changed

‎doc/src/sgml/func.sgml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<!--
2-
$PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.255 2005/06/1421:04:38 momjian Exp $
2+
$PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.256 2005/06/1423:47:39 momjian Exp $
33
PostgreSQL documentation
44
-->
55

@@ -282,6 +282,12 @@ PostgreSQL documentation
282282
There is no difference between the two respective forms apart from
283283
the <acronym>CPU</acronym> cycles required to rewrite the first one
284284
into the second one internally.
285+
<indexterm>
286+
<primary>BETWEEN SYMETRIC</primary>
287+
</indexterm>
288+
<token>BETWEEN SYMMETRIC</> is the same as <literal>BETWEEN</>
289+
except there is no requirement that the argument to the left of <literal>AND</> be less than
290+
or equal to the argument on the right; the proper range is automatically determined.
285291
</para>
286292

287293
<para>

‎src/backend/parser/gram.y

Lines changed: 40 additions & 9 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.492 2005/06/08 21:15:28 tgl Exp $
14+
* $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.493 2005/06/14 23:47:39 momjian Exp $
1515
*
1616
* HISTORY
1717
* AUTHORDATEMAJOR EVENT
@@ -338,7 +338,7 @@ static void doNegateFloat(Value *v);
338338
/* ordinary key words in alphabetical order*/
339339
%token<keyword>ABORT_PABSOLUTE_PACCESSACTIONADDAFTER
340340
AGGREGATE ALL ALSO ALTER ANALYSE ANALYZE AND ANY ARRAY AS ASC
341-
ASSERTION ASSIGNMENT AT AUTHORIZATION
341+
ASSERTION ASSIGNMENTASYMMETRICAT AUTHORIZATION
342342

343343
BACKWARD BEFORE BEGIN_P BETWEEN BIGINT BINARY BIT
344344
BOOLEAN_P BOTH BY
@@ -399,7 +399,8 @@ static void doNegateFloat(Value *v);
399399
SAVEPOINT SCHEMA SCROLL SECOND_P SECURITY SELECT SEQUENCE
400400
SERIALIZABLE SESSION SESSION_USER SET SETOF SHARE
401401
SHOW SIMILAR SIMPLE SMALLINT SOME STABLE START STATEMENT
402-
STATISTICS STDIN STDOUT STORAGE STRICT_P SUBSTRING SYSID
402+
STATISTICS STDIN STDOUT STORAGE STRICT_P SUBSTRING SYMMETRIC
403+
SYSID
403404

404405
TABLE TABLESPACE TEMP TEMPLATE TEMPORARY THEN TIME TIMESTAMP
405406
TO TOAST TRAILING TRANSACTION TREAT TRIGGER TRIM TRUE_P
@@ -6333,18 +6334,41 @@ a_expr:c_expr{ $$ = $1; }
63336334
{
63346335
$$ = (Node *) makeSimpleA_Expr(AEXPR_OF,"!=",$1, (Node *)$6);
63356336
}
6336-
| a_expr BETWEEN b_expr AND b_expr%prec BETWEEN
6337+
| a_expr BETWEENopt_asymmetricb_expr AND b_expr%prec BETWEEN
63376338
{
63386339
$$ = (Node *) makeA_Expr(AEXPR_AND, NIL,
6339-
(Node *) makeSimpleA_Expr(AEXPR_OP,">=",$1,$3),
6340-
(Node *) makeSimpleA_Expr(AEXPR_OP,"<=",$1,$5));
6340+
(Node *) makeSimpleA_Expr(AEXPR_OP,">=",$1,$4),
6341+
(Node *) makeSimpleA_Expr(AEXPR_OP,"<=",$1,$6));
63416342
}
6342-
| a_expr NOT BETWEEN b_expr AND b_expr%prec BETWEEN
6343+
| a_expr NOT BETWEENopt_asymmetricb_expr AND b_expr%prec BETWEEN
63436344
{
63446345
$$ = (Node *) makeA_Expr(AEXPR_OR, NIL,
6345-
(Node *) makeSimpleA_Expr(AEXPR_OP,"<",$1,$4),
6346-
(Node *) makeSimpleA_Expr(AEXPR_OP,">",$1,$6));
6346+
(Node *) makeSimpleA_Expr(AEXPR_OP,"<",$1,$5),
6347+
(Node *) makeSimpleA_Expr(AEXPR_OP,">",$1,$7));
63476348
}
6349+
6350+
| a_expr BETWEEN SYMMETRIC b_expr AND b_expr%prec BETWEEN
6351+
{
6352+
$$ = (Node *) makeA_Expr(AEXPR_OR, NIL,
6353+
(Node *) makeA_Expr(AEXPR_AND, NIL,
6354+
(Node *) makeSimpleA_Expr(AEXPR_OP,">=",$1,$4),
6355+
(Node *) makeSimpleA_Expr(AEXPR_OP,"<=",$1,$6)),
6356+
(Node *) makeA_Expr(AEXPR_AND, NIL,
6357+
(Node *) makeSimpleA_Expr(AEXPR_OP,">=",$1,$6),
6358+
(Node *) makeSimpleA_Expr(AEXPR_OP,"<=",$1,$4)));
6359+
}
6360+
| a_expr NOT BETWEEN SYMMETRIC b_expr AND b_expr%prec BETWEEN
6361+
{
6362+
$$ = (Node *) makeA_Expr(AEXPR_AND, NIL,
6363+
(Node *) makeA_Expr(AEXPR_OR, NIL,
6364+
(Node *) makeSimpleA_Expr(AEXPR_OP,"<",$1,$5),
6365+
(Node *) makeSimpleA_Expr(AEXPR_OP,">",$1,$7)),
6366+
(Node *) makeA_Expr(AEXPR_OR, NIL,
6367+
(Node *) makeSimpleA_Expr(AEXPR_OP,"<",$1,$7),
6368+
(Node *) makeSimpleA_Expr(AEXPR_OP,">",$1,$5)));
6369+
}
6370+
6371+
63486372
| a_expr IN_P in_expr
63496373
{
63506374
/* in_expr returns a SubLink or a list of a_exprs*/
@@ -6443,6 +6467,11 @@ a_expr:c_expr{ $$ = $1; }
64436467
}
64446468
;
64456469

6470+
opt_asymmetric:ASYMMETRIC{}
6471+
|/*EMPTY*/{}
6472+
;
6473+
6474+
64466475
/*
64476476
* Restricted expressions
64486477
*
@@ -7721,6 +7750,7 @@ unreserved_keyword:
77217750
| ALTER
77227751
| ASSERTION
77237752
| ASSIGNMENT
7753+
| ASYMMETRIC
77247754
| AT
77257755
| BACKWARD
77267756
| BEFORE
@@ -7867,6 +7897,7 @@ unreserved_keyword:
78677897
| STDIN
78687898
| STDOUT
78697899
| STORAGE
7900+
| SYMMETRIC
78707901
| SYSID
78717902
| STRICT_P
78727903
| TABLESPACE

‎src/backend/parser/keywords.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $PostgreSQL: pgsql/src/backend/parser/keywords.c,v 1.155 2005/05/07 02:22:47 momjian Exp $
11+
* $PostgreSQL: pgsql/src/backend/parser/keywords.c,v 1.156 2005/06/14 23:47:39 momjian Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -49,6 +49,7 @@ static const ScanKeyword ScanKeywords[] = {
4949
{"asc",ASC},
5050
{"assertion",ASSERTION},
5151
{"assignment",ASSIGNMENT},
52+
{"asymmetric",ASYMMETRIC},
5253
{"at",AT},
5354
{"authorization",AUTHORIZATION},
5455
{"backward",BACKWARD},
@@ -296,6 +297,7 @@ static const ScanKeyword ScanKeywords[] = {
296297
{"storage",STORAGE},
297298
{"strict",STRICT_P},
298299
{"substring",SUBSTRING},
300+
{"symmetric",SYMMETRIC},
299301
{"sysid",SYSID},
300302
{"table",TABLE},
301303
{"tablespace",TABLESPACE},

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp