internal gsWhereTermBase GetWhereTerm(ExistsPredicate existsPredicate, gsExistsOrNotExists existsOrNotExists) { gsWhereTermExistsOrNotExists whereTerm = new gsWhereTermExistsOrNotExists(); whereTerm.ExistsType = existsOrNotExists; if (existsPredicate.Subquery.QueryExpression is QuerySpecification) { gsSelectQuery subQry = new gsSelectQuery(); subQry.QryName = $"subQry{gsSelectQuery.GetNextID()}"; whereTerm.QueryName = subQry.QryName; QuerySpecification qrySpec = existsPredicate.Subquery.QueryExpression as QuerySpecification; gsSelectQueryParser qryParser = new gsSelectQueryParser(); qryParser.ProcessQuerySpecification(qrySpec, subQry); whereTerm.Sql = subQry.ToString(); } else { throw new NotImplementedException($"QuerySpecification {existsPredicate.Subquery.QueryExpression.GetType().Name} not supported"); } return(whereTerm); }
internal gsWhereTermBase GetWhereTerm(InPredicate inPredicate, bool isNotIn) { gsWhereTermIn whereTerm = new gsWhereTermIn(); string subQryName = $"subQry{gsSelectQuery.GetNextID()}"; whereTerm.InType = isNotIn ? gsInOrNotIn.NotIn : gsInOrNotIn.In; whereTerm.Expression = gsScalarExpressionParserFactory.CreateParser(inPredicate.Expression, null).Parse(); if (inPredicate.Subquery != null) { gsSelectQuery subQry = new gsSelectQuery(); whereTerm.QueryName = subQry.QryName = subQryName; QuerySpecification qrySpec = inPredicate.Subquery.QueryExpression as QuerySpecification; gsSelectQueryParser qryParser = new gsSelectQueryParser(); qryParser.ProcessQuerySpecification(qrySpec, subQry); whereTerm.Sql = subQry.ToString(); } else if (inPredicate.Values.Count > 0) { List <string> values = new List <string>(); foreach (ScalarExpression val in inPredicate.Values) { string valueStr = Convert.ToString(gsScalarExpressionParserFactory.CreateParser(val, null).Parse().Value); values.Add(valueStr); } whereTerm.values = values; } else { throw new NotImplementedException("InPredicate type not supported"); } return(whereTerm); }
internal gsFromTerm GetTable(QueryDerivedTable queryDerivedTable) { gsSubQueryFromTerm table = new gsSubQueryFromTerm(); table.TableAlias = Convert.ToString(queryDerivedTable.Alias.Value); if (queryDerivedTable.QueryExpression is QuerySpecification) { gsSelectQuery subQry = new gsSelectQuery(); QuerySpecification qrySpec = queryDerivedTable.QueryExpression as QuerySpecification; gsSelectQueryParser qryParser = new gsSelectQueryParser(); qryParser.ProcessQuerySpecification(qrySpec, subQry); table.SubQuery = subQry; } else { throw new NotImplementedException($"QuerySpecification {queryDerivedTable.QueryExpression.GetType().Name} not supported"); } return(table); }
public override gsSelectColumn Parse() { gsSubQueryColumn subQryCol = new gsSubQueryColumn(); subQryCol.ColumnAlias = ColumnAlias; if (_ScalarExpression.QueryExpression is QuerySpecification) { gsSelectQuery subQry = new gsSelectQuery(); QuerySpecification qrySpec = _ScalarExpression.QueryExpression as QuerySpecification; gsSelectQueryParser qryParser = new gsSelectQueryParser(); qryParser.ProcessQuerySpecification(qrySpec, subQry); subQryCol.SubQuery = subQry; } else { throw new NotImplementedException($"QuerySpecification {_ScalarExpression.QueryExpression.GetType().Name} not supported"); } return(subQryCol); }