Resolve "Improve GENERATED support"

This commit is contained in:
Eelke Klein 2022-09-06 11:17:18 +00:00
parent 54e39ccdb3
commit 9277731c4e
13 changed files with 749 additions and 246 deletions

View file

@ -12,6 +12,7 @@
#include "ScopeGuard.h"
#include "SqlFormattingUtils.h"
#include <QBrush>
#include <QStringBuilder>
namespace {
@ -142,18 +143,6 @@ int ColumnTableModel::columnCount(const QModelIndex &/*parent*/) const
Oid ColumnTableModel::getType(int /*column*/) const
{
Oid oid = Pgsql::varchar_oid;
// switch (column) {
// case TypeCol:
// case NameCol:
// case NullCol:
// case DefaultCol:
// case CollationCol:
// oid = VARCHAROID;
// break;
// c = tr("Collation");
// break;
// }
return oid;
}
@ -191,7 +180,7 @@ QVariant ColumnTableModel::getData(const QModelIndex &index) const
v = QString::fromStdU16String(t.notnull ? u"" : u"N");
break;
case DefaultCol:
v = t.defaultValue;
v = getDefaultString(t);
break;
case ForeignKeyCol:
v = getFKey(t);
@ -222,7 +211,36 @@ QString ColumnTableModel::getFKey(const PgAttribute &column) const
result = getForeignKeyConstraintReferencesShort(*m_catalog, elem);
}
}
return result;
return result;
}
QString ColumnTableModel::getDefaultString(const PgAttribute &column) const
{
if (column.identity != '\0') {
QString sql = "GENERATED ";
switch (column.identity) {
case 'a':
sql += "ALWAYS";
break;
case 'd':
sql += "BY DEFAULT";
break;
}
sql += " AS IDENTITY";
// TODO sequence options might be missing
return sql;
}
if (column.generated != '\0')
{
return "GENERATED ALWAYS AS " % column.defaultValue % " STORED";
}
if (column.hasdef)
return column.defaultValue;
return {};
}
void ColumnTableModel::refresh()