mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-19 06:06:01 +00:00
fix lowercase for tablelist do not always convert column names to lower
This commit is contained in:
@@ -74,6 +74,7 @@ class Analyser extends DatabaseAnalyser {
|
|||||||
);
|
);
|
||||||
this.feedback({ analysingMessage: 'Loading columns' });
|
this.feedback({ analysingMessage: 'Loading columns' });
|
||||||
const columns = await this.driver.query(this.pool, this.createQuery('columns', ['tables', 'views']));
|
const columns = await this.driver.query(this.pool, this.createQuery('columns', ['tables', 'views']));
|
||||||
|
|
||||||
this.feedback({ analysingMessage: 'Loading primary keys' });
|
this.feedback({ analysingMessage: 'Loading primary keys' });
|
||||||
const pkColumns = await this.driver.query(this.pool, this.createQuery('primaryKeys', ['tables']));
|
const pkColumns = await this.driver.query(this.pool, this.createQuery('primaryKeys', ['tables']));
|
||||||
|
|
||||||
|
|||||||
@@ -16,17 +16,20 @@ pg.types.setTypeParser(1184, 'text', val => val); // timestamp
|
|||||||
function extractOracleColumns(result) {
|
function extractOracleColumns(result) {
|
||||||
if (!result /*|| !result.fields */) return [];
|
if (!result /*|| !result.fields */) return [];
|
||||||
const res = result.map(fld => ({
|
const res = result.map(fld => ({
|
||||||
columnName: fld.name.toLowerCase(),
|
columnName: fld.name, //columnName: fld.name.toLowerCase(),
|
||||||
}));
|
}));
|
||||||
makeUniqueColumnNames(res);
|
makeUniqueColumnNames(res);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
function zipDataRow(rowArray, columns) {
|
function zipDataRow(rowArray, columns) {
|
||||||
return _.zipObject(
|
let obj = _.zipObject(
|
||||||
columns.map(x => x.columnName),
|
columns.map(x => x.columnName),
|
||||||
rowArray
|
rowArray
|
||||||
);
|
);
|
||||||
|
//console.log('zipDataRow columns', columns);
|
||||||
|
//console.log('zipDataRow', obj);
|
||||||
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @type {import('dbgate-types').EngineDriver} */
|
/** @type {import('dbgate-types').EngineDriver} */
|
||||||
@@ -101,6 +104,7 @@ const drivers = driverBases.map(driverBase => ({
|
|||||||
return pool.end();
|
return pool.end();
|
||||||
},
|
},
|
||||||
async query(client, sql) {
|
async query(client, sql) {
|
||||||
|
//console.log('query sql', sql);
|
||||||
if (sql == null) {
|
if (sql == null) {
|
||||||
return {
|
return {
|
||||||
rows: [],
|
rows: [],
|
||||||
@@ -108,7 +112,7 @@ const drivers = driverBases.map(driverBase => ({
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
console.log('sql', sql);
|
//console.log('sql3', sql);
|
||||||
const res = await client.execute(sql);
|
const res = await client.execute(sql);
|
||||||
//console.log('res', res);
|
//console.log('res', res);
|
||||||
const columns = extractOracleColumns(res.metaData);
|
const columns = extractOracleColumns(res.metaData);
|
||||||
@@ -130,14 +134,14 @@ finally {
|
|||||||
rowMode: 'array',
|
rowMode: 'array',
|
||||||
});
|
});
|
||||||
*/
|
*/
|
||||||
//console.log('queryStream', sql);
|
console.log('queryStream', sql);
|
||||||
const query = client.queryStream(sql);
|
const query = client.queryStream(sql);
|
||||||
// const consumeStream = new Promise((resolve, reject) => {
|
// const consumeStream = new Promise((resolve, reject) => {
|
||||||
let rowcount = 0;
|
let rowcount = 0;
|
||||||
let wasHeader = false;
|
let wasHeader = false;
|
||||||
|
|
||||||
query.on('metadata', row => {
|
query.on('metadata', row => {
|
||||||
//console.log('metadata', row);
|
console.log('metadata', row);
|
||||||
if (!wasHeader) {
|
if (!wasHeader) {
|
||||||
columns = extractOracleColumns(row);
|
columns = extractOracleColumns(row);
|
||||||
if (columns && columns.length > 0) {
|
if (columns && columns.length > 0) {
|
||||||
@@ -150,7 +154,14 @@ finally {
|
|||||||
});
|
});
|
||||||
|
|
||||||
query.on('data', row => {
|
query.on('data', row => {
|
||||||
//console.log('DATA', row);
|
console.log('stream DATA');
|
||||||
|
if (!wasHeader) {
|
||||||
|
columns = extractOracleColumns(row);
|
||||||
|
if (columns && columns.length > 0) {
|
||||||
|
options.recordset(columns);
|
||||||
|
}
|
||||||
|
wasHeader = true;
|
||||||
|
}
|
||||||
options.row(zipDataRow(row, columns));
|
options.row(zipDataRow(row, columns));
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -203,7 +214,7 @@ finally {
|
|||||||
},
|
},
|
||||||
async getVersion(client) {
|
async getVersion(client) {
|
||||||
//const { rows } = await this.query(client, "SELECT banner as version FROM v$version WHERE banner LIKE 'Oracle%'");
|
//const { rows } = await this.query(client, "SELECT banner as version FROM v$version WHERE banner LIKE 'Oracle%'");
|
||||||
const { rows } = await this.query(client, "SELECT version FROM v$instance");
|
const { rows } = await this.query(client, "SELECT version as \"version\" FROM v$instance");
|
||||||
const { version } = rows[0];
|
const { version } = rows[0];
|
||||||
|
|
||||||
const isCockroach = false; //version.toLowerCase().includes('cockroachdb');
|
const isCockroach = false; //version.toLowerCase().includes('cockroachdb');
|
||||||
@@ -289,7 +300,7 @@ finally {
|
|||||||
return createBulkInsertStreamBase(this, stream, pool, name, options);
|
return createBulkInsertStreamBase(this, stream, pool, name, options);
|
||||||
},
|
},
|
||||||
async listDatabases(client) {
|
async listDatabases(client) {
|
||||||
const { rows } = await this.query(client, 'SELECT instance_name AS name FROM v$instance');
|
const { rows } = await this.query(client, 'SELECT instance_name AS \"name\" FROM v$instance');
|
||||||
return rows;
|
return rows;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -1,27 +1,9 @@
|
|||||||
module.exports = `
|
module.exports = `
|
||||||
select infoTables.table_schema as "schema_name", infoTables.table_name as "pure_name"
|
select
|
||||||
from (
|
owner "schema_name",
|
||||||
select
|
table_name "pure_name"
|
||||||
sys_context('userenv', 'DB_NAME') table_catalog,
|
|
||||||
owner table_schema,
|
|
||||||
table_name table_name,
|
|
||||||
case
|
|
||||||
when iot_type = 'Y' then 'IOT'
|
|
||||||
when temporary = 'Y' then 'TEMP'
|
|
||||||
else 'BASE TABLE'
|
|
||||||
end table_type
|
|
||||||
from
|
from
|
||||||
all_tables
|
all_tables
|
||||||
union all
|
where TABLE_NAME =OBJECT_ID_CONDITION
|
||||||
select
|
|
||||||
sys_context('userenv', 'DB_NAME') table_catalog,
|
|
||||||
owner table_schema,
|
|
||||||
view_name table_name,
|
|
||||||
'VIEW' table_type
|
|
||||||
from
|
|
||||||
all_views
|
|
||||||
) infoTables
|
|
||||||
where infoTables.table_type not like '%VIEW%'
|
|
||||||
and table_name =OBJECT_ID_CONDITION
|
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user