You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@empire-db.apache.org by do...@apache.org on 2012/02/20 16:41:15 UTC
svn commit: r1291318 - in
/empire-db/trunk/empire-db/src/main/java/org/apache/empire/db: DBIndex.java
DBTable.java oracle/DBCommandOracle.java
Author: doebele
Date: Mon Feb 20 15:41:15 2012
New Revision: 1291318
URL: http://svn.apache.org/viewvc?rev=1291318&view=rev
Log:
EMPIREDB-126
Add index table property
Modified:
empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBIndex.java
empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBTable.java
empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/oracle/DBCommandOracle.java
Modified: empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBIndex.java
URL: http://svn.apache.org/viewvc/empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBIndex.java?rev=1291318&r1=1291317&r2=1291318&view=diff
==============================================================================
--- empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBIndex.java (original)
+++ empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBIndex.java Mon Feb 20 15:41:15 2012
@@ -18,6 +18,8 @@
*/
package org.apache.empire.db;
+import org.apache.empire.exceptions.InvalidArgumentException;
+
/**
* This class handles the primary key for the tables.
* The primary key contains one or more columns.
@@ -30,7 +32,6 @@ public class DBIndex extends DBObject
private final static long serialVersionUID = 1L;
// Index Types
- // TODO convert to an enum?
/**
* SQL Standard index
*/
@@ -49,6 +50,7 @@ public class DBIndex extends DBObject
private String name;
private int type;
private DBColumn[] columns;
+ private DBTable table;
/**
* Constructs a DBIndex object set the specified parameters to this object.
@@ -64,10 +66,33 @@ public class DBIndex extends DBObject
this.columns = columns;
}
+ /**
+ * returns the table this index belongs to.
+ * Valid only if the index has been added to a table (DBTable.addIndex)
+ * @return the corresponding table
+ */
+ public DBTable getTable()
+ {
+ return table;
+ }
+
+ /**
+ * internally used to set the table for this index.
+ * The table must be added to the table's index list beforehand
+ * @param table
+ */
+ protected void setTable(DBTable table)
+ {
+ if (table==null || !table.getIndexes().contains(this))
+ throw new InvalidArgumentException("table", table);
+ // table
+ this.table = table;
+ }
+
@Override
public DBDatabase getDatabase()
{
- return columns[0].getDatabase();
+ return (table!=null) ? table.getDatabase() : null;
}
/**
Modified: empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBTable.java
URL: http://svn.apache.org/viewvc/empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBTable.java?rev=1291318&r1=1291317&r2=1291318&view=diff
==============================================================================
--- empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBTable.java (original)
+++ empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBTable.java Mon Feb 20 15:41:15 2012
@@ -347,6 +347,7 @@ public class DBTable extends DBRowSet im
}
// add Index now
indexes.add(index);
+ index.setTable(this);
}
/**
@@ -358,12 +359,14 @@ public class DBTable extends DBRowSet im
*
* @return true on success
*/
- public void addIndex(String name, boolean unique, DBColumn[] columns)
+ public DBIndex addIndex(String name, boolean unique, DBColumn[] columns)
{
if (name==null || columns==null || columns.length==0)
throw new InvalidArgumentException("name|columns", null);
// add Index now
- addIndex(new DBIndex(name, (unique) ? DBIndex.UNIQUE : DBIndex.STANDARD, columns));
+ DBIndex index = new DBIndex(name, (unique) ? DBIndex.UNIQUE : DBIndex.STANDARD, columns);
+ addIndex(index);
+ return index;
}
/**
Modified: empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/oracle/DBCommandOracle.java
URL: http://svn.apache.org/viewvc/empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/oracle/DBCommandOracle.java?rev=1291318&r1=1291317&r2=1291318&view=diff
==============================================================================
--- empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/oracle/DBCommandOracle.java (original)
+++ empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/oracle/DBCommandOracle.java Mon Feb 20 15:41:15 2012
@@ -21,8 +21,10 @@ package org.apache.empire.db.oracle;
// Imports
import org.apache.empire.db.DBCommand;
import org.apache.empire.db.DBDatabase;
+import org.apache.empire.db.DBIndex;
import org.apache.empire.db.DBTable;
import org.apache.empire.db.expr.compare.DBCompareExpr;
+import org.apache.empire.exceptions.InvalidArgumentException;
import org.apache.empire.exceptions.ObjectNotValidException;
/**
@@ -63,6 +65,16 @@ public class DBCommandOracle extends DBC
this.optimizerHint = optimizerHint;
}
+ public void setOptimizerIndexHint(DBIndex index)
+ {
+ if (index==null || index.getTable()==null)
+ throw new InvalidArgumentException("index", index);
+ // Set Index Hint
+ String tableAlias = index.getTable().getAlias();
+ String indexName = index.getName();
+ this.optimizerHint = "INDEX ("+tableAlias+" "+indexName+")";
+ }
+
/**
* @see DBCommand#clear()
*/