Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

re-enabled v8 tests #40

Merged
merged 3 commits into from
Nov 28, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .project-keeper.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@ excludes:
- "E-PK-CORE-18: Outdated content: '.github/workflows/ci-build.yml'"
- "E-PK-CORE-18: Outdated content: '.github/workflows/release_droid_upload_github_release_assets.yml'"
- "E-PK-CORE-18: Outdated content: '.github/workflows/release_droid_prepare_original_checksum.yml'"
ciBuildRunnerOS: ubuntu-20.04

6 changes: 5 additions & 1 deletion doc/changes/changes_2.4.3.md
pj-spoelders marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ This release adds integration tests using Exasol 8 and the extension code making
* Updated `com.exasol:exasol-testcontainers:6.6.2` to `6.6.3`
* Added `com.exasol:extension-manager-integration-test-java:0.5.6`
* Updated `com.exasol:hamcrest-resultset-matcher:1.6.1` to `1.6.2`
* Updated `com.exasol:test-db-builder-java:3.5.1` to `3.5.2`
* Added `com.oracle.database.jdbc:ojdbc8:23.3.0.23.09`
* Updated `nl.jqno.equalsverifier:equalsverifier:3.15.2` to `3.15.3`
* Updated `org.jacoco:org.jacoco.agent:0.8.10` to `0.8.11`
Expand All @@ -40,9 +41,12 @@ This release adds integration tests using Exasol 8 and the extension code making
#### Plugin Dependency Updates

* Updated `com.exasol:error-code-crawler-maven-plugin:1.3.0` to `1.3.1`
* Updated `com.exasol:project-keeper-maven-plugin:2.9.12` to `2.9.15`
* Updated `com.exasol:project-keeper-maven-plugin:2.9.12` to `2.9.16`
* Updated `org.apache.maven.plugins:maven-clean-plugin:2.5` to `3.3.2`
* Updated `org.apache.maven.plugins:maven-dependency-plugin:3.6.0` to `3.6.1`
* Updated `org.apache.maven.plugins:maven-enforcer-plugin:3.4.0` to `3.4.1`
* Updated `org.apache.maven.plugins:maven-failsafe-plugin:3.1.2` to `3.2.2`
* Updated `org.apache.maven.plugins:maven-surefire-plugin:3.1.2` to `3.2.2`
* Added `org.codehaus.mojo:exec-maven-plugin:3.1.0`
* Updated `org.codehaus.mojo:versions-maven-plugin:2.16.0` to `2.16.1`
* Updated `org.jacoco:jacoco-maven-plugin:0.8.10` to `0.8.11`
Expand Down
15 changes: 10 additions & 5 deletions pk_generated_parent.pom

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@
<dependency>
<groupId>com.exasol</groupId>
<artifactId>test-db-builder-java</artifactId>
<version>3.5.1</version>
<version>3.5.2</version>
<scope>test</scope>
</dependency>
<dependency>
Expand Down Expand Up @@ -156,7 +156,7 @@
<plugin>
<groupId>com.exasol</groupId>
<artifactId>project-keeper-maven-plugin</artifactId>
<version>2.9.15</version>
<version>2.9.16</version>
<executions>
<execution>
<goals>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
package com.exasol.adapter.dialects.oracle;

import static com.exasol.adapter.metadata.DataType.IntervalType.DAY_TO_SECOND;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.*;

import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.extension.ExtendWith;

import com.exasol.adapter.commontests.scalarfunction.ScalarFunctionsTestBase;
import com.exasol.adapter.commontests.scalarfunction.TestSetup;
import com.exasol.adapter.commontests.scalarfunction.virtualschematestsetup.*;
Expand All @@ -12,19 +21,10 @@
import com.exasol.dbbuilder.dialects.Table;
import com.exasol.dbbuilder.dialects.exasol.VirtualSchema;
import com.exasol.dbbuilder.dialects.oracle.OracleObjectFactory;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.extension.ExtendWith;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.*;

import static com.exasol.adapter.metadata.DataType.IntervalType.DAY_TO_SECOND;

@ExtendWith({CloseAfterAllExtension.class})
@ExtendWith({ CloseAfterAllExtension.class })
class OracleScalarFunctionsIT extends ScalarFunctionsTestBase {


@CloseAfterAll
private static final OracleVirtualSchemaIntegrationTestSetup SETUP = new OracleVirtualSchemaIntegrationTestSetup();
static int idCounter = 0;
Expand All @@ -34,11 +34,6 @@ protected static String getUniqueIdentifier() {
return "ID" + idCounter;
}

@BeforeAll
static void assumeExasol71() throws SQLException {
ExasolVersionCheck.assumeExasolVersion7(SETUP.getExasolContainer().createConnection());
}

@Override
protected TestSetup getTestSetup() {
final OracleObjectFactory oracleFactory = SETUP.getOracleFactory();
Expand Down Expand Up @@ -71,36 +66,34 @@ static void beforeAll() {
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
}


public class OracleTestSetup implements TestSetup {
final OracleObjectFactory oracleFactory;

OracleTestSetup(OracleObjectFactory oracleFactory) {
OracleTestSetup(final OracleObjectFactory oracleFactory) {
this.oracleFactory = oracleFactory;
}

@Override
public VirtualSchemaTestSetupProvider getVirtualSchemaTestSetupProvider() {
return (final CreateVirtualSchemaTestSetupRequest request) -> {
//create schema in oracle DB with increasing ID, ID1, ID2, etc.
// create schema in oracle DB with increasing ID, ID1, ID2, etc.
final Schema oracleSchema = oracleFactory.createSchema(getUniqueIdentifier());

for (final TableRequest tableRequest : request.getTableRequests()) {
createTableInSchema(oracleSchema, tableRequest);
}
//create a virtual schema with the same name as the oracle schema
// create a virtual schema with the same name as the oracle schema
final VirtualSchema virtualSchema = SETUP.createVirtualSchema(oracleSchema.getName(),
Collections.emptyMap());

return new OracleScalarFunctionsIT.OracleSingleTableVirtualSchemaTestSetup(virtualSchema, oracleSchema);
};
}

//case sensitive!!! 1 on 1
// case sensitive!!! 1 on 1
// .tolower() for the table and column names (brought over from postgresql) was causing trouble here.
private void createTableInSchema(Schema oracleSchema, TableRequest tableRequest) {
final Table.Builder tableBuilder = oracleSchema
.createTableBuilder(tableRequest.getName());
private void createTableInSchema(final Schema oracleSchema, final TableRequest tableRequest) {
final Table.Builder tableBuilder = oracleSchema.createTableBuilder(tableRequest.getName());
for (final Column column : tableRequest.getColumns()) {
tableBuilder.column(column.getName(), column.getType());
}
Expand All @@ -110,47 +103,49 @@ private void createTableInSchema(Schema oracleSchema, TableRequest tableRequest)
}
}

//https://docs.exasol.com/db/latest/migration_guides/oracle/execution/datatypemapping.htm
// https://docs.exasol.com/db/latest/migration_guides/oracle/execution/datatypemapping.htm
@Override
public String getExternalTypeFor(final DataType exasolType) {
switch (exasolType.getExaDataType()) {
case VARCHAR:
return "VARCHAR2(" + exasolType.getSize() + " CHAR)";
case CHAR:
return "NCHAR2(" + exasolType.getSize() + ")";
case DATE:
return "DATE";
case TIMESTAMP:
return "TIMESTAMP (" + exasolType.getPrecision() + ")";
case DOUBLE:
return "DOUBLE PRECISION";
case DECIMAL:
return "DECIMAL";
case BOOLEAN:
return "NUMBER(1)";
case HASHTYPE:
return "RAW(" + exasolType.getSize() + ")";
case INTERVAL:
if (exasolType.getIntervalType() == DAY_TO_SECOND) {
return "INTERVAL DAY(" + exasolType.getPrecision() + ") TO SECOND(" + exasolType.getIntervalFraction() + ")";
} else {
return "INTERVAL YEAR(" + exasolType.getPrecision() + ") TO MONTH";
}
default:
return exasolType.toString();
case VARCHAR:
return "VARCHAR2(" + exasolType.getSize() + " CHAR)";
case CHAR:
return "NCHAR2(" + exasolType.getSize() + ")";
case DATE:
return "DATE";
case TIMESTAMP:
return "TIMESTAMP (" + exasolType.getPrecision() + ")";
case DOUBLE:
return "DOUBLE PRECISION";
case DECIMAL:
return "DECIMAL";
case BOOLEAN:
return "NUMBER(1)";
case HASHTYPE:
return "RAW(" + exasolType.getSize() + ")";
case INTERVAL:
if (exasolType.getIntervalType() == DAY_TO_SECOND) {
return "INTERVAL DAY(" + exasolType.getPrecision() + ") TO SECOND("
+ exasolType.getIntervalFraction() + ")";
} else {
return "INTERVAL YEAR(" + exasolType.getPrecision() + ") TO MONTH";
}
default:
return exasolType.toString();
}
}

@Override
public Set<String> getDialectSpecificExcludes() {
return Set.of("neg",
"upper(\"DOUBLE_PRECISION_C0\")",//oracle converts 0.5 to '.5' instead of '0.5'
"upper(\"DATE_C5\")",//different date formatting
"upper(\"TIMESTAMP_0_C6\")", //different timestamp formatting
"to_dsinterval", "numtoyminterval", "systimestamp", "cast", "current_timestamp", "numtodsinterval", "to_yminterval",
"character_length", "trim", "add_months", "char_length", "instr", "lower", "regexp_replace", "substr", "add_hours", "left", "mid", "add_weeks",
"add_minutes", "to_timestamp", "reverse", "regexp_instr", "soundex", "add_days", "add_years", "replace", "translate", "lpad", "ltrim", "regexp_substr", "ucase", "lcase",
"character_Length", "locate", "curdate", "substring", "rpad", "to_date", "to_char", "repeat", "to_number", "length", "rtrim", "add_seconds");
return Set.of("neg", "upper(\"DOUBLE_PRECISION_C0\")", // oracle converts 0.5 to '.5' instead of '0.5'
"upper(\"DATE_C5\")", // different date formatting
"upper(\"TIMESTAMP_0_C6\")", // different timestamp formatting
"to_dsinterval", "numtoyminterval", "systimestamp", "cast", "current_timestamp", "numtodsinterval",
"to_yminterval", "character_length", "trim", "add_months", "char_length", "instr", "lower",
"regexp_replace", "substr", "add_hours", "left", "mid", "add_weeks", "add_minutes", "to_timestamp",
"reverse", "regexp_instr", "soundex", "add_days", "add_years", "replace", "translate", "lpad",
"ltrim", "regexp_substr", "ucase", "lcase", "character_Length", "locate", "curdate", "substring",
"rpad", "to_date", "to_char", "repeat", "to_number", "length", "rtrim", "add_seconds");
}

@Override
Expand Down