WIP: SQL for creating table and related objects

This commit is contained in:
eelke 2018-11-30 18:41:38 +01:00
parent 57217974f4
commit 498233d58c
15 changed files with 221 additions and 121 deletions

View file

@ -2,6 +2,7 @@
#include "PgDatabaseCatalog.h"
#include "PgClassContainer.h"
#include "PgAmContainer.h"
#include <QStringBuilder>
QString PgIndex::getAm() const
{
@ -15,3 +16,62 @@ QString PgIndex::getAm() const
}
return result;
}
QString PgIndex::createSql() const
{
return definition + ";";
// const PgClass *table_class = catalog.classes()->getByKey(index.relid);
// const PgClass *index_class = catalog.classes()->getByKey(index.indexrelid);
// QString result;
// result = "CREATE ";
// if (index.isunique)
// result += "UNIQUE ";
// result += "INDEX "
//// % quoteIdent(getIndexDisplayString(catalog, index.indexrelid))
// % quoteIdent(index_class.name)
// % "\n ON " % genFQTableName(catalog, table_class);
//// % "\n USING " % index_class.am lookup in pg_am table
// return result;
#if 0
+ wxT("\n USING ") + GetIndexType()
+ wxT("\n (");
if (GetProcName().IsNull())
str += GetQuotedColumns();
else
{
str += GetQuotedSchemaPrefix(GetProcNamespace()) + qtIdent(GetProcName()) + wxT("(") + GetQuotedColumns() + wxT(")");
if (!this->GetOperatorClasses().IsNull())
str += wxT(" ") + GetOperatorClasses();
}
str += wxT(")");
if (GetConnection()->BackendMinimumVersion(8, 2) && GetFillFactor().Length() > 0)
str += wxT("\n WITH (FILLFACTOR=") + GetFillFactor() + wxT(")");
if (GetConnection()->BackendMinimumVersion(8, 0) && tablespace != GetDatabase()->GetDefaultTablespace())
str += wxT("\nTABLESPACE ") + qtIdent(tablespace);
AppendIfFilled(str, wxT("\n WHERE "), GetConstraint());
str += wxT(";\n");
if (GetConnection()->BackendMinimumVersion(7, 5))
if (GetIsClustered())
str += wxT("ALTER TABLE ") + GetQuotedSchemaPrefix(GetIdxSchema()) + qtIdent(GetIdxTable())
+ wxT(" CLUSTER ON ") + qtIdent(GetName())
+ wxT(";\n");
#endif
}
QString PgIndex::dropSql() const
{
QString result;
result = "DROP INDEX "
% fullyQualifiedQuotedObjectName()
% ";";
return result;
}