Table of Contents

Class ClickHouseSqlBuilder

Namespace
LinqToDB.Internal.DataProvider.ClickHouse
Assembly
linq2db.dll
public class ClickHouseSqlBuilder : BasicSqlBuilder, ISqlBuilder
Inheritance
object
ClickHouseSqlBuilder
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

provider IDataProvider
mappingSchema MappingSchema
dataOptions DataOptions
sqlOptimizer ISqlOptimizer
sqlProviderFlags SqlProviderFlags

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

string

ConcatStyle

SQL-emit shape for SqlConcatExpression. Defaults to Plus; override per provider.

protected override BasicSqlBuilder.ConcatBuildStyle ConcatStyle { get; }

Property Value

BasicSqlBuilder.ConcatBuildStyle

IsCteColumnListSupported

protected override bool IsCteColumnListSupported { get; }

Property Value

bool

IsRecursiveCteKeywordRequired

protected override bool IsRecursiveCteKeywordRequired { get; }

Property Value

bool

IsValuesSyntaxSupported

If true, provider supports list of VALUES as a source element of merge command.

protected override bool IsValuesSyntaxSupported { get; }

Property Value

bool

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

bool

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

bool

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

bool

UpdateKeyword

protected override string UpdateKeyword { get; }

Property Value

string

UpdateSetKeyword

protected override string UpdateSetKeyword { get; }

Property Value

string

Methods

BuildAlterDeleteClause(SqlDeleteStatement)

protected override void BuildAlterDeleteClause(SqlDeleteStatement deleteStatement)

Parameters

deleteStatement SqlDeleteStatement

BuildColumnExpression(SelectQuery?, ISqlExpression, string?, ref bool)

protected override void BuildColumnExpression(SelectQuery? selectQuery, ISqlExpression expr, string? alias, ref bool addAlias)

Parameters

selectQuery SelectQuery
expr ISqlExpression
alias string
addAlias bool

BuildCreateTableCommand(SqlTable)

protected override void BuildCreateTableCommand(SqlTable table)

Parameters

table SqlTable

BuildCreateTableNullAttribute(SqlField, DefaultNullable)

protected override void BuildCreateTableNullAttribute(SqlField field, DefaultNullable defaultNullable)

Parameters

field SqlField
defaultNullable DefaultNullable

BuildCreateTablePrimaryKey(SqlCreateTableStatement, string, IEnumerable<string>)

protected override void BuildCreateTablePrimaryKey(SqlCreateTableStatement createTable, string pkName, IEnumerable<string> fieldNames)

Parameters

createTable SqlCreateTableStatement
pkName string
fieldNames IEnumerable<string>

BuildCteBody(SelectQuery)

protected override void BuildCteBody(SelectQuery selectQuery)

Parameters

selectQuery SelectQuery

BuildDataTypeFromDataType(DbDataType, bool, bool)

protected override void BuildDataTypeFromDataType(DbDataType type, bool forCreateTable, bool canBeNull)

Parameters

type DbDataType
forCreateTable bool
canBeNull bool

Type could store NULL values (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

deleteStatement SqlDeleteStatement

BuildDeleteFromClause(SqlDeleteStatement)

protected override void BuildDeleteFromClause(SqlDeleteStatement deleteStatement)

Parameters

deleteStatement SqlDeleteStatement

BuildDeleteQuery(SqlDeleteStatement)

protected override void BuildDeleteQuery(SqlDeleteStatement deleteStatement)

Parameters

deleteStatement SqlDeleteStatement

BuildDropTableStatement(SqlDropTableStatement)

protected override void BuildDropTableStatement(SqlDropTableStatement dropTable)

Parameters

dropTable SqlDropTableStatement

BuildEndCreateTableStatement(SqlCreateTableStatement)

protected override void BuildEndCreateTableStatement(SqlCreateTableStatement createTable)

Parameters

createTable SqlCreateTableStatement

BuildFieldTableAlias(SqlField)

Used to disable field table name (alias) generation.

protected override bool BuildFieldTableAlias(SqlField field)

Parameters

field SqlField

Returns

bool

BuildInsertQuery(SqlStatement, SqlInsertClause, bool)

protected override void BuildInsertQuery(SqlStatement statement, SqlInsertClause insertClause, bool addAlias)

Parameters

statement SqlStatement
insertClause SqlInsertClause
addAlias bool

BuildIsDistinctPredicate(IsDistinct)

protected override void BuildIsDistinctPredicate(SqlPredicate.IsDistinct expr)

Parameters

expr SqlPredicate.IsDistinct

BuildJoinType(SqlJoinedTable, SqlSearchCondition)

protected override bool BuildJoinType(SqlJoinedTable join, SqlSearchCondition condition)

Parameters

join SqlJoinedTable
condition SqlSearchCondition

Returns

bool

BuildMergeStatement(SqlMergeStatement)

protected override void BuildMergeStatement(SqlMergeStatement merge)

Parameters

merge SqlMergeStatement

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

sb StringBuilder

String builder for generated object name.

name SqlObjectName

Name of database object (e.g. table, view, procedure or function).

objectType ConvertType

Type of database object, used to select proper name converter.

escape bool

If true, apply required escaping to name components. Must be true except rare cases when escaping is not needed.

tableOptions TableOptions

Table options if called for table. Used to properly generate names for temporary tables.

withoutSuffix bool

If 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

sb parameter value.

BuildOffsetLimit(SelectQuery)

protected override void BuildOffsetLimit(SelectQuery selectQuery)

Parameters

selectQuery SelectQuery

BuildParameter(SqlParameter)

protected override void BuildParameter(SqlParameter parameter)

Parameters

parameter SqlParameter

BuildQueryExtensions(SqlStatement)

protected override void BuildQueryExtensions(SqlStatement statement)

Parameters

statement SqlStatement

BuildSetOperation(SetOperation, StringBuilder)

protected override void BuildSetOperation(SetOperation operation, StringBuilder sb)

Parameters

operation SetOperation
sb StringBuilder

BuildTableExtensions(SqlTable, string)

protected override void BuildTableExtensions(SqlTable table, string alias)

Parameters

table SqlTable
alias string

BuildTruncateTable(SqlTruncateTableStatement)

protected override void BuildTruncateTable(SqlTruncateTableStatement truncateTable)

Parameters

truncateTable SqlTruncateTableStatement

BuildTypedExpression(DbDataType, ISqlExpression)

protected override void BuildTypedExpression(DbDataType dataType, ISqlExpression value)

Parameters

dataType DbDataType
value ISqlExpression

BuildUpdateQuery(SqlStatement, SelectQuery, SqlUpdateClause)

protected override void BuildUpdateQuery(SqlStatement statement, SelectQuery selectQuery, SqlUpdateClause updateClause)

Parameters

statement SqlStatement
selectQuery SelectQuery
updateClause SqlUpdateClause

BuildUpdateTableName(SelectQuery, SqlUpdateClause)

protected override void BuildUpdateTableName(SelectQuery selectQuery, SqlUpdateClause updateClause)

Parameters

selectQuery SelectQuery
updateClause SqlUpdateClause

BuildUpdateWhereClause(SelectQuery)

protected override void BuildUpdateWhereClause(SelectQuery selectQuery)

Parameters

selectQuery SelectQuery

CanSkipRootAliases(SqlStatement)

protected override bool CanSkipRootAliases(SqlStatement statement)

Parameters

statement SqlStatement

Returns

bool

Convert(StringBuilder, string, ConvertType)

public override StringBuilder Convert(StringBuilder sb, string value, ConvertType convertType)

Parameters

sb StringBuilder
value string
convertType ConvertType

Returns

StringBuilder

CreateSqlBuilder()

protected override ISqlBuilder CreateSqlBuilder()

Returns

ISqlBuilder

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

extendedFunction SqlExtendedFunction

Returns

bool