rename column works

This commit is contained in:
Jan Prochazka
2021-07-01 10:50:41 +02:00
parent 7a2e86246d
commit 7a10b85b4c
4 changed files with 23 additions and 7 deletions

View File

@@ -41,7 +41,7 @@ async function testTableDiff(conn, driver, mangle) {
structure2 = extendDatabaseInfo(structure2); structure2 = extendDatabaseInfo(structure2);
const sql = getAlterTableScript(tget(structure1), tget(structure2), {}, structure2, driver); const sql = getAlterTableScript(tget(structure1), tget(structure2), {}, structure2, driver);
console.log('RUNNING ALTER SQL:', sql); console.log('RUNNING ALTER SQL', driver.engine, ':', sql);
await driver.query(conn, sql); await driver.query(conn, sql);
@@ -51,10 +51,11 @@ async function testTableDiff(conn, driver, mangle) {
// expect(stableStringify(structure2)).toEqual(stableStringify(structure2Real)); // expect(stableStringify(structure2)).toEqual(stableStringify(structure2Real));
} }
// const TESTED_COLUMNS = ['col_std', 'col_def', 'col_fk', 'col_idx'];
const TESTED_COLUMNS = ['col_std'];
function engines_columns_source() { function engines_columns_source() {
return _.flatten( return _.flatten(engines.map(engine => TESTED_COLUMNS.map(column => [engine.label, column, engine])));
engines.map(engine => ['col_std', 'col_def', 'col_fk', 'col_idx'].map(column => [engine.label, column, engine]))
);
} }
describe('Alter processor', () => { describe('Alter processor', () => {
@@ -92,7 +93,7 @@ describe('Alter processor', () => {
); );
test.each(engines_columns_source())( test.each(engines_columns_source())(
'Rename column - %s', 'Rename column - %s - %s',
testWrapper(async (conn, driver, column, engine) => { testWrapper(async (conn, driver, column, engine) => {
await testTableDiff( await testTableDiff(
conn, conn,

View File

@@ -189,5 +189,14 @@ export function runAlterOperation(op: AlterOperation, processor: AlterProcessor)
case 'dropConstraint': case 'dropConstraint':
processor.dropConstraint(op.oldObject); processor.dropConstraint(op.oldObject);
break; break;
case 'renameColumn':
processor.renameColumn(op.object, op.newName);
break;
case 'renameTable':
processor.renameTable(op.object, op.newName);
break;
case 'renameConstraint':
processor.renameConstraint(op.object, op.newName);
break;
} }
} }

View File

@@ -255,9 +255,11 @@ function planAlterTable(plan: AlterPlan, oldTable: TableInfo, newTable: TableInf
.filter(x => x[0] && x[1]) .filter(x => x[0] && x[1])
.forEach(x => { .forEach(x => {
if (!testEqualsColumns(x[0], x[1], true, true, opts)) { if (!testEqualsColumns(x[0], x[1], true, true, opts)) {
if (!testEqualsColumns(x[0], x[1], false, true, opts)) { if (testEqualsColumns(x[0], x[1], false, true, opts)) {
// console.log('PLAN RENAME COLUMN')
plan.renameColumn(x[0], x[1].columnName); plan.renameColumn(x[0], x[1].columnName);
} else { } else {
// console.log('PLAN CHANGE COLUMN')
plan.changeColumn(x[0], x[1]); plan.changeColumn(x[0], x[1]);
} }
} }

View File

@@ -1,5 +1,9 @@
const { SqlDumper } = global.DBGATE_TOOLS; const { SqlDumper } = global.DBGATE_TOOLS;
class Dumper extends SqlDumper {} class Dumper extends SqlDumper {
renameColumn(column, newcol) {
this.putCmd('^alter ^table %f ^rename ^column %i ^to %i', column, column.columnName, newcol);
}
}
module.exports = Dumper; module.exports = Dumper;