The Sybase11Dialect error actually turned out to be that particular dialect creates outer joins that are no longer supported in SQL Anywhere 11.
The other Sybase 11 dialect I tried is from here http://iablog.sybase.com/paulley/2009/09/revised-sql-anywhere-nhibernate-dialect/. (SQLAnywhere11Dialect). This is the one that has the error with the SetMaxRowCounts. This may be the place I need to make changes but to me the changes are not obvious without getting a whole lot deeper than I have the inclination to do. I am just trying to use this stuff not write nhibernate and dialects. As long as my dialect returns true for BindLimitParametersFirst, SupportsLimitOffset and SupportsVariableLimit which it does then this code in loader.cs will wipe out my limit parameter since the BindParameterValues call does not use the colIndex that is passed in. if (useLimit && dialect.BindLimitParametersFirst) { colIndex += BindLimitParameters(command, colIndex, selection, session); } colIndex += BindParameterValues(command, queryParameters, colIndex, session); I suppose in the SQLAnywhere11Dialect I have to either change GetLimitString or the other settings to get the correct combination. I think at this point I will just leave my change in loader.cs in and worry about changing the dialect later. On Mar 29, 10:22 am, Fabio Maulo <[email protected]> wrote: > The place where change is the dialect and nothing more than the dialect. > > 2010/3/29 brianw <[email protected]> > > > > > > > I am using Nhibernate 2.1.2 with Sybase 11. Using Sybase11Dialect I > > get sql errors using SetMaxResults. The same code works fine with > > SybaseASA10Dialect. The Sybase11 dialect adds a parameter for the TOP > > value whereas the SybaseASA10Dialect updates the sql directly with > > Select TOP 500 starting at 1. The issues appears to be in > > PrepareQueryCommand in loader.cs. The count parameter is set correctly > > in BindLimitParameters but then it gets wiped out in the next call > > which is to BindParameterValues. BindParameterValues is getting the > > value of 1 for the next parameter to bind which is correct but the > > method itself calls queryParameters.BindParameters with a hardcoded > > zero instead of the passed in starting parameter. This causes the > > first parameter which is the count to get set to whatever the next > > parameter is supposed to be. > > > queryParameters.BindParameters(statement, GetNamedParameterLocs, 0, > > session); > > perhaps should be > > queryParameters.BindParameters(statement, GetNamedParameterLocs, > > startIndex, session); > > > I am reluctant to make this change in my nhibernate code as I really > > don't know the full impact of the change. > > > To unsubscribe from this group, send email to nhibernate-development+ > > unsubscribegooglegroups.com or reply to this email with the words "REMOVE > > ME" as the subject. > > -- > Fabio Maulo- Hide quoted text - > > - Show quoted text - To unsubscribe from this group, send email to nhibernate-development+unsubscribegooglegroups.com or reply to this email with the words "REMOVE ME" as the subject.
