Skip to content

Commit fd2ca2a

Browse files
Feature #72: Support aggregate and analytics functions (#122)
* Increment minor version, add change notes * Update changelog version to 4.5.0 * Rename constant to match naming conventions * Add AnalyticFunction with keyword support * Remove duplicate code * Document creating analytic functions * Initial support for OVER clause * Add order by to over clause * Move analytic & aggregate functions to new enum * Implement units and exclusion for over clause * Apply suggestions from code review Co-authored-by: jakobbraun <jakob.braun@posteo.de> * Remove WindowClause This will be implemented in #128 * Update dependencies in changelog * Add javadoc * Add unit tests * Update user guide * Update list of aggregate & analytic functions * Format function names and add links to the documentation * Update release date * Apply suggestions from code review Co-authored-by: jakobbraun <jakob.braun@posteo.de> * Implement review findings Co-authored-by: jakobbraun <jakob.braun@posteo.de>
1 parent 7c74ae0 commit fd2ca2a

22 files changed

+1584
-346
lines changed

dependencies.md

Lines changed: 69 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,80 @@
11
<!-- @formatter:off -->
22
# Dependencies
33

4+
## Compile Dependencies
5+
6+
| Dependency | License |
7+
| ------------------------- | -------- |
8+
| [error-reporting-java][0] | [MIT][1] |
9+
410
## Test Dependencies
511

6-
| Dependency | License |
7-
| ------------------------------- | -------------------------------- |
8-
| [JUnit Jupiter (Aggregator)][0] | [Eclipse Public License v2.0][1] |
9-
| [Hamcrest All][2] | [New BSD License][3] |
10-
| [mockito-core][4] | [The MIT License][5] |
11-
| [mockito-junit-jupiter][4] | [The MIT License][5] |
12-
| [EqualsVerifier][8] | [Apache License, Version 2.0][9] |
12+
| Dependency | License |
13+
| ------------------------------- | --------------------------------- |
14+
| [JUnit Jupiter (Aggregator)][2] | [Eclipse Public License v2.0][3] |
15+
| [Hamcrest All][4] | [New BSD License][5] |
16+
| [mockito-core][6] | [The MIT License][7] |
17+
| [mockito-junit-jupiter][6] | [The MIT License][7] |
18+
| [EqualsVerifier][10] | [Apache License, Version 2.0][11] |
1319

1420
## Plugin Dependencies
1521

1622
| Dependency | License |
1723
| ------------------------------------------------------- | ------------------------------------- |
18-
| [Apache Maven Compiler Plugin][10] | [Apache License, Version 2.0][11] |
19-
| [JaCoCo :: Maven Plugin][12] | [Eclipse Public License 2.0][13] |
20-
| [Maven Surefire Plugin][14] | [Apache License, Version 2.0][11] |
21-
| [Apache Maven Source Plugin][16] | [Apache License, Version 2.0][11] |
22-
| [Apache Maven Javadoc Plugin][18] | [Apache License, Version 2.0][11] |
23-
| [Apache Maven GPG Plugin][20] | [Apache License, Version 2.0][11] |
24-
| [OpenFastTrace Maven Plugin][22] | [GNU General Public License v3.0][23] |
25-
| [org.sonatype.ossindex.maven:ossindex-maven-plugin][24] | [ASL2][9] |
26-
| [Versions Maven Plugin][26] | [Apache License, Version 2.0][11] |
27-
| [Apache Maven Enforcer Plugin][28] | [Apache License, Version 2.0][11] |
28-
| [Nexus Staging Maven Plugin][30] | [Eclipse Public License][31] |
29-
| [Project keeper maven plugin][32] | [MIT][33] |
30-
| [Maven Failsafe Plugin][34] | [Apache License, Version 2.0][11] |
31-
| [Apache Maven Deploy Plugin][36] | [Apache License, Version 2.0][9] |
32-
| [error-code-crawler-maven-plugin][38] | [MIT][33] |
33-
| [Reproducible Build Maven Plugin][40] | [Apache 2.0][9] |
34-
| [Apache Maven Clean Plugin][42] | [Apache License, Version 2.0][11] |
35-
| [Apache Maven Resources Plugin][44] | [Apache License, Version 2.0][11] |
36-
| [Apache Maven JAR Plugin][46] | [Apache License, Version 2.0][11] |
37-
| [Apache Maven Install Plugin][48] | [Apache License, Version 2.0][9] |
38-
| [Apache Maven Site Plugin][50] | [Apache License, Version 2.0][11] |
24+
| [Apache Maven Compiler Plugin][12] | [Apache License, Version 2.0][13] |
25+
| [JaCoCo :: Maven Plugin][14] | [Eclipse Public License 2.0][15] |
26+
| [Maven Surefire Plugin][16] | [Apache License, Version 2.0][13] |
27+
| [Apache Maven Source Plugin][18] | [Apache License, Version 2.0][13] |
28+
| [Apache Maven Javadoc Plugin][20] | [Apache License, Version 2.0][13] |
29+
| [Apache Maven GPG Plugin][22] | [Apache License, Version 2.0][13] |
30+
| [OpenFastTrace Maven Plugin][24] | [GNU General Public License v3.0][25] |
31+
| [org.sonatype.ossindex.maven:ossindex-maven-plugin][26] | [ASL2][11] |
32+
| [Versions Maven Plugin][28] | [Apache License, Version 2.0][13] |
33+
| [Apache Maven Enforcer Plugin][30] | [Apache License, Version 2.0][13] |
34+
| [Nexus Staging Maven Plugin][32] | [Eclipse Public License][33] |
35+
| [Project keeper maven plugin][34] | [MIT][1] |
36+
| [Maven Failsafe Plugin][36] | [Apache License, Version 2.0][13] |
37+
| [Apache Maven Deploy Plugin][38] | [Apache License, Version 2.0][11] |
38+
| [error-code-crawler-maven-plugin][40] | [MIT][1] |
39+
| [Reproducible Build Maven Plugin][42] | [Apache 2.0][11] |
40+
| [Apache Maven Clean Plugin][44] | [Apache License, Version 2.0][13] |
41+
| [Apache Maven Resources Plugin][46] | [Apache License, Version 2.0][13] |
42+
| [Apache Maven JAR Plugin][48] | [Apache License, Version 2.0][13] |
43+
| [Apache Maven Install Plugin][50] | [Apache License, Version 2.0][11] |
44+
| [Apache Maven Site Plugin][52] | [Apache License, Version 2.0][13] |
3945

40-
[32]: https://github.com/exasol/project-keeper-maven-plugin
41-
[2]: https://github.com/hamcrest/JavaHamcrest
42-
[9]: http://www.apache.org/licenses/LICENSE-2.0.txt
43-
[14]: https://maven.apache.org/surefire/maven-surefire-plugin/
44-
[30]: http://www.sonatype.com/public-parent/nexus-maven-plugins/nexus-staging/nexus-staging-maven-plugin/
45-
[4]: https://github.com/mockito/mockito
46-
[33]: https://opensource.org/licenses/MIT
47-
[34]: https://maven.apache.org/surefire/maven-failsafe-plugin/
48-
[26]: http://www.mojohaus.org/versions-maven-plugin/
49-
[10]: https://maven.apache.org/plugins/maven-compiler-plugin/
50-
[44]: https://maven.apache.org/plugins/maven-resources-plugin/
51-
[22]: https://github.com/itsallcode/openfasttrace-maven-plugin
52-
[42]: https://maven.apache.org/plugins/maven-clean-plugin/
53-
[13]: https://www.eclipse.org/legal/epl-2.0/
54-
[31]: http://www.eclipse.org/legal/epl-v10.html
55-
[12]: https://www.jacoco.org/jacoco/trunk/doc/maven.html
56-
[5]: https://github.com/mockito/mockito/blob/main/LICENSE
57-
[40]: http://zlika.github.io/reproducible-build-maven-plugin
58-
[50]: https://maven.apache.org/plugins/maven-site-plugin/
59-
[23]: https://www.gnu.org/licenses/gpl-3.0.html
60-
[11]: https://www.apache.org/licenses/LICENSE-2.0.txt
61-
[28]: https://maven.apache.org/enforcer/maven-enforcer-plugin/
62-
[1]: https://www.eclipse.org/legal/epl-v20.html
63-
[3]: http://www.opensource.org/licenses/bsd-license.php
64-
[48]: http://maven.apache.org/plugins/maven-install-plugin/
65-
[0]: https://junit.org/junit5/
66-
[24]: https://sonatype.github.io/ossindex-maven/maven-plugin/
67-
[20]: https://maven.apache.org/plugins/maven-gpg-plugin/
68-
[8]: http://www.jqno.nl/equalsverifier
69-
[16]: https://maven.apache.org/plugins/maven-source-plugin/
70-
[36]: http://maven.apache.org/plugins/maven-deploy-plugin/
71-
[18]: https://maven.apache.org/plugins/maven-javadoc-plugin/
72-
[38]: https://github.com/exasol/error-code-crawler-maven-plugin
73-
[46]: https://maven.apache.org/plugins/maven-jar-plugin/
46+
[34]: https://github.com/exasol/project-keeper-maven-plugin
47+
[0]: https://github.com/exasol/error-reporting-java
48+
[4]: https://github.com/hamcrest/JavaHamcrest
49+
[11]: http://www.apache.org/licenses/LICENSE-2.0.txt
50+
[16]: https://maven.apache.org/surefire/maven-surefire-plugin/
51+
[32]: http://www.sonatype.com/public-parent/nexus-maven-plugins/nexus-staging/nexus-staging-maven-plugin/
52+
[1]: https://opensource.org/licenses/MIT
53+
[6]: https://github.com/mockito/mockito
54+
[36]: https://maven.apache.org/surefire/maven-failsafe-plugin/
55+
[28]: http://www.mojohaus.org/versions-maven-plugin/
56+
[12]: https://maven.apache.org/plugins/maven-compiler-plugin/
57+
[46]: https://maven.apache.org/plugins/maven-resources-plugin/
58+
[24]: https://github.com/itsallcode/openfasttrace-maven-plugin
59+
[44]: https://maven.apache.org/plugins/maven-clean-plugin/
60+
[15]: https://www.eclipse.org/legal/epl-2.0/
61+
[33]: http://www.eclipse.org/legal/epl-v10.html
62+
[14]: https://www.jacoco.org/jacoco/trunk/doc/maven.html
63+
[7]: https://github.com/mockito/mockito/blob/main/LICENSE
64+
[42]: http://zlika.github.io/reproducible-build-maven-plugin
65+
[52]: https://maven.apache.org/plugins/maven-site-plugin/
66+
[25]: https://www.gnu.org/licenses/gpl-3.0.html
67+
[13]: https://www.apache.org/licenses/LICENSE-2.0.txt
68+
[30]: https://maven.apache.org/enforcer/maven-enforcer-plugin/
69+
[3]: https://www.eclipse.org/legal/epl-v20.html
70+
[5]: http://www.opensource.org/licenses/bsd-license.php
71+
[50]: http://maven.apache.org/plugins/maven-install-plugin/
72+
[2]: https://junit.org/junit5/
73+
[26]: https://sonatype.github.io/ossindex-maven/maven-plugin/
74+
[22]: https://maven.apache.org/plugins/maven-gpg-plugin/
75+
[10]: http://www.jqno.nl/equalsverifier
76+
[18]: https://maven.apache.org/plugins/maven-source-plugin/
77+
[38]: http://maven.apache.org/plugins/maven-deploy-plugin/
78+
[20]: https://maven.apache.org/plugins/maven-javadoc-plugin/
79+
[40]: https://github.com/exasol/error-code-crawler-maven-plugin
80+
[48]: https://maven.apache.org/plugins/maven-jar-plugin/

doc/changes/changelog.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Changes
22

3-
* [4.4.3](changes_4.4.3.md)
3+
* [4.5.0](changes_4.5.0.md)
44
* [4.4.2](changes_4.4.2.md)
55
* [4.4.1](changes_4.4.1.md)
66
* [4.4.0](changes_4.4.0.md)
Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,16 @@
1-
# Exasol SQL Statement Builder 4.4.3, released 2021-09-??
1+
# Exasol SQL Statement Builder 4.5.0, released 2021-09-30
22

3-
Code name: Internal refactorings on "More Predicates"
3+
Code name: Support more Aggregate and Analytic functions
4+
5+
## Summary
6+
7+
This release supports all aggregate and analytics functsions provided by Exasol, e.g. `GROUPING[_ID]`, `PERCENTILE_CONT`, `NTH_VALUE` and many more. See the [ticket](https://github.com/exasol/sql-statement-builder/issues/72) for a complete list.
8+
9+
We also added support for the keywords `DISTINCT` and `ANY` as well as the [over_clause](https://docs.exasol.com/sql_references/functions/analyticfunctions.htm?Highlight=over_clause) for analytic functions. See the [user guide](../user_guide/statements/select.md#analytic-functions) for how to use the name API.
10+
11+
## Features
12+
13+
* #72: Added support for more Aggregate and Analytic functions
414

515
## Refactoring
616

@@ -13,6 +23,10 @@ Code name: Internal refactorings on "More Predicates"
1323

1424
## Dependency Updates
1525

26+
### Compile Dependency Updates
27+
28+
* Added `com.exasol:error-reporting-java:0.4.0`
29+
1630
### Test Dependency Updates
1731

1832
* Updated `nl.jqno.equalsverifier:equalsverifier:3.6.1` to `3.7.1`

0 commit comments

Comments
 (0)