diff options
-rw-r--r-- | CHANGELOG | 1 | ||||
-rw-r--r-- | doc/manual.tex | 5 | ||||
-rw-r--r-- | src/c/urweb.c | 1 |
3 files changed, 4 insertions, 3 deletions
@@ -5,6 +5,7 @@ Next - Bug fixes - Improvement to choice of line number to cite in record unification error messages +- SELECT DISTINCT ======== 20090926 diff --git a/doc/manual.tex b/doc/manual.tex index 3a532fbc..5a46552d 100644 --- a/doc/manual.tex +++ b/doc/manual.tex @@ -1469,7 +1469,8 @@ $$\begin{array}{l} \hspace{.1in} \to \mt{grouped} ::: \{\{\mt{Type}\}\} \\ \hspace{.1in} \to \mt{selectedFields} ::: \{\{\mt{Type}\}\} \\ \hspace{.1in} \to \mt{selectedExps} ::: \{\mt{Type}\} \\ - \hspace{.1in} \to \{\mt{From} : \mt{sql\_from\_items} \; \mt{tables}, \\ + \hspace{.1in} \to \{\mt{Distinct} : \mt{bool}, \\ + \hspace{.2in} \mt{From} : \mt{sql\_from\_items} \; \mt{tables}, \\ \hspace{.2in} \mt{Where} : \mt{sql\_exp} \; \mt{tables} \; [] \; [] \; \mt{bool}, \\ \hspace{.2in} \mt{GroupBy} : \mt{sql\_subset} \; \mt{tables} \; \mt{grouped}, \\ \hspace{.2in} \mt{Having} : \mt{sql\_exp} \; \mt{grouped} \; \mt{tables} \; [] \; \mt{bool}, \\ @@ -1855,7 +1856,7 @@ Queries $Q$ are added to the rules for expressions $e$. $$\begin{array}{rrcll} \textrm{Queries} & Q &::=& (q \; [\mt{ORDER} \; \mt{BY} \; (E \; [o],)^+] \; [\mt{LIMIT} \; N] \; [\mt{OFFSET} \; N]) \\ - \textrm{Pre-queries} & q &::=& \mt{SELECT} \; P \; \mt{FROM} \; T,^+ \; [\mt{WHERE} \; E] \; [\mt{GROUP} \; \mt{BY} \; p,^+] \; [\mt{HAVING} \; E] \\ + \textrm{Pre-queries} & q &::=& \mt{SELECT} \; [\mt{DISTINCT}] \; P \; \mt{FROM} \; T,^+ \; [\mt{WHERE} \; E] \; [\mt{GROUP} \; \mt{BY} \; p,^+] \; [\mt{HAVING} \; E] \\ &&& \mid q \; R \; q \\ \textrm{Relational operators} & R &::=& \mt{UNION} \mid \mt{INTERSECT} \mid \mt{EXCEPT} \end{array}$$ diff --git a/src/c/urweb.c b/src/c/urweb.c index 88e9569d..e49de568 100644 --- a/src/c/urweb.c +++ b/src/c/urweb.c @@ -2160,7 +2160,6 @@ char *uw_Basis_sqlifyTime(uw_context ctx, uw_Basis_time t) { if (localtime_r(&t, &stm)) { s = uw_malloc(ctx, TIMES_MAX); - --stm.tm_hour; len = strftime(s, TIMES_MAX, TIME_FMT, &stm); r = uw_malloc(ctx, len + 14); sprintf(r, "'%s'::timestamp", s); |