From 832cab78796e12066e9ae5cf1ddf8fb75d295ae3 Mon Sep 17 00:00:00 2001 From: Marti Raudsepp Date: Wed, 6 Oct 2010 00:07:04 +0300 Subject: [PATCH] Fix CREATE INDEX/CONSTRAINT syntax when tablespace and fillfactor are specified Reverse the order of TABLESPACE and WITH() clauses for indexes. Previously pgAdminIII generated CREATE scripts like: ALTER TABLE foo ADD CONSTRAINT foo_pkey PRIMARY KEY(foo_id) USING INDEX TABLESPACE bar WITH (FILLFACTOR=50); CREATE INDEX foo_foo_id ON foo USING btree (foo_id) TABLESPACE bar WITH (FILLFACTOR=50); However these are illegal PostgreSQL syntax, the WITH() clause must come before TABLESPACE. The statements generated by "new index" or "new primary key" dialogs are already correct. --- pgadmin/schema/pgIndex.cpp | 6 +++--- pgadmin/schema/pgIndexConstraint.cpp | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pgadmin/schema/pgIndex.cpp b/pgadmin/schema/pgIndex.cpp index 51999a6..ad520f7 100644 --- a/pgadmin/schema/pgIndex.cpp +++ b/pgadmin/schema/pgIndex.cpp @@ -132,12 +132,12 @@ wxString pgIndexBase::GetCreate() str += wxT(")"); - if (GetConnection()->BackendMinimumVersion(8, 0) && tablespace != GetDatabase()->GetDefaultTablespace()) - str += wxT("\nTABLESPACE ") + qtIdent(tablespace); - 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"); diff --git a/pgadmin/schema/pgIndexConstraint.cpp b/pgadmin/schema/pgIndexConstraint.cpp index fec9d4b..10d1bba 100644 --- a/pgadmin/schema/pgIndexConstraint.cpp +++ b/pgadmin/schema/pgIndexConstraint.cpp @@ -110,12 +110,12 @@ wxString pgIndexConstraint::GetDefinition() sql += wxT("(") + GetQuotedColumns() + wxT(")"); - if (GetConnection()->BackendMinimumVersion(8, 0) && GetTablespace() != GetDatabase()->GetDefaultTablespace()) - sql += wxT("\n USING INDEX TABLESPACE ") + qtIdent(GetTablespace()); - if (GetConnection()->BackendMinimumVersion(8, 2) && GetFillFactor().Length() > 0) sql += wxT("\n WITH (FILLFACTOR=") + GetFillFactor() + wxT(")"); + if (GetConnection()->BackendMinimumVersion(8, 0) && GetTablespace() != GetDatabase()->GetDefaultTablespace()) + sql += wxT("\n USING INDEX TABLESPACE ") + qtIdent(GetTablespace()); + if (GetConstraint().Length() > 0) sql += wxT(" WHERE (") + GetConstraint() + wxT(")"); -- 1.7.3.1