public class PostgresqlSqlDialect extends SqlDialect
SqlDialect implementation for the PostgreSQL database.SqlDialect.CalendarPolicy, SqlDialect.Context, SqlDialect.DatabaseProduct, SqlDialect.FakeUtil| Modifier and Type | Field and Description |
|---|---|
static SqlDialect |
DEFAULT |
static SqlDialect.Context |
DEFAULT_CONTEXT |
static RelDataTypeSystem |
POSTGRESQL_TYPE_SYSTEM
PostgreSQL type system.
|
BUILT_IN_OPERATORS_LIST, EMPTY_CONTEXT, identifierEndQuoteString, identifierEscapedQuote, identifierQuoteString, literalEndQuoteString, literalEscapedQuote, literalQuoteString, LOGGER, nullCollation| Constructor and Description |
|---|
PostgresqlSqlDialect(SqlDialect.Context context)
Creates a PostgresqlSqlDialect.
|
| Modifier and Type | Method and Description |
|---|---|
@Nullable SqlNode |
getCastSpec(RelDataType type)
Returns SqlNode for type in "cast(column as type)", which might be
different between databases by type name, precision etc.
|
boolean |
requiresAliasForFromItems()
Whether a sub-query in the FROM clause must have an alias.
|
boolean |
supportsCharSet()
Returns whether the dialect supports character set names as part of a
data type, for instance
VARCHAR(30) CHARACTER SET `ISO-8859-1`. |
boolean |
supportsFunction(SqlOperator operator,
RelDataType type,
List<RelDataType> paramTypes)
Returns whether this dialect supports a given function or operator.
|
boolean |
supportsGroupByLiteral()
Returns whether the dialect supports GROUP BY literals.
|
boolean |
supportsNestedAggregations()
Returns whether the dialect supports nested aggregations, for instance
SELECT SUM(SUM(1)) . |
void |
unparseCall(SqlWriter writer,
SqlCall call,
int leftPrec,
int rightPrec) |
allowsAs, configureParser, configureParser, containsNonAscii, create, defaultNullDirection, emulateJoinTypeForCrossJoin, emulateNullDirection, emulateNullDirectionWithIsNull, getCalendarPolicy, getConformance, getDatabaseProduct, getNullCollation, getProduct, getQuotedCasing, getQuoting, getSingleRowTableName, getTypeSystem, getUnquotedCasing, hasImplicitTableAlias, identifierNeedsQuote, isCaseSensitive, quoteIdentifier, quoteIdentifier, quoteIdentifier, quoteStringLiteral, quoteStringLiteral, quoteStringLiteralUnicode, quoteTimestampLiteral, rewriteSingleValueExpr, supportsAggregateFunction, supportsAggregateFunctionFilter, supportsAliasedValues, supportsApproxCountDistinct, supportsDataType, supportsGroupByWithCube, supportsGroupByWithRollup, supportsImplicitTypeCoercion, supportsJoinType, supportsOffsetFetch, supportsWindowFunctions, unparseDateTimeLiteral, unparseFetchUsingAnsi, unparseFetchUsingLimit, unparseLimit, unparseOffset, unparseOffsetFetch, unparseSqlDatetimeArithmetic, unparseSqlIntervalLiteral, unparseSqlIntervalQualifier, unparseTableScanHints, unparseTopN, unquoteStringLiteralpublic static final RelDataTypeSystem POSTGRESQL_TYPE_SYSTEM
public static final SqlDialect.Context DEFAULT_CONTEXT
public static final SqlDialect DEFAULT
public PostgresqlSqlDialect(SqlDialect.Context context)
public boolean supportsCharSet()
SqlDialectVARCHAR(30) CHARACTER SET `ISO-8859-1`.supportsCharSet in class SqlDialectpublic @Nullable SqlNode getCastSpec(RelDataType type)
SqlDialectIf this method returns null, the cast will be omitted. In the default
implementation, this is the case for the NULL type, and therefore
CAST(NULL AS <nulltype>) is rendered as NULL.
getCastSpec in class SqlDialectpublic boolean supportsFunction(SqlOperator operator, RelDataType type, List<RelDataType> paramTypes)
SqlDialectsupportsFunction in class SqlDialectpublic boolean requiresAliasForFromItems()
SqlDialectFor example, in PostgreSQL, this query is legal:
SELECT * FROM (SELECT * FROM Emp) As e
but remove the alias e and it is not:
SELECT * FROM (SELECT * FROM Emp)
In Oracle, both queries are legal.
requiresAliasForFromItems in class SqlDialectpublic boolean supportsNestedAggregations()
SqlDialectSELECT SUM(SUM(1)) .supportsNestedAggregations in class SqlDialectpublic void unparseCall(SqlWriter writer, SqlCall call, int leftPrec, int rightPrec)
unparseCall in class SqlDialectpublic boolean supportsGroupByLiteral()
SqlDialectFor instance, in SqlDialect.DatabaseProduct.REDSHIFT, the following queries are illegal.
select avg(salary)
from emp
group by true
select avg(salary)
from emp
group by 'a', DATE '2022-01-01'
supportsGroupByLiteral in class SqlDialectCopyright © 2012-2022 Apache Software Foundation. All Rights Reserved.