private void VisitEqual(BinaryExpression expression) { QueryText.Append(((MemberExpression)expression.Left).Member.Name).Append(":"); QueryText.Append(TransformToEqualValue(GetValueFromExpression(expression.Right))); QueryText.Append(" "); }
internal string CreateBulkInsertStatementWithParameter(ITableData data, string tableName, List <OdbcParameter> parameters) { QueryText.Clear(); TableName = tableName; GetSourceAndDestColumnNames(data); AppendBeginSql(tableName); while (data.Read()) { QueryText.Append("("); string[] placeholder = new string[DestColumnNames.Count]; QueryText.Append(string.Join(",", placeholder.Select(s => s + "?"))); QueryText.AppendLine(")"); foreach (string destColumnName in DestColumnNames) { int colIndex = data.GetOrdinal(destColumnName); string dataTypeName = data.GetDataTypeName(colIndex); if (data.IsDBNull(colIndex)) { parameters.Add(new OdbcParameter(destColumnName, DBNull.Value)); } else { parameters.Add(new OdbcParameter(destColumnName, data.GetValue(colIndex))); } } if (data.NextResult()) { QueryText.Append(","); } } AppendEndSql(); return(QueryText.ToString()); }
private void VisitOrElse(BinaryExpression orElse) { VisitExpression(orElse.Left); QueryText.Append("OR "); VisitExpression(orElse.Right); }
private void VisitAndAlso(BinaryExpression andAlso) { VisitExpression(andAlso.Left); QueryText.Append("AND "); VisitExpression(andAlso.Right); }
private void VisitLessThanOrEqual(BinaryExpression expression) { object value = GetValueFromExpression(expression.Right); QueryText.Append( GetFieldNameForRangeQuery(expression.Left, value) ).Append(":{NULL TO "); QueryText.Append(TransformToRangeValue(GetValueFromExpression(expression.Right))); QueryText.Append("} "); }
private void VisitGreaterThan(BinaryExpression expression) { object value = GetValueFromExpression(expression.Right); QueryText.Append( GetFieldNameForRangeQuery(expression.Left, value) ).Append(":["); QueryText.Append(TransformToRangeValue(value)); QueryText.Append(" TO NULL] "); }
private void AppendValueListSql(List<string> values, bool lastItem) { if (IsAccessDatabase) { QueryText.AppendLine("SELECT " + string.Join(",", values) + $" FROM {AccessDummyTableName} "); if (lastItem) QueryText.AppendLine(" UNION ALL "); } else { QueryText.Append("(" + string.Join(",", values) + $")"); if (lastItem) QueryText.AppendLine(","); } }
public void VisitUpsertClause(UpsertClause upsertClause, QueryModel queryModel) { QueryText.Append(" upsert "); GetAqlExpression(upsertClause.SearchSelector, queryModel); QueryText.Append(" insert "); GetAqlExpression(upsertClause.InsertSelector, queryModel); QueryText.Append(" update "); GetAqlExpression(upsertClause.UpdateSelector, queryModel); QueryText.AppendFormat(" in {0} ", LinqUtility.ResolveCollectionName(Db, upsertClause.CollectionType)); }
public override void VisitOrderByClause(OrderByClause orderByClause, QueryModel queryModel, int index) { QueryText.Append(" sort "); for (int i = 0; i < orderByClause.Orderings.Count; i++) { GetAqlExpression(orderByClause.Orderings[i].Expression, queryModel); QueryText.AppendFormat(" {0} {1} ", orderByClause.Orderings[i].OrderingDirection == OrderingDirection.Asc ? "asc" : "desc", i != orderByClause.Orderings.Count - 1 ? " , " : string.Empty); } base.VisitOrderByClause(orderByClause, queryModel, index); }
public void VisitInsertClause(InsertClause insertClause, QueryModel queryModel) { if (insertClause.WithSelector != null) { QueryText.Append(" insert "); GetAqlExpression(insertClause.WithSelector, queryModel); } else { QueryText.AppendFormat(" insert {0} ", LinqUtility.ResolvePropertyName(insertClause.ItemName)); } QueryText.AppendFormat(" in {0} ", LinqUtility.ResolveCollectionName(Db, insertClause.CollectionType)); }
public void VisitRemoveClause(RemoveClause removeClause, QueryModel queryModel) { if (removeClause.KeySelector != null) { QueryText.Append(" remove "); GetAqlExpression(removeClause.KeySelector, queryModel); } else { QueryText.AppendFormat(" remove {0} ", LinqUtility.ResolvePropertyName(removeClause.ItemName)); } QueryText.AppendFormat(" in {0} ", LinqUtility.ResolveCollectionName(Db, removeClause.CollectionType)); }
public override void VisitQueryModel(QueryModel queryModel) { if (DefaultAssociatedIdentifier != null) { queryModel.MainFromClause.ItemName = DefaultAssociatedIdentifier; } this.QueryModel = queryModel; var resultOperator = queryModel.ResultOperators.Count != 0 ? queryModel.ResultOperators[0] : null; var aggregateFunction = resultOperator != null && aggregateResultOperatorFunctions.ContainsKey(resultOperator.GetType()) ? aggregateResultOperatorFunctions[resultOperator.GetType()] : null; if (resultOperator is FirstResultOperator || resultOperator is SingleResultOperator) { queryModel.BodyClauses.Add(new SkipTakeClause(Expression.Constant(0), Expression.Constant(1))); } if (aggregateFunction != null) { QueryText.AppendFormat(" return {0} (( ", aggregateFunction); } if (!IgnoreFromClause && queryModel.MainFromClause.ItemType != typeof(AQL)) { queryModel.MainFromClause.Accept(this, queryModel); } VisitBodyClauses(queryModel.BodyClauses, queryModel); if (CrudState.ModelVisitorHaveCrudOperation) { QueryText.AppendFormat(" in {0} ", CrudState.Collection); if (CrudState.ReturnResult) { QueryText.AppendFormat(" let crudResult = {0} return crudResult ", CrudState.ReturnResultKind); } } else if (!DontReturn) { queryModel.SelectClause.Accept(this, queryModel); } if (aggregateFunction != null) { QueryText.Append(" )) "); } }
public void VisitUpsertAndReturnClause(UpsertAndReturnClause upsertAndReturnClause, QueryModel queryModel) { QueryText.Append(" upsert "); GetAqlExpression(upsertAndReturnClause.SearchSelector, queryModel); QueryText.Append(" insert "); GetAqlExpression(upsertAndReturnClause.InsertSelector, queryModel); QueryText.Append(" update "); GetAqlExpression(upsertAndReturnClause.UpdateSelector, queryModel); CrudState.ModelVisitorHaveCrudOperation = true; CrudState.Collection = LinqUtility.ResolveCollectionName(Db, upsertAndReturnClause.CollectionType); CrudState.ReturnResult = upsertAndReturnClause.ReturnResult; CrudState.ReturnResultKind = "NEW"; }
public void VisitRemoveAndReturnClause(RemoveAndReturnClause removeAndReturnClause, QueryModel queryModel) { if (removeAndReturnClause.KeySelector != null) { QueryText.Append(" remove "); GetAqlExpression(removeAndReturnClause.KeySelector, queryModel); } else { QueryText.AppendFormat(" remove {0} ", LinqUtility.ResolvePropertyName(removeAndReturnClause.ItemName)); } CrudState.ModelVisitorHaveCrudOperation = true; CrudState.Collection = LinqUtility.ResolveCollectionName(Db, removeAndReturnClause.CollectionType); CrudState.ReturnResult = removeAndReturnClause.ReturnResult; CrudState.ReturnResultKind = "OLD"; }
public void VisitInsertAndReturnClause(InsertAndReturnClause insertAndReturnClause, QueryModel queryModel) { if (insertAndReturnClause.WithSelector != null) { QueryText.Append(" insert "); GetAqlExpression(insertAndReturnClause.WithSelector, queryModel); } else { QueryText.AppendFormat(" insert {0} ", LinqUtility.ResolvePropertyName(insertAndReturnClause.ItemName)); } CrudState.ModelVisitorHaveCrudOperation = true; CrudState.Collection = LinqUtility.ResolveCollectionName(Db, insertAndReturnClause.CollectionType); CrudState.ReturnResult = insertAndReturnClause.ReturnResult; CrudState.ReturnResultKind = "NEW"; }
public void VisitGroupByClause(GroupByClause groupByClause, QueryModel queryModel, int index) { var parentMVisitor = LinqUtility.FindParentModelVisitor(this); parentMVisitor.GroupByNameCounter++; groupByClause.IntoName = "C" + parentMVisitor.GroupByNameCounter; groupByClause.FuncIntoName = Db.Setting.Linq.TranslateGroupByIntoName; groupByClause.FromParameterName = queryModel.MainFromClause.ItemName; QueryText.Append(" collect "); if (groupByClause.Selector.NodeType != ExpressionType.New) { groupByClause.CollectVariableName = "CV" + parentMVisitor.GroupByNameCounter; QueryText.AppendFormat(" {0} = ", LinqUtility.ResolvePropertyName(groupByClause.CollectVariableName)); } GetAqlExpression(groupByClause.Selector, queryModel, true); QueryText.AppendFormat(" into {0} ", LinqUtility.ResolvePropertyName(groupByClause.TranslateIntoName())); groupByClause.Visited = true; }
private void AppendValueListSql(List <string> values, bool lastItem) { if (IsAccessDatabase) { QueryText.AppendLine("SELECT " + string.Join(",", values) + $" FROM {AccessDummyTableName} "); if (lastItem) { QueryText.AppendLine(" UNION ALL "); } } else if (ConnectionType == ConnectionManagerType.Oracle) { QueryText.Append("SELECT "); for (int i = 0; i < values.Count; i++) { QueryText.Append($"{values[i]} {QB}{DestColumnNames[i]}{QE}"); if (i + 1 < values.Count) { QueryText.Append(","); } } QueryText.AppendLine(" FROM DUAL"); if (lastItem) { QueryText.AppendLine(" UNION ALL "); } } else { QueryText.Append("(" + string.Join(",", values) + $")"); if (lastItem) { QueryText.AppendLine(","); } } }
public override void VisitWhereClause(WhereClause whereClause, QueryModel queryModel, int index) { QueryText.Append(" filter "); GetAqlExpression(whereClause.Predicate, queryModel); }
public void VisitFilterClause(FilterClause filterClause, QueryModel queryModel, int index) { QueryText.Append(" filter "); GetAqlExpression(filterClause.Predicate, queryModel); }
public override void VisitSelectClause(SelectClause selectClause, QueryModel queryModel) { QueryText.Append(" return "); GetAqlExpression(selectClause.Selector, queryModel); }
public void VisitTraversalClause(ITraversalClause traversalClause, QueryModel queryModel, int index) { string prefix = LinqUtility.MemberNameFromMap(traversalClause.Identifier, "graph", this); if (traversalClause.TargetVertex != null) { QueryText.AppendFormat(" for {0}, {1} in ", LinqUtility.ResolvePropertyName($"{prefix}_Vertex"), LinqUtility.ResolvePropertyName($"{prefix}_Edge")); } else { QueryText.AppendFormat(" for {0}, {1}, {2} in ", LinqUtility.ResolvePropertyName($"{prefix}_Vertex"), LinqUtility.ResolvePropertyName($"{prefix}_Edge"), LinqUtility.ResolvePropertyName($"{prefix}_Path")); } if (traversalClause.Min != null && traversalClause.Max != null) { QueryText.AppendFormat(" {0}..{1} ", traversalClause.Min.Value, traversalClause.Max); } QueryText.AppendFormat(" {0} ", traversalClause.Direction != null ? traversalClause.Direction.Value : Utils.EdgeDirectionToString(EdgeDirection.Any)); if (traversalClause.TargetVertex != null) { QueryText.Append(" shortest_path "); GetAqlExpression(traversalClause.StartVertex, queryModel); QueryText.Append(" to "); GetAqlExpression(traversalClause.TargetVertex, queryModel); } else { GetAqlExpression(traversalClause.StartVertex, queryModel); } if (string.IsNullOrEmpty(traversalClause.GraphName) == false) { QueryText.AppendFormat(" graph \"{0}\" ", traversalClause.GraphName); } else { StringBuilder edges = new StringBuilder(); for (int i = 0; i < traversalClause.EdgeCollections.Count; i++) { var e = traversalClause.EdgeCollections[i]; if (i != 0) { edges.Append(", "); } if (e.Direction.HasValue) { edges.AppendFormat("{0} ", Utils.EdgeDirectionToString(e.Direction.Value)); } edges.Append(LinqUtility.ResolvePropertyName(e.CollectionName)); } QueryText.Append(edges); } if (traversalClause.Options != null) { QueryText.AppendFormat(" options {0} ", new DocumentSerializer(Db).SerializeWithoutReader(traversalClause.Options.Value)); } }
public override void VisitQueryModel(QueryModel queryModel) { if (DefaultAssociatedIdentifier != null) { queryModel.MainFromClause.ItemName = DefaultAssociatedIdentifier; } QueryModel = queryModel; string aggregateFunction = null; // get the first aggregateResultOperatorFunction, because only one of them can be used at a time foreach (var r in queryModel.ResultOperators) { if (aggregateResultOperatorFunctions.ContainsKey(r.GetType())) { aggregateFunction = aggregateResultOperatorFunctions[r.GetType()]; break; } } if (queryModel.ResultOperators.Count(x => x is FirstResultOperator) != 0) { queryModel.BodyClauses.Add(new SkipTakeClause(Expression.Constant(0), Expression.Constant(1))); } if (queryModel.ResultOperators.Count(x => x is DistinctResultOperator) != 0) { DistinctResult = true; } // do not need to apply distinct since it has a single result if (string.IsNullOrEmpty(aggregateFunction) == false) { QueryText.AppendFormat(" return {0} (( ", aggregateFunction); } if (!IgnoreFromClause && queryModel.MainFromClause.ItemType != typeof(AQL)) { queryModel.MainFromClause.Accept(this, queryModel); } VisitBodyClauses(queryModel.BodyClauses, queryModel); var modificationClause = queryModel.BodyClauses.NextBodyClause <IModificationClause>(); if (modificationClause != null && modificationClause.IgnoreSelect) { DontReturn = true; } if (DontReturn == false) { queryModel.SelectClause.Accept(this, queryModel); } if (aggregateFunction != null) { QueryText.Append(" )) "); } }