|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectmondrian.spi.impl.JdbcDialectImpl
mondrian.spi.impl.OracleDialect
public class OracleDialect
Implementation of Dialect for the Oracle database.
| Nested Class Summary |
|---|
| Nested classes/interfaces inherited from interface mondrian.spi.Dialect |
|---|
Dialect.DatabaseProduct, Dialect.Datatype |
| Field Summary | |
|---|---|
static JdbcDialectFactory |
FACTORY
|
| Fields inherited from class mondrian.spi.impl.JdbcDialectImpl |
|---|
databaseProduct, permitsSelectNotInGroupBy, productVersion |
| Constructor Summary | |
|---|---|
OracleDialect(Connection connection)
Creates an OracleDialect. |
|
| Method Summary | |
|---|---|
boolean |
allowsAs()
Returns whether the SQL dialect allows "AS" in the FROM clause. |
boolean |
allowsJoinOn()
Returns whether this dialect supports "ANSI-style JOIN syntax", FROM leftTable JOIN rightTable ON conditon. |
boolean |
allowsRegularExpressionInWhereClause()
Informs Mondrian if the dialect supports regular expressions when creating the 'where' or the 'having' clause. |
String |
generateInline(List<String> columnNames,
List<String> columnTypes,
List<String[]> valueList)
Generates a SQL statement to represent an inline dataset. |
String |
generateOrderByNulls(String expr,
boolean ascending,
boolean collateNullsLast)
Generates SQL to force null values to collate last. |
String |
generateRegularExpression(String source,
String javaRegex)
Must generate a String representing a regular expression match operation between a string literal and a Java regular expression. |
void |
quoteDateLiteral(StringBuilder buf,
String value)
Appends to a buffer a date literal. |
boolean |
supportsGroupingSets()
Returns whether this Dialect allows the GROUPING SETS construct in the GROUP BY clause. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
public static final JdbcDialectFactory FACTORY
| Constructor Detail |
|---|
public OracleDialect(Connection connection)
throws SQLException
connection - Connection
SQLException| Method Detail |
|---|
public boolean allowsAs()
Dialect
allowsAs in interface DialectallowsAs in class JdbcDialectImpl
public String generateInline(List<String> columnNames,
List<String> columnTypes,
List<String[]> valueList)
DialectFor example, for Oracle, generates
SELECT 1 AS FOO, 'a' AS BAR FROM dual UNION ALL SELECT 2 AS FOO, 'b' AS BAR FROM dual
For ANSI SQL, generates:
VALUES (1, 'a'), (2, 'b')
generateInline in interface DialectgenerateInline in class JdbcDialectImplcolumnNames - List of column namescolumnTypes - List of column types ("String" or "Numeric")valueList - List of rows values
public boolean supportsGroupingSets()
Dialect
supportsGroupingSets in interface DialectsupportsGroupingSets in class JdbcDialectImpl
public String generateOrderByNulls(String expr,
boolean ascending,
boolean collateNullsLast)
JdbcDialectImplThis default implementation makes use of the ANSI SQL 1999 CASE-WHEN-THEN-ELSE in conjunction with IS NULL syntax. The resulting SQL will look something like this:
CASE WHEN "expr" IS NULL THEN 0 ELSE 1 END
You can override this method for a particular database to use something more efficient, like ISNULL().
ANSI SQL provides the syntax "ASC/DESC NULLS LAST" and
"ASC/DESC NULLS FIRST". If your database supports the ANSI
syntax, implement this method by calling
JdbcDialectImpl.generateOrderByNullsAnsi(java.lang.String, boolean, boolean).
This method is only called from
JdbcDialectImpl.generateOrderItem(String, boolean, boolean, boolean).
Some dialects override that method and therefore never call
this method.
generateOrderByNulls in class JdbcDialectImplexpr - Expression.ascending - Whether ascending.collateNullsLast - Whether nulls should appear first or last.
public boolean allowsJoinOn()
DialectFROM leftTable JOIN rightTable ON conditon.
allowsJoinOn in interface DialectallowsJoinOn in class JdbcDialectImplpublic boolean allowsRegularExpressionInWhereClause()
Dialect
allowsRegularExpressionInWhereClause in interface DialectallowsRegularExpressionInWhereClause in class JdbcDialectImpl
public String generateRegularExpression(String source,
String javaRegex)
DialectPostgres / Greenplum example:
generateRegularExpression(
"'foodmart'.'customer_name'", "(?i).*oo.*") ->
'foodmart'.'customer_name' ~ "(?i).*oo.*"
Oracle example:
generateRegularExpression(
"'foodmart'.'customer_name'", ".*oo.*") ->
REGEXP_LIKE('foodmart'.'customer_name', ".*oo.*")
Dialects are allowed to return null if the dialect cannot convert that particular regular expression into something that the database would support.
generateRegularExpression in interface DialectgenerateRegularExpression in class JdbcDialectImplsource - A String identifying the column to match against.javaRegex - A Java regular expression to match against.
public void quoteDateLiteral(StringBuilder buf,
String value)
DialectFor example, in the default dialect,
quoteStringLiteral(buf, "1969-03-17")
appends DATE '1969-03-17'.
quoteDateLiteral in interface DialectquoteDateLiteral in class JdbcDialectImplbuf - Buffer to append tovalue - Literal
|
|
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||