Sir Steve Strong knows it, don't worry.

On Mon, Jul 5, 2010 at 3:39 PM, Diego Mijelshon <di...@mijelshon.com.ar>wrote:

> It's not necessarily a bug in the code.
> An exception is just that: a state that deviates from the rule.
> While the code shouldn't be designed around exceptions, it can happen that,
> given a spec of "there can be one and only one X where Y=Z" you try to
> retrieve it using Single and, somehow (say, because of a faulty import
> process), there are more (or none) in the DB.
> If that happens, I think it's important to fail with the least possible
> impact to the rest of the application.
>
> If you disagree, tell Steve :-)
> This happens in
> NHibernate/Linq/Visitors/ResultOperatorProcessors/ProcessFirstOrSingleBase.cs
>
>    Diego
>
>
>
> On Mon, Jul 5, 2010 at 14:29, Fabio Maulo <fabioma...@gmail.com> wrote:
>
>> If you write a query that may return 10 records and there you put "Single"
>> you are foo or you have a bug.
>> That is what "Single" mean and for that reason it throw exception when
>> more than one instance are selected.
>>
>> In NH we don't have to change its meaning putting an unnecessary
>> pagination (SetMaxResults) in the result SQL.
>>
>> On Mon, Jul 5, 2010 at 2:19 PM, Diego Mijelshon 
>> <di...@mijelshon.com.ar>wrote:
>>
>>> I can't think of a better way to do it.
>>>
>>> For Single, this is the behavior:
>>> - Request at most 2 records from the server (to avoid doing extra work)
>>> - If no records returned, exception
>>> - If one record returned, map it and we're done
>>> - If more than one record returned, exception
>>>
>>> For SingleOrDefault is the same, only the first case returns null.
>>>
>>> How would you improve it?
>>>
>>>    Diego
>>>
>>>
>>>
>>> On Mon, Jul 5, 2010 at 12:32, Fabio Maulo <fabioma...@gmail.com> wrote:
>>>
>>>> There is no need to complicate the query for "Single"
>>>>
>>>> --
>>>> Fabio Maulo
>>>>
>>>>
>>>> El 05/07/2010, a las 12:16, Diego Mijelshon <di...@mijelshon.com.ar>
>>>> escribió:
>>>>
>>>> IIRC, Single/SingleOrDefault use SetMaxResults(2), and then checks that
>>>> a single record is returned...
>>>>
>>>>    Diego
>>>>
>>>>
>>>> On Mon, Jul 5, 2010 at 10:19, Fabio Maulo < <fabioma...@gmail.com>
>>>> fabioma...@gmail.com> wrote:
>>>>
>>>>> For "First" and "FirstOrDefault" we can apply SetMaxResults(1) ... and
>>>>> fix the bug (please check last JIRAs and add a new one if you can't find 
>>>>> an
>>>>> existing)
>>>>>
>>>>> For "Single" and "SingleOrDefault" we *shouldn't*apply SetMaxResults(1) 
>>>>> because doing so we will change the
>>>>> "Single" behavior (it should throw exception when there are more than one
>>>>> results)
>>>>>
>>>>>
>>>>> On Mon, Jul 5, 2010 at 10:11 AM, andrew6072 
>>>>> <<andrew.brun...@ukfuels.co.uk>
>>>>> andrew.brun...@ukfuels.co.uk> wrote:
>>>>>
>>>>>> Hi Fabio,
>>>>>>
>>>>>> What do you mean by changing the meaning of Single ?
>>>>>>
>>>>>> Oh and It also happens with First(), and SingleOrDefault() as well
>>>>>>
>>>>>> It seems to be something to do with this call
>>>>>>
>>>>>> bool useLimit = UseLimit(selection, dialect);
>>>>>> when I use Query<> it returns true, and if I use QueryOver<> it return
>>>>>> false ???
>>>>>>
>>>>>> I don't really understand how it all works but I've noticed the
>>>>>> following.
>>>>>> when its called using Query<> selection.firstrow = -1, and
>>>>>> selection.MaxRows = 1
>>>>>>
>>>>>> but when its called from QueryOver<> selection.FirstRow = 0, and
>>>>>> selection.Maxrows = -1
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Andrew
>>>>>>
>>>>>>
>>>>>> On Jul 5, 12:38 pm, Fabio Maulo <fabioma...@gmail.com> wrote:
>>>>>> > Confirmed, we have a bug.
>>>>>> > We are changing the meaning of Single.
>>>>>> >
>>>>>> >
>>>>>> >
>>>>>> > On Mon, Jul 5, 2010 at 8:35 AM, Fabio Maulo <fabioma...@gmail.com>
>>>>>> wrote:
>>>>>> > > If our provider creates a paginated query for the method "Single"
>>>>>> we have a
>>>>>> > > bug.
>>>>>> >
>>>>>> > > On Mon, Jul 5, 2010 at 8:06 AM, andrew6072 <
>>>>>> andrew.brun...@ukfuels.co.uk>wrote:
>>>>>> >
>>>>>> > >> Hi Fabio,
>>>>>> >
>>>>>> > >> I think the exception got chopped off, this is the full
>>>>>> exception.
>>>>>> >
>>>>>> > >> [SQL: select * from ( select olauser0_.USER_ID as USER1_57_,
>>>>>> > >> olauser0_.USERNAME as USERNAME57_, olauser0_.EMAIL_ADDRESS as
>>>>>> > >> EMAIL3_57_, olauser0_.COMMENTS as COMMENTS57_, olauser0_.PASSWORD
>>>>>> as
>>>>>> > >> PASSWORD57_, olauser0_.PASSWORD_QUESTION as PASSWORD6_57_,
>>>>>> > >> olauser0_.PASSWORD_ANSWER as PASSWORD7_57_, olauser0_.IS_APPROVED
>>>>>> as
>>>>>> > >> IS8_57_, olauser0_.IS_LOCKEDOUT as IS9_57_,
>>>>>> olauser0_.LAST_LOGON_DATE
>>>>>> > >> as LAST10_57_, olauser0_.CREATION_DATE as CREATION11_57_,
>>>>>> > >> olauser0_.LAST_ACTIVITY_DATE as LAST12_57_,
>>>>>> > >> olauser0_.LAST_PASSWORD_CHANGED_DATE as LAST13_57_,
>>>>>> > >> olauser0_.LAST_LOCKOUT_DATE as LAST14_57_ from OLA_USERS
>>>>>> olauser0_
>>>>>> > >> where (olauser0_.USERNAME is null) and (:p0 is null) or
>>>>>> > >> olauser0_.USERNAME=:p0 ) where rownum <=:p2] --->
>>>>>> > >> Oracle.DataAccess.Client.OracleException ORA-01008: not all
>>>>>> variables
>>>>>> > >> bound    at
>>>>>> > >> Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32
>>>>>> > >> errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx*
>>>>>> > >> pOpoSqlValCtx, Object src, String procedure, Boolean bCheck)
>>>>>> > >>   at Oracle.DataAccess.Client.OracleException.HandleError(Int32
>>>>>> > >> errCode, OracleConnection conn, String procedure, IntPtr
>>>>>> opsErrCtx,
>>>>>> > >> OpoSqlValCtx* pOpoSqlValCtx, Object src, Boolean bCheck)
>>>>>> > >>   at Oracle.DataAccess.Client.OracleCommand.ExecuteReader(Boolean
>>>>>> > >> requery, Boolean fillRequest, CommandBehavior behavior)
>>>>>> > >>   at
>>>>>> > >>
>>>>>> Oracle.DataAccess.Client.OracleCommand.ExecuteDbDataReader(CommandBehavior
>>>>>> > >> behavior)
>>>>>> > >>   at
>>>>>> > >>
>>>>>> System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
>>>>>> > >>   at NHibernate.AdoNet.AbstractBatcher.ExecuteReader(IDbCommand
>>>>>> cmd)
>>>>>> > >> in
>>>>>> d:\dev\oss\nhibernate\src\NHibernate\AdoNet\AbstractBatcher.cs:line
>>>>>> > >> 242
>>>>>> > >>   at NHibernate.Loader.Loader.GetResultSet(IDbCommand st, Boolean
>>>>>> > >> autoDiscoverTypes, Boolean callable, RowSelection selection,
>>>>>> > >> ISessionImplementor session) in
>>>>>> d:\dev\oss\nhibernate\src\NHibernate
>>>>>> > >> \Loader\Loader.cs:line 1325
>>>>>> > >>   at NHibernate.Loader.Loader.DoQuery(ISessionImplementor
>>>>>> session,
>>>>>> > >> QueryParameters queryParameters, Boolean returnProxies) in
>>>>>> d:\dev\oss
>>>>>> > >> \nhibernate\src\NHibernate\Loader\Loader.cs:line 401
>>>>>> > >>   at
>>>>>> >
>>>>>> > >>
>>>>>> NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImp­lementor
>>>>>> > >> session, QueryParameters queryParameters, Boolean returnProxies)
>>>>>> in d:
>>>>>> > >> \dev\oss\nhibernate\src\NHibernate\Loader\Loader.cs:line 236
>>>>>> > >>   at NHibernate.Loader.Loader.DoList(ISessionImplementor session,
>>>>>> > >> QueryParameters queryParameters) in d:\dev\oss\nhibernate\src
>>>>>> > >> \NHibernate\Loader\Loader.cs:line 1653
>>>>>> > >>    --- End of inner exception stack trace ---
>>>>>> > >>    at NHibernate.Loader.Loader.DoList(ISessionImplementor
>>>>>> session,
>>>>>> > >> QueryParameters queryParameters) in d:\dev\oss\nhibernate\src
>>>>>> > >> \NHibernate\Loader\Loader.cs:line 1662
>>>>>> > >>   at
>>>>>> > >> NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor
>>>>>> > >> session, QueryParameters queryParameters) in
>>>>>> d:\dev\oss\nhibernate\src
>>>>>> > >> \NHibernate\Loader\Loader.cs:line 1577
>>>>>> > >>   at NHibernate.Loader.Loader.List(ISessionImplementor session,
>>>>>> > >> QueryParameters queryParameters, ISet`1 querySpaces, IType[]
>>>>>> > >> resultTypes) in d:\dev\oss\nhibernate\src\NHibernate\Loader
>>>>>> > >> \Loader.cs:line 1567
>>>>>> > >>   at
>>>>>> > >>
>>>>>> NHibernate.Hql.Ast.ANTLR.Loader.QueryLoader.List(ISessionImplementor
>>>>>> > >> session, QueryParameters queryParameters) in
>>>>>> d:\dev\oss\nhibernate\src
>>>>>> > >> \NHibernate\Hql\Ast\ANTLR\Loader\QueryLoader.cs:line 297
>>>>>> > >>   at
>>>>>> > >>
>>>>>> NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.List(ISessionImplementor
>>>>>> > >> session, QueryParameters queryParameters) in
>>>>>> d:\dev\oss\nhibernate\src
>>>>>> > >> \NHibernate\Hql\Ast\ANTLR\QueryTranslatorImpl.cs:line 107
>>>>>> > >>   at
>>>>>> NHibernate.Engine.Query.HQLQueryPlan.PerformList(QueryParameters
>>>>>> > >> queryParameters, ISessionImplementor session, IList results) in
>>>>>> d:\dev
>>>>>> > >> \oss\nhibernate\src\NHibernate\Engine\Query\HQLQueryPlan.cs:line
>>>>>> 105
>>>>>> > >>   at NHibernate.Impl.SessionImpl.List(IQueryExpression
>>>>>> > >> queryExpression, QueryParameters queryParameters, IList results)
>>>>>> in d:
>>>>>> > >> \dev\oss\nhibernate\src\NHibernate\Impl\SessionImpl.cs:line 676
>>>>>> > >>   at NHibernate.Impl.SessionImpl.List(IQueryExpression
>>>>>> > >> queryExpression, QueryParameters parameters) in
>>>>>> d:\dev\oss\nhibernate
>>>>>> > >> \src\NHibernate\Impl\SessionImpl.cs:line 655
>>>>>> > >>   at NHibernate.Impl.ExpressionQueryImpl.List() in d:\dev\oss
>>>>>> > >> \nhibernate\src\NHibernate\Impl\ExpressionQueryImpl.cs:line 63
>>>>>> > >>   at NHibernate.Linq.NhQueryProvider.Execute(Expression
>>>>>> expression)
>>>>>> > >> in
>>>>>> d:\dev\oss\nhibernate\src\NHibernate\Linq\NhQueryProvider.cs:line
>>>>>> > >> 31
>>>>>> > >>   at NHibernate.Linq.NhQueryProvider.Execute[TResult](Expression
>>>>>> > >> expression) in d:\dev\oss\nhibernate\src\NHibernate\Linq
>>>>>> > >> \NhQueryProvider.cs:line 55
>>>>>> > >>   at System.Linq.Queryable.Single[TSource](IQueryable`1 source)
>>>>>> > >>   at
>>>>>> > >>
>>>>>> OlaCommon.Data.Repository.NHibernate.UserRepository.GetByUsername(String
>>>>>> > >> username) in
>>>>>> d:\dev\tfs\OlaCommon\OlaCommon.Data\Repository\NHibernate
>>>>>> > >> \UserRepository.cs:line 27
>>>>>> > >>   at
>>>>>> > >>
>>>>>> OlaMonitor.Infrastructure.NHibernateMembershipProvider.ValidateUser(String
>>>>>> > >> username, String password) in d:\dev\tfs\OlaMonitor\OlaMonitor
>>>>>> > >> \Infrastructure\NHibernateMembershipProvider.cs:line 248
>>>>>> >
>>>>>> > >> Validateuser calls the following method
>>>>>> > >>        public OlaUser GetByUsername(string username)
>>>>>> > >>        {
>>>>>> > >>            var session = GetSession();
>>>>>> > >>             var query = (from a in session.Query<OlaUser>()
>>>>>> > >>                              where a.Username == username
>>>>>> > >>                             select a);
>>>>>> > >>            var user = query.Single();
>>>>>> > >>             return user;
>>>>>> > >>        }
>>>>>> >
>>>>>> > >> Do you need anything else ?
>>>>>> >
>>>>>> > >> Andrew
>>>>>> >
>>>>>> > >> On Jul 5, 11:43 am, Fabio Maulo <fabioma...@gmail.com> wrote:
>>>>>> > >> > Please send us something else... In some point you are forcing
>>>>>> the
>>>>>> > >> > pagination of the query.
>>>>>> >
>>>>>> > >> > --
>>>>>> > >> > Fabio Maulo
>>>>>> >
>>>>>> > >> > El 05/07/2010, a las 07:16, andrew6072 <
>>>>>> andrew.brun...@ukfuels.co.uk>
>>>>>> > >> escribió:
>>>>>> >
>>>>>> > >> > > Hi,
>>>>>> >
>>>>>> > >> > > Not sure if I've done something wrong but I can't get this to
>>>>>> work, if
>>>>>> > >> > > I look at the query I can see one object, as soon as it hits
>>>>>> the
>>>>>> > >> > > query.single() it bombs with the stack below, am I missing
>>>>>> something ?
>>>>>> > >> > > Not sure if it makes any difference but I'm using fluent to
>>>>>> create my
>>>>>> > >> > > mappings.
>>>>>> >
>>>>>> > >> > >            var query = (from a in session.Query<OlaUser>()
>>>>>> > >> > >                       where a.Username == username
>>>>>> > >> > >                       select a);
>>>>>> >
>>>>>> > >> > >            var user = query.Single();
>>>>>> >
>>>>>> > >> > > Andrew
>>>>>> >
>>>>>> > >> > > [ select * from ( select olauser0_.USER_ID as USER1_57_,
>>>>>> > >> > > olauser0_.USERNAME as USERNAME57_, olauser0_.EMAIL_ADDRESS as
>>>>>> > >> > > EMAIL3_57_, olauser0_.COMMENTS as COMMENTS57_,
>>>>>> olauser0_.PASSWORD as
>>>>>> > >> > > PASSWORD57_, olauser0_.PASSWORD_QUESTION as PASSWORD6_57_,
>>>>>> > >> > > olauser0_.PASSWORD_ANSWER as PASSWORD7_57_,
>>>>>> olauser0_.IS_APPROVED as
>>>>>> > >> > > IS8_57_, olauser0_.IS_LOCKEDOUT as IS9_57_,
>>>>>> olauser0_.LAST_LOGON_DATE
>>>>>> > >> > > as LAST10_57_, olauser0_.CREATION_DATE as CREATION11_57_,
>>>>>> > >> > > olauser0_.LAST_ACTIVITY_DATE as LAST12_57_,
>>>>>> > >> > > olauser0_.LAST_PASSWORD_CHANGED_DATE as LAST13_57_,
>>>>>> > >> > > olauser0_.LAST_LOCKOUT_DATE as LAST14_57_ from USERS
>>>>>> olauser0_ where
>>>>>> > >> > > (olauser0_.USERNAME is null) and (:p0 is null) or
>>>>>> > >> > > olauser0_.USERNAME=:p0 ) where rownum <=:p2 ]
>>>>>> > >> > >  Name:p1 - Value:andrewb
>>>>>> >
>>>>>> > >> > > Oracle.DataAccess.Client.OracleException ORA-01008: not all
>>>>>> variables
>>>>>> > >> > > bound    at
>>>>>> > >> > >
>>>>>> Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32
>>>>>> > >> > > errCode, OracleConnection conn, IntPtr opsErrCtx,
>>>>>> OpoSqlValCtx*
>>>>>> > >> > > pOpoSqlValCtx, Object src, String procedure, Boolean bCheck)
>>>>>> > >> > >   at
>>>>>> Oracle.DataAccess.Client.OracleException.HandleError(Int32
>>>>>> > >> > > errCode, OracleConnection conn, String procedure, IntPtr
>>>>>> opsErrCtx,
>>>>>> > >> > > OpoSqlValCtx* pOpoSqlValCtx, Object src, Boolean bCheck)
>>>>>> > >> > >   at
>>>>>> Oracle.DataAccess.Client.OracleCommand.ExecuteReader(Boolean
>>>>>> > >> > > requery, Boolean fillRequest, CommandBehavior behavior)
>>>>>> > >> > >   at
>>>>>> >
>>>>>> > >>
>>>>>> Oracle.DataAccess.Client.OracleCommand.ExecuteDbDataReader(CommandBehavior
>>>>>> > >> > > behavior)
>>>>>> > >> > >   at
>>>>>> > >> > >
>>>>>> System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
>>>>>> > >> > >   at
>>>>>> NHibernate.AdoNet.AbstractBatcher.ExecuteReader(IDbCommand cmd)
>>>>>> > >> > > in
>>>>>> d:\dev\oss\nhibernate\src\NHibernate\AdoNet\AbstractBatcher.cs:line
>>>>>> > >> > > 242
>>>>>> > >> > >   at NHibernate.Loader.Loader.GetResultSet(IDbCommand st,
>>>>>> Boolean
>>>>>> > >> > > autoDiscoverTypes, Boolean callable, RowSelection selection,
>>>>>> > >> > > ISessionImplementor session) in
>>>>>> d:\dev\oss\nhibernate\src\NHibernate
>>>>>> > >> > > \Loader\Loader.cs:line 1325
>>>>>> > >> > >   at NHibernate.Loader.Loader.DoQuery(ISessionImplementor
>>>>>> session,
>>>>>> > >> > > QueryParameters queryParameters, Boolean returnProxies) in
>>>>>> d:\dev\oss
>>>>>> > >> > > \nhibernate\src\NHibernate\Loader\Loader.cs:line 401
>>>>>> > >> > >   at
>>>>>> >
>>>>>> > >>
>>>>>> NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImp­­lementor
>>>>>> > >> > > session, QueryParameters queryParameters, Boolean
>>>>>> returnProxies) in d:
>>>>>> > >> > > \dev\oss\nhibernate\src\NHibernate\Loader\Loader.cs:line 236
>>>>>> > >> > >   at NHibernate.Loader.Loader.DoList(ISessionImplementor
>>>>>> session,
>>>>>> > >> > > QueryParameters queryParameters) in d:\dev\oss\nhibernate\src
>>>>>> > >> > > \NHibernate\Loader\Loader.cs:line 1653
>>>>>> > >> > > 2010-07-05 10:54:20,134 [9] WARN
>>>>>>  NHibernate.Util.ADOExceptionReporter
>>>>>> > >> > > - Oracle.DataAccess.Client.OracleException ORA-01008: not all
>>>>>> > >> > > variables bound    at
>>>>>> > >> > >
>>>>>> Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32
>>>>>> > >> > > errCode, OracleConnection conn, IntPtr opsErrCtx,
>>>>>> OpoSqlValCtx*
>>>>>> > >> > > pOpoSqlValCtx, Object src, String procedure, Boolean bCheck)
>>>>>> >
>>>>>> > ...
>>>>>> >
>>>>>> > read more »- Hide quoted text -
>>>>>> >
>>>>>> > - Show quoted text -
>>>>>>
>>>>>> --
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "nhusers" group.
>>>>>> To post to this group, send email to <nhusers@googlegroups.com>
>>>>>> nhus...@googlegroups.com.
>>>>>> To unsubscribe from this group, send email to
>>>>>> <nhusers%2bunsubscr...@googlegroups.com>
>>>>>> nhusers+unsubscr...@googlegroups.com.
>>>>>> For more options, visit this group at
>>>>>> <http://groups.google.com/group/nhusers?hl=en>
>>>>>> http://groups.google.com/group/nhusers?hl=en.
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Fabio Maulo
>>>>>
>>>>>  --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "nhusers" group.
>>>>> To post to this group, send email to <nhusers@googlegroups.com>
>>>>> nhus...@googlegroups.com.
>>>>> To unsubscribe from this group, send email to
>>>>> <nhusers%2bunsubscr...@googlegroups.com>
>>>>> nhusers+unsubscr...@googlegroups.com.
>>>>> For more options, visit this group at
>>>>> <http://groups.google.com/group/nhusers?hl=en>
>>>>> http://groups.google.com/group/nhusers?hl=en.
>>>>>
>>>>
>>>>  --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "nhusers" group.
>>>> To post to this group, send email to nhus...@googlegroups.com.
>>>> To unsubscribe from this group, send email to
>>>> nhusers+unsubscr...@googlegroups.com.
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/nhusers?hl=en.
>>>>
>>>>  --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "nhusers" group.
>>>> To post to this group, send email to nhus...@googlegroups.com.
>>>> To unsubscribe from this group, send email to
>>>> nhusers+unsubscr...@googlegroups.com<nhusers%2bunsubscr...@googlegroups.com>
>>>> .
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/nhusers?hl=en.
>>>>
>>>
>>>  --
>>> You received this message because you are subscribed to the Google Groups
>>> "nhusers" group.
>>> To post to this group, send email to nhus...@googlegroups.com.
>>> To unsubscribe from this group, send email to
>>> nhusers+unsubscr...@googlegroups.com<nhusers%2bunsubscr...@googlegroups.com>
>>> .
>>> For more options, visit this group at
>>> http://groups.google.com/group/nhusers?hl=en.
>>>
>>
>>
>>
>> --
>> Fabio Maulo
>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "nhusers" group.
>> To post to this group, send email to nhus...@googlegroups.com.
>> To unsubscribe from this group, send email to
>> nhusers+unsubscr...@googlegroups.com<nhusers%2bunsubscr...@googlegroups.com>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/nhusers?hl=en.
>>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "nhusers" group.
> To post to this group, send email to nhus...@googlegroups.com.
> To unsubscribe from this group, send email to
> nhusers+unsubscr...@googlegroups.com<nhusers%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>



-- 
Fabio Maulo

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to nhus...@googlegroups.com.
To unsubscribe from this group, send email to 
nhusers+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to