|
|
//***************************************************************************
//
// (c) 1999-2001 by Microsoft Corp. All Rights Reserved.
//
// wqltosql.h
//
// cvadai 19-Mar-99 Created as prototype for Quasar.
//
//***************************************************************************
#ifndef _WQLTOSQL_H_
#define _WQLTOSQL_H_
typedef __int64 SQL_ID;
struct C_wchar_LessCase { bool operator()(const wchar_t * _X, const wchar_t * _Y) const { return (_wcsicmp( _X,_Y ) < 0); } };
class CWmiDbHandle; class CSchemaCache;
// WQL - SQL converter
class CSQLBuilder { public: // Generic SQL
HRESULT FormatSQL (SQL_ID dScopeId, SQL_ID dScopeClassId, SQL_ID dSuperScope, IWbemQuery *pQuery, _bstr_t &sSQL, DWORD dwFlags, DWORD dwHandleType, SQL_ID *dClassId=0, BOOL *bHierarchyQuery=0, BOOL bTmpTblOK=TRUE, BOOL *bDelete=NULL, BOOL *bDefault=NULL); HRESULT FormatSQL (SQL_ID dScopeId, SQL_ID dScopeClassId, SQL_ID dSuperScope, SQL_ID dTargetObjID, LPWSTR pResultClass, LPWSTR pAssocClass, LPWSTR pRole, LPWSTR pResultRole, LPWSTR pRequiredQualifier, LPWSTR pRequiredAssocQualifier, DWORD dwQueryType, _bstr_t &sSQL, DWORD dwFlags, DWORD dwHandleType, SQL_ID *dAssocClass=0, SQL_ID *dResultClass=0, BOOL bIsClass=FALSE);
CSQLBuilder(CSchemaCache *pSchema) {m_pSchema = pSchema;}; ~CSQLBuilder(){}; private: HRESULT FormatWhereClause (SWQLNode_RelExpr *pNode, _bstr_t &sSQL, LPCWSTR lpJoinAlias, bool &bSysPropsUsed); HRESULT GetStorageTable(DWORD dwStorage, DWORD dwKey, _bstr_t &sTable); HRESULT GetPropertyID (SQL_ID dClassID, SWQLQualifiedName *pQN, LPCWSTR pColRef, DWORD &PropID, DWORD &Storage, DWORD &Flags); HRESULT FunctionalizeProperty (LPCWSTR lpAlias, DWORD dwType, LPWSTR lpFuncName, SWQLNode *pFunction, LPWSTR lpColName, _bstr_t &sProp); HRESULT FunctionalizeValue(SWQLTypedConst *pValue, DWORD dwType, LPWSTR lpFuncName, _bstr_t &sValue); HRESULT FormatSimpleSelect (LPCWSTR lpUseAlias, LPCWSTR lpColName,SWQLNode *pTop, _bstr_t &sSQL); HRESULT FormatPositionQuery (SWQLQualifiedNameField *pQNF, int iPos, LPCWSTR lpAlias, _bstr_t &sQuery); HRESULT GetClassFromNode (SWQLNode *pNode, BOOL *bDefaultStorage=NULL);
SQL_ID m_dClassID; DWORD m_dwTableCount; bool m_bClassSpecified; SQL_ID m_dNamespace; CSchemaCache *m_pSchema;
};
#endif
|