support for quote identifiers

This commit is contained in:
Jan Prochazka
2024-08-30 12:20:35 +02:00
parent 075f92ac31
commit 9a39fee663
2 changed files with 25 additions and 5 deletions

View File

@@ -133,11 +133,30 @@ export class SqlDumper implements AlterProcessor {
i++; i++;
switch (c) { switch (c) {
case '^': case '^':
if (format[i] == '^') {
this.putRaw('^');
i++;
break;
}
while (i < length && format[i].match(/[a-z0-9_]/i)) { while (i < length && format[i].match(/[a-z0-9_]/i)) {
this.putRaw(SqlDumper.convertKeywordCase(format[i])); this.putRaw(SqlDumper.convertKeywordCase(format[i]));
i++; i++;
} }
break; break;
case '~':
if (format[i] == '~') {
this.putRaw('~');
i++;
break;
}
let ident = '';
while (i < length && format[i].match(/[a-z0-9_]/i)) {
ident += format[i];
i++;
}
this.putRaw(this.dialect.quoteIdentifier(ident));
break;
case '%': case '%':
c = format[i]; c = format[i];
i++; i++;

View File

@@ -86,17 +86,18 @@ const driver = {
return pool.end(); return pool.end();
}, },
async query(client, sql) { async query(client, sql) {
if (sql.trim() == 'COMMIT;') {
sql = 'COMMIT';
}
if (sql == null) { if (sql == null) {
return { return {
rows: [], rows: [],
columns: [], columns: [],
}; };
} }
const mtrim = sql.match(/(.*);\s*$/);
if (mtrim) {
sql = mtrim[1];
}
const res = await client.execute(sql); const res = await client.execute(sql);
const columns = extractOracleColumns(res.metaData); const columns = extractOracleColumns(res.metaData);
return { rows: (res.rows || []).map(row => zipDataRow(row, columns)), columns }; return { rows: (res.rows || []).map(row => zipDataRow(row, columns)), columns };