org.mmbase.storage.search.implementation.database
Class PostgreSqlSqlHandler

java.lang.Object
  extended byorg.mmbase.storage.search.implementation.database.BasicSqlHandler
      extended byorg.mmbase.storage.search.implementation.database.PostgreSqlSqlHandler
All Implemented Interfaces:
SqlHandler

public class PostgreSqlSqlHandler
extends BasicSqlHandler
implements SqlHandler

The PostgreSQL query handler, implements SqlHandler for standard PostgreSql functionality.
Derived from BasicSqlHandler, overrides

Since:
MMBase-1.7
Version:
$Id: PostgreSqlSqlHandler.java,v 1.23 2006/07/05 20:06:16 michiel Exp $
Author:
Rob van Maris

Constructor Summary
PostgreSqlSqlHandler()
          Constructor.
 
Method Summary
protected  void appendDateField(StringBuffer sb, Step step, String fieldName, boolean multipleSteps, int datePart)
          date time functions
protected  StringBuffer appendLikeOperator(StringBuffer sb, boolean caseSensitive)
          Appends the 'LIKE' operator for the given case sensitiviy.
protected  StringBuffer appendSortOrderField(StringBuffer sb, SortOrder sortOrder, boolean multipleSteps)
          Normally, Postgresql does not sort case senstively, so we should not sort on UPPER(fieldname).
protected  void appendTableName(StringBuffer sb, Step step)
          Optimizes postgresql queries by adding the ONLY keyword to a relation-table, provided that the role was given (and therefor the selection only applies to the given table).
 int getSupportLevel(int feature, SearchQuery query)
          Gets the level at which a feature is supported for a query by this handler.
 String toSql(SearchQuery query, SqlHandler firstInChain)
          Represents a SearchQuery object as a string in SQL format, using the database configuration.
protected  boolean useLower(FieldCompareConstraint constraint)
          Wether the 'LOWER' function needs to be used to implement case insensitivity.
 
Methods inherited from class org.mmbase.storage.search.implementation.database.BasicSqlHandler
appendCompositeConstraintToSql, appendConstraintToSql, appendDateValue, appendField, appendFieldValue, appendQueryBodyToSql, appendRelationConstraints, appendSortOrderDirection, appendSortOrders, appendTableAlias, getAllowedValue, getSupportLevel, toSqlString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.mmbase.storage.search.implementation.database.SqlHandler
appendConstraintToSql, appendQueryBodyToSql, getAllowedValue, getSupportLevel
 

Constructor Detail

PostgreSqlSqlHandler

public PostgreSqlSqlHandler()
Constructor.

Method Detail

getSupportLevel

public int getSupportLevel(int feature,
                           SearchQuery query)
                    throws SearchQueryException
Description copied from interface: SqlHandler
Gets the level at which a feature is supported for a query by this handler. This is one of either: Given the choice, the query handler with the highest level of support is prefered.

Specified by:
getSupportLevel in interface SqlHandler
Overrides:
getSupportLevel in class BasicSqlHandler
Throws:
SearchQueryException

useLower

protected boolean useLower(FieldCompareConstraint constraint)
Description copied from class: BasicSqlHandler
Wether the 'LOWER' function needs to be used to implement case insensitivity. This is not always the case, because some database only match case insensitively, in which case it does not make sense to lowercase.

Overrides:
useLower in class BasicSqlHandler

appendLikeOperator

protected StringBuffer appendLikeOperator(StringBuffer sb,
                                          boolean caseSensitive)
Description copied from class: BasicSqlHandler
Appends the 'LIKE' operator for the given case sensitiviy. Some databases support a case insensitive LIKE ('ILIKE'). Implementations for those database can override this method.

Overrides:
appendLikeOperator in class BasicSqlHandler
Returns:
The string buffer.

appendSortOrderField

protected StringBuffer appendSortOrderField(StringBuffer sb,
                                            SortOrder sortOrder,
                                            boolean multipleSteps)
Normally, Postgresql does not sort case senstively, so we should not sort on UPPER(fieldname). This is mainly very bad if the query is also distinct. (ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list), may occur.

Overrides:
appendSortOrderField in class BasicSqlHandler

appendDateField

protected void appendDateField(StringBuffer sb,
                               Step step,
                               String fieldName,
                               boolean multipleSteps,
                               int datePart)
date time functions

Overrides:
appendDateField in class BasicSqlHandler
Warning: No Java Documentation Available.

toSql

public String toSql(SearchQuery query,
                    SqlHandler firstInChain)
             throws SearchQueryException
Description copied from interface: SqlHandler
Represents a SearchQuery object as a string in SQL format, using the database configuration.

Specified by:
toSql in interface SqlHandler
Overrides:
toSql in class BasicSqlHandler
Throws:
SearchQueryException

appendTableName

protected void appendTableName(StringBuffer sb,
                               Step step)
Optimizes postgresql queries by adding the ONLY keyword to a relation-table, provided that the role was given (and therefor the selection only applies to the given table).

Overrides:
appendTableName in class BasicSqlHandler
Parameters:
sb -
step -
See Also:
BasicSqlHandler.appendTableName(java.lang.StringBuffer, org.mmbase.storage.search.Step)


MMBase build 1.8.1.20060716