public abstract class AbstractDbEngine extends java.lang.Object implements DbEngine
DbEngine
methods. Subclasses only needs to override methods which behave differently.Modifier and Type | Field and Description |
---|---|
private static java.util.regex.Pattern |
valid
A regexp checking for invalid characters.
|
Constructor and Description |
---|
AbstractDbEngine()
Create AbstractDbEngine.
|
Modifier and Type | Method and Description |
---|---|
java.lang.String |
abs(java.lang.String value)
Return
ABS(<value>) . |
java.lang.String |
castToDate(java.lang.String value)
Get a function that casts a date/timestamp to a date (eg. no time
should be included in the result).
|
boolean |
checkForInvalidNumberOperation()
Returns FALSE.
|
boolean |
dropForeignKeysUsedInIndex()
When dropping an index, must foreign keys that uses the same columns also be
dropped (before dropping the index)?
|
java.lang.String |
exp(java.lang.String value)
Return
EXP(<value>) . |
java.lang.String |
getApproximateRowCountSql(java.lang.String catalog,
java.lang.String schema,
java.lang.String table)
Get an SQL statement that returns an approximate count for the number
of rows in the given table.
|
java.lang.String |
getCaseSensitiveVarchar(int length)
Return null.
|
java.lang.String |
getCatalogName(java.lang.String catalog,
java.lang.String schema)
Return the catalog name.
|
java.lang.String |
getCreatePartialIndexSql(java.lang.String catalog,
java.lang.String schema,
java.lang.String table,
java.lang.String name,
java.util.Set<java.lang.String> columns,
java.lang.String condition)
Default implementation returns a regular non-unique index.
|
int |
getMaxParametersInQuery()
Returns 10000.
|
java.lang.String |
getQuotedName(java.lang.String name)
Put quotes (") around the name.
|
java.lang.String |
getSchemaName(java.lang.String catalog,
java.lang.String schema)
Return the schema name.
|
java.lang.String |
inspectSchemaGenerationSQL(java.lang.String sql,
Dialect dialect,
SchemaGenerator.Mode mode)
Skip all "create index ..." statements.
|
boolean |
isValidColumnName(java.lang.String columnName)
Checks that the name only contains the following characters: a-zA-Z0-9_
It must also start with a letter or underscore.
|
protected boolean |
isValidName(java.lang.String name)
Check that the name only contains a-zA-Z0-9_ and starts with
a letter or underscore.
|
boolean |
isValidTableName(java.lang.String tableName)
Checks that the name only contains the following characters: a-zA-Z0-9_
It must also start with a letter or underscore.
|
java.lang.String |
ln(java.lang.String value)
Return
LN(<value>) . |
java.lang.String |
makeSafeCreateTable(java.lang.String sql,
java.lang.String catalog,
java.lang.String schema,
java.lang.String table)
Return the SQL unmodified.
|
java.lang.String |
power(java.lang.String base,
java.lang.String exponent)
Return
POWER(<base>, <exponent>) . |
java.lang.String |
rlike(java.lang.String value,
java.lang.String regexp)
Return
<value> = <regexp> |
boolean |
selectOrderByColumnsIfDistinct()
Returns FALSE.
|
boolean |
supportColumnAliasInGroupBy()
Returns FALSE.
|
boolean |
supportColumnAliasInHaving()
Returns FALSE.
|
boolean |
supportColumnAliasInOrderBy()
Returns FALSE.
|
boolean |
supportsColumnAliasInWhere()
Returns FALSE.
|
boolean |
useSavePointToContinueTransactionFromSqlFailure()
If the underlying database need to create a savepoint before executing
an SQL statement that results in an error in order to be able to
continue using the same transaction for other SQL queries.
|
boolean |
useThetaJoin()
Most databases doesn't.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
analyzeAfterBatchOperation, caseInsensitiveComparison, getAnalyzeTableSql, getCreateForeignKeySql, getCreateIndexSql, getCreatePrimaryKeySql, getCreateSchemaSql, getDropForeignKeySql, getDropIndexSql, getDropPrimaryKey, getInsertAutoIncrementSql, getOptimizeTableSql
private static final java.util.regex.Pattern valid
public java.lang.String getCatalogName(java.lang.String catalog, java.lang.String schema)
getCatalogName
in interface DbEngine
catalog
- The catalog name (always not null)schema
- The schema name (always not null)public java.lang.String getSchemaName(java.lang.String catalog, java.lang.String schema)
getSchemaName
in interface DbEngine
catalog
- The catalog name (always not null)schema
- The schema name (always not null)public boolean dropForeignKeysUsedInIndex()
DbEngine
dropForeignKeysUsedInIndex
in interface DbEngine
public java.lang.String getCreatePartialIndexSql(java.lang.String catalog, java.lang.String schema, java.lang.String table, java.lang.String name, java.util.Set<java.lang.String> columns, java.lang.String condition)
getCreatePartialIndexSql
in interface DbEngine
catalog
- The name of the catalog (database) where the table is
located, or null if it is located in the current catalogschema
- The name of the schema where the table is located, or
null if is located in the current schematable
- The name of the tablename
- The name of the index to be createdcolumns
- The name of the columns in the indexcondition
- The condition that specifies which rows to include in the index.
Use '[' and ']' as placeholders for the open/close quote of the current dialect.public java.lang.String makeSafeCreateTable(java.lang.String sql, java.lang.String catalog, java.lang.String schema, java.lang.String table)
makeSafeCreateTable
in interface DbEngine
sql
- The original SQLcatalog
- The name of the catalog (database) where the table is
being create, or null if it is located in the current catalogschema
- The name of the schema where the table is being created, or
null if is located in the current schematable
- The name of the table that is being createdpublic boolean useThetaJoin()
useThetaJoin
in interface DbEngine
public boolean supportsColumnAliasInWhere()
supportsColumnAliasInWhere
in interface DbEngine
public boolean supportColumnAliasInOrderBy()
supportColumnAliasInOrderBy
in interface DbEngine
public boolean supportColumnAliasInGroupBy()
supportColumnAliasInGroupBy
in interface DbEngine
public boolean supportColumnAliasInHaving()
supportColumnAliasInHaving
in interface DbEngine
public boolean checkForInvalidNumberOperation()
checkForInvalidNumberOperation
in interface DbEngine
public boolean selectOrderByColumnsIfDistinct()
selectOrderByColumnsIfDistinct
in interface DbEngine
public int getMaxParametersInQuery()
getMaxParametersInQuery
in interface DbEngine
public java.lang.String ln(java.lang.String value)
LN(<value>)
.public java.lang.String abs(java.lang.String value)
ABS(<value>)
.public java.lang.String exp(java.lang.String value)
EXP(<value>)
.public java.lang.String power(java.lang.String base, java.lang.String exponent)
POWER(<base>, <exponent>)
.public java.lang.String rlike(java.lang.String value, java.lang.String regexp)
<value> = <regexp>
public boolean isValidTableName(java.lang.String tableName)
isValidTableName
in interface DbEngine
tableName
- The string to checkpublic boolean isValidColumnName(java.lang.String columnName)
isValidColumnName
in interface DbEngine
columnName
- The string to checkpublic java.lang.String getCaseSensitiveVarchar(int length)
getCaseSensitiveVarchar
in interface DbEngine
length
- The maximum length that needs to be stored in the columnpublic java.lang.String castToDate(java.lang.String value)
DbEngine
castToDate
in interface DbEngine
value
- The value to castpublic java.lang.String inspectSchemaGenerationSQL(java.lang.String sql, Dialect dialect, SchemaGenerator.Mode mode)
inspectSchemaGenerationSQL
in interface DbEngine
sql
- The original SQL statment as generated by Hibernatedialect
- The Hibernate dialect currently in usemode
- The installation modepublic java.lang.String getQuotedName(java.lang.String name)
getQuotedName
in interface DbEngine
name
- The name of an object in the databasepublic boolean useSavePointToContinueTransactionFromSqlFailure()
DbEngine
useSavePointToContinueTransactionFromSqlFailure
in interface DbEngine
public java.lang.String getApproximateRowCountSql(java.lang.String catalog, java.lang.String schema, java.lang.String table)
DbEngine
getApproximateRowCountSql
in interface DbEngine
catalog
- The name of the catalog (database) where the table is
located, or null if it is located in the current catalogschema
- The name of the schema where the table is located, or
null if is located in the current schematable
- The name of the tableprotected boolean isValidName(java.lang.String name)