mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-30 17:24:00 +00:00
oracle query spec passed
This commit is contained in:
@@ -1,11 +1,12 @@
|
|||||||
const engines = require('../engines');
|
const engines = require('../engines');
|
||||||
const { splitQuery } = require('dbgate-query-splitter');
|
const { splitQuery } = require('dbgate-query-splitter');
|
||||||
const { testWrapper } = require('../tools');
|
const { testWrapper } = require('../tools');
|
||||||
|
const { runQueryOnDriver, runCommandOnDriver, formatQueryWithoutParams } = require('dbgate-tools');
|
||||||
|
|
||||||
const initSql = [
|
const initSql = [
|
||||||
'CREATE TABLE t1 (id int primary key)',
|
'CREATE TABLE ~t1 (~id int primary key)',
|
||||||
'INSERT INTO t1 (id) VALUES (1)',
|
'INSERT INTO ~t1 (~id) VALUES (1)',
|
||||||
'INSERT INTO t1 (id) VALUES (2)',
|
'INSERT INTO ~t1 (~id) VALUES (2)',
|
||||||
];
|
];
|
||||||
|
|
||||||
expect.extend({
|
expect.extend({
|
||||||
@@ -51,7 +52,7 @@ class StreamHandler {
|
|||||||
function executeStreamItem(driver, conn, sql) {
|
function executeStreamItem(driver, conn, sql) {
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
const handler = new StreamHandler(resolve);
|
const handler = new StreamHandler(resolve);
|
||||||
driver.stream(conn, sql, handler);
|
driver.stream(conn, formatQueryWithoutParams(driver, sql), handler);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -68,9 +69,11 @@ describe('Query', () => {
|
|||||||
test.each(engines.map(engine => [engine.label, engine]))(
|
test.each(engines.map(engine => [engine.label, engine]))(
|
||||||
'Simple query - %s',
|
'Simple query - %s',
|
||||||
testWrapper(async (conn, driver, engine) => {
|
testWrapper(async (conn, driver, engine) => {
|
||||||
for (const sql of initSql) await driver.query(conn, sql, { discardResult: true });
|
for (const sql of initSql) {
|
||||||
|
await runCommandOnDriver(conn, driver, dmp => dmp.put(sql));
|
||||||
|
}
|
||||||
|
|
||||||
const res = await driver.query(conn, 'SELECT id FROM t1 ORDER BY id');
|
const res = await runQueryOnDriver(conn, driver, dmp => dmp.put('SELECT ~id FROM ~t1 ORDER BY ~id'));
|
||||||
expect(res.columns).toEqual([
|
expect(res.columns).toEqual([
|
||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
columnName: 'id',
|
columnName: 'id',
|
||||||
@@ -91,8 +94,11 @@ describe('Query', () => {
|
|||||||
test.each(engines.map(engine => [engine.label, engine]))(
|
test.each(engines.map(engine => [engine.label, engine]))(
|
||||||
'Simple stream query - %s',
|
'Simple stream query - %s',
|
||||||
testWrapper(async (conn, driver, engine) => {
|
testWrapper(async (conn, driver, engine) => {
|
||||||
for (const sql of initSql) await driver.query(conn, sql, { discardResult: true });
|
for (const sql of initSql) {
|
||||||
const results = await executeStream(driver, conn, 'SELECT id FROM t1 ORDER BY id');
|
await runCommandOnDriver(conn, driver, dmp => dmp.put(sql));
|
||||||
|
}
|
||||||
|
|
||||||
|
const results = await executeStream(driver, conn, 'SELECT ~id FROM ~t1 ORDER BY ~id');
|
||||||
expect(results.length).toEqual(1);
|
expect(results.length).toEqual(1);
|
||||||
const res = results[0];
|
const res = results[0];
|
||||||
|
|
||||||
@@ -104,11 +110,14 @@ describe('Query', () => {
|
|||||||
test.each(engines.map(engine => [engine.label, engine]))(
|
test.each(engines.map(engine => [engine.label, engine]))(
|
||||||
'More queries - %s',
|
'More queries - %s',
|
||||||
testWrapper(async (conn, driver, engine) => {
|
testWrapper(async (conn, driver, engine) => {
|
||||||
for (const sql of initSql) await driver.query(conn, sql, { discardResult: true });
|
for (const sql of initSql) {
|
||||||
|
await runCommandOnDriver(conn, driver, dmp => dmp.put(sql));
|
||||||
|
}
|
||||||
|
|
||||||
const results = await executeStream(
|
const results = await executeStream(
|
||||||
driver,
|
driver,
|
||||||
conn,
|
conn,
|
||||||
'SELECT id FROM t1 ORDER BY id; SELECT id FROM t1 ORDER BY id DESC'
|
'SELECT ~id FROM ~t1 ORDER BY ~id; SELECT ~id FROM ~t1 ORDER BY ~id DESC'
|
||||||
);
|
);
|
||||||
expect(results.length).toEqual(2);
|
expect(results.length).toEqual(2);
|
||||||
|
|
||||||
@@ -128,7 +137,7 @@ describe('Query', () => {
|
|||||||
const results = await executeStream(
|
const results = await executeStream(
|
||||||
driver,
|
driver,
|
||||||
conn,
|
conn,
|
||||||
'CREATE TABLE t1 (id int primary key); INSERT INTO t1 (id) VALUES (1); INSERT INTO t1 (id) VALUES (2); SELECT id FROM t1 ORDER BY id; '
|
'CREATE TABLE ~t1 (~id int primary key); INSERT INTO ~t1 (~id) VALUES (1); INSERT INTO ~t1 (~id) VALUES (2); SELECT ~id FROM ~t1 ORDER BY ~id; '
|
||||||
);
|
);
|
||||||
expect(results.length).toEqual(1);
|
expect(results.length).toEqual(1);
|
||||||
|
|
||||||
@@ -144,7 +153,7 @@ describe('Query', () => {
|
|||||||
const results = await executeStream(
|
const results = await executeStream(
|
||||||
driver,
|
driver,
|
||||||
conn,
|
conn,
|
||||||
'CREATE TABLE t1 (id int); INSERT INTO t1 (id) VALUES (1); INSERT INTO t1 (id) VALUES (2) '
|
'CREATE TABLE ~t1 (~id int); INSERT INTO ~t1 (~id) VALUES (1); INSERT INTO ~t1 (~id) VALUES (2) '
|
||||||
);
|
);
|
||||||
expect(results.length).toEqual(0);
|
expect(results.length).toEqual(0);
|
||||||
})
|
})
|
||||||
@@ -153,14 +162,19 @@ describe('Query', () => {
|
|||||||
test.each(engines.filter(x => !x.skipDataModifications).map(engine => [engine.label, engine]))(
|
test.each(engines.filter(x => !x.skipDataModifications).map(engine => [engine.label, engine]))(
|
||||||
'Save data query - %s',
|
'Save data query - %s',
|
||||||
testWrapper(async (conn, driver, engine) => {
|
testWrapper(async (conn, driver, engine) => {
|
||||||
for (const sql of initSql) await driver.query(conn, sql, { discardResult: true });
|
for (const sql of initSql) {
|
||||||
|
await runCommandOnDriver(conn, driver, dmp => dmp.put(sql));
|
||||||
|
}
|
||||||
|
|
||||||
await driver.script(
|
await driver.script(
|
||||||
conn,
|
conn,
|
||||||
'INSERT INTO t1 (id) VALUES (3);INSERT INTO t1 (id) VALUES (4);UPDATE t1 SET id=10 WHERE id=1;DELETE FROM t1 WHERE id=2;',
|
formatQueryWithoutParams(
|
||||||
|
driver,
|
||||||
|
'INSERT INTO ~t1 (~id) VALUES (3);INSERT INTO ~t1 (~id) VALUES (4);UPDATE ~t1 SET ~id=10 WHERE ~id=1;DELETE FROM ~t1 WHERE ~id=2;'
|
||||||
|
),
|
||||||
{ discardResult: true }
|
{ discardResult: true }
|
||||||
);
|
);
|
||||||
const res = await driver.query(conn, 'SELECT COUNT(*) AS cnt FROM t1');
|
const res = await runQueryOnDriver(conn, driver, dmp => dmp.put('SELECT COUNT(*) AS ~cnt FROM ~t1'));
|
||||||
// console.log(res);
|
// console.log(res);
|
||||||
expect(res.rows[0].cnt == 3).toBeTruthy();
|
expect(res.rows[0].cnt == 3).toBeTruthy();
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -44,6 +44,12 @@ export async function runQueryOnDriver(
|
|||||||
return await driver.query(pool, dmp.s);
|
return await driver.query(pool, dmp.s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function formatQueryWithoutParams(driver: EngineDriver, sql: string) {
|
||||||
|
const dmp = driver.createDumper();
|
||||||
|
dmp.put(sql);
|
||||||
|
return dmp.s;
|
||||||
|
}
|
||||||
|
|
||||||
export const driverBase = {
|
export const driverBase = {
|
||||||
analyserClass: null,
|
analyserClass: null,
|
||||||
dumperClass: SqlDumper,
|
dumperClass: SqlDumper,
|
||||||
|
|||||||
Reference in New Issue
Block a user