Resolve "Improve GENERATED support"
This commit is contained in:
parent
54e39ccdb3
commit
9277731c4e
13 changed files with 749 additions and 246 deletions
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue