Beispiel #1
0
        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));
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        private QsiIdentifier PatchQualifiedIdentifier(QsiIdentifier identifier)
        {
            if (identifier.IsEscaped)
            {
                return(identifier);
            }

            return(new QsiIdentifier(identifier.Value.ToUpper(), false));
        }
Beispiel #4
0
        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);
Beispiel #5
0
 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;
 }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        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);
        }
Beispiel #9
0
 public bool MatchIdentifier(QsiIdentifier x, QsiIdentifier y)
 {
     return(_languageService.MatchIdentifier(x, y));
 }
Beispiel #10
0
 public virtual bool MatchIdentifier(QsiIdentifier x, QsiIdentifier y)
 {
     _comparer ??= GetIdentifierComparer();
     return(_comparer.Equals(x, y));
 }
Beispiel #11
0
 public static QsiDerivedTableNode CreateAliasedTableNode(QsiTableNode node, QsiIdentifier alias)
 {
     return(CreateAliasedTableNode(node, new QsiAliasNode {
         Name = alias
     }));
 }
Beispiel #12
0
 protected bool Match(QsiIdentifier a, QsiIdentifier b)
 {
     return(_engine.LanguageService.MatchIdentifier(a, b));
 }
Beispiel #13
0
 public HanaXmlColumnDefinitionNode(QsiIdentifier identifier, string type)
 {
     Identifier = identifier;
     Type       = type;
 }