Re: patch between symmetric (add doc)
От | Bruce Momjian |
---|---|
Тема | Re: patch between symmetric (add doc) |
Дата | |
Msg-id | 200506142347.j5ENlqn18861@candle.pha.pa.us обсуждение исходный текст |
Ответ на | patch between symmetric (add doc) (Pavel Stehule <stehule@kix.fsv.cvut.cz>) |
Список | pgsql-patches |
Pavel Stehule wrote: > Hello > > I add doc and removed words symmetric and asymmetric from > keywords. Corrected boolean expression too. This patch don't solve some > problems: multiple evaluation of arguments, but its trivial and work with > bitmap indexes. Docs adjusted and patch applied. Thanks. -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073 Index: doc/src/sgml/func.sgml =================================================================== RCS file: /cvsroot/pgsql/doc/src/sgml/func.sgml,v retrieving revision 1.255 diff -c -c -r1.255 func.sgml *** doc/src/sgml/func.sgml 14 Jun 2005 21:04:38 -0000 1.255 --- doc/src/sgml/func.sgml 14 Jun 2005 23:46:19 -0000 *************** *** 282,287 **** --- 282,293 ---- There is no difference between the two respective forms apart from the <acronym>CPU</acronym> cycles required to rewrite the first one into the second one internally. + <indexterm> + <primary>BETWEEN SYMETRIC</primary> + </indexterm> + <token>BETWEEN SYMMETRIC</> is the same as <literal>BETWEEN</> + except there is no requirement that the argument to the left of <literal>AND</> be less than + or equal to the argument on the right; the proper range is automatically determined. </para> <para> Index: src/backend/parser/gram.y =================================================================== RCS file: /cvsroot/pgsql/src/backend/parser/gram.y,v retrieving revision 2.492 diff -c -c -r2.492 gram.y *** src/backend/parser/gram.y 8 Jun 2005 21:15:28 -0000 2.492 --- src/backend/parser/gram.y 14 Jun 2005 23:46:23 -0000 *************** *** 338,344 **** /* ordinary key words in alphabetical order */ %token <keyword> ABORT_P ABSOLUTE_P ACCESS ACTION ADD AFTER AGGREGATE ALL ALSO ALTER ANALYSE ANALYZE AND ANY ARRAY AS ASC ! ASSERTION ASSIGNMENT AT AUTHORIZATION BACKWARD BEFORE BEGIN_P BETWEEN BIGINT BINARY BIT BOOLEAN_P BOTH BY --- 338,344 ---- /* ordinary key words in alphabetical order */ %token <keyword> ABORT_P ABSOLUTE_P ACCESS ACTION ADD AFTER AGGREGATE ALL ALSO ALTER ANALYSE ANALYZE AND ANY ARRAY AS ASC ! ASSERTION ASSIGNMENT ASYMMETRIC AT AUTHORIZATION BACKWARD BEFORE BEGIN_P BETWEEN BIGINT BINARY BIT BOOLEAN_P BOTH BY *************** *** 399,405 **** SAVEPOINT SCHEMA SCROLL SECOND_P SECURITY SELECT SEQUENCE SERIALIZABLE SESSION SESSION_USER SET SETOF SHARE SHOW SIMILAR SIMPLE SMALLINT SOME STABLE START STATEMENT ! STATISTICS STDIN STDOUT STORAGE STRICT_P SUBSTRING SYSID TABLE TABLESPACE TEMP TEMPLATE TEMPORARY THEN TIME TIMESTAMP TO TOAST TRAILING TRANSACTION TREAT TRIGGER TRIM TRUE_P --- 399,406 ---- SAVEPOINT SCHEMA SCROLL SECOND_P SECURITY SELECT SEQUENCE SERIALIZABLE SESSION SESSION_USER SET SETOF SHARE SHOW SIMILAR SIMPLE SMALLINT SOME STABLE START STATEMENT ! STATISTICS STDIN STDOUT STORAGE STRICT_P SUBSTRING SYMMETRIC ! SYSID TABLE TABLESPACE TEMP TEMPLATE TEMPORARY THEN TIME TIMESTAMP TO TOAST TRAILING TRANSACTION TREAT TRIGGER TRIM TRUE_P *************** *** 6333,6350 **** { $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "!=", $1, (Node *) $6); } ! | a_expr BETWEEN b_expr AND b_expr %prec BETWEEN { $$ = (Node *) makeA_Expr(AEXPR_AND, NIL, ! (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", $1, $3), ! (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", $1, $5)); } ! | a_expr NOT BETWEEN b_expr AND b_expr %prec BETWEEN { $$ = (Node *) makeA_Expr(AEXPR_OR, NIL, ! (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $4), ! (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $6)); } | a_expr IN_P in_expr { /* in_expr returns a SubLink or a list of a_exprs */ --- 6334,6374 ---- { $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "!=", $1, (Node *) $6); } ! | a_expr BETWEEN opt_asymmetric b_expr AND b_expr %prec BETWEEN { $$ = (Node *) makeA_Expr(AEXPR_AND, NIL, ! (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", $1, $4), ! (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", $1, $6)); } ! | a_expr NOT BETWEEN opt_asymmetric b_expr AND b_expr %prec BETWEEN { $$ = (Node *) makeA_Expr(AEXPR_OR, NIL, ! (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $5), ! (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $7)); } + + | a_expr BETWEEN SYMMETRIC b_expr AND b_expr %prec BETWEEN + { + $$ = (Node *) makeA_Expr(AEXPR_OR, NIL, + (Node *) makeA_Expr(AEXPR_AND, NIL, + (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", $1, $4), + (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", $1, $6)), + (Node *) makeA_Expr(AEXPR_AND, NIL, + (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", $1, $6), + (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", $1, $4))); + } + | a_expr NOT BETWEEN SYMMETRIC b_expr AND b_expr %prec BETWEEN + { + $$ = (Node *) makeA_Expr(AEXPR_AND, NIL, + (Node *) makeA_Expr(AEXPR_OR, NIL, + (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $5), + (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $7)), + (Node *) makeA_Expr(AEXPR_OR, NIL, + (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $7), + (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $5))); + } + + | a_expr IN_P in_expr { /* in_expr returns a SubLink or a list of a_exprs */ *************** *** 6443,6448 **** --- 6467,6477 ---- } ; + opt_asymmetric: ASYMMETRIC {} + | /*EMPTY*/ {} + ; + + /* * Restricted expressions * *************** *** 7721,7726 **** --- 7750,7756 ---- | ALTER | ASSERTION | ASSIGNMENT + | ASYMMETRIC | AT | BACKWARD | BEFORE *************** *** 7867,7872 **** --- 7897,7903 ---- | STDIN | STDOUT | STORAGE + | SYMMETRIC | SYSID | STRICT_P | TABLESPACE Index: src/backend/parser/keywords.c =================================================================== RCS file: /cvsroot/pgsql/src/backend/parser/keywords.c,v retrieving revision 1.155 diff -c -c -r1.155 keywords.c *** src/backend/parser/keywords.c 7 May 2005 02:22:47 -0000 1.155 --- src/backend/parser/keywords.c 14 Jun 2005 23:46:24 -0000 *************** *** 49,54 **** --- 49,55 ---- {"asc", ASC}, {"assertion", ASSERTION}, {"assignment", ASSIGNMENT}, + {"asymmetric", ASYMMETRIC}, {"at", AT}, {"authorization", AUTHORIZATION}, {"backward", BACKWARD}, *************** *** 296,301 **** --- 297,303 ---- {"storage", STORAGE}, {"strict", STRICT_P}, {"substring", SUBSTRING}, + {"symmetric", SYMMETRIC}, {"sysid", SYSID}, {"table", TABLE}, {"tablespace", TABLESPACE},
В списке pgsql-patches по дате отправления: