clickhouse: rename & change column

This commit is contained in:
Jan Prochazka
2024-09-11 16:28:35 +02:00
parent 08fce96691
commit 33eed816aa
3 changed files with 58 additions and 3 deletions

View File

@@ -5,6 +5,24 @@ class Dumper extends SqlDumper {
this.put('^alter ^table %f ^modify ', table);
this.put(formatString, optionValue);
}
changeColumn(oldcol, newcol, constraints) {
if (oldcol.columnName != newcol.columnName) {
this.putCmd('^alter ^table %f ^rename ^column %i ^to %i', oldcol, oldcol.columnName, newcol.columnName);
}
this.put('^alter ^table %f ^modify ^column %i ', newcol, newcol.columnName);
this.columnDefinition(newcol);
this.endCommand();
}
columnType(dataType) {
this.putRaw(dataType);
}
renameColumn(column, newcol) {
this.putCmd('^alter ^table %f ^rename ^column %i ^to %i', column, column.columnName, newcol);
}
}
module.exports = Dumper;

View File

@@ -50,6 +50,41 @@ const clickhouseEngines = [
'DeltaLake',
];
const clickhouseDataTypes = [
'Int8',
'Int16',
'Int32',
'Int64',
'UInt8',
'UInt16',
'UInt32',
'UInt64',
'Float32',
'Float64',
'Decimal',
'String',
'FixedString',
'UUID',
'Date',
'DateTime',
'DateTime64',
"DateTime('UTC')",
'Date32',
'Enum8',
'Enum16',
'Array',
'Tuple',
'Nullable',
'LowCardinality',
'Map',
'JSON',
'IPv4',
'IPv6',
'Nested',
'AggregateFunction',
'SimpleAggregateFunction',
];
/** @type {import('dbgate-types').SqlDialect} */
const dialect = {
limitSelect: true,
@@ -93,6 +128,8 @@ const dialect = {
},
];
},
predefinedDataTypes: clickhouseDataTypes,
};
/** @type {import('dbgate-types').EngineDriver} */