This is an automated email from the ASF dual-hosted git repository.

doebele pushed a commit to branch version3
in repository https://gitbox.apache.org/repos/asf/empire-db.git


The following commit(s) were added to refs/heads/version3 by this push:
     new cd6b35a  EMPIREDB-362 DBSqlPhrase enum
cd6b35a is described below

commit cd6b35ac29dc0c395ae90097ff1b0477f931aba4
Author: Rainer Döbele <[email protected]>
AuthorDate: Sun Jan 23 19:17:07 2022 +0100

    EMPIREDB-362 DBSqlPhrase enum
---
 .../main/java/org/apache/empire/db/DBColumn.java   |  2 +-
 .../java/org/apache/empire/db/DBColumnExpr.java    | 60 +++++++--------
 .../main/java/org/apache/empire/db/DBCommand.java  |  4 +-
 .../java/org/apache/empire/db/DBDDLGenerator.java  |  2 +-
 .../main/java/org/apache/empire/db/DBDatabase.java | 21 +++---
 .../org/apache/empire/db/DBDatabaseDriver.java     | 65 +----------------
 .../java/org/apache/empire/db/DBDriverFeature.java |  2 -
 .../main/java/org/apache/empire/db/DBRelation.java |  2 +-
 .../main/java/org/apache/empire/db/DBRowSet.java   |  2 +-
 .../java/org/apache/empire/db/DBSqlPhrase.java     | 85 ++++++++++++++++++++++
 .../empire/db/driver/DBDatabaseDriverBase.java     | 39 ++++------
 .../db/driver/derby/DBDatabaseDriverDerby.java     |  9 ++-
 .../empire/db/driver/h2/DBDatabaseDriverH2.java    |  9 ++-
 .../db/driver/hsql/DBDatabaseDriverHSql.java       |  9 ++-
 .../db/driver/mysql/DBDatabaseDriverMySQL.java     |  9 ++-
 .../db/driver/oracle/DBDatabaseDriverOracle.java   | 13 ++--
 .../postgresql/DBDatabaseDriverPostgreSQL.java     |  9 ++-
 .../db/driver/sqlite/DBDatabaseDriverSQLite.java   | 12 +--
 .../db/driver/sqlserver/DBDatabaseDriverMSSQL.java | 13 ++--
 .../apache/empire/db/expr/column/DBAliasExpr.java  |  9 ++-
 .../apache/empire/db/expr/column/DBConcatExpr.java | 10 +--
 .../apache/empire/db/expr/column/DBDecodeExpr.java | 19 ++---
 .../apache/empire/db/expr/column/DBFuncExpr.java   |  7 +-
 .../test/java/org/apache/empire/db/MockDriver.java |  2 +-
 24 files changed, 218 insertions(+), 196 deletions(-)

diff --git a/empire-db/src/main/java/org/apache/empire/db/DBColumn.java 
b/empire-db/src/main/java/org/apache/empire/db/DBColumn.java
index 5eb9909..089011e 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBColumn.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBColumn.java
@@ -251,7 +251,7 @@ public abstract class DBColumn extends DBColumnExpr
         if (driver==null)
                throw new DatabaseNotOpenException(getDatabase());
         // Append the name
-        driver.appendElementName(buf, name, quoteName);
+        driver.appendObjectName(buf, name, quoteName);
     }
 
     /**
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java 
b/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java
index 647ad13..13cf611 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java
@@ -378,7 +378,7 @@ public abstract class DBColumnExpr extends DBExpr
     public DBCompareColExpr like(String value, char escape)
     {
         DBValueExpr  textExpr = new DBValueExpr(getDatabase(), value, 
DataType.VARCHAR);
-        DBFuncExpr escapeExpr = new DBFuncExpr(textExpr, 
DBDatabaseDriver.SQL_FUNC_ESCAPE, new Object[] { String.valueOf(escape) }, 
getUpdateColumn(), false, DataType.VARCHAR );
+        DBFuncExpr escapeExpr = new DBFuncExpr(textExpr, 
DBSqlPhrase.SQL_FUNC_ESCAPE, new Object[] { String.valueOf(escape) }, 
getUpdateColumn(), false, DataType.VARCHAR );
         return cmp(DBCmpType.LIKE, escapeExpr);
     }
 
@@ -658,12 +658,12 @@ public abstract class DBColumnExpr extends DBExpr
      * @param dataType the resulting data Type
      * @return the new DBCalcExpr object
      */
-    protected DBColumnExpr getExprFromPhrase(int phrase, Object[] params, 
DBColumn updateColumn, boolean isAggregate, DataType dataType)
+    protected DBColumnExpr getExprFromPhrase(DBSqlPhrase phrase, Object[] 
params, DBColumn updateColumn, boolean isAggregate, DataType dataType)
     {
         return new DBFuncExpr(this, phrase, params, updateColumn, isAggregate, 
dataType);
     }
 
-    protected DBColumnExpr getExprFromPhrase(int phrase, Object[] params, 
DBColumn updateColumn, boolean isAggregate)
+    protected DBColumnExpr getExprFromPhrase(DBSqlPhrase phrase, Object[] 
params, DBColumn updateColumn, boolean isAggregate)
     {
         return getExprFromPhrase(phrase, params, updateColumn, isAggregate, 
getDataType());
     }
@@ -687,7 +687,7 @@ public abstract class DBColumnExpr extends DBExpr
      */
     public DBColumnExpr coalesce(Object nullValue)
     {
-        return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_COALESCE, new 
Object[] { nullValue }, getUpdateColumn(), false);
+        return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_COALESCE, new Object[] { 
nullValue }, getUpdateColumn(), false);
     }
 
     /**
@@ -698,7 +698,7 @@ public abstract class DBColumnExpr extends DBExpr
      */
     public DBColumnExpr modulo(Object divisor)
     {
-        return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_MODULO, new 
Object[] { divisor }, getUpdateColumn(), false);
+        return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_MODULO, new Object[] { 
divisor }, getUpdateColumn(), false);
     }
 
     /**
@@ -724,7 +724,7 @@ public abstract class DBColumnExpr extends DBExpr
      */
     public DBColumnExpr substring(DBExpr pos)
     {   // Get Expression
-        return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_SUBSTRING, new 
Object[] { pos }, getUpdateColumn(), false);
+        return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_SUBSTRING, new Object[] 
{ pos }, getUpdateColumn(), false);
     }
 
     /**
@@ -749,7 +749,7 @@ public abstract class DBColumnExpr extends DBExpr
      */
     public DBColumnExpr substring(DBExpr pos, DBExpr count)
     {   // Get Expression
-        return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_SUBSTRINGEX, new 
Object[] { pos, count }, getUpdateColumn(), false);
+        return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_SUBSTRINGEX, new 
Object[] { pos, count }, getUpdateColumn(), false);
     }
 
     /**
@@ -801,7 +801,7 @@ public abstract class DBColumnExpr extends DBExpr
      */
     public DBColumnExpr replace(Object match, Object replace)
     {
-        return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_REPLACE, new 
Object[] { match, replace }, getUpdateColumn(), false);
+        return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_REPLACE, new Object[] { 
match, replace }, getUpdateColumn(), false);
     }
 
     /**
@@ -811,7 +811,7 @@ public abstract class DBColumnExpr extends DBExpr
      */
     public DBColumnExpr reverse()
     {
-        return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_REVERSE, null, 
getUpdateColumn(), false);
+        return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_REVERSE, null, 
getUpdateColumn(), false);
     }
 
     /**
@@ -821,7 +821,7 @@ public abstract class DBColumnExpr extends DBExpr
      */
     public DBColumnExpr trim()
     {
-        return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_TRIM, null, 
getUpdateColumn(), false);
+        return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_TRIM, null, 
getUpdateColumn(), false);
     }
 
     /**
@@ -831,7 +831,7 @@ public abstract class DBColumnExpr extends DBExpr
      */
     public DBColumnExpr trimLeft()
     {
-        return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_LTRIM, null, 
getUpdateColumn(), false);
+        return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_LTRIM, null, 
getUpdateColumn(), false);
     }
 
     /**
@@ -841,7 +841,7 @@ public abstract class DBColumnExpr extends DBExpr
      */
     public DBColumnExpr trimRight()
     {
-        return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_RTRIM, null, 
getUpdateColumn(), false);
+        return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_RTRIM, null, 
getUpdateColumn(), false);
     }
     
     /**
@@ -852,7 +852,7 @@ public abstract class DBColumnExpr extends DBExpr
      */
     public DBColumnExpr upper()
     {
-        return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_UPPER, null, 
getUpdateColumn(), false);
+        return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_UPPER, null, 
getUpdateColumn(), false);
     }
 
     /**
@@ -863,7 +863,7 @@ public abstract class DBColumnExpr extends DBExpr
      */
     public DBColumnExpr lower()
     {
-        return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_LOWER, null, 
getUpdateColumn(), false);
+        return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_LOWER, null, 
getUpdateColumn(), false);
     }
 
     /**
@@ -875,7 +875,7 @@ public abstract class DBColumnExpr extends DBExpr
      */
     public DBColumnExpr format(String format)
     {
-        return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_FORMAT, new 
Object[] { format }, getUpdateColumn(), false, DataType.VARCHAR);
+        return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_FORMAT, new Object[] { 
format }, getUpdateColumn(), false, DataType.VARCHAR);
     }
     
     /**
@@ -885,7 +885,7 @@ public abstract class DBColumnExpr extends DBExpr
      */
     public DBColumnExpr length()
     {
-        return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_LENGTH, null, 
getUpdateColumn(), false, DataType.INTEGER);
+        return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_LENGTH, null, 
getUpdateColumn(), false, DataType.INTEGER);
     }
 
     /**
@@ -897,7 +897,7 @@ public abstract class DBColumnExpr extends DBExpr
      */
     public DBColumnExpr indexOf(Object str)
     {
-        return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_STRINDEX, new 
Object[] { str }, getUpdateColumn(), false, DataType.INTEGER);
+        return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_STRINDEX, new Object[] { 
str }, getUpdateColumn(), false, DataType.INTEGER);
     }
 
     /**
@@ -910,7 +910,7 @@ public abstract class DBColumnExpr extends DBExpr
      */
     public DBColumnExpr indexOf(Object str, DBExpr fromPos)
     {
-        return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_STRINDEXFROM, new 
Object[] { str, fromPos }, getUpdateColumn(), false, DataType.INTEGER);
+        return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_STRINDEXFROM, new 
Object[] { str, fromPos }, getUpdateColumn(), false, DataType.INTEGER);
     }
 
     /**
@@ -933,7 +933,7 @@ public abstract class DBColumnExpr extends DBExpr
      */
     public DBColumnExpr abs()
     {
-        return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_ABS, null, 
getUpdateColumn(), false);
+        return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_ABS, null, 
getUpdateColumn(), false);
     }
 
     /**
@@ -943,7 +943,7 @@ public abstract class DBColumnExpr extends DBExpr
      */
     public DBColumnExpr floor()
     {
-        return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_FLOOR, null, 
getUpdateColumn(), false);
+        return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_FLOOR, null, 
getUpdateColumn(), false);
     }
 
     /**
@@ -953,7 +953,7 @@ public abstract class DBColumnExpr extends DBExpr
      */
     public DBColumnExpr ceiling()
     {
-        return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_CEILING, null, 
getUpdateColumn(), false);
+        return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_CEILING, null, 
getUpdateColumn(), false);
     }
 
     /**
@@ -965,7 +965,7 @@ public abstract class DBColumnExpr extends DBExpr
      */
     public DBColumnExpr round(int decimals)
     {
-        return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_ROUND, new Object[] 
{ new Integer(decimals) }, getUpdateColumn(), false);
+        return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_ROUND, new Object[] { 
new Integer(decimals) }, getUpdateColumn(), false);
     }
 
     /**
@@ -977,7 +977,7 @@ public abstract class DBColumnExpr extends DBExpr
      */
     public DBColumnExpr trunc(int decimals)
     {
-        return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_TRUNC, new Object[] 
{ new Integer(decimals) }, getUpdateColumn(), false);
+        return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_TRUNC, new Object[] { 
new Integer(decimals) }, getUpdateColumn(), false);
     }
 
     /**
@@ -988,7 +988,7 @@ public abstract class DBColumnExpr extends DBExpr
      */
     public DBColumnExpr year()
     {
-        return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_YEAR, null, null, 
false);
+        return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_YEAR, null, null, false);
     }
 
     /**
@@ -999,7 +999,7 @@ public abstract class DBColumnExpr extends DBExpr
      */
     public DBColumnExpr month()
     {
-        return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_MONTH, null, null, 
false);
+        return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_MONTH, null, null, 
false);
     }
 
     /**
@@ -1010,7 +1010,7 @@ public abstract class DBColumnExpr extends DBExpr
      */
     public DBColumnExpr day()
     {
-        return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_DAY, null, null, 
false);
+        return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_DAY, null, null, false);
     }
 
     /**
@@ -1021,7 +1021,7 @@ public abstract class DBColumnExpr extends DBExpr
      */
     public DBColumnExpr sum()
     {
-        return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_SUM, null, null, 
true);
+        return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_SUM, null, null, true);
     }
 
     /**
@@ -1032,7 +1032,7 @@ public abstract class DBColumnExpr extends DBExpr
      */
     public DBColumnExpr min()
     {
-        return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_MIN, null, null, 
true);
+        return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_MIN, null, null, true);
     }
 
     /**
@@ -1043,7 +1043,7 @@ public abstract class DBColumnExpr extends DBExpr
      */
     public DBColumnExpr max()
     {
-        return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_MAX, null, null, 
true);
+        return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_MAX, null, null, true);
     }
 
     /**
@@ -1054,7 +1054,7 @@ public abstract class DBColumnExpr extends DBExpr
      */
     public DBColumnExpr avg()
     {
-        return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_AVG, null, null, 
true);
+        return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_AVG, null, null, true);
     }
 
     /**
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBCommand.java 
b/empire-db/src/main/java/org/apache/empire/db/DBCommand.java
index eb8395b..8dc1c5a 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBCommand.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBCommand.java
@@ -39,8 +39,8 @@ import org.apache.empire.db.expr.set.DBSetExpr;
 import org.apache.empire.exceptions.InternalException;
 import org.apache.empire.exceptions.InvalidArgumentException;
 import org.apache.empire.exceptions.ItemNotFoundException;
-import org.apache.empire.exceptions.UnspecifiedErrorException;
 import org.apache.empire.exceptions.ObjectNotValidException;
+import org.apache.empire.exceptions.UnspecifiedErrorException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -1385,7 +1385,7 @@ public abstract class DBCommand extends DBCommandExpr
         }
         if (sep==false)
         {   // add pseudo table or omitt from
-            String pseudoTable = 
db.getDriver().getSQLPhrase(DBDatabaseDriver.SQL_PSEUDO_TABLE);
+            String pseudoTable = 
db.getDriver().getSQLPhrase(DBSqlPhrase.SQL_PSEUDO_TABLE);
             if (StringUtils.isNotEmpty(pseudoTable))
             {   // add pseudo table
                 buf.append(pseudoTable);
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBDDLGenerator.java 
b/empire-db/src/main/java/org/apache/empire/db/DBDDLGenerator.java
index 45a0f6d..69c7ae2 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBDDLGenerator.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBDDLGenerator.java
@@ -612,7 +612,7 @@ public abstract class DBDDLGenerator<T extends 
DBDatabaseDriver>
 
     protected void appendElementName(StringBuilder sql, String name)
     {
-        driver.appendElementName(sql, name, null);
+        driver.appendObjectName(sql, name, null);
     }
 
 }
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java 
b/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java
index b465123..ff39288 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java
@@ -40,6 +40,7 @@ import org.apache.empire.db.DBRelation.DBCascadeAction;
 import org.apache.empire.db.exceptions.DatabaseNotOpenException;
 import org.apache.empire.db.exceptions.FieldIllegalValueException;
 import org.apache.empire.db.exceptions.FieldNotNullException;
+import org.apache.empire.db.exceptions.FieldValueException;
 import org.apache.empire.db.exceptions.FieldValueOutOfRangeException;
 import org.apache.empire.db.exceptions.FieldValueTooLongException;
 import org.apache.empire.db.expr.column.DBCaseWhenExpr;
@@ -47,9 +48,9 @@ import org.apache.empire.db.expr.column.DBValueExpr;
 import org.apache.empire.db.expr.compare.DBCompareExpr;
 import org.apache.empire.exceptions.InvalidArgumentException;
 import org.apache.empire.exceptions.ItemExistsException;
-import org.apache.empire.exceptions.UnspecifiedErrorException;
 import org.apache.empire.exceptions.NotSupportedException;
 import org.apache.empire.exceptions.PropertyReadOnlyException;
+import org.apache.empire.exceptions.UnspecifiedErrorException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -490,6 +491,12 @@ public abstract class DBDatabase extends DBObject
      */
     public void appendQualifiedName(StringBuilder buf, String name, Boolean 
quoteName)
     {
+        // Schema
+        if (schema != null)
+        { // Add Schema
+            buf.append(schema);
+            buf.append(".");
+        }
         // Check driver
         if (driver==null)
         {   // No driver attached!
@@ -497,18 +504,12 @@ public abstract class DBDatabase extends DBObject
             buf.append(name);
             return;
         }
-        // Schema
-        if (schema != null)
-        { // Add Schema
-            buf.append(schema);
-            buf.append(".");
-        }
         // Append the name
-        driver.appendElementName(buf, name, quoteName);
+        driver.appendObjectName(buf, name, quoteName);
         // Database Link
         if (linkName!=null)
-        { // Add Schema
-            
buf.append(driver.getSQLPhrase(DBDatabaseDriver.SQL_DATABASE_LINK));
+        {   // Add Link
+            buf.append(driver.getSQLPhrase(DBSqlPhrase.SQL_DATABASE_LINK));
             buf.append(linkName);
         }
     }
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java 
b/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java
index 7e5bd57..5ee61f3 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java
@@ -30,65 +30,6 @@ import org.apache.empire.data.DataType;
  */
 public interface DBDatabaseDriver
 {
-    // sql-phrases
-    public static final int SQL_NULL_VALUE       = 1;   // Oracle: null
-    public static final int SQL_PARAMETER        = 2;   // Oracle: ?
-    public static final int SQL_RENAME_TABLE     = 3;   // Oracle: AS
-    public static final int SQL_RENAME_COLUMN    = 4;   // Oracle: AS
-    public static final int SQL_DATABASE_LINK    = 5;   // Oracle: @
-    public static final int SQL_QUOTES_OPEN      = 6;   // Oracle: "; MSSQL: [
-    public static final int SQL_QUOTES_CLOSE     = 7;   // Oracle: "; MSSQL: ]
-    public static final int SQL_CONCAT_EXPR      = 8;   // Oracle: ||
-    public static final int SQL_PSEUDO_TABLE     = 9;   // Oracle: "DUAL"
-    // data types
-    public static final int SQL_BOOLEAN_TRUE      = 10; // Oracle: "'Y'"; 
MSSQL: "1"
-    public static final int SQL_BOOLEAN_FALSE     = 11; // Oracle: "'N'"; 
MSSQL: "0"
-    public static final int SQL_CURRENT_DATE      = 20; // Oracle: "sysdate"
-    public static final int SQL_DATE_PATTERN      = 21; // "yyyy-MM-dd"  // 
SimpleDateFormat
-    public static final int SQL_DATE_TEMPLATE     = 22; // Oracle: 
"TO_DATE('{0}', 'YYYY-MM-DD')"
-    public static final int SQL_DATETIME_PATTERN  = 23; // "yyyy-MM-dd 
HH:mm:ss.SSS"  // SimpleDateFormat
-    public static final int SQL_DATETIME_TEMPLATE = 24; // Oracle: 
"TO_DATE('{0}', 'YYYY-MM-DD HH24:MI:SS')"
-    public static final int SQL_CURRENT_TIMESTAMP = 25; // Oracle: 
"systimestamp"
-    public static final int SQL_TIMESTAMP_PATTERN = 26; // "yyyy-MM-dd 
HH:mm:ss.SSS" // SimpleDateFormat
-    public static final int SQL_TIMESTAMP_TEMPLATE= 27; // Oracle: 
"TO_TIMESTAMP('{0}', 'YYYY.MM.DD HH24:MI:SS.FF')";
-    // functions
-    public static final int SQL_FUNC_COALESCE    = 100; // Oracle: nvl(?, {0})
-    public static final int SQL_FUNC_SUBSTRING   = 101; // Oracle: 
substr(?,{0})
-    public static final int SQL_FUNC_SUBSTRINGEX = 102; // Oracle: 
substr(?,{0},{1})
-    public static final int SQL_FUNC_REPLACE     = 103; // Oracle: 
replace(?,{0},{1})
-    public static final int SQL_FUNC_REVERSE     = 104; // Oracle: reverse(?) 
-    public static final int SQL_FUNC_STRINDEX    = 105; // Oracle: instr(?, 
{0})
-    public static final int SQL_FUNC_STRINDEXFROM= 106; // Oracle: instr(?, 
{0}, {1}) 
-    public static final int SQL_FUNC_LENGTH      = 107; // Oracle: 
length(?,{0})
-    public static final int SQL_FUNC_UPPER       = 110; // Oracle: upper(?)
-    public static final int SQL_FUNC_LOWER       = 111; // Oracle: lower(?)
-    public static final int SQL_FUNC_TRIM        = 112; // Oracle: trim(?)
-    public static final int SQL_FUNC_LTRIM       = 113; // Oracle: ltrim(?)
-    public static final int SQL_FUNC_RTRIM       = 114; // Oracle: rtrim(?)
-    public static final int SQL_FUNC_ESCAPE      = 119; // Oracle: ? escape 
'{0}'
-    // Numeric
-    public static final int SQL_FUNC_ABS         = 120; // Oracle: abs(?,{0})
-    public static final int SQL_FUNC_ROUND       = 121; // Oracle: round(?, 
{0})
-    public static final int SQL_FUNC_TRUNC       = 122; // Oracle: trunc(?, 
{0})
-    public static final int SQL_FUNC_FLOOR       = 123; // Oracle: floor(?)
-    public static final int SQL_FUNC_CEILING     = 124; // Oracle: ceil(?)
-    public static final int SQL_FUNC_MODULO      = 125; // Oracle: mod(?)
-    public static final int SQL_FUNC_FORMAT      = 126; // Oracle: TO_CHAR(?)
-    // Date
-    public static final int SQL_FUNC_DAY         = 132; // MSSQL: month(?)
-    public static final int SQL_FUNC_MONTH       = 133; // MSSQL: month(?)
-    public static final int SQL_FUNC_YEAR        = 134; // MSSQL: year (?)
-    // Aggregation
-    public static final int SQL_FUNC_SUM         = 140; // Oracle: sum(?)
-    public static final int SQL_FUNC_MAX         = 142; // Oracle: max(?)
-    public static final int SQL_FUNC_MIN         = 143; // Oracle: min(?)
-    public static final int SQL_FUNC_AVG         = 144; // Oracle: avg(?)
-    // Decode
-    public static final int SQL_FUNC_DECODE      = 150; // Oracle: "decode(? 
{0})" SQL: "case ?{0} end"
-    public static final int SQL_FUNC_DECODE_SEP  = 151; // Oracle: ","         
    SQL: " "
-    public static final int SQL_FUNC_DECODE_PART = 152; // Oracle: "{0}, {1}"  
    SQL: "when {0} then {1}"
-    public static final int SQL_FUNC_DECODE_ELSE = 153; // Oracle: "{0}"       
    SQL: "else {0}"
-    
     
     /**
      * Called when a database is opened
@@ -131,7 +72,7 @@ public interface DBDatabaseDriver
      * @param name the name of the object (table, view or column)
      * @param useQuotes use quotes or not. When null is passed then 
detectQuoteName() is called
      */
-    void appendElementName(StringBuilder sql, String name, Boolean useQuotes);
+    void appendObjectName(StringBuilder sql, String name, Boolean useQuotes);
     
     /**
      * Returns an sql phrase template for this database system.<br>
@@ -141,7 +82,7 @@ public interface DBDatabaseDriver
      * @param phrase the identifier of the phrase  
      * @return the phrase template
      */
-    String getSQLPhrase(int phrase);
+    String getSQLPhrase(DBSqlPhrase phrase);
 
     /**
      * Returns a data type convertion phrase template for this driver<br>
@@ -283,7 +224,7 @@ public interface DBDatabaseDriver
      * @param enable true to enable the relation or false to disable
      * @param script the script to which to add the DDL command(s)
      */
-    void addEnableRelationStmt(DBRelation r, boolean enable, DBSQLScript 
script);
+    void appendEnableRelationStmt(DBRelation r, boolean enable, DBSQLScript 
script);
      
     /**
      * Extracts native error message of an sqlExeption.
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBDriverFeature.java 
b/empire-db/src/main/java/org/apache/empire/db/DBDriverFeature.java
index 0378118..833c220 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBDriverFeature.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBDriverFeature.java
@@ -20,8 +20,6 @@ package org.apache.empire.db;
 
 /**
  * This enum is used with the DBDatabaseDriver::isSupported method to query 
database driver capabilities.
- *
- *
  */
 public enum DBDriverFeature {
     // Support Flags used by DBDatabaseDriver::isSupported()
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBRelation.java 
b/empire-db/src/main/java/org/apache/empire/db/DBRelation.java
index a3ce20a..0486067 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBRelation.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBRelation.java
@@ -225,7 +225,7 @@ public class DBRelation extends DBObject
             throw new InvalidArgumentException("context", context);
         // get Statement
         DBSQLScript script = new DBSQLScript(context);
-        context.getDriver().addEnableRelationStmt(this, enable, script);
+        context.getDriver().appendEnableRelationStmt(this, enable, script);
         if (script.getCount()!=1)
             throw new UnexpectedReturnValueException(script.getCount(), 
"driver.addEnableRelationStatement");
         return script.getStmt(0);
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java 
b/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java
index ec8b6ad..0d27422 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java
@@ -465,7 +465,7 @@ public abstract class DBRowSet extends DBExpr
     {
         if (db==null || db.getDriver()==null)
             return " ";
-        return db.getDriver().getSQLPhrase(DBDatabaseDriver.SQL_RENAME_TABLE);
+        return db.getDriver().getSQLPhrase(DBSqlPhrase.SQL_RENAME_TABLE);
     }
 
     /**
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBSqlPhrase.java 
b/empire-db/src/main/java/org/apache/empire/db/DBSqlPhrase.java
new file mode 100644
index 0000000..4f2e245
--- /dev/null
+++ b/empire-db/src/main/java/org/apache/empire/db/DBSqlPhrase.java
@@ -0,0 +1,85 @@
+package org.apache.empire.db;
+
+/**
+ * Enum for all SQL phrases that may be supplied by the driver
+ * @author rainer
+ */
+public enum DBSqlPhrase
+{
+    // sql-phrases
+    SQL_NULL                ("null"),
+    SQL_PARAMETER           ("?"),
+    SQL_RENAME_TABLE        ("AS"),
+    SQL_RENAME_COLUMN       ("AS"),
+    SQL_DATABASE_LINK       ("@"),          // Oracle
+    SQL_QUOTES_OPEN         ("\""),         // MSSQL: [
+    SQL_QUOTES_CLOSE        ("\""),         // MSSQL: ]
+    SQL_CONCAT_EXPR         ("+"),          // Oracle: "||"
+    SQL_PSEUDO_TABLE        (""),           // Oracle: "DUAL"
+
+    // data types
+    SQL_BOOLEAN_TRUE        ("1"),          // Oracle Y
+    SQL_BOOLEAN_FALSE       ("0"),          // Oracle N
+    SQL_CURRENT_DATE        ("sysdate"),    // Oracle
+    SQL_DATE_PATTERN        ("yyyy-MM-dd"), // SimpleDateFormat
+    SQL_DATE_TEMPLATE       ("TO_DATE('{0}', 'YYYY-MM-DD')"),   // MSSql: 
convert(date, '{0}', 111)
+    SQL_DATETIME_PATTERN    ("yyyy-MM-dd HH:mm:ss.SSS"),        // 
SimpleDateFormat
+    SQL_DATETIME_TEMPLATE   ("TO_DATE('{0}', 'YYYY-MM-DD HH24:MI:SS')"), // 
Oracle
+    SQL_CURRENT_TIMESTAMP   ("systimestamp"),                   // Oracle
+    SQL_TIMESTAMP_PATTERN   ("yyyy-MM-dd HH:mm:ss.SSS"),        // 
SimpleDateFormat
+    SQL_TIMESTAMP_TEMPLATE  ("TO_TIMESTAMP('{0}', 'YYYY.MM.DD 
HH24:MI:SS.FF')"), // Oracle
+
+    // functions
+    SQL_FUNC_COALESCE       ("coalesce(?, {0})"),       // Oracle: nvl(?, {0})
+    SQL_FUNC_SUBSTRING      ("substring(?,{0})"),       // Oracle: 
substr(?,{0})
+    SQL_FUNC_SUBSTRINGEX    ("substring(?, {0}, {1})"), // Oracle: 
substr(?,{0},{1})
+    SQL_FUNC_REPLACE        ("replace(?, {0}, {1})"),   // Oracle: 
replace(?,{0},{1})
+    SQL_FUNC_REVERSE        ("reverse(?)"),             // Oracle: reverse(?) 
+    SQL_FUNC_STRINDEX       ("charindex({0}, ?)"),      // Oracle: instr(?, 
{0})
+    SQL_FUNC_STRINDEXFROM   ("charindex({0}, ?, {1})"), // Oracle: instr(?, 
{0}, {1}) 
+    SQL_FUNC_LENGTH         ("length(?)"),              // MSSql: len(?)
+    SQL_FUNC_UPPER          ("upper(?)"),
+    SQL_FUNC_LOWER          ("lower(?)"),
+    SQL_FUNC_TRIM           ("trim(?)"),
+    SQL_FUNC_LTRIM          ("ltrim(?)"),
+    SQL_FUNC_RTRIM          ("rtrim(?)"),
+    SQL_FUNC_ESCAPE         ("? escape '{0}'"),
+    
+    // Numeric
+    SQL_FUNC_ABS            ("abs(?)"),
+    SQL_FUNC_ROUND          ("round(?, {0})"),
+    SQL_FUNC_TRUNC          ("trunc(?, {0})"),
+    SQL_FUNC_FLOOR          ("floor(?)"),
+    SQL_FUNC_CEILING        ("ceiling(?)"),             // Oracle: ceil(?)
+    SQL_FUNC_MODULO         ("((?) % {0})"),            // Oracle: mod(?)
+    SQL_FUNC_FORMAT         ("format(?, {0:VARCHAR})"), // Oracle: TO_CHAR(?, 
{0:VARCHAR})
+
+    // Date
+    SQL_FUNC_DAY            ("day(?)"),                 // Oracle: extract(day 
from ?)
+    SQL_FUNC_MONTH          ("month(?)"),               // Oracle: 
extract(month from ?)
+    SQL_FUNC_YEAR           ("year(?)"),                // Oracle: 
extract(year from ?)
+
+    // Aggregation
+    SQL_FUNC_SUM            ("sum(?)"),
+    SQL_FUNC_MAX            ("max(?)"),
+    SQL_FUNC_MIN            ("min(?)"),
+    SQL_FUNC_AVG            ("avg(?)"),
+
+    // Decode
+    SQL_FUNC_DECODE         ("case ? {0} end"),         // Oracle: decode(? 
{0})
+    SQL_FUNC_DECODE_SEP     (" "),                      // Oracle: ,
+    SQL_FUNC_DECODE_PART    ("when {0} then {1}"),      // Oracle: {0}, {1}
+    SQL_FUNC_DECODE_ELSE    ("else {0}");               // Oracle: {0}
+
+    private String sqlDefault;
+    
+    private DBSqlPhrase(String sqlDefault)
+    {
+        this.sqlDefault = sqlDefault;
+    }
+
+    public String getSqlDefault()
+    {
+        return sqlDefault;
+    }
+}
diff --git 
a/empire-db/src/main/java/org/apache/empire/db/driver/DBDatabaseDriverBase.java 
b/empire-db/src/main/java/org/apache/empire/db/driver/DBDatabaseDriverBase.java
index c17778d..3fcfa10 100644
--- 
a/empire-db/src/main/java/org/apache/empire/db/driver/DBDatabaseDriverBase.java
+++ 
b/empire-db/src/main/java/org/apache/empire/db/driver/DBDatabaseDriverBase.java
@@ -52,6 +52,7 @@ import org.apache.empire.db.DBExpr;
 import org.apache.empire.db.DBObject;
 import org.apache.empire.db.DBRelation;
 import org.apache.empire.db.DBSQLScript;
+import org.apache.empire.db.DBSqlPhrase;
 import org.apache.empire.db.DBTable;
 import org.apache.empire.db.DBTableColumn;
 import org.apache.empire.db.exceptions.EmpireSQLException;
@@ -297,30 +298,19 @@ public abstract class DBDatabaseDriverBase implements 
DBDatabaseDriver
      * @param useQuotes use quotes or not
      */
     @Override
-    public void appendElementName(StringBuilder sql, String name, Boolean 
useQuotes)
+    public void appendObjectName(StringBuilder sql, String name, Boolean 
useQuotes)
     {
         if (useQuotes==null)
             useQuotes = detectQuoteName(name);
         // Check whether to use quotes or not
         if (useQuotes)
-            sql.append(getSQLPhrase(DBDatabaseDriver.SQL_QUOTES_OPEN));
+            sql.append(getSQLPhrase(DBSqlPhrase.SQL_QUOTES_OPEN));
         // Append Name
         sql.append(name);
         // End Quotes
         if (useQuotes)
-            sql.append(getSQLPhrase(DBDatabaseDriver.SQL_QUOTES_CLOSE));
+            sql.append(getSQLPhrase(DBSqlPhrase.SQL_QUOTES_CLOSE));
     }
-    
-    /**
-     * Returns an sql phrase template for this database system.<br>
-     * Templates for sql function expressions must contain a '?' character 
which will be 
-     * replaced by the current column expression.<br>
-     * If other parameters are necessary the template must contain 
placeholders like {0}, {1} etc. 
-     * @param phrase the identifier of the phrase  
-     * @return the phrase template
-     */
-    @Override
-    public abstract String getSQLPhrase(int phrase);
 
     /**
      * Returns the next value of a named sequence The numbers are used for 
fields of type DBExpr.DT_AUTOINC.<BR>
@@ -775,30 +765,28 @@ public abstract class DBDatabaseDriverBase implements 
DBDatabaseDriver
         }
         if (ObjectUtils.isEmpty(value))
         {   // null
-            return getSQLPhrase(SQL_NULL_VALUE);
+            return getSQLPhrase(DBSqlPhrase.SQL_NULL);
         }
         // set string buffer
         switch (type)
         {
             case DATE:
-                return getSQLDateTimeString(value, SQL_DATE_TEMPLATE, 
SQL_DATE_PATTERN, SQL_CURRENT_DATE);
+                return getSQLDateTimeString(value, 
DBSqlPhrase.SQL_DATE_TEMPLATE, DBSqlPhrase.SQL_DATE_PATTERN, 
DBSqlPhrase.SQL_CURRENT_DATE);
             case DATETIME:
                 // Only date (without time) provided?
                 if (!DBDatabase.SYSDATE.equals(value) && !(value instanceof 
Date) && ObjectUtils.lengthOf(value)<=10)
-                    return getSQLDateTimeString(value, SQL_DATE_TEMPLATE, 
SQL_DATE_PATTERN, SQL_CURRENT_TIMESTAMP);
+                    return getSQLDateTimeString(value, 
DBSqlPhrase.SQL_DATE_TEMPLATE, DBSqlPhrase.SQL_DATE_PATTERN, 
DBSqlPhrase.SQL_CURRENT_TIMESTAMP);
                 // Complete Date-Time Object with time 
-                return getSQLDateTimeString(value, SQL_DATETIME_TEMPLATE, 
SQL_DATETIME_PATTERN, SQL_CURRENT_TIMESTAMP);
+                return getSQLDateTimeString(value, 
DBSqlPhrase.SQL_DATETIME_TEMPLATE, DBSqlPhrase.SQL_DATETIME_PATTERN, 
DBSqlPhrase.SQL_CURRENT_TIMESTAMP);
             case TIMESTAMP:
-                return getSQLDateTimeString(value, SQL_TIMESTAMP_TEMPLATE, 
SQL_TIMESTAMP_PATTERN, SQL_CURRENT_TIMESTAMP);
+                return getSQLDateTimeString(value, 
DBSqlPhrase.SQL_TIMESTAMP_TEMPLATE, DBSqlPhrase.SQL_TIMESTAMP_PATTERN, 
DBSqlPhrase.SQL_CURRENT_TIMESTAMP);
             case VARCHAR:
             case CHAR:
             case CLOB:
             case UNIQUEID:
-            {   // Text value
                 return getSQLTextString(type, value);
-            }
             case BOOL:
-            {   // Get Boolean value   
+                // Get Boolean value   
                 boolean boolVal = false;
                 if (value instanceof Boolean)
                 {   boolVal = ((Boolean) value).booleanValue();
@@ -807,8 +795,7 @@ public abstract class DBDatabaseDriverBase implements 
DBDatabaseDriver
                 { // Boolean from String
                     boolVal = stringToBoolean(value.toString());
                 }
-                return getSQLPhrase((boolVal) ? SQL_BOOLEAN_TRUE : 
SQL_BOOLEAN_FALSE);
-            }
+                return getSQLPhrase((boolVal) ? DBSqlPhrase.SQL_BOOLEAN_TRUE : 
DBSqlPhrase.SQL_BOOLEAN_FALSE);
             case INTEGER:
             case DECIMAL:
             case FLOAT:
@@ -864,7 +851,7 @@ public abstract class DBDatabaseDriverBase implements 
DBDatabaseDriver
      * @param sqlCurrentDate
      * @return
      */
-    protected String getSQLDateTimeString(Object value, int sqlTemplate, int 
sqlPattern, int sqlCurrentDate)
+    protected String getSQLDateTimeString(Object value, DBSqlPhrase 
sqlTemplate, DBSqlPhrase sqlPattern, DBSqlPhrase sqlCurrentDate)
     {
         // is it a sysdate expression
         if (DBDatabase.SYSDATE.equals(value))
@@ -1000,7 +987,7 @@ public abstract class DBDatabaseDriverBase implements 
DBDatabaseDriver
      * @param script the script to which to add the DDL command(s)
      */
     @Override
-    public void addEnableRelationStmt(DBRelation r, boolean enable, 
DBSQLScript script)
+    public void appendEnableRelationStmt(DBRelation r, boolean enable, 
DBSQLScript script)
     {
         if (enable)
             getDDLScript(DBCmdType.CREATE, r, script);
diff --git 
a/empire-db/src/main/java/org/apache/empire/db/driver/derby/DBDatabaseDriverDerby.java
 
b/empire-db/src/main/java/org/apache/empire/db/driver/derby/DBDatabaseDriverDerby.java
index 5701744..286c6e2 100644
--- 
a/empire-db/src/main/java/org/apache/empire/db/driver/derby/DBDatabaseDriverDerby.java
+++ 
b/empire-db/src/main/java/org/apache/empire/db/driver/derby/DBDatabaseDriverDerby.java
@@ -31,6 +31,7 @@ import org.apache.empire.db.DBDatabaseDriver;
 import org.apache.empire.db.DBDriverFeature;
 import org.apache.empire.db.DBObject;
 import org.apache.empire.db.DBSQLScript;
+import org.apache.empire.db.DBSqlPhrase;
 import org.apache.empire.db.DBTable;
 import org.apache.empire.db.DBTableColumn;
 import org.apache.empire.db.driver.DBDatabaseDriverBase;
@@ -176,12 +177,12 @@ public class DBDatabaseDriverDerby extends 
DBDatabaseDriverBase
      * @return the phrase template
      */
     @Override
-    public String getSQLPhrase(int phrase)
+    public String getSQLPhrase(DBSqlPhrase phrase)
     {
         switch (phrase)
         {
             // sql-phrases
-            case SQL_NULL_VALUE:              return "null";
+            case SQL_NULL:              return "null";
             case SQL_PARAMETER:               return " ? ";
             case SQL_RENAME_TABLE:            return " ";
             case SQL_RENAME_COLUMN:           return " AS ";
@@ -239,8 +240,8 @@ public class DBDatabaseDriverDerby extends 
DBDatabaseDriverBase
             case SQL_FUNC_DECODE_ELSE:        return "else {0}";
             // Not defined
             default:
-                log.error("SQL phrase " + phrase + " is not defined!");
-                return "";
+                // log.warn("SQL phrase " + phrase.name() + " is not 
defined!");
+                return phrase.getSqlDefault();
         }
     }
 
diff --git 
a/empire-db/src/main/java/org/apache/empire/db/driver/h2/DBDatabaseDriverH2.java
 
b/empire-db/src/main/java/org/apache/empire/db/driver/h2/DBDatabaseDriverH2.java
index 2e38021..5f9e8b3 100644
--- 
a/empire-db/src/main/java/org/apache/empire/db/driver/h2/DBDatabaseDriverH2.java
+++ 
b/empire-db/src/main/java/org/apache/empire/db/driver/h2/DBDatabaseDriverH2.java
@@ -31,6 +31,7 @@ import org.apache.empire.db.DBDatabaseDriver;
 import org.apache.empire.db.DBDriverFeature;
 import org.apache.empire.db.DBObject;
 import org.apache.empire.db.DBSQLScript;
+import org.apache.empire.db.DBSqlPhrase;
 import org.apache.empire.db.DBTable;
 import org.apache.empire.db.DBTableColumn;
 import org.apache.empire.db.driver.DBDatabaseDriverBase;
@@ -223,12 +224,12 @@ public class DBDatabaseDriverH2 extends 
DBDatabaseDriverBase
      * @return the phrase template
      */
     @Override
-    public String getSQLPhrase(int phrase)
+    public String getSQLPhrase(DBSqlPhrase phrase)
     {
         switch (phrase)
         {
             // sql-phrases
-            case SQL_NULL_VALUE:              return "null";
+            case SQL_NULL:              return "null";
             case SQL_PARAMETER:               return " ? ";
             case SQL_RENAME_TABLE:            return " ";
             case SQL_RENAME_COLUMN:           return " AS ";
@@ -286,8 +287,8 @@ public class DBDatabaseDriverH2 extends DBDatabaseDriverBase
             case SQL_FUNC_DECODE_ELSE:        return "else {0}";
             // Not defined
             default:
-                log.error("SQL phrase " + phrase + " is not defined!");
-                return "";
+                // log.warn("SQL phrase " + phrase.name() + " is not 
defined!");
+                return phrase.getSqlDefault();
         }
     }
 
diff --git 
a/empire-db/src/main/java/org/apache/empire/db/driver/hsql/DBDatabaseDriverHSql.java
 
b/empire-db/src/main/java/org/apache/empire/db/driver/hsql/DBDatabaseDriverHSql.java
index 87e797f..9eea6de 100644
--- 
a/empire-db/src/main/java/org/apache/empire/db/driver/hsql/DBDatabaseDriverHSql.java
+++ 
b/empire-db/src/main/java/org/apache/empire/db/driver/hsql/DBDatabaseDriverHSql.java
@@ -32,6 +32,7 @@ import org.apache.empire.db.DBDatabaseDriver;
 import org.apache.empire.db.DBDriverFeature;
 import org.apache.empire.db.DBObject;
 import org.apache.empire.db.DBSQLScript;
+import org.apache.empire.db.DBSqlPhrase;
 import org.apache.empire.db.DBTableColumn;
 import org.apache.empire.db.driver.DBDatabaseDriverBase;
 import org.apache.empire.db.exceptions.QueryNoResultException;
@@ -117,12 +118,12 @@ public class DBDatabaseDriverHSql extends 
DBDatabaseDriverBase
      * @return the phrase template
      */
     @Override
-    public String getSQLPhrase(int phrase)
+    public String getSQLPhrase(DBSqlPhrase phrase)
     {
         switch (phrase)
         {
             // sql-phrases
-            case SQL_NULL_VALUE:        return "null";
+            case SQL_NULL:        return "null";
             case SQL_PARAMETER:         return " ? ";
             case SQL_RENAME_TABLE:      return " ";
             case SQL_RENAME_COLUMN:     return " AS ";
@@ -180,8 +181,8 @@ public class DBDatabaseDriverHSql extends 
DBDatabaseDriverBase
             case SQL_FUNC_DECODE_ELSE:  return "else {0}";
             // Not defined
             default:
-                log.error("SQL phrase " + phrase + " is not defined!");
-                return "";
+                // log.warn("SQL phrase " + phrase.name() + " is not 
defined!");
+                return phrase.getSqlDefault();
         }
     }
 
diff --git 
a/empire-db/src/main/java/org/apache/empire/db/driver/mysql/DBDatabaseDriverMySQL.java
 
b/empire-db/src/main/java/org/apache/empire/db/driver/mysql/DBDatabaseDriverMySQL.java
index b0fe4ec..e6b2394 100644
--- 
a/empire-db/src/main/java/org/apache/empire/db/driver/mysql/DBDatabaseDriverMySQL.java
+++ 
b/empire-db/src/main/java/org/apache/empire/db/driver/mysql/DBDatabaseDriverMySQL.java
@@ -35,6 +35,7 @@ import org.apache.empire.db.DBDatabaseDriver;
 import org.apache.empire.db.DBDriverFeature;
 import org.apache.empire.db.DBObject;
 import org.apache.empire.db.DBSQLScript;
+import org.apache.empire.db.DBSqlPhrase;
 import org.apache.empire.db.DBTable;
 import org.apache.empire.db.DBTableColumn;
 import org.apache.empire.db.driver.DBDatabaseDriverBase;
@@ -984,12 +985,12 @@ public class DBDatabaseDriverMySQL extends 
DBDatabaseDriverBase
      * @return the phrase template
      */
     @Override
-    public String getSQLPhrase(int phrase)
+    public String getSQLPhrase(DBSqlPhrase phrase)
     {
         switch (phrase)
         {
             // sql-phrases
-            case SQL_NULL_VALUE:              return "null";
+            case SQL_NULL:              return "null";
             case SQL_PARAMETER:               return " ? ";
             case SQL_RENAME_TABLE:            return " ";
             case SQL_RENAME_COLUMN:           return " AS ";
@@ -1047,8 +1048,8 @@ public class DBDatabaseDriverMySQL extends 
DBDatabaseDriverBase
             case SQL_FUNC_DECODE_ELSE:        return "else {0}";
             // Not defined
             default:
-                log.error("SQL phrase " + String.valueOf(phrase) + " is not 
defined!");
-                return "";
+                // log.warn("SQL phrase " + phrase.name() + " is not 
defined!");
+                return phrase.getSqlDefault();
         }
     }
 
diff --git 
a/empire-db/src/main/java/org/apache/empire/db/driver/oracle/DBDatabaseDriverOracle.java
 
b/empire-db/src/main/java/org/apache/empire/db/driver/oracle/DBDatabaseDriverOracle.java
index f155c40..8660339 100644
--- 
a/empire-db/src/main/java/org/apache/empire/db/driver/oracle/DBDatabaseDriverOracle.java
+++ 
b/empire-db/src/main/java/org/apache/empire/db/driver/oracle/DBDatabaseDriverOracle.java
@@ -40,6 +40,7 @@ import org.apache.empire.db.DBObject;
 import org.apache.empire.db.DBReader;
 import org.apache.empire.db.DBRelation;
 import org.apache.empire.db.DBSQLScript;
+import org.apache.empire.db.DBSqlPhrase;
 import org.apache.empire.db.DBTable;
 import org.apache.empire.db.DBTableColumn;
 import org.apache.empire.db.DBView;
@@ -150,12 +151,12 @@ public class DBDatabaseDriverOracle extends 
DBDatabaseDriverBase
      * @return the phrase template
      */
     @Override
-    public String getSQLPhrase(int phrase)
+    public String getSQLPhrase(DBSqlPhrase phrase)
     {
         switch (phrase)
         {
             // sql-phrases
-            case SQL_NULL_VALUE:                return "null";
+            case SQL_NULL:                return "null";
             case SQL_PARAMETER:                 return " ? ";
             case SQL_RENAME_TABLE:              return " ";
             case SQL_RENAME_COLUMN:             return " AS ";
@@ -214,8 +215,8 @@ public class DBDatabaseDriverOracle extends 
DBDatabaseDriverBase
             case SQL_FUNC_DECODE_ELSE:          return "{0}";
             // Not defined
             default:
-                log.error("SQL phrase " + phrase + " is not defined!");
-                return "";
+                // log.warn("SQL phrase " + phrase.name() + " is not 
defined!");
+                return phrase.getSqlDefault();
         }
     }
 
@@ -403,10 +404,10 @@ public class DBDatabaseDriverOracle extends 
DBDatabaseDriverBase
     }
 
     /**
-     * @see DBDatabaseDriver#addEnableRelationStmt(DBRelation, boolean, 
DBSQLScript)  
+     * @see DBDatabaseDriver#appendEnableRelationStmt(DBRelation, boolean, 
DBSQLScript)  
      */
     @Override
-    public void addEnableRelationStmt(DBRelation r, boolean enable, 
DBSQLScript script)
+    public void appendEnableRelationStmt(DBRelation r, boolean enable, 
DBSQLScript script)
     {
         // ALTER TABLE {table.name} {ENABLE|DISABLE} CONSTRAINT {relation.name}
         StringBuilder b = new StringBuilder();
diff --git 
a/empire-db/src/main/java/org/apache/empire/db/driver/postgresql/DBDatabaseDriverPostgreSQL.java
 
b/empire-db/src/main/java/org/apache/empire/db/driver/postgresql/DBDatabaseDriverPostgreSQL.java
index 45c6a74..8ae0229 100644
--- 
a/empire-db/src/main/java/org/apache/empire/db/driver/postgresql/DBDatabaseDriverPostgreSQL.java
+++ 
b/empire-db/src/main/java/org/apache/empire/db/driver/postgresql/DBDatabaseDriverPostgreSQL.java
@@ -35,6 +35,7 @@ import org.apache.empire.db.DBDatabaseDriver;
 import org.apache.empire.db.DBDriverFeature;
 import org.apache.empire.db.DBObject;
 import org.apache.empire.db.DBSQLScript;
+import org.apache.empire.db.DBSqlPhrase;
 import org.apache.empire.db.DBTableColumn;
 import org.apache.empire.db.driver.DBDatabaseDriverBase;
 import org.apache.empire.db.exceptions.EmpireSQLException;
@@ -325,12 +326,12 @@ public class DBDatabaseDriverPostgreSQL extends 
DBDatabaseDriverBase
      * @return the phrase template
      */
     @Override
-    public String getSQLPhrase(int phrase)
+    public String getSQLPhrase(DBSqlPhrase phrase)
     {
         switch (phrase)
         {
             // sql-phrases
-            case SQL_NULL_VALUE:              return "null";
+            case SQL_NULL:              return "null";
             case SQL_PARAMETER:               return " ? ";
             case SQL_RENAME_TABLE:            return " ";
             case SQL_RENAME_COLUMN:           return " AS ";
@@ -388,8 +389,8 @@ public class DBDatabaseDriverPostgreSQL extends 
DBDatabaseDriverBase
             case SQL_FUNC_DECODE_ELSE:        return "else {0}";
             // Not defined
             default:
-                log.error("SQL phrase " + String.valueOf(phrase) + " is not 
defined!");
-                return "";
+                // log.warn("SQL phrase " + phrase.name() + " is not 
defined!");
+                return phrase.getSqlDefault();
         }
     }
 
diff --git 
a/empire-db/src/main/java/org/apache/empire/db/driver/sqlite/DBDatabaseDriverSQLite.java
 
b/empire-db/src/main/java/org/apache/empire/db/driver/sqlite/DBDatabaseDriverSQLite.java
index d9f1afd..9ae7336 100644
--- 
a/empire-db/src/main/java/org/apache/empire/db/driver/sqlite/DBDatabaseDriverSQLite.java
+++ 
b/empire-db/src/main/java/org/apache/empire/db/driver/sqlite/DBDatabaseDriverSQLite.java
@@ -41,6 +41,7 @@ import org.apache.empire.db.DBDriverFeature;
 import org.apache.empire.db.DBJoinType;
 import org.apache.empire.db.DBObject;
 import org.apache.empire.db.DBSQLScript;
+import org.apache.empire.db.DBSqlPhrase;
 import org.apache.empire.db.DBTableColumn;
 import org.apache.empire.db.driver.DBDatabaseDriverBase;
 import org.apache.empire.db.expr.join.DBColumnJoinExpr;
@@ -303,13 +304,12 @@ public class DBDatabaseDriverSQLite extends 
DBDatabaseDriverBase
      * @return the phrase template
      */
     @Override
-    public String getSQLPhrase(int phrase)
+    public String getSQLPhrase(DBSqlPhrase phrase)
     {
         switch (phrase)
         {
-
             // sql-phrases
-            case SQL_NULL_VALUE:            return "null";
+            case SQL_NULL:            return "null";
             case SQL_PARAMETER:             return " ? ";
             case SQL_RENAME_TABLE:          return " ";
             case SQL_RENAME_COLUMN:         return " AS ";
@@ -367,8 +367,8 @@ public class DBDatabaseDriverSQLite extends 
DBDatabaseDriverBase
             case SQL_FUNC_DECODE_ELSE:      return "else {0}";
             // Not defined
             default:
-                log.error("SQL phrase " + String.valueOf(phrase) + " is not 
defined!");
-                return "";
+                // log.warn("SQL phrase " + phrase.name() + " is not 
defined!");
+                return phrase.getSqlDefault();
         }
     }
 
@@ -421,7 +421,7 @@ public class DBDatabaseDriverSQLite extends 
DBDatabaseDriverBase
         if (dataType == DataType.DATETIME || dataType == DataType.TIMESTAMP)
         {
             // SQLite does not have a Date type, or any kind of type :(
-            String datePattern = getSQLPhrase(SQL_DATETIME_PATTERN);
+            String datePattern = 
getSQLPhrase(DBSqlPhrase.SQL_DATETIME_PATTERN);
             DateFormat dateFormat = new SimpleDateFormat(datePattern);
             try
             {
diff --git 
a/empire-db/src/main/java/org/apache/empire/db/driver/sqlserver/DBDatabaseDriverMSSQL.java
 
b/empire-db/src/main/java/org/apache/empire/db/driver/sqlserver/DBDatabaseDriverMSSQL.java
index 5eb8384..5a5de91 100644
--- 
a/empire-db/src/main/java/org/apache/empire/db/driver/sqlserver/DBDatabaseDriverMSSQL.java
+++ 
b/empire-db/src/main/java/org/apache/empire/db/driver/sqlserver/DBDatabaseDriverMSSQL.java
@@ -37,6 +37,7 @@ import org.apache.empire.db.DBExpr;
 import org.apache.empire.db.DBObject;
 import org.apache.empire.db.DBRelation;
 import org.apache.empire.db.DBSQLScript;
+import org.apache.empire.db.DBSqlPhrase;
 import org.apache.empire.db.DBTable;
 import org.apache.empire.db.DBTableColumn;
 import org.apache.empire.db.driver.DBDatabaseDriverBase;
@@ -289,12 +290,12 @@ public class DBDatabaseDriverMSSQL extends 
DBDatabaseDriverBase
      * @return the phrase template
      */
     @Override
-    public String getSQLPhrase(int phrase)
+    public String getSQLPhrase(DBSqlPhrase phrase)
     {
         switch (phrase)
         {
             // sql-phrases
-            case SQL_NULL_VALUE:              return "null";
+            case SQL_NULL:              return "null";
             case SQL_PARAMETER:               return " ? ";
             case SQL_RENAME_TABLE:            return " ";
             case SQL_RENAME_COLUMN:           return " AS ";
@@ -355,8 +356,8 @@ public class DBDatabaseDriverMSSQL extends 
DBDatabaseDriverBase
             case SQL_FUNC_DECODE_ELSE:        return "else {0}";
             // Not defined
             default:
-                log.error("SQL phrase " + String.valueOf(phrase) + " is not 
defined!");
-                return "";
+                // log.warn("SQL phrase " + phrase.name() + " is not 
defined!");
+                return phrase.getSqlDefault();
         }
     }
 
@@ -521,10 +522,10 @@ public class DBDatabaseDriverMSSQL extends 
DBDatabaseDriverBase
     }
 
     /**
-     * @see DBDatabaseDriver#addEnableRelationStmt(DBRelation, boolean, 
DBSQLScript)  
+     * @see DBDatabaseDriver#appendEnableRelationStmt(DBRelation, boolean, 
DBSQLScript)  
      */
     @Override
-    public void addEnableRelationStmt(DBRelation r, boolean enable, 
DBSQLScript script)
+    public void appendEnableRelationStmt(DBRelation r, boolean enable, 
DBSQLScript script)
     {
         // ALTER TABLE {table.name} {CHECK|NOCHECK} CONSTRAINT {relation.name}
         StringBuilder b = new StringBuilder();
diff --git 
a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBAliasExpr.java 
b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBAliasExpr.java
index f963cb0..b3a644f 100644
--- a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBAliasExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBAliasExpr.java
@@ -18,6 +18,8 @@
  */
 package org.apache.empire.db.expr.column;
 
+import java.util.Set;
+
 // Java
 import org.apache.empire.commons.StringUtils;
 import org.apache.empire.data.DataType;
@@ -25,10 +27,9 @@ import org.apache.empire.db.DBColumn;
 import org.apache.empire.db.DBColumnExpr;
 import org.apache.empire.db.DBDatabase;
 import org.apache.empire.db.DBDatabaseDriver;
+import org.apache.empire.db.DBSqlPhrase;
 import org.w3c.dom.Element;
 
-import java.util.Set;
-
 // XML
 
 
@@ -168,11 +169,11 @@ public class DBAliasExpr extends DBColumnExpr
             expr.addSQL(buf, context);
             // Rename
             DBDatabaseDriver driver = getDatabase().getDriver();
-            String asExpr = 
driver.getSQLPhrase(DBDatabaseDriver.SQL_RENAME_COLUMN);
+            String asExpr = driver.getSQLPhrase(DBSqlPhrase.SQL_RENAME_COLUMN);
             if (asExpr!=null)
             {
                 buf.append(asExpr);
-                driver.appendElementName(buf, alias, null);
+                driver.appendObjectName(buf, alias, null);
             }
         } 
         else
diff --git 
a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBConcatExpr.java 
b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBConcatExpr.java
index 0446966..c22f1a5 100644
--- a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBConcatExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBConcatExpr.java
@@ -18,19 +18,19 @@
  */
 package org.apache.empire.db.expr.column;
 
+import java.text.MessageFormat;
+import java.util.Set;
+
 // Java
 import org.apache.empire.data.DataType;
 import org.apache.empire.db.DBColumn;
 import org.apache.empire.db.DBColumnExpr;
 import org.apache.empire.db.DBDatabase;
-import org.apache.empire.db.DBDatabaseDriver;
 import org.apache.empire.db.DBExpr;
+import org.apache.empire.db.DBSqlPhrase;
 import org.apache.empire.xml.XMLUtil;
 import org.w3c.dom.Element;
 
-import java.text.MessageFormat;
-import java.util.Set;
-
 
 /**
  * This class is used for performing string concatenation in SQL<br>
@@ -142,7 +142,7 @@ public class DBConcatExpr extends DBColumnExpr
     @Override
     public void addSQL(StringBuilder buf, long context)
     { // Zusammenbauen
-        String template = 
getDatabase().getDriver().getSQLPhrase(DBDatabaseDriver.SQL_CONCAT_EXPR);
+        String template = 
getDatabase().getDriver().getSQLPhrase(DBSqlPhrase.SQL_CONCAT_EXPR);
         context &= ~CTX_ALIAS; // No column aliases
         // Find Separator
         int sep = template.indexOf('?');
diff --git 
a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBDecodeExpr.java 
b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBDecodeExpr.java
index b6cae59..6923426 100644
--- a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBDecodeExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBDecodeExpr.java
@@ -18,16 +18,17 @@
  */
 package org.apache.empire.db.expr.column;
 
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
 import org.apache.empire.commons.StringUtils;
 import org.apache.empire.data.DataType;
 import org.apache.empire.db.DBColumn;
 import org.apache.empire.db.DBColumnExpr;
 import org.apache.empire.db.DBDatabaseDriver;
 import org.apache.empire.db.DBExpr;
-
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
+import org.apache.empire.db.DBSqlPhrase;
 
 /**
  * This class is used to decode a set of keys to the corresponding target 
values.
@@ -92,25 +93,25 @@ public class DBDecodeExpr extends DBAbstractFuncExpr
             Object key = i.next();
             Object val = valueMap.get(key);
 
-            String part = 
driver.getSQLPhrase(DBDatabaseDriver.SQL_FUNC_DECODE_PART);
+            String part = 
driver.getSQLPhrase(DBSqlPhrase.SQL_FUNC_DECODE_PART);
             part = StringUtils.replaceAll(part, "{0}", 
getObjectValue(expr.getDataType(), key, DBExpr.CTX_DEFAULT, ""));
             part = StringUtils.replaceAll(part, "{1}", 
getObjectValue(this.getDataType(), val, DBExpr.CTX_DEFAULT, ""));
 
-            
inner.append(driver.getSQLPhrase(DBDatabaseDriver.SQL_FUNC_DECODE_SEP));
+            inner.append(driver.getSQLPhrase(DBSqlPhrase.SQL_FUNC_DECODE_SEP));
             inner.append(part);
         }
         // Generate other
         if (elseExpr != null)
         { // Else
-            String other = 
driver.getSQLPhrase(DBDatabaseDriver.SQL_FUNC_DECODE_ELSE);
+            String other = 
driver.getSQLPhrase(DBSqlPhrase.SQL_FUNC_DECODE_ELSE);
             other = StringUtils.replaceAll(other, "{0}", 
getObjectValue(getDataType(), elseExpr, DBExpr.CTX_DEFAULT, ""));
 
-            
inner.append(driver.getSQLPhrase(DBDatabaseDriver.SQL_FUNC_DECODE_SEP));
+            inner.append(driver.getSQLPhrase(DBSqlPhrase.SQL_FUNC_DECODE_SEP));
             inner.append(other);
         }
         DBValueExpr param = new DBValueExpr(getDatabase(), inner, 
DataType.UNKNOWN); 
         // Set Params
-        String template = 
driver.getSQLPhrase(DBDatabaseDriver.SQL_FUNC_DECODE);
+        String template = driver.getSQLPhrase(DBSqlPhrase.SQL_FUNC_DECODE);
         super.addSQL(sql, template, new Object[] { param }, context);
     }
 
diff --git 
a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBFuncExpr.java 
b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBFuncExpr.java
index d335aa7..dd358fe 100644
--- a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBFuncExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBFuncExpr.java
@@ -25,6 +25,7 @@ import org.apache.empire.data.DataType;
 import org.apache.empire.db.DBColumn;
 import org.apache.empire.db.DBColumnExpr;
 import org.apache.empire.db.DBExpr;
+import org.apache.empire.db.DBSqlPhrase;
 
 
 /**
@@ -43,7 +44,7 @@ public class DBFuncExpr extends DBAbstractFuncExpr
 {
     // *Deprecated* private static final long serialVersionUID = 1L;
   
-    protected final int          phrase;
+    protected final DBSqlPhrase  phrase;
     protected final Object[]     params;
     protected String             template;
 
@@ -61,7 +62,7 @@ public class DBFuncExpr extends DBAbstractFuncExpr
      * @param isAggregate indicates whether the function is an aggregate 
function (sum, min, max, avg, ...)
      * @param dataType indicates the data type of the function result 
      */
-    public DBFuncExpr(DBColumnExpr expr, int phrase, Object[] params, DBColumn 
updateColumn, boolean isAggregate, DataType dataType)
+    public DBFuncExpr(DBColumnExpr expr, DBSqlPhrase phrase, Object[] params, 
DBColumn updateColumn, boolean isAggregate, DataType dataType)
     {
         super(expr, updateColumn, isAggregate, dataType);
         // Set Phrase and Params
@@ -87,7 +88,7 @@ public class DBFuncExpr extends DBAbstractFuncExpr
     {
         super(expr, updateColumn, isAggregate, dataType);
         // Set Phrase and Params
-        this.phrase = 0;
+        this.phrase = null;
         this.params = params;
         this.template = template;
     }
diff --git a/empire-db/src/test/java/org/apache/empire/db/MockDriver.java 
b/empire-db/src/test/java/org/apache/empire/db/MockDriver.java
index bc6d881..d6b7ee2 100644
--- a/empire-db/src/test/java/org/apache/empire/db/MockDriver.java
+++ b/empire-db/src/test/java/org/apache/empire/db/MockDriver.java
@@ -59,7 +59,7 @@ public class MockDriver extends DBDatabaseDriverBase {
     }
 
     @Override
-    public String getSQLPhrase(int phrase)
+    public String getSQLPhrase(DBSqlPhrase phrase)
     {
         return null;
     }

Reply via email to