diff --git a/.github/workflows/dependencies_update.yml b/.github/workflows/dependencies_update.yml index 1bf502f..0fa7180 100644 --- a/.github/workflows/dependencies_update.yml +++ b/.github/workflows/dependencies_update.yml @@ -75,7 +75,7 @@ jobs: echo >> "$GITHUB_OUTPUT" echo '# ⚠️ Notes ⚠️' >> "$GITHUB_OUTPUT" echo '## Run PK fix manually' >> "$GITHUB_OUTPUT" - echo 'Due to restrictions workflow `dependencies_update.yml` can't update other workflows, see https://github.com/exasol/project-keeper/issues/578 for details.' >> "$GITHUB_OUTPUT" + echo 'Due to restrictions workflow `dependencies_update.yml` cannot update other workflows, see https://github.com/exasol/project-keeper/issues/578 for details.' >> "$GITHUB_OUTPUT" echo 'Please checkout this PR locally and run `mvn com.exasol:project-keeper-maven-plugin:fix --projects .`' >> "$GITHUB_OUTPUT" echo '## This PR does not trigger CI workflows' >> "$GITHUB_OUTPUT" echo 'Please click the **Close pull request** button and then **Reopen pull request** to trigger running checks.' >> "$GITHUB_OUTPUT" diff --git a/dependencies.md b/dependencies.md index 7c64e89..6aa09cc 100644 --- a/dependencies.md +++ b/dependencies.md @@ -7,7 +7,7 @@ | Dependency | License | | ------------------------------- | -------------------------------- | -| [Hamcrest][0] | [BSD License 3][1] | +| [Hamcrest][0] | [BSD-3-Clause][1] | | [JUnit Jupiter (Aggregator)][2] | [Eclipse Public License v2.0][3] | ### Runtime Dependencies @@ -41,7 +41,7 @@ | Dependency | License | | ----------------------------------------------------------------------- | ---------------------------------------------- | | [org.seleniumhq.selenium:selenium-java][26] | [The Apache Software License, Version 2.0][16] | -| [Hamcrest][0] | [BSD License 3][1] | +| [Hamcrest][0] | [BSD-3-Clause][1] | | [JUnit Jupiter (Aggregator)][2] | [Eclipse Public License v2.0][3] | | [WebDriverManager][27] | [Apache 2.0][28] | | [Bouncy Castle PKIX, CMS, EAC, TSP, PKCS, OCSP, CMP, and CRMF APIs][29] | [Bouncy Castle Licence][30] | @@ -95,11 +95,11 @@ ## Javascript-test [0]: http://hamcrest.org/JavaHamcrest/ -[1]: http://opensource.org/licenses/BSD-3-Clause +[1]: https://raw.githubusercontent.com/hamcrest/JavaHamcrest/master/LICENSE [2]: https://junit.org/junit5/ [3]: https://www.eclipse.org/legal/epl-v20.html [4]: http://www.exasol.com/ -[5]: https://repo1.maven.org/maven2/com/exasol/exasol-jdbc/24.1.0/exasol-jdbc-24.1.0-license.txt +[5]: https://repo1.maven.org/maven2/com/exasol/exasol-jdbc/24.1.1/exasol-jdbc-24.1.1-license.txt [6]: http://sonarsource.github.io/sonar-scanner-maven/ [7]: http://www.gnu.org/licenses/lgpl.txt [8]: https://maven.apache.org/plugins/maven-toolchains-plugin/ diff --git a/doc/changes/changes_1.0.6.md b/doc/changes/changes_1.0.6.md index 62c5aed..4a083ac 100644 --- a/doc/changes/changes_1.0.6.md +++ b/doc/changes/changes_1.0.6.md @@ -1,13 +1,16 @@ -# Tableau Connector 1.0.6, released 2024-??-?? +# Tableau Connector 1.0.6, released 2024-08-09 -Code name: Upgrade dependencies +Code name: Support function `DATEPARSE` ## Summary -This release upgrades dependencies. +This release adds support for Tableau's `DATEPARSE` function. This function allows parsing a string as a timestamp. Please note that you need to use a format string supported by Exasol (e.g. `yyyy-mm-dd hh:mi:ss`), see [documentation](https://docs.exasol.com/db/latest/sql_references/formatmodels.htm#DateTimeFormatModels). + +This release also upgrades dependencies. ## Features +* #91: Added support for function `DATEPARSE` * #77: Test with Exasol's `TIMESTAMP(9)` data type ## Dependency Updates @@ -16,16 +19,17 @@ This release upgrades dependencies. #### Runtime Dependency Updates -* Updated `com.exasol:exasol-jdbc:7.1.20` to `24.1.0` +* Updated `com.exasol:exasol-jdbc:7.1.20` to `24.1.1` #### Test Dependency Updates -* Updated `org.junit.jupiter:junit-jupiter:5.10.1` to `5.10.2` +* Updated `org.hamcrest:hamcrest:2.2` to `3.0` +* Updated `org.junit.jupiter:junit-jupiter:5.10.1` to `5.10.3` #### Plugin Dependency Updates * Updated `com.exasol:error-code-crawler-maven-plugin:1.3.1` to `2.0.3` -* Updated `com.exasol:project-keeper-maven-plugin:3.0.0` to `4.3.2` +* Updated `com.exasol:project-keeper-maven-plugin:3.0.0` to `4.3.3` * Updated `org.apache.maven.plugins:maven-compiler-plugin:3.11.0` to `3.13.0` * Updated `org.apache.maven.plugins:maven-enforcer-plugin:3.4.1` to `3.5.0` * Updated `org.apache.maven.plugins:maven-surefire-plugin:3.2.3` to `3.2.5` @@ -38,23 +42,24 @@ This release upgrades dependencies. #### Test Dependency Updates -* Updated `com.exasol:exasol-testcontainers:7.0.0` to `7.1.0` +* Updated `com.exasol:exasol-testcontainers:7.0.0` to `7.1.1` * Updated `com.exasol:test-db-builder-java:3.5.3` to `3.5.4` -* Updated `com.fasterxml.jackson.core:jackson-databind:2.16.1` to `2.17.1` +* Updated `com.fasterxml.jackson.core:jackson-databind:2.16.1` to `2.17.2` * Updated `commons-io:commons-io:2.15.1` to `2.16.1` -* Updated `io.github.bonigarcia:webdrivermanager:5.6.3` to `5.8.0` +* Updated `io.github.bonigarcia:webdrivermanager:5.6.3` to `5.9.2` * Added `org.bouncycastle:bcpkix-jdk18on:1.78.1` * Removed `org.bouncycastle:bcprov-jdk15on:1.70` +* Updated `org.hamcrest:hamcrest:2.2` to `3.0` * Updated `org.json:json:20231013` to `20240303` -* Updated `org.junit.jupiter:junit-jupiter:5.10.1` to `5.10.2` +* Updated `org.junit.jupiter:junit-jupiter:5.10.1` to `5.10.3` * Updated `org.mockito:mockito-junit-jupiter:5.9.0` to `5.12.0` -* Updated `org.seleniumhq.selenium:selenium-java:4.16.1` to `4.21.0` -* Updated `org.testcontainers:junit-jupiter:1.19.3` to `1.19.8` +* Updated `org.seleniumhq.selenium:selenium-java:4.16.1` to `4.23.0` +* Updated `org.testcontainers:junit-jupiter:1.19.3` to `1.20.1` #### Plugin Dependency Updates * Updated `com.exasol:error-code-crawler-maven-plugin:1.3.1` to `2.0.3` -* Updated `com.exasol:project-keeper-maven-plugin:3.0.0` to `4.3.2` +* Updated `com.exasol:project-keeper-maven-plugin:3.0.0` to `4.3.3` * Updated `org.apache.maven.plugins:maven-compiler-plugin:3.11.0` to `3.13.0` * Updated `org.apache.maven.plugins:maven-enforcer-plugin:3.4.1` to `3.5.0` * Updated `org.apache.maven.plugins:maven-surefire-plugin:3.2.3` to `3.2.5` @@ -68,7 +73,7 @@ This release upgrades dependencies. #### Plugin Dependency Updates * Updated `com.exasol:error-code-crawler-maven-plugin:1.3.1` to `2.0.3` -* Updated `com.exasol:project-keeper-maven-plugin:3.0.0` to `4.3.2` +* Updated `com.exasol:project-keeper-maven-plugin:3.0.0` to `4.3.3` * Updated `org.apache.maven.plugins:maven-compiler-plugin:3.11.0` to `3.13.0` * Updated `org.apache.maven.plugins:maven-enforcer-plugin:3.4.1` to `3.5.0` * Updated `org.apache.maven.plugins:maven-surefire-plugin:3.2.3` to `3.2.5` diff --git a/javascript-test/package-lock.json b/javascript-test/package-lock.json index 76c6b65..3c5c423 100644 --- a/javascript-test/package-lock.json +++ b/javascript-test/package-lock.json @@ -1833,6 +1833,7 @@ "integrity": "sha512-v7E+yIjcHECn973i0xHm4kJkEpv3C8sbYS4344WXbzYqRyiDD7rjnnKo4hsJkejQBAFdRMUGNHySeSPKSH9Rqw==", "deprecated": "This module has moved and is now available at @hapi/hoek. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.", "dev": true, + "license": "SEE LICENSE IN LICENSE.md", "engines": { "node": ">=6.0.0" } @@ -1959,6 +1960,7 @@ "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz", "integrity": "sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "punycode": "2.x.x" }, @@ -2623,6 +2625,7 @@ "integrity": "sha512-xuY5VkHfeOYK3Hdi91ulocfuFopwgbSORmIwzcwHKESQhC7w1kD5jaVSPnqDxS2I8t3RZ9omCKAxNwXN5zG1/Q==", "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "hoek": "5.x.x", "isemail": "3.x.x", @@ -2638,6 +2641,7 @@ "integrity": "sha512-Alr4ZQgoMlnere5FZJsIyfIjORBqZll5POhDsF4q64dPuJR6rNxXdDxtHSQq8OXRurhmx+PWYEE8bXRROY8h0w==", "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=8.9.0" } @@ -3083,6 +3087,7 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -3393,6 +3398,7 @@ "integrity": "sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ==", "deprecated": "This module has moved and is now available at @hapi/topo. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "hoek": "6.x.x" } @@ -3402,7 +3408,8 @@ "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==", "deprecated": "This module has moved and is now available at @hapi/hoek. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/type-detect": { "version": "4.0.8", @@ -3540,6 +3547,7 @@ "resolved": "https://registry.npmjs.org/xml2json/-/xml2json-0.12.0.tgz", "integrity": "sha512-EPJHRWJnJUYbJlzR4pBhZODwWdi2IaYGtDdteJi0JpZ4OD31IplWALuit8r73dJuM4iHZdDVKY1tLqY2UICejg==", "dev": true, + "license": "MIT", "dependencies": { "hoek": "^4.2.1", "joi": "^13.1.2", diff --git a/jdbc-kerberos-setup-test/pom.xml b/jdbc-kerberos-setup-test/pom.xml index 54981d2..8019e82 100644 --- a/jdbc-kerberos-setup-test/pom.xml +++ b/jdbc-kerberos-setup-test/pom.xml @@ -15,19 +15,19 @@ org.hamcrest hamcrest - 2.2 + 3.0 test org.junit.jupiter junit-jupiter - 5.10.2 + 5.10.3 test com.exasol exasol-jdbc - 24.1.0 + 24.1.1 runtime @@ -36,7 +36,7 @@ com.exasol project-keeper-maven-plugin - 4.3.2 + 4.3.3 diff --git a/pom.xml b/pom.xml index 31460da..2f0b722 100644 --- a/pom.xml +++ b/pom.xml @@ -26,7 +26,7 @@ com.exasol project-keeper-maven-plugin - 4.3.2 + 4.3.3 diff --git a/src/exasol_jdbc/dialect.tdd b/src/exasol_jdbc/dialect.tdd index e740b06..802dc37 100644 --- a/src/exasol_jdbc/dialect.tdd +++ b/src/exasol_jdbc/dialect.tdd @@ -972,6 +972,11 @@ + + TO_TIMESTAMP(%2, %1) + + + (%3 + %2 * INTERVAL '1' %1) ADD_MONTHS(%3, (3 * %2)) diff --git a/src/exasol_odbc/dialect.tdd b/src/exasol_odbc/dialect.tdd index 5c76def..efb0e8f 100644 --- a/src/exasol_odbc/dialect.tdd +++ b/src/exasol_odbc/dialect.tdd @@ -972,6 +972,11 @@ + + TO_TIMESTAMP(%2, %1) + + + (%3 + %2 * INTERVAL '1' %1) ADD_MONTHS(%3, (3 * %2)) diff --git a/tableau-server-GUI-tests/pom.xml b/tableau-server-GUI-tests/pom.xml index eed7b2f..63fa164 100644 --- a/tableau-server-GUI-tests/pom.xml +++ b/tableau-server-GUI-tests/pom.xml @@ -15,25 +15,25 @@ org.seleniumhq.selenium selenium-java - 4.21.0 + 4.23.0 test org.hamcrest hamcrest - 2.2 + 3.0 test org.junit.jupiter junit-jupiter - 5.10.2 + 5.10.3 test io.github.bonigarcia webdrivermanager - 5.8.0 + 5.9.2 test @@ -64,13 +64,13 @@ org.testcontainers junit-jupiter - 1.19.8 + 1.20.1 test com.exasol exasol-testcontainers - 7.1.0 + 7.1.1 test @@ -83,7 +83,7 @@ com.fasterxml.jackson.core jackson-databind - 2.17.1 + 2.17.2 test @@ -99,7 +99,7 @@ com.exasol project-keeper-maven-plugin - 4.3.2 + 4.3.3 diff --git a/tdvt_jdbc/config/exasol_jdbc.ini b/tdvt_jdbc/config/exasol_jdbc.ini index ad15f6c..3a2d9ef 100644 --- a/tdvt_jdbc/config/exasol_jdbc.ini +++ b/tdvt_jdbc/config/exasol_jdbc.ini @@ -51,3 +51,14 @@ TDS = cast_calcs.exasol_jdbc.tds TestPath = exprtests/regexcalcs # Tests fail because of different regular expression behavior. Exclusions = string.regex.icu_fallback,string.regexp.match.extended,string.regexp.extract_nth.extended,string.regexp.replace.extended,string.regexp.extract.extended + +[TestDateParse] +Type = expression +Name = TestDateParse. +TDS = cast_calcs.exasol_jdbc.tds +TestPath = exprtests/dateparse +# Excluding tests for hour, weekday: +# Exasol expects 'MI' as pattern for minutes instead of 'mm' +# Queries fail with error "data exception - Format appears twice" +# Excluding tests for year and month: Exasol expects pattern 'yyyy' or 'yy' instead of 'y' for year, 'mm' instead of 'm' for month and 'dd' instead of 'd' for day. +Exclusions = date.dateparse.hour, date.dateparse.weekday, date.dateparse.year, date.dateparse.month \ No newline at end of file diff --git a/tdvt_odbc/Notes.txt b/tdvt_odbc/Notes.txt deleted file mode 100644 index 4dfab9e..0000000 --- a/tdvt_odbc/Notes.txt +++ /dev/null @@ -1,6 +0,0 @@ -exasol_odbc -- connector converted as is from named 'exasolution' connector in product -- tdvt configuration details and results included for reference -- recommendations for long term maintenance: - - recreate TDS and ini files from latest SDK recommendations: https://tableau.github.io/connector-plugin-sdk/docs/tdvt - - remove skipped tests to improve functionality \ No newline at end of file diff --git a/tdvt_odbc/config/exasol_odbc.ini b/tdvt_odbc/config/exasol_odbc.ini index 25ca627..141e240 100644 --- a/tdvt_odbc/config/exasol_odbc.ini +++ b/tdvt_odbc/config/exasol_odbc.ini @@ -44,3 +44,14 @@ TDS = cast_calcs.exasol_odbc.tds TestPath = exprtests/regexcalcs # Tests fail because of different regular expression behavior. Exclusions = string.regex.icu_fallback,string.regexp.match.extended,string.regexp.extract_nth.extended,string.regexp.replace.extended,string.regexp.extract.extended + +[TestDateParse] +Type = expression +Name = TestDateParse. +TDS = cast_calcs.exasol_jdbc.tds +TestPath = exprtests/dateparse +# Excluding tests for hour, weekday: +# Exasol expects 'MI' as pattern for minutes instead of 'mm' +# Queries fail with error "data exception - Format appears twice" +# Excluding tests for year and month: Exasol expects pattern 'yyyy' or 'yy' instead of 'y' for year, 'mm' instead of 'm' for month and 'dd' instead of 'd' for day. +Exclusions = date.dateparse.hour, date.dateparse.weekday, date.dateparse.year, date.dateparse.month diff --git a/tools/run_tdvt_tests.sh b/tools/run_tdvt_tests.sh old mode 100644 new mode 100755 diff --git a/tools/setup_tdvt.sh b/tools/setup_tdvt.sh old mode 100644 new mode 100755 index 1526fb7..f3e0498 --- a/tools/setup_tdvt.sh +++ b/tools/setup_tdvt.sh @@ -8,28 +8,51 @@ readonly target_dir="$project_dir/target" readonly sdk_dir="$target_dir/connector-plugin-sdk" readonly venv_dir="$target_dir/tdvt-venv" +# Check if python or python3 is available +if command -v python3 &>/dev/null; then + python_cmd="python3" +elif command -v python &>/dev/null; then + python_cmd="python" +else + echo "Python is not installed. Please install Python 3" + exit 1 +fi + +readonly python_cmd + if [ ! -d "$sdk_dir" ]; then echo "Cloning Tableau Connector Plugin SDK repository to $sdk_dir..." mkdir -p "$sdk_dir" git clone https://github.com/tableau/connector-plugin-sdk.git "$sdk_dir" else - echo "Tableau Connector Plugin SDK already exists at $sdk_dir, no need to clone it." + echo "Tableau Connector Plugin SDK already exists at $sdk_dir, pull latest changes." + cd "$sdk_dir" + git pull + cd - fi echo "Deleting venv at $venv_dir..." rm -rf "$venv_dir" echo "Creating venv at $venv_dir..." -python -m venv "$venv_dir" -source "$venv_dir/Scripts/activate" +$python_cmd -m venv "$venv_dir" + +if [ -d "$venv_dir/Scripts" ]; then + activate_script="$venv_dir/Scripts/activate" +else + activate_script="$venv_dir/bin/activate" +fi +echo "Activating virtual environment using $activate_script" +# shellcheck source=/dev/null # file only exists at runtime +source "$activate_script" echo "Upgrading pip..." -python -m pip install --upgrade pip +$python_cmd -m pip install --upgrade pip echo "Install setuptools" -python -m pip install setuptools +$python_cmd -m pip install setuptools echo "Installing TDVT..." cd "$sdk_dir/tdvt" -python -m pip install -e . -python -m pip list +$python_cmd -m pip install -e . +$python_cmd -m pip list