public override bool MatchIdentifier(QsiIdentifier x, QsiIdentifier y) { string nX = x.IsEscaped ? IdentifierUtility.Unescape(x.Value) : x.Value; string nY = y.IsEscaped ? IdentifierUtility.Unescape(y.Value) : y.Value; return(string.Equals(nX, nY, StringComparison.OrdinalIgnoreCase)); }
public static QsiQualifiedIdentifier VisitFullId(FullIdContext context) { var identifiers = new QsiIdentifier[context.ChildCount]; for (int i = 0; i < identifiers.Length; i++) { switch (context.children[i]) { case UidContext uidContext: { identifiers[i] = VisitUid(uidContext); break; } case DottedIdContext dottedIdContext: { identifiers[i] = VisitDottedId(dottedIdContext); break; } default: { throw TreeHelper.NotSupportedTree(context.children[i]); } } } return(new QsiQualifiedIdentifier(identifiers)); }
private QsiIdentifier PatchQualifiedIdentifier(QsiIdentifier identifier) { if (identifier.IsEscaped) { return(identifier); } return(new QsiIdentifier(identifier.Value.ToUpper(), false)); }
private static (QsiQualifiedIdentifier[] Columns, QsiRowValueExpressionNode Row) JsonToRowValue(string json) { var jsonObject = JObject.Parse(json); var columns = new List <QsiQualifiedIdentifier>(); var row = new QsiRowValueExpressionNode(); foreach (var property in jsonObject.Properties()) { var column = new QsiIdentifier(property.Name, property.Name[0] == '"'); var jValue = property.Value; object value; QsiDataType type; switch (jValue.Type) { case JTokenType.Null: value = null; type = QsiDataType.Null; break; case JTokenType.Float: value = jValue.Value <decimal>(); type = QsiDataType.Decimal; break; case JTokenType.Integer: value = jValue.Value <int>(); type = QsiDataType.Numeric; break; case JTokenType.Boolean: value = jValue.Value <bool>(); type = QsiDataType.Boolean; break; case JTokenType.String: value = Escape(jValue.Value <string>()); type = QsiDataType.String; break; default: value = Escape(jValue.ToString(Formatting.None)); type = QsiDataType.Json; break; } columns.Add(new QsiQualifiedIdentifier(column)); row.ColumnValues.Add(TreeHelper.CreateLiteral(value, type)); } return(columns.ToArray(), row);
public ImmutableDerivedColumnNode( IQsiTreeNode parent, IQsiColumnNode column, IQsiExpressionNode expression, IQsiAliasNode alias, QsiIdentifier inferredName, IUserDataHolder userData) { Parent = parent; Column = column; Expression = expression; Alias = alias; InferredName = inferredName; UserData = userData; }
protected override QsiQualifiedIdentifier ResolveQualifiedIdentifier(QsiQualifiedIdentifier identifier) { if (identifier.Level == 1) { var sakila = new QsiIdentifier("sakila", false); identifier = new QsiQualifiedIdentifier(sakila, identifier[0]); } if (identifier.Level != 2) { throw new InvalidOperationException(); } return(identifier); }
public static QsiQualifiedIdentifier VisitTableRefWithWildcard(TableRefWithWildcardContext context) { var identifier = VisitIdentifier(context.identifier()); var dotIdentifier = context.dotIdentifier() != null?VisitDotIdentifier(context.dotIdentifier()) : null; var hasWildcard = context.HasToken(MULT_OPERATOR); var buffer = new QsiIdentifier[(dotIdentifier != null ? 2 : 1) + (hasWildcard ? 1 : 0)]; buffer[0] = identifier; if (dotIdentifier != null) { buffer[1] = dotIdentifier; } if (hasWildcard) { buffer[^ 1] = QsiIdentifier.Wildcard;
public static QsiChangeSearchPathActionNode VisitUseSchemaStatement(UseSchemaStatement context) { var schemaName = context.SchemaName; if (string.IsNullOrEmpty(schemaName)) { schemaName = "DEFAULT"; } var identifier = new QsiIdentifier(schemaName, IdentifierUtility.IsEscaped(schemaName)); var node = new QsiChangeSearchPathActionNode { Identifiers = new[] { identifier } }; PTree.RawNode[node] = context; return(node); }
public bool MatchIdentifier(QsiIdentifier x, QsiIdentifier y) { return(_languageService.MatchIdentifier(x, y)); }
public virtual bool MatchIdentifier(QsiIdentifier x, QsiIdentifier y) { _comparer ??= GetIdentifierComparer(); return(_comparer.Equals(x, y)); }
public static QsiDerivedTableNode CreateAliasedTableNode(QsiTableNode node, QsiIdentifier alias) { return(CreateAliasedTableNode(node, new QsiAliasNode { Name = alias })); }
protected bool Match(QsiIdentifier a, QsiIdentifier b) { return(_engine.LanguageService.MatchIdentifier(a, b)); }
public HanaXmlColumnDefinitionNode(QsiIdentifier identifier, string type) { Identifier = identifier; Type = type; }