diff options
author | TomDataworks | 2016-01-12 22:44:43 -0500 |
---|---|---|
committer | Kevin Cozens | 2016-04-25 12:11:03 -0400 |
commit | e9b0f7157546a25a39a3e4e7a5ca6bd5db4c4728 (patch) | |
tree | 64c66328fdce352ab923ad04ad1c31d50a8dfbb2 /OpenSim/Data | |
parent | Removed trailing whitespace in prebuild.xml (diff) | |
download | opensim-SC-e9b0f7157546a25a39a3e4e7a5ca6bd5db4c4728.zip opensim-SC-e9b0f7157546a25a39a3e4e7a5ca6bd5db4c4728.tar.gz opensim-SC-e9b0f7157546a25a39a3e4e7a5ca6bd5db4c4728.tar.bz2 opensim-SC-e9b0f7157546a25a39a3e4e7a5ca6bd5db4c4728.tar.xz |
Fix Mantis #7805, table handler needs to look for all unique constraints.
Signed-off-by: Kevin Cozens <kevin@ve3syb.ca>
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Data/PGSQL/PGSQLGenericTableHandler.cs | 37 |
1 files changed, 16 insertions, 21 deletions
diff --git a/OpenSim/Data/PGSQL/PGSQLGenericTableHandler.cs b/OpenSim/Data/PGSQL/PGSQLGenericTableHandler.cs index 826c6fc..061de22 100644 --- a/OpenSim/Data/PGSQL/PGSQLGenericTableHandler.cs +++ b/OpenSim/Data/PGSQL/PGSQLGenericTableHandler.cs | |||
@@ -145,27 +145,22 @@ namespace OpenSim.Data.PGSQL | |||
145 | private List<string> GetConstraints() | 145 | private List<string> GetConstraints() |
146 | { | 146 | { |
147 | List<string> constraints = new List<string>(); | 147 | List<string> constraints = new List<string>(); |
148 | string query = string.Format(@"SELECT kcu.column_name | 148 | string query = string.Format(@"select |
149 | FROM information_schema.table_constraints tc | 149 | a.attname as column_name |
150 | LEFT JOIN information_schema.key_column_usage kcu | 150 | from |
151 | ON tc.constraint_catalog = kcu.constraint_catalog | 151 | pg_class t, |
152 | AND tc.constraint_schema = kcu.constraint_schema | 152 | pg_class i, |
153 | AND tc.constraint_name = kcu.constraint_name | 153 | pg_index ix, |
154 | 154 | pg_attribute a | |
155 | LEFT JOIN information_schema.referential_constraints rc | 155 | where |
156 | ON tc.constraint_catalog = rc.constraint_catalog | 156 | t.oid = ix.indrelid |
157 | AND tc.constraint_schema = rc.constraint_schema | 157 | and i.oid = ix.indexrelid |
158 | AND tc.constraint_name = rc.constraint_name | 158 | and a.attrelid = t.oid |
159 | 159 | and a.attnum = ANY(ix.indkey) | |
160 | LEFT JOIN information_schema.constraint_column_usage ccu | 160 | and t.relkind = 'r' |
161 | ON rc.unique_constraint_catalog = ccu.constraint_catalog | 161 | and ix.indisunique = true |
162 | AND rc.unique_constraint_schema = ccu.constraint_schema | 162 | and t.relname = lower('{0}') |
163 | AND rc.unique_constraint_name = ccu.constraint_name | 163 | ;", m_Realm); |
164 | |||
165 | where tc.table_name = lower('{0}') | ||
166 | and lower(tc.constraint_type) in ('primary key') | ||
167 | and kcu.column_name is not null | ||
168 | ;", m_Realm); | ||
169 | 164 | ||
170 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) | 165 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
171 | using (NpgsqlCommand cmd = new NpgsqlCommand(query, conn)) | 166 | using (NpgsqlCommand cmd = new NpgsqlCommand(query, conn)) |