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);
> +        }
> +    }
>  }
>
>
>
>

Reply via email to