@Translator(name="postgresql", description="A translator for postgreSQL Database") public class PostgreSQLExecutionFactory extends JDBCExecutionFactory
JDBCExecutionFactory.StructRetrieval
ExecutionFactory.Format, ExecutionFactory.NullOrder, ExecutionFactory.SupportedJoinCriteria, ExecutionFactory.TransactionSupport
Modifier and Type | Field and Description |
---|---|
static Version |
EIGHT_0 |
static Version |
EIGHT_1 |
static Version |
EIGHT_2 |
static Version |
EIGHT_3 |
static Version |
EIGHT_4 |
static Version |
NINE_0 |
static Version |
NINE_3 |
static Version |
ONE_3 |
static Version |
ONE_4 |
static Version |
ONE_5 |
protected OracleFormatFunctionModifier |
parseModifier |
static Version |
TWO_0 |
DEFAULT_MAX_DEPENDENT_PREDICATES, DEFAULT_MAX_IN_CRITERIA, DEFAULT_TIME_ZONE, dialect
DEFAULT_MAX_FROM_GROUPS, DEFAULT_MAX_IN_CRITERIA_SIZE
Constructor and Description |
---|
PostgreSQLExecutionFactory() |
Modifier and Type | Method and Description |
---|---|
static List<Object> |
addDefaultEscape(Like like)
Add a default escape
|
void |
bindValue(PreparedStatement stmt,
Object param,
Class<?> paramType,
int i)
Sets prepared statement parameter i with param.
|
Object |
convertToken(String group)
Convert to a new parsing token or return null if not possible
|
String |
getCreateTemporaryTablePostfix(boolean inTransaction) |
ExecutionFactory.NullOrder |
getDefaultNullOrder()
Returns the default null ordering
|
String |
getHibernateDialectClassName() |
MetadataProcessor<Connection> |
getMetadataProcessor()
Get a MetadataProcessor for the translator to read the metadata.
|
String |
getPostGisVersion() |
SQLConversionVisitor |
getSQLConversionVisitor()
Create the
SQLConversionVisitor that will perform translation. |
List<String> |
getSupportedFunctions()
Get list of all supported function names.
|
int |
getTimestampNanoPrecision()
Return the precision of timestamp literals.
|
void |
initCapabilities(Connection connection)
Will be called by
ExecutionFactory.start() with a null connection if a source connection is not ExecutionFactory.isSourceRequiredForCapabilities() |
boolean |
isProjSupported() |
void |
loadedTemporaryTable(String tableName,
ExecutionContext context,
Connection connection)
pg needs to collect stats for effective planning
|
Object |
retrieveGeometryValue(ResultSet results,
int paramIndex) |
void |
setPostGisVersion(String postGisVersion) |
void |
setProjSupported(boolean projSupported) |
void |
start()
Initialize the connector with supplied configuration
|
boolean |
supportsAggregatesEnhancedNumeric()
Support indicates connector can accept STDDEV_POP, STDDEV_VAR, VAR_POP, VAR_SAMP
|
boolean |
supportsArrayAgg() |
boolean |
supportsArrayType()
The engine uses array types for dependent joins and for array expression.
|
boolean |
supportsCommonTableExpressions() |
boolean |
supportsElementaryOlapOperations() |
boolean |
supportsExcept()
Support indicates that the connector supports the EXCEPT of two queries.
|
boolean |
supportsFormatLiteral(String literal,
ExecutionFactory.Format format) |
boolean |
supportsFunctionsInGroupBy()
Support indicates that the connector supports non-column expressions in GROUP BY, such as:
SELECT dayofmonth(theDate), COUNT(*) FROM table GROUP BY dayofmonth(theDate) |
boolean |
supportsInlineViews()
This is true only after Postgre version 7.1
However, since version 7 was released in 2000 we'll assume a post 7 instance.
|
boolean |
supportsIntersect()
Support indicates that the connector supports the INTERSECT of two queries.
|
boolean |
supportsIsDistinctCriteria()
Support indicates connector accepts criteria of form (exp1 IS DISTINCT exp2)
|
boolean |
supportsLateralJoin() |
boolean |
supportsLikeRegex() |
boolean |
supportsOnlyFormatLiterals()
|
boolean |
supportsOrderByNullOrdering()
Returns whether the database supports explicit null ordering.
|
boolean |
supportsRecursiveCommonTableExpressions() |
boolean |
supportsRowLimit()
Gets whether the connector can limit the number of rows returned by a query.
|
boolean |
supportsRowOffset()
Gets whether the connector supports a SQL clause (similar to the LIMIT with an offset) that can return
result sets that start in the middle of the resulting rows returned by a query
|
boolean |
supportsSelectWithoutFrom() |
boolean |
supportsSimilarTo() |
boolean |
supportsStringAgg() |
boolean |
supportsWindowDistinctAggregates() |
List<?> |
translate(LanguageObject obj,
ExecutionContext context)
Postgres doesn't provide min/max(boolean), so this conversion writes a min(BooleanValue) as
bool_and(BooleanValue)
|
Expression |
translateGeometrySelect(Expression expr)
Translate GEOMETRY column reference into an expression that
will return SRID & WKB.
|
List<?> |
translateLimit(Limit limit,
ExecutionContext context)
Return a List of translated parts (
LanguageObject s and Objects), or null
if to rely on the default translation. |
String |
translateLiteralBinaryType(BinaryType obj)
Subclasses should override this method to provide a different sql translation
of the literal varbinary value.
|
String |
translateLiteralBoolean(Boolean booleanValue)
Subclasses should override this method to provide a different sql translation
of the literal boolean value.
|
String |
translateLiteralDate(Date dateValue)
Subclasses should override this method to provide a different sql translation
of the literal date value.
|
String |
translateLiteralTime(Time timeValue)
Subclasses should override this method to provide a different sql translation
of the literal time value.
|
String |
translateLiteralTimestamp(Timestamp timestampValue)
Subclasses should override this method to provide a different sql translation
of the literal timestamp value.
|
protected boolean |
usesDatabaseVersion() |
boolean |
useStreamsForLobs()
If streams should be used for Blob/Clob sets on
PreparedStatement s |
addSourceComment, afterInitialConnectionObtained, closeConnection, convertObject, createDirectExecution, createMetadataProcessor, createProcedureExecution, createResultSetExecution, createTempTable, createUpdateExecution, executeStoredProcedure, formatDateValue, formatDateValue, getCommentFormat, getConnection, getCreateTemporaryTableString, getCreateTempTableSQL, getDatabaseCalendar, getDatabaseTimeZone, getDatabaseVersion, getDefaultSupportedFunctions, getDialect, getFunctionModifiers, getLateralKeyword, getLikeRegexString, getMaxPreparedInsertBatchSize, getMetadata, getSetOperationString, getSourceComment, getStructRetrieval, getTemporaryTableName, getVersion, hasTimeType, intializeConnectionAfterCancel, isEnableDependentJoins, isSourceRequired, isSourceRequiredForCapabilities, isTrimStrings, obtainedConnection, parseName, registerFunctionModifier, registerSpecificTypeOfOutParameter, replaceElementName, retrieveGeometryValue, retrieveValue, retrieveValue, setCommentFormat, setDatabaseTimeZone, setDatabaseVersion, setDatabaseVersion, setEnableDependentJoins, setFetchSize, setMaxPreparedInsertBatchSize, setStructRetrieval, setTrimStrings, setUseBindingsForDependentJoin, setUseBindVariables, setUseCommentsInSourceQuery, supportsAggregatesAvg, supportsAggregatesCount, supportsAggregatesCountStar, supportsAggregatesDistinct, supportsAggregatesMax, supportsAggregatesMin, supportsAggregatesSum, supportsAliasedTable, supportsBatchedUpdates, supportsBooleanExpressions, supportsBulkUpdate, supportsCompareCriteriaEquals, supportsCompareCriteriaOrdered, supportsCorrelatedSubqueries, supportsDependentJoins, supportsExistsCriteria, supportsFullDependentJoins, supportsGeneratedKeys, supportsGeneratedKeys, supportsGroupBy, supportsHaving, supportsInCriteria, supportsInCriteriaSubquery, supportsInsertWithQueryExpression, supportsIsNullCriteria, supportsLikeCriteria, supportsLikeCriteriaEscapeCharacter, supportsNotCriteria, supportsOrCriteria, supportsOrderByUnrelated, supportsQuantifiedCompareCriteriaAll, supportsQuantifiedCompareCriteriaSome, supportsScalarSubqueries, supportsSearchedCaseExpressions, supportsSelectExpression, supportsSelfJoins, supportsSetQueryOrderBy, supportsUnions, tempTableRequiresTransaction, translateCommand, translateGeometryLiteral, translateGeometryParameter, useAsInGroupAlias, useBindingsForDependentJoin, useBindVariables, useColumnNamesForGeneratedKeys, useCommentsInSourceQuery, useParensForJoins, useParensForSetQueries, usePreparedStatements, useScientificNotation, useSelectLimit, useUnicodePrefix, useWithRollup
addPushDownFunction, areLobsUsableAfterClose, createExecution, getCacheDirective, getCollationLocale, getConnection, getDirectQueryProcedureName, getExcludedCommonTableExpressionName, getInstance, getLanguageFactory, getMaxDependentInPredicates, getMaxFromGroups, getMaxInCriteriaSize, getNativeQueryProcedureName, getPushDownFunctions, getRequiredLikeEscape, getSupportedJoinCriteria, getTransactionSupport, getTypeFacility, isCopyLobs, isForkable, isImmutable, isSourceRequiredForMetadata, isThreadBound, requiresCriteria, returnsSingleUpdateCount, setCollationLocale, setCopyLobs, setDirectQueryProcedureName, setExcludedCommonTableExpressionName, setImmutable, setMaxDependentInPredicates, setMaxInCriteriaSize, setNativeQueryProcedureName, setRequiresCriteria, setSourceRequired, setSourceRequiredForMetadata, setSupportedJoinCriteria, setSupportsDirectQueryProcedure, setSupportsFullOuterJoins, setSupportsInnerJoins, setSupportsNativeQueries, setSupportsOrderBy, setSupportsOuterJoins, setSupportsSelectDistinct, setThreadBound, setTransactionSupport, supportsAdvancedOlapOperations, supportsCompareCriteriaOrderedExclusive, supportsConvert, supportsCorrelatedSubqueryLimit, supportsDirectQueryProcedure, supportsFullOuterJoins, supportsGroupByMultipleDistinctAggregates, supportsGroupByRollup, supportsInnerJoins, supportsLateralJoinCondition, supportsNativeQueries, supportsOnlyCorrelatedSubqueries, supportsOnlyLiteralComparison, supportsOnlySingleTableGroupBy, supportsOrderBy, supportsOrderByWithExtendedGrouping, supportsOuterJoins, supportsPartialFiltering, supportsProcedureTable, supportsScalarSubqueryProjection, supportsSelectDistinct, supportsSelectExpressionArrayType, supportsSetQueryLimitOffset, supportsSubqueryCommonTableExpressions, supportsSubqueryInOn, supportsUpsert, supportsWindowOrderByWithAggregates, useAnsiJoin
public static final Version EIGHT_0
public static final Version EIGHT_1
public static final Version EIGHT_2
public static final Version EIGHT_3
public static final Version EIGHT_4
public static final Version NINE_0
public static final Version NINE_3
protected OracleFormatFunctionModifier parseModifier
public static final Version ONE_3
public static final Version ONE_4
public static final Version ONE_5
public static final Version TWO_0
public Object convertToken(String group)
group
- public void start() throws TranslatorException
ExecutionFactory
start
in class JDBCExecutionFactory
TranslatorException
public void initCapabilities(Connection connection) throws TranslatorException
ExecutionFactory
ExecutionFactory.start()
with a null connection if a source connection is not ExecutionFactory.isSourceRequiredForCapabilities()
initCapabilities
in class JDBCExecutionFactory
TranslatorException
public String translateLiteralBoolean(Boolean booleanValue)
JDBCExecutionFactory
'0'
or '1'
.translateLiteralBoolean
in class JDBCExecutionFactory
booleanValue
- Boolean value, never nullpublic String translateLiteralDate(Date dateValue)
JDBCExecutionFactory
{d '2002-12-31'}
translateLiteralDate
in class JDBCExecutionFactory
dateValue
- Date value, never nullpublic String translateLiteralTime(Time timeValue)
JDBCExecutionFactory
{t '23:59:59'}
See JDBCExecutionFactory.hasTimeType()
to represent literal times as timestamps.translateLiteralTime
in class JDBCExecutionFactory
timeValue
- Time value, never nullpublic String translateLiteralTimestamp(Timestamp timestampValue)
JDBCExecutionFactory
{ts '2002-12-31 23:59:59'}
.
See JDBCExecutionFactory.getTimestampNanoPrecision()
to control the literal
precision.translateLiteralTimestamp
in class JDBCExecutionFactory
timestampValue
- Timestamp value, never nullpublic int getTimestampNanoPrecision()
JDBCExecutionFactory
getTimestampNanoPrecision
in class JDBCExecutionFactory
public List<?> translateLimit(Limit limit, ExecutionContext context)
JDBCExecutionFactory
LanguageObject
s and Objects), or null
if to rely on the default translation.translateLimit
in class JDBCExecutionFactory
public List<?> translate(LanguageObject obj, ExecutionContext context)
translate
in class JDBCExecutionFactory
LanguageObjectVisitor.visit(org.teiid.language.AggregateFunction)
public static List<Object> addDefaultEscape(Like like)
like
- public ExecutionFactory.NullOrder getDefaultNullOrder()
ExecutionFactory
getDefaultNullOrder
in class JDBCExecutionFactory
ExecutionFactory.NullOrder
public boolean supportsOrderByNullOrdering()
ExecutionFactory
supportsOrderByNullOrdering
in class ExecutionFactory<DataSource,Connection>
public List<String> getSupportedFunctions()
ExecutionFactory
getSupportedFunctions
in class JDBCExecutionFactory
for a listing of system pushdown functions. Note that
not all system functions are listed as some functions will use a common name
such as CONCAT vs. the || operator, and other functions will be rewritten and
not pushed down, such as SPACE.
Note: User defined functions should be specified fully qualified.
public boolean supportsInlineViews()
supportsInlineViews
in class JDBCExecutionFactory
public boolean supportsRowLimit()
ExecutionFactory
supportsRowLimit
in class ExecutionFactory<DataSource,Connection>
public boolean supportsRowOffset()
ExecutionFactory
supportsRowOffset
in class ExecutionFactory<DataSource,Connection>
public boolean supportsExcept()
ExecutionFactory
supportsExcept
in class ExecutionFactory<DataSource,Connection>
public boolean supportsIntersect()
ExecutionFactory
supportsIntersect
in class ExecutionFactory<DataSource,Connection>
public boolean supportsAggregatesEnhancedNumeric()
ExecutionFactory
supportsAggregatesEnhancedNumeric
in class ExecutionFactory<DataSource,Connection>
public boolean supportsCommonTableExpressions()
supportsCommonTableExpressions
in class ExecutionFactory<DataSource,Connection>
public boolean supportsRecursiveCommonTableExpressions()
supportsRecursiveCommonTableExpressions
in class ExecutionFactory<DataSource,Connection>
public boolean supportsArrayAgg()
supportsArrayAgg
in class ExecutionFactory<DataSource,Connection>
public boolean supportsElementaryOlapOperations()
supportsElementaryOlapOperations
in class ExecutionFactory<DataSource,Connection>
public boolean supportsWindowDistinctAggregates()
supportsWindowDistinctAggregates
in class ExecutionFactory<DataSource,Connection>
public boolean supportsSimilarTo()
supportsSimilarTo
in class ExecutionFactory<DataSource,Connection>
public boolean supportsLikeRegex()
supportsLikeRegex
in class ExecutionFactory<DataSource,Connection>
public boolean supportsOnlyFormatLiterals()
ExecutionFactory
supportsOnlyFormatLiterals
in class ExecutionFactory<DataSource,Connection>
public boolean supportsFormatLiteral(String literal, ExecutionFactory.Format format)
supportsFormatLiteral
in class ExecutionFactory<DataSource,Connection>
public boolean supportsArrayType()
ExecutionFactory
supportsArrayType
in class ExecutionFactory<DataSource,Connection>
protected boolean usesDatabaseVersion()
usesDatabaseVersion
in class JDBCExecutionFactory
public boolean supportsStringAgg()
supportsStringAgg
in class ExecutionFactory<DataSource,Connection>
public boolean supportsSelectWithoutFrom()
supportsSelectWithoutFrom
in class ExecutionFactory<DataSource,Connection>
public String getHibernateDialectClassName()
getHibernateDialectClassName
in class JDBCExecutionFactory
public String getCreateTemporaryTablePostfix(boolean inTransaction)
getCreateTemporaryTablePostfix
in class JDBCExecutionFactory
public void loadedTemporaryTable(String tableName, ExecutionContext context, Connection connection) throws SQLException
loadedTemporaryTable
in class JDBCExecutionFactory
SQLException
public SQLConversionVisitor getSQLConversionVisitor()
JDBCExecutionFactory
SQLConversionVisitor
that will perform translation. Typical custom
JDBC connectors will not need to create custom conversion visitors, rather implementors
should override existing JDBCExecutionFactory
methods.getSQLConversionVisitor
in class JDBCExecutionFactory
SQLConversionVisitor
public void setPostGisVersion(String postGisVersion)
@TranslatorProperty(display="PostGIS Version", description="The version of the PostGIS extension.", advanced=true) public String getPostGisVersion()
@TranslatorProperty(display="Proj support enabled", description="If PostGIS Proj support is enabled for ST_TRANSFORM", advanced=true) public boolean isProjSupported()
public void setProjSupported(boolean projSupported)
public MetadataProcessor<Connection> getMetadataProcessor()
ExecutionFactory
getMetadataProcessor
in class JDBCExecutionFactory
public Expression translateGeometrySelect(Expression expr)
JDBCExecutionFactory
translateGeometrySelect
in class JDBCExecutionFactory
public Object retrieveGeometryValue(ResultSet results, int paramIndex) throws SQLException
retrieveGeometryValue
in class JDBCExecutionFactory
SQLException
public boolean useStreamsForLobs()
JDBCExecutionFactory
PreparedStatement
suseStreamsForLobs
in class JDBCExecutionFactory
public String translateLiteralBinaryType(BinaryType obj)
JDBCExecutionFactory
X'hex value'
translateLiteralBinaryType
in class JDBCExecutionFactory
obj
- value, never nullpublic boolean supportsLateralJoin()
supportsLateralJoin
in class ExecutionFactory<DataSource,Connection>
public void bindValue(PreparedStatement stmt, Object param, Class<?> paramType, int i) throws SQLException
JDBCExecutionFactory
bindValue
in class JDBCExecutionFactory
SQLException
public boolean supportsIsDistinctCriteria()
ExecutionFactory
supportsIsDistinctCriteria
in class ExecutionFactory<DataSource,Connection>
public boolean supportsFunctionsInGroupBy()
ExecutionFactory
Support indicates that the connector supports non-column expressions in GROUP BY, such as:
SELECT dayofmonth(theDate), COUNT(*) FROM table GROUP BY dayofmonth(theDate)
supportsFunctionsInGroupBy
in class ExecutionFactory<DataSource,Connection>
Copyright © 2018 JBoss by Red Hat. All rights reserved.