windows-nt/Source/XPSP1/NT/inetsrv/query/bigtable/seqexec.hxx
2020-09-26 16:20:57 +08:00

83 lines
2 KiB
C++

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1995 - 1997.
//
// File: SeqExec.hxx
//
// Contents: Sequential Query execution class
//
// Classes: CQSeqExecute
//
// History: 22-Jan-95 DwightKr Created
//
//----------------------------------------------------------------------------
#pragma once
#include <tblalloc.hxx>
#include <gencur.hxx>
//+---------------------------------------------------------------------------
//
// Class: CQSeqExecute
//
// Purpose: Executes a single query
//
// Interface:
//
// History: 21-Jan-95 DwightKr Created.
//
// Notes: The CQSeqExecute class is responsible for fully processing
// a single sequential query.
//
//----------------------------------------------------------------------------
class CQSeqExecute
{
public:
CQSeqExecute( XQueryOptimizer & qopt );
SCODE GetRows( CTableColumnSet const & OutColumns,
unsigned & cRowsToSkip,
CGetRowsParams & GetParams );
DWORD Status()
{
return _status;
}
BOOL FetchDeferredValue( WORKID wid,
CFullPropSpec const & ps,
PROPVARIANT & var );
protected:
CQSeqExecute( CTimeLimit & TimeLim );
SCODE GetRowInfo( CTableColumnSet const & OutColumns,
CGetRowsParams & GetParams,
BYTE * pRowDataBuf );
BOOL CheckExecutionTime( void );
ULONG _status;
BOOL _fCursorOnNewObject;
// this is an array of LONGLONGs to force 8-byte alignment
LONGLONG _abValueBuf[ cbMaxNonDeferredValueSize / sizeof LONGLONG ];
XGenericCursor _objs;
BOOL _fAbort; // Set to true if query is to be aborted
CTimeLimit _TimeLimit; // Execution time limit
ULONG _cRowsToReturnMax; // Result set size limit
XQueryOptimizer _xOpt; // Query optimizer
};