|
|||||||||
| 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.PostgreSqlDialect
public class PostgreSqlDialect
Implementation of Dialect for the PostgreSQL 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 | |
|---|---|
PostgreSqlDialect(Connection connection)
Creates a PostgreSqlDialect. |
|
| Method Summary | |
|---|---|
boolean |
allowsRegularExpressionInWhereClause()
Informs Mondrian if the dialect supports regular expressions when creating the 'where' or the 'having' clause. |
protected 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. |
Dialect.DatabaseProduct |
getDatabaseProduct()
Returns the database for this Dialect, or Dialect.DatabaseProduct.UNKNOWN if the database is
not a common database. |
static boolean |
isGreenplum(DatabaseMetaData databaseMetaData)
Detects whether this database is Greenplum. |
boolean |
requiresAliasForFromQuery()
Returns whether this Dialect requires subqueries in the FROM clause to have an alias. |
| 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 PostgreSqlDialect(Connection connection)
throws SQLException
connection - Connection
SQLException| Method Detail |
|---|
public boolean requiresAliasForFromQuery()
Dialect
requiresAliasForFromQuery in interface DialectrequiresAliasForFromQuery in class JdbcDialectImplDialect.allowsFromQuery()
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 static boolean isGreenplum(DatabaseMetaData databaseMetaData)
Greenplum uses the Postgres driver and appears to be a Postgres instance. The key difference is the presence of 'greenplum' in 'select version()'.
databaseMetaData - Database metadata
public Dialect.DatabaseProduct getDatabaseProduct()
DialectDialect.DatabaseProduct.UNKNOWN if the database is
not a common database.
getDatabaseProduct in interface DialectgetDatabaseProduct 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.
|
|
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||