BETWEEN SYMMETRIC/ASYMMETRIC patch
От | Christopher Kings-Lynne |
---|---|
Тема | BETWEEN SYMMETRIC/ASYMMETRIC patch |
Дата | |
Msg-id | GNELIHDDFBOCMGBFGEFOKEBBCCAA.chriskl@familyhealth.com.au обсуждение исходный текст |
Список | pgsql-patches |
Hi, This patch implements the TODO item: * Add BETWEEN ASYMMETRIC/SYMMETRIC I have added a regression test to select.sql - I don't know if this is the correct place. Someone should run their eyes over the results in select.out to make sure they are correct. There are some "non intuitive" results... This patch makes ASYMMETRIC and SYMMETRIC reserved words and this should be mentioned in the release notes. I used the not(a and b) = not(a) or not(b) expansion to derive the expressions. Chris This is what the SQL99 spec has to say on the matter, I believe this patch adheres to the spec: ---------------------------- <between predicate> ::= <row value expression> [ NOT ] BETWEEN [ ASYMMETRIC | SYMMETRIC ] <row value expression> AND <row value expression> Syntax Rules 1) If neither SYMMETRIC nor ASYMMETRIC is specified, then ASYMMETRIC is implicit. 2) Let X, Y, and Z be the first, second, and third <row value expression>s, respectively. 3) "X NOT BETWEEN SYMMETRIC Y AND Z" is equivalent to "NOT ( X BETWEEN SYMMETRIC Y AND Z )". 4) "X BETWEEN SYMMETRIC Y AND Z" is equivalent to "((X BETWEEN ASYMMETRIC Y AND Z) OR (X BETWEEN ASYMMETRIC Z AND Y))". 5) "X NOT BETWEEN ASYMMETRIC Y AND Z" is equivalent to "NOT ( X BETWEEN ASYMMETRIC Y AND Z )". 6) "X BETWEEN ASYMMETRIC Y AND Z" is equivalent to "X>=Y AND X<=Z". Access Rules None. General Rules None. Conformance Rules 1) Without Feature T461, "Symmetric <between predicate>", conforming SQL language shall not specify SYMMETRIC or ASYMMETRIC. 2) Without Feature S024, "Enhanced structured types", no subfield of the declared type of a <row value expression> that is simply contained in a <between predicate> shall be of a structured type.
Вложения
В списке pgsql-patches по дате отправления: