static HB_ERRCODE sqlbaseChildSync( SQLBASEAREAP pArea, LPDBRELINFO pRelInfo ) { if( SELF_GOCOLD( ( AREAP ) pArea ) != HB_SUCCESS ) return HB_FAILURE; pArea->lpdbPendingRel = pRelInfo; if( pArea->lpdbRelations ) return SELF_SYNCCHILDREN( ( AREAP ) pArea ); return HB_SUCCESS; }
/* * Reposition cursor, regardless of filter. */ static HB_ERRCODE hb_delimSkipRaw( DELIMAREAP pArea, LONG lToSkip ) { HB_TRACE(HB_TR_DEBUG, ("hb_delimSkipRaw(%p,%ld)", pArea, lToSkip)); if( SELF_GOCOLD( ( AREAP ) pArea ) != HB_SUCCESS ) return HB_FAILURE; if( lToSkip != 1 ) return HB_FAILURE; else return hb_delimNextRecord( pArea ); }
/* * Reposition cursor, regardless of filter. */ static HB_ERRCODE hb_sdfSkipRaw( SDFAREAP pArea, HB_LONG lToSkip ) { HB_TRACE( HB_TR_DEBUG, ( "hb_sdfSkipRaw(%p,%ld)", pArea, lToSkip ) ); if( SELF_GOCOLD( &pArea->area ) != HB_SUCCESS ) return HB_FAILURE; if( lToSkip != 1 ) return HB_FAILURE; else return hb_sdfNextRecord( pArea ); }
/* * Reposition cursor, regardless of filter. */ static HB_ERRCODE hb_sdfSkipRaw( SDFAREAP pArea, HB_LONG lToSkip ) { HB_TRACE( HB_TR_DEBUG, ( "hb_sdfSkipRaw(%p,%ld)", pArea, lToSkip ) ); if( SELF_GOCOLD( &pArea->area ) != HB_SUCCESS ) return HB_FAILURE; if( lToSkip != 1 || ! pArea->fReadonly ) /* generate RTE */ return SUPER_SKIPRAW( &pArea->area, lToSkip ); else return hb_sdfNextRecord( pArea ); }
/* * Close the table in the WorkArea. */ static HB_ERRCODE hb_sdfClose( SDFAREAP pArea ) { HB_TRACE( HB_TR_DEBUG, ( "hb_sdfClose(%p)", pArea ) ); /* Update record and unlock records */ if( pArea->pFile ) { SELF_GOCOLD( &pArea->area ); if( ! pArea->fReadonly && hb_setGetEOF() ) { hb_fileWrite( pArea->pFile, "\032", 1, -1 ); pArea->fFlush = HB_TRUE; } SELF_FLUSH( &pArea->area ); hb_fileClose( pArea->pFile ); pArea->pFile = NULL; } SUPER_CLOSE( &pArea->area ); if( pArea->pFieldOffset ) { hb_xfree( pArea->pFieldOffset ); pArea->pFieldOffset = NULL; } if( pArea->pRecord ) { hb_xfree( pArea->pRecord - 1 ); pArea->pRecord = NULL; } if( pArea->pBuffer ) { hb_xfree( pArea->pBuffer ); pArea->pBuffer = NULL; } if( pArea->szEol ) { hb_xfree( pArea->szEol ); pArea->szEol = NULL; } if( pArea->szFileName ) { hb_xfree( pArea->szFileName ); pArea->szFileName = NULL; } return HB_SUCCESS; }
/* * Write data buffer to the data store. */ static HB_ERRCODE hb_sdfFlush( SDFAREAP pArea ) { HB_ERRCODE errCode; HB_TRACE( HB_TR_DEBUG, ( "hb_sdfFlush(%p)", pArea ) ); errCode = SELF_GOCOLD( &pArea->area ); if( pArea->fFlush && hb_setGetHardCommit() ) { hb_fileCommit( pArea->pFile ); pArea->fFlush = HB_FALSE; } return errCode; }
static HB_ERRCODE sqlbaseGoBottom( SQLBASEAREAP pArea ) { if( SELF_GOCOLD( ( AREAP ) pArea ) == HB_FAILURE ) return HB_FAILURE; if( ! pArea->fFetched && pArea->pSDD->GoTo( pArea, ( HB_ULONG ) -1 ) == HB_FAILURE ) return HB_FAILURE; pArea->area.fTop = HB_FALSE; pArea->area.fBottom = HB_TRUE; if( SELF_GOTO( ( AREAP ) pArea, pArea->ulRecCount ) != HB_SUCCESS ) return HB_FAILURE; return SELF_SKIPFILTER( ( AREAP ) pArea, -1 ); }
/* * Position cursor at the first record. */ static HB_ERRCODE hb_delimGoTop( DELIMAREAP pArea ) { HB_TRACE(HB_TR_DEBUG, ("hb_delimGoTop(%p)", pArea)); if( SELF_GOCOLD( ( AREAP ) pArea ) != HB_SUCCESS ) return HB_FAILURE; pArea->fTop = TRUE; pArea->fBottom = FALSE; pArea->ulRecordOffset = 0; pArea->ulRecNo = 1; if( hb_delimReadRecord( pArea ) != HB_SUCCESS ) return HB_FAILURE; return SELF_SKIPFILTER( ( AREAP ) pArea, 1 ); }
/* * Position cursor at the first record. */ static HB_ERRCODE hb_sdfGoTop( SDFAREAP pArea ) { HB_TRACE( HB_TR_DEBUG, ( "hb_sdfGoTop(%p)", pArea ) ); if( SELF_GOCOLD( &pArea->area ) != HB_SUCCESS ) return HB_FAILURE; pArea->area.fTop = HB_TRUE; pArea->area.fBottom = HB_FALSE; pArea->nRecordOffset = 0; pArea->ulRecNo = 1; if( hb_sdfReadRecord( pArea ) != HB_SUCCESS ) return HB_FAILURE; return SELF_SKIPFILTER( &pArea->area, 1 ); }
/* * Append a record to the WorkArea. */ static HB_ERRCODE hb_sdfAppend( SDFAREAP pArea, HB_BOOL fUnLockAll ) { HB_TRACE( HB_TR_DEBUG, ( "hb_sdfAppend(%p,%d)", pArea, ( int ) fUnLockAll ) ); HB_SYMBOL_UNUSED( fUnLockAll ); if( SELF_GOCOLD( &pArea->area ) != HB_SUCCESS ) return HB_FAILURE; if( SELF_GOHOT( &pArea->area ) != HB_SUCCESS ) return HB_FAILURE; pArea->ulRecNo = ++pArea->ulRecCount; pArea->area.fEof = HB_FALSE; pArea->fPositioned = HB_TRUE; hb_sdfClearRecordBuffer( pArea ); return HB_SUCCESS; }
/* * Write data buffer to the data store. */ static HB_ERRCODE hb_delimFlush( DELIMAREAP pArea ) { HB_ERRCODE uiError; HB_TRACE(HB_TR_DEBUG, ("hb_delimFlush(%p)", pArea)); uiError = SELF_GOCOLD( ( AREAP ) pArea ); if( pArea->fFlush ) { hb_fileWriteAt( pArea->pFile, ( BYTE * ) "\032", 1, pArea->ulFileSize ); if( hb_setGetHardCommit() ) { hb_fileCommit( pArea->pFile ); pArea->fFlush = FALSE; } } return uiError; }
/* * Append a record to the WorkArea. */ static HB_ERRCODE hb_delimAppend( DELIMAREAP pArea, BOOL fUnLockAll ) { HB_TRACE(HB_TR_DEBUG, ("hb_delimAppend(%p,%d)", pArea, (int) fUnLockAll)); HB_SYMBOL_UNUSED( fUnLockAll ); if( SELF_GOCOLD( ( AREAP ) pArea ) != HB_SUCCESS ) return HB_FAILURE; if( SELF_GOHOT( ( AREAP ) pArea ) != HB_SUCCESS ) return HB_FAILURE; pArea->ulRecordOffset = pArea->ulFileSize; pArea->ulRecNo = ++pArea->ulRecCount; pArea->fEof = FALSE; pArea->fPositioned = TRUE; hb_delimClearRecordBuffer( pArea ); return HB_SUCCESS; }
static HB_ERRCODE sqlbaseClose( SQLBASEAREAP pArea ) { if ( SELF_GOCOLD( ( AREAP ) pArea ) == HB_FAILURE ) return HB_FAILURE; if ( SUPER_CLOSE( ( AREAP ) pArea ) == HB_FAILURE ) return HB_FAILURE; if ( pArea->pSDD ) pArea->pSDD->Close( pArea ); if ( pArea->pRow ) { ULONG ulIndex; for ( ulIndex = 0; ulIndex <= pArea->ulRecCount; ulIndex++ ) { if ( pArea->pRowFlags[ ulIndex ] & SQLDD_FLAG_CACHED ) { hb_itemRelease( (PHB_ITEM) pArea->pRow[ ulIndex ] ); } } hb_xfree( pArea->pRow ); hb_xfree( pArea->pRowFlags ); pArea->pRow = NULL; pArea->pRowFlags = NULL; } if ( pArea->szQuery ) { hb_xfree( pArea->szQuery ); pArea->szQuery = NULL; } if( pArea->pConnection ) { /* It is possible to have areas without connection and SDD driver. Ex., arrayrdd. [Mindaugas] */ pArea->pConnection->uiAreaCount--; pArea->pConnection = NULL; } return HB_SUCCESS; }
/* * Write data buffer to the data store. */ static HB_ERRCODE hb_sdfFlush( SDFAREAP pArea ) { HB_ERRCODE errCode; HB_TRACE( HB_TR_DEBUG, ( "hb_sdfFlush(%p)", pArea ) ); errCode = SELF_GOCOLD( &pArea->area ); if( pArea->fFlush ) { if( hb_setGetEOF() ) hb_fileWriteAt( pArea->pFile, "\032", 1, pArea->nFileSize ); if( hb_setGetHardCommit() ) { hb_fileCommit( pArea->pFile ); pArea->fFlush = HB_FALSE; } } return errCode; }
static HB_ERRCODE sqlbaseGoTo( SQLBASEAREAP pArea, HB_ULONG ulRecNo ) { if( SELF_GOCOLD( ( AREAP ) pArea ) == HB_FAILURE ) return HB_FAILURE; if( pArea->pSDD->GoTo( pArea, ulRecNo ) == HB_FAILURE ) return HB_FAILURE; if( pArea->fPositioned ) { pArea->ulRecNo = ulRecNo; pArea->area.fBof = pArea->area.fEof = HB_FALSE; } else { pArea->ulRecNo = pArea->ulRecCount + 1; pArea->area.fBof = pArea->area.fEof = HB_TRUE; } pArea->area.fFound = HB_FALSE; return HB_SUCCESS; }
/* * Position cursor at the first record. */ static HB_ERRCODE hb_sdfGoTop( SDFAREAP pArea ) { HB_TRACE( HB_TR_DEBUG, ( "hb_sdfGoTop(%p)", pArea ) ); if( SELF_GOCOLD( &pArea->area ) != HB_SUCCESS ) return HB_FAILURE; pArea->area.fTop = HB_TRUE; pArea->area.fBottom = HB_FALSE; if( pArea->ulRecNo != 1 ) { if( pArea->ulRecNo != 0 || ! pArea->fReadonly ) /* generate RTE */ return SUPER_GOTOP( &pArea->area ); pArea->ulRecNo = 1; if( hb_sdfReadRecord( pArea ) != HB_SUCCESS ) return HB_FAILURE; } return SELF_SKIPFILTER( &pArea->area, 1 ); }