Class ClickHouseSqlBuilder
- Namespace
- LinqToDB.Internal.DataProvider.ClickHouse
- Assembly
- linq2db.dll
public class ClickHouseSqlBuilder : BasicSqlBuilder, ISqlBuilder
- Inheritance
-
objectClickHouseSqlBuilder
- Implements
- Inherited Members
- Extension Methods
Constructors
ClickHouseSqlBuilder(IDataProvider?, MappingSchema, DataOptions, ISqlOptimizer, SqlProviderFlags)
public ClickHouseSqlBuilder(IDataProvider? provider, MappingSchema mappingSchema, DataOptions dataOptions, ISqlOptimizer sqlOptimizer, SqlProviderFlags sqlProviderFlags)
Parameters
providerIDataProvidermappingSchemaMappingSchemadataOptionsDataOptionssqlOptimizerISqlOptimizersqlProviderFlagsSqlProviderFlags
Properties
ConcatFunctionName
Function name used when ConcatStyle is Function.
Defaults to CONCAT; override e.g. for ClickHouse's lowercase concat.
protected override string ConcatFunctionName { get; }
Property Value
ConcatStyle
SQL-emit shape for SqlConcatExpression. Defaults to Plus; override per provider.
protected override BasicSqlBuilder.ConcatBuildStyle ConcatStyle { get; }
Property Value
IsCteColumnListSupported
protected override bool IsCteColumnListSupported { get; }
Property Value
IsRecursiveCteKeywordRequired
protected override bool IsRecursiveCteKeywordRequired { get; }
Property Value
IsValuesSyntaxSupported
If true, provider supports list of VALUES as a source element of merge command.
protected override bool IsValuesSyntaxSupported { get; }
Property Value
SupportsColumnAliasesInSource
If true, provider supports column aliases specification after table alias. E.g. as table_alias (column_alias1, column_alias2).
protected override bool SupportsColumnAliasesInSource { get; }
Property Value
SupportsMaterializedCteHint
Providers that understand WITH cte AS MATERIALIZED (...) override this to
true. Currently: PostgreSQL 12+, SQLite 3.35+, ClickHouse 26.3+.
protected override bool SupportsMaterializedCteHint { get; }
Property Value
SupportsNotMaterializedCteHint
Providers that understand WITH cte AS NOT MATERIALIZED (...) override this to
true. Defaults to SupportsMaterializedCteHint because most
engines support both polarities; ClickHouse is an exception (no NOT MATERIALIZED).
protected override bool SupportsNotMaterializedCteHint { get; }
Property Value
UpdateKeyword
protected override string UpdateKeyword { get; }
Property Value
UpdateSetKeyword
protected override string UpdateSetKeyword { get; }
Property Value
Methods
BuildAlterDeleteClause(SqlDeleteStatement)
protected override void BuildAlterDeleteClause(SqlDeleteStatement deleteStatement)
Parameters
deleteStatementSqlDeleteStatement
BuildColumnExpression(SelectQuery?, ISqlExpression, string?, ref bool)
protected override void BuildColumnExpression(SelectQuery? selectQuery, ISqlExpression expr, string? alias, ref bool addAlias)
Parameters
selectQuerySelectQueryexprISqlExpressionaliasstringaddAliasbool
BuildCreateTableCommand(SqlTable)
protected override void BuildCreateTableCommand(SqlTable table)
Parameters
tableSqlTable
BuildCreateTableNullAttribute(SqlField, DefaultNullable)
protected override void BuildCreateTableNullAttribute(SqlField field, DefaultNullable defaultNullable)
Parameters
fieldSqlFielddefaultNullableDefaultNullable
BuildCreateTablePrimaryKey(SqlCreateTableStatement, string, IEnumerable<string>)
protected override void BuildCreateTablePrimaryKey(SqlCreateTableStatement createTable, string pkName, IEnumerable<string> fieldNames)
Parameters
createTableSqlCreateTableStatementpkNamestringfieldNamesIEnumerable<string>
BuildCteBody(SelectQuery)
protected override void BuildCteBody(SelectQuery selectQuery)
Parameters
selectQuerySelectQuery
BuildDataTypeFromDataType(DbDataType, bool, bool)
protected override void BuildDataTypeFromDataType(DbDataType type, bool forCreateTable, bool canBeNull)
Parameters
typeDbDataTypeforCreateTableboolcanBeNullboolType could store
NULLvalues (could be used for column table type generation or for databases with explicit typee nullability like ClickHouse).
BuildDeleteClause(SqlDeleteStatement)
protected override void BuildDeleteClause(SqlDeleteStatement deleteStatement)
Parameters
deleteStatementSqlDeleteStatement
BuildDeleteFromClause(SqlDeleteStatement)
protected override void BuildDeleteFromClause(SqlDeleteStatement deleteStatement)
Parameters
deleteStatementSqlDeleteStatement
BuildDeleteQuery(SqlDeleteStatement)
protected override void BuildDeleteQuery(SqlDeleteStatement deleteStatement)
Parameters
deleteStatementSqlDeleteStatement
BuildDropTableStatement(SqlDropTableStatement)
protected override void BuildDropTableStatement(SqlDropTableStatement dropTable)
Parameters
dropTableSqlDropTableStatement
BuildEndCreateTableStatement(SqlCreateTableStatement)
protected override void BuildEndCreateTableStatement(SqlCreateTableStatement createTable)
Parameters
createTableSqlCreateTableStatement
BuildFieldTableAlias(SqlField)
Used to disable field table name (alias) generation.
protected override bool BuildFieldTableAlias(SqlField field)
Parameters
fieldSqlField
Returns
BuildInsertQuery(SqlStatement, SqlInsertClause, bool)
protected override void BuildInsertQuery(SqlStatement statement, SqlInsertClause insertClause, bool addAlias)
Parameters
statementSqlStatementinsertClauseSqlInsertClauseaddAliasbool
BuildIsDistinctPredicate(IsDistinct)
protected override void BuildIsDistinctPredicate(SqlPredicate.IsDistinct expr)
Parameters
exprSqlPredicate.IsDistinct
BuildJoinType(SqlJoinedTable, SqlSearchCondition)
protected override bool BuildJoinType(SqlJoinedTable join, SqlSearchCondition condition)
Parameters
joinSqlJoinedTableconditionSqlSearchCondition
Returns
BuildMergeStatement(SqlMergeStatement)
protected override void BuildMergeStatement(SqlMergeStatement merge)
Parameters
mergeSqlMergeStatement
BuildObjectName(StringBuilder, SqlObjectName, ConvertType, bool, TableOptions, bool)
Writes database object name into provided StringBuilder instance.
public override StringBuilder BuildObjectName(StringBuilder sb, SqlObjectName name, ConvertType objectType = ConvertType.NameToQueryTable, bool escape = true, TableOptions tableOptions = TableOptions.NotSet, bool withoutSuffix = false)
Parameters
sbStringBuilderString builder for generated object name.
nameSqlObjectNameName of database object (e.g. table, view, procedure or function).
objectTypeConvertTypeType of database object, used to select proper name converter.
escapeboolIf true, apply required escaping to name components. Must be true except rare cases when escaping is not needed.
tableOptionsTableOptionsTable options if called for table. Used to properly generate names for temporary tables.
withoutSuffixboolIf object name have suffix, which could be detached from main name, this parameter disables suffix generation (enables generation of only main name part).
Returns
- StringBuilder
sbparameter value.
BuildOffsetLimit(SelectQuery)
protected override void BuildOffsetLimit(SelectQuery selectQuery)
Parameters
selectQuerySelectQuery
BuildParameter(SqlParameter)
protected override void BuildParameter(SqlParameter parameter)
Parameters
parameterSqlParameter
BuildQueryExtensions(SqlStatement)
protected override void BuildQueryExtensions(SqlStatement statement)
Parameters
statementSqlStatement
BuildSetOperation(SetOperation, StringBuilder)
protected override void BuildSetOperation(SetOperation operation, StringBuilder sb)
Parameters
operationSetOperationsbStringBuilder
BuildTableExtensions(SqlTable, string)
protected override void BuildTableExtensions(SqlTable table, string alias)
Parameters
BuildTruncateTable(SqlTruncateTableStatement)
protected override void BuildTruncateTable(SqlTruncateTableStatement truncateTable)
Parameters
truncateTableSqlTruncateTableStatement
BuildTypedExpression(DbDataType, ISqlExpression)
protected override void BuildTypedExpression(DbDataType dataType, ISqlExpression value)
Parameters
dataTypeDbDataTypevalueISqlExpression
BuildUpdateQuery(SqlStatement, SelectQuery, SqlUpdateClause)
protected override void BuildUpdateQuery(SqlStatement statement, SelectQuery selectQuery, SqlUpdateClause updateClause)
Parameters
statementSqlStatementselectQuerySelectQueryupdateClauseSqlUpdateClause
BuildUpdateTableName(SelectQuery, SqlUpdateClause)
protected override void BuildUpdateTableName(SelectQuery selectQuery, SqlUpdateClause updateClause)
Parameters
selectQuerySelectQueryupdateClauseSqlUpdateClause
BuildUpdateWhereClause(SelectQuery)
protected override void BuildUpdateWhereClause(SelectQuery selectQuery)
Parameters
selectQuerySelectQuery
CanSkipRootAliases(SqlStatement)
protected override bool CanSkipRootAliases(SqlStatement statement)
Parameters
statementSqlStatement
Returns
Convert(StringBuilder, string, ConvertType)
public override StringBuilder Convert(StringBuilder sb, string value, ConvertType convertType)
Parameters
sbStringBuildervaluestringconvertTypeConvertType
Returns
CreateSqlBuilder()
protected override ISqlBuilder CreateSqlBuilder()
Returns
WindowFunctionRespectNullsRequired(SqlExtendedFunction)
When true for the given function, that value window function defaults to IGNORE NULLS on
this provider, so an explicit RESPECT NULLS token must be emitted for null-respecting behavior (e.g.
ClickHouse FIRST_VALUE/LAST_VALUE/NTH_VALUE). Most providers default to RESPECT NULLS, so the token is
omitted; functions that reject the token (e.g. ClickHouse LEAD/LAG) must return false.
protected override bool WindowFunctionRespectNullsRequired(SqlExtendedFunction extendedFunction)
Parameters
extendedFunctionSqlExtendedFunction