Fork the repo and then issue a pull request from github that references the JIRA issue.
Steve Bohlen [email protected] http://blog.unhandled-exceptions.com http://twitter.com/sbohlen On Mon, Jan 9, 2012 at 12:13 PM, Mike Charalambous < [email protected]> wrote: > I have created a bug report for this issue, ticket NH-3004, and a unit > test which does not require ADS to run. The unit test is in the same > form as those found in the NHSpecificTest folder in the > NHibernate.Test project. > > Please can you let me know how I should submit this test? > > I have also created a fix for the bug, please can you let me know the > best way to submit this fix? > > Thanks > Michael > > > On Jan 5, 11:32 am, "Richard Brown \(gmail\)" > <[email protected]> wrote: > > A failing test might be tricky without writing it specifically for ADS - > and > > since we don't have ADS on our TeamCity server, it might never get run > > anyway. > > > > Another option would be to override that method in the ADS driver: > > > > public MyAdsDriver : IDriver > > { > > ... > > void IDriver.RemoveUnusedCommandParameters(IDbCommand cmd, SqlString > > sqlString) > > { > > // do nothing > > } > > ... > > > > > > > > > > > > > > > > } > > -----Original Message----- > > From: Oskar Berggren > > Sent: Tuesday, January 03, 2012 4:52 PM > > To: [email protected] > > Subject: Re: [nhibernate-development] Re: Bug found in > > > > DriverBase.RemoveUnusedCommandParameters > > > > Yes, please create a bug report and a simple test case that can > > inserted in NHibernate's tests. > > > > /Oskar > > > > 2011/12/28 Mike Charalambous <[email protected]>: > > > Hi Julian > > > > > I have downloaded and built the latest trunk and have found the issue > > > is still there. > > > > > The issue is slightly different than bug 2893, which is talking about > > > when the assigned parameter names are ?. In this case the Advantage > > > DBMS the parameter name is :p0 in SQL and p0 in the parameter > > > collection. RemoveUnusedCommandParameters does not take into account > > > that the SQL and parameter collection names can differ. So any query > > > with a parameter, such as > > > > > Session.CreateQuery("from WebUser u where u.Inactive > > > = :inactive").SetParameter("inactive", false).List<WebUser>(); > > > > > fails with the exception > > > > > Advantage.Data.Provider.AdsException : Error 7200: AQE Error: State > > > = 07002; NativeError = 2141; [iAnywhere Solutions][Advantage SQL > > > Engine]Parameter missing AdsCommand query execution failed. > > > > > Would it be best if I created a bug report for this issue? > > > > > Regards > > > Michael > > > > > On Dec 28, 2:15 am, Julian Maughan <[email protected]> wrote: > > >> Thanks for raising this. I believe it is fixed in the upcoming > NHibernate > > >> release. Have a look at this bug report: > > > > >>https://nhibernate.jira.com/browse/NH-2893 > > > > >> If you can't wait for an official release, you can download > > >> (https://github.com/nhibernate/nhibernate-core) and compile the > source > > >> code. > > > > >> Regards > > >> Julian > > > > >> On 27 December 2011 03:34, Mike Charalambous > > >> <[email protected] > > > > >> > wrote: > > >> > Hi > > > > >> > I have recently written a NHibernate driver for the Sybase Advantage > > >> > Database Server (ADS), and have across a bug in the function > > >> > RemoveUnusedCommandParameters when running queries with parameters > in > > >> > them. This bug means that all parameters are removed by > > >> > RemoveUnusedCommandParameters instead of just the ones which are > > >> > unused. Please see the bottom of my post for the driver code. > > > > >> > The heart of the issue is that ADS requires a prefix to be used when > > >> > referring to parameters in SQL, but not when the parameter is in the > > >> > parameter collection. The RemoveUnusedCommandParameters function > does > > >> > not take into account that the parameter name can have a prefix in > the > > >> > SQL and not in the parameter collection and so removes all > parameters > > >> > from the command object. > > > > >> > I think the fix for this issue is straightforward and as far as I > can > > >> > tell will not cause any issues with existing drivers. The code: > > > > >> > .Select(p => p.ParameterName) > > > > >> > should be changed to: > > > > >> > .Select(p => FormatNameForSql(p.ParameterName)) > > > > >> > I have created a unit test for this issue but it requires binaries > for > > >> > the Advantage Database Server. Is this okay? > > > > >> > Thanks > > > > >> > Mike Charalambous > > > > >> > public class SybaseAdsClientDriver : > > >> > NHibernate.Driver.ReflectionBasedDriver > > >> > { > > >> > public SybaseAdsClientDriver() > > >> > : base("Advantage.Data.Provider", > > >> > "Advantage.Data.Provider.AdsConnection", > > >> > "Advantage.Data.Provider.AdsCommand") > > >> > { > > >> > } > > > > >> > public override bool UseNamedPrefixInSql > > >> > { get { return true; } } > > > > >> > public override bool UseNamedPrefixInParameter > > >> > { get { return false; } } > > > > >> > public override string NamedPrefix > > >> > { get { return ":"; } } > > >> > }
