private async Task <IList> ListUsingQueryCacheAsync(HashSet <string> querySpaces, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); IQueryCache queryCache = session.Factory.GetQueryCache(cacheRegion); ISet <FilterKey> filterKeys = FilterKey.CreateFilterKeys(session.EnabledFilters); List <IType[]> resultTypesList = new List <IType[]>(); int[] maxRows = new int[loaders.Count]; int[] firstRows = new int[loaders.Count]; for (int i = 0; i < loaders.Count; i++) { resultTypesList.Add(loaders[i].ResultTypes); firstRows[i] = parameters[i].RowSelection.FirstRow; maxRows[i] = parameters[i].RowSelection.MaxRows; } MultipleQueriesCacheAssembler assembler = new MultipleQueriesCacheAssembler(resultTypesList); QueryParameters combinedParameters = CreateCombinedQueryParameters(); QueryKey key = new QueryKey(session.Factory, SqlString, combinedParameters, filterKeys, null) .SetFirstRows(firstRows) .SetMaxRows(maxRows); IList result = await(assembler.GetResultFromQueryCacheAsync(session, combinedParameters, querySpaces, queryCache, key, cancellationToken)).ConfigureAwait(false); if (factory.Statistics.IsStatisticsEnabled) { if (result == null) { factory.StatisticsImplementor.QueryCacheMiss(key.ToString(), queryCache.RegionName); } else { factory.StatisticsImplementor.QueryCacheHit(key.ToString(), queryCache.RegionName); } } if (result == null) { log.Debug("Cache miss for multi criteria query"); IList list = await(DoListAsync(cancellationToken)).ConfigureAwait(false); result = list; if (session.CacheMode.HasFlag(CacheMode.Put)) { bool put = await(queryCache.PutAsync(key, new ICacheAssembler[] { assembler }, new object[] { list }, combinedParameters.NaturalKeyLookup, session, cancellationToken)).ConfigureAwait(false); if (put && factory.Statistics.IsStatisticsEnabled) { factory.StatisticsImplementor.QueryCachePut(key.ToString(), queryCache.RegionName); } } } return(GetResultList(result)); }
public static bool TryGetQueryValue(NameValueCollection queryCollection, QueryKey queryKey, out int value) { var key = queryCollection.AllKeys.FirstOrDefault(x => x.Equals(queryKey.ToString(), StringComparison.OrdinalIgnoreCase)); if (key != null) { return(int.TryParse(queryCollection[key], out value)); } value = default(int); return(false); }
/// <summary> /// Builds query agrregate function. /// </summary> protected override void Build() { // Build expression. string function = QueryFunction.ToString().ToUpper(); string expression = Expression.ToString(); string key = string.Empty; if (QueryKey != QueryKey.All) { key = QueryKey.ToString().ToUpper(); } // If normal template. if (Expression != null && OverColumns == null) { if (QueryKey == QueryKey.All) { Text = string.Format(m_normalTemplate, function, expression); } else if (QueryKey != QueryKey.All) { Text = string.Format(m_normalTemplateKey, function, key, expression); } } // If over template. else if (OverColumns != null && PartitionColumns == null) { } // If partition template. else if (PartitionColumns != null) { } // Column name. //string columnName = ColumnName.TrimComma(); // Generate aggregate string. //Text = string.Format(m_normalTemplate, queryFunction, queryKey, columnName); }
public void ToStringWithMoreFilters() { string filterName = "DescriptionLike"; var f = new FilterImpl(Sfi.GetFilterDefinition(filterName)); f.SetParameter("pLike", "so%"); var fk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes); filterName = "DescriptionEqualAndValueGT"; var fv = new FilterImpl(Sfi.GetFilterDefinition(filterName)); fv.SetParameter("pDesc", "something").SetParameter("pValue", 10); var fvk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes); ISet <FilterKey> fks = new HashSet <FilterKey> { fk, fvk }; var qk = new QueryKey(Sfi, SqlAll, new QueryParameters(), fks, null); Assert.That(qk.ToString(), Does.Contain(string.Format("filters: ['{0}', '{1}']", fk, fvk))); }
public void ToStringWithMoreFilters() { string filterName = "DescriptionLike"; var f = new FilterImpl(sessions.GetFilterDefinition(filterName)); f.SetParameter("pLike", "so%"); var fk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes, EntityMode.Poco); filterName = "DescriptionEqualAndValueGT"; var fv = new FilterImpl(sessions.GetFilterDefinition(filterName)); fv.SetParameter("pDesc", "something").SetParameter("pValue", 10); var fvk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes, EntityMode.Poco); ISet <FilterKey> fks = new HashedSet <FilterKey> { fk, fvk }; var qk = new QueryKey(sessions, SqlAll, new QueryParameters(), (ISet)fks); Assert.That(qk.ToString(), Is.StringContaining(string.Format("filters: ['{0}', '{1}']", fk, fvk))); }
public void ToStringWithFilters() { string filterName = "DescriptionLike"; var f = new FilterImpl(Sfi.GetFilterDefinition(filterName)); f.SetParameter("pLike", "so%"); var fk = new FilterKey(f); ISet <FilterKey> fks = new HashSet <FilterKey> { fk }; var qk = new QueryKey(Sfi, SqlAll, new QueryParameters(), fks, null, null); Assert.That(qk.ToString(), Does.Contain($"filters: ['{fk}']"), "Like"); filterName = "DescriptionEqualAndValueGT"; f = new FilterImpl(Sfi.GetFilterDefinition(filterName)); f.SetParameter("pDesc", "something").SetParameter("pValue", 10); fk = new FilterKey(f); fks = new HashSet <FilterKey> { fk }; qk = new QueryKey(Sfi, SqlAll, new QueryParameters(), fks, null, null); Assert.That(qk.ToString(), Does.Contain($"filters: ['{fk}']"), "Value"); }
private IList ListUsingQueryCache() { IQueryCache queryCache = session.Factory.GetQueryCache(cacheRegion); ISet <FilterKey> filterKeys = FilterKey.CreateFilterKeys(session.EnabledFilters); ISet <string> querySpaces = new HashSet <string>(); List <IType[]> resultTypesList = new List <IType[]>(); int[] maxRows = new int[loaders.Count]; int[] firstRows = new int[loaders.Count]; for (int i = 0; i < loaders.Count; i++) { querySpaces.UnionWith(loaders[i].QuerySpaces); resultTypesList.Add(loaders[i].ResultTypes); firstRows[i] = parameters[i].RowSelection.FirstRow; maxRows[i] = parameters[i].RowSelection.MaxRows; } MultipleQueriesCacheAssembler assembler = new MultipleQueriesCacheAssembler(resultTypesList); QueryParameters combinedParameters = CreateCombinedQueryParameters(); QueryKey key = new QueryKey(session.Factory, SqlString, combinedParameters, filterKeys, null) .SetFirstRows(firstRows) .SetMaxRows(maxRows); IList result = assembler.GetResultFromQueryCache(session, combinedParameters, querySpaces, queryCache, key); if (factory.Statistics.IsStatisticsEnabled) { if (result == null) { factory.StatisticsImplementor.QueryCacheMiss(key.ToString(), queryCache.RegionName); } else { factory.StatisticsImplementor.QueryCacheHit(key.ToString(), queryCache.RegionName); } } if (result == null) { log.Debug("Cache miss for multi criteria query"); IList list = DoList(); result = list; if ((session.CacheMode & CacheMode.Put) == CacheMode.Put) { bool put = queryCache.Put(key, new ICacheAssembler[] { assembler }, new object[] { list }, combinedParameters.NaturalKeyLookup, session); if (put && factory.Statistics.IsStatisticsEnabled) { factory.StatisticsImplementor.QueryCachePut(key.ToString(), queryCache.RegionName); } } } return(GetResultList(result)); }
protected override string PayloadToString() { return(QKey.ToString()); }