|
|||||||||
| 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.AccessDialect
public class AccessDialect
Implementation of Dialect for the Microsoft Access
database (also called the JET Engine).
| 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 | |
|---|---|
AccessDialect(Connection connection)
Creates an AccessDialect. |
|
| Method Summary | |
|---|---|
boolean |
allowsCountDistinct()
Returns whether this Dialect supports distinct aggregations. |
String |
caseWhenElse(String cond,
String thenExpr,
String elseExpr)
Generates a conditional statement in this dialect's syntax. |
String |
generateInline(List<String> columnNames,
List<String> columnTypes,
List<String[]> valueList)
Generates a SQL statement to represent an inline dataset. |
protected String |
generateOrderByNulls(String expr,
boolean ascending,
boolean collateNullsLast)
Generates SQL to force null values to collate last. |
void |
quoteDateLiteral(StringBuilder buf,
String value)
Appends to a buffer a date literal. |
protected void |
quoteDateLiteral(StringBuilder buf,
String value,
Date date)
Helper method for JdbcDialectImpl.quoteDateLiteral(StringBuilder, String). |
boolean |
requiresUnionOrderByExprToBeInSelectClause()
Returns true if this dialect allows an expression in the ORDER BY clause of a UNION (or other set operation) query only if it occurs in the SELECT clause. |
String |
toUpper(String expr)
Converts an expression to upper case. |
| 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 AccessDialect(Connection connection)
throws SQLException
connection - Connection
SQLException| Method Detail |
|---|
public String toUpper(String expr)
DialectFor example, for MySQL, toUpper("foo.bar") returns
"UPPER(foo.bar)".
toUpper in interface DialecttoUpper in class JdbcDialectImplexpr - SQL expression
expr
into upper case.
public String caseWhenElse(String cond,
String thenExpr,
String elseExpr)
DialectFor example, caseWhenElse("b", "1", "0") returns
"case when b then 1 else 0 end" on Oracle,
"Iif(b, 1, 0)" on Access.
caseWhenElse in interface DialectcaseWhenElse in class JdbcDialectImplcond - Predicate expressionthenExpr - Expression if condition is trueelseExpr - Expression if condition is false
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
protected void quoteDateLiteral(StringBuilder buf,
String value,
Date date)
JdbcDialectImplJdbcDialectImpl.quoteDateLiteral(StringBuilder, String).
quoteDateLiteral in class JdbcDialectImplbuf - Buffer to append tovalue - Value as stringdate - Value as date
protected 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 requiresUnionOrderByExprToBeInSelectClause()
DialectFor example,
SELECT x, y + z FROM t
is allowed but
UNION ALL
SELECT x, y + z FROM t
ORDER BY y + zSELECT x, y, z FROM t
UNION ALL
SELECT x, y, z FROM t
ORDER BY y + zSELECT x, y, z FROM t ORDER BY y + z
is not.
Access is an example of a dialect with this restriction.
requiresUnionOrderByExprToBeInSelectClause in interface DialectrequiresUnionOrderByExprToBeInSelectClause in class JdbcDialectImplpublic boolean allowsCountDistinct()
DialectFor example, Access does not allow
select count(distinct x) from t
allowsCountDistinct in interface DialectallowsCountDistinct 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
|
|
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||