Exemplo n.º 1
0
 public override void List(string query, QueryParameters queryParameters, IList results)
 {
     using (new SessionIdLoggingContext(SessionId))
     {
         CheckAndUpdateSessionStatus();
         queryParameters.ValidateParameters();
         HQLQueryPlan plan    = GetHQLQueryPlan(query, false);
         bool         success = false;
         try
         {
             plan.PerformList(queryParameters, this, results);
             success = true;
         }
         catch (HibernateException)
         {
             // Do not call Convert on HibernateExceptions
             throw;
         }
         catch (Exception e)
         {
             throw Convert(e, "Could not execute query");
         }
         finally
         {
             AfterOperation(success);
         }
         temporaryPersistenceContext.Clear();
     }
 }
Exemplo n.º 2
0
		public HQLQueryPlan GetHQLQueryPlan(string queryString, bool shallow, IDictionary<string, IFilter> enabledFilters)
		{
			HQLQueryPlanKey key = new HQLQueryPlanKey(queryString, shallow, enabledFilters);
			HQLQueryPlan plan = (HQLQueryPlan)planCache[key];

			if (plan == null)
			{
				if (log.IsDebugEnabled)
				{
					log.Debug("unable to locate HQL query plan in cache; generating (" + queryString + ")");
				}
				plan = new HQLQueryPlan(queryString, shallow, enabledFilters, factory);
			}
			else
			{
				if (log.IsDebugEnabled)
				{
					log.Debug("located HQL query plan in cache (" + queryString + ")");
				}
			}

			planCache.Put(key, plan);

			return plan;
		}
Exemplo n.º 3
0
 public override IQueryTranslator[] GetQueries(string query, bool scalar)
 {
     using (new SessionIdLoggingContext(SessionId))
     {
         // take the union of the query spaces (ie the queried tables)
         HQLQueryPlan plan = Factory.QueryPlanCache.GetHQLQueryPlan(query, scalar, EnabledFilters);
         return(plan.Translators);
     }
 }
Exemplo n.º 4
0
		public void ExecutesCustomSqlFunctionContains()
		{
         string hql = @"from Customer c where contains(c.Name, :smth)";

         HQLQueryPlan plan = new HQLQueryPlan(hql, false, new CollectionHelper.EmptyMapClass<string, IFilter>(), sessions);

         Assert.AreEqual(1, plan.ParameterMetadata.NamedParameterNames.Count);
         Assert.AreEqual(1, plan.QuerySpaces.Count);
         Assert.AreEqual(1, plan.SqlStrings.Length);
      }
Exemplo n.º 5
0
 public override int ExecuteUpdate(string query, QueryParameters queryParameters)
 {
     using (new SessionIdLoggingContext(SessionId))
     {
         CheckAndUpdateSessionStatus();
         queryParameters.ValidateParameters();
         HQLQueryPlan plan    = GetHQLQueryPlan(query, false);
         bool         success = false;
         int          result;
         try
         {
             result  = plan.PerformExecuteUpdate(queryParameters, this);
             success = true;
         }
         finally
         {
             AfterOperation(success);
         }
         temporaryPersistenceContext.Clear();
         return(result);
     }
 }
		private QueryExpressionPlan(HQLQueryPlan source, IQueryExpression expression) 
			: base(source)
		{
			QueryExpression = expression;
		}
Exemplo n.º 7
0
        public HQLQueryPlan GetHQLQueryPlan(IQueryExpression queryExpression, bool shallow, IDictionary<string, IFilter> enabledFilters)
        {
            string expressionStr = queryExpression.Key;

            var key = new HQLQueryPlanKey(expressionStr, shallow, enabledFilters);
            var plan = (HQLQueryPlan)planCache[key];

            if (plan == null)
            {
                if (log.IsDebugEnabled)
                {
                    log.Debug("unable to locate HQL query plan in cache; generating (" + expressionStr + ")");
                }
                plan = new HQLQueryPlan(expressionStr, queryExpression, shallow, enabledFilters, factory);
            }
            else
            {
                if (log.IsDebugEnabled)
                {
                    log.Debug("located HQL query plan in cache (" + expressionStr + ")");
                }
            }

            planCache.Put(key, plan);

            return plan;
        }
		private HQLExpressionQueryPlan(HQLQueryPlan source, IQueryExpression newQueryExpression)
			: base(source)
		{
			QueryExpression = newQueryExpression;
		}