Przemek, As always... many thanks, 'O Six driver database guru. I will keep an eye out for a druzus commit.
Keep up the great work! 2010/2/28 Przemysław Czerpak <dru...@acn.waw.pl> > On Fri, 26 Feb 2010, smu johnson wrote: > > Hi, > > > With a Roll-your-own index open, when you use a dbgoto(), the record > pointer > > is moved to the correct row in the table but the pointer in the index > file > > is not positioned to the corresponding row, even though the record is in > the > > index. With a regular cdx index, the index pointer is always positioned > > after a dbgoto(). > > No. It's positioned in the same way in both cases using sth like: > SEEK EVAL( <KEYEXP> ) + <RECNO> > It means that it will not work when you used in RYO index your own > values which are not results of <KEYEXP> evaluation because corresponding > entry cannot be found. > > > Perhaps the reason for not positioning the index pointer in an ryo index > is > > that an ryo index can contain multiple entries for a single table row, > and > > as such, positioning the index pointer would be ambiguous action (pick > one?) > > and could therefore cause unpredictable results. Am I correct in that > > thinking? > > No, see above. After DBGOTO() RDD uses seek to find corresponding record > to eliminate linear scan of all key stored in index from the index top > position to locate the entry which has corresponding record number. > Such linear scan is simply very expensive in big tables because it may > force reading whole index file to locate given entry. > > > In any event, the Harbour behaviour is different from the SIX SDX, which > is > > causing me problems. > > > > I have included a URL for a tiny .ZIP file for a simple source code > example, > > and 2 .txt files showing different behaviour on Clipper 5.2e / Harbour. > > Please read here: http://209.97.219.2/sjohnson/misc/sixcdx-incompat.zip > > Looks that SIX3 for template indexes enables such linear scan > automatically. > Harbour doesn't. You can force linear scan for index repositioning manually > by: > > sx_findRec( recNo() ) > > just after dbGoTo(). > I'll enable automatic linear repositioning for template SIXCDX tags ASAP. > > best regards, > Przemek > _______________________________________________ > Harbour mailing list (attachment size limit: 40KB) > Harbour@harbour-project.org > http://lists.harbour-project.org/mailman/listinfo/harbour > -- smu johnson <smujohn...@gmail.com>
_______________________________________________ Harbour mailing list (attachment size limit: 40KB) Harbour@harbour-project.org http://lists.harbour-project.org/mailman/listinfo/harbour