public override void Visit(SqlArrayScalarExpression sqlArrayScalarExpression) { this.writer.Write("ARRAY"); this.WriteStartContext("("); sqlArrayScalarExpression.SqlQuery.Accept(this); this.WriteEndContext(")"); }
public override int Visit(SqlArrayScalarExpression sqlArrayScalarExpression) { int hashCode = SqlArrayScalarExpressionHashCode; hashCode = CombineHashes(hashCode, sqlArrayScalarExpression.SqlQuery.Accept(this)); return(hashCode); }
public override SqlObject VisitArrayScalarExpression([NotNull] sqlParser.ArrayScalarExpressionContext context) { Contract.Requires(context != null); SqlQuery sqlQuery = (SqlQuery)this.Visit(context.sql_query()); return(SqlArrayScalarExpression.Create(sqlQuery)); }
public override bool Visit(SqlArrayScalarExpression first, SqlObject secondAsObject) { if (!(secondAsObject is SqlArrayScalarExpression second)) { return(false); } if (!Equals(first.SqlQuery, second.SqlQuery)) { return(false); } return(true); }
public void SqlArrayScalarExpressionTest() { CosmosObject tag = CosmosObject.Create(new Dictionary <string, CosmosElement> { ["name"] = CosmosString.Create("asdf") }); CosmosObject tags = CosmosObject.Create(new Dictionary <string, CosmosElement> { ["tags"] = CosmosArray.Create(new List <CosmosElement>() { tag }), ["_rid"] = CosmosString.Create("AYIMAMmFOw8YAAAAAAAAAA==") }); CosmosObject tagsWrapped = CosmosObject.Create(new Dictionary <string, CosmosElement> { ["c"] = tags, ["_rid"] = CosmosString.Create("AYIMAMmFOw8YAAAAAAAAAA==") }); // ARRAY(SELECT VALUE t.name FROM t in c.tags) SqlArrayScalarExpression arrayScalarExpression = SqlArrayScalarExpression.Create( SqlQuery.Create( SqlSelectClause.Create( SqlSelectValueSpec.Create( TestUtils.CreatePathExpression("t", "name"))), SqlFromClause.Create( SqlArrayIteratorCollectionExpression.Create( SqlIdentifier.Create("t"), SqlInputPathCollection.Create( SqlIdentifier.Create("c"), SqlStringPathExpression.Create( null, SqlStringLiteral.Create("tags"))))), whereClause: null, groupByClause: null, orderByClause: null, offsetLimitClause: null)); CosmosArray tagNames = CosmosArray.Create(new List <CosmosElement>() { CosmosString.Create("asdf") }); AssertEvaluation(tagNames, arrayScalarExpression, tagsWrapped); }
public override CosmosElement Visit( SqlArrayScalarExpression scalarExpression, CosmosElement document) { // Only run on the current document since the subquery is always correlated. IEnumerable <CosmosElement> subqueryResults = SqlInterpreter.ExecuteQuery( new CosmosElement[] { document }, scalarExpression.SqlQuery); List <CosmosElement> arrayScalarResult = new List <CosmosElement>(); foreach (CosmosElement subQueryResult in subqueryResults) { arrayScalarResult.Add(subQueryResult); } return(CosmosArray.Create(subqueryResults)); }
public abstract void Visit(SqlArrayScalarExpression sqlObject);
public override SqlObject Visit(SqlArrayScalarExpression sqlArrayScalarExpression) { return(SqlArrayScalarExpression.Create(sqlArrayScalarExpression.SqlQuery.Accept(this) as SqlQuery)); }
public abstract void Visit(SqlArrayScalarExpression scalarExpression);
public override bool Visit(SqlArrayScalarExpression sqlArrayScalarExpression) { // No need to worry about aggregates in the subquery (they will recursively get rewritten). return(false); }
public abstract TResult Visit(SqlArrayScalarExpression sqlObject);
public override bool Visit(SqlArrayScalarExpression scalarExpression) { // We don't allow subqueries in group by projections. return(false); }
public abstract TOutput Visit(SqlArrayScalarExpression sqlObject, TArg input);
public abstract TResult Visit(SqlArrayScalarExpression scalarExpression);