oracle tests WIP

This commit is contained in:
Jan Prochazka
2024-12-10 15:35:47 +01:00
parent 6dd27eb34f
commit 00525f6b81
6 changed files with 38 additions and 11 deletions

View File

@@ -70,3 +70,9 @@ services:
# - cockroachdb # - cockroachdb
# restart: on-failure # restart: on-failure
oracle:
image: container-registry.oracle.com/database/express:21.3.0-xe
environment:
ORACLE_PWD: Pwd2020Db
ports:
- 15006:1521

View File

@@ -400,17 +400,35 @@ end;$$`,
dbSnapshotBySeconds: true, dbSnapshotBySeconds: true,
skipChangeColumn: true, skipChangeColumn: true,
}, },
{
label: 'Oracle',
connection: {
engine: 'oracle@dbgate-plugin-oracle',
password: 'Pwd2020Db',
user: 'system',
server: 'oracle',
port: 1521,
serviceName: 'xe',
},
local: {
server: 'localhost',
port: 15006,
},
skipOnCI: true,
dbSnapshotBySeconds: true,
},
]; ];
const filterLocal = [ const filterLocal = [
// filter local testing // filter local testing
'MySQL', '-MySQL',
'-MariaDB', '-MariaDB',
'-PostgreSQL', '-PostgreSQL',
'-SQL Server', '-SQL Server',
'-SQLite', '-SQLite',
'-CockroachDB', '-CockroachDB',
'-ClickHouse', '-ClickHouse',
'Oracle',
]; ];
const enginesPostgre = engines.filter(x => x.label == 'PostgreSQL'); const enginesPostgre = engines.filter(x => x.label == 'PostgreSQL');

View File

@@ -32,12 +32,14 @@ async function connect(engine, database) {
return conn; return conn;
} else { } else {
const conn = await driver.connect(connection); const conn = await driver.connect(connection);
await driver.query(conn, `CREATE DATABASE ${database}`); const dmp = driver.createDumper();
dmp.createDatabase(database);
await driver.query(conn, dmp.s);
await driver.close(conn); await driver.close(conn);
const res = await driver.connect({ const res = await driver.connect({
...connection, ...connection,
database, database: (driver.dialect.userDatabaseNamePrefix ?? '') + database,
}); });
return res; return res;
} }
@@ -55,12 +57,14 @@ async function prepareConnection(engine, database) {
}; };
} else { } else {
const conn = await driver.connect(connection); const conn = await driver.connect(connection);
await driver.query(conn, `CREATE DATABASE ${database}`); const dmp = driver.createDumper();
dmp.createDatabase(database);
await driver.query(conn, dmp.s);
await driver.close(conn); await driver.close(conn);
return { return {
...connection, ...connection,
database, database: (driver.dialect.userDatabaseNamePrefix ?? '') + database,
isPreparedOnly: true, isPreparedOnly: true,
}; };
} }

View File

@@ -51,6 +51,7 @@ export interface SqlDialect {
dropReferencesWhenDropTable?: boolean; dropReferencesWhenDropTable?: boolean;
requireFromDual?: boolean; requireFromDual?: boolean;
userDatabaseNamePrefix?: string; // c## in Oracle
predefinedDataTypes: string[]; predefinedDataTypes: string[];

View File

@@ -1,13 +1,10 @@
module.exports = ` module.exports = `
select avv.*, select avv.*
ora_hash("create_sql") as "hash_code"
from (select from (select
view_name as "pure_name", view_name as "pure_name",
-- owner as "schema_name",
-- SUBSTR(text_vc, 1, 3900) AS "create_sql"
text as "create_sql" text as "create_sql"
from all_views av from all_views av
where owner = '$owner' and text is not null where owner = 'C##test' and text is not null
) avv ) avv
where 'views:' || "pure_name" =OBJECT_ID_CONDITION where 'views:' || "pure_name" is not null
`; `;

View File

@@ -20,6 +20,7 @@ const dialect = {
quoteIdentifier(s) { quoteIdentifier(s) {
return '"' + s + '"'; return '"' + s + '"';
}, },
userDatabaseNamePrefix: 'c##',
createColumn: true, createColumn: true,
dropColumn: true, dropColumn: true,