Great, then we're ready for a release...
Cheers, F On 30 July 2012 11:56, Rainer Döbele <[email protected]> wrote: > Hi Franics, > > > > sorry I missed that question. > > > > Oh, no I have absolutely no objections - it's straight forward and > appealing. > > One could only argue that for Columns other than AUTOINC type columns, > this method has no meaning. > > But I am absolutely happy with the solution. > > > > Thanks > > Rainer > > > > > > from: [email protected] [mailto:[email protected]] Im Auftrag von > Francis De Brabandere > to: Rainer Döbele > re: Fwd: Please review: svn commit: r1365599 > > > > Hi Rainer, > > > > A final comment on this one before I start the release? > > > > Cheers, > > F > > ---------- Forwarded message ---------- > From: Francis De Brabandere <[email protected]> > Date: 25 July 2012 16:35 > Subject: Please review: svn commit: r1365599 > To: dev <[email protected]> > > > Hi Rainer, > > Do you have any objections against that getSequenceName() method in > DBTableColumn? Added it to avoid duplication between ddl and sequence > code (which was broken) > > More info on why here: > https://issues.apache.org/jira/browse/EMPIREDB-151 > > commit added at the bottom of this mail > > Cheers, > Francis > > > ---------- Forwarded message ---------- > From: <[email protected]> > Date: 25 July 2012 16:24 > Subject: svn commit: r1365599 - in /empire-db/trunk/empire-db/src: > main/java/org/apache/empire/db/ main/java/org/apache/empire/db/oracle/ > main/java/org/apache/empire/db/postgresql/ > test/java/org/apache/empire/db/hsql/ > To: [email protected] > > > Author: francisdb > Date: Wed Jul 25 14:24:23 2012 > New Revision: 1365599 > > URL: http://svn.apache.org/viewvc?rev=1365599&view=rev > Log: > EMPIREDB-151 DBDatabaseDriverHSQL fails on selection of NEXT VALUE > > Modified: > > empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java > > empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBTableColumn.java > > empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/oracle/OracleDDLGenerator.java > > empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/postgresql/PostgreDDLGenerator.java > > empire-db/trunk/empire-db/src/test/java/org/apache/empire/db/hsql/DBDatabaseDriverHSqlTest.java > > Modified: > empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java > URL: > http://svn.apache.org/viewvc/empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java?rev=1365599&r1=1365598&r2=1365599&view=diff > > ============================================================================== > --- > empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java > (original) > +++ > empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java > Wed Jul 25 14:24:23 2012 > @@ -374,9 +374,7 @@ public abstract class DBDatabaseDriver i > { // Use a numeric sequence > if (isSupported(DBDriverFeature.SEQUENCES)==false) > return null; // Create Later > - // Detect the Sequence Name > - Object defValue= column.getDefaultValue(); > - String SeqName = (defValue != null) ? defValue.toString() > : this.toString(); > + String SeqName = column.getSequenceName(); > return db.getNextSequenceValue(SeqName, conn); > } > else if (type== DataType.UNIQUEID) > > Modified: > empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBTableColumn.java > URL: > http://svn.apache.org/viewvc/empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBTableColumn.java?rev=1365599&r1=1365598&r2=1365599&view=diff > > ============================================================================== > --- > empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBTableColumn.java > (original) > +++ > empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBTableColumn.java > Wed Jul 25 14:24:23 2012 > @@ -439,4 +439,31 @@ public class DBTableColumn extends DBCol > // done > return elem; > } > + > + /** > + * Gets the sequence name for this table's sequence (if it has one) > + * This is derived form the default value or auto generated if no > default value is set > + * @return the sequence name > + */ > + public String getSequenceName() > + { > + String seqName; > + Object defValue = getDefaultValue(); > + if(defValue != null) > + { > + seqName = defValue.toString(); > + } > + else > + { > + if (rowset != null) > + { > + seqName = rowset.getName() + "." + name; > + } > + else > + { > + seqName = name; > + } > + } > + return seqName; > + } > } > \ No newline at end of file > > Modified: > empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/oracle/OracleDDLGenerator.java > URL: > http://svn.apache.org/viewvc/empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/oracle/OracleDDLGenerator.java?rev=1365599&r1=1365598&r2=1365599&view=diff > > ============================================================================== > --- > empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/oracle/OracleDDLGenerator.java > (original) > +++ > empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/oracle/OracleDDLGenerator.java > Wed Jul 25 14:24:23 2012 > @@ -123,8 +123,7 @@ public class OracleDDLGenerator extends > */ > protected void createSequence(DBDatabase db, DBTableColumn c, > DBSQLScript script) > { > - Object defValue = c.getDefaultValue(); > - String seqName = (defValue != null) ? defValue.toString() : > c.toString(); > + String seqName = c.getSequenceName(); > // createSQL > StringBuilder sql = new StringBuilder(); > sql.append("-- creating sequence for column "); > > Modified: > empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/postgresql/PostgreDDLGenerator.java > URL: > http://svn.apache.org/viewvc/empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/postgresql/PostgreDDLGenerator.java?rev=1365599&r1=1365598&r2=1365599&view=diff > > ============================================================================== > --- > empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/postgresql/PostgreDDLGenerator.java > (original) > +++ > empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/postgresql/PostgreDDLGenerator.java > Wed Jul 25 14:24:23 2012 > @@ -108,8 +108,7 @@ public class PostgreDDLGenerator extends > */ > protected void createSequence(DBDatabase db, DBTableColumn c, > DBSQLScript script) > { > - Object defValue = c.getDefaultValue(); > - String seqName = (defValue != null) ? defValue.toString() : > c.toString(); > + String seqName = c.getSequenceName(); > // createSQL > StringBuilder sql = new StringBuilder(); > sql.append("-- creating sequence for column "); > > Modified: > empire-db/trunk/empire-db/src/test/java/org/apache/empire/db/hsql/DBDatabaseDriverHSqlTest.java > URL: > http://svn.apache.org/viewvc/empire-db/trunk/empire-db/src/test/java/org/apache/empire/db/hsql/DBDatabaseDriverHSqlTest.java?rev=1365599&r1=1365598&r2=1365599&view=diff > > ============================================================================== > --- > empire-db/trunk/empire-db/src/test/java/org/apache/empire/db/hsql/DBDatabaseDriverHSqlTest.java > (original) > +++ > empire-db/trunk/empire-db/src/test/java/org/apache/empire/db/hsql/DBDatabaseDriverHSqlTest.java > Wed Jul 25 14:24:23 2012 > @@ -27,11 +27,16 @@ import java.util.Date; > > import org.apache.empire.DBResource; > import org.apache.empire.DBResource.DB; > +import org.apache.empire.data.DataMode; > +import org.apache.empire.data.DataType; > import org.apache.empire.db.CompanyDB; > import org.apache.empire.db.DBCmdType; > +import org.apache.empire.db.DBDatabase; > import org.apache.empire.db.DBDatabaseDriver; > import org.apache.empire.db.DBRecord; > import org.apache.empire.db.DBSQLScript; > +import org.apache.empire.db.DBTable; > +import org.apache.empire.db.DBTableColumn; > import org.junit.Rule; > import org.junit.Test; > > @@ -90,9 +95,70 @@ public class DBDatabaseDriverHSqlTest{ > > assertEquals("123456", emp.getString(db.EMPLOYEE.PHONE_NUMBER)); > > + > script = new DBSQLScript(); > db.getDriver().getDDLScript(DBCmdType.DROP, db.EMPLOYEE, script); > db.getDriver().getDDLScript(DBCmdType.DROP, db.DEPARTMENT, > script); > script.run(db.getDriver(), conn, true); > } > + > + > + /** > + * See https://issues.apache.org/jira/browse/EMPIREDB-151 > + */ > + @Test > + public void testSequence(){ > + Connection conn = dbResource.getConnection(); > + > + DBDatabaseDriver driver = dbResource.newDriver(); > + SeqDB db = new SeqDB(); > + db.open(driver, dbResource.getConnection()); > + DBSQLScript script = new DBSQLScript(); > + db.getCreateDDLScript(db.getDriver(), script); > + script.run(db.getDriver(), dbResource.getConnection(), false); > + > + DBRecord data = new DBRecord(); > + data.create(db.DATA); > + data.setValue(db.DATA.VALUE, "test"); > + data.update(conn); > + > + final Object id = data.getLong(db.DATA.ID); > + > + DBRecord read = new DBRecord(); > + read.read(db.DATA, id, conn); > + > + assertEquals("test", read.getString(db.DATA.VALUE)); > + > + script = new DBSQLScript(); > + db.getDriver().getDDLScript(DBCmdType.DROP, db.DATA, script); > + script.run(db.getDriver(), conn, true); > + } > + > + /** > + * This is the basic database for testing > + * > + */ > + private class SeqDB extends DBDatabase > + { > + private final static long serialVersionUID = 1L; > + public final Data DATA = new Data(this); > + } > + > + /** > + * For testing SEQUENCE auto generation stuff > + */ > + public static class Data extends DBTable > + { > + private final static long serialVersionUID = 1L; > + public final DBTableColumn ID; > + public final DBTableColumn VALUE; > + > + public Data(DBDatabase db) > + { > + super("DATA", db); > + ID = addColumn("DATA_ID", > DataType.AUTOINC, 0, DataMode.AutoGenerated); > + VALUE = addColumn("VALUE", DataType.TEXT, > 256, DataMode.NotNull); > + setPrimaryKey(ID); > + } > + } > } > > > >
