diff options
author | Eike Stepper | 2013-03-06 07:50:54 +0000 |
---|---|---|
committer | Eike Stepper | 2013-03-07 13:44:28 +0000 |
commit | 16aa130826e48bc33f5dbd7888f75face530e90d (patch) | |
tree | 3622a3d46bbde50557b7430641104e08f1fb51f6 /plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/ddl/DBTable.java | |
parent | 81a23a1e6238318f5fc18c97c0ef64b3ed51b3df (diff) | |
download | cdo-16aa130826e48bc33f5dbd7888f75face530e90d.tar.gz cdo-16aa130826e48bc33f5dbd7888f75face530e90d.tar.xz cdo-16aa130826e48bc33f5dbd7888f75face530e90d.zip |
[401763] Make CDO Server more robust against data dictionary changes
https://bugs.eclipse.org/bugs/show_bug.cgi?id=401763
Diffstat (limited to 'plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/ddl/DBTable.java')
-rw-r--r-- | plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/ddl/DBTable.java | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/ddl/DBTable.java b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/ddl/DBTable.java index 35dfd9bb66..0d0f2184fe 100644 --- a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/ddl/DBTable.java +++ b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/ddl/DBTable.java @@ -18,7 +18,10 @@ import org.eclipse.net4j.db.ddl.IDBIndex.Type; import org.eclipse.net4j.db.ddl.IDBTable; import org.eclipse.net4j.spi.db.DBSchema; import org.eclipse.net4j.spi.db.DBSchemaElement; +import org.eclipse.net4j.util.StringUtil; +import java.io.IOException; +import java.io.Writer; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -153,6 +156,17 @@ public class DBTable extends DBSchemaElement implements IDBTable throw new DBException("Index exists: " + name); //$NON-NLS-1$ } + if (type == Type.PRIMARY_KEY) + { + for (DBIndex index : getIndices()) + { + if (index.getType() == Type.PRIMARY_KEY) + { + throw new DBException("Primary key exists: " + index); //$NON-NLS-1$ + } + } + } + DBIndex index = new DBIndex(this, name, type, fields, position); indices.add(index); return index; @@ -246,4 +260,22 @@ public class DBTable extends DBSchemaElement implements IDBTable builder.append(")"); //$NON-NLS-1$ return builder.toString(); } + + @Override + public void dump(Writer writer) throws IOException + { + writer.append(" TABLE "); + writer.append(getName()); + writer.append(StringUtil.NL); + + for (DBField field : fields) + { + field.dump(writer); + } + + for (DBIndex index : indices) + { + index.dump(writer); + } + } } |