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