jon 02/02/25 11:30:38 Modified: src/java/org/apache/torque/engine/database/model Index.java Log: I made this patch to help solve a problem i was having with unnamed unique constraints. When you create a unique constraint with no supplied name (<unique><unique-column ...></unique>), the resulting SQL will not parse for Oracle because Oracle demands named constraints and the SQL contains "$unique.Name" because unique.getName() is null. It looks like the same thing goes for indexes. Probably this is happening because the particular constructor for Index which sets a default name, if necessary, was not ever getting called. It might make more sense to call createName() from loadFromXML, rather than generating the name lazily, but I wasn't sure if you had all the other relevant info loaded at that point. Bill Schneider <[EMAIL PROTECTED]> Revision Changes Path 1.17 +34 -10 jakarta-turbine-torque/src/java/org/apache/torque/engine/database/model/Index.java Index: Index.java =================================================================== RCS file: /home/cvs/jakarta-turbine-torque/src/java/org/apache/torque/engine/database/model/Index.java,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- Index.java 8 Nov 2001 17:20:52 -0000 1.16 +++ Index.java 25 Feb 2002 19:30:38 -0000 1.17 @@ -67,7 +67,7 @@ * * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a> * @author <a href="mailto:[EMAIL PROTECTED]>Daniel Rall</a> - * @version $Id: Index.java,v 1.16 2001/11/08 17:20:52 mpoeschl Exp $ + * @version $Id: Index.java,v 1.17 2002/02/25 19:30:38 jon Exp $ */ public class Index { @@ -105,15 +105,7 @@ if (indexColumns.size() > 0) { this.indexColumns = indexColumns; - - List inputs = new ArrayList(4); - inputs.add(table.getDatabase()); - inputs.add(table.getName()); - inputs.add("I"); - // ASSUMPTION: This Index not yet added to the list. - inputs.add(new Integer(table.getIndices().length + 1)); - indexName = NameFactory.generateName - (NameFactory.CONSTRAINT_GENERATOR, inputs); + createName(); if (DEBUG) { @@ -129,6 +121,26 @@ } } + private void createName() throws TorqueException + { + Table table = getTable(); + List inputs = new ArrayList(4); + inputs.add(table.getDatabase()); + inputs.add(table.getName()); + if (isUnique()) + { + inputs.add("U"); + } + else + { + inputs.add("I"); + } + // ASSUMPTION: This Index not yet added to the list. + inputs.add(new Integer(table.getIndices().length + 1)); + indexName = NameFactory.generateName + (NameFactory.CONSTRAINT_GENERATOR, inputs); + } + /** * Imports index from an XML specification */ @@ -168,6 +180,18 @@ */ public String getName() { + if (indexName == null) + { + try + { + // generate an index name if we don't have a supplied one + createName(); + } + catch (TorqueException e) + { + // still no name + } + } return indexName; }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>