EMPIREDB-362 added stragg function
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 8cccc1e..63b0270 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
@@ -1090,6 +1090,16 @@
}
/**
+ * Creates and returns string aggregation expression
+ * @param separator the separator between string
+ * @return the new DBFuncExpr object
+ */
+ public DBColumnExpr strAgg(String separator)
+ {
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_STRAGG, new Object[] { separator });
+ }
+
+ /**
* Creates and returns an expression for the SQL "count()" function
* which returns the number of rows in the result set.
*
diff --git a/empire-db/src/main/java/org/apache/empire/dbms/DBSqlPhrase.java b/empire-db/src/main/java/org/apache/empire/dbms/DBSqlPhrase.java
index 1225ab9..ae94efe 100644
--- a/empire-db/src/main/java/org/apache/empire/dbms/DBSqlPhrase.java
+++ b/empire-db/src/main/java/org/apache/empire/dbms/DBSqlPhrase.java
@@ -1,5 +1,10 @@
package org.apache.empire.dbms;
+import org.apache.empire.data.DataType;
+import org.apache.empire.db.DBColumn;
+import org.apache.empire.db.DBColumnExpr;
+import org.apache.empire.db.expr.column.DBFuncExpr;
+
/**
* Enum for all SQL phrases that may be supplied by the dbms
* @author rainer
@@ -65,6 +70,7 @@
SQL_FUNC_MAX ("max(?)", true),
SQL_FUNC_MIN ("min(?)", true),
SQL_FUNC_AVG ("avg(?)", true),
+ SQL_FUNC_STRAGG ("string_agg(?,{0})", true), // string_agg, LISTAGG
// Decode
SQL_FUNC_DECODE ("case ? {0} end"), // Oracle: decode(? {0})
diff --git a/empire-db/src/main/java/org/apache/empire/dbms/oracle/DBMSHandlerOracle.java b/empire-db/src/main/java/org/apache/empire/dbms/oracle/DBMSHandlerOracle.java
index 3756b6f..6495984 100644
--- a/empire-db/src/main/java/org/apache/empire/dbms/oracle/DBMSHandlerOracle.java
+++ b/empire-db/src/main/java/org/apache/empire/dbms/oracle/DBMSHandlerOracle.java
@@ -221,6 +221,7 @@
case SQL_FUNC_MAX: return "max(?)";
case SQL_FUNC_MIN: return "min(?)";
case SQL_FUNC_AVG: return "avg(?)";
+ case SQL_FUNC_STRAGG: return "listagg(? {0})";
// Others
case SQL_FUNC_DECODE: return "decode(? {0})";
case SQL_FUNC_DECODE_SEP: return ",";