You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
1.1 KiB

using Connected.Expressions;
using Connected.Expressions.Languages;
using Connected.Expressions.Translation;
using Connected.Expressions.TypeSystem;
namespace Connected.ServiceModel.Client.Data;
internal sealed class CqlLanguage : QueryLanguage
{
private static CqlLanguage? _default;
static CqlLanguage()
{
SplitChars = new char[] { '.' };
}
public CqlLanguage()
{
TypeSystem = new CqlTypeSystem();
}
public override QueryTypeSystem TypeSystem { get; }
private static char[] SplitChars { get; }
public override bool AllowsMultipleCommands => true;
public override bool AllowSubqueryInSelectWithoutFrom => true;
public override bool AllowDistinctInAggregates => true;
public static CqlLanguage Default
{
get
{
if (_default is null)
Interlocked.CompareExchange(ref _default, new CqlLanguage(), null);
return _default;
}
}
public override string Quote(string name)
{
return name;
}
public override Linguist CreateLinguist(ExpressionCompilationContext context, Translator translator)
{
return new CqlLinguist(context, this, translator);
}
}