diff --git a/doc/sql.extensions/README.case b/doc/sql.extensions/README.case index e2a103e4a9..c9ccc65518 100644 --- a/doc/sql.extensions/README.case +++ b/doc/sql.extensions/README.case @@ -1,3 +1,5 @@ +SQL Language Extension: CASE + Function: Allow the result of a column to be determined by a the results of a case expression. @@ -6,8 +8,6 @@ Author: Arno Brinkman Format: - - ::= | @@ -46,9 +46,8 @@ Format: ::= - -Syntax Rules: - +Notes: + See also README.data_type_results_of_aggregations.txt Examples: diff --git a/doc/sql.extensions/README.coalesce b/doc/sql.extensions/README.coalesce index ffbb3854e8..24161b73ac 100644 --- a/doc/sql.extensions/README.coalesce +++ b/doc/sql.extensions/README.coalesce @@ -1,3 +1,5 @@ +SQL Language Extension: COALESCE + Function: Allow a column value to be calculated by a number of expressions, the first expression returning a non NULL value is returned as the @@ -19,6 +21,8 @@ Syntax Rules: : CASE WHEN V1 IS NOT NULL THEN V1 ELSE COALESCE (V2,...,Vn) END +Notes: + See also README.data_type_results_of_aggregations.txt Examples: A) diff --git a/doc/sql.extensions/README.data_type_results_of_aggregations.txt b/doc/sql.extensions/README.data_type_results_of_aggregations.txt new file mode 100644 index 0000000000..e0f838986b --- /dev/null +++ b/doc/sql.extensions/README.data_type_results_of_aggregations.txt @@ -0,0 +1,44 @@ +Function: + Specify the result data type of the result of an aggregation over values of + compatible data types, such as case expressions and columns at the same + position in a union query expression. + +Author: + Arno Brinkman + +Syntax Rules: + +1) Let DTS be the set of data types over which we must determine the final + result data type. + +2) All of the data types in DTS shall be comparable. + +3) Case: + + a) If any of the data types in DTS is character string, then: + + 1) If any of the data types in DTS is variable-length character string, + then the result data type is variable-length character string with + maximum length in characters equal to the maximum of the lengths in + characters and maximum lengths in characters of the data types in DTS. + + 2) Otherwise, the result data type is fixed-length character string with + length in characters equal to the maximum of the lengths in + characters of the data types in DTS. + + 3) The characterset/collation is used from the first character string + data type in DTS. + + b) If all of the data types in DTS are exact numeric, then the result data + type is exact numeric with scale equal to the maximum of the scales of + the data types in DTS and the maximum precision of all data types in DTS. + + c) If any data type in DTS is approximate numeric, then each data type in DTS + shall be numeric else an error is thrown. + + d) If some data type in DTS is a datetime data type, then every data type in + DTS shall be a datetime data type having the same datetime type. + + e) If any data type in DTS is BLOB, then each data type in DTS shall be + BLOB and all with the same sub-type. + diff --git a/doc/sql.extensions/README.derived_tables.txt b/doc/sql.extensions/README.derived_tables.txt index 6f7466b1a6..d3567030b1 100644 --- a/doc/sql.extensions/README.derived_tables.txt +++ b/doc/sql.extensions/README.derived_tables.txt @@ -38,9 +38,8 @@ Notes: The optimizer can handle a derived table very efficiently, but if the derived table contains a sub-select then no join order can be made (if the derived table is included in an inner join). - -Example(s): +Examples: a) Simple derived table: diff --git a/doc/sql.extensions/README.nullif b/doc/sql.extensions/README.nullif index 7d4fdd1fcf..f5466ba255 100644 --- a/doc/sql.extensions/README.nullif +++ b/doc/sql.extensions/README.nullif @@ -1,3 +1,5 @@ +SQL Language Extension: NULLIF + Function: Return a NULL value for a sub-expression if it has a specific value otherwise return the value of the sub-expression @@ -10,13 +12,15 @@ Format: ::= NULLIF - Syntax Rules: 1) NULLIF (V1, V2) is equivalent to the following : CASE WHEN V1 = V2 THEN NULL ELSE V1 END +Notes: + See also README.data_type_results_of_aggregations.txt Examples: + A) UPDATE PRODUCTS SET STOCK = NULLIF(STOCK,0)